Upgrade to 3.2.1
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "getkirby/cms",
|
||||
"description": "The Kirby 3 core",
|
||||
"version": "3.2.0",
|
||||
"version": "3.2.1",
|
||||
"license": "proprietary",
|
||||
"keywords": ["kirby", "cms", "core"],
|
||||
"homepage": "https://getkirby.com",
|
||||
|
@@ -147,6 +147,7 @@ return [
|
||||
$snippets = A::wrap($name);
|
||||
|
||||
foreach ($snippets as $name) {
|
||||
$name = (string)$name;
|
||||
$file = $kirby->root('snippets') . '/' . $name . '.php';
|
||||
|
||||
if (file_exists($file) === false) {
|
||||
|
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Kirby\Exception\Exception;
|
||||
|
||||
return [
|
||||
'props' => [
|
||||
/**
|
||||
@@ -79,6 +81,49 @@ return [
|
||||
return '';
|
||||
},
|
||||
'validations' => [
|
||||
'date'
|
||||
'date',
|
||||
'minMax' => function ($value) {
|
||||
$min = $this->min ? strtotime($this->min) : null;
|
||||
$max = $this->max ? strtotime($this->max) : null;
|
||||
$value = strtotime($this->value());
|
||||
$format = 'd.m.Y';
|
||||
$errors = [];
|
||||
|
||||
if ($value && $min && $value < $min) {
|
||||
$errors['min'] = $min;
|
||||
}
|
||||
|
||||
if ($value && $max && $value > $max) {
|
||||
$errors['max'] = $max;
|
||||
}
|
||||
|
||||
if (empty($errors) === false) {
|
||||
if ($min && $max) {
|
||||
throw new Exception([
|
||||
'key' => 'validation.date.between',
|
||||
'data' => [
|
||||
'min' => date($format, $min),
|
||||
'max' => date($format, $max)
|
||||
]
|
||||
]);
|
||||
} elseif ($min) {
|
||||
throw new Exception([
|
||||
'key' => 'validation.date.after',
|
||||
'data' => [
|
||||
'date' => date($format, $min),
|
||||
]
|
||||
]);
|
||||
} else {
|
||||
throw new Exception([
|
||||
'key' => 'validation.date.before',
|
||||
'data' => [
|
||||
'date' => date($format, $max),
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
]
|
||||
];
|
||||
|
@@ -13,8 +13,8 @@ return [
|
||||
/**
|
||||
* Image settings for each item
|
||||
*/
|
||||
'image' => function (array $image = null) {
|
||||
return $image ?? [];
|
||||
'image' => function ($image = null) {
|
||||
return $image;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -55,7 +55,7 @@ return [
|
||||
/**
|
||||
* Main text for each item
|
||||
*/
|
||||
'text' => function (string $text = '{{ file.filename }}') {
|
||||
'text' => function (string $text = null) {
|
||||
return $text;
|
||||
},
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Kirby\Cms\Api;
|
||||
use Kirby\Cms\File;
|
||||
|
||||
return [
|
||||
'props' => [
|
||||
@@ -13,13 +14,26 @@ return [
|
||||
}
|
||||
|
||||
if (is_string($uploads) === true) {
|
||||
return ['template' => $uploads];
|
||||
$uploads = ['template' => $uploads];
|
||||
}
|
||||
|
||||
if (is_array($uploads) === false) {
|
||||
$uploads = [];
|
||||
}
|
||||
|
||||
$template = $uploads['template'] ?? null;
|
||||
|
||||
if ($template) {
|
||||
$file = new File([
|
||||
'filename' => 'tmp',
|
||||
'template' => $template
|
||||
]);
|
||||
|
||||
$uploads['accept'] = $file->blueprint()->accept()['mime'] ?? '*';
|
||||
} else {
|
||||
$uploads['accept'] = '*';
|
||||
}
|
||||
|
||||
return $uploads;
|
||||
},
|
||||
],
|
||||
|
@@ -22,20 +22,6 @@ return [
|
||||
return $this->toPages($default);
|
||||
},
|
||||
|
||||
/**
|
||||
* Image settings for each item
|
||||
*/
|
||||
'image' => function (array $image = null) {
|
||||
return $image ?? [];
|
||||
},
|
||||
|
||||
/**
|
||||
* Info text for each item
|
||||
*/
|
||||
'info' => function (string $info = null) {
|
||||
return $info;
|
||||
},
|
||||
|
||||
/**
|
||||
* Changes the layout of the selected files. Available layouts: `list`, `cards`
|
||||
*/
|
||||
@@ -57,13 +43,6 @@ return [
|
||||
return $size;
|
||||
},
|
||||
|
||||
/**
|
||||
* Main text for each item
|
||||
*/
|
||||
'text' => function (string $text = null) {
|
||||
return $text;
|
||||
},
|
||||
|
||||
'value' => function ($value = null) {
|
||||
return $this->toPages($value);
|
||||
},
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Моля въведете стойност, която съдържа \"{needle}\"",
|
||||
"error.validation.date": "Моля въведете валидна дата",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Моля откажете",
|
||||
"error.validation.different": "Стойността не трябва да е \"{other}\"",
|
||||
"error.validation.email": "Моля въведете валиден email адрес",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Si us plau, introduïu un valor que contingui \"{needle}\"",
|
||||
"error.validation.date": "Si us plau, introdueix una data vàlida",
|
||||
"error.validation.date.after": "Introdueix una data posterior {date}",
|
||||
"error.validation.date.before": "Introdueix una data anterior {date}",
|
||||
"error.validation.date.between": "Introdueix una data entre {min} i {max}",
|
||||
"error.validation.denied": "Si us plau, denegui",
|
||||
"error.validation.different": "El valor no ha de ser \"{other}\"",
|
||||
"error.validation.email": "Si us plau, introdueix una adreça de correu electrònic vàlida",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Zadejte prosím hodnotu, která obsahuje \"{needle}\"",
|
||||
"error.validation.date": "Zadejte prosím platné datum",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Prosím, odmítněte",
|
||||
"error.validation.different": "Hodnota nesmí být \"{other}\"",
|
||||
"error.validation.email": "Zadejte prosím platnou emailovou adresu",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Indtast venligst en værdi der indeholder \"{needle}\"",
|
||||
"error.validation.date": "Indtast venligst en gyldig dato",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Venligst afvis",
|
||||
"error.validation.different": "Værdien må ikke være \"{other}\"",
|
||||
"error.validation.email": "Indtast venligst en gyldig email adresse",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Bitte gib einen Wert ein, der \"{needle}\" enthält",
|
||||
"error.validation.date": "Bitte gib ein gültiges Datum ein",
|
||||
"error.validation.date.after": "Bitte gib ein Datum nach dem {date} ein",
|
||||
"error.validation.date.before": "Bitte gib ein Datum vor dem {date} ein",
|
||||
"error.validation.date.between": "Bitte gib ein Datum zwischen dem {min} und dem {max} ein",
|
||||
"error.validation.denied": "Bitte lehne die Eingabe ab",
|
||||
"error.validation.different": "Der Wert darf nicht \"{other}\" sein",
|
||||
"error.validation.email": "Bitte gib eine gültige E-Mailadresse an",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Παρακαλώ καταχωρίστε μια τιμή που περιέχει \"{needle}\"",
|
||||
"error.validation.date": "Παρακαλώ εισάγετε μία έγκυρη ημερομηνία",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Παρακαλώ αρνηθείτε",
|
||||
"error.validation.different": "Η τιμή δεν μπορεί να είναι \"{other}\"",
|
||||
"error.validation.email": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Please enter a value that contains \"{needle}\"",
|
||||
"error.validation.date": "Please enter a valid date",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Please deny",
|
||||
"error.validation.different": "The value must not be \"{other}\"",
|
||||
"error.validation.email": "Please enter a valid email address",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Por favor ingrese valores que contengan \"{needle}\"",
|
||||
"error.validation.date": "Por favor ingresa una fecha válida",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Por favor niegue",
|
||||
"error.validation.different": "EL valor no debe ser \"{other}\"",
|
||||
"error.validation.email": "Por favor ingresa un correo electrónico valido",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Por favor ingrese un valor que contenga \"{needle}\"",
|
||||
"error.validation.date": "Por favor introduzca una fecha valida",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Por favor, rechace",
|
||||
"error.validation.different": "El valor no debe ser \"{other}\"",
|
||||
"error.validation.email": "Por favor, introduce un correo electrónico válido",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"لطفا مقداری شامل «{needle}» وارد کنید",
|
||||
"error.validation.date": "لطفا تاریخ معتبری وارد کنید",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "لطفا رد کنید",
|
||||
"error.validation.different": "مقدار نباید مساوی «{other}» باشد",
|
||||
"error.validation.email": "لطفا ایمیل صحیحی وارد کنید",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Anna arvo joka sisältää \"{needle}\"",
|
||||
"error.validation.date": "Anna kelpaava päivämäärä",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Ole hyvä ja peruuta",
|
||||
"error.validation.different": "Arvo ei voi olla \"{other}\"",
|
||||
"error.validation.email": "Anna kelpaava sähköpostiosoite",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Veuillez saisir une valeur contenant « {needle} »",
|
||||
"error.validation.date": "Veuillez saisir une date valide",
|
||||
"error.validation.date.after": "Veuillez saisir une date après {date}",
|
||||
"error.validation.date.before": "Veuillez saisir une date avant {date}",
|
||||
"error.validation.date.between": "Veuillez saisir une date entre {min} et {max}",
|
||||
"error.validation.denied": "Veuillez refuser",
|
||||
"error.validation.different": "La valeur ne doit pas être « {other} »",
|
||||
"error.validation.email": "Veuillez saisir un courriel valide",
|
||||
|
@@ -24,13 +24,13 @@
|
||||
"delete": "T\u00f6rl\u00e9s",
|
||||
"dimensions": "Méretek",
|
||||
"discard": "Visszavon\u00e1s",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"download": "Letöltés",
|
||||
"duplicate": "Másolat",
|
||||
"edit": "Aloldal szerkeszt\u00e9se",
|
||||
|
||||
"dialog.files.empty": "No files to select",
|
||||
"dialog.pages.empty": "No pages to select",
|
||||
"dialog.users.empty": "No users to select",
|
||||
"dialog.files.empty": "Nincsenek fájlok kiválasztva",
|
||||
"dialog.pages.empty": "Nincsenek oldalak kiválasztva",
|
||||
"dialog.users.empty": "Nincsenek felhasználók kiválasztva",
|
||||
|
||||
"email": "Email",
|
||||
"email.placeholder": "mail@pelda.hu",
|
||||
@@ -71,13 +71,13 @@
|
||||
"error.form.incomplete": "Kérlek javítsd ki az összes hibát az űrlapon",
|
||||
"error.form.notSaved": "Az űrlap nem menthető",
|
||||
|
||||
"error.language.code": "Please enter a valid code for the language",
|
||||
"error.language.duplicate": "The language already exists",
|
||||
"error.language.name": "Please enter a valid name for the language",
|
||||
"error.language.code": "Kérlek, add meg a nyelv érvényes kódját",
|
||||
"error.language.duplicate": "A nyelv már létezik",
|
||||
"error.language.name": "Kérlek, add meg a nyelv érvényes nevét",
|
||||
|
||||
"error.license.format": "Please enter a valid license key",
|
||||
"error.license.format": "Kérlek, add meg az évényes lincensz kulcsot",
|
||||
"error.license.email": "Kérlek adj meg egy valós email-címet",
|
||||
"error.license.verification": "The license could not be verified",
|
||||
"error.license.verification": "A licensz nem ellenőrizhető",
|
||||
|
||||
"error.page.changeSlug.permission":
|
||||
"Nem változtathatod meg az URL-előtagot: \"{slug}\"",
|
||||
@@ -104,7 +104,7 @@
|
||||
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.duplicate.permission": "Nincs engedélyed a(z) \"{slug}\" másolat keszítéséhez",
|
||||
"error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3",
|
||||
"error.page.num.invalid":
|
||||
"Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
|
||||
@@ -119,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"Nem adhatsz hozzá egynél több fájlt a(z) \"{section}\" szekcióhoz",
|
||||
"error.section.files.min.plural":
|
||||
"The \"{section}\" section requires at least {min} files",
|
||||
"A \"{section}\" szakasz legalább {min} fájlt igényel",
|
||||
"error.section.files.min.singular":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"A \"{section}\" szakasz legalább egy fájlt igényel",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"Maximum {max} oldalt adhatsz hozzá a(z) \"{section}\" szekcióhoz",
|
||||
"error.section.pages.max.singular":
|
||||
"Nem adhatsz hozzá egynél több oldalt a(z) \"{section}\" szekcióhoz",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"A \"{section}\" szakasz legalább {min} oldalt igényel",
|
||||
"error.section.pages.min.singular":
|
||||
"The \"{section}\" section requires at least one page",
|
||||
"A \"{section}\" szakasz legalább egy oldalt igényel",
|
||||
|
||||
"error.section.notLoaded": "A(z) \"{name}\" szekció nem tölthető be",
|
||||
"error.section.type.invalid": "A szekció típusa (\"{type}\") nem megfelelő",
|
||||
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Kérlek olyan értéket adj meg, amely tartalmazza ezt: \"{needle}\"",
|
||||
"error.validation.date": "Kérlek megfelelő dátumot adj meg",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Kérlek vesd el",
|
||||
"error.validation.different": "Az érték nem lehet \"{other}\"",
|
||||
"error.validation.email": "Kérlek adj meg egy valós email-címet",
|
||||
@@ -233,7 +236,7 @@
|
||||
|
||||
"installation": "Telepítés",
|
||||
"installation.completed": "A panel sikeresen telepítve",
|
||||
"installation.disabled": "The panel installer is disabled on public servers by default. Please run the installer on a local machine or enable it with the <code>panel.install</code> option.",
|
||||
"installation.disabled": "A panel telepítője alapértelmezés szerint le van tiltva a nyilvános szervereken. Kérlek, futtassd a telepítőt egy helyi gépen vagy engedélyezze a <code>panel.install</code> opcióval.",
|
||||
"installation.issues.accounts":
|
||||
"A <code>/site/accounts</code> mappa nem létezik, vagy nem írható",
|
||||
"installation.issues.content":
|
||||
@@ -247,7 +250,7 @@
|
||||
"installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 7+</code>",
|
||||
"installation.issues.server":
|
||||
"A Kirby az alábbi szervereken futtatható: <code>Apache</code>, <code>Nginx</code> vagy <code>Caddy</code>",
|
||||
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
|
||||
"installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható",
|
||||
|
||||
"language": "Nyelv",
|
||||
"language.code": "Kód",
|
||||
@@ -285,12 +288,12 @@
|
||||
|
||||
"loading": "Betöltés",
|
||||
|
||||
"lock.unsaved": "Unsaved changes",
|
||||
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
|
||||
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
|
||||
"lock.unlock": "Unlock",
|
||||
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
|
||||
"lock.unsaved": "Nem mentett változások",
|
||||
"lock.isLocked": "Nem mentett <strong>{email}</strong> változások",
|
||||
"lock.file.isLocked": "A fájlt jelenleg {email} szerkeszti és nem módosítható.",
|
||||
"lock.page.isLocked": "Az oldalt jelenleg {email} szerkeszti és nem módosítható.",
|
||||
"lock.unlock": "Kinyit",
|
||||
"lock.isUnlocked": "A nem mentett módosításokat egy másik felhasználó felülírta. A módosításokat manuálisan egyesítheted.",
|
||||
|
||||
"login": "Bejelentkezés",
|
||||
"login.remember": "Maradjak bejelentkezve",
|
||||
@@ -319,8 +322,8 @@
|
||||
"more": "Több",
|
||||
"name": "Név",
|
||||
"next": "Következő",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"off": "ki",
|
||||
"on": "be",
|
||||
"open": "Megnyitás",
|
||||
"options": "Beállítások",
|
||||
|
||||
@@ -342,8 +345,8 @@
|
||||
"page.delete.confirm.title": "Megerősítéshez add meg az oldal címét",
|
||||
"page.draft.create": "Piszkozat létrehozása",
|
||||
"page.duplicate.appendix": "Másol",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.duplicate.files": "Fájlok másolása",
|
||||
"page.duplicate.pages": "Oldalak másolása",
|
||||
"page.status": "Állapot",
|
||||
"page.status.draft": "Piszkozat",
|
||||
"page.status.draft.description":
|
||||
@@ -369,13 +372,13 @@
|
||||
"revert": "Visszavon\u00e1s",
|
||||
|
||||
"role": "Szerepkör",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.description": "Az adminisztrátornak minden joga van",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Összes",
|
||||
"role.empty": "Nincsenek felhasználók ilyen szerepkörrel",
|
||||
"role.description.placeholder": "Nincs leírás",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
"role.nobody.description": "Ez a visszatérő szabály a nem rendelkező jogosultsághoz",
|
||||
"role.nobody.title": "Senki",
|
||||
|
||||
"save": "Ment\u00e9s",
|
||||
"search": "Keresés",
|
||||
@@ -397,8 +400,8 @@
|
||||
"toolbar.button.heading.3": "Cím 3",
|
||||
"toolbar.button.italic": "Dőlt szöveg",
|
||||
"toolbar.button.file": "Fájl",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Válassz egy fájlt",
|
||||
"toolbar.button.file.upload": "Fájl feltöltése",
|
||||
"toolbar.button.link": "Link",
|
||||
"toolbar.button.ol": "Rendezett lista",
|
||||
"toolbar.button.ul": "Rendezetlen lista",
|
||||
|
@@ -24,13 +24,13 @@
|
||||
"delete": "Hapus",
|
||||
"dimensions": "Dimensi",
|
||||
"discard": "Buang",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"download": "Unduh",
|
||||
"duplicate": "Duplikasi",
|
||||
"edit": "Sunting",
|
||||
|
||||
"dialog.files.empty": "No files to select",
|
||||
"dialog.pages.empty": "No pages to select",
|
||||
"dialog.users.empty": "No users to select",
|
||||
"dialog.files.empty": "Tidak ada berkas untuk dipilih",
|
||||
"dialog.pages.empty": "Tidak ada halaman untuk dipilih",
|
||||
"dialog.users.empty": "Tidak ada pengguna untuk dipilih",
|
||||
|
||||
"email": "Surel",
|
||||
"email.placeholder": "surel@contohsurel.com",
|
||||
@@ -71,13 +71,13 @@
|
||||
"error.form.incomplete": "Pastikan semua bidang telah diisi dengan benar…",
|
||||
"error.form.notSaved": "Formulir tidak dapat disimpan",
|
||||
|
||||
"error.language.code": "Please enter a valid code for the language",
|
||||
"error.language.duplicate": "The language already exists",
|
||||
"error.language.name": "Please enter a valid name for the language",
|
||||
"error.language.code": "Masukkan kode bahasa yang valid",
|
||||
"error.language.duplicate": "Bahasa sudah ada",
|
||||
"error.language.name": "Masukkan nama bahasa yang valid",
|
||||
|
||||
"error.license.format": "Please enter a valid license key",
|
||||
"error.license.format": "Masukkan kode lisensi yang valid",
|
||||
"error.license.email": "Masukkan surel yang valid",
|
||||
"error.license.verification": "The license could not be verified",
|
||||
"error.license.verification": "Lisensi tidak dapat diverifikasi",
|
||||
|
||||
"error.page.changeSlug.permission":
|
||||
"Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"",
|
||||
@@ -104,7 +104,7 @@
|
||||
"Draf halaman dengan akhiran URL \"{slug}\" sudah ada",
|
||||
"error.page.duplicate":
|
||||
"Halaman dengan akhiran URL \"{slug}\" sudah ada",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.duplicate.permission": "Anda tidak diizinkan menduplikasi \"{slug}\"",
|
||||
"error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan",
|
||||
"error.page.num.invalid":
|
||||
"Masukkan nomor urut yang valid. Nomor tidak boleh negatif.",
|
||||
@@ -119,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"Anda hanya boleh menambahkan satu berkas ke bagian \"{section}\"",
|
||||
"error.section.files.min.plural":
|
||||
"The \"{section}\" section requires at least {min} files",
|
||||
"Bagian \"{section}\" setidaknya memiliki {min} berkas",
|
||||
"error.section.files.min.singular":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"Bagian \"{section}\" setidaknya memiliki satu berkas",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"Anda hanya boleh menambahkan maksimal {max} halaman ke bagian \"{section}\"",
|
||||
"error.section.pages.max.singular":
|
||||
"Anda hanya boleh menambahkan satu halaman ke bagian \"{section}\"",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"Bagian \"{section}\" setidaknya memiliki {min} halaman",
|
||||
"error.section.pages.min.singular":
|
||||
"The \"{section}\" section requires at least one page",
|
||||
"Bagian \"{section}\" setidaknya memiliki satu halaman",
|
||||
|
||||
"error.section.notLoaded": "Bagian \"{name}\" tidak dapat dimuat",
|
||||
"error.section.type.invalid": "Tipe bagian \"{type}\" tidak valid",
|
||||
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Masukkan nilai yang mengandung \"{needle}\"",
|
||||
"error.validation.date": "Masukkan tanggal yang valid",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Mohon tolak",
|
||||
"error.validation.different": "Nilai harus selain \"{other}\"",
|
||||
"error.validation.email": "Masukkan surel yang valid",
|
||||
@@ -205,7 +208,7 @@
|
||||
"error.validation.notcontains":
|
||||
"Masukkan nilai yang tidak mengandung \"{needle}\"",
|
||||
"error.validation.notin":
|
||||
"Jangan masukkan satu pun: ({notIn})",
|
||||
"Jangan masukkan satupun: ({notIn})",
|
||||
"error.validation.option": "Pilih opsi yang valid",
|
||||
"error.validation.num": "Masukkan nomor yang valid",
|
||||
"error.validation.required": "Masukkan sesuatu",
|
||||
@@ -285,12 +288,12 @@
|
||||
|
||||
"loading": "Memuat",
|
||||
|
||||
"lock.unsaved": "Unsaved changes",
|
||||
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
|
||||
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
|
||||
"lock.unlock": "Unlock",
|
||||
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
|
||||
"lock.unsaved": "Perubahan belum tersimpan",
|
||||
"lock.isLocked": "Perubahan belum tersimpan oleh <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "Berkas sedang disunting oleh {email} dan tidak dapat diubah.",
|
||||
"lock.page.isLocked": "Halaman sedang disunting oleh {email} dan tidak dapat diubah.",
|
||||
"lock.unlock": "Buka kunci",
|
||||
"lock.isUnlocked": "Perubahan Anda yang belum tersimpan telah terubah oleh pengguna lain. Anda dapat mengunduh perubahan Anda untuk menggabungkannya manual.",
|
||||
|
||||
"login": "Masuk",
|
||||
"login.remember": "Biarkan tetap masuk",
|
||||
@@ -319,8 +322,8 @@
|
||||
"more": "Lebih lanjut",
|
||||
"name": "Nama",
|
||||
"next": "Selanjutnya",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"off": "mati",
|
||||
"on": "hidup",
|
||||
"open": "Buka",
|
||||
"options": "Opsi",
|
||||
|
||||
@@ -342,14 +345,14 @@
|
||||
"page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi",
|
||||
"page.draft.create": "Buat draf",
|
||||
"page.duplicate.appendix": "Salin",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.duplicate.files": "Salin berkas",
|
||||
"page.duplicate.pages": "Salin halaman",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Draf",
|
||||
"page.status.draft.description":
|
||||
"Halaman ada di mode draf dan hanya terlihat untuk penyunting",
|
||||
"Halaman hanya terlihat untuk penyunting",
|
||||
"page.status.listed": "Publik",
|
||||
"page.status.listed.description": "Halaman publik untuk siapa pun",
|
||||
"page.status.listed.description": "Halaman publik untuk siapapun",
|
||||
"page.status.unlisted": "Tidak tercantum",
|
||||
"page.status.unlisted.description": "Halaman hanya dapat diakses via URL",
|
||||
|
||||
@@ -369,13 +372,13 @@
|
||||
"revert": "Kembalikan",
|
||||
|
||||
"role": "Peran",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.description": "Admin memiliki semua izin",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Semua",
|
||||
"role.empty": "Tidak ada pengguna dengan peran ini",
|
||||
"role.description.placeholder": "Tidak ada deskripsi",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
"role.nobody.description": "Ini adalah peran cadangan tanpa permisi apapun",
|
||||
"role.nobody.title": "Tidak siapapun",
|
||||
|
||||
"save": "Simpan",
|
||||
"search": "Cari",
|
||||
@@ -397,8 +400,8 @@
|
||||
"toolbar.button.heading.3": "Penajukan 3",
|
||||
"toolbar.button.italic": "Miring",
|
||||
"toolbar.button.file": "Berkas",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Pilih berkas",
|
||||
"toolbar.button.file.upload": "Unggah berkas",
|
||||
"toolbar.button.link": "Tautan",
|
||||
"toolbar.button.ol": "Daftar berurut",
|
||||
"toolbar.button.ul": "Daftar tidak berurut",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Inserisci un valore che contiene \"{needle}\"",
|
||||
"error.validation.date": "Inserisci una data valida",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Per favore nega",
|
||||
"error.validation.different": "Il valore non dev'essere \"{other}\"",
|
||||
"error.validation.email": "Inserisci un indirizzo email valido",
|
||||
|
@@ -24,8 +24,8 @@
|
||||
"delete": "\uc0ad\uc81c",
|
||||
"dimensions": "크기",
|
||||
"discard": "무시",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"download": "다운로드",
|
||||
"duplicate": "복제",
|
||||
"edit": "\ud3b8\uc9d1",
|
||||
|
||||
"dialog.files.empty": "No files to select",
|
||||
@@ -73,11 +73,11 @@
|
||||
|
||||
"error.language.code": "Please enter a valid code for the language",
|
||||
"error.language.duplicate": "The language already exists",
|
||||
"error.language.name": "Please enter a valid name for the language",
|
||||
"error.language.name": "올바른 언어를 입력하세요.",
|
||||
|
||||
"error.license.format": "Please enter a valid license key",
|
||||
"error.license.format": "올바른 라이선스 키를 입력하세요.",
|
||||
"error.license.email": "올바른 이메일 주소를 입력하세요.",
|
||||
"error.license.verification": "The license could not be verified",
|
||||
"error.license.verification": "라이선스 키가 올바르지 않습니다.",
|
||||
|
||||
"error.page.changeSlug.permission":
|
||||
"고유 주소({slug})를 변경할 권한이 없습니다.",
|
||||
@@ -104,7 +104,7 @@
|
||||
"고유 주소({slug})가 같은 초안이 있습니다.",
|
||||
"error.page.duplicate":
|
||||
"고유 주소({slug})가 같은 페이지가 있습니다.",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.duplicate.permission": "페이지({slug})를 복제할 권한이 없습니다.",
|
||||
"error.page.notFound": "페이지({slug})가 없습니다.",
|
||||
"error.page.num.invalid":
|
||||
"올바른 정수를 입력하세요.",
|
||||
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"{needle}에 포함된 값을 입력하세요.",
|
||||
"error.validation.date": "올바른 날짜를 입력하세요.",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "취소하세요.",
|
||||
"error.validation.different": "{other}에 포함된 값은 입력할 수 없습니다.",
|
||||
"error.validation.email": "올바른 이메일 주소를 입력하세요.",
|
||||
@@ -285,11 +288,11 @@
|
||||
|
||||
"loading": "로딩 중",
|
||||
|
||||
"lock.unsaved": "Unsaved changes",
|
||||
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
|
||||
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
|
||||
"lock.unlock": "Unlock",
|
||||
"lock.unsaved": "수정 사항이 저장되지 않았습니다.",
|
||||
"lock.isLocked": "<strong>{email}</strong>의 수정 사항이 저장되지 않았습니다.",
|
||||
"lock.file.isLocked": "다른 사용자({email})가 수정 중입니다.",
|
||||
"lock.page.isLocked": "다른 사용자({email}가 수정 중입니다.",
|
||||
"lock.unlock": "잠금",
|
||||
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
|
||||
|
||||
"login": "\ub85c\uadf8\uc778",
|
||||
@@ -319,8 +322,8 @@
|
||||
"more": "더 보기",
|
||||
"name": "이름",
|
||||
"next": "다음",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"off": "끔",
|
||||
"on": "켬",
|
||||
"open": "열기",
|
||||
"options": "옵션",
|
||||
|
||||
@@ -342,8 +345,8 @@
|
||||
"page.delete.confirm.title": "페이지 제목을 입력하세요.",
|
||||
"page.draft.create": "초안 작성",
|
||||
"page.duplicate.appendix": "복사",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.duplicate.files": "파일 복사",
|
||||
"page.duplicate.pages": "페이지 복사",
|
||||
"page.status": "상태",
|
||||
"page.status.draft": "초안",
|
||||
"page.status.draft.description":
|
||||
@@ -370,7 +373,7 @@
|
||||
|
||||
"role": "역할",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.admin.title": "관리자",
|
||||
"role.all": "전체 보기",
|
||||
"role.empty": "이 역할에 해당하는 사용자가 없습니다.",
|
||||
"role.description.placeholder": "설명이 없습니다.",
|
||||
@@ -397,8 +400,8 @@
|
||||
"toolbar.button.heading.3": "제목 3",
|
||||
"toolbar.button.italic": "강조 2",
|
||||
"toolbar.button.file": "파일",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "파일 선택",
|
||||
"toolbar.button.file.upload": "파일 업로드",
|
||||
"toolbar.button.link": "링크",
|
||||
"toolbar.button.ol": "숫자 목록",
|
||||
"toolbar.button.ul": "기호 목록",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Vennligst skriv inn en verdi som inneholder \"{needle}\"",
|
||||
"error.validation.date": "Vennligst skriv inn en gyldig dato",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Vennligst avslå",
|
||||
"error.validation.different": "Verdien kan ikke være \"{other}\"",
|
||||
"error.validation.email": "Vennligst skriv inn en gyldig e-postadresse",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Vul een waarde in die \"{needle}\" bevat",
|
||||
"error.validation.date": "Vul een geldige datum in",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Weiger",
|
||||
"error.validation.different": "De invoer mag niet \"{other}\" zijn",
|
||||
"error.validation.email": "Gelieve een geldig emailadres in te voeren",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Wprowadź wartość, która zawiera \"{needle}\"",
|
||||
"error.validation.date": "Wprowadź poprawną datę",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Proszę odmówić",
|
||||
"error.validation.different": "Wartością nie może być \"{other}\"",
|
||||
"error.validation.email": "Wprowadź poprawny adres email",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Digite um valor que contenha \"{needle}\"",
|
||||
"error.validation.date": "Escolha uma data válida",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Por favor, cancele",
|
||||
"error.validation.different": "O valor deve ser diferente de \"{other}\"",
|
||||
"error.validation.email": "Digite um endereço de email válido",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Digite um valor que contenha \"{needle}\"",
|
||||
"error.validation.date": "Escolha uma data válida",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Por favor, cancele",
|
||||
"error.validation.different": "O valor deve ser diferente de \"{other}\"",
|
||||
"error.validation.email": "Digite um endereço de email válido",
|
||||
|
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Prosím, zadajte hodnotu, ktorá obsahuje \"{needle}\"",
|
||||
"error.validation.date": "Prosím, zadajte platný dátum",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Prosím, odmietnite",
|
||||
"error.validation.different": "Hodnota nemôže byť \"{other}\"",
|
||||
"error.validation.email": "Prosím, zadajte platnú e-mailovú adresu",
|
||||
|
@@ -24,13 +24,13 @@
|
||||
"delete": "Radera",
|
||||
"dimensions": "Dimensioner",
|
||||
"discard": "Kassera",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"download": "Ladda ner",
|
||||
"duplicate": "Duplicera",
|
||||
"edit": "Redigera",
|
||||
|
||||
"dialog.files.empty": "No files to select",
|
||||
"dialog.pages.empty": "No pages to select",
|
||||
"dialog.users.empty": "No users to select",
|
||||
"dialog.files.empty": "Inga filer att välja",
|
||||
"dialog.pages.empty": "Inga sidor att välja",
|
||||
"dialog.users.empty": "Inga användare att välja",
|
||||
|
||||
"email": "E-post",
|
||||
"email.placeholder": "namn@exampel.se",
|
||||
@@ -71,13 +71,13 @@
|
||||
"error.form.incomplete": "Vänligen åtgärda alla formulärfel...",
|
||||
"error.form.notSaved": "Formuläret kunde inte sparas",
|
||||
|
||||
"error.language.code": "Please enter a valid code for the language",
|
||||
"error.language.duplicate": "The language already exists",
|
||||
"error.language.name": "Please enter a valid name for the language",
|
||||
"error.language.code": "Ange en giltig kod för språket",
|
||||
"error.language.duplicate": "Språket finns redan",
|
||||
"error.language.name": "Ange ett giltigt namn för språket",
|
||||
|
||||
"error.license.format": "Please enter a valid license key",
|
||||
"error.license.format": "Ange en giltig licensnyckel",
|
||||
"error.license.email": "Ange en giltig e-postadress",
|
||||
"error.license.verification": "The license could not be verified",
|
||||
"error.license.verification": "Licensen kunde inte verifieras",
|
||||
|
||||
"error.page.changeSlug.permission":
|
||||
"Du har inte behörighet att ändra URL-appendixen för \"{slug}\"",
|
||||
@@ -104,7 +104,7 @@
|
||||
"Ett utkast med URL-appendixen \"{slug}\" existerar redan",
|
||||
"error.page.duplicate":
|
||||
"En sida med URL-appendixen \"{slug}\" existerar redan",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.duplicate.permission": "Du har inte behörighet att duplicera \"{slug}\"",
|
||||
"error.page.notFound": "Sidan \"{slug}\" kan inte hittas",
|
||||
"error.page.num.invalid":
|
||||
"Ange ett giltigt nummer för sortering. Numret får inte vara negativt.",
|
||||
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Ange ett värde som innehåller \"{needle}\"",
|
||||
"error.validation.date": "Ange ett giltigt datum",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.denied": "Vänligen neka",
|
||||
"error.validation.different": "Värdet får inte vara \"{other}\"",
|
||||
"error.validation.email": "Ange en giltig e-postadress",
|
||||
@@ -285,12 +288,12 @@
|
||||
|
||||
"loading": "Laddar",
|
||||
|
||||
"lock.unsaved": "Unsaved changes",
|
||||
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
|
||||
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
|
||||
"lock.unlock": "Unlock",
|
||||
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
|
||||
"lock.unsaved": "Osparade ändringar",
|
||||
"lock.isLocked": "Osparade ändringar av <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "Filen redigeras just nu av {email} och kan inte redigeras.",
|
||||
"lock.page.isLocked": "Sidan redigeras just nu av {email} och kan inte redigeras.",
|
||||
"lock.unlock": "Lås upp",
|
||||
"lock.isUnlocked": "Dina osparade ändringar har skrivits över av en annan användare. Du kan ladda ner dina ändringar för att slå ihop dem manuellt.",
|
||||
|
||||
"login": "Logga in",
|
||||
"login.remember": "Håll mig inloggad",
|
||||
@@ -319,8 +322,8 @@
|
||||
"more": "Mer",
|
||||
"name": "Namn",
|
||||
"next": "Nästa",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"off": "av",
|
||||
"on": "på",
|
||||
"open": "Öppna",
|
||||
"options": "Alternativ",
|
||||
|
||||
@@ -342,8 +345,8 @@
|
||||
"page.delete.confirm.title": "Fyll i sidans titel för att bekräfta",
|
||||
"page.draft.create": "Skapa utkast",
|
||||
"page.duplicate.appendix": "Kopiera",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.duplicate.files": "Kopiera filer",
|
||||
"page.duplicate.pages": "Kopiera sidor",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Utkast",
|
||||
"page.status.draft.description":
|
||||
@@ -369,13 +372,13 @@
|
||||
"revert": "Återgå",
|
||||
|
||||
"role": "Roll",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.admin.description": "Administratören har alla behörigheter",
|
||||
"role.admin.title": "Administratör",
|
||||
"role.all": "Alla",
|
||||
"role.empty": "Det finns inga användare med denna roll",
|
||||
"role.description.placeholder": "Ingen beskrivning",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
"role.nobody.description": "Detta är en roll utan några behörigheter",
|
||||
"role.nobody.title": "Ingen",
|
||||
|
||||
"save": "Spara",
|
||||
"search": "Sök",
|
||||
|
@@ -5,7 +5,7 @@
|
||||
"cancel": "\u0130ptal",
|
||||
"change": "De\u011fi\u015ftir",
|
||||
"close": "Kapat",
|
||||
"confirm": "Kaydet",
|
||||
"confirm": "Tamam",
|
||||
"copy": "Kopyala",
|
||||
"create": "Oluştur",
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"error.avatar.dimensions.invalid":
|
||||
"Lütfen profil resminin genişliğini ve yüksekliğini 3000 pikselin altında tutun",
|
||||
"error.avatar.mime.forbidden":
|
||||
"\u0130zin verilmeyen dosya tan\u0131mlay\u0131c\u0131s\u0131",
|
||||
"Profil resmi JPEG veya PNG dosyaları olmalıdır",
|
||||
|
||||
"error.blueprint.notFound": "\"{name}\" adlı plan yüklenemedi",
|
||||
|
||||
@@ -183,6 +183,9 @@
|
||||
"error.validation.contains":
|
||||
"Lütfen \"{needle}\" içeren bir değer girin",
|
||||
"error.validation.date": "Lütfen geçerli bir tarih girin",
|
||||
"error.validation.date.after": "Lütfen {date} tarihinden sonra bir tarih girin",
|
||||
"error.validation.date.before": "Lütfen {date} tarihinden önce bir tarih girin",
|
||||
"error.validation.date.between": "Lütfen {min} ve {max} arasında bir tarih girin",
|
||||
"error.validation.denied": "Lütfen reddedin",
|
||||
"error.validation.different": "Değer \"{other}\" olmamalıdır",
|
||||
"error.validation.email": "Lütfen geçerli bir e-posta adresi girin",
|
||||
|
2
kirby/panel/dist/css/app.css
vendored
2
kirby/panel/dist/css/app.css
vendored
File diff suppressed because one or more lines are too long
2
kirby/panel/dist/js/app.js
vendored
2
kirby/panel/dist/js/app.js
vendored
File diff suppressed because one or more lines are too long
@@ -81,7 +81,7 @@ class App
|
||||
public function __construct(array $props = [])
|
||||
{
|
||||
// the kirby folder directory
|
||||
static::$root = dirname(dirname(__DIR__));
|
||||
static::$root = dirname(__DIR__, 2);
|
||||
|
||||
// register all roots to be able to load stuff afterwards
|
||||
$this->bakeRoots($props['roots'] ?? []);
|
||||
|
@@ -873,7 +873,7 @@ class User extends ModelWithContent
|
||||
}
|
||||
|
||||
if (password_verify($password, $this->password()) !== true) {
|
||||
throw new InvalidArgumentException(['key' => 'user.password.invalid']);
|
||||
throw new InvalidArgumentException(['key' => 'user.password.notSame']);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@@ -25,6 +25,11 @@ class UserPermissions extends ModelPermissions
|
||||
|
||||
protected function canChangeRole(): bool
|
||||
{
|
||||
// users who are not admins cannot change their own role
|
||||
if ($this->user->is($this->model) === true && $this->user->isAdmin() === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->model->isLastAdmin() !== true;
|
||||
}
|
||||
|
||||
|
@@ -70,6 +70,13 @@ class UserRules
|
||||
|
||||
public static function changeRole(User $user, string $role): bool
|
||||
{
|
||||
if ($user->kirby()->user()->isAdmin() === false) {
|
||||
throw new PermissionException([
|
||||
'key' => 'user.changeRole.permission',
|
||||
'data' => ['name' => $user->username()]
|
||||
]);
|
||||
}
|
||||
|
||||
static::validRole($user, $role);
|
||||
|
||||
if ($role !== 'admin' && $user->isLastAdmin() === true) {
|
||||
@@ -95,6 +102,15 @@ class UserRules
|
||||
static::validEmail($user, $user->email(), true);
|
||||
static::validLanguage($user, $user->language());
|
||||
|
||||
// only admins are allowed to add admins
|
||||
$role = $props['role'] ?? null;
|
||||
|
||||
if ($role === 'admin' && $user->kirby()->user()->isAdmin() === false) {
|
||||
throw new PermissionException([
|
||||
'key' => 'user.create.permission'
|
||||
]);
|
||||
}
|
||||
|
||||
if (empty($props['password']) === false) {
|
||||
static::validPassword($user, $props['password']);
|
||||
}
|
||||
|
@@ -110,7 +110,7 @@ class Html
|
||||
}
|
||||
|
||||
if (is_array($value) === true) {
|
||||
if (isset($value['value']) && isset($value['escape'])) {
|
||||
if (isset($value['value'], $value['escape'])) {
|
||||
$value = $value['escape'] === true ? htmlspecialchars($value['value'], ENT_QUOTES, 'UTF-8') : $value['value'];
|
||||
} else {
|
||||
$value = implode(' ', array_filter($value, function ($value) {
|
||||
|
Reference in New Issue
Block a user