Upgrade to 4.3.0
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
"description": "The Kirby core",
|
"description": "The Kirby core",
|
||||||
"license": "proprietary",
|
"license": "proprietary",
|
||||||
"type": "kirby-cms",
|
"type": "kirby-cms",
|
||||||
"version": "4.2.0",
|
"version": "4.3.0",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"kirby",
|
"kirby",
|
||||||
"cms",
|
"cms",
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"ext-openssl": "*",
|
"ext-openssl": "*",
|
||||||
"christian-riesen/base32": "1.6.0",
|
"christian-riesen/base32": "1.6.0",
|
||||||
"claviska/simpleimage": "4.1.0",
|
"claviska/simpleimage": "4.2.0",
|
||||||
"composer/semver": "3.4.0",
|
"composer/semver": "3.4.0",
|
||||||
"filp/whoops": "2.15.4",
|
"filp/whoops": "2.15.4",
|
||||||
"getkirby/composer-installer": "^1.2.1",
|
"getkirby/composer-installer": "^1.2.1",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"phpmailer/phpmailer": "6.9.1",
|
"phpmailer/phpmailer": "6.9.1",
|
||||||
"symfony/polyfill-intl-idn": "1.29.0",
|
"symfony/polyfill-intl-idn": "1.29.0",
|
||||||
"symfony/polyfill-mbstring": "1.29.0",
|
"symfony/polyfill-mbstring": "1.29.0",
|
||||||
"symfony/yaml": "6.4.3"
|
"symfony/yaml": "6.4.8"
|
||||||
},
|
},
|
||||||
"replace": {
|
"replace": {
|
||||||
"symfony/polyfill-php72": "*"
|
"symfony/polyfill-php72": "*"
|
||||||
|
|||||||
40
kirby/composer.lock
generated
40
kirby/composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "43b28f916503f0f7a7fcfaf5ce174692",
|
"content-hash": "c551d482274b5418356af010c4845227",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "christian-riesen/base32",
|
"name": "christian-riesen/base32",
|
||||||
@@ -67,16 +67,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "claviska/simpleimage",
|
"name": "claviska/simpleimage",
|
||||||
"version": "4.1.0",
|
"version": "4.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/claviska/SimpleImage.git",
|
"url": "https://github.com/claviska/SimpleImage.git",
|
||||||
"reference": "1dcb9c785c44960890970d26e25c437a2a252bbf"
|
"reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/1dcb9c785c44960890970d26e25c437a2a252bbf",
|
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/dfbe53c01dae8467468ef2b817c09b786a7839d2",
|
||||||
"reference": "1dcb9c785c44960890970d26e25c437a2a252bbf",
|
"reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
"description": "A PHP class that makes working with images as simple as possible.",
|
"description": "A PHP class that makes working with images as simple as possible.",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/claviska/SimpleImage/issues",
|
"issues": "https://github.com/claviska/SimpleImage/issues",
|
||||||
"source": "https://github.com/claviska/SimpleImage/tree/4.1.0"
|
"source": "https://github.com/claviska/SimpleImage/tree/4.2.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-03-04T15:41:11+00:00"
|
"time": "2024-04-15T16:07:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
@@ -627,16 +627,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
"version": "v3.4.0",
|
"version": "v3.5.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
|
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
|
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
|
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -645,7 +645,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "3.4-dev"
|
"dev-main": "3.5-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/contracts",
|
"name": "symfony/contracts",
|
||||||
@@ -674,7 +674,7 @@
|
|||||||
"description": "A generic function and convention to trigger deprecation notices",
|
"description": "A generic function and convention to trigger deprecation notices",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
|
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -690,7 +690,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-05-23T14:45:45+00:00"
|
"time": "2024-04-18T09:32:20+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
@@ -1018,16 +1018,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/yaml",
|
"name": "symfony/yaml",
|
||||||
"version": "v6.4.3",
|
"version": "v6.4.8",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/yaml.git",
|
"url": "https://github.com/symfony/yaml.git",
|
||||||
"reference": "d75715985f0f94f978e3a8fa42533e10db921b90"
|
"reference": "52903de178d542850f6f341ba92995d3d63e60c9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90",
|
"url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9",
|
||||||
"reference": "d75715985f0f94f978e3a8fa42533e10db921b90",
|
"reference": "52903de178d542850f6f341ba92995d3d63e60c9",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1070,7 +1070,7 @@
|
|||||||
"description": "Loads and dumps YAML files",
|
"description": "Loads and dumps YAML files",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/yaml/tree/v6.4.3"
|
"source": "https://github.com/symfony/yaml/tree/v6.4.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1086,7 +1086,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-01-23T14:51:35+00:00"
|
"time": "2024-05-31T14:49:08+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [],
|
"packages-dev": [],
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ return [
|
|||||||
'text' => Escape::html($page->title()->value()),
|
'text' => Escape::html($page->title()->value()),
|
||||||
'link' => $page->panel()->url(true),
|
'link' => $page->panel()->url(true),
|
||||||
'info' => Escape::html($page->id()),
|
'info' => Escape::html($page->id()),
|
||||||
'uuid' => $page->uuid()->toString(),
|
'uuid' => $page->uuid()?->toString(),
|
||||||
]),
|
]),
|
||||||
'pagination' => $pages->pagination()->toArray()
|
'pagination' => $pages->pagination()->toArray()
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ return [
|
|||||||
'props' => [
|
'props' => [
|
||||||
'environment' => $environment,
|
'environment' => $environment,
|
||||||
'exceptions' => $kirby->option('debug') === true ? $exceptions : [],
|
'exceptions' => $kirby->option('debug') === true ? $exceptions : [],
|
||||||
|
'info' => $system->info(),
|
||||||
'plugins' => $plugins,
|
'plugins' => $plugins,
|
||||||
'security' => $security,
|
'security' => $security,
|
||||||
'urls' => [
|
'urls' => [
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ return function ($props) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (empty($sidebar) === true) {
|
if (empty($sidebar) === true) {
|
||||||
$props['fields'] = $props['fields'] ?? [];
|
$props['fields'] ??= [];
|
||||||
|
|
||||||
unset(
|
unset(
|
||||||
$props['files'],
|
$props['files'],
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ return function (array $props) {
|
|||||||
|
|
||||||
// inject the global templates definition
|
// inject the global templates definition
|
||||||
if (empty($templates) === false) {
|
if (empty($templates) === false) {
|
||||||
$props['templates'] = $props['templates'] ?? $templates;
|
$props['templates'] ??= $templates;
|
||||||
}
|
}
|
||||||
|
|
||||||
return array_replace_recursive($defaults, $props);
|
return array_replace_recursive($defaults, $props);
|
||||||
|
|||||||
@@ -232,11 +232,39 @@ return [
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($this->status, ['draft', 'all']) === false) {
|
if ($this->isFull() === true) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->isFull() === true) {
|
// form here on, we need to check with which status
|
||||||
|
// the pages are created and if the section can show
|
||||||
|
// these newly created pages
|
||||||
|
|
||||||
|
// if the section shows pages no matter what status they have,
|
||||||
|
// we can always show the add button
|
||||||
|
if ($this->status === 'all') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// collect all statuses of the blueprints
|
||||||
|
// that are allowed to be created
|
||||||
|
$statuses = [];
|
||||||
|
|
||||||
|
foreach ($this->blueprintNames() as $blueprint) {
|
||||||
|
try {
|
||||||
|
$props = Blueprint::load('pages/' . $blueprint);
|
||||||
|
$statuses[] = $props['create']['status'] ?? 'draft';
|
||||||
|
} catch (Throwable) {
|
||||||
|
$statuses[] = 'draft'; // @codeCoverageIgnore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$statuses = array_unique($statuses);
|
||||||
|
|
||||||
|
// if there are multiple statuses or if the section is showing
|
||||||
|
// a different status than new pages would be created with,
|
||||||
|
// we cannot show the add button
|
||||||
|
if (count($statuses) > 1 || $this->status !== $statuses[0]) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,22 +277,12 @@ return [
|
|||||||
'methods' => [
|
'methods' => [
|
||||||
'blueprints' => function () {
|
'blueprints' => function () {
|
||||||
$blueprints = [];
|
$blueprints = [];
|
||||||
$templates = empty($this->create) === false ? A::wrap($this->create) : $this->templates;
|
|
||||||
|
|
||||||
if (empty($templates) === true) {
|
|
||||||
$templates = $this->kirby()->blueprints();
|
|
||||||
}
|
|
||||||
|
|
||||||
// excludes ignored templates
|
|
||||||
if ($templatesIgnore = $this->templatesIgnore) {
|
|
||||||
$templates = array_diff($templates, $templatesIgnore);
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert every template to a usable option array
|
// convert every template to a usable option array
|
||||||
// for the template select box
|
// for the template select box
|
||||||
foreach ($templates as $template) {
|
foreach ($this->blueprintNames() as $blueprint) {
|
||||||
try {
|
try {
|
||||||
$props = Blueprint::load('pages/' . $template);
|
$props = Blueprint::load('pages/' . $blueprint);
|
||||||
|
|
||||||
$blueprints[] = [
|
$blueprints[] = [
|
||||||
'name' => basename($props['name']),
|
'name' => basename($props['name']),
|
||||||
@@ -272,14 +290,28 @@ return [
|
|||||||
];
|
];
|
||||||
} catch (Throwable) {
|
} catch (Throwable) {
|
||||||
$blueprints[] = [
|
$blueprints[] = [
|
||||||
'name' => basename($template),
|
'name' => basename($blueprint),
|
||||||
'title' => ucfirst($template),
|
'title' => ucfirst($blueprint),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $blueprints;
|
return $blueprints;
|
||||||
|
},
|
||||||
|
'blueprintNames' => function () {
|
||||||
|
$blueprints = empty($this->create) === false ? A::wrap($this->create) : $this->templates;
|
||||||
|
|
||||||
|
if (empty($blueprints) === true) {
|
||||||
|
$blueprints = $this->kirby()->blueprints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// excludes ignored templates
|
||||||
|
if ($templatesIgnore = $this->templatesIgnore) {
|
||||||
|
$blueprints = array_diff($blueprints, $templatesIgnore);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $blueprints;
|
||||||
|
},
|
||||||
],
|
],
|
||||||
'toArray' => function () {
|
'toArray' => function () {
|
||||||
return [
|
return [
|
||||||
|
|||||||
@@ -252,6 +252,7 @@ return [
|
|||||||
'caption',
|
'caption',
|
||||||
'controls',
|
'controls',
|
||||||
'class',
|
'class',
|
||||||
|
'disablepictureinpicture',
|
||||||
'height',
|
'height',
|
||||||
'loop',
|
'loop',
|
||||||
'muted',
|
'muted',
|
||||||
@@ -294,12 +295,15 @@ return [
|
|||||||
|
|
||||||
// don't use attributes that iframe doesn't support
|
// don't use attributes that iframe doesn't support
|
||||||
if ($isProviderVideo === false) {
|
if ($isProviderVideo === false) {
|
||||||
// converts tag attributes to supported formats (listed below) to output correct html
|
// convert tag attributes to supported formats (bool, string)
|
||||||
// booleans: autoplay, controls, loop, muted
|
// to output correct html attributes
|
||||||
// strings : poster, preload
|
//
|
||||||
// for ex : `autoplay` will not work if `false` is a `string` instead of a `boolean`
|
// for ex:
|
||||||
|
// `autoplay` will not work if `false` is a string
|
||||||
|
// instead of a boolean
|
||||||
$attrs['autoplay'] = $autoplay = Str::toType($tag->autoplay, 'bool');
|
$attrs['autoplay'] = $autoplay = Str::toType($tag->autoplay, 'bool');
|
||||||
$attrs['controls'] = Str::toType($tag->controls ?? true, 'bool');
|
$attrs['controls'] = Str::toType($tag->controls ?? true, 'bool');
|
||||||
|
$attrs['disablepictureinpicture'] = Str::toType($tag->disablepictureinpicture ?? false, 'bool');
|
||||||
$attrs['loop'] = Str::toType($tag->loop, 'bool');
|
$attrs['loop'] = Str::toType($tag->loop, 'bool');
|
||||||
$attrs['muted'] = Str::toType($tag->muted ?? $autoplay, 'bool');
|
$attrs['muted'] = Str::toType($tag->muted ?? $autoplay, 'bool');
|
||||||
$attrs['playsinline'] = Str::toType($tag->playsinline ?? $autoplay, 'bool');
|
$attrs['playsinline'] = Str::toType($tag->playsinline ?? $autoplay, 'bool');
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Изисква се разширението <code>MB String</code>",
|
"installation.issues.mbstring": "Изисква се разширението <code>MB String</code>",
|
||||||
"installation.issues.media": "Папката <code>/media</code> не съществува или няма права за запис",
|
"installation.issues.media": "Папката <code>/media</code> не съществува или няма права за запис",
|
||||||
"installation.issues.php": "Бъдете сигурни, че използвате <code>PHP 8+</code>",
|
"installation.issues.php": "Бъдете сигурни, че използвате <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby изисква <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
|
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
|
||||||
|
|
||||||
"language": "\u0415\u0437\u0438\u043a",
|
"language": "\u0415\u0437\u0438\u043a",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Es requereix l'extensió de <code>MB String</code>",
|
"installation.issues.mbstring": "Es requereix l'extensió de <code>MB String</code>",
|
||||||
"installation.issues.media": "La carpeta <code>/media</code> no existeix o no es pot escriure",
|
"installation.issues.media": "La carpeta <code>/media</code> no existeix o no es pot escriure",
|
||||||
"installation.issues.php": "Assegureu-vos d'utilitzar <code>PHP 8+</code>",
|
"installation.issues.php": "Assegureu-vos d'utilitzar <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby requereix <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existeix o no es pot escriure",
|
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existeix o no es pot escriure",
|
||||||
|
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Estat",
|
"status": "Estat",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Je vyžadováno rozšíření<code>MB String</code>",
|
"installation.issues.mbstring": "Je vyžadováno rozšíření<code>MB String</code>",
|
||||||
"installation.issues.media": "Složka<code>/media</code> neexistuje, nebo nemá povolený zápis",
|
"installation.issues.media": "Složka<code>/media</code> neexistuje, nebo nemá povolený zápis",
|
||||||
"installation.issues.php": "Ujistěte se, že používáte<code>PHP 8+</code>",
|
"installation.issues.php": "Ujistěte se, že používáte<code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby vyžaduje<code>Apache</code>, <code>Nginx</code> nebo<code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Složka<code>/site/sessions</code> neexistuje, nebo nemá povolený zápis",
|
"installation.issues.sessions": "Složka<code>/site/sessions</code> neexistuje, nebo nemá povolený zápis",
|
||||||
|
|
||||||
"language": "Jazyk",
|
"language": "Jazyk",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Žádná hlášení",
|
"stats.empty": "Žádná hlášení",
|
||||||
"status": "Stav",
|
"status": "Stav",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Složka content je zřejmě přístupná zvenčí",
|
"system.issues.content": "Složka content je zřejmě přístupná zvenčí",
|
||||||
"system.issues.eol.kirby": "Instalovaná verze Kirby dosáhla konce životnosti a nebude již dále dostávat bezpečnostní aktualizace",
|
"system.issues.eol.kirby": "Instalovaná verze Kirby dosáhla konce životnosti a nebude již dále dostávat bezpečnostní aktualizace",
|
||||||
"system.issues.eol.plugin": "Instalovaná verze doplňku { plugin } dosáhla konce životnosti a nebude již dále dostávat bezpečnostní aktualizace",
|
"system.issues.eol.plugin": "Instalovaná verze doplňku { plugin } dosáhla konce životnosti a nebude již dále dostávat bezpečnostní aktualizace",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "<code>MB String</code> extension er påkrævet",
|
"installation.issues.mbstring": "<code>MB String</code> extension er påkrævet",
|
||||||
"installation.issues.media": "<code>/media</code> mappen eksisterer ikke eller er ikke skrivbar",
|
"installation.issues.media": "<code>/media</code> mappen eksisterer ikke eller er ikke skrivbar",
|
||||||
"installation.issues.php": "Sikre dig at der benyttes <code>PHP 8+</code>",
|
"installation.issues.php": "Sikre dig at der benyttes <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby kræver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar",
|
"installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar",
|
||||||
|
|
||||||
"language": "Sprog",
|
"language": "Sprog",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Die <code>MB String</code> Erweiterung wird benötigt",
|
"installation.issues.mbstring": "Die <code>MB String</code> Erweiterung wird benötigt",
|
||||||
"installation.issues.media": "Der <code>/media</code> Ordner ist nicht beschreibbar",
|
"installation.issues.media": "Der <code>/media</code> Ordner ist nicht beschreibbar",
|
||||||
"installation.issues.php": "Bitte verwende <code>PHP 8+</code>",
|
"installation.issues.php": "Bitte verwende <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby benötigt <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "<code>/site/sessions</code> ist nicht beschreibbar",
|
"installation.issues.sessions": "<code>/site/sessions</code> ist nicht beschreibbar",
|
||||||
|
|
||||||
"language": "Sprache",
|
"language": "Sprache",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Keine Daten",
|
"stats.empty": "Keine Daten",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Info kopieren",
|
||||||
|
"system.info.copied": "System Info wurde kopiert",
|
||||||
"system.issues.content": "Der content Ordner scheint öffentlich zugänglich zu sein",
|
"system.issues.content": "Der content Ordner scheint öffentlich zugänglich zu sein",
|
||||||
"system.issues.eol.kirby": "Deine Kirby Installation ist veraltet und erhält keine weiteren Sicherheitsupdates",
|
"system.issues.eol.kirby": "Deine Kirby Installation ist veraltet und erhält keine weiteren Sicherheitsupdates",
|
||||||
"system.issues.eol.plugin": "Deine Version des { plugin } Plugins ist veraltet und erhält keine weiteren Sicherheitsupdates",
|
"system.issues.eol.plugin": "Deine Version des { plugin } Plugins ist veraltet und erhält keine weiteren Sicherheitsupdates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Απαιτείται η επέκταση <code>MB String</code> ",
|
"installation.issues.mbstring": "Απαιτείται η επέκταση <code>MB String</code> ",
|
||||||
"installation.issues.media": "Ο φάκελος <code>/media</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
|
"installation.issues.media": "Ο φάκελος <code>/media</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
|
||||||
"installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε <code>PHP 8+</code>",
|
"installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "To Kirby απαιτεί <code>Apache</code>, <code>Nginx</code> ή <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Ο φάκελος <code>/site/sessions</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
|
"installation.issues.sessions": "Ο φάκελος <code>/site/sessions</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
|
||||||
|
|
||||||
"language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1",
|
"language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Kατάσταση",
|
"status": "Kατάσταση",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "The <code>MB String</code> extension is required",
|
"installation.issues.mbstring": "The <code>MB String</code> extension is required",
|
||||||
"installation.issues.media": "The <code>/media</code> folder does not exist or is not writable",
|
"installation.issues.media": "The <code>/media</code> folder does not exist or is not writable",
|
||||||
"installation.issues.php": "Make sure to use <code>PHP 8+</code>",
|
"installation.issues.php": "Make sure to use <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby requires <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
|
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
|
||||||
|
|
||||||
"language": "Language",
|
"language": "Language",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "La kromprogramo <code>MB String</code> estas deviga",
|
"installation.issues.mbstring": "La kromprogramo <code>MB String</code> estas deviga",
|
||||||
"installation.issues.media": "La dosierujo <code>/media</code> ne ekzistas, aũ ne estas skribebla",
|
"installation.issues.media": "La dosierujo <code>/media</code> ne ekzistas, aũ ne estas skribebla",
|
||||||
"installation.issues.php": "Nepre uzu <code>PHP 8+</code>",
|
"installation.issues.php": "Nepre uzu <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby bezonas <code>Apache</code>, <code>Nginx</code> aŭ <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "La dosierujo <code>/site/sessions</code> ne ekzistas, aŭ ne estas skribebla",
|
"installation.issues.sessions": "La dosierujo <code>/site/sessions</code> ne ekzistas, aŭ ne estas skribebla",
|
||||||
|
|
||||||
"language": "Lingvo",
|
"language": "Lingvo",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Stato",
|
"status": "Stato",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Se requiere la extensión <code>MB String</code>.",
|
"installation.issues.mbstring": "Se requiere la extensión <code>MB String</code>.",
|
||||||
"installation.issues.media": "La carpeta <code>/media</code> no existe o no posee permisos de escritura.",
|
"installation.issues.media": "La carpeta <code>/media</code> no existe o no posee permisos de escritura.",
|
||||||
"installation.issues.php": "Asegurese de estar usando <code>PHP 8+</code>",
|
"installation.issues.php": "Asegurese de estar usando <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code>, <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no posee permisos de escritura.",
|
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no posee permisos de escritura.",
|
||||||
|
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Sin informes",
|
"stats.empty": "Sin informes",
|
||||||
"status": "Estado",
|
"status": "Estado",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "La carpeta content parece estar expuesta",
|
"system.issues.content": "La carpeta content parece estar expuesta",
|
||||||
"system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
"system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
||||||
"system.issues.eol.plugin": "Tu versión instalada del plugin { plugin } ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
"system.issues.eol.plugin": "Tu versión instalada del plugin { plugin } ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "La extension <code>MB String</code> es requerida",
|
"installation.issues.mbstring": "La extension <code>MB String</code> es requerida",
|
||||||
"installation.issues.media": "La carpeta <code>/media</code> no existe o no se puede escribir",
|
"installation.issues.media": "La carpeta <code>/media</code> no existe o no se puede escribir",
|
||||||
"installation.issues.php": "Asegurese de estar usando <code>PHP 8+</code>",
|
"installation.issues.php": "Asegurese de estar usando <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no se puede escribir",
|
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no se puede escribir",
|
||||||
|
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Sin informes",
|
"stats.empty": "Sin informes",
|
||||||
"status": "Estado",
|
"status": "Estado",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "La carpeta content parece estar expuesta",
|
"system.issues.content": "La carpeta content parece estar expuesta",
|
||||||
"system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
"system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
||||||
"system.issues.eol.plugin": "La versión del plugin { plugin } que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
"system.issues.eol.plugin": "La versión del plugin { plugin } que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "افزونه <code>MB String</code> مورد نیاز است",
|
"installation.issues.mbstring": "افزونه <code>MB String</code> مورد نیاز است",
|
||||||
"installation.issues.media": "پوشه <code>/media</code> موجود نیست یا قابل نوشتن نیست",
|
"installation.issues.media": "پوشه <code>/media</code> موجود نیست یا قابل نوشتن نیست",
|
||||||
"installation.issues.php": "لطفا از پیاچپی 8 یا بالاتر استفاده کنید",
|
"installation.issues.php": "لطفا از پیاچپی 8 یا بالاتر استفاده کنید",
|
||||||
"installation.issues.server": "کربی نیاز به <code>Apache</code>، <code>Nginx</code> یا <code>Caddy</code> دارد",
|
|
||||||
"installation.issues.sessions": "پوشه <code>/site/sessions</code> وجود ندارد یا قابل نوشتن نیست",
|
"installation.issues.sessions": "پوشه <code>/site/sessions</code> وجود ندارد یا قابل نوشتن نیست",
|
||||||
|
|
||||||
"language": "\u0632\u0628\u0627\u0646",
|
"language": "\u0632\u0628\u0627\u0646",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "وضعیت",
|
"status": "وضعیت",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "<code>MB String</code>-laajennos on pakollinen",
|
"installation.issues.mbstring": "<code>MB String</code>-laajennos on pakollinen",
|
||||||
"installation.issues.media": "<code>/media</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
|
"installation.issues.media": "<code>/media</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
|
||||||
"installation.issues.php": "Varmista että <code>PHP 8+</code> on käytössä",
|
"installation.issues.php": "Varmista että <code>PHP 8+</code> on käytössä",
|
||||||
"installation.issues.server": "Kirby tarvitsee jonkun seuraavista: <code>Apache</code>, <code>Nginx</code> tai <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "<code>/site/sessions</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
|
"installation.issues.sessions": "<code>/site/sessions</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
|
||||||
|
|
||||||
"language": "Kieli",
|
"language": "Kieli",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Ei raportteja",
|
"stats.empty": "Ei raportteja",
|
||||||
"status": "Tila",
|
"status": "Tila",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Content-kansio näyttäisi olevan julkinen",
|
"system.issues.content": "Content-kansio näyttäisi olevan julkinen",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "L’extension <code>MB String</code> est requise",
|
"installation.issues.mbstring": "L’extension <code>MB String</code> est requise",
|
||||||
"installation.issues.media": "Le dossier <code>/media</code> n’existe pas ou n’est pas accessible en écriture",
|
"installation.issues.media": "Le dossier <code>/media</code> n’existe pas ou n’est pas accessible en écriture",
|
||||||
"installation.issues.php": "Veuillez utiliser <code>PHP 8+</code>",
|
"installation.issues.php": "Veuillez utiliser <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby requiert <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Le dossier <code>/site/sessions</code> n’existe pas ou n’est pas accessible en écriture",
|
"installation.issues.sessions": "Le dossier <code>/site/sessions</code> n’existe pas ou n’est pas accessible en écriture",
|
||||||
|
|
||||||
"language": "Langue",
|
"language": "Langue",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Aucun rapport",
|
"stats.empty": "Aucun rapport",
|
||||||
"status": "Statut",
|
"status": "Statut",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Le dossier content semble exposé",
|
"system.issues.content": "Le dossier content semble exposé",
|
||||||
"system.issues.eol.kirby": "La version de Kirby installée a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité",
|
"system.issues.eol.kirby": "La version de Kirby installée a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité",
|
||||||
"system.issues.eol.plugin": "La version du plugin { plugin } installée a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité",
|
"system.issues.eol.plugin": "La version du plugin { plugin } installée a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Az <code>MB String</code> bővítmény engedélyezése szükséges",
|
"installation.issues.mbstring": "Az <code>MB String</code> bővítmény engedélyezése szükséges",
|
||||||
"installation.issues.media": "A <code>/media</code> mappa nem létezik vagy nem írható",
|
"installation.issues.media": "A <code>/media</code> mappa nem létezik vagy nem írható",
|
||||||
"installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 8+</code>",
|
"installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "A Kirby az alábbi szervereken futtatható: <code>Apache</code>, <code>Nginx</code> vagy <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható",
|
"installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható",
|
||||||
|
|
||||||
"language": "Nyelv",
|
"language": "Nyelv",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Állapot",
|
"status": "Állapot",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Ekstensi <code>MB String</code> diperlukan",
|
"installation.issues.mbstring": "Ekstensi <code>MB String</code> diperlukan",
|
||||||
"installation.issues.media": "Folder <code>/media</code> tidak ada atau tidak dapat ditulis",
|
"installation.issues.media": "Folder <code>/media</code> tidak ada atau tidak dapat ditulis",
|
||||||
"installation.issues.php": "Pastikan Anda menggunakan <code>PHP 8+</code>",
|
"installation.issues.php": "Pastikan Anda menggunakan <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby memerlukan <code>Apache</code>, <code>Nginx</code>, atau <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Folder <code>/site/sessions</code> tidak ada atau tidak dapat ditulis",
|
"installation.issues.sessions": "Folder <code>/site/sessions</code> tidak ada atau tidak dapat ditulis",
|
||||||
|
|
||||||
"language": "Bahasa",
|
"language": "Bahasa",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Tidak ada laporan",
|
"stats.empty": "Tidak ada laporan",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Folder konten nampaknya terekspos",
|
"system.issues.content": "Folder konten nampaknya terekspos",
|
||||||
"system.issues.eol.kirby": "Versi instalasi Kirby Anda sudah mencapai akhir dan tidak akan lagi mendapat pembaruan keamanan",
|
"system.issues.eol.kirby": "Versi instalasi Kirby Anda sudah mencapai akhir dan tidak akan lagi mendapat pembaruan keamanan",
|
||||||
"system.issues.eol.plugin": "Versi instalasi plugin { plugin } Anda sudah mencapai akhir dan tidak akan lagi mendapatkan pembaruan keamanan",
|
"system.issues.eol.plugin": "Versi instalasi plugin { plugin } Anda sudah mencapai akhir dan tidak akan lagi mendapatkan pembaruan keamanan",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "<code>MB String</code> er hér bráðnauðsynleg",
|
"installation.issues.mbstring": "<code>MB String</code> er hér bráðnauðsynleg",
|
||||||
"installation.issues.media": "<code>/media</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
|
"installation.issues.media": "<code>/media</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
|
||||||
"installation.issues.php": "Notaðu <code>PHP 8+</code>",
|
"installation.issues.php": "Notaðu <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby krefst <code>Apache</code>, <code>Nginx</code> eða <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "<code>/site/sessions</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
|
"installation.issues.sessions": "<code>/site/sessions</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
|
||||||
|
|
||||||
"language": "Tungumál",
|
"language": "Tungumál",
|
||||||
@@ -556,14 +555,14 @@
|
|||||||
"page.status.draft.description": "Þessi síða er uppkast og er aðeins sýnileg vefstjórum eða gegnum laumu tengil.",
|
"page.status.draft.description": "Þessi síða er uppkast og er aðeins sýnileg vefstjórum eða gegnum laumu tengil.",
|
||||||
"page.status.listed": "Útgefin og listuð",
|
"page.status.listed": "Útgefin og listuð",
|
||||||
"page.status.listed.description": "Síðan er útgefin og listuð.",
|
"page.status.listed.description": "Síðan er útgefin og listuð.",
|
||||||
"page.status.unlisted": "Útgefin",
|
"page.status.unlisted": "Útgefin en ólistuð",
|
||||||
"page.status.unlisted.description": "Síðan er útgefin en þó ólistuð.",
|
"page.status.unlisted.description": "Síðan er útgefin en þó ólistuð.",
|
||||||
|
|
||||||
"pages": "Síður",
|
"pages": "Síður",
|
||||||
"pages.empty": "Engar síður enn",
|
"pages.empty": "Engar síður enn",
|
||||||
"pages.status.draft": "Uppköst",
|
"pages.status.draft": "Uppköst",
|
||||||
"pages.status.listed": "Útgefnar og listaðar",
|
"pages.status.listed": "Útgefnar og listaðar",
|
||||||
"pages.status.unlisted": "Útgefnar",
|
"pages.status.unlisted": "Útgefnar en ólistaðar",
|
||||||
|
|
||||||
"pagination.page": "Síða",
|
"pagination.page": "Síða",
|
||||||
|
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Engar skýrslur",
|
"stats.empty": "Engar skýrslur",
|
||||||
"status": "Staða",
|
"status": "Staða",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Efnismappan virðist vera berskjölduð",
|
"system.issues.content": "Efnismappan virðist vera berskjölduð",
|
||||||
"system.issues.eol.kirby": "Uppsett Kirby eintak þitt hefur runnið sitt skeið á enda og mun ekki verða uppfært framar",
|
"system.issues.eol.kirby": "Uppsett Kirby eintak þitt hefur runnið sitt skeið á enda og mun ekki verða uppfært framar",
|
||||||
"system.issues.eol.plugin": "Uppsett eintak þitt af viðbótinni { plugin } hefur runnið sitt skeið á enda og mun ekki verða uppfærð framar",
|
"system.issues.eol.plugin": "Uppsett eintak þitt af viðbótinni { plugin } hefur runnið sitt skeið á enda og mun ekki verða uppfærð framar",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "È necessaria l'estensione <code>MB String</code>",
|
"installation.issues.mbstring": "È necessaria l'estensione <code>MB String</code>",
|
||||||
"installation.issues.media": "La cartella <code>/media</code> non esiste o non dispone dei permessi di scrittura",
|
"installation.issues.media": "La cartella <code>/media</code> non esiste o non dispone dei permessi di scrittura",
|
||||||
"installation.issues.php": "Assicurati di utilizzare <code>PHP 8+</code>",
|
"installation.issues.php": "Assicurati di utilizzare <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby necessita di <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "La cartella <code>/site/sessions</code>non esiste o non dispone dei permessi di scrittura",
|
"installation.issues.sessions": "La cartella <code>/site/sessions</code>non esiste o non dispone dei permessi di scrittura",
|
||||||
|
|
||||||
"language": "Lingua",
|
"language": "Lingua",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Nessuna segnalazione",
|
"stats.empty": "Nessuna segnalazione",
|
||||||
"status": "Stato",
|
"status": "Stato",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "La cartella content sembra essere esposta",
|
"system.issues.content": "La cartella content sembra essere esposta",
|
||||||
"system.issues.eol.kirby": "La versione di Kirby installata è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza ",
|
"system.issues.eol.kirby": "La versione di Kirby installata è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza ",
|
||||||
"system.issues.eol.plugin": "La versione installata del plugin { plugin } è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza",
|
"system.issues.eol.plugin": "La versione installata del plugin { plugin } è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza",
|
||||||
|
|||||||
@@ -317,16 +317,16 @@
|
|||||||
"field.blocks.quote.citation.placeholder": "출처",
|
"field.blocks.quote.citation.placeholder": "출처",
|
||||||
"field.blocks.text.name": "텍스트",
|
"field.blocks.text.name": "텍스트",
|
||||||
"field.blocks.text.placeholder": "텍스트",
|
"field.blocks.text.placeholder": "텍스트",
|
||||||
"field.blocks.video.autoplay": "Autoplay",
|
"field.blocks.video.autoplay": "자동 재생",
|
||||||
"field.blocks.video.caption": "캡션",
|
"field.blocks.video.caption": "캡션",
|
||||||
"field.blocks.video.controls": "Controls",
|
"field.blocks.video.controls": "제어 도구",
|
||||||
"field.blocks.video.location": "위치",
|
"field.blocks.video.location": "위치",
|
||||||
"field.blocks.video.loop": "Loop",
|
"field.blocks.video.loop": "반복",
|
||||||
"field.blocks.video.muted": "Muted",
|
"field.blocks.video.muted": "음소거",
|
||||||
"field.blocks.video.name": "영상",
|
"field.blocks.video.name": "영상",
|
||||||
"field.blocks.video.placeholder": "영상 URL 입력",
|
"field.blocks.video.placeholder": "영상 URL 입력",
|
||||||
"field.blocks.video.poster": "Poster",
|
"field.blocks.video.poster": "대표 이미지",
|
||||||
"field.blocks.video.preload": "Preload",
|
"field.blocks.video.preload": "미리 로드",
|
||||||
"field.blocks.video.url.label": "영상 URL",
|
"field.blocks.video.url.label": "영상 URL",
|
||||||
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
||||||
|
|
||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "<code>MB String</code> 확장 모듈이 필요합니다.",
|
"installation.issues.mbstring": "<code>MB String</code> 확장 모듈이 필요합니다.",
|
||||||
"installation.issues.media": "<code>/media</code> 폴더의 쓰기 권한을 확인하세요.",
|
"installation.issues.media": "<code>/media</code> 폴더의 쓰기 권한을 확인하세요.",
|
||||||
"installation.issues.php": "<code>PHP</code> 버전이 8 이상인지 확인하세요.",
|
"installation.issues.php": "<code>PHP</code> 버전이 8 이상인지 확인하세요.",
|
||||||
"installation.issues.server": "Kirby를 실행하려면 <code>Apache</code>, <code>Nginx</code>, 또는 <code>Caddy</code>가 필요합니다.",
|
|
||||||
"installation.issues.sessions": "<code>/site/sessions</code> 폴더의 쓰기 권한을 확인하세요.",
|
"installation.issues.sessions": "<code>/site/sessions</code> 폴더의 쓰기 권한을 확인하세요.",
|
||||||
|
|
||||||
"language": "\uc5b8\uc5b4",
|
"language": "\uc5b8\uc5b4",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "관련 기록이 없습니다.",
|
"stats.empty": "관련 기록이 없습니다.",
|
||||||
"status": "상태",
|
"status": "상태",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "<code>/content</code> 폴더의 권한을 확인하세요.",
|
"system.issues.content": "<code>/content</code> 폴더의 권한을 확인하세요.",
|
||||||
"system.issues.eol.kirby": "설치된 Kirby 버전이 만료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
|
"system.issues.eol.kirby": "설치된 Kirby 버전이 만료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
|
||||||
"system.issues.eol.plugin": "설치된 플러그인({plugin}의 지원이 종료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
|
"system.issues.eol.plugin": "설치된 플러그인({plugin}의 지원이 종료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Plėtinys <code>MB String</code> yra privalomas",
|
"installation.issues.mbstring": "Plėtinys <code>MB String</code> yra privalomas",
|
||||||
"installation.issues.media": "Katalogas <code>/media</code> neegzistuoja arba neturi įrašymo teisių",
|
"installation.issues.media": "Katalogas <code>/media</code> neegzistuoja arba neturi įrašymo teisių",
|
||||||
"installation.issues.php": "Įsitikinkite, kad naudojama <code>PHP 8+</code>",
|
"installation.issues.php": "Įsitikinkite, kad naudojama <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby reikalauja <code>Apache</code>, <code>Nginx</code> arba <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Katalogas <code>/site/sessions</code> neegzistuoja arba neturi įrašymo teisių",
|
"installation.issues.sessions": "Katalogas <code>/site/sessions</code> neegzistuoja arba neturi įrašymo teisių",
|
||||||
|
|
||||||
"language": "Kalba",
|
"language": "Kalba",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Nėra pranešimų",
|
"stats.empty": "Nėra pranešimų",
|
||||||
"status": "Statusas",
|
"status": "Statusas",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Utvidelsen <code>MB String</code> er nødvendig",
|
"installation.issues.mbstring": "Utvidelsen <code>MB String</code> er nødvendig",
|
||||||
"installation.issues.media": "Mappen <code>/media</code> eksisterer ikke eller er ikke skrivbar",
|
"installation.issues.media": "Mappen <code>/media</code> eksisterer ikke eller er ikke skrivbar",
|
||||||
"installation.issues.php": "Pass på at du bruker <code>PHP 8+</code>",
|
"installation.issues.php": "Pass på at du bruker <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby krever <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Mappen <code>/site/sessions</code> eksisterer ikke eller er ikke skrivbar",
|
"installation.issues.sessions": "Mappen <code>/site/sessions</code> eksisterer ikke eller er ikke skrivbar",
|
||||||
|
|
||||||
"language": "Spr\u00e5k",
|
"language": "Spr\u00e5k",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Ingen rapporter",
|
"stats.empty": "Ingen rapporter",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "content-mappen ser ut til å være eksponert",
|
"system.issues.content": "content-mappen ser ut til å være eksponert",
|
||||||
"system.issues.eol.kirby": "Din installerte Kirby versjon har nådd sitt end-of-life, og vil ikke lenger motta sikkerhetsoppdateringer",
|
"system.issues.eol.kirby": "Din installerte Kirby versjon har nådd sitt end-of-life, og vil ikke lenger motta sikkerhetsoppdateringer",
|
||||||
"system.issues.eol.plugin": "Din installerte plugin { plugin } har nådd sitt end-of-life og vil ikke lenger motta sikkerhetsoppdateringer",
|
"system.issues.eol.plugin": "Din installerte plugin { plugin } har nådd sitt end-of-life og vil ikke lenger motta sikkerhetsoppdateringer",
|
||||||
|
|||||||
@@ -114,7 +114,7 @@
|
|||||||
"error.file.minheight": "De hoogte van de afbeelding moet minimaal {height} pixels zijn",
|
"error.file.minheight": "De hoogte van de afbeelding moet minimaal {height} pixels zijn",
|
||||||
"error.file.minsize": "Het bestand is te klein",
|
"error.file.minsize": "Het bestand is te klein",
|
||||||
"error.file.minwidth": "De breedte van de afbeelding moet minimaal {width} pixels zijn",
|
"error.file.minwidth": "De breedte van de afbeelding moet minimaal {width} pixels zijn",
|
||||||
"error.file.name.unique": "The filename must be unique",
|
"error.file.name.unique": "De bestandsnaam moet uniek zijn",
|
||||||
"error.file.name.missing": "De bestandsnaam mag niet leeg zijn",
|
"error.file.name.missing": "De bestandsnaam mag niet leeg zijn",
|
||||||
"error.file.notFound": "Het bestand kan niet worden gevonden",
|
"error.file.notFound": "Het bestand kan niet worden gevonden",
|
||||||
"error.file.orientation": "De oriëntatie van de afbeelding moet \"{orientation}\" zijn",
|
"error.file.orientation": "De oriëntatie van de afbeelding moet \"{orientation}\" zijn",
|
||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "De <code>MB String</code> extensie is verplicht",
|
"installation.issues.mbstring": "De <code>MB String</code> extensie is verplicht",
|
||||||
"installation.issues.media": "De map <code>/media</code>bestaat niet of heeft geen schrijfrechten",
|
"installation.issues.media": "De map <code>/media</code>bestaat niet of heeft geen schrijfrechten",
|
||||||
"installation.issues.php": "Gebruik <code>PHP8+</code>",
|
"installation.issues.php": "Gebruik <code>PHP8+</code>",
|
||||||
"installation.issues.server": "Kirby vereist <code>Apache</code>, <code>Nginx</code> of <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "De map <code>/site/sessions</code> bestaat niet of heeft geen schrijfrechten",
|
"installation.issues.sessions": "De map <code>/site/sessions</code> bestaat niet of heeft geen schrijfrechten",
|
||||||
|
|
||||||
"language": "Taal",
|
"language": "Taal",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Geen rapporten",
|
"stats.empty": "Geen rapporten",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "De content map lijkt zichtbaar te zijn",
|
"system.issues.content": "De content map lijkt zichtbaar te zijn",
|
||||||
"system.issues.eol.kirby": "De geïnstalleerde Kirby versie is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.",
|
"system.issues.eol.kirby": "De geïnstalleerde Kirby versie is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.",
|
||||||
"system.issues.eol.plugin": "De geïnstalleerde versie van plugin { plugin } is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.",
|
"system.issues.eol.plugin": "De geïnstalleerde versie van plugin { plugin } is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Wymagane jest rozszerzenie <code>MB String</code>",
|
"installation.issues.mbstring": "Wymagane jest rozszerzenie <code>MB String</code>",
|
||||||
"installation.issues.media": "Folder <code>/media</code> nie istnieje lub nie ma uprawnień do zapisu",
|
"installation.issues.media": "Folder <code>/media</code> nie istnieje lub nie ma uprawnień do zapisu",
|
||||||
"installation.issues.php": "Upewnij się, że używasz <code>PHP 8+</code>",
|
"installation.issues.php": "Upewnij się, że używasz <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby wymaga <code>Apache</code>, <code>Nginx</code> lub <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Folder <code>/site/sessions</code> nie istnieje lub nie ma uprawnień do zapisu",
|
"installation.issues.sessions": "Folder <code>/site/sessions</code> nie istnieje lub nie ma uprawnień do zapisu",
|
||||||
|
|
||||||
"language": "J\u0119zyk",
|
"language": "J\u0119zyk",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Brak raportów",
|
"stats.empty": "Brak raportów",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Zdaje się, że folder „content” jest wystawiony na publiczny dostęp",
|
"system.issues.content": "Zdaje się, że folder „content” jest wystawiony na publiczny dostęp",
|
||||||
"system.issues.eol.kirby": "Twoja zainstalowana wersja Kirby osiągnęła koniec okresu wsparcia i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń",
|
"system.issues.eol.kirby": "Twoja zainstalowana wersja Kirby osiągnęła koniec okresu wsparcia i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń",
|
||||||
"system.issues.eol.plugin": "Twoja zainstalowana wersja wtyczki { plugin } osiągnęła koniec okresu wsparcia i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń",
|
"system.issues.eol.plugin": "Twoja zainstalowana wersja wtyczki { plugin } osiągnęła koniec okresu wsparcia i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
|
"installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
|
||||||
"installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita",
|
"installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita",
|
||||||
"installation.issues.php": "Certifique-se que você está usando o <code>PHP 8+</code>",
|
"installation.issues.php": "Certifique-se que você está usando o <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita",
|
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita",
|
||||||
|
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Nenhum relatório",
|
"stats.empty": "Nenhum relatório",
|
||||||
"status": "Estado",
|
"status": "Estado",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "A pasta \"content\" parece não estar protegida",
|
"system.issues.content": "A pasta \"content\" parece não estar protegida",
|
||||||
"system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
"system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
||||||
"system.issues.eol.plugin": "A versão instalada do plugin {plugin} chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
"system.issues.eol.plugin": "A versão instalada do plugin {plugin} chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
|
"installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
|
||||||
"installation.issues.media": "A pasta <code>/media</code> não existe ou não tem permissão de escrita",
|
"installation.issues.media": "A pasta <code>/media</code> não existe ou não tem permissão de escrita",
|
||||||
"installation.issues.php": "Certifique-se que está a usar o <code>PHP 8+</code>",
|
"installation.issues.php": "Certifique-se que está a usar o <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "O Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não tem permissão de escrita",
|
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não tem permissão de escrita",
|
||||||
|
|
||||||
"language": "Idioma",
|
"language": "Idioma",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Sem relatórios",
|
"stats.empty": "Sem relatórios",
|
||||||
"status": "Estado",
|
"status": "Estado",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "A pasta content parece não estar protegida",
|
"system.issues.content": "A pasta content parece não estar protegida",
|
||||||
"system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
"system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
||||||
"system.issues.eol.plugin": "A versão instalada do plugin { plugin } chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
"system.issues.eol.plugin": "A versão instalada do plugin { plugin } chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"account.delete": "Șterge-ți contul",
|
"account.delete": "Șterge-ți contul",
|
||||||
"account.delete.confirm": "Chiar vrei să îți ștergi contul? Vei fi deconectat imediat. Contul nu poate fi recuperat.",
|
"account.delete.confirm": "Chiar vrei să îți ștergi contul? Vei fi deconectat imediat. Contul nu poate fi recuperat.",
|
||||||
|
|
||||||
"activate": "Activați",
|
"activate": "Activează",
|
||||||
"add": "Adaug\u0103",
|
"add": "Adaug\u0103",
|
||||||
"alpha": "Alfa",
|
"alpha": "Alfa",
|
||||||
"author": "Autor",
|
"author": "Autor",
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"coordinates": "Coordonate",
|
"coordinates": "Coordonate",
|
||||||
"copy": "Copiază",
|
"copy": "Copiază",
|
||||||
"copy.all": "Copiază toate",
|
"copy.all": "Copiază toate",
|
||||||
"copy.success": "copiat {count}!",
|
"copy.success": "Copiat {count}!",
|
||||||
"create": "Creează",
|
"create": "Creează",
|
||||||
"custom": "Personalizat",
|
"custom": "Personalizat",
|
||||||
|
|
||||||
@@ -63,17 +63,17 @@
|
|||||||
"email": "E-mail",
|
"email": "E-mail",
|
||||||
"email.placeholder": "email@exemplu.com",
|
"email.placeholder": "email@exemplu.com",
|
||||||
|
|
||||||
"enter": "Enter",
|
"enter": "Introdu",
|
||||||
"entries": "Întregistrări",
|
"entries": "Întregistrări",
|
||||||
"entry": "Înregistrare",
|
"entry": "Înregistrare",
|
||||||
|
|
||||||
"environment": "Mediu",
|
"environment": "Mediu",
|
||||||
|
|
||||||
"error": "Eroare",
|
"error": "Eroare",
|
||||||
"error.access.code": "Cod invalid",
|
"error.access.code": "Cod nevalid",
|
||||||
"error.access.login": "Conectare invalidă",
|
"error.access.login": "Conectare nevalidă",
|
||||||
"error.access.panel": "Nu aveți voie să accesați panoul",
|
"error.access.panel": "Nu ai voie să accesezi panoul",
|
||||||
"error.access.view": "Nu vi se permite să accesați această parte a panoului",
|
"error.access.view": "Nu ai voie să accesezi această parte a panoului",
|
||||||
|
|
||||||
"error.avatar.create.fail": "Imaginea de profil nu a putut fi încărcată",
|
"error.avatar.create.fail": "Imaginea de profil nu a putut fi încărcată",
|
||||||
"error.avatar.delete.fail": "Imaginea de profil nu a putut fi ștearsă",
|
"error.avatar.delete.fail": "Imaginea de profil nu a putut fi ștearsă",
|
||||||
@@ -88,11 +88,11 @@
|
|||||||
"error.blocks.min.singular": "Trebuie să adaugi cel puțin un bloc",
|
"error.blocks.min.singular": "Trebuie să adaugi cel puțin un bloc",
|
||||||
"error.blocks.validation": "Există o eroare la câmpul \"{field}\" în blocul {index} care folosește tipul de bloc \"{fieldset}\"",
|
"error.blocks.validation": "Există o eroare la câmpul \"{field}\" în blocul {index} care folosește tipul de bloc \"{fieldset}\"",
|
||||||
|
|
||||||
"error.cache.type.invalid": "Tipul de cache \"{type}\" este invalid",
|
"error.cache.type.invalid": "Tipul de cache \"{type}\" este nevalid",
|
||||||
|
|
||||||
"error.email.preset.notFound": "Preset-ul de e-mail \"{name}\" nu a fost găsit",
|
"error.email.preset.notFound": "Preset-ul de e-mail \"{name}\" nu a fost găsit",
|
||||||
|
|
||||||
"error.field.converter.invalid": "Convertorul \"{converter}\" invalid",
|
"error.field.converter.invalid": "Convertorul \"{converter}\" nu este valid",
|
||||||
"error.field.type.missing": "Câmpul \"{ name }\": Tipul de câmp \"{ type }\" nu există",
|
"error.field.type.missing": "Câmpul \"{ name }\": Tipul de câmp \"{ type }\" nu există",
|
||||||
|
|
||||||
"error.file.changeName.empty": "Numele nu trebuie să fie gol",
|
"error.file.changeName.empty": "Numele nu trebuie să fie gol",
|
||||||
@@ -102,14 +102,14 @@
|
|||||||
|
|
||||||
"error.file.duplicate": "Există deja un fișier cu numele \"{filename}\"",
|
"error.file.duplicate": "Există deja un fișier cu numele \"{filename}\"",
|
||||||
"error.file.extension.forbidden": "Extensia de fișier \"{extension}\" nu este permisă",
|
"error.file.extension.forbidden": "Extensia de fișier \"{extension}\" nu este permisă",
|
||||||
"error.file.extension.invalid": "Extensie de fișier invalidă: {extension}",
|
"error.file.extension.invalid": "Extensie de fișier nevalidă: {extension}",
|
||||||
"error.file.extension.missing": "Extensia de fișier pentru \"{filename}\" lipsește",
|
"error.file.extension.missing": "Extensia de fișier pentru \"{filename}\" lipsește",
|
||||||
"error.file.maxheight": "Înălțimea imaginii nu poate depăși {height} pixeli",
|
"error.file.maxheight": "Înălțimea imaginii nu poate depăși {height} pixeli",
|
||||||
"error.file.maxsize": "Fișierul este prea mare",
|
"error.file.maxsize": "Fișierul este prea mare",
|
||||||
"error.file.maxwidth": "Lățimea imaginii nu poate depăși {width} pixeli",
|
"error.file.maxwidth": "Lățimea imaginii nu poate depăși {width} pixeli",
|
||||||
"error.file.mime.differs": "Fișierul încărcat trebuie să aibă același tip mime \"{mime}\"",
|
"error.file.mime.differs": "Fișierul încărcat trebuie să aibă același tip mime \"{mime}\"",
|
||||||
"error.file.mime.forbidden": "Tipul media \"{mime}\" nu este permis",
|
"error.file.mime.forbidden": "Tipul media \"{mime}\" nu este permis",
|
||||||
"error.file.mime.invalid": "Tip mime invalid: {mime}",
|
"error.file.mime.invalid": "Tip mime nevalid: {mime}",
|
||||||
"error.file.mime.missing": "Tipul media pentru \"{filename}\" nu poate fi detectat",
|
"error.file.mime.missing": "Tipul media pentru \"{filename}\" nu poate fi detectat",
|
||||||
"error.file.minheight": "Imaginea trebuie să aibă înălțimea de minim {height} pixeli",
|
"error.file.minheight": "Imaginea trebuie să aibă înălțimea de minim {height} pixeli",
|
||||||
"error.file.minsize": "Fișierul este prea mic",
|
"error.file.minsize": "Fișierul este prea mic",
|
||||||
@@ -118,8 +118,8 @@
|
|||||||
"error.file.name.missing": "Numele fișierului nu poate fi gol",
|
"error.file.name.missing": "Numele fișierului nu poate fi gol",
|
||||||
"error.file.notFound": "Fișierul \"{filename}\" nu a fost găsit",
|
"error.file.notFound": "Fișierul \"{filename}\" nu a fost găsit",
|
||||||
"error.file.orientation": "Orientarea imaginii trebuie să fie \"{orientation}\"",
|
"error.file.orientation": "Orientarea imaginii trebuie să fie \"{orientation}\"",
|
||||||
"error.file.type.forbidden": "Nu ai permisiunea să încarci fișiere {type}",
|
"error.file.type.forbidden": "Nu ai voie să încarci fișiere {type}",
|
||||||
"error.file.type.invalid": "Tip invalid de fișier: {type}",
|
"error.file.type.invalid": "Tip nevalid de fișier: {type}",
|
||||||
"error.file.undefined": "Fișierul nu a fost găsit",
|
"error.file.undefined": "Fișierul nu a fost găsit",
|
||||||
|
|
||||||
"error.form.incomplete": "Te rog repară toate erorile din formular…",
|
"error.form.incomplete": "Te rog repară toate erorile din formular…",
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
"error.license.format": "Te rog introdu un cod de licență valid",
|
"error.license.format": "Te rog introdu un cod de licență valid",
|
||||||
"error.license.verification": "Licența nu a putut fi verificată",
|
"error.license.verification": "Licența nu a putut fi verificată",
|
||||||
|
|
||||||
"error.login.totp.confirm.invalid": "Cod invalid",
|
"error.login.totp.confirm.invalid": "Cod nevalid",
|
||||||
"error.login.totp.confirm.missing": "Vă rugăm să introduceți codul curent",
|
"error.login.totp.confirm.missing": "Vă rugăm să introduceți codul curent",
|
||||||
|
|
||||||
"error.object.validation": "Există o eroare la câmpul \"{label}\":\n{message}",
|
"error.object.validation": "Există o eroare la câmpul \"{label}\":\n{message}",
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
"error.page.changeSlug.permission": "Nu ai voie să schimbi apendicele URL pentru \"{slug}\"",
|
"error.page.changeSlug.permission": "Nu ai voie să schimbi apendicele URL pentru \"{slug}\"",
|
||||||
"error.page.changeSlug.reserved": "Calea paginilor de la primul nivel nu poate să înceapă cu \"{path}\"",
|
"error.page.changeSlug.reserved": "Calea paginilor de la primul nivel nu poate să înceapă cu \"{path}\"",
|
||||||
"error.page.changeStatus.incomplete": "Pagina are erori și nu poate fi publicată",
|
"error.page.changeStatus.incomplete": "Pagina are erori și nu poate fi publicată",
|
||||||
"error.page.changeStatus.permission": "Statusul acestei pagini nu poate fi schimbat",
|
"error.page.changeStatus.permission": "Starea acestei pagini nu poate fi schimbată",
|
||||||
"error.page.changeStatus.toDraft.invalid": "Pagina \"{slug}\" nu poate fi schimbată în ciornă",
|
"error.page.changeStatus.toDraft.invalid": "Pagina \"{slug}\" nu poate fi schimbată în ciornă",
|
||||||
"error.page.changeTemplate.invalid": "Șablonul paginii \"{slug}\" nu poate fi schimbat",
|
"error.page.changeTemplate.invalid": "Șablonul paginii \"{slug}\" nu poate fi schimbat",
|
||||||
"error.page.changeTemplate.permission": "Nu ai voie să schimbi șablonul pentru \"{slug}\"",
|
"error.page.changeTemplate.permission": "Nu ai voie să schimbi șablonul pentru \"{slug}\"",
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
"error.page.draft.duplicate": "Există deja o ciornă cu apendicele URL \"{slug}\"",
|
"error.page.draft.duplicate": "Există deja o ciornă cu apendicele URL \"{slug}\"",
|
||||||
"error.page.duplicate": "Există deja o pagină cu apendicele URL \"{slug}\"",
|
"error.page.duplicate": "Există deja o pagină cu apendicele URL \"{slug}\"",
|
||||||
"error.page.duplicate.permission": "Nu ai voie să duplici \"{slug}\"",
|
"error.page.duplicate.permission": "Nu ai voie să duplici \"{slug}\"",
|
||||||
"error.page.move.ancestor": "Pagina nu poate fi mutată în ea însăși.",
|
"error.page.move.ancestor": "Pagina nu poate fi mutată în ea însăși",
|
||||||
"error.page.move.directory": "Directorul de pagini nu poate fi mutat",
|
"error.page.move.directory": "Directorul de pagini nu poate fi mutat",
|
||||||
"error.page.move.duplicate": "Există deja o sub-pagină cu apendicele URL \"{slug}\"",
|
"error.page.move.duplicate": "Există deja o sub-pagină cu apendicele URL \"{slug}\"",
|
||||||
"error.page.move.notFound": "Pagina mutată nu a fost găsită",
|
"error.page.move.notFound": "Pagina mutată nu a fost găsită",
|
||||||
@@ -173,7 +173,7 @@
|
|||||||
"error.page.slug.invalid": "Te rog introdu un apendice URL valid",
|
"error.page.slug.invalid": "Te rog introdu un apendice URL valid",
|
||||||
"error.page.slug.maxlength": "Lungimea slug-ului nu poate depăși \"{length}\"",
|
"error.page.slug.maxlength": "Lungimea slug-ului nu poate depăși \"{length}\"",
|
||||||
"error.page.sort.permission": "Pagina \"{slug}\" nu poate fi sortată",
|
"error.page.sort.permission": "Pagina \"{slug}\" nu poate fi sortată",
|
||||||
"error.page.status.invalid": "Te rog stabilește un status valid pentru pagină",
|
"error.page.status.invalid": "Te rog stabilește o stare validă pentru pagină",
|
||||||
"error.page.undefined": "Pagina nu a fost găsită",
|
"error.page.undefined": "Pagina nu a fost găsită",
|
||||||
"error.page.update.permission": "Nu ai voie să actualizezi \"{slug}\"",
|
"error.page.update.permission": "Nu ai voie să actualizezi \"{slug}\"",
|
||||||
|
|
||||||
@@ -274,7 +274,7 @@
|
|||||||
"expand": "Extinde",
|
"expand": "Extinde",
|
||||||
"expand.all": "Extinde toate",
|
"expand.all": "Extinde toate",
|
||||||
|
|
||||||
"field.invalid": "Câmpul este invalid",
|
"field.invalid": "Câmpul este nevalid",
|
||||||
"field.required": "Acest câmp este necesar",
|
"field.required": "Acest câmp este necesar",
|
||||||
"field.blocks.changeType": "Schimbă tipul",
|
"field.blocks.changeType": "Schimbă tipul",
|
||||||
"field.blocks.code.name": "Cod",
|
"field.blocks.code.name": "Cod",
|
||||||
@@ -317,16 +317,16 @@
|
|||||||
"field.blocks.quote.citation.placeholder": "de …",
|
"field.blocks.quote.citation.placeholder": "de …",
|
||||||
"field.blocks.text.name": "Text",
|
"field.blocks.text.name": "Text",
|
||||||
"field.blocks.text.placeholder": "Text …",
|
"field.blocks.text.placeholder": "Text …",
|
||||||
"field.blocks.video.autoplay": "Autoplay",
|
"field.blocks.video.autoplay": "Autoredare",
|
||||||
"field.blocks.video.caption": "Etichetă",
|
"field.blocks.video.caption": "Etichetă",
|
||||||
"field.blocks.video.controls": "Controls",
|
"field.blocks.video.controls": "Controale",
|
||||||
"field.blocks.video.location": "Localizare",
|
"field.blocks.video.location": "Localizare",
|
||||||
"field.blocks.video.loop": "Loop",
|
"field.blocks.video.loop": "În buclă",
|
||||||
"field.blocks.video.muted": "Muted",
|
"field.blocks.video.muted": "Fără sonor",
|
||||||
"field.blocks.video.name": "Video",
|
"field.blocks.video.name": "Video",
|
||||||
"field.blocks.video.placeholder": "Introdu URL-ul video-ului",
|
"field.blocks.video.placeholder": "Introdu URL-ul video-ului",
|
||||||
"field.blocks.video.poster": "Poster",
|
"field.blocks.video.poster": "Poster",
|
||||||
"field.blocks.video.preload": "Preload",
|
"field.blocks.video.preload": "Preîncarcă",
|
||||||
"field.blocks.video.url.label": "URL-ul video-ului",
|
"field.blocks.video.url.label": "URL-ul video-ului",
|
||||||
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
||||||
|
|
||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Extensia <code>MB String</code> este necesară",
|
"installation.issues.mbstring": "Extensia <code>MB String</code> este necesară",
|
||||||
"installation.issues.media": "Directorul <code>/media</code> nu există sau nu are permisiuni de scriere",
|
"installation.issues.media": "Directorul <code>/media</code> nu există sau nu are permisiuni de scriere",
|
||||||
"installation.issues.php": "Asigură-te că folosești <code>PHP 8+</code>",
|
"installation.issues.php": "Asigură-te că folosești <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby are nevoie de <code>Apache</code>, <code>Nginx</code> sau <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Directorul <code>/site/sessions</code> folder nu există sau nu are permisiuni de scriere",
|
"installation.issues.sessions": "Directorul <code>/site/sessions</code> folder nu există sau nu are permisiuni de scriere",
|
||||||
|
|
||||||
"language": "Limba",
|
"language": "Limba",
|
||||||
@@ -537,9 +536,9 @@
|
|||||||
"page.blueprint": "Această pagină nu are încă un Blueprint. Poți să-l definești în <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
|
"page.blueprint": "Această pagină nu are încă un Blueprint. Poți să-l definești în <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
|
||||||
"page.changeSlug": "Schimbă URL-ul",
|
"page.changeSlug": "Schimbă URL-ul",
|
||||||
"page.changeSlug.fromTitle": "Creează din titlu",
|
"page.changeSlug.fromTitle": "Creează din titlu",
|
||||||
"page.changeStatus": "Schimbă statusul",
|
"page.changeStatus": "Schimbă starea",
|
||||||
"page.changeStatus.position": "Te rog alege o poziție",
|
"page.changeStatus.position": "Te rog alege o poziție",
|
||||||
"page.changeStatus.select": "Alege un status nou",
|
"page.changeStatus.select": "Alege o stare nouă",
|
||||||
"page.changeTemplate": "Schimbă șablonul",
|
"page.changeTemplate": "Schimbă șablonul",
|
||||||
"page.changeTemplate.notice": "Schimbarea șablonului paginii va înlătura conținutul câmpurilor care nu se potrivesc ca tip. Folosește cu prudență.",
|
"page.changeTemplate.notice": "Schimbarea șablonului paginii va înlătura conținutul câmpurilor care nu se potrivesc ca tip. Folosește cu prudență.",
|
||||||
"page.create": "Creează ca {status}",
|
"page.create": "Creează ca {status}",
|
||||||
@@ -551,7 +550,7 @@
|
|||||||
"page.duplicate.pages": "Copiază paginile",
|
"page.duplicate.pages": "Copiază paginile",
|
||||||
"page.move": "Mută pagina",
|
"page.move": "Mută pagina",
|
||||||
"page.sort": "Schimbă poziția",
|
"page.sort": "Schimbă poziția",
|
||||||
"page.status": "Status",
|
"page.status": "Stare",
|
||||||
"page.status.draft": "Ciornă",
|
"page.status.draft": "Ciornă",
|
||||||
"page.status.draft.description": "Pagina este în modul ciornă și va fi vizibilă doar editorilor conectați sau printr-un link secret",
|
"page.status.draft.description": "Pagina este în modul ciornă și va fi vizibilă doar editorilor conectați sau printr-un link secret",
|
||||||
"page.status.listed": "Publică",
|
"page.status.listed": "Publică",
|
||||||
@@ -600,7 +599,7 @@
|
|||||||
"search.all": "Afișați toate {count} rezultatele",
|
"search.all": "Afișați toate {count} rezultatele",
|
||||||
"search.results.none": "Niciun rezultat",
|
"search.results.none": "Niciun rezultat",
|
||||||
|
|
||||||
"section.invalid": "Secțiunea este invalidă",
|
"section.invalid": "Secțiunea este nevalidă",
|
||||||
"section.required": "Această secțiune este necesară",
|
"section.required": "Această secțiune este necesară",
|
||||||
|
|
||||||
"security": "Securitate",
|
"security": "Securitate",
|
||||||
@@ -616,8 +615,10 @@
|
|||||||
"split": "Împarte",
|
"split": "Împarte",
|
||||||
|
|
||||||
"stats.empty": "Niciun raport",
|
"stats.empty": "Niciun raport",
|
||||||
"status": "Status",
|
"status": "Stare",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Directorul de conținut pare să fie expus",
|
"system.issues.content": "Directorul de conținut pare să fie expus",
|
||||||
"system.issues.eol.kirby": "Versiunea instalată de Kirby a ajuns la sfârșitul vieții utile și nu va mai primi actualizări de securitate.",
|
"system.issues.eol.kirby": "Versiunea instalată de Kirby a ajuns la sfârșitul vieții utile și nu va mai primi actualizări de securitate.",
|
||||||
"system.issues.eol.plugin": "Versiunea instalată a plugin-ului { plugin } a ajuns la sfârșitul vieții utile și nu va mai primi actualizări de securitate.",
|
"system.issues.eol.plugin": "Versiunea instalată a plugin-ului { plugin } a ajuns la sfârșitul vieții utile și nu va mai primi actualizări de securitate.",
|
||||||
@@ -629,7 +630,7 @@
|
|||||||
"system.issues.site": "Directorul site pare să fie expus",
|
"system.issues.site": "Directorul site pare să fie expus",
|
||||||
"system.issues.vulnerability.kirby": "Instalarea ta ar putea fi afectată de următoarea vulnerabilitate ({ severity } severity): { description }",
|
"system.issues.vulnerability.kirby": "Instalarea ta ar putea fi afectată de următoarea vulnerabilitate ({ severity } severity): { description }",
|
||||||
"system.issues.vulnerability.plugin": "Instalarea ta ar putea fi afectată de următoarea vulnerabilitate în plugin-ul { plugin } ({ severity } severity): { description }",
|
"system.issues.vulnerability.plugin": "Instalarea ta ar putea fi afectată de următoarea vulnerabilitate în plugin-ul { plugin } ({ severity } severity): { description }",
|
||||||
"system.updateStatus": "Status actualizare",
|
"system.updateStatus": "Starea actualizării",
|
||||||
"system.updateStatus.error": "Nu am putut căuta actualizări",
|
"system.updateStatus.error": "Nu am putut căuta actualizări",
|
||||||
"system.updateStatus.not-vulnerable": "Nicio vulnerabilitate cunoscută",
|
"system.updateStatus.not-vulnerable": "Nicio vulnerabilitate cunoscută",
|
||||||
"system.updateStatus.security-update": "Actualizare gratuită de securitate { version } disponibilă",
|
"system.updateStatus.security-update": "Actualizare gratuită de securitate { version } disponibilă",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Расширение <code>MB String</code> необходимо",
|
"installation.issues.mbstring": "Расширение <code>MB String</code> необходимо",
|
||||||
"installation.issues.media": "Каталог <code>/media</code> не существует или нет прав записи",
|
"installation.issues.media": "Каталог <code>/media</code> не существует или нет прав записи",
|
||||||
"installation.issues.php": "Убедитесь, что используется <code>PHP 8+</code>",
|
"installation.issues.php": "Убедитесь, что используется <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby требует <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code> ",
|
|
||||||
"installation.issues.sessions": "Каталог <code>/site/sessions</code> не существует или нет прав записи",
|
"installation.issues.sessions": "Каталог <code>/site/sessions</code> не существует или нет прав записи",
|
||||||
|
|
||||||
"language": "\u042f\u0437\u044b\u043a",
|
"language": "\u042f\u0437\u044b\u043a",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Статистики нет",
|
"stats.empty": "Статистики нет",
|
||||||
"status": "Статус",
|
"status": "Статус",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Похоже, к папке content есть несанкционированный доступ",
|
"system.issues.content": "Похоже, к папке content есть несанкционированный доступ",
|
||||||
"system.issues.eol.kirby": "Срок службы установленной вами версии Kirby истек, и она больше не будет получать обновления для системы безопасности",
|
"system.issues.eol.kirby": "Срок службы установленной вами версии Kirby истек, и она больше не будет получать обновления для системы безопасности",
|
||||||
"system.issues.eol.plugin": "Срок службы установленной вами версии плагина { plugin } истек, и он не будет получать дальнейших обновлений для системы безопасности",
|
"system.issues.eol.plugin": "Срок службы установленной вами версии плагина { plugin } истек, и он не будет получать дальнейших обновлений для системы безопасности",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "<code>MB String</code> rozšírenie je povinné",
|
"installation.issues.mbstring": "<code>MB String</code> rozšírenie je povinné",
|
||||||
"installation.issues.media": "Priečinok <code>/media</code> neexistuje alebo nie je nastavený ako zapisovateľný",
|
"installation.issues.media": "Priečinok <code>/media</code> neexistuje alebo nie je nastavený ako zapisovateľný",
|
||||||
"installation.issues.php": "Uistite sa, že používate <code>PHP 8+</code>",
|
"installation.issues.php": "Uistite sa, že používate <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby vyžaduje <code>Apache</code>, <code>Nginx</code> alebo <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Priečinok <code>/site/sessions</code> neexistuje alebo nie je nastavený ako zapisovateľný",
|
"installation.issues.sessions": "Priečinok <code>/site/sessions</code> neexistuje alebo nie je nastavený ako zapisovateľný",
|
||||||
|
|
||||||
"language": "Jazyk",
|
"language": "Jazyk",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "No reports",
|
"stats.empty": "No reports",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "The content folder seems to be exposed",
|
"system.issues.content": "The content folder seems to be exposed",
|
||||||
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates",
|
||||||
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
|
||||||
|
|||||||
@@ -135,7 +135,7 @@
|
|||||||
|
|
||||||
"error.license.domain": "Domänen för licensen saknas",
|
"error.license.domain": "Domänen för licensen saknas",
|
||||||
"error.license.email": "Ange en giltig e-postadress",
|
"error.license.email": "Ange en giltig e-postadress",
|
||||||
"error.license.format": "Please enter a valid license code",
|
"error.license.format": "Ange en giltig licenskod",
|
||||||
"error.license.verification": "Licensen kunde inte verifieras",
|
"error.license.verification": "Licensen kunde inte verifieras",
|
||||||
|
|
||||||
"error.login.totp.confirm.invalid": "Ogiltig kod",
|
"error.login.totp.confirm.invalid": "Ogiltig kod",
|
||||||
@@ -317,16 +317,16 @@
|
|||||||
"field.blocks.quote.citation.placeholder": "av …",
|
"field.blocks.quote.citation.placeholder": "av …",
|
||||||
"field.blocks.text.name": "Text",
|
"field.blocks.text.name": "Text",
|
||||||
"field.blocks.text.placeholder": "Text …",
|
"field.blocks.text.placeholder": "Text …",
|
||||||
"field.blocks.video.autoplay": "Autoplay",
|
"field.blocks.video.autoplay": "Autospela",
|
||||||
"field.blocks.video.caption": "Rubrik",
|
"field.blocks.video.caption": "Rubrik",
|
||||||
"field.blocks.video.controls": "Controls",
|
"field.blocks.video.controls": "Kontroller",
|
||||||
"field.blocks.video.location": "Plats",
|
"field.blocks.video.location": "Plats",
|
||||||
"field.blocks.video.loop": "Loop",
|
"field.blocks.video.loop": "Loopa",
|
||||||
"field.blocks.video.muted": "Muted",
|
"field.blocks.video.muted": "Ljud av",
|
||||||
"field.blocks.video.name": "Video",
|
"field.blocks.video.name": "Video",
|
||||||
"field.blocks.video.placeholder": "Ange en URL till en video",
|
"field.blocks.video.placeholder": "Ange en URL till en video",
|
||||||
"field.blocks.video.poster": "Poster",
|
"field.blocks.video.poster": "Stillbild",
|
||||||
"field.blocks.video.preload": "Preload",
|
"field.blocks.video.preload": "Förladda",
|
||||||
"field.blocks.video.url.label": "Video-URL",
|
"field.blocks.video.url.label": "Video-URL",
|
||||||
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
||||||
|
|
||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "Tillägget <code>MB String</code> krävs",
|
"installation.issues.mbstring": "Tillägget <code>MB String</code> krävs",
|
||||||
"installation.issues.media": "Mappen <code>/media</code> finns inte eller är inte skrivbar",
|
"installation.issues.media": "Mappen <code>/media</code> finns inte eller är inte skrivbar",
|
||||||
"installation.issues.php": "Se till att du använder <code>PHP 8+</code>",
|
"installation.issues.php": "Se till att du använder <code>PHP 8+</code>",
|
||||||
"installation.issues.server": "Kirby kräver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
|
|
||||||
"installation.issues.sessions": "Mappen <code>/site/sessions</code> finns inte eller är inte skrivbar",
|
"installation.issues.sessions": "Mappen <code>/site/sessions</code> finns inte eller är inte skrivbar",
|
||||||
|
|
||||||
"language": "Spr\u00e5k",
|
"language": "Spr\u00e5k",
|
||||||
@@ -432,7 +431,7 @@
|
|||||||
"license.code.label": "Ange din licenskod",
|
"license.code.label": "Ange din licenskod",
|
||||||
"license.status.active.info": "Inkluderar nya större versioner fram till {date}",
|
"license.status.active.info": "Inkluderar nya större versioner fram till {date}",
|
||||||
"license.status.active.label": "Giltig licens",
|
"license.status.active.label": "Giltig licens",
|
||||||
"license.status.demo.info": "This is a demo installation",
|
"license.status.demo.info": "Detta är en demoinstallation",
|
||||||
"license.status.demo.label": "Demo",
|
"license.status.demo.label": "Demo",
|
||||||
"license.status.inactive.info": "Förnya licensen för att uppdatera till nyare större versioner",
|
"license.status.inactive.info": "Förnya licensen för att uppdatera till nyare större versioner",
|
||||||
"license.status.inactive.label": "Inga nya större versioner",
|
"license.status.inactive.label": "Inga nya större versioner",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Inga rapporter",
|
"stats.empty": "Inga rapporter",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "Mappen content verkar vara exponerad",
|
"system.issues.content": "Mappen content verkar vara exponerad",
|
||||||
"system.issues.eol.kirby": "Din installerade Kirby-version har nått slutet av sin livscykel och kommer inte att få fler säkerhetsuppdateringar",
|
"system.issues.eol.kirby": "Din installerade Kirby-version har nått slutet av sin livscykel och kommer inte att få fler säkerhetsuppdateringar",
|
||||||
"system.issues.eol.plugin": "Den installerade versionen av tillägget { plugin } har nått slutet på sin livscykel och kommer inte att få fler säkerhetsuppdateringar.",
|
"system.issues.eol.plugin": "Den installerade versionen av tillägget { plugin } har nått slutet på sin livscykel och kommer inte att få fler säkerhetsuppdateringar.",
|
||||||
|
|||||||
@@ -386,7 +386,6 @@
|
|||||||
"installation.issues.mbstring": "<code>MB String</code> eklentisi gerekli",
|
"installation.issues.mbstring": "<code>MB String</code> eklentisi gerekli",
|
||||||
"installation.issues.media": "<code>/media</code> klasörü yok yada yazılamaz",
|
"installation.issues.media": "<code>/media</code> klasörü yok yada yazılamaz",
|
||||||
"installation.issues.php": "<code>PHP 8+</code> kullandığınızdan emin olun. ",
|
"installation.issues.php": "<code>PHP 8+</code> kullandığınızdan emin olun. ",
|
||||||
"installation.issues.server": "Kirby <code>Apache</code>, <code>Nginx</code> veya <code>Caddy</code> gerektirir",
|
|
||||||
"installation.issues.sessions": "<code>/site/sessions</code> klasörü mevcut değil veya yazılabilir değil",
|
"installation.issues.sessions": "<code>/site/sessions</code> klasörü mevcut değil veya yazılabilir değil",
|
||||||
|
|
||||||
"language": "Dil",
|
"language": "Dil",
|
||||||
@@ -618,6 +617,8 @@
|
|||||||
"stats.empty": "Rapor yok",
|
"stats.empty": "Rapor yok",
|
||||||
"status": "Durum",
|
"status": "Durum",
|
||||||
|
|
||||||
|
"system.info.copy": "Copy info",
|
||||||
|
"system.info.copied": "System info copied",
|
||||||
"system.issues.content": "İçerik klasörü açığa çıkmış görünüyor",
|
"system.issues.content": "İçerik klasörü açığa çıkmış görünüyor",
|
||||||
"system.issues.eol.kirby": "Yüklü Kirby sürümünüz kullanım ömrünün sonuna ulaştı ve daha fazla güvenlik güncellemesi almayacak",
|
"system.issues.eol.kirby": "Yüklü Kirby sürümünüz kullanım ömrünün sonuna ulaştı ve daha fazla güvenlik güncellemesi almayacak",
|
||||||
"system.issues.eol.plugin": "{ plugin } eklentisinin yüklü sürümü kullanım ömrünün sonuna ulaştı ve daha fazla güvenlik güncellemesi almayacak",
|
"system.issues.eol.plugin": "{ plugin } eklentisinin yüklü sürümü kullanım ömrünün sonuna ulaştı ve daha fazla güvenlik güncellemesi almayacak",
|
||||||
|
|||||||
2
kirby/panel/dist/css/style.min.css
vendored
2
kirby/panel/dist/css/style.min.css
vendored
File diff suppressed because one or more lines are too long
25
kirby/panel/dist/img/icons.svg
vendored
25
kirby/panel/dist/img/icons.svg
vendored
@@ -406,24 +406,16 @@
|
|||||||
<path d="M10 6V8H5V19H16V14H18V20C18 20.5523 17.5523 21 17 21H4C3.44772 21 3 20.5523 3 20V7C3 6.44772 3.44772 6 4 6H10ZM21 3V11H19L18.9999 6.413L11.2071 14.2071L9.79289 12.7929L17.5849 5H13V3H21Z"/>
|
<path d="M10 6V8H5V19H16V14H18V20C18 20.5523 17.5523 21 17 21H4C3.44772 21 3 20.5523 3 20V7C3 6.44772 3.44772 6 4 6H10ZM21 3V11H19L18.9999 6.413L11.2071 14.2071L9.79289 12.7929L17.5849 5H13V3H21Z"/>
|
||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-order-alpha-asc" viewBox="0 0 24 24">
|
<symbol id="icon-order-alpha-asc" viewBox="0 0 24 24">
|
||||||
<path d="M 9.336546 1 L 12.936545 10 L 11.173365 10 L 10.190728 7.545454 L 6.844365 7.545454 L 5.863364 10 L 4.101 10 L 7.700182 1 Z M 8.518364 3.360619 L 7.498092 5.90909 L 9.537002 5.90909 Z"/>
|
<path d="M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z" />
|
||||||
<path d="M 12 13 L 12 14.75 L 7.338525 20 L 12 20 L 12 21.75 L 5 21.75 L 5 20 L 9.6599 14.75 L 5 14.75 L 5 13 Z"/>
|
|
||||||
<path d="M 20 4 L 20 16 L 23 16 L 19 21 L 15 16 L 18 16 L 18 4 Z"/>
|
|
||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-order-alpha-desc" viewBox="0 0 24 24">
|
<symbol id="icon-order-alpha-desc" viewBox="0 0 24 24">
|
||||||
<path d="M 9.336546 1 L 12.936545 10 L 11.173365 10 L 10.190728 7.545454 L 6.844365 7.545454 L 5.863364 10 L 4.101 10 L 7.700182 1 Z M 8.518364 3.360619 L 7.498092 5.90909 L 9.537002 5.90909 Z"/>
|
<path d="M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM21.9999 8L17.9999 3L13.9999 8H16.9999V21H18.9999V8H21.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z" />
|
||||||
<path d="M 12 13 L 12 14.75 L 7.338525 20 L 12 20 L 12 21.75 L 5 21.75 L 5 20 L 9.6599 14.75 L 5 14.75 L 5 13 Z"/>
|
|
||||||
<path d="M 19 3 L 23 8 L 20 8 L 20 20 L 18 20 L 18 8 L 15 8 Z"/>
|
|
||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-order-num-asc" viewBox="0 0 24 24">
|
<symbol id="icon-order-num-asc" viewBox="0 0 24 24">
|
||||||
<path d="M 6.6224 22 L 8.7008 18.4 C 6.932719 18.4 5.5 16.967279 5.5 15.2 C 5.5 13.432719 6.932719 12 8.7 12 C 10.46728 12 11.9 13.432719 11.9 15.2 C 11.9 15.78912 11.7408 16.34104 11.46312 16.815121 L 8.4696 22 Z M 8.7 16.799999 C 9.583681 16.799999 10.3 16.083679 10.3 15.2 C 10.3 14.316319 9.583681 13.6 8.7 13.6 C 7.816319 13.6 7.1 14.316319 7.1 15.2 C 7.1 16.083679 7.816319 16.799999 8.7 16.799999 Z"/>
|
<path d="M9.00054 3L9 11H7V5.41L5 5.9485V3.61978L7.31304 3H9.00054ZM19 3V16H22L18 21L14 16H17V3H19ZM11 15.5C11 16.0645 10.8441 16.5926 10.5729 17.0436L8.28871 21H5.97931L7.45156 18.45C6.05661 18.1923 5 16.9695 5 15.5C5 13.8431 6.34315 12.5 8 12.5C9.65685 12.5 11 13.8431 11 15.5ZM8 16.5C8.55228 16.5 9 16.0523 9 15.5C9 14.9477 8.55228 14.5 8 14.5C7.44772 14.5 7 14.9477 7 15.5C7 16.0523 7.44772 16.5 8 16.5Z" />
|
||||||
<path d="M 10 1 L 10 9.998876 L 8.500187 9.998876 L 8.499813 2.652794 L 7 3.054743 L 7 1.502438 L 8.87514 1 Z"/>
|
|
||||||
<path d="M 20 4 L 20 16 L 23 16 L 19 21 L 15 16 L 18 16 L 18 4 Z"/>
|
|
||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-order-num-desc" viewBox="0 0 24 24">
|
<symbol id="icon-order-num-desc" viewBox="0 0 24 24">
|
||||||
<path d="M 6.6224 22 L 8.7008 18.4 C 6.932719 18.4 5.5 16.967279 5.5 15.2 C 5.5 13.432719 6.932719 12 8.7 12 C 10.46728 12 11.9 13.432719 11.9 15.2 C 11.9 15.78912 11.7408 16.34104 11.46312 16.815121 L 8.4696 22 Z M 8.7 16.799999 C 9.583681 16.799999 10.3 16.083679 10.3 15.2 C 10.3 14.316319 9.583681 13.6 8.7 13.6 C 7.816319 13.6 7.1 14.316319 7.1 15.2 C 7.1 16.083679 7.816319 16.799999 8.7 16.799999 Z"/>
|
<path d="M9 11L9.00054 3H7.31304L5 3.61978V5.9485L7 5.41V11H9ZM22 8L18 3L14 8H17V21H19V8H22ZM8 16.5C7.44772 16.5 7 16.0523 7 15.5C7 14.9477 7.44772 14.5 8 14.5C8.55228 14.5 9 14.9477 9 15.5C9 16.0523 8.55228 16.5 8 16.5ZM10.5729 17.0436C10.8441 16.5926 11 16.0645 11 15.5C11 13.8431 9.65685 12.5 8 12.5C6.34315 12.5 5 13.8431 5 15.5C5 16.9695 6.05661 18.1923 7.45156 18.45L5.97931 21H8.28871L10.5729 17.0436Z" />
|
||||||
<path d="M 10 1 L 10 9.998876 L 8.500187 9.998876 L 8.499813 2.652794 L 7 3.054743 L 7 1.502438 L 8.87514 1 Z"/>
|
|
||||||
<path d="M 19 3 L 23 8 L 20 8 L 20 20 L 18 20 L 18 8 L 15 8 Z"/>
|
|
||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-page" viewBox="0 0 24 24">
|
<symbol id="icon-page" viewBox="0 0 24 24">
|
||||||
<use href="#icon-document" />
|
<use href="#icon-document" />
|
||||||
@@ -578,6 +570,15 @@
|
|||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-text-right" viewBox="0 0 24 24">
|
<symbol id="icon-text-right" viewBox="0 0 24 24">
|
||||||
<path d="M3 4H21V6H3V4ZM7 19H21V21H7V19ZM3 14H21V16H3V14ZM7 9H21V11H7V9Z"/>
|
<path d="M3 4H21V6H3V4ZM7 19H21V21H7V19ZM3 14H21V16H3V14ZM7 9H21V11H7V9Z"/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="icon-text-top" viewBox="0 0 24 24">
|
||||||
|
<path d="M3 3H21V5H3V3ZM8 11V21H6V11H3L7 7L11 11H8ZM18 11V21H16V11H13L17 7L21 11H18Z"/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="icon-text-middle" viewBox="0 0 24 24">
|
||||||
|
<path d="M3 11H21V13H3V11ZM18 18V21H16V18H13L17 14L21 18H18ZM8 18V21H6V18H3L7 14L11 18H8ZM18 6H21L17 10L13 6H16V3H18V6ZM8 6H11L7 10L3 6H6V3H8V6Z" />
|
||||||
|
</symbol>
|
||||||
|
<symbol id="icon-text-bottom" viewBox="0 0 24 24">
|
||||||
|
<path d="M3 19H21V21H3V19ZM8 13H11L7 17L3 13H6V3H8V13ZM18 13H21L17 17L13 13H16V3H18V13Z" />
|
||||||
</symbol>
|
</symbol>
|
||||||
<symbol id="icon-ticket" viewBox="0 0 24 24">
|
<symbol id="icon-ticket" viewBox="0 0 24 24">
|
||||||
<path d="M2.00488 9.5V4C2.00488 3.44772 2.4526 3 3.00488 3H21.0049C21.5572 3 22.0049 3.44772 22.0049 4V9.5C20.6242 9.5 19.5049 10.6193 19.5049 12C19.5049 13.3807 20.6242 14.5 22.0049 14.5V20C22.0049 20.5523 21.5572 21 21.0049 21H3.00488C2.4526 21 2.00488 20.5523 2.00488 20V14.5C3.38559 14.5 4.50488 13.3807 4.50488 12C4.50488 10.6193 3.38559 9.5 2.00488 9.5ZM4.00488 7.96776C5.4866 8.70411 6.50488 10.2331 6.50488 12C6.50488 13.7669 5.4866 15.2959 4.00488 16.0322V19H20.0049V16.0322C18.5232 15.2959 17.5049 13.7669 17.5049 12C17.5049 10.2331 18.5232 8.70411 20.0049 7.96776V5H4.00488V7.96776ZM9.00488 9H15.0049V11H9.00488V9ZM9.00488 13H15.0049V15H9.00488V13Z"/>
|
<path d="M2.00488 9.5V4C2.00488 3.44772 2.4526 3 3.00488 3H21.0049C21.5572 3 22.0049 3.44772 22.0049 4V9.5C20.6242 9.5 19.5049 10.6193 19.5049 12C19.5049 13.3807 20.6242 14.5 22.0049 14.5V20C22.0049 20.5523 21.5572 21 21.0049 21H3.00488C2.4526 21 2.00488 20.5523 2.00488 20V14.5C3.38559 14.5 4.50488 13.3807 4.50488 12C4.50488 10.6193 3.38559 9.5 2.00488 9.5ZM4.00488 7.96776C5.4866 8.70411 6.50488 10.2331 6.50488 12C6.50488 13.7669 5.4866 15.2959 4.00488 16.0322V19H20.0049V16.0322C18.5232 15.2959 17.5049 13.7669 17.5049 12C17.5049 10.2331 18.5232 8.70411 20.0049 7.96776V5H4.00488V7.96776ZM9.00488 9H15.0049V11H9.00488V9ZM9.00488 13H15.0049V15H9.00488V13Z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 98 KiB |
8
kirby/panel/dist/js/PlaygroundView.min.js
vendored
8
kirby/panel/dist/js/PlaygroundView.min.js
vendored
@@ -1,7 +1 @@
|
|||||||
function __vite__mapDeps(indexes) {
|
import{D as t}from"./Docs.min.js";import{n as e}from"./index.min.js";import"./vendor.min.js";const n=e({props:{docs:Object},emits:["cancel"],computed:{options(){const t=[{icon:"expand",link:"lab/docs/"+this.docs.component}];return this.docs.github&&t.unshift({icon:"github",link:this.docs.github,target:"_blank"}),t}}},(function(){var t=this,e=t._self._c;return e("k-drawer",t._b({ref:"drawer",staticClass:"k-form-drawer",attrs:{options:t.options},on:{submit:function(e){return t.$emit("cancel")}}},"k-drawer",t.$attrs,!1),[e("k-lab-docs",t._b({},"k-lab-docs",t.docs,!1))],1)}),[],!1,null,null,null,null).exports;const l=e({props:{code:{type:Boolean,default:!0},label:String,flex:Boolean},data:()=>({mode:"preview"}),computed:{component(){return window.UiExamples[this.label]}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-lab-example",attrs:{"data-flex":t.flex,tabindex:"0"}},[e("header",{staticClass:"k-lab-example-header"},[e("h3",{staticClass:"k-lab-example-label"},[t._v(t._s(t.label))]),t.code?e("k-button-group",{staticClass:"k-lab-example-inspector",attrs:{layout:"collapsed"}},[e("k-button",{attrs:{theme:"preview"===t.mode?"info":null,icon:"preview",size:"xs",title:"Preview"},on:{click:function(e){t.mode="preview"}}}),e("k-button",{attrs:{theme:"inspect"===t.mode?"info":null,icon:"code",size:"xs",title:"Vue code"},on:{click:function(e){t.mode="inspect"}}})],1):t._e()],1),"preview"===t.mode?e("div",{staticClass:"k-lab-example-canvas"},[t._t("default")],2):t._e(),"inspect"===t.mode?e("div",{staticClass:"k-lab-example-code"},[e("k-code",{attrs:{language:"html"}},[t._v(t._s(t.component))])],1):t._e()])}),[],!1,null,null,null,null).exports;const a=e({},(function(){return(0,this._self._c)("div",{staticClass:"k-lab-examples"},[this._t("default")],2)}),[],!1,null,null,null,null).exports;const o=e({methods:{submit(t){const e=Object.fromEntries(new FormData(t));this.$panel.dialog.open({component:"k-lab-output-dialog",props:{code:JSON.stringify(e,null,2)}})}}},(function(){var t=this,e=t._self._c;return e("form",{staticClass:"k-lab-form",on:{submit:function(e){return e.preventDefault(),t.submit(e.target)}}},[t._t("default"),e("footer",[e("k-button",{attrs:{type:"submit",icon:"check",theme:"positive",variant:"filled"}},[t._v(" Submit ")])],1)],2)}),[],!1,null,null,null,null).exports;const s=e({props:{code:String,language:{default:"js",type:String}},emits:["cancel"]},(function(){var t=this,e=t._self._c;return e("k-dialog",t._b({attrs:{size:"large","cancel-button":!1,"submit-button":!1},on:{cancel:function(e){return t.$emit("cancel")}}},"k-dialog",t.$attrs,!1),[e("k-code",{attrs:{language:t.language}},[t._v(t._s(t.code))])],1)}),[],!1,null,null,null,null).exports;const i=e({},(function(){var t=this._self._c;return t("div",{staticClass:"k-table"},[t("table",[t("tbody",[t("tr",[t("td",{staticClass:"k-table-cell",attrs:{"data-mobile":"true"}},[this._t("default")],2)])])])])}),[],!1,null,null,null,null).exports;Vue.component("k-lab-docs",t),Vue.component("k-lab-docs-drawer",n),Vue.component("k-lab-example",l),Vue.component("k-lab-examples",a),Vue.component("k-lab-form",o),Vue.component("k-lab-output-dialog",s),Vue.component("k-lab-table-cell",i);const r=e({props:{docs:String,examples:[Object,Array],file:String,github:String,props:[Object,Array],styles:String,tab:String,tabs:{type:Array,default:()=>[]},template:String,title:String},data:()=>({component:null}),watch:{tab:{handler(){this.createComponent()},immediate:!0}},mounted(){this.$panel.view.path.replace(/lab\//,"")},methods:{async createComponent(){if(!this.file)return;const{default:t}=await import(this.$panel.url(this.file)+"?cache="+Date.now());t.template=this.template,this.component={...t},window.UiExamples=this.examples},openDocs(){this.$panel.drawer.open(`lab/docs/${this.docs}`)},async reloadComponent(){await this.$panel.view.refresh(),this.createComponent()},reloadDocs(){this.$panel.drawer.isOpen&&this.$panel.drawer.refresh()}}},(function(){var t=this,e=t._self._c;return e("k-panel-inside",{staticClass:"k-lab-playground-view",attrs:{"data-has-tabs":t.tabs.length>1}},[e("k-header",{scopedSlots:t._u([{key:"buttons",fn:function(){return[t.docs||t.github?e("k-button-group",[t.docs?e("k-button",{attrs:{text:t.docs,icon:"book",size:"sm",variant:"filled"},on:{click:t.openDocs}}):t._e(),t.github?e("k-button",{attrs:{link:t.github,icon:"github",size:"sm",target:"_blank",variant:"filled"}}):t._e()],1):t._e()]},proxy:!0}])},[t._v(" "+t._s(t.title)+" ")]),e("k-tabs",{attrs:{tab:t.tab,tabs:t.tabs}}),t.component?e(t.component,t._b({tag:"component"},"component",t.props,!1)):t._e(),t.styles?e("style",{tag:"component",domProps:{innerHTML:t._s(t.styles)}}):t._e()],1)}),[],!1,null,null,null,null).exports;export{r as default};
|
||||||
if (!__vite__mapDeps.viteFileDeps) {
|
|
||||||
__vite__mapDeps.viteFileDeps = []
|
|
||||||
}
|
|
||||||
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
|
|
||||||
}
|
|
||||||
import{n as t,_ as e}from"./index.min.js";import{D as n}from"./Docs.min.js";import"./vendor.min.js";const l=t({props:{docs:Object},emits:["cancel"],computed:{options(){const t=[{icon:"expand",link:"lab/docs/"+this.docs.component}];return this.docs.github&&t.unshift({icon:"github",link:this.docs.github,target:"_blank"}),t}}},(function(){var t=this,e=t._self._c;return e("k-drawer",t._b({ref:"drawer",staticClass:"k-form-drawer",attrs:{options:t.options},on:{submit:function(e){return t.$emit("cancel")}}},"k-drawer",t.$attrs,!1),[e("k-lab-docs",t._b({},"k-lab-docs",t.docs,!1))],1)}),[],!1,null,null,null,null).exports;const a=t({props:{code:{type:Boolean,default:!0},label:String,flex:Boolean},data:()=>({mode:"preview"}),computed:{component(){return window.UiExamples[this.label]}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-lab-example",attrs:{"data-flex":t.flex,tabindex:"0"}},[e("header",{staticClass:"k-lab-example-header"},[e("h3",{staticClass:"k-lab-example-label"},[t._v(t._s(t.label))]),t.code?e("k-button-group",{staticClass:"k-lab-example-inspector",attrs:{layout:"collapsed"}},[e("k-button",{attrs:{theme:"preview"===t.mode?"info":null,icon:"preview",size:"xs",title:"Preview"},on:{click:function(e){t.mode="preview"}}}),e("k-button",{attrs:{theme:"inspect"===t.mode?"info":null,icon:"code",size:"xs",title:"Vue code"},on:{click:function(e){t.mode="inspect"}}})],1):t._e()],1),"preview"===t.mode?e("div",{staticClass:"k-lab-example-canvas"},[t._t("default")],2):t._e(),"inspect"===t.mode?e("div",{staticClass:"k-lab-example-code"},[e("k-code",{attrs:{language:"html"}},[t._v(t._s(t.component))])],1):t._e()])}),[],!1,null,null,null,null).exports;const o=t({},(function(){return(0,this._self._c)("div",{staticClass:"k-lab-examples"},[this._t("default")],2)}),[],!1,null,null,null,null).exports;const s=t({methods:{submit(t){const e=Object.fromEntries(new FormData(t));this.$panel.dialog.open({component:"k-lab-output-dialog",props:{code:JSON.stringify(e,null,2)}})}}},(function(){var t=this,e=t._self._c;return e("form",{staticClass:"k-lab-form",on:{submit:function(e){return e.preventDefault(),t.submit(e.target)}}},[t._t("default"),e("footer",[e("k-button",{attrs:{type:"submit",icon:"check",theme:"positive",variant:"filled"}},[t._v(" Submit ")])],1)],2)}),[],!1,null,null,null,null).exports;const i=t({props:{code:String,language:{default:"js",type:String}},emits:["cancel"]},(function(){var t=this,e=t._self._c;return e("k-dialog",t._b({attrs:{size:"large","cancel-button":!1,"submit-button":!1},on:{cancel:function(e){return t.$emit("cancel")}}},"k-dialog",t.$attrs,!1),[e("k-code",{attrs:{language:t.language}},[t._v(t._s(t.code))])],1)}),[],!1,null,null,null,null).exports;const r=t({},(function(){var t=this._self._c;return t("div",{staticClass:"k-table"},[t("table",[t("tbody",[t("tr",[t("td",{staticClass:"k-table-cell",attrs:{"data-mobile":"true"}},[this._t("default")],2)])])])])}),[],!1,null,null,null,null).exports;Vue.component("k-lab-docs",n),Vue.component("k-lab-docs-drawer",l),Vue.component("k-lab-example",a),Vue.component("k-lab-examples",o),Vue.component("k-lab-form",s),Vue.component("k-lab-output-dialog",i),Vue.component("k-lab-table-cell",r);const c=t({props:{docs:String,examples:[Object,Array],file:String,github:String,props:[Object,Array],styles:String,tab:String,tabs:{type:Array,default:()=>[]},template:String,title:String},data:()=>({component:null}),watch:{tab:{handler(){this.createComponent()},immediate:!0}},mounted(){this.$panel.view.path.replace(/lab\//,"")},methods:{async createComponent(){if(!this.file)return;const{default:t}=await e((()=>import(this.$panel.url(this.file)+"?cache="+Date.now())),__vite__mapDeps([]),import.meta.url);t.template=this.template,this.component={...t},window.UiExamples=this.examples},openDocs(){this.$panel.drawer.open(`lab/docs/${this.docs}`)},async reloadComponent(){await this.$panel.view.refresh(),this.createComponent()},reloadDocs(){this.$panel.drawer.isOpen&&this.$panel.drawer.refresh()}}},(function(){var t=this,e=t._self._c;return e("k-panel-inside",{staticClass:"k-lab-playground-view",attrs:{"data-has-tabs":t.tabs.length>1}},[e("k-header",{scopedSlots:t._u([{key:"buttons",fn:function(){return[t.docs||t.github?e("k-button-group",[t.docs?e("k-button",{attrs:{text:t.docs,icon:"book",size:"sm",variant:"filled"},on:{click:t.openDocs}}):t._e(),t.github?e("k-button",{attrs:{link:t.github,icon:"github",size:"sm",target:"_blank",variant:"filled"}}):t._e()],1):t._e()]},proxy:!0}])},[t._v(" "+t._s(t.title)+" ")]),e("k-tabs",{attrs:{tab:t.tab,tabs:t.tabs}}),t.component?e(t.component,t._b({tag:"component"},"component",t.props,!1)):t._e(),t.styles?e("style",{tag:"component",domProps:{innerHTML:t._s(t.styles)}}):t._e()],1)}),[],!1,null,null,null,null).exports;export{c as default};
|
|
||||||
|
|||||||
9
kirby/panel/dist/js/index.min.js
vendored
9
kirby/panel/dist/js/index.min.js
vendored
File diff suppressed because one or more lines are too long
6
kirby/panel/dist/js/vendor.min.js
vendored
6
kirby/panel/dist/js/vendor.min.js
vendored
File diff suppressed because one or more lines are too long
28
kirby/panel/eslint.config.mjs
Normal file
28
kirby/panel/eslint.config.mjs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import js from "@eslint/js";
|
||||||
|
import prettier from "eslint-config-prettier";
|
||||||
|
import vue from "eslint-plugin-vue";
|
||||||
|
|
||||||
|
export default [
|
||||||
|
js.configs.recommended,
|
||||||
|
...vue.configs["flat/vue2-recommended"],
|
||||||
|
prettier,
|
||||||
|
{
|
||||||
|
rules: {
|
||||||
|
"vue/attributes-order": "error",
|
||||||
|
"vue/component-definition-name-casing": "off",
|
||||||
|
"vue/html-closing-bracket-newline": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
singleline: "never",
|
||||||
|
multiline: "always"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vue/multi-word-component-names": "off",
|
||||||
|
"vue/require-default-prop": "off",
|
||||||
|
"vue/require-prop-types": "error"
|
||||||
|
},
|
||||||
|
languageOptions: {
|
||||||
|
ecmaVersion: 2022
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$uri = urldecode(
|
// prepend a fake host to ensure that PHP can parse the path even if it contains weird stuff;
|
||||||
parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
|
// afterwards just take the plain path back out from the parsed result
|
||||||
);
|
$uri = parse_url('https://getkirby.com/' . ltrim($_SERVER['REQUEST_URI'], '/'), PHP_URL_PATH) ?? '/';
|
||||||
|
$uri = urldecode($uri);
|
||||||
|
|
||||||
// Emulate Apache's `mod_rewrite` functionality
|
// Emulate Apache's `mod_rewrite` functionality
|
||||||
if ($uri !== '/' && file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . $uri)) {
|
if ($uri !== '/' && file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . ltrim($uri, '/'))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,11 @@ class Model
|
|||||||
isset($schema['type']) === true &&
|
isset($schema['type']) === true &&
|
||||||
$this->data instanceof $schema['type'] === false
|
$this->data instanceof $schema['type'] === false
|
||||||
) {
|
) {
|
||||||
throw new Exception(sprintf('Invalid model type "%s" expected: "%s"', get_class($this->data), $schema['type']));
|
$class = match ($this->data) {
|
||||||
|
null => 'null',
|
||||||
|
default => get_class($this->data),
|
||||||
|
};
|
||||||
|
throw new Exception(sprintf('Invalid model type "%s" expected: "%s"', $class, $schema['type']));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ use Kirby\Toolkit\A;
|
|||||||
use Kirby\Toolkit\Config;
|
use Kirby\Toolkit\Config;
|
||||||
use Kirby\Toolkit\Controller;
|
use Kirby\Toolkit\Controller;
|
||||||
use Kirby\Toolkit\LazyValue;
|
use Kirby\Toolkit\LazyValue;
|
||||||
|
use Kirby\Toolkit\Locale;
|
||||||
use Kirby\Toolkit\Str;
|
use Kirby\Toolkit\Str;
|
||||||
use Kirby\Uuid\Uuid;
|
use Kirby\Uuid\Uuid;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
@@ -170,7 +171,7 @@ class App
|
|||||||
'roots' => $this->roots(),
|
'roots' => $this->roots(),
|
||||||
'site' => $this->site(),
|
'site' => $this->site(),
|
||||||
'urls' => $this->urls(),
|
'urls' => $this->urls(),
|
||||||
'version' => $this->version(),
|
'version' => static::version(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,7 +256,7 @@ class App
|
|||||||
foreach ($this->options as $key => $value) {
|
foreach ($this->options as $key => $value) {
|
||||||
// detect option keys with the `vendor.plugin.option` format
|
// detect option keys with the `vendor.plugin.option` format
|
||||||
if (preg_match('/^([a-z0-9-]+\.[a-z0-9-]+)\.(.*)$/i', $key, $matches) === 1) {
|
if (preg_match('/^([a-z0-9-]+\.[a-z0-9-]+)\.(.*)$/i', $key, $matches) === 1) {
|
||||||
list(, $plugin, $option) = $matches;
|
[, $plugin, $option] = $matches;
|
||||||
|
|
||||||
// verify that it's really a plugin option
|
// verify that it's really a plugin option
|
||||||
if (isset(static::$plugins[str_replace('.', '/', $plugin)]) !== true) {
|
if (isset(static::$plugins[str_replace('.', '/', $plugin)]) !== true) {
|
||||||
@@ -538,6 +539,14 @@ class App
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current language, if set by `static::setCurrentLanguage`
|
||||||
|
*/
|
||||||
|
public function currentLanguage(): Language|null
|
||||||
|
{
|
||||||
|
return $this->language ??= $this->defaultLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the default language object
|
* Returns the default language object
|
||||||
*/
|
*/
|
||||||
@@ -623,7 +632,7 @@ class App
|
|||||||
return Uuid::for($path, $parent?->files())->model();
|
return Uuid::for($path, $parent?->files())->model();
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent = $parent ?? $this->site();
|
$parent ??= $this->site();
|
||||||
$id = dirname($path);
|
$id = dirname($path);
|
||||||
$filename = basename($path);
|
$filename = basename($path);
|
||||||
|
|
||||||
@@ -879,7 +888,8 @@ class App
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current language
|
* Returns the language by code or shortcut (`default`, `current`).
|
||||||
|
* Passing `null` is an alias for passing `current`
|
||||||
*/
|
*/
|
||||||
public function language(string $code = null): Language|null
|
public function language(string $code = null): Language|null
|
||||||
{
|
{
|
||||||
@@ -887,19 +897,11 @@ class App
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($code === 'default') {
|
return match ($code ?? 'current') {
|
||||||
return $this->defaultLanguage();
|
'default' => $this->defaultLanguage(),
|
||||||
}
|
'current' => $this->currentLanguage(),
|
||||||
|
default => $this->languages()->find($code)
|
||||||
// if requesting a non-default language,
|
};
|
||||||
// find it but don't cache it
|
|
||||||
if ($code !== null) {
|
|
||||||
return $this->languages()->find($code);
|
|
||||||
}
|
|
||||||
|
|
||||||
// otherwise return language set by `AppTranslation::setCurrentLanguage`
|
|
||||||
// or default language
|
|
||||||
return $this->language ??= $this->defaultLanguage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1141,7 +1143,7 @@ class App
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent = $parent ?? $this->site();
|
$parent ??= $this->site();
|
||||||
|
|
||||||
if ($page = $parent->find($id)) {
|
if ($page = $parent->find($id)) {
|
||||||
/**
|
/**
|
||||||
@@ -1212,7 +1214,7 @@ class App
|
|||||||
* @internal
|
* @internal
|
||||||
* @throws \Kirby\Exception\NotFoundException if the home page cannot be found
|
* @throws \Kirby\Exception\NotFoundException if the home page cannot be found
|
||||||
*/
|
*/
|
||||||
public function resolve(string $path = null, string $language = null): mixed
|
public function resolve(string|null $path = null, string|null $language = null): mixed
|
||||||
{
|
{
|
||||||
// set the current translation
|
// set the current translation
|
||||||
$this->setCurrentTranslation($language);
|
$this->setCurrentTranslation($language);
|
||||||
@@ -1410,6 +1412,30 @@ class App
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load and set the current language if it exists
|
||||||
|
* Otherwise fall back to the default language
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function setCurrentLanguage(
|
||||||
|
string|null $languageCode = null
|
||||||
|
): Language|null {
|
||||||
|
if ($this->multilang() === false) {
|
||||||
|
Locale::set($this->option('locale', 'en_US.utf-8'));
|
||||||
|
return $this->language = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->language = $this->language($languageCode) ?? $this->defaultLanguage();
|
||||||
|
|
||||||
|
Locale::set($this->language->locale());
|
||||||
|
|
||||||
|
// add language slug rules to Str class
|
||||||
|
Str::$language = $this->language->rules();
|
||||||
|
|
||||||
|
return $this->language;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create your own set of languages
|
* Create your own set of languages
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -713,16 +713,24 @@ trait AppPlugins
|
|||||||
*/
|
*/
|
||||||
public static function plugin(
|
public static function plugin(
|
||||||
string $name,
|
string $name,
|
||||||
array $extends = null
|
array $extends = null,
|
||||||
|
array $info = [],
|
||||||
|
string|null $root = null,
|
||||||
|
string|null $version = null
|
||||||
): PLugin|null {
|
): PLugin|null {
|
||||||
if ($extends === null) {
|
if ($extends === null) {
|
||||||
return static::$plugins[$name] ?? null;
|
return static::$plugins[$name] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the correct root for the plugin
|
$plugin = new Plugin(
|
||||||
$extends['root'] = $extends['root'] ?? dirname(debug_backtrace()[0]['file']);
|
name: $name,
|
||||||
|
extends: $extends,
|
||||||
|
info: $info,
|
||||||
|
// TODO: Remove fallback to $extends in v7
|
||||||
|
root: $root ?? $extends['root'] ?? dirname(debug_backtrace()[0]['file']),
|
||||||
|
version: $version
|
||||||
|
);
|
||||||
|
|
||||||
$plugin = new Plugin($name, $extends);
|
|
||||||
$name = $plugin->name();
|
$name = $plugin->name();
|
||||||
|
|
||||||
if (isset(static::$plugins[$name]) === true) {
|
if (isset(static::$plugins[$name]) === true) {
|
||||||
@@ -792,7 +800,11 @@ trait AppPlugins
|
|||||||
// register as anonymous plugin (without actual extensions)
|
// register as anonymous plugin (without actual extensions)
|
||||||
// to be picked up by the Panel\Document class when
|
// to be picked up by the Panel\Document class when
|
||||||
// rendering the Panel view
|
// rendering the Panel view
|
||||||
static::plugin('plugins/' . $dirname, ['root' => $dir]);
|
static::plugin(
|
||||||
|
name: 'plugins/' . $dirname,
|
||||||
|
extends: [],
|
||||||
|
root: $dir
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
namespace Kirby\Cms;
|
namespace Kirby\Cms;
|
||||||
|
|
||||||
use Kirby\Toolkit\I18n;
|
use Kirby\Toolkit\I18n;
|
||||||
use Kirby\Toolkit\Locale;
|
|
||||||
use Kirby\Toolkit\Str;
|
use Kirby\Toolkit\Str;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -104,33 +103,6 @@ trait AppTranslations
|
|||||||
return $this->option('panel.language', $defaultCode);
|
return $this->option('panel.language', $defaultCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Load and set the current language if it exists
|
|
||||||
* Otherwise fall back to the default language
|
|
||||||
*
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
public function setCurrentLanguage(
|
|
||||||
string $languageCode = null
|
|
||||||
): Language|null {
|
|
||||||
if ($this->multilang() === false) {
|
|
||||||
Locale::set($this->option('locale', 'en_US.utf-8'));
|
|
||||||
return $this->language = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->language = $this->language($languageCode);
|
|
||||||
$this->language ??= $this->defaultLanguage();
|
|
||||||
|
|
||||||
if ($this->language) {
|
|
||||||
Locale::set($this->language->locale());
|
|
||||||
}
|
|
||||||
|
|
||||||
// add language slug rules to Str class
|
|
||||||
Str::$language = $this->language->rules();
|
|
||||||
|
|
||||||
return $this->language;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the current translation
|
* Set the current translation
|
||||||
*
|
*
|
||||||
@@ -148,7 +120,7 @@ trait AppTranslations
|
|||||||
*/
|
*/
|
||||||
public function translation(string|null $locale = null): Translation
|
public function translation(string|null $locale = null): Translation
|
||||||
{
|
{
|
||||||
$locale = $locale ?? I18n::locale();
|
$locale ??= I18n::locale();
|
||||||
$locale = basename($locale);
|
$locale = basename($locale);
|
||||||
|
|
||||||
// prefer loading them from the translations collection
|
// prefer loading them from the translations collection
|
||||||
|
|||||||
@@ -575,8 +575,8 @@ class Auth
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ensure that the category arrays are defined
|
// ensure that the category arrays are defined
|
||||||
$log['by-ip'] = $log['by-ip'] ?? [];
|
$log['by-ip'] ??= [];
|
||||||
$log['by-email'] = $log['by-email'] ?? [];
|
$log['by-email'] ??= [];
|
||||||
|
|
||||||
// remove all elements on the top level with different keys (old structure)
|
// remove all elements on the top level with different keys (old structure)
|
||||||
$log = array_intersect_key($log, array_flip(['by-ip', 'by-email']));
|
$log = array_intersect_key($log, array_flip(['by-ip', 'by-email']));
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class Blueprint
|
|||||||
unset($props['model']);
|
unset($props['model']);
|
||||||
|
|
||||||
// extend the blueprint in general
|
// extend the blueprint in general
|
||||||
$props = $this->extend($props);
|
$props = static::extend($props);
|
||||||
|
|
||||||
// apply any blueprint preset
|
// apply any blueprint preset
|
||||||
$props = $this->preset($props);
|
$props = $this->preset($props);
|
||||||
@@ -652,7 +652,7 @@ class Blueprint
|
|||||||
}
|
}
|
||||||
|
|
||||||
// extend options if possible
|
// extend options if possible
|
||||||
$options = $this->extend($options);
|
$options = static::extend($options);
|
||||||
|
|
||||||
foreach ($options as $key => $value) {
|
foreach ($options as $key => $value) {
|
||||||
$alias = $aliases[$key] ?? null;
|
$alias = $aliases[$key] ?? null;
|
||||||
@@ -686,7 +686,7 @@ class Blueprint
|
|||||||
}
|
}
|
||||||
|
|
||||||
// inject all section extensions
|
// inject all section extensions
|
||||||
$sectionProps = $this->extend($sectionProps);
|
$sectionProps = static::extend($sectionProps);
|
||||||
|
|
||||||
$sections[$sectionName] = $sectionProps = [
|
$sections[$sectionName] = $sectionProps = [
|
||||||
...$sectionProps,
|
...$sectionProps,
|
||||||
@@ -699,14 +699,14 @@ class Blueprint
|
|||||||
'name' => $sectionName,
|
'name' => $sectionName,
|
||||||
'label' => 'Invalid section type for section "' . $sectionName . '"',
|
'label' => 'Invalid section type for section "' . $sectionName . '"',
|
||||||
'type' => 'info',
|
'type' => 'info',
|
||||||
'text' => 'The following section types are available: ' . $this->helpList(array_keys(Section::$types))
|
'text' => 'The following section types are available: ' . static::helpList(array_keys(Section::$types))
|
||||||
];
|
];
|
||||||
} elseif (isset(Section::$types[$type]) === false) {
|
} elseif (isset(Section::$types[$type]) === false) {
|
||||||
$sections[$sectionName] = [
|
$sections[$sectionName] = [
|
||||||
'name' => $sectionName,
|
'name' => $sectionName,
|
||||||
'label' => 'Invalid section type ("' . $type . '")',
|
'label' => 'Invalid section type ("' . $type . '")',
|
||||||
'type' => 'info',
|
'type' => 'info',
|
||||||
'text' => 'The following section types are available: ' . $this->helpList(array_keys(Section::$types))
|
'text' => 'The following section types are available: ' . static::helpList(array_keys(Section::$types))
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -764,7 +764,7 @@ class Blueprint
|
|||||||
}
|
}
|
||||||
|
|
||||||
// inject all tab extensions
|
// inject all tab extensions
|
||||||
$tabProps = $this->extend($tabProps);
|
$tabProps = static::extend($tabProps);
|
||||||
|
|
||||||
// inject a preset if available
|
// inject a preset if available
|
||||||
$tabProps = $this->preset($tabProps);
|
$tabProps = $this->preset($tabProps);
|
||||||
|
|||||||
@@ -47,7 +47,9 @@ trait FileActions
|
|||||||
string|null $extension = null
|
string|null $extension = null
|
||||||
): static {
|
): static {
|
||||||
if ($sanitize === true) {
|
if ($sanitize === true) {
|
||||||
$name = F::safeName($name);
|
// sanitize the basename part only
|
||||||
|
// as the extension isn't included in $name
|
||||||
|
$name = F::safeBasename($name, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if no extension is passed, make sure to maintain current one
|
// if no extension is passed, make sure to maintain current one
|
||||||
@@ -139,8 +141,8 @@ trait FileActions
|
|||||||
|
|
||||||
// rename and/or resize the file if configured by new blueprint
|
// rename and/or resize the file if configured by new blueprint
|
||||||
$create = $file->blueprint()->create();
|
$create = $file->blueprint()->create();
|
||||||
|
$file = $file->manipulate($create);
|
||||||
$file = $file->changeExtension($file, $create['format'] ?? null);
|
$file = $file->changeExtension($file, $create['format'] ?? null);
|
||||||
$file->manipulate($create);
|
|
||||||
|
|
||||||
return $file;
|
return $file;
|
||||||
});
|
});
|
||||||
@@ -266,7 +268,6 @@ trait FileActions
|
|||||||
// we need to already rename it so that the correct file rules
|
// we need to already rename it so that the correct file rules
|
||||||
// are applied
|
// are applied
|
||||||
$create = $file->blueprint()->create();
|
$create = $file->blueprint()->create();
|
||||||
$file = $file->changeExtension($file, $create['format'] ?? null);
|
|
||||||
|
|
||||||
// run the hook
|
// run the hook
|
||||||
$arguments = compact('file', 'upload');
|
$arguments = compact('file', 'upload');
|
||||||
@@ -284,6 +285,7 @@ trait FileActions
|
|||||||
|
|
||||||
// resize the file on upload if configured
|
// resize the file on upload if configured
|
||||||
$file = $file->manipulate($create);
|
$file = $file->manipulate($create);
|
||||||
|
$file = $file->changeExtension($file, $create['format'] ?? null);
|
||||||
|
|
||||||
// store the content if necessary
|
// store the content if necessary
|
||||||
// (always create files in the default language)
|
// (always create files in the default language)
|
||||||
@@ -384,8 +386,8 @@ trait FileActions
|
|||||||
|
|
||||||
// apply the resizing/crop options from the blueprint
|
// apply the resizing/crop options from the blueprint
|
||||||
$create = $file->blueprint()->create();
|
$create = $file->blueprint()->create();
|
||||||
$file = $file->changeExtension($file, $create['format'] ?? null);
|
|
||||||
$file = $file->manipulate($create);
|
$file = $file->manipulate($create);
|
||||||
|
$file = $file->changeExtension($file, $create['format'] ?? null);
|
||||||
|
|
||||||
// return a fresh clone
|
// return a fresh clone
|
||||||
return $file->clone();
|
return $file->clone();
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class FileVersion
|
|||||||
|
|
||||||
// content fields
|
// content fields
|
||||||
if ($this->original() instanceof File) {
|
if ($this->original() instanceof File) {
|
||||||
return $this->original()->content()->get($method, $arguments);
|
return $this->original()->content()->get($method);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,14 +29,20 @@ class Helpers
|
|||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
public static $deprecations = [
|
public static $deprecations = [
|
||||||
|
// The internal `$model->contentFile*()` methods have been deprecated
|
||||||
|
'model-content-file' => true,
|
||||||
|
|
||||||
|
// Passing an `info` array inside the `extends` array
|
||||||
|
// has been deprecated. Pass the individual entries (e.g. root, version)
|
||||||
|
// directly as named arguments.
|
||||||
|
// TODO: switch to true in v6
|
||||||
|
'plugin-extends-root' => false,
|
||||||
|
|
||||||
// Passing a single space as value to `Xml::attr()` has been
|
// Passing a single space as value to `Xml::attr()` has been
|
||||||
// deprecated. In a future version, passing a single space won't
|
// deprecated. In a future version, passing a single space won't
|
||||||
// render an empty value anymore but a single space.
|
// render an empty value anymore but a single space.
|
||||||
// To render an empty value, please pass an empty string.
|
// To render an empty value, please pass an empty string.
|
||||||
'xml-attr-single-space' => true,
|
'xml-attr-single-space' => true,
|
||||||
|
|
||||||
// The internal `$model->contentFile*()` methods have been deprecated
|
|
||||||
'model-content-file' => true,
|
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class LanguageRules
|
|||||||
/**
|
/**
|
||||||
* Validates if the language can be updated
|
* Validates if the language can be updated
|
||||||
*/
|
*/
|
||||||
public static function update(Language $language)
|
public static function update(Language $language): void
|
||||||
{
|
{
|
||||||
static::validLanguageCode($language);
|
static::validLanguageCode($language);
|
||||||
static::validLanguageName($language);
|
static::validLanguageName($language);
|
||||||
|
|||||||
@@ -57,7 +57,12 @@ class Media
|
|||||||
}
|
}
|
||||||
|
|
||||||
// try to generate a thumb for the file
|
// try to generate a thumb for the file
|
||||||
|
try {
|
||||||
return static::thumb($model, $hash, $filename);
|
return static::thumb($model, $hash, $filename);
|
||||||
|
} catch (NotFoundException) {
|
||||||
|
// render the error page if there is no job for this filename
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ abstract class ModelWithContent implements Identifiable
|
|||||||
public static App $kirby;
|
public static App $kirby;
|
||||||
protected Site|null $site;
|
protected Site|null $site;
|
||||||
protected ContentStorage $storage;
|
protected ContentStorage $storage;
|
||||||
public Collection|null $translations;
|
public Collection|null $translations = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store values used to initilaize object
|
* Store values used to initilaize object
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class PagePicker extends Picker
|
|||||||
// remove once our implementation is better
|
// remove once our implementation is better
|
||||||
protected Pages|null $items = null;
|
protected Pages|null $items = null;
|
||||||
protected Pages|null $itemsForQuery = null;
|
protected Pages|null $itemsForQuery = null;
|
||||||
protected Page|Site|null $parent;
|
protected Page|Site|null $parent = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extends the basic defaults
|
* Extends the basic defaults
|
||||||
|
|||||||
@@ -26,12 +26,6 @@ use Throwable;
|
|||||||
class Plugin
|
class Plugin
|
||||||
{
|
{
|
||||||
protected PluginAssets $assets;
|
protected PluginAssets $assets;
|
||||||
protected array $extends;
|
|
||||||
protected string $name;
|
|
||||||
protected string $root;
|
|
||||||
|
|
||||||
// caches
|
|
||||||
protected array|null $info = null;
|
|
||||||
protected UpdateStatus|null $updateStatus = null;
|
protected UpdateStatus|null $updateStatus = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,16 +34,44 @@ class Plugin
|
|||||||
*
|
*
|
||||||
* @throws \Kirby\Exception\InvalidArgumentException If the plugin name has an invalid format
|
* @throws \Kirby\Exception\InvalidArgumentException If the plugin name has an invalid format
|
||||||
*/
|
*/
|
||||||
public function __construct(string $name, array $extends = [])
|
public function __construct(
|
||||||
{
|
protected string $name,
|
||||||
|
protected array $extends = [],
|
||||||
|
protected array $info = [],
|
||||||
|
protected string|null $root = null,
|
||||||
|
protected string|null $version = null,
|
||||||
|
) {
|
||||||
static::validateName($name);
|
static::validateName($name);
|
||||||
|
|
||||||
$this->name = $name;
|
// TODO: Remove in v7
|
||||||
$this->extends = $extends;
|
if ($root = $extends['root'] ?? null) {
|
||||||
$this->root = $extends['root'] ?? dirname(debug_backtrace()[0]['file']);
|
Helpers::deprecated('Plugin "' . $name . '": Passing the `root` inside the `extends` array has been deprecated. Pass it directly as named argument `root`.', 'plugin-extends-root');
|
||||||
$this->info = empty($extends['info']) === false && is_array($extends['info']) ? $extends['info'] : null;
|
$this->root ??= $root;
|
||||||
|
unset($this->extends['root']);
|
||||||
|
}
|
||||||
|
|
||||||
unset($this->extends['root'], $this->extends['info']);
|
$this->root ??= dirname(debug_backtrace()[0]['file']);
|
||||||
|
|
||||||
|
// TODO: Remove in v7
|
||||||
|
if ($info = $extends['info'] ?? null) {
|
||||||
|
Helpers::deprecated('Plugin "' . $name . '": Passing an `info` array inside the `extends` array has been deprecated. Pass the individual entries directly as named `info` argument.', 'plugin-extends-root');
|
||||||
|
|
||||||
|
if (empty($info) === false && is_array($info) === true) {
|
||||||
|
$this->info = [...$info, ...$this->info];
|
||||||
|
}
|
||||||
|
|
||||||
|
unset($this->extends['info']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// read composer.json and use as info fallback
|
||||||
|
try {
|
||||||
|
$info = Data::read($this->manifest());
|
||||||
|
} catch (Exception) {
|
||||||
|
// there is no manifest file or it is invalid
|
||||||
|
$info = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->info = [...$info, ...$this->info];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -117,24 +139,13 @@ class Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the raw data from composer.json
|
* Returns the info data (from composer.json)
|
||||||
*/
|
*/
|
||||||
public function info(): array
|
public function info(): array
|
||||||
{
|
{
|
||||||
if (is_array($this->info) === true) {
|
|
||||||
return $this->info;
|
return $this->info;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
$info = Data::read($this->manifest());
|
|
||||||
} catch (Exception) {
|
|
||||||
// there is no manifest file or it is invalid
|
|
||||||
$info = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->info = $info;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Current $kirby instance
|
* Current $kirby instance
|
||||||
*/
|
*/
|
||||||
@@ -295,17 +306,20 @@ class Plugin
|
|||||||
*/
|
*/
|
||||||
public function version(): string|null
|
public function version(): string|null
|
||||||
{
|
{
|
||||||
$composerName = $this->info()['name'] ?? null;
|
$name = $this->info()['name'] ?? null;
|
||||||
$version = $this->info()['version'] ?? null;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// if plugin doesn't have version key in composer.json file
|
// try to get version from "vendor/composer/installed.php",
|
||||||
// try to get version from "vendor/composer/installed.php"
|
// this is the most reliable source for the version
|
||||||
$version ??= InstalledVersions::getPrettyVersion($composerName);
|
$version = InstalledVersions::getPrettyVersion($name);
|
||||||
} catch (Throwable) {
|
} catch (Throwable) {
|
||||||
return null;
|
$version = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fallback to the version provided in the plugin's index.php: as named
|
||||||
|
// argument, entry in the info array or from the composer.json file
|
||||||
|
$version ??= $this->version ?? $this->info()['version'] ?? null;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
is_string($version) !== true ||
|
is_string($version) !== true ||
|
||||||
$version === '' ||
|
$version === '' ||
|
||||||
|
|||||||
@@ -162,6 +162,24 @@ class System
|
|||||||
->toString();
|
->toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array with relevant system information
|
||||||
|
* used for debugging
|
||||||
|
* @since 4.3.0
|
||||||
|
*/
|
||||||
|
public function info(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'kirby' => $this->app->version(),
|
||||||
|
'php' => phpversion(),
|
||||||
|
'server' => $this->serverSoftware(),
|
||||||
|
'license' => $this->license()->label(),
|
||||||
|
'languages' => $this->app->languages()->values(
|
||||||
|
fn ($lang) => $lang->code()
|
||||||
|
)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the most important folders
|
* Create the most important folders
|
||||||
* if they don't exist yet
|
* if they don't exist yet
|
||||||
@@ -379,32 +397,12 @@ class System
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check for a valid server environment
|
|
||||||
*/
|
|
||||||
public function server(): bool
|
|
||||||
{
|
|
||||||
return $this->serverSoftware() !== null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the detected server software
|
* Returns the detected server software
|
||||||
*/
|
*/
|
||||||
public function serverSoftware(): string|null
|
public function serverSoftware(): string
|
||||||
{
|
{
|
||||||
$servers = $this->app->option('servers', [
|
return $this->app->environment()->get('SERVER_SOFTWARE', '–');
|
||||||
'apache',
|
|
||||||
'caddy',
|
|
||||||
'litespeed',
|
|
||||||
'nginx',
|
|
||||||
'php'
|
|
||||||
]);
|
|
||||||
|
|
||||||
$software = $this->app->environment()->get('SERVER_SOFTWARE', '');
|
|
||||||
|
|
||||||
preg_match('!(' . implode('|', A::wrap($servers)) . ')!i', $software, $matches);
|
|
||||||
|
|
||||||
return $matches[0] ?? null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -427,8 +425,7 @@ class System
|
|||||||
'sessions' => $this->sessions(),
|
'sessions' => $this->sessions(),
|
||||||
'mbstring' => $this->mbstring(),
|
'mbstring' => $this->mbstring(),
|
||||||
'media' => $this->media(),
|
'media' => $this->media(),
|
||||||
'php' => $this->php(),
|
'php' => $this->php()
|
||||||
'server' => $this->server(),
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -392,6 +392,46 @@ class UpdateStatus
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds the maximum possible major update
|
||||||
|
* that is included with the current license
|
||||||
|
*
|
||||||
|
* @return string|null Version number of the update or
|
||||||
|
* `null` if no free update is possible
|
||||||
|
*/
|
||||||
|
protected function findMaximumFreeUpdate(): string|null
|
||||||
|
{
|
||||||
|
// get the timestamp of included updates
|
||||||
|
$renewal = $this->app->system()->license()->renewal();
|
||||||
|
|
||||||
|
if ($renewal === null || $this->data === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->data['versions'] ?? [] as $entry) {
|
||||||
|
$initialRelease = $entry['initialRelease'] ?? null;
|
||||||
|
$latest = $entry['latest'] ?? '';
|
||||||
|
|
||||||
|
// skip entries of irrelevant releases
|
||||||
|
if (
|
||||||
|
is_string($initialRelease) !== true ||
|
||||||
|
version_compare($latest, $this->currentVersion, '<=') === true
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$timestamp = strtotime($initialRelease);
|
||||||
|
|
||||||
|
// update is free if the initial release was before the
|
||||||
|
// license renewal date
|
||||||
|
if (is_int($timestamp) === true && $timestamp < $renewal) {
|
||||||
|
return $latest;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the minimum possible security update
|
* Finds the minimum possible security update
|
||||||
* to fix all known vulnerabilities
|
* to fix all known vulnerabilities
|
||||||
@@ -655,7 +695,7 @@ class UpdateStatus
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if free updates are possible from the current version
|
// check if updates within the same major version are possible
|
||||||
$latest = $versionEntry['latest'] ?? null;
|
$latest = $versionEntry['latest'] ?? null;
|
||||||
if (is_string($latest) === true && $latest !== $this->currentVersion) {
|
if (is_string($latest) === true && $latest !== $this->currentVersion) {
|
||||||
return $this->targetData = [
|
return $this->targetData = [
|
||||||
@@ -665,6 +705,19 @@ class UpdateStatus
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if the license includes updates to a newer major version
|
||||||
|
if ($version = $this->findMaximumFreeUpdate()) {
|
||||||
|
// extract the part before the first dot
|
||||||
|
// to find the major release page URL
|
||||||
|
preg_match('/^(\w+)\./', $version, $matches);
|
||||||
|
|
||||||
|
return $this->targetData = [
|
||||||
|
'status' => 'update',
|
||||||
|
'url' => $this->urlFor($matches[1] . '.0', 'changes'),
|
||||||
|
'version' => $version
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
// no free update is possible, but we are not on the latest version,
|
// no free update is possible, but we are not on the latest version,
|
||||||
// so the overall latest version must be an upgrade
|
// so the overall latest version must be an upgrade
|
||||||
return $this->targetData = [
|
return $this->targetData = [
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ abstract class Sql
|
|||||||
public function columnName(string $table, string $column, bool $enforceQualified = false): string|null
|
public function columnName(string $table, string $column, bool $enforceQualified = false): string|null
|
||||||
{
|
{
|
||||||
// ensure we have clean $table and $column values without qualified identifiers
|
// ensure we have clean $table and $column values without qualified identifiers
|
||||||
list($table, $column) = $this->splitIdentifier($table, $column);
|
[$table, $column] = $this->splitIdentifier($table, $column);
|
||||||
|
|
||||||
// combine the identifiers again
|
// combine the identifiers again
|
||||||
if ($this->database->validateColumn($table, $column) === true) {
|
if ($this->database->validateColumn($table, $column) === true) {
|
||||||
@@ -624,7 +624,7 @@ abstract class Sql
|
|||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
foreach ($columns as $column) {
|
foreach ($columns as $column) {
|
||||||
list($table, $columnPart) = $this->splitIdentifier($table, $column);
|
[$table, $columnPart] = $this->splitIdentifier($table, $column);
|
||||||
|
|
||||||
if ($this->validateColumn($table, $columnPart) === true) {
|
if ($this->validateColumn($table, $columnPart) === true) {
|
||||||
$result[] = $this->combineIdentifier($table, $columnPart);
|
$result[] = $this->combineIdentifier($table, $columnPart);
|
||||||
|
|||||||
@@ -580,7 +580,7 @@ class F
|
|||||||
}
|
}
|
||||||
|
|
||||||
// the math magic
|
// the math magic
|
||||||
$size = round($size / pow(1024, ($unit = floor(log($size, 1024)))), 2);
|
$size = round($size / 1024 ** ($unit = floor(log($size, 1024))), 2);
|
||||||
|
|
||||||
// format the number if requested
|
// format the number if requested
|
||||||
if ($locale !== false) {
|
if ($locale !== false) {
|
||||||
@@ -756,20 +756,32 @@ class F
|
|||||||
* Sanitize a file's name (without extension)
|
* Sanitize a file's name (without extension)
|
||||||
* @since 4.0.0
|
* @since 4.0.0
|
||||||
*/
|
*/
|
||||||
public static function safeBasename(string $string): string
|
public static function safeBasename(
|
||||||
{
|
string $string,
|
||||||
$name = static::name($string);
|
bool $extract = true
|
||||||
return Str::slug($name, '-', 'a-z0-9@._-');
|
): string {
|
||||||
|
// extract only the name part from whole filename string
|
||||||
|
if ($extract === true) {
|
||||||
|
$string = static::name($string);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Str::slug($string, '-', 'a-z0-9@._-');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sanitize a file's extension
|
* Sanitize a file's extension
|
||||||
* @since 4.0.0
|
* @since 4.0.0
|
||||||
*/
|
*/
|
||||||
public static function safeExtension(string $string): string
|
public static function safeExtension(
|
||||||
{
|
string $string,
|
||||||
$extension = static::extension($string);
|
bool $extract = true
|
||||||
return Str::slug($extension);
|
): string {
|
||||||
|
// extract only the extension part from whole filename string
|
||||||
|
if ($extract === true) {
|
||||||
|
$string = static::extension($string);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Str::slug($string);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class Query
|
|||||||
/**
|
/**
|
||||||
* The Query data array
|
* The Query data array
|
||||||
*/
|
*/
|
||||||
protected array|null $data;
|
protected array|null $data = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Query object.
|
* Creates a new Query object.
|
||||||
|
|||||||
@@ -59,13 +59,15 @@ class QrCode
|
|||||||
* @param int|null $size Image width/height in pixels, defaults to a size per module of 4x4
|
* @param int|null $size Image width/height in pixels, defaults to a size per module of 4x4
|
||||||
* @param string $color Foreground color in hex format
|
* @param string $color Foreground color in hex format
|
||||||
* @param string $back Background color in hex format
|
* @param string $back Background color in hex format
|
||||||
|
* @param int $border Border size in number of modules
|
||||||
*/
|
*/
|
||||||
public function toDataUri(
|
public function toDataUri(
|
||||||
int|null $size = null,
|
int|null $size = null,
|
||||||
string $color = '#000000',
|
string $color = '#000000',
|
||||||
string $back = '#ffffff'
|
string $back = '#ffffff',
|
||||||
|
int $border = 4
|
||||||
): string {
|
): string {
|
||||||
$image = $this->toImage($size, $color, $back);
|
$image = $this->toImage($size, $color, $back, $border);
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
imagepng($image);
|
imagepng($image);
|
||||||
@@ -82,14 +84,16 @@ class QrCode
|
|||||||
* @param int|null $size Image width/height in pixels, defaults to a size per module of 4x4
|
* @param int|null $size Image width/height in pixels, defaults to a size per module of 4x4
|
||||||
* @param string $color Foreground color in hex format
|
* @param string $color Foreground color in hex format
|
||||||
* @param string $back Background color in hex format
|
* @param string $back Background color in hex format
|
||||||
|
* @param int $border Border size in number of modules
|
||||||
*/
|
*/
|
||||||
public function toImage(
|
public function toImage(
|
||||||
int|null $size = null,
|
int|null $size = null,
|
||||||
string $color = '#000000',
|
string $color = '#000000',
|
||||||
string $back = '#ffffff'
|
string $back = '#ffffff',
|
||||||
|
int $border = 4
|
||||||
): GdImage {
|
): GdImage {
|
||||||
// get code and size measurements
|
// get code and size measurements
|
||||||
$code = $this->encode();
|
$code = $this->encode($border);
|
||||||
[$width, $height] = $this->measure($code);
|
[$width, $height] = $this->measure($code);
|
||||||
$size ??= ceil($width * 4);
|
$size ??= ceil($width * 4);
|
||||||
$ws = $size / $width;
|
$ws = $size / $width;
|
||||||
@@ -132,13 +136,15 @@ class QrCode
|
|||||||
* @param int|string|null $size Optional CSS width of the `<svg>` element
|
* @param int|string|null $size Optional CSS width of the `<svg>` element
|
||||||
* @param string $color Foreground color in hex format
|
* @param string $color Foreground color in hex format
|
||||||
* @param string $back Background color in hex format
|
* @param string $back Background color in hex format
|
||||||
|
* @param int $border Border size in number of modules
|
||||||
*/
|
*/
|
||||||
public function toSvg(
|
public function toSvg(
|
||||||
int|string|null $size = null,
|
int|string|null $size = null,
|
||||||
string $color = '#000000',
|
string $color = '#000000',
|
||||||
string $back = '#ffffff'
|
string $back = '#ffffff',
|
||||||
|
int $border = 4
|
||||||
): string {
|
): string {
|
||||||
$code = $this->encode();
|
$code = $this->encode($border);
|
||||||
[$vbw, $vbh] = $this->measure($code);
|
[$vbw, $vbh] = $this->measure($code);
|
||||||
|
|
||||||
$modules = $this->eachModuleGroup(
|
$modules = $this->eachModuleGroup(
|
||||||
@@ -167,15 +173,17 @@ class QrCode
|
|||||||
* @param int|string|null $size Optional image width/height in pixels (defaults to a size per module of 4x4) or CSS width of the `<svg>` element
|
* @param int|string|null $size Optional image width/height in pixels (defaults to a size per module of 4x4) or CSS width of the `<svg>` element
|
||||||
* @param string $color Foreground color in hex format
|
* @param string $color Foreground color in hex format
|
||||||
* @param string $back Background color in hex format
|
* @param string $back Background color in hex format
|
||||||
|
* @param int $border Border size in number of modules
|
||||||
*/
|
*/
|
||||||
public function write(
|
public function write(
|
||||||
string $file,
|
string $file,
|
||||||
int|string|null $size = null,
|
int|string|null $size = null,
|
||||||
string $color = '#000000',
|
string $color = '#000000',
|
||||||
string $back = '#ffffff'
|
string $back = '#ffffff',
|
||||||
|
int $border = 4
|
||||||
): void {
|
): void {
|
||||||
$format = F::extension($file);
|
$format = F::extension($file);
|
||||||
$args = [$size, $color, $back];
|
$args = [$size, $color, $back, $border];
|
||||||
|
|
||||||
match ($format) {
|
match ($format) {
|
||||||
'gif' => imagegif($this->toImage(...$args), $file),
|
'gif' => imagegif($this->toImage(...$args), $file),
|
||||||
@@ -395,7 +403,7 @@ class QrCode
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function encode(): array
|
protected function encode(int $q = 4): array
|
||||||
{
|
{
|
||||||
[$data, $version, $ecl, $ec] = $this->encodeData();
|
[$data, $version, $ecl, $ec] = $this->encodeData();
|
||||||
$data = $this->encodeErrorCorrection($data, $ec, $version);
|
$data = $this->encodeErrorCorrection($data, $ec, $version);
|
||||||
@@ -404,7 +412,7 @@ class QrCode
|
|||||||
$mtx = $this->finalizeMatrix($mtx, $size, $ecl, $mask, $version);
|
$mtx = $this->finalizeMatrix($mtx, $size, $ecl, $mask, $version);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'q' => [4, 4, 4, 4],
|
'q' => [$q, $q, $q, $q],
|
||||||
'size' => [$size, $size],
|
'size' => [$size, $size],
|
||||||
'bits' => $mtx
|
'bits' => $mtx
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -56,13 +56,11 @@ class Assets
|
|||||||
*/
|
*/
|
||||||
public function css(): array
|
public function css(): array
|
||||||
{
|
{
|
||||||
$css = A::merge(
|
$css = [
|
||||||
[
|
|
||||||
'index' => $this->url . '/css/style.min.css',
|
'index' => $this->url . '/css/style.min.css',
|
||||||
'plugins' => $this->plugins->url('css')
|
'plugins' => $this->plugins->url('css'),
|
||||||
],
|
...$this->custom('panel.css')
|
||||||
$this->custom('panel.css')
|
];
|
||||||
);
|
|
||||||
|
|
||||||
// during dev mode we do not need to load
|
// during dev mode we do not need to load
|
||||||
// the general stylesheet (as styling will be inlined)
|
// the general stylesheet (as styling will be inlined)
|
||||||
@@ -213,8 +211,7 @@ class Assets
|
|||||||
*/
|
*/
|
||||||
public function js(): array
|
public function js(): array
|
||||||
{
|
{
|
||||||
$js = A::merge(
|
$js = [
|
||||||
[
|
|
||||||
'vue' => [
|
'vue' => [
|
||||||
'nonce' => $this->nonce,
|
'nonce' => $this->nonce,
|
||||||
'src' => $this->url . '/js/vue.min.js'
|
'src' => $this->url . '/js/vue.min.js'
|
||||||
@@ -233,44 +230,36 @@ class Assets
|
|||||||
'nonce' => $this->nonce,
|
'nonce' => $this->nonce,
|
||||||
'src' => $this->plugins->url('js'),
|
'src' => $this->plugins->url('js'),
|
||||||
'defer' => true
|
'defer' => true
|
||||||
]
|
|
||||||
],
|
],
|
||||||
A::map($this->custom('panel.js'), fn ($src) => [
|
...A::map($this->custom('panel.js'), fn ($src) => [
|
||||||
'nonce' => $this->nonce,
|
'nonce' => $this->nonce,
|
||||||
'src' => $src,
|
'src' => $src,
|
||||||
'type' => 'module'
|
'type' => 'module'
|
||||||
]),
|
]),
|
||||||
[
|
|
||||||
'index' => [
|
'index' => [
|
||||||
'nonce' => $this->nonce,
|
'nonce' => $this->nonce,
|
||||||
'src' => $this->url . '/js/index.min.js',
|
'src' => $this->url . '/js/index.min.js',
|
||||||
'type' => 'module'
|
'type' => 'module'
|
||||||
],
|
],
|
||||||
]
|
];
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// during dev mode, add vite client and adapt
|
// during dev mode, add vite client and adapt
|
||||||
// path to `index.js` - vendor does not need
|
// path to `index.js` - vendor does not need
|
||||||
// to be loaded in dev mode
|
// to be loaded in dev mode
|
||||||
if ($this->dev === true) {
|
if ($this->dev === true) {
|
||||||
|
// load the non-minified index.js, remove vendor script and
|
||||||
|
// development version of Vue
|
||||||
|
$js['vendor']['src'] = null;
|
||||||
|
$js['index']['src'] = $this->url . '/src/index.js';
|
||||||
|
$js['vue']['src'] = $this->url . '/node_modules/vue/dist/vue.js';
|
||||||
|
|
||||||
|
// add vite dev client
|
||||||
$js['vite'] = [
|
$js['vite'] = [
|
||||||
'nonce' => $this->nonce,
|
'nonce' => $this->nonce,
|
||||||
'src' => $this->url . '/@vite/client',
|
'src' => $this->url . '/@vite/client',
|
||||||
'type' => 'module'
|
'type' => 'module'
|
||||||
];
|
];
|
||||||
|
|
||||||
$js['index'] = [
|
|
||||||
'nonce' => $this->nonce,
|
|
||||||
'src' => $this->url . '/src/index.js',
|
|
||||||
'type' => 'module'
|
|
||||||
];
|
|
||||||
|
|
||||||
// load the development version of Vue
|
|
||||||
$js['vue']['src'] = $this->url . '/node_modules/vue/dist/vue.js';
|
|
||||||
|
|
||||||
// remove the vendor script
|
|
||||||
$js['vendor']['src'] = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return array_filter($js, fn ($js) => empty($js['src']) === false);
|
return array_filter($js, fn ($js) => empty($js['src']) === false);
|
||||||
|
|||||||
@@ -219,9 +219,11 @@ class Example
|
|||||||
$tail = $matches[2][$key];
|
$tail = $matches[2][$key];
|
||||||
$code = $matches[3][$key];
|
$code = $matches[3][$key];
|
||||||
|
|
||||||
$scriptId = trim(preg_replace_callback('!script="(.*?)"!', function ($match) {
|
$scriptId = trim(preg_replace_callback(
|
||||||
return trim($match[1]);
|
'!script="(.*?)"!',
|
||||||
}, $tail));
|
fn ($match) => trim($match[1]),
|
||||||
|
$tail
|
||||||
|
));
|
||||||
|
|
||||||
$scriptBlock = $scripts[$scriptId] ?? null;
|
$scriptBlock = $scripts[$scriptId] ?? null;
|
||||||
|
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ class Sessions
|
|||||||
* @internal
|
* @internal
|
||||||
* @param \Kirby\Session\Session $session Session instance to push to the cache
|
* @param \Kirby\Session\Session $session Session instance to push to the cache
|
||||||
*/
|
*/
|
||||||
public function updateCache(Session $session)
|
public function updateCache(Session $session): void
|
||||||
{
|
{
|
||||||
$this->cache[$session->token()] = $session;
|
$this->cache[$session->token()] = $session;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ class KirbyTag
|
|||||||
}
|
}
|
||||||
|
|
||||||
$pos = strpos($tag, ':');
|
$pos = strpos($tag, ':');
|
||||||
$type = trim(substr($tag, 0, $pos ? $pos : null));
|
$type = trim(substr($tag, 0, $pos ?: null));
|
||||||
$type = strtolower($type);
|
$type = strtolower($type);
|
||||||
$attr = static::$types[$type]['attr'] ?? [];
|
$attr = static::$types[$type]['attr'] ?? [];
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class Component
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->attrs = $attrs;
|
$this->attrs = $attrs;
|
||||||
$this->options = $options = $this->setup($type);
|
$this->options = $options = static::setup($type);
|
||||||
$this->methods = $methods = $options['methods'] ?? [];
|
$this->methods = $methods = $options['methods'] ?? [];
|
||||||
|
|
||||||
foreach ($attrs as $attrName => $attrValue) {
|
foreach ($attrs as $attrName => $attrValue) {
|
||||||
|
|||||||
@@ -464,7 +464,7 @@ class Dom
|
|||||||
$namespaceUri = null;
|
$namespaceUri = null;
|
||||||
$itemLocal = $item;
|
$itemLocal = $item;
|
||||||
if (Str::contains($item, ':') === true) {
|
if (Str::contains($item, ':') === true) {
|
||||||
list($namespaceName, $itemLocal) = explode(':', $item);
|
[$namespaceName, $itemLocal] = explode(':', $item);
|
||||||
$namespaceUri = $allowedNamespaces[$namespaceName] ?? null;
|
$namespaceUri = $allowedNamespaces[$namespaceName] ?? null;
|
||||||
} else {
|
} else {
|
||||||
// list items without namespace are from the default namespace
|
// list items without namespace are from the default namespace
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class Escape
|
|||||||
/**
|
/**
|
||||||
* The internal singleton escaper instance
|
* The internal singleton escaper instance
|
||||||
*/
|
*/
|
||||||
protected static Escaper|null $escaper;
|
protected static Escaper|null $escaper = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Escape common HTML attributes data
|
* Escape common HTML attributes data
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class Html extends Xml
|
|||||||
/**
|
/**
|
||||||
* An internal store for an HTML entities translation table
|
* An internal store for an HTML entities translation table
|
||||||
*/
|
*/
|
||||||
public static array|null $entities;
|
public static array|null $entities = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of HTML tags that can be used inline
|
* List of HTML tags that can be used inline
|
||||||
|
|||||||
@@ -388,8 +388,11 @@ class Str
|
|||||||
for ($i = 0; $i < static::length($string); $i++) {
|
for ($i = 0; $i < static::length($string); $i++) {
|
||||||
$char = static::substr($string, $i, 1);
|
$char = static::substr($string, $i, 1);
|
||||||
$char = mb_convert_encoding($char, 'UCS-4BE', 'UTF-8');
|
$char = mb_convert_encoding($char, 'UCS-4BE', 'UTF-8');
|
||||||
list(, $code) = unpack('N', $char);
|
[, $code] = unpack('N', $char);
|
||||||
$encoded .= rand(1, 2) === 1 ? '&#' . $code . ';' : '&#x' . dechex($code) . ';';
|
$encoded .= match (random_int(1, 2)) {
|
||||||
|
1 => '&#' . $code . ';',
|
||||||
|
2 => '&#x' . dechex($code) . ';'
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return $encoded;
|
return $encoded;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class BlockUuid extends FieldUuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\Block|null
|
* @var \Kirby\Cms\Block|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts content field to a Blocks collection
|
* Converts content field to a Blocks collection
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ abstract class FieldUuid extends Uuid
|
|||||||
$parent = Uuid::for($value['parent'])->model();
|
$parent = Uuid::for($value['parent'])->model();
|
||||||
|
|
||||||
if ($field = $parent?->content()->get($value['field'])) {
|
if ($field = $parent?->content()->get($value['field'])) {
|
||||||
return $this->fieldToCollection($field)->get($value['id']);
|
return static::fieldToCollection($field)->get($value['id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class FileUuid extends ModelUuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\File|null
|
* @var \Kirby\Cms\File|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks up UUID in cache and resolves to file object;
|
* Looks up UUID in cache and resolves to file object;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ abstract class ModelUuid extends Uuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\ModelWithContent|null
|
* @var \Kirby\Cms\ModelWithContent|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks up UUID in local and global index
|
* Looks up UUID in local and global index
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class PageUuid extends ModelUuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\Page|null
|
* @var \Kirby\Cms\Page|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks up UUID in cache and resolves
|
* Looks up UUID in cache and resolves
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class SiteUuid extends Uuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\Site|null
|
* @var \Kirby\Cms\Site|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns empty string since
|
* Returns empty string since
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class StructureUuid extends FieldUuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\StructureObject|null
|
* @var \Kirby\Cms\StructureObject|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts content field to a Structure collection
|
* Converts content field to a Structure collection
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class UserUuid extends Uuid
|
|||||||
/**
|
/**
|
||||||
* @var \Kirby\Cms\User|null
|
* @var \Kirby\Cms\User|null
|
||||||
*/
|
*/
|
||||||
public Identifiable|null $model;
|
public Identifiable|null $model = null;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the user ID
|
* Returns the user ID
|
||||||
|
|||||||
5
kirby/vendor/bin/yaml-lint.bat
vendored
Normal file
5
kirby/vendor/bin/yaml-lint.bat
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
setlocal DISABLEDELAYEDEXPANSION
|
||||||
|
SET BIN_TARGET=%~dp0/yaml-lint
|
||||||
|
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
|
||||||
|
php "%BIN_TARGET%" %*
|
||||||
@@ -116,15 +116,33 @@ class SimpleImage
|
|||||||
*/
|
*/
|
||||||
public function __destruct()
|
public function __destruct()
|
||||||
{
|
{
|
||||||
if ($this->image instanceof GdImage) {
|
$this->reset();
|
||||||
imagedestroy($this->image);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Helper functions
|
// Helper functions
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the SimpleImage object has loaded an image.
|
||||||
|
*/
|
||||||
|
public function hasImage(): bool
|
||||||
|
{
|
||||||
|
return $this->image instanceof GdImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroys the image resource.
|
||||||
|
*/
|
||||||
|
public function reset(): static
|
||||||
|
{
|
||||||
|
if ($this->hasImage()) {
|
||||||
|
imagedestroy($this->image);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set flag value.
|
* Set flag value.
|
||||||
*
|
*
|
||||||
@@ -313,7 +331,7 @@ class SimpleImage
|
|||||||
*
|
*
|
||||||
* @throws Exception Thrown when WEBP support is not enabled or unsupported format.
|
* @throws Exception Thrown when WEBP support is not enabled or unsupported format.
|
||||||
*/
|
*/
|
||||||
protected function generate(string $mimeType = null, array|int $options = []): array
|
public function generate(string $mimeType = null, array|int $options = 100): array
|
||||||
{
|
{
|
||||||
// Format defaults to the original mime type
|
// Format defaults to the original mime type
|
||||||
$mimeType = $mimeType ?: $this->mimeType;
|
$mimeType = $mimeType ?: $this->mimeType;
|
||||||
|
|||||||
44
kirby/vendor/composer/installed.json
vendored
44
kirby/vendor/composer/installed.json
vendored
@@ -64,17 +64,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "claviska/simpleimage",
|
"name": "claviska/simpleimage",
|
||||||
"version": "4.1.0",
|
"version": "4.2.0",
|
||||||
"version_normalized": "4.1.0.0",
|
"version_normalized": "4.2.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/claviska/SimpleImage.git",
|
"url": "https://github.com/claviska/SimpleImage.git",
|
||||||
"reference": "1dcb9c785c44960890970d26e25c437a2a252bbf"
|
"reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/1dcb9c785c44960890970d26e25c437a2a252bbf",
|
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/dfbe53c01dae8467468ef2b817c09b786a7839d2",
|
||||||
"reference": "1dcb9c785c44960890970d26e25c437a2a252bbf",
|
"reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
"laravel/pint": "^1.5",
|
"laravel/pint": "^1.5",
|
||||||
"phpstan/phpstan": "^1.10"
|
"phpstan/phpstan": "^1.10"
|
||||||
},
|
},
|
||||||
"time": "2024-03-04T15:41:11+00:00",
|
"time": "2024-04-15T16:07:16+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
"description": "A PHP class that makes working with images as simple as possible.",
|
"description": "A PHP class that makes working with images as simple as possible.",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/claviska/SimpleImage/issues",
|
"issues": "https://github.com/claviska/SimpleImage/issues",
|
||||||
"source": "https://github.com/claviska/SimpleImage/tree/4.1.0"
|
"source": "https://github.com/claviska/SimpleImage/tree/4.2.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -651,27 +651,27 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
"version": "v3.4.0",
|
"version": "v3.5.0",
|
||||||
"version_normalized": "3.4.0.0",
|
"version_normalized": "3.5.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
|
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
|
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
|
"reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.1"
|
"php": ">=8.1"
|
||||||
},
|
},
|
||||||
"time": "2023-05-23T14:45:45+00:00",
|
"time": "2024-04-18T09:32:20+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "3.4-dev"
|
"dev-main": "3.5-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/contracts",
|
"name": "symfony/contracts",
|
||||||
@@ -701,7 +701,7 @@
|
|||||||
"description": "A generic function and convention to trigger deprecation notices",
|
"description": "A generic function and convention to trigger deprecation notices",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
|
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1057,17 +1057,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/yaml",
|
"name": "symfony/yaml",
|
||||||
"version": "v6.4.3",
|
"version": "v6.4.8",
|
||||||
"version_normalized": "6.4.3.0",
|
"version_normalized": "6.4.8.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/yaml.git",
|
"url": "https://github.com/symfony/yaml.git",
|
||||||
"reference": "d75715985f0f94f978e3a8fa42533e10db921b90"
|
"reference": "52903de178d542850f6f341ba92995d3d63e60c9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90",
|
"url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9",
|
||||||
"reference": "d75715985f0f94f978e3a8fa42533e10db921b90",
|
"reference": "52903de178d542850f6f341ba92995d3d63e60c9",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1081,7 +1081,7 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/console": "^5.4|^6.0|^7.0"
|
"symfony/console": "^5.4|^6.0|^7.0"
|
||||||
},
|
},
|
||||||
"time": "2024-01-23T14:51:35+00:00",
|
"time": "2024-05-31T14:49:08+00:00",
|
||||||
"bin": [
|
"bin": [
|
||||||
"Resources/bin/yaml-lint"
|
"Resources/bin/yaml-lint"
|
||||||
],
|
],
|
||||||
@@ -1112,7 +1112,7 @@
|
|||||||
"description": "Loads and dumps YAML files",
|
"description": "Loads and dumps YAML files",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/yaml/tree/v6.4.3"
|
"source": "https://github.com/symfony/yaml/tree/v6.4.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|||||||
26
kirby/vendor/composer/installed.php
vendored
26
kirby/vendor/composer/installed.php
vendored
@@ -1,8 +1,8 @@
|
|||||||
<?php return array(
|
<?php return array(
|
||||||
'root' => array(
|
'root' => array(
|
||||||
'name' => 'getkirby/cms',
|
'name' => 'getkirby/cms',
|
||||||
'pretty_version' => '4.2.0',
|
'pretty_version' => '4.3.0',
|
||||||
'version' => '4.2.0.0',
|
'version' => '4.3.0.0',
|
||||||
'reference' => null,
|
'reference' => null,
|
||||||
'type' => 'kirby-cms',
|
'type' => 'kirby-cms',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
@@ -20,9 +20,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'claviska/simpleimage' => array(
|
'claviska/simpleimage' => array(
|
||||||
'pretty_version' => '4.1.0',
|
'pretty_version' => '4.2.0',
|
||||||
'version' => '4.1.0.0',
|
'version' => '4.2.0.0',
|
||||||
'reference' => '1dcb9c785c44960890970d26e25c437a2a252bbf',
|
'reference' => 'dfbe53c01dae8467468ef2b817c09b786a7839d2',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../claviska/simpleimage',
|
'install_path' => __DIR__ . '/../claviska/simpleimage',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -47,8 +47,8 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'getkirby/cms' => array(
|
'getkirby/cms' => array(
|
||||||
'pretty_version' => '4.2.0',
|
'pretty_version' => '4.3.0',
|
||||||
'version' => '4.2.0.0',
|
'version' => '4.3.0.0',
|
||||||
'reference' => null,
|
'reference' => null,
|
||||||
'type' => 'kirby-cms',
|
'type' => 'kirby-cms',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
@@ -116,9 +116,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/deprecation-contracts' => array(
|
'symfony/deprecation-contracts' => array(
|
||||||
'pretty_version' => 'v3.4.0',
|
'pretty_version' => 'v3.5.0',
|
||||||
'version' => '3.4.0.0',
|
'version' => '3.5.0.0',
|
||||||
'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf',
|
'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -167,9 +167,9 @@
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
'symfony/yaml' => array(
|
'symfony/yaml' => array(
|
||||||
'pretty_version' => 'v6.4.3',
|
'pretty_version' => 'v6.4.8',
|
||||||
'version' => '6.4.3.0',
|
'version' => '6.4.8.0',
|
||||||
'reference' => 'd75715985f0f94f978e3a8fa42533e10db921b90',
|
'reference' => '52903de178d542850f6f341ba92995d3d63e60c9',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/yaml',
|
'install_path' => __DIR__ . '/../symfony/yaml',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "3.4-dev"
|
"dev-main": "3.5-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/contracts",
|
"name": "symfony/contracts",
|
||||||
|
|||||||
4
kirby/vendor/symfony/yaml/Parser.php
vendored
4
kirby/vendor/symfony/yaml/Parser.php
vendored
@@ -638,12 +638,12 @@ class Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->isCurrentLineBlank()) {
|
if ($this->isCurrentLineBlank()) {
|
||||||
$data[] = substr($this->currentLine, $newIndent);
|
$data[] = substr($this->currentLine, $newIndent ?? 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($indent >= $newIndent) {
|
if ($indent >= $newIndent) {
|
||||||
$data[] = substr($this->currentLine, $newIndent);
|
$data[] = substr($this->currentLine, $newIndent ?? 0);
|
||||||
} elseif ($this->isCurrentLineComment()) {
|
} elseif ($this->isCurrentLineComment()) {
|
||||||
$data[] = $this->currentLine;
|
$data[] = $this->currentLine;
|
||||||
} elseif (0 == $indent) {
|
} elseif (0 == $indent) {
|
||||||
|
|||||||
Reference in New Issue
Block a user