Update Kirby and dependencies

This commit is contained in:
Paul Nicoué 2022-08-31 16:08:03 +02:00
parent 07150a0011
commit c7c5d615a4
451 changed files with 67540 additions and 63740 deletions

197
composer.lock generated
View file

@ -53,16 +53,16 @@
},
{
"name": "claviska/simpleimage",
"version": "3.6.5",
"version": "3.7.0",
"source": {
"type": "git",
"url": "https://github.com/claviska/SimpleImage.git",
"reference": "00f90662686696b9b7157dbb176183aabe89700f"
"reference": "abd15ced313c7b8041d7d73d8d2398b4f2510cf1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/00f90662686696b9b7157dbb176183aabe89700f",
"reference": "00f90662686696b9b7157dbb176183aabe89700f",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/abd15ced313c7b8041d7d73d8d2398b4f2510cf1",
"reference": "abd15ced313c7b8041d7d73d8d2398b4f2510cf1",
"shasum": ""
},
"require": {
@ -90,7 +90,7 @@
"description": "A PHP class that makes working with images as simple as possible.",
"support": {
"issues": "https://github.com/claviska/SimpleImage/issues",
"source": "https://github.com/claviska/SimpleImage/tree/3.6.5"
"source": "https://github.com/claviska/SimpleImage/tree/3.7.0"
},
"funding": [
{
@ -98,7 +98,7 @@
"type": "github"
}
],
"time": "2021-12-01T12:42:55+00:00"
"time": "2022-07-05T13:18:44+00:00"
},
{
"name": "filp/whoops",
@ -173,35 +173,53 @@
},
{
"name": "getkirby/cms",
"version": "3.6.3",
"version": "3.7.5",
"source": {
"type": "git",
"url": "https://github.com/getkirby/kirby.git",
"reference": "6b20fa11843f57cd9a1e611bc9e8e8a91b855156"
"reference": "021561f7444896fc9917eccb52768a6e715e9a74"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/getkirby/kirby/zipball/6b20fa11843f57cd9a1e611bc9e8e8a91b855156",
"reference": "6b20fa11843f57cd9a1e611bc9e8e8a91b855156",
"url": "https://api.github.com/repos/getkirby/kirby/zipball/021561f7444896fc9917eccb52768a6e715e9a74",
"reference": "021561f7444896fc9917eccb52768a6e715e9a74",
"shasum": ""
},
"require": {
"claviska/simpleimage": "3.6.5",
"claviska/simpleimage": "3.7.0",
"ext-ctype": "*",
"ext-curl": "*",
"ext-dom": "*",
"ext-filter": "*",
"ext-hash": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-simplexml": "*",
"filp/whoops": "2.14.5",
"getkirby/composer-installer": "^1.2.1",
"laminas/laminas-escaper": "2.9.0",
"laminas/laminas-escaper": "2.10.0",
"michelf/php-smartypants": "1.8.1",
"php": ">=7.4.0 <8.2.0",
"phpmailer/phpmailer": "6.5.4",
"psr/log": "1.1.4",
"symfony/polyfill-intl-idn": "1.24.0",
"symfony/polyfill-mbstring": "1.24.0"
"phpmailer/phpmailer": "6.6.4",
"symfony/polyfill-intl-idn": "1.26.0",
"symfony/polyfill-mbstring": "1.26.0"
},
"replace": {
"symfony/polyfill-php72": "*"
},
"suggest": {
"ext-PDO": "Support for using databases",
"ext-apcu": "Support for the Apcu cache driver",
"ext-exif": "Support for exif information from images",
"ext-fileinfo": "Improved mime type detection for files",
"ext-intl": "Improved i18n number formatting",
"ext-memcached": "Support for the Memcached cache driver",
"ext-zip": "Support for ZIP archive file functions",
"ext-zlib": "Sanitization and validation for svgz files"
},
"type": "kirby-cms",
"extra": {
"unused": [
@ -250,7 +268,7 @@
"type": "custom"
}
],
"time": "2022-03-22T09:36:50+00:00"
"time": "2022-08-30T18:27:48+00:00"
},
{
"name": "getkirby/composer-installer",
@ -338,33 +356,33 @@
},
{
"name": "laminas/laminas-escaper",
"version": "2.9.0",
"version": "2.10.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-escaper.git",
"reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
"reference": "58af67282db37d24e584a837a94ee55b9c7552be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
"reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be",
"reference": "58af67282db37d24e584a837a94ee55b9c7552be",
"shasum": ""
},
"require": {
"php": "^7.3 || ~8.0.0 || ~8.1.0"
"ext-ctype": "*",
"ext-mbstring": "*",
"php": "^7.4 || ~8.0.0 || ~8.1.0"
},
"conflict": {
"zendframework/zend-escaper": "*"
},
"require-dev": {
"infection/infection": "^0.26.6",
"laminas/laminas-coding-standard": "~2.3.0",
"phpunit/phpunit": "^9.3",
"psalm/plugin-phpunit": "^0.12.2",
"vimeo/psalm": "^3.16"
},
"suggest": {
"ext-iconv": "*",
"ext-mbstring": "*"
"maglnet/composer-require-checker": "^3.8.0",
"phpunit/phpunit": "^9.5.18",
"psalm/plugin-phpunit": "^0.16.1",
"vimeo/psalm": "^4.22.0"
},
"type": "library",
"autoload": {
@ -396,7 +414,7 @@
"type": "community_bridge"
}
],
"time": "2021-09-02T17:10:53+00:00"
"time": "2022-03-08T20:15:36+00:00"
},
{
"name": "league/color-extractor",
@ -512,21 +530,24 @@
},
{
"name": "mullema/k3-image-clip",
"version": "3.0.0",
"version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/mullema/k3-image-clip.git",
"reference": "ac6a4a461ae8972557da24755005a3937a275b0c"
"reference": "c2e01f2ceb9eb5bc56895177359d398a3a2dbcf4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mullema/k3-image-clip/zipball/ac6a4a461ae8972557da24755005a3937a275b0c",
"reference": "ac6a4a461ae8972557da24755005a3937a275b0c",
"url": "https://api.github.com/repos/mullema/k3-image-clip/zipball/c2e01f2ceb9eb5bc56895177359d398a3a2dbcf4",
"reference": "c2e01f2ceb9eb5bc56895177359d398a3a2dbcf4",
"shasum": ""
},
"require": {
"getkirby/composer-installer": "^1.2"
},
"conflict": {
"getkirby/cms": "<3.6"
},
"type": "kirby-plugin",
"extra": {
"installer-name": "k3-image-clip"
@ -545,22 +566,22 @@
"description": "Visual image clip for Kirby 3",
"support": {
"issues": "https://github.com/mullema/k3-image-clip/issues",
"source": "https://github.com/mullema/k3-image-clip/tree/3.0.0"
"source": "https://github.com/mullema/k3-image-clip/tree/3.1.0"
},
"time": "2021-12-05T21:47:42+00:00"
"time": "2022-06-26T08:59:46+00:00"
},
{
"name": "phpmailer/phpmailer",
"version": "v6.5.4",
"version": "v6.6.4",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285"
"reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"shasum": ""
},
"require": {
@ -572,8 +593,8 @@
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0",
"php-parallel-lint/php-parallel-lint": "^1.3.1",
"php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.3.2",
"phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.2",
@ -617,7 +638,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4"
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4"
},
"funding": [
{
@ -625,34 +646,34 @@
"type": "github"
}
],
"time": "2022-02-17T08:19:04+00:00"
"time": "2022-08-22T09:22:00+00:00"
},
{
"name": "psr/log",
"version": "1.1.4",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "d49695b909c3b7628b6289db5479a1c204601f11"
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
"reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
"php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
"Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -673,9 +694,9 @@
"psr-3"
],
"support": {
"source": "https://github.com/php-fig/log/tree/1.1.4"
"source": "https://github.com/php-fig/log/tree/3.0.0"
},
"time": "2021-05-03T11:20:27+00:00"
"time": "2021-07-14T16:46:02+00:00"
},
{
"name": "sylvainjule/matomo",
@ -717,16 +738,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"shasum": ""
},
"require": {
@ -741,7 +762,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -779,7 +800,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
},
"funding": [
{
@ -795,20 +816,20 @@
"type": "tidelift"
}
],
"time": "2021-10-20T20:35:02+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44"
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": ""
},
"require": {
@ -822,7 +843,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -866,7 +887,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
},
"funding": [
{
@ -882,20 +903,20 @@
"type": "tidelift"
}
],
"time": "2021-09-14T14:02:44+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": ""
},
"require": {
@ -907,7 +928,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -950,7 +971,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
},
"funding": [
{
@ -966,20 +987,20 @@
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": ""
},
"require": {
@ -994,7 +1015,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -1033,7 +1054,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
},
"funding": [
{
@ -1049,20 +1070,20 @@
"type": "tidelift"
}
],
"time": "2021-11-30T18:21:41+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "twig/twig",
"version": "v3.3.8",
"version": "v3.4.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "972d8604a92b7054828b539f2febb0211dd5945c"
"reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c",
"reference": "972d8604a92b7054828b539f2febb0211dd5945c",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
"reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
"shasum": ""
},
"require": {
@ -1077,7 +1098,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.3-dev"
"dev-master": "3.4-dev"
}
},
"autoload": {
@ -1113,7 +1134,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.3.8"
"source": "https://github.com/twigphp/Twig/tree/v3.4.2"
},
"funding": [
{
@ -1125,7 +1146,7 @@
"type": "tidelift"
}
],
"time": "2022-02-04T06:59:48+00:00"
"time": "2022-08-12T06:47:24+00:00"
}
],
"packages-dev": [],

View file

@ -6,10 +6,19 @@
root = true
[*.php]
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = tab
indent_size = 2
trim_trailing_whitespace = true
indent_style = space
[*.php]
indent_size = 4
insert_final_newline = true
[*.yml]
indent_style = space
[*.md]
trim_trailing_whitespace = false

View file

@ -1,6 +0,0 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}

View file

@ -1,4 +0,0 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}

View file

@ -28,7 +28,7 @@ Please post all bug reports in our [issue tracker](https://github.com/getkirby/k
If you have ideas for a feature or enhancement for Kirby, please use our [feedback platform](https://feedback.getkirby.com).
**Translations, bug fixes, code contributions ...**
Read about how to contribute to the development in our [contributing guide](/.github/CONTRIBUTING.md).
Read about how to contribute to the development in our [contributing guide](/CONTRIBUTING.md).

View file

@ -12,7 +12,6 @@ if (
}
if (is_file($autoloader = dirname(__DIR__) . '/vendor/autoload.php')) {
/**
* Always prefer a site-wide Composer autoloader
* if it exists, it means that the user has probably
@ -20,13 +19,11 @@ if (is_file($autoloader = dirname(__DIR__) . '/vendor/autoload.php')) {
*/
include $autoloader;
} elseif (is_file($autoloader = __DIR__ . '/vendor/autoload.php')) {
/**
* Fall back to the local autoloader if that exists
*/
include $autoloader;
} else {
/**
* If neither one exists, don't bother searching;
* it's a custom directory setup and the users need to

View file

@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
## Certificate data from Mozilla as of: Fri Mar 18 12:29:51 2022 GMT
## Certificate data from Mozilla as of: Tue Jul 19 03:12:06 2022 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@ -14,7 +14,7 @@
## Just configure this file as the SSLCACertificateFile.
##
## Conversion done with mk-ca-bundle.pl version 1.29.
## SHA256: 187ef9dc231135324fe78830cf4462f1ecdeab3e6c9d5e38d623391e88dc5d3c
## SHA256: 9bf3799611fb58197f61d45e71ce3dc19f30e7dd73731915872ce5108a7bb066
##
@ -993,30 +993,6 @@ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
-----END CERTIFICATE-----
Hellenic Academic and Research Institutions RootCA 2011
=======================================================
-----BEGIN CERTIFICATE-----
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
-----END CERTIFICATE-----
Actalis Authentication Root CA
==============================
-----BEGIN CERTIFICATE-----
@ -3279,3 +3255,206 @@ PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C
r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh
4rsUecrNIdSUtUlD
-----END CERTIFICATE-----
Telia Root CA v2
================
-----BEGIN CERTIFICATE-----
MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT
AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2
MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK
DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7
6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q
9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn
pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl
tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW
5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr
RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E
BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4
M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau
BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W
xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ
8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5
tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H
eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C
y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC
QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15
h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70
sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9
xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ
raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc=
-----END CERTIFICATE-----
D-TRUST BR Root CA 1 2020
=========================
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy
MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7
dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu
QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t
MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom
AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87
-----END CERTIFICATE-----
D-TRUST EV Root CA 1 2020
=========================
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy
MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8
ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ
raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL
MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR
AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW
-----END CERTIFICATE-----
DigiCert TLS ECC P384 Root G5
=============================
-----BEGIN CERTIFICATE-----
MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4
NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx
FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg
Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd
lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj
n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB
/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds
Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx
AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA==
-----END CERTIFICATE-----
DigiCert TLS RSA4096 Root G5
============================
-----BEGIN CERTIFICATE-----
MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG
EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0
MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2
IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8
7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU
AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces
tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa
zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV
DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q
TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy
z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/
MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk
wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E
FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw
GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN
lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN
MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/
u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G
OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh
47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU
FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ
yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP
bEtoL8pU9ozaMv7Da4M/OMZ+
-----END CERTIFICATE-----
Certainly Root R1
=================
-----BEGIN CERTIFICATE-----
MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE
BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN
MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy
dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O
5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl
8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl
DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI
XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN
KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ
AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb
rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1
VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS
p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz
HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d
8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v
MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB
GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+
gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH
JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7
fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw
x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S
X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8=
-----END CERTIFICATE-----
Certainly Root E1
=================
-----BEGIN CERTIFICATE-----
MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV
UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0
MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu
bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4
fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9
YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E
AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8
rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
-----END CERTIFICATE-----
E-Tugra Global Root CA RSA v3
=============================
-----BEGIN CERTIFICATE-----
MIIF8zCCA9ugAwIBAgIUDU3FzRYilZYIfrgLfxUGNPt5EDQwDQYJKoZIhvcNAQELBQAwgYAxCzAJ
BgNVBAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVncmEgRUJHIEEuUy4xHTAb
BgNVBAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYDVQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290
IENBIFJTQSB2MzAeFw0yMDAzMTgwOTA3MTdaFw00NTAzMTIwOTA3MTdaMIGAMQswCQYDVQQGEwJU
UjEPMA0GA1UEBxMGQW5rYXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRF
LVR1Z3JhIFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBSU0Eg
djMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCiZvCJt3J77gnJY9LTQ91ew6aEOErx
jYG7FL1H6EAX8z3DeEVypi6Q3po61CBxyryfHUuXCscxuj7X/iWpKo429NEvx7epXTPcMHD4QGxL
sqYxYdE0PD0xesevxKenhOGXpOhL9hd87jwH7eKKV9y2+/hDJVDqJ4GohryPUkqWOmAalrv9c/SF
/YP9f4RtNGx/ardLAQO/rWm31zLZ9Vdq6YaCPqVmMbMWPcLzJmAy01IesGykNz709a/r4d+ABs8q
QedmCeFLl+d3vSFtKbZnwy1+7dZ5ZdHPOrbRsV5WYVB6Ws5OUDGAA5hH5+QYfERaxqSzO8bGwzrw
bMOLyKSRBfP12baqBqG3q+Sx6iEUXIOk/P+2UNOMEiaZdnDpwA+mdPy70Bt4znKS4iicvObpCdg6
04nmvi533wEKb5b25Y08TVJ2Glbhc34XrD2tbKNSEhhw5oBOM/J+JjKsBY04pOZ2PJ8QaQ5tndLB
eSBrW88zjdGUdjXnXVXHt6woq0bM5zshtQoK5EpZ3IE1S0SVEgpnpaH/WwAH0sDM+T/8nzPyAPiM
bIedBi3x7+PmBvrFZhNb/FAHnnGGstpvdDDPk1Po3CLW3iAfYY2jLqN4MpBs3KwytQXk9TwzDdbg
h3cXTJ2w2AmoDVf3RIXwyAS+XF1a4xeOVGNpf0l0ZAWMowIDAQABo2MwYTAPBgNVHRMBAf8EBTAD
AQH/MB8GA1UdIwQYMBaAFLK0ruYt9ybVqnUtdkvAG1Mh0EjvMB0GA1UdDgQWBBSytK7mLfcm1ap1
LXZLwBtTIdBI7zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAImocn+M684uGMQQ
gC0QDP/7FM0E4BQ8Tpr7nym/Ip5XuYJzEmMmtcyQ6dIqKe6cLcwsmb5FJ+Sxce3kOJUxQfJ9emN4
38o2Fi+CiJ+8EUdPdk3ILY7r3y18Tjvarvbj2l0Upq7ohUSdBm6O++96SmotKygY/r+QLHUWnw/q
ln0F7psTpURs+APQ3SPh/QMSEgj0GDSz4DcLdxEBSL9htLX4GdnLTeqjjO/98Aa1bZL0SmFQhO3s
SdPkvmjmLuMxC1QLGpLWgti2omU8ZgT5Vdps+9u1FGZNlIM7zR6mK7L+d0CGq+ffCsn99t2HVhjY
sCxVYJb6CH5SkPVLpi6HfMsg2wY+oF0Dd32iPBMbKaITVaA9FCKvb7jQmhty3QUBjYZgv6Rn7rWl
DdF/5horYmbDB7rnoEgcOMPpRfunf/ztAmgayncSd6YAVSgU7NbHEqIbZULpkejLPoeJVF3Zr52X
nGnnCv8PWniLYypMfUeUP95L6VPQMPHF9p5J3zugkaOj/s1YzOrfr28oO6Bpm4/srK4rVJ2bBLFH
IK+WEj5jlB0E5y67hscMmoi/dkfv97ALl2bSRM9gUgfh1SxKOidhd8rXj+eHDjD/DLsE4mHDosiX
YY60MGo8bcIHX0pzLz/5FooBZu+6kcpSV3uu1OYP3Qt6f4ueJiDPO++BcYNZ
-----END CERTIFICATE-----
E-Tugra Global Root CA ECC v3
=============================
-----BEGIN CERTIFICATE-----
MIICpTCCAiqgAwIBAgIUJkYZdzHhT28oNt45UYbm1JeIIsEwCgYIKoZIzj0EAwMwgYAxCzAJBgNV
BAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVncmEgRUJHIEEuUy4xHTAbBgNV
BAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYDVQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENB
IEVDQyB2MzAeFw0yMDAzMTgwOTQ2NThaFw00NTAzMTIwOTQ2NThaMIGAMQswCQYDVQQGEwJUUjEP
MA0GA1UEBxMGQW5rYXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1
Z3JhIFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBFQ0MgdjMw
djAQBgcqhkjOPQIBBgUrgQQAIgNiAASOmCm/xxAeJ9urA8woLNheSBkQKczLWYHMjLiSF4mDKpL2
w6QdTGLVn9agRtwcvHbB40fQWxPa56WzZkjnIZpKT4YKfWzqTTKACrJ6CZtpS5iB4i7sAnCWH/31
Rs7K3IKjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU/4Ixcj75xGZsrTie0bBRiKWQ
zPUwHQYDVR0OBBYEFP+CMXI++cRmbK04ntGwUYilkMz1MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO
PQQDAwNpADBmAjEA5gVYaWHlLcoNy/EZCL3W/VGSGn5jVASQkZo1kTmZ+gepZpO6yGjUij/67W4W
Aie3AjEA3VoXK3YdZUKWpqxdinlW2Iob35reX8dQj7FbcQwm32pAAOwzkSFxvmjkI6TZraE3
-----END CERTIFICATE-----

View file

@ -3,7 +3,7 @@
"description": "The Kirby 3 core",
"license": "proprietary",
"type": "kirby-cms",
"version": "3.6.3",
"version": "3.7.5",
"keywords": [
"kirby",
"cms",
@ -23,24 +23,41 @@
"forum": "https://forum.getkirby.com",
"source": "https://github.com/getkirby/kirby"
},
"_comment": "TODO: psr/log is not used by Kirby; drop pinned version when Kirby no longer supports PHP 7",
"require": {
"php": ">=7.4.0 <8.2.0",
"ext-SimpleXML": "*",
"ext-ctype": "*",
"ext-curl": "*",
"ext-dom": "*",
"ext-filter": "*",
"ext-hash": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"claviska/simpleimage": "3.6.5",
"ext-openssl": "*",
"claviska/simpleimage": "3.7.0",
"filp/whoops": "2.14.5",
"getkirby/composer-installer": "^1.2.1",
"laminas/laminas-escaper": "2.9.0",
"laminas/laminas-escaper": "2.10.0",
"michelf/php-smartypants": "1.8.1",
"phpmailer/phpmailer": "6.5.4",
"psr/log": "1.1.4",
"symfony/polyfill-intl-idn": "1.24.0",
"symfony/polyfill-mbstring": "1.24.0"
"phpmailer/phpmailer": "6.6.4",
"symfony/polyfill-intl-idn": "1.26.0",
"symfony/polyfill-mbstring": "1.26.0"
},
"replace": {
"symfony/polyfill-php72": "*"
},
"suggest": {
"ext-PDO": "Support for using databases",
"ext-apcu": "Support for the Apcu cache driver",
"ext-exif": "Support for exif information from images",
"ext-fileinfo": "Improved mime type detection for files",
"ext-intl": "Improved i18n number formatting",
"ext-memcached": "Support for the Memcached cache driver",
"ext-zip": "Support for ZIP archive file functions",
"ext-zlib": "Sanitization and validation for svgz files"
},
"autoload": {
"psr-4": {
"Kirby\\": "src/"
@ -58,6 +75,9 @@
"getkirby/composer-installer": true
},
"optimize-autoloader": true,
"platform": {
"php": "7.4.0"
},
"platform-check": false
},
"extra": {

114
kirby/composer.lock generated
View file

@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d4cf75084dae428fe0ab54124637d51f",
"content-hash": "fb087946fb5ac5910e25a4d263905d99",
"packages": [
{
"name": "claviska/simpleimage",
"version": "3.6.5",
"version": "3.7.0",
"source": {
"type": "git",
"url": "https://github.com/claviska/SimpleImage.git",
"reference": "00f90662686696b9b7157dbb176183aabe89700f"
"reference": "abd15ced313c7b8041d7d73d8d2398b4f2510cf1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/00f90662686696b9b7157dbb176183aabe89700f",
"reference": "00f90662686696b9b7157dbb176183aabe89700f",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/abd15ced313c7b8041d7d73d8d2398b4f2510cf1",
"reference": "abd15ced313c7b8041d7d73d8d2398b4f2510cf1",
"shasum": ""
},
"require": {
@ -45,7 +45,7 @@
"description": "A PHP class that makes working with images as simple as possible.",
"support": {
"issues": "https://github.com/claviska/SimpleImage/issues",
"source": "https://github.com/claviska/SimpleImage/tree/3.6.5"
"source": "https://github.com/claviska/SimpleImage/tree/3.7.0"
},
"funding": [
{
@ -53,7 +53,7 @@
"type": "github"
}
],
"time": "2021-12-01T12:42:55+00:00"
"time": "2022-07-05T13:18:44+00:00"
},
{
"name": "filp/whoops",
@ -175,33 +175,33 @@
},
{
"name": "laminas/laminas-escaper",
"version": "2.9.0",
"version": "2.10.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-escaper.git",
"reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
"reference": "58af67282db37d24e584a837a94ee55b9c7552be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
"reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be",
"reference": "58af67282db37d24e584a837a94ee55b9c7552be",
"shasum": ""
},
"require": {
"php": "^7.3 || ~8.0.0 || ~8.1.0"
"ext-ctype": "*",
"ext-mbstring": "*",
"php": "^7.4 || ~8.0.0 || ~8.1.0"
},
"conflict": {
"zendframework/zend-escaper": "*"
},
"require-dev": {
"infection/infection": "^0.26.6",
"laminas/laminas-coding-standard": "~2.3.0",
"phpunit/phpunit": "^9.3",
"psalm/plugin-phpunit": "^0.12.2",
"vimeo/psalm": "^3.16"
},
"suggest": {
"ext-iconv": "*",
"ext-mbstring": "*"
"maglnet/composer-require-checker": "^3.8.0",
"phpunit/phpunit": "^9.5.18",
"psalm/plugin-phpunit": "^0.16.1",
"vimeo/psalm": "^4.22.0"
},
"type": "library",
"autoload": {
@ -233,7 +233,7 @@
"type": "community_bridge"
}
],
"time": "2021-09-02T17:10:53+00:00"
"time": "2022-03-08T20:15:36+00:00"
},
{
"name": "league/color-extractor",
@ -349,16 +349,16 @@
},
{
"name": "phpmailer/phpmailer",
"version": "v6.5.4",
"version": "v6.6.4",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285"
"reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285",
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"reference": "a94fdebaea6bd17f51be0c2373ab80d3d681269b",
"shasum": ""
},
"require": {
@ -370,8 +370,8 @@
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0",
"php-parallel-lint/php-parallel-lint": "^1.3.1",
"php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.3.2",
"phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.2",
@ -415,7 +415,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4"
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.4"
},
"funding": [
{
@ -423,7 +423,7 @@
"type": "github"
}
],
"time": "2022-02-17T08:19:04+00:00"
"time": "2022-08-22T09:22:00+00:00"
},
{
"name": "psr/log",
@ -477,16 +477,16 @@
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44"
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": ""
},
"require": {
@ -500,7 +500,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -544,7 +544,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
},
"funding": [
{
@ -560,20 +560,20 @@
"type": "tidelift"
}
],
"time": "2021-09-14T14:02:44+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.25.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": ""
},
"require": {
@ -585,7 +585,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -628,7 +628,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
},
"funding": [
{
@ -644,20 +644,20 @@
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": ""
},
"require": {
@ -672,7 +672,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@ -711,7 +711,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
},
"funding": [
{
@ -727,7 +727,7 @@
"type": "tidelift"
}
],
"time": "2021-11-30T18:21:41+00:00"
"time": "2022-05-24T11:49:31+00:00"
}
],
"packages-dev": [],
@ -738,9 +738,21 @@
"prefer-lowest": false,
"platform": {
"php": ">=7.4.0 <8.2.0",
"ext-simplexml": "*",
"ext-ctype": "*",
"ext-mbstring": "*"
"ext-curl": "*",
"ext-dom": "*",
"ext-filter": "*",
"ext-hash": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-openssl": "*"
},
"platform-dev": [],
"plugin-api-version": "2.1.0"
"platform-overrides": {
"php": "7.4.0"
},
"plugin-api-version": "2.3.0"
}

View file

@ -7,6 +7,7 @@ return [
'file' => 'Kirby\Cms\File',
'files' => 'Kirby\Cms\Files',
'find' => 'Kirby\Cms\Find',
'helpers' => 'Kirby\Cms\Helpers',
'html' => 'Kirby\Cms\Html',
'kirby' => 'Kirby\Cms\App',
'page' => 'Kirby\Cms\Page',

View file

@ -29,13 +29,6 @@ return [
},
'niceSize' => fn (File $file) => $file->niceSize(),
'options' => fn (File $file) => $file->panel()->options(),
'panelIcon' => function (File $file) {
// TODO: remove in 3.7.0
// @codeCoverageIgnoreStart
deprecated('The API field file.panelIcon has been deprecated and will be removed in 3.7.0. Use file.panelImage instead');
return $file->panel()->image();
// @codeCoverageIgnoreEnd
},
'panelImage' => fn (File $file) => $file->panel()->image(),
'panelUrl' => fn (File $file) => $file->panel()->url(true),
'prev' => fn (File $file) => $file->prev(),

View file

@ -1,5 +1,6 @@
<?php
use Kirby\Cms\Helpers;
use Kirby\Cms\Page;
use Kirby\Form\Form;
@ -22,11 +23,12 @@ return [
'isSortable' => fn (Page $page) => $page->isSortable(),
/**
* @deprecated 3.6.0
* @todo Throw deprecated warning in 3.7.0
* @todo Remove in 3.8.0
* @codeCoverageIgnore
*/
'next' => function (Page $page) {
Helpers::deprecated('The API field page.next has been deprecated and will be removed in 3.8.0.');
return $page
->nextAll()
->filter('intendedTemplate', $page->intendedTemplate())
@ -36,24 +38,17 @@ return [
},
'num' => fn (Page $page) => $page->num(),
'options' => fn (Page $page) => $page->panel()->options(['preview']),
/**
* @todo Remove in 3.7.0
* @codeCoverageIgnore
*/
'panelIcon' => function (Page $page) {
deprecated('The API field page.panelIcon has been deprecated and will be removed in 3.7.0. Use page.panelImage instead');
return $page->panel()->image();
},
'panelImage' => fn (Page $page) => $page->panel()->image(),
'parent' => fn (Page $page) => $page->parent(),
'parents' => fn (Page $page) => $page->parents()->flip(),
/**
* @deprecated 3.6.0
* @todo Throw deprecated warning in 3.7.0
* @todo Remove in 3.8.0
* @codeCoverageIgnore
*/
'prev' => function (Page $page) {
Helpers::deprecated('The API field page.prev has been deprecated and will be removed in 3.8.0.');
return $page
->prevAll()
->filter('intendedTemplate', $page->intendedTemplate())

View file

@ -5,29 +5,6 @@
* Content Lock Routes
*/
return [
[
'pattern' => '(:all)/lock',
'method' => 'GET',
/**
* @deprecated 3.6.0
* @todo Remove in 3.7.0
*/
'action' => function (string $path) {
deprecated('The `GET (:all)/lock` API endpoint has been deprecated and will be removed in 3.7.0');
if ($lock = $this->parent($path)->lock()) {
return [
'supported' => true,
'locked' => $lock->get()
];
}
return [
'supported' => false,
'locked' => null
];
}
],
[
'pattern' => '(:all)/lock',
'method' => 'PATCH',
@ -46,30 +23,6 @@ return [
}
}
],
[
'pattern' => '(:all)/unlock',
'method' => 'GET',
/**
* @deprecated 3.6.0
* @todo Remove in 3.7.0
*/
'action' => function (string $path) {
deprecated('The `GET (:all)/unlock` API endpoint has been deprecated and will be removed in 3.7.0');
if ($lock = $this->parent($path)->lock()) {
return [
'supported' => true,
'unlocked' => $lock->isUnlocked()
];
}
return [
'supported' => false,
'unlocked' => null
];
}
],
[
'pattern' => '(:all)/unlock',
'method' => 'PATCH',

View file

@ -1,5 +1,6 @@
<?php
/**
* Page Routes
*/
@ -34,21 +35,9 @@ return [
}
],
[
'pattern' => [
'pages/(:any)/blueprints',
/**
* @deprecated
* @todo remove in 3.7.0
*/
'pages/(:any)/children/blueprints',
],
'pattern' => 'pages/(:any)/blueprints',
'method' => 'GET',
'action' => function (string $id) {
// @codeCoverageIgnoreStart
if ($this->route->pattern() === 'pages/([a-zA-Z0-9\.\-_%= \+\@\(\)]+)/children/blueprints') {
deprecated('`GET pages/(:any)/children/blueprints` API endpoint has been deprecated and will be removed in 3.7.0. Use `GET pages/(:any)/blueprints` instead');
}
// @codeCoverageIgnoreEnd
return $this->page($id)->blueprints($this->requestQuery('section'));
}
],

View file

@ -8,13 +8,15 @@ return [
'pattern' => 'roles',
'method' => 'GET',
'action' => function () {
switch (get('canBe')) {
$kirby = $this->kirby();
switch ($kirby->request()->get('canBe')) {
case 'changed':
return $this->kirby()->roles()->canBeChanged();
return $kirby->roles()->canBeChanged();
case 'created':
return $this->kirby()->roles()->canBeCreated();
return $kirby->roles()->canBeCreated();
default:
return $this->kirby()->roles();
return $kirby->roles();
}
}
],

View file

@ -1,5 +1,6 @@
<?php
/**
* Site Routes
*/
@ -47,21 +48,9 @@ return [
}
],
[
'pattern' => [
'site/blueprints',
/**
* @deprecated
* @todo remove in 3.7.0
*/
'site/children/blueprints',
],
'pattern' => 'site/blueprints',
'method' => 'GET',
'action' => function () {
// @codeCoverageIgnoreStart
if ($this->route->pattern() === 'site/children/blueprints') {
deprecated('`GET site/children/blueprints` API endpoint has been deprecated and will be removed in 3.7.0. Use `GET site/blueprints` instead.');
}
// @codeCoverageIgnoreEnd
return $this->site()->blueprints($this->requestQuery('section'));
}
],

View file

@ -1,9 +1,11 @@
<?php
use Kirby\Toolkit\I18n;
return function () {
return [
'icon' => 'account',
'label' => t('view.account'),
'label' => I18n::translate('view.account'),
'search' => 'users',
'dialogs' => require __DIR__ . '/account/dialogs.php',
'dropdowns' => require __DIR__ . '/account/dropdowns.php',

View file

@ -1,14 +1,14 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Find;
use Kirby\Panel\Panel;
return [
'account' => [
'pattern' => 'account',
'action' => fn () => [
'component' => 'k-account-view',
'props' => kirby()->user()->panel()->props(),
'props' => App::instance()->user()->panel()->props(),
],
],
'account.file' => [
@ -17,16 +17,6 @@ return [
return Find::file('account', $filename)->panel()->view();
}
],
'account.logout' => [
'pattern' => 'logout',
'auth' => false,
'action' => function () {
if ($user = kirby()->user()) {
$user->logout();
}
Panel::go('login');
},
],
'account.password' => [
'pattern' => 'reset-password',
'action' => fn () => ['component' => 'k-reset-password-view']

View file

@ -4,6 +4,7 @@ use Kirby\Cms\Find;
use Kirby\Panel\Field;
use Kirby\Panel\Panel;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n;
/**
* Shared file dialogs
@ -21,7 +22,7 @@ return [
'props' => [
'fields' => [
'name' => [
'label' => t('name'),
'label' => I18n::translate('name'),
'type' => 'slug',
'required' => true,
'icon' => 'title',
@ -30,7 +31,7 @@ return [
'preselect' => true
]
],
'submitButton' => t('rename'),
'submitButton' => I18n::translate('rename'),
'value' => [
'name' => $file->name(),
]
@ -39,7 +40,7 @@ return [
},
'submit' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
$renamed = $file->changeName(get('name'));
$renamed = $file->changeName($file->kirby()->request()->get('name'));
$oldUrl = $file->panel()->url(true);
$newUrl = $renamed->panel()->url(true);
$response = [
@ -70,7 +71,7 @@ return [
'fields' => [
'position' => Field::filePosition($file)
],
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'position' => $file->sort()->isEmpty() ? $file->siblings(false)->count() + 1 : $file->sort()->toInt(),
]
@ -81,7 +82,7 @@ return [
$file = Find::file($path, $filename);
$files = $file->siblings()->sorted();
$ids = $files->keys();
$newIndex = (int)(get('position')) - 1;
$newIndex = (int)($file->kirby()->request()->get('position')) - 1;
$oldIndex = $files->indexOf($file);
array_splice($ids, $oldIndex, 1);
@ -101,7 +102,7 @@ return [
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => tt('file.delete.confirm', [
'text' => I18n::template('file.delete.confirm', [
'filename' => Escape::html($file->filename())
]),
]

View file

@ -1,11 +1,12 @@
<?php
use Kirby\Panel\Panel;
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'icon' => 'settings',
'label' => t('view.installation'),
'label' => I18n::translate('view.installation'),
'views' => [
'installation' => [
'pattern' => 'installation',

View file

@ -1,9 +1,11 @@
<?php
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'icon' => 'globe',
'label' => t('view.languages'),
'label' => I18n::translate('view.languages'),
'menu' => true,
'dialogs' => require __DIR__ . '/languages/dialogs.php',
'views' => require __DIR__ . '/languages/views.php'

View file

@ -1,19 +1,21 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Find;
use Kirby\Panel\Field;
use Kirby\Toolkit\A;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n;
$languageDialogFields = [
'name' => [
'label' => t('language.name'),
'label' => I18n::translate('language.name'),
'type' => 'text',
'required' => true,
'icon' => 'title'
],
'code' => [
'label' => t('language.code'),
'label' => I18n::translate('language.code'),
'type' => 'text',
'required' => true,
'counter' => false,
@ -21,18 +23,18 @@ $languageDialogFields = [
'width' => '1/2'
],
'direction' => [
'label' => t('language.direction'),
'label' => I18n::translate('language.direction'),
'type' => 'select',
'required' => true,
'empty' => false,
'options' => [
['value' => 'ltr', 'text' => t('language.direction.ltr')],
['value' => 'rtl', 'text' => t('language.direction.rtl')]
['value' => 'ltr', 'text' => I18n::translate('language.direction.ltr')],
['value' => 'rtl', 'text' => I18n::translate('language.direction.rtl')]
],
'width' => '1/2'
],
'locale' => [
'label' => t('language.locale'),
'label' => I18n::translate('language.locale'),
'type' => 'text',
],
];
@ -47,7 +49,7 @@ return [
'component' => 'k-language-dialog',
'props' => [
'fields' => $languageDialogFields,
'submitButton' => t('language.create'),
'submitButton' => I18n::translate('language.create'),
'value' => [
'code' => '',
'direction' => 'ltr',
@ -58,12 +60,16 @@ return [
];
},
'submit' => function () {
kirby()->languages()->create([
'code' => get('code'),
'direction' => get('direction'),
'locale' => get('locale'),
'name' => get('name'),
$kirby = App::instance();
$data = $kirby->request()->get([
'code',
'direction',
'locale',
'name'
]);
$kirby->languages()->create($data);
return [
'event' => 'language.create'
];
@ -78,7 +84,7 @@ return [
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => tt('language.delete.confirm', [
'text' => I18n::template('language.delete.confirm', [
'name' => Escape::html($language->name())
])
]
@ -116,7 +122,7 @@ return [
$fields['locale'] = [
'label' => $fields['locale']['label'],
'type' => 'info',
'text' => t('language.locale.warning')
'text' => I18n::translate('language.locale.warning')
];
}
@ -124,7 +130,7 @@ return [
'component' => 'k-language-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('save'),
'submitButton' => I18n::translate('save'),
'value' => [
'code' => $language->code(),
'direction' => $language->direction(),
@ -136,11 +142,11 @@ return [
];
},
'submit' => function (string $id) {
$language = Find::language($id)->update([
'direction' => get('direction'),
'locale' => get('locale'),
'name' => get('name'),
]);
$kirby = App::instance();
$data = $kirby->request()->get(['direction', 'locale', 'name']);
$language = Find::language($id)->update($data);
return [
'event' => 'language.update'
];

View file

@ -1,12 +1,13 @@
<?php
use Kirby\Cms\App;
use Kirby\Toolkit\Escape;
return [
'languages' => [
'pattern' => 'languages',
'action' => function () {
$kirby = kirby();
$kirby = App::instance();
return [
'component' => 'k-languages-view',

View file

@ -1,11 +1,12 @@
<?php
use Kirby\Panel\Panel;
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'icon' => 'user',
'label' => t('login'),
'label' => I18n::translate('login'),
'views' => [
'login' => [
'pattern' => 'login',

View file

@ -0,0 +1,21 @@
<?php
use Kirby\Panel\Panel;
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'icon' => 'user',
'label' => I18n::translate('logout'),
'views' => [
'logout' => [
'pattern' => 'logout',
'auth' => false,
'action' => function () use ($kirby) {
$kirby->auth()->logout();
Panel::go('login');
},
]
]
];
};

View file

@ -1,13 +1,14 @@
<?php
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'breadcrumbLabel' => function () use ($kirby) {
return $kirby->site()->title()->or(t('view.site'))->toString();
return $kirby->site()->title()->or(I18n::translate('view.site'))->toString();
},
'icon' => 'home',
'label' => $kirby->site()->blueprint()->title() ?? t('view.site'),
'label' => $kirby->site()->blueprint()->title() ?? I18n::translate('view.site'),
'menu' => true,
'dialogs' => require __DIR__ . '/site/dialogs.php',
'dropdowns' => require __DIR__ . '/site/dropdowns.php',

View file

@ -1,11 +1,13 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Find;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\PermissionException;
use Kirby\Panel\Field;
use Kirby\Panel\Panel;
use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str;
$files = require __DIR__ . '/../files/dialogs.php';
@ -17,7 +19,6 @@ return [
'pattern' => 'pages/(:any)/changeSort',
'load' => function (string $id) {
$page = Find::page($id);
$position = null;
if ($page->blueprint()->num() !== 'default') {
throw new PermissionException([
@ -34,7 +35,7 @@ return [
'fields' => [
'position' => Field::pagePosition($page),
],
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'position' => $page->panel()->position()
]
@ -42,7 +43,13 @@ return [
];
},
'submit' => function (string $id) {
Find::page($id)->changeStatus('listed', get('position'));
$request = App::instance()->request();
Find::page($id)->changeStatus(
'listed',
$request->get('position')
);
return [
'event' => 'page.sort',
];
@ -76,7 +83,7 @@ return [
return [
'component' => 'k-error-dialog',
'props' => [
'message' => t('error.page.changeStatus.incomplete'),
'message' => I18n::translate('error.page.changeStatus.incomplete'),
'details' => $errors,
]
];
@ -85,7 +92,7 @@ return [
$fields = [
'status' => [
'label' => t('page.changeStatus.select'),
'label' => I18n::translate('page.changeStatus.select'),
'type' => 'radio',
'required' => true,
'options' => $states
@ -106,7 +113,7 @@ return [
'component' => 'k-form-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'status' => $status,
'position' => $position
@ -115,7 +122,13 @@ return [
];
},
'submit' => function (string $id) {
Find::page($id)->changeStatus(get('status'), get('position'));
$request = App::instance()->request();
Find::page($id)->changeStatus(
$request->get('status'),
$request->get('position')
);
return [
'event' => 'page.changeStatus',
];
@ -146,7 +159,7 @@ return [
'required' => true
])
],
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'template' => $page->intendedTemplate()->name()
]
@ -154,7 +167,10 @@ return [
];
},
'submit' => function (string $id) {
Find::page($id)->changeTemplate(get('template'));
$request = App::instance()->request();
Find::page($id)->changeTemplate($request->get('template'));
return [
'event' => 'page.changeTemplate',
];
@ -165,9 +181,11 @@ return [
'page.changeTitle' => [
'pattern' => 'pages/(:any)/changeTitle',
'load' => function (string $id) {
$request = App::instance()->request();
$page = Find::page($id);
$permissions = $page->permissions();
$select = get('select', 'title');
$select = $request->get('select', 'title');
return [
'component' => 'k-form-dialog',
@ -184,13 +202,13 @@ return [
'path' => $page->parent() ? '/' . $page->parent()->id() . '/' : '/',
'disabled' => $permissions->can('changeSlug') === false,
'wizard' => [
'text' => t('page.changeSlug.fromTitle'),
'text' => I18n::translate('page.changeSlug.fromTitle'),
'field' => 'title'
]
])
],
'autofocus' => false,
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'title' => $page->title()->value(),
'slug' => $page->slug(),
@ -199,9 +217,11 @@ return [
];
},
'submit' => function (string $id) {
$request = App::instance()->request();
$page = Find::page($id);
$title = trim(get('title', ''));
$slug = trim(get('slug', ''));
$title = trim($request->get('title', ''));
$slug = trim($request->get('slug', ''));
// basic input validation before we move on
if (Str::length($title) === 0) {
@ -257,17 +277,20 @@ return [
'page.create' => [
'pattern' => 'pages/create',
'load' => function () {
$kirby = App::instance();
$request = $kirby->request();
// the parent model for the new page
$parent = get('parent', 'site');
$parent = $request->get('parent', 'site');
// the view on which the add button is located
// this is important to find the right section
// and provide the correct templates for the new page
$view = get('view', $parent);
$view = $request->get('view', $parent);
// templates will be fetched depending on the
// section settings in the blueprint
$section = get('section');
$section = $request->get('section');
// this is the parent model
$model = Find::parent($parent);
@ -301,7 +324,7 @@ return [
// only show template field if > 1 templates available
// or when in debug mode
if (count($blueprints) > 1 || option('debug') === true) {
if (count($blueprints) > 1 || $kirby->option('debug') === true) {
$fields['template'] = Field::template($blueprints, [
'required' => true
]);
@ -311,7 +334,7 @@ return [
'component' => 'k-form-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('page.draft.create'),
'submitButton' => I18n::translate('page.draft.create'),
'value' => [
'parent' => $parent,
'slug' => '',
@ -322,7 +345,8 @@ return [
];
},
'submit' => function () {
$title = trim(get('title', ''));
$request = App::instance()->request();
$title = trim($request->get('title', ''));
if (Str::length($title) === 0) {
throw new InvalidArgumentException([
@ -330,10 +354,10 @@ return [
]);
}
$page = Find::parent(get('parent', 'site'))->createChild([
$page = Find::parent($request->get('parent', 'site'))->createChild([
'content' => ['title' => $title],
'slug' => get('slug'),
'template' => get('template'),
'slug' => $request->get('slug'),
'template' => $request->get('template'),
]);
return [
@ -348,7 +372,7 @@ return [
'pattern' => 'pages/(:any)/delete',
'load' => function (string $id) {
$page = Find::page($id);
$text = tt('page.delete.confirm', [
$text = I18n::template('page.delete.confirm', [
'title' => Escape::html($page->title()->value())
]);
@ -360,16 +384,16 @@ return [
'info' => [
'type' => 'info',
'theme' => 'negative',
'text' => t('page.delete.confirm.subpages')
'text' => I18n::translate('page.delete.confirm.subpages')
],
'check' => [
'label' => t('page.delete.confirm.title'),
'label' => I18n::translate('page.delete.confirm.title'),
'type' => 'text',
'counter' => false
]
],
'size' => 'medium',
'submitButton' => t('delete'),
'submitButton' => I18n::translate('delete'),
'text' => $text,
'theme' => 'negative',
]
@ -384,12 +408,17 @@ return [
];
},
'submit' => function (string $id) {
$request = App::instance()->request();
$page = Find::page($id);
$redirect = false;
$referrer = Panel::referrer();
$url = $page->panel()->url(true);
if ($page->childrenAndDrafts()->count() > 0 && get('check') !== $page->title()->value()) {
if (
$page->childrenAndDrafts()->count() > 0 &&
$request->get('check') !== $page->title()->value()
) {
throw new InvalidArgumentException(['key' => 'page.delete.confirm']);
}
@ -426,7 +455,7 @@ return [
'required' => true,
'path' => $page->parent() ? '/' . $page->parent()->id() . '/' : '/',
'wizard' => [
'text' => t('page.changeSlug.fromTitle'),
'text' => I18n::translate('page.changeSlug.fromTitle'),
'field' => 'title'
]
])
@ -434,7 +463,7 @@ return [
if ($hasFiles === true) {
$fields['files'] = [
'label' => t('page.duplicate.files'),
'label' => I18n::translate('page.duplicate.files'),
'type' => 'toggle',
'required' => true,
'width' => $toggleWidth
@ -443,7 +472,7 @@ return [
if ($hasChildren === true) {
$fields['children'] = [
'label' => t('page.duplicate.pages'),
'label' => I18n::translate('page.duplicate.pages'),
'type' => 'toggle',
'required' => true,
'width' => $toggleWidth
@ -454,21 +483,23 @@ return [
'component' => 'k-form-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('duplicate'),
'submitButton' => I18n::translate('duplicate'),
'value' => [
'children' => false,
'files' => false,
'slug' => $page->slug() . '-' . Str::slug(t('page.duplicate.appendix')),
'title' => $page->title() . ' ' . t('page.duplicate.appendix')
'slug' => $page->slug() . '-' . Str::slug(I18n::translate('page.duplicate.appendix')),
'title' => $page->title() . ' ' . I18n::translate('page.duplicate.appendix')
]
]
];
},
'submit' => function (string $id) {
$newPage = Find::page($id)->duplicate(get('slug'), [
'children' => (bool)get('children'),
'files' => (bool)get('files'),
'title' => (string)get('title'),
$request = App::instance()->request();
$newPage = Find::page($id)->duplicate($request->get('slug'), [
'children' => (bool)$request->get('children'),
'files' => (bool)$request->get('files'),
'title' => (string)$request->get('title'),
]);
return [
@ -512,15 +543,17 @@ return [
'preselect' => true
])
],
'submitButton' => t('rename'),
'submitButton' => I18n::translate('rename'),
'value' => [
'title' => site()->title()->value()
'title' => App::instance()->site()->title()->value()
]
]
];
},
'submit' => function () {
site()->changeTitle(get('title'));
$kirby = App::instance();
$kirby->site()->changeTitle($kirby->request()->get('title'));
return [
'event' => 'site.changeTitle',
];

View file

@ -1,13 +1,15 @@
<?php
use Kirby\Cms\App;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n;
return [
'pages' => [
'label' => t('pages'),
'label' => I18n::translate('pages'),
'icon' => 'page',
'query' => function (string $query = null) {
$pages = site()
$pages = App::instance()->site()
->index(true)
->search($query)
->filter('isReadable', true)
@ -28,10 +30,10 @@ return [
}
],
'files' => [
'label' => t('files'),
'label' => I18n::translate('files'),
'icon' => 'image',
'query' => function (string $query = null) {
$files = site()
$files = App::instance()->site()
->index(true)
->filter('isReadable', true)
->files()

View file

@ -1,5 +1,6 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Find;
return [
@ -15,7 +16,7 @@ return [
],
'site' => [
'pattern' => 'site',
'action' => fn () => site()->panel()->view()
'action' => fn () => App::instance()->site()->panel()->view()
],
'site.file' => [
'pattern' => 'site/files/(:any)',

View file

@ -1,9 +1,11 @@
<?php
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'icon' => 'settings',
'label' => t('view.system'),
'label' => I18n::translate('view.system'),
'menu' => true,
'dialogs' => require __DIR__ . '/system/dialogs.php',
'views' => require __DIR__ . '/system/views.php'

View file

@ -1,8 +1,46 @@
<?php
use Kirby\Cms\App;
use Kirby\Panel\Field;
use Kirby\Toolkit\I18n;
return [
// license key
'license' => [
'load' => function () {
$license = App::instance()->system()->license();
// @codeCoverageIgnoreStart
// the system is registered but the license
// key is only visible for admins
if ($license === true) {
$license = 'Kirby 3';
}
// @codeCoverageIgnoreEnd
return [
'component' => 'k-form-dialog',
'props' => [
'size' => 'medium',
'fields' => [
'license' => [
'type' => 'info',
'label' => I18n::translate('license'),
'text' => $license ? $license : I18n::translate('license.unregistered.label'),
'theme' => $license ? 'code' : 'negative',
'help' => $license ?
// @codeCoverageIgnoreStart
'<a href="https://hub.getkirby.com">' . I18n::translate('license.manage') . ' &rarr;</a>' :
// @codeCoverageIgnoreEnd
'<a href="https://getkirby.com/buy">' . I18n::translate('license.buy') . ' &rarr;</a>'
]
],
'submitButton' => false,
'cancelButton' => false,
]
];
}
],
// license registration
'registration' => [
'load' => function () {
@ -11,18 +49,18 @@ return [
'props' => [
'fields' => [
'license' => [
'label' => t('license.register.label'),
'label' => I18n::translate('license.register.label'),
'type' => 'text',
'required' => true,
'counter' => false,
'placeholder' => 'K3-',
'help' => t('license.register.help')
'help' => I18n::translate('license.register.help')
],
'email' => Field::email([
'required' => true
])
],
'submitButton' => t('license.register'),
'submitButton' => I18n::translate('license.register'),
'value' => [
'license' => null,
'email' => null
@ -32,10 +70,15 @@ return [
},
'submit' => function () {
// @codeCoverageIgnoreStart
kirby()->system()->register(get('license'), get('email'));
$kirby = App::instance();
$kirby->system()->register(
$kirby->request()->get('license'),
$kirby->request()->get('email')
);
return [
'event' => 'system.register',
'message' => t('license.register.success')
'message' => I18n::translate('license.register.success')
];
// @codeCoverageIgnoreEnd
}

View file

@ -1,12 +1,12 @@
<?php
use Kirby\Http\Server;
use Kirby\Cms\App;
return [
'system' => [
'pattern' => 'system',
'action' => function () {
$kirby = kirby();
$kirby = App::instance();
$system = $kirby->system();
$license = $system->license();
@ -24,8 +24,10 @@ return [
return [
'author' => $plugin->authorsNames(),
'license' => $plugin->license(),
'link' => $plugin->link(),
'name' => $plugin->name(),
'name' => [
'text' => $plugin->name(),
'href' => $plugin->link(),
],
'version' => $plugin->version(),
];
});
@ -38,8 +40,14 @@ return [
'plugins' => $plugins,
'php' => phpversion(),
'server' => $system->serverSoftware(),
'https' => Server::https(),
'https' => $kirby->environment()->https(),
'version' => $kirby->version(),
'urls' => [
'content' => $system->exposedFileUrl('content'),
'git' => $system->exposedFileUrl('git'),
'kirby' => $system->exposedFileUrl('kirby'),
'site' => $system->exposedFileUrl('site')
]
]
];
}

View file

@ -1,9 +1,11 @@
<?php
use Kirby\Toolkit\I18n;
return function ($kirby) {
return [
'icon' => 'users',
'label' => t('view.users'),
'label' => I18n::translate('view.users'),
'search' => 'users',
'menu' => true,
'dialogs' => require __DIR__ . '/users/dialogs.php',

View file

@ -1,11 +1,13 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Find;
use Kirby\Cms\UserRules;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Panel\Field;
use Kirby\Panel\Panel;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n;
$files = require __DIR__ . '/../files/dialogs.php';
@ -15,7 +17,7 @@ return [
'user.create' => [
'pattern' => 'users/create',
'load' => function () {
$kirby = kirby();
$kirby = App::instance();
return [
'component' => 'k-form-dialog',
'props' => [
@ -33,7 +35,7 @@ return [
'required' => true
])
],
'submitButton' => t('create'),
'submitButton' => I18n::translate('create'),
'value' => [
'name' => '',
'email' => '',
@ -45,13 +47,16 @@ return [
];
},
'submit' => function () {
kirby()->users()->create([
'name' => get('name'),
'email' => get('email'),
'password' => get('password'),
'language' => get('translation'),
'role' => get('role')
$kirby = App::instance();
$kirby->users()->create([
'name' => $kirby->request()->get('name'),
'email' => $kirby->request()->get('email'),
'password' => $kirby->request()->get('password'),
'language' => $kirby->request()->get('translation'),
'role' => $kirby->request()->get('role')
]);
return [
'event' => 'user.create'
];
@ -69,13 +74,13 @@ return [
'props' => [
'fields' => [
'email' => [
'label' => t('email'),
'label' => I18n::translate('email'),
'required' => true,
'type' => 'email',
'preselect' => true
]
],
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'email' => $user->email()
]
@ -83,7 +88,10 @@ return [
];
},
'submit' => function (string $id) {
Find::user($id)->changeEmail(get('email'));
$request = App::instance()->request();
Find::user($id)->changeEmail($request->get('email'));
return [
'event' => 'user.changeEmail'
];
@ -102,7 +110,7 @@ return [
'fields' => [
'translation' => Field::translation(['required' => true])
],
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
'value' => [
'translation' => $user->language()
]
@ -110,7 +118,9 @@ return [
];
},
'submit' => function (string $id) {
Find::user($id)->changeLanguage(get('translation'));
$request = App::instance()->request();
Find::user($id)->changeLanguage($request->get('translation'));
return [
'event' => 'user.changeLanguage',
@ -135,7 +145,7 @@ return [
'preselect' => true
])
],
'submitButton' => t('rename'),
'submitButton' => I18n::translate('rename'),
'value' => [
'name' => $user->name()->value()
]
@ -143,7 +153,9 @@ return [
];
},
'submit' => function (string $id) {
Find::user($id)->changeName(get('name'));
$request = App::instance()->request();
Find::user($id)->changeName($request->get('name'));
return [
'event' => 'user.changeName'
@ -162,20 +174,22 @@ return [
'props' => [
'fields' => [
'password' => Field::password([
'label' => t('user.changePassword.new'),
'label' => I18n::translate('user.changePassword.new'),
]),
'passwordConfirmation' => Field::password([
'label' => t('user.changePassword.new.confirm'),
'label' => I18n::translate('user.changePassword.new.confirm'),
])
],
'submitButton' => t('change'),
'submitButton' => I18n::translate('change'),
]
];
},
'submit' => function (string $id) {
$request = App::instance()->request();
$user = Find::user($id);
$password = get('password');
$passwordConfirmation = get('passwordConfirmation');
$password = $request->get('password');
$passwordConfirmation = $request->get('passwordConfirmation');
// validate the password
UserRules::validPassword($user, $password ?? '');
@ -207,11 +221,11 @@ return [
'props' => [
'fields' => [
'role' => Field::role([
'label' => t('user.changeRole.select'),
'label' => I18n::translate('user.changeRole.select'),
'required' => true,
])
],
'submitButton' => t('user.changeRole'),
'submitButton' => I18n::translate('user.changeRole'),
'value' => [
'role' => $user->role()->name()
]
@ -219,7 +233,9 @@ return [
];
},
'submit' => function (string $id) {
$user = Find::user($id)->changeRole(get('role'));
$request = App::instance()->request();
$user = Find::user($id)->changeRole($request->get('role'));
return [
'event' => 'user.changeRole',
@ -238,7 +254,7 @@ return [
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => tt($i18nPrefix . '.delete.confirm', [
'text' => I18n::template($i18nPrefix . '.delete.confirm', [
'email' => Escape::html($user->email())
])
]

View file

@ -1,13 +1,15 @@
<?php
use Kirby\Cms\App;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n;
return [
'users' => [
'label' => t('users'),
'label' => I18n::translate('users'),
'icon' => 'users',
'query' => function (string $query = null) {
$users = kirby()->users()->search($query)->limit(10);
$users = App::instance()->users()->search($query)->limit(10);
$results = [];
foreach ($users as $user) {

View file

@ -1,5 +1,6 @@
<?php
use Kirby\Cms\App;
use Kirby\Cms\Find;
use Kirby\Toolkit\Escape;
@ -7,8 +8,8 @@ return [
'users' => [
'pattern' => 'users',
'action' => function () {
$kirby = kirby();
$role = get('role');
$kirby = App::instance();
$role = $kirby->request()->get('role');
$roles = $kirby->roles()->toArray(fn ($role) => [
'id' => $role->id(),
'title' => $role->title(),
@ -32,7 +33,7 @@ return [
$users = $users->paginate([
'limit' => 20,
'page' => get('page')
'page' => $kirby->request()->get('page')
]);
return [

View file

@ -5,6 +5,7 @@ fields:
images:
label: field.blocks.gallery.images.label
type: files
query: model.images
multiple: true
layout: cards
size: tiny

View file

@ -17,9 +17,9 @@ if ($block->location() == 'web') {
?>
<?php if ($src): ?>
<figure<?= attr(['data-ratio' => $ratio, 'data-crop' => $crop], ' ') ?>>
<figure<?= Html::attr(['data-ratio' => $ratio, 'data-crop' => $crop], null, ' ') ?>>
<?php if ($link->isNotEmpty()): ?>
<a href="<?= esc($link->toUrl()) ?>">
<a href="<?= Str::esc($link->toUrl()) ?>">
<img src="<?= $src ?>" alt="<?= $alt->esc() ?>">
</a>
<?php else: ?>

View file

@ -13,6 +13,7 @@ fields:
image:
label: field.blocks.image.name
type: files
query: model.images
multiple: false
image:
back: black

View file

@ -1,5 +1,9 @@
<?php /** @var \Kirby\Cms\Block $block */ ?>
<?php if ($video = video($block->url())): ?>
<?php
use Kirby\Cms\Html;
/** @var \Kirby\Cms\Block $block */
?>
<?php if ($video = Html::video($block->url())): ?>
<figure>
<?= $video ?>
<?php if ($block->caption()->isNotEmpty()): ?>

View file

@ -4,12 +4,12 @@ use Kirby\Cms\App;
use Kirby\Cms\Collection;
use Kirby\Cms\File;
use Kirby\Cms\FileVersion;
use Kirby\Cms\Helpers;
use Kirby\Cms\Template;
use Kirby\Data\Data;
use Kirby\Email\PHPMailer as Emailer;
use Kirby\Filesystem\F;
use Kirby\Filesystem\Filename;
use Kirby\Http\Server;
use Kirby\Http\Uri;
use Kirby\Http\Url;
use Kirby\Image\Darkroom;
@ -39,9 +39,12 @@ return [
* @param mixed $variable
* @param bool $echo
* @return string
*
* @deprecated 3.7.0 Disable `dump()` via `KIRBY_HELPER_DUMP` instead and create your own function
* @todo move to `Helpers::dump()`, remove component in 3.8.0
*/
'dump' => function (App $kirby, $variable, bool $echo = true) {
if (Server::cli() === true) {
if ($kirby->environment()->cli() === true) {
$output = print_r($variable, true) . PHP_EOL;
} else {
$output = '<pre>' . print_r($variable, true) . '</pre>';
@ -98,7 +101,6 @@ return [
// check if the thumb already exists
if (file_exists($thumbRoot) === false) {
// if not, create job file
$job = $mediaRoot . '/.jobs/' . $thumbName . '.json';
@ -138,13 +140,19 @@ return [
* @param array $options Markdown options
* @param bool $inline Whether to wrap the text in `<p>` tags (deprecated: set via $options['inline'] instead)
* @return string
* @todo add deprecation warning for $inline parameter in 3.7.0
* @todo remove $inline parameter in in 3.8.0
*/
'markdown' => function (App $kirby, string $text = null, array $options = [], bool $inline = false): string {
static $markdown;
static $config;
// warning for deprecated fourth parameter
if (func_num_args() === 4 && isset($options['inline']) === false) {
// @codeCoverageIgnoreStart
Helpers::deprecated('markdown component: the $inline parameter is deprecated and will be removed in Kirby 3.8.0. Use $options[\'inline\'] instead.');
// @codeCoverageIgnoreEnd
}
// support for the deprecated fourth argument
$options['inline'] ??= $inline;
@ -155,7 +163,7 @@ return [
$config = $options;
}
return $markdown->parse($text, $options['inline']);
return $markdown->parse($text, $options['inline'] ?? false);
},
/**
@ -168,7 +176,7 @@ return [
* @return \Kirby\Cms\Collection|bool
*/
'search' => function (App $kirby, Collection $collection, string $query = null, $params = []) {
if (empty(trim($query)) === true) {
if (empty(trim($query ?? '')) === true) {
return $collection->limit(0);
}
@ -332,8 +340,8 @@ return [
*/
'thumb' => function (App $kirby, string $src, string $dst, array $options): string {
$darkroom = Darkroom::factory(
option('thumbs.driver', 'gd'),
option('thumbs', [])
$kirby->option('thumbs.driver', 'gd'),
$kirby->option('thumbs', [])
);
$options = $darkroom->preprocess($src, $options);
$root = (new Filename($src, $dst, $options))->toString();
@ -371,7 +379,13 @@ return [
if ($kirby->multilang() === true) {
$parts = Str::split($path, '#');
if ($page = page($parts[0] ?? null)) {
if ($parts[0] ?? null) {
$page = $kirby->site()->find($parts[0]);
} else {
$page = $kirby->site()->page();
}
if ($page) {
$path = $page->url($language);
if (isset($parts[1]) === true) {

View file

@ -1,5 +1,6 @@
<?php
use Kirby\Cms\App;
use Kirby\Data\Data;
use Kirby\Toolkit\A;
@ -62,7 +63,7 @@ return [
},
'toPages' => function ($value = null) {
$pages = [];
$kirby = kirby();
$kirby = App::instance();
foreach (Data::decode($value, 'yaml') as $id) {
if (is_array($id) === true) {

View file

@ -106,10 +106,10 @@ return [
},
'columns' => function () {
$columns = [];
$mobile = 0;
if (empty($this->columns)) {
foreach ($this->fields as $field) {
// Skip hidden and unsaveable fields
// They should never be included as column
if ($field['type'] === 'hidden' || $field['saveable'] === false) {
@ -133,6 +133,10 @@ return [
continue;
}
if (($columnProps['mobile'] ?? false) === true) {
$mobile++;
}
$columns[$columnName] = array_merge($columnProps, [
'type' => $field['type'],
'label' => $field['label'] ?? $field['name']
@ -140,6 +144,12 @@ return [
}
}
// make the first column visible on mobile
// if no other mobile columns are defined
if ($mobile === 0) {
$columns[array_key_first($columns)]['mobile'] = true;
}
return $columns;
}
],

View file

@ -71,7 +71,6 @@ return [
// transform into value-text objects
return array_map(function ($option) use ($options) {
// already a valid object
if (is_array($option) === true && isset($option['value'], $option['text']) === true) {
return $option;

View file

@ -69,14 +69,13 @@ return [
return $value;
}
$value = trim($value);
$converter = $this->converters()[$this->converter()];
if (is_array($value) === true) {
return array_map($converter, $value);
}
return call_user_func($converter, $value);
return call_user_func($converter, trim($value ?? ''));
},
'converters' => function (): array {
return [

View file

@ -0,0 +1,41 @@
<?php
return [
'mixins' => ['options'],
'props' => [
/**
* Unset inherited props
*/
'after' => null,
'before' => null,
'icon' => null,
'placeholder' => null,
/**
* Toggles will automatically span the full width of the field. With the grow option, you can disable this behaviour for a more compact layout.
*/
'grow' => function (bool $grow = true) {
return $grow;
},
/**
* If `false` all labels will be hidden for icon-only toggles.
*/
'labels' => function (bool $labels = true) {
return $labels;
},
/**
* A toggle can be deactivated on click. If reset is `false` deactivating a toggle is no longer possible.
*/
'reset' => function (bool $reset = true) {
return $reset;
}
],
'computed' => [
'default' => function () {
return $this->sanitizeOption($this->default);
},
'value' => function () {
return $this->sanitizeOption($this->value) ?? '';
},
]
];

View file

@ -10,6 +10,7 @@ return [
*/
'converter' => null,
'counter' => null,
'pattern' => null,
'spellcheck' => null,
/**

View file

@ -1,5 +1,6 @@
<?php
use Kirby\Cms\App;
use Kirby\Data\Data;
use Kirby\Toolkit\A;
@ -58,7 +59,7 @@ return [
},
'toUsers' => function ($value = null) {
$users = [];
$kirby = kirby();
$kirby = App::instance();
foreach (Data::decode($value, 'yaml') as $email) {
if (is_array($email) === true) {

File diff suppressed because it is too large Load diff

View file

@ -112,11 +112,11 @@ return function (App $app) {
* Converts the field value to a timestamp or a formatted date
*
* @param \Kirby\Cms\Field $field
* @param string|null $format PHP date formatting string
* @param string|\IntlDateFormatter|null $format PHP date formatting string
* @param string|null $fallback Fallback string for `strtotime` (since 3.2)
* @return string|int
*/
'toDate' => function (Field $field, string $format = null, string $fallback = null) use ($app) {
'toDate' => function (Field $field, $format = null, string $fallback = null) use ($app) {
if (empty($field->value) === true && $fallback === null) {
return null;
}
@ -341,7 +341,7 @@ return function (App $app) {
* @param string $context Location of output (`html`, `attr`, `js`, `css`, `url` or `xml`)
*/
'escape' => function (Field $field, string $context = 'html') {
$field->value = esc($field->value, $context);
$field->value = Str::esc($field->value, $context);
return $field;
},

View file

@ -1,9 +1,11 @@
<?php
use Kirby\Toolkit\I18n;
return function (array $props) {
$props['sections'] = [
'files' => [
'headline' => $props['headline'] ?? t('files'),
'headline' => $props['headline'] ?? I18n::translate('files'),
'type' => 'files',
'layout' => $props['layout'] ?? 'cards',
'template' => $props['template'] ?? null,

View file

@ -1,5 +1,7 @@
<?php
use Kirby\Toolkit\I18n;
return function ($props) {
$section = function ($defaults, $props) {
if ($props === true) {
@ -25,7 +27,7 @@ return function ($props) {
if ($pages !== false) {
$sidebar['pages'] = $section([
'headline' => t('pages'),
'headline' => I18n::translate('pages'),
'type' => 'pages',
'status' => 'all',
'layout' => 'list',
@ -34,7 +36,7 @@ return function ($props) {
if ($files !== false) {
$sidebar['files'] = $section([
'headline' => t('files'),
'headline' => I18n::translate('files'),
'type' => 'files',
'layout' => 'list'
], $files);

View file

@ -1,7 +1,8 @@
<?php
return function (array $props) {
use Kirby\Toolkit\I18n;
return function (array $props) {
// load the general templates setting for all sections
$templates = $props['templates'] ?? null;
@ -39,15 +40,15 @@ return function (array $props) {
if ($drafts !== false) {
$sections['drafts'] = $section(t('pages.status.draft'), 'drafts', $drafts);
$sections['drafts'] = $section(I18n::translate('pages.status.draft'), 'drafts', $drafts);
}
if ($unlisted !== false) {
$sections['unlisted'] = $section(t('pages.status.unlisted'), 'unlisted', $unlisted);
$sections['unlisted'] = $section(I18n::translate('pages.status.unlisted'), 'unlisted', $unlisted);
}
if ($listed !== false) {
$sections['listed'] = $section(t('pages.status.listed'), 'listed', $listed);
$sections['listed'] = $section(I18n::translate('pages.status.listed'), 'listed', $listed);
}
// cleaning up

View file

@ -107,7 +107,6 @@ return function ($kirby) {
if ($kirby->multilang() === true) {
$after = LanguageRoutes::create($kirby);
} else {
// Single-language home
$after[] = [
'pattern' => '',

View file

@ -12,7 +12,8 @@ return [
'form' => function () {
$fields = $this->fields;
$disabled = $this->model->permissions()->update() === false;
$content = $this->model->content()->toArray();
$lang = $this->model->kirby()->languageCode();
$content = $this->model->content($lang)->toArray();
if ($disabled === true) {
foreach ($fields as $key => $props) {

View file

@ -5,6 +5,7 @@ use Kirby\Toolkit\I18n;
return [
'mixins' => [
'details',
'empty',
'headline',
'help',
@ -13,44 +14,10 @@ return [
'max',
'pagination',
'parent',
'search',
'sort'
],
'props' => [
/**
* Enables/disables reverse sorting
*/
'flip' => function (bool $flip = false) {
return $flip;
},
/**
* Image options to control the source and look of file previews
*/
'image' => function ($image = null) {
return $image ?? [];
},
/**
* Optional info text setup. Info text is shown on the right (lists, cardlets) or below (cards) the filename.
*/
'info' => function ($info = null) {
return I18n::translate($info, $info);
},
/**
* The size option controls the size of cards. By default cards are auto-sized and the cards grid will always fill the full width. With a size you can disable auto-sizing. Available sizes: `tiny`, `small`, `medium`, `large`, `huge`
*/
'size' => function (string $size = 'auto') {
return $size;
},
/**
* Enables/disables manual sorting
*/
'sortable' => function (bool $sortable = true) {
return $sortable;
},
/**
* Overwrites manual sorting and sorts by the given field and sorting direction (i.e. `filename desc`)
*/
'sortBy' => function (string $sortBy = null) {
return $sortBy;
},
/**
* Filters all files by template and also sets the template, which will be used for all uploads
*/
@ -87,6 +54,12 @@ return [
// filter out all protected files
$files = $files->filter('isReadable', true);
// search
if ($this->search === true && empty($this->searchterm()) === false) {
$files = $files->search($this->searchterm());
}
// sort
if ($this->sortBy) {
$files = $files->sort(...$files::sortArgs($this->sortBy));
} else {
@ -117,12 +90,15 @@ return [
foreach ($this->files as $file) {
$panel = $file->panel();
$data[] = [
$item = [
'dragText' => $panel->dragText('auto', $dragTextAbsolute),
'extension' => $file->extension(),
'filename' => $file->filename(),
'id' => $file->id(),
'image' => $panel->image($this->image, $this->layout),
'image' => $panel->image(
$this->image,
$this->layout === 'table' ? 'list' : $this->layout
),
'info' => $file->toSafeString($this->info ?? false),
'link' => $panel->url(true),
'mime' => $file->mime(),
@ -131,6 +107,12 @@ return [
'text' => $file->toSafeString($this->text),
'url' => $file->url(),
];
if ($this->layout === 'table') {
$item = $this->columnsValues($item, $file);
}
$data[] = $item;
}
return $data;
@ -166,32 +148,9 @@ return [
]
];
},
'link' => function () {
$modelLink = $this->model->panel()->url(true);
$parentLink = $this->parent->panel()->url(true);
if ($modelLink !== $parentLink) {
return $parentLink;
}
},
'pagination' => function () {
return $this->pagination();
},
'sortable' => function () {
if ($this->sortable === false) {
return false;
}
if ($this->sortBy !== null) {
return false;
}
if ($this->flip === true) {
return false;
}
return true;
},
'upload' => function () {
if ($this->isFull() === true) {
return false;
@ -228,13 +187,15 @@ return [
'options' => [
'accept' => $this->accept,
'apiUrl' => $this->parent->apiUrl(true),
'columns' => $this->columns,
'empty' => $this->empty,
'headline' => $this->headline,
'help' => $this->help,
'layout' => $this->layout,
'link' => $this->link,
'link' => $this->link(),
'max' => $this->max,
'min' => $this->min,
'search' => $this->search,
'size' => $this->size,
'sortable' => $this->sortable,
'upload' => $this->upload

View file

@ -0,0 +1,36 @@
<?php
use Kirby\Toolkit\I18n;
return [
'props' => [
/**
* Image options to control the source and look of preview
*/
'image' => function ($image = null) {
return $image ?? [];
},
/**
* Optional info text setup. Info text is shown on the right (lists, cardlets) or below (cards) the title.
*/
'info' => function ($info = null) {
return I18n::translate($info, $info);
},
/**
* Setup for the main text in the list or cards. By default this will display the title.
*/
'text' => function ($text = '{{ model.title }}') {
return I18n::translate($text, $text);
}
],
'methods' => [
'link' => function () {
$modelLink = $this->model->panel()->url(true);
$parentLink = $this->parent->panel()->url(true);
if ($modelLink !== $parentLink) {
return $parentLink;
}
}
]
];

View file

@ -1,14 +1,29 @@
<?php
use Kirby\Cms\Helpers;
use Kirby\Toolkit\I18n;
return [
'props' => [
/**
* The headline for the section. This can be a simple string or a template with additional info from the parent page.
* @todo remove in 3.9.0
*/
'headline' => function ($headline = null) {
// TODO: add deprecation notive in 3.8.0
// if ($headline !== null) {
// Helpers::deprecated('`headline` prop for sections has been deprecated and will be removed in Kirby 3.9.0. Use `label` instead.');
// }
return I18n::translate($headline, $headline);
},
/**
* The label for the section. This can be a simple string or
* a template with additional info from the parent page.
* Replaces the `headline` prop.
*/
'label' => function ($label = null) {
return I18n::translate($label, $label);
}
],
'computed' => [
@ -17,6 +32,10 @@ return [
return $this->model()->toString($this->headline);
}
if ($this->label) {
return $this->model()->toString($this->label);
}
return ucfirst($this->name);
}
]

View file

@ -1,14 +1,129 @@
<?php
use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str;
return [
'props' => [
/**
* Columns config for `layout: table`
*/
'columns' => function (array $columns = null) {
return $columns ?? [];
},
/**
* Section layout.
* Available layout methods: `list`, `cardlets`, `cards`.
* Available layout methods: `list`, `cardlets`, `cards`, `table`.
*/
'layout' => function (string $layout = 'list') {
$layouts = ['list', 'cardlets', 'cards'];
$layouts = ['list', 'cardlets', 'cards', 'table'];
return in_array($layout, $layouts) ? $layout : 'list';
},
/**
* The size option controls the size of cards. By default cards are auto-sized and the cards grid will always fill the full width. With a size you can disable auto-sizing. Available sizes: `tiny`, `small`, `medium`, `large`, `huge`
*/
'size' => function (string $size = 'auto') {
return $size;
},
],
'computed' => [
'columns' => function () {
$columns = [];
if ($this->layout !== 'table') {
return [];
}
]
if ($this->image !== false) {
$columns['image'] = [
'label' => ' ',
'mobile' => true,
'type' => 'image',
'width' => 'var(--table-row-height)'
];
}
if ($this->text) {
$columns['title'] = [
'label' => I18n::translate('title'),
'mobile' => true,
'type' => 'url',
];
}
if ($this->info) {
$columns['info'] = [
'label' => I18n::translate('info'),
'type' => 'text',
];
}
foreach ($this->columns as $columnName => $column) {
if ($column === true) {
$column = [];
}
if ($column === false) {
continue;
}
// fallback for labels
$column['label'] ??= Str::ucfirst($columnName);
// make sure to translate labels
$column['label'] = I18n::translate($column['label'], $column['label']);
// keep the original column name as id
$column['id'] = $columnName;
// add the custom column to the array with a key that won't
// override the system columns
$columns[$columnName . 'Cell'] = $column;
}
if ($this->type === 'pages') {
$columns['flag'] = [
'label' => ' ',
'mobile' => true,
'type' => 'flag',
'width' => 'var(--table-row-height)',
];
}
return $columns;
},
],
'methods' => [
'columnsValues' => function (array $item, $model) {
$item['title'] = [
// override toSafeString() coming from `$item`
// because the table cells don't use v-html
'text' => $model->toString($this->text),
'href' => $model->panel()->url(true)
];
if ($this->info) {
// override toSafeString() coming from `$item`
// because the table cells don't use v-html
$item['info'] = $model->toString($this->info);
}
foreach ($this->columns as $columnName => $column) {
// don't overwrite essential columns
if (isset($item[$columnName]) === true) {
continue;
}
if (empty($column['value']) === false) {
$value = $model->toString($column['value']);
} else {
$value = $model->content()->get($column['id'] ?? $columnName)->value();
}
$item[$columnName] = $value;
}
return $item;
}
],
];

View file

@ -1,5 +1,6 @@
<?php
use Kirby\Cms\App;
use Kirby\Toolkit\Pagination;
return [
@ -14,7 +15,7 @@ return [
* Sets the default page for the pagination. This will overwrite default pagination.
*/
'page' => function (int $page = null) {
return get('page', $page);
return App::instance()->request()->get('page', $page);
},
],
'methods' => [
@ -31,6 +32,6 @@ return [
'page' => $pagination->page(),
'total' => $pagination->total(),
];
},
}
]
];

View file

@ -0,0 +1,19 @@
<?php
use Kirby\Cms\App;
return [
'props' => [
/**
* Enable/disable the search in the sections
*/
'search' => function (bool $search = false): bool {
return $search;
}
],
'methods' => [
'searchterm' => function (): ?string {
return App::instance()->request()->get('searchterm');
}
]
];

View file

@ -0,0 +1,53 @@
<?php
return [
'props' => [
/**
* Enables/disables reverse sorting
*/
'flip' => function (bool $flip = false) {
return $flip;
},
/**
* Enables/disables manual sorting
*/
'sortable' => function (bool $sortable = true) {
return $sortable;
},
/**
* Overwrites manual sorting and sorts by the given field and sorting direction (i.e. `date desc`)
*/
'sortBy' => function (string $sortBy = null) {
return $sortBy;
},
],
'computed' => [
'sortable' => function () {
if ($this->sortable === false) {
return false;
}
if (
$this->type === 'pages' &&
in_array($this->status, ['listed', 'published', 'all']) === false
) {
return false;
}
// don't allow sorting while search filter is active
if (empty($this->searchterm()) === false) {
return false;
}
if ($this->sortBy !== null) {
return false;
}
if ($this->flip === true) {
return false;
}
return true;
}
]
];

View file

@ -7,6 +7,7 @@ use Kirby\Toolkit\I18n;
return [
'mixins' => [
'details',
'empty',
'headline',
'help',
@ -14,7 +15,9 @@ return [
'min',
'max',
'pagination',
'parent'
'parent',
'search',
'sort'
],
'props' => [
/**
@ -24,42 +27,6 @@ return [
'create' => function ($create = null) {
return $create;
},
/**
* Enables/disables reverse sorting
*/
'flip' => function (bool $flip = false) {
return $flip;
},
/**
* Image options to control the source and look of page previews
*/
'image' => function ($image = null) {
return $image ?? [];
},
/**
* Optional info text setup. Info text is shown on the right (lists) or below (cards) the page title.
*/
'info' => function ($info = null) {
return I18n::translate($info, $info);
},
/**
* The size option controls the size of cards. By default cards are auto-sized and the cards grid will always fill the full width. With a size you can disable auto-sizing. Available sizes: `tiny`, `small`, `medium`, `large`, `huge`
*/
'size' => function (string $size = 'auto') {
return $size;
},
/**
* Enables/disables manual sorting
*/
'sortable' => function (bool $sortable = true) {
return $sortable;
},
/**
* Overwrites manual sorting and sorts by the given field and sorting direction (i.e. `date desc`)
*/
'sortBy' => function (string $sortBy = null) {
return $sortBy;
},
/**
* Filters pages by their status. Available status settings: `draft`, `unlisted`, `listed`, `published`, `all`.
*/
@ -79,19 +46,16 @@ return [
*/
'templates' => function ($templates = null) {
return A::wrap($templates ?? $this->template);
},
/**
* Setup for the main text in the list or cards. By default this will display the page title.
*/
'text' => function ($text = '{{ page.title }}') {
return I18n::translate($text, $text);
}
],
'computed' => [
'parent' => function () {
$parent = $this->parentModel();
if (is_a($parent, 'Kirby\Cms\Site') === false && is_a($parent, 'Kirby\Cms\Page') === false) {
if (
is_a($parent, 'Kirby\Cms\Site') === false &&
is_a($parent, 'Kirby\Cms\Page') === false
) {
throw new InvalidArgumentException('The parent is invalid. You must choose the site or a page as parent.');
}
@ -115,20 +79,28 @@ return [
$pages = $this->parent->childrenAndDrafts();
}
// loop for the best performance
foreach ($pages->data as $id => $page) {
// filters pages that are protected and not in the templates list
// internal `filter()` method used instead of foreach loop that previously included `unset()`
// because `unset()` is updating the original data, `filter()` is just filtering
// also it has been tested that there is no performance difference
// even in 0.1 seconds on 100k virtual pages
$pages = $pages->filter(function ($page) {
// remove all protected pages
if ($page->isReadable() === false) {
unset($pages->data[$id]);
continue;
return false;
}
// filter by all set templates
if ($this->templates && in_array($page->intendedTemplate()->name(), $this->templates) === false) {
unset($pages->data[$id]);
continue;
return false;
}
return true;
});
// search
if ($this->search === true && empty($this->searchterm()) === false) {
$pages = $pages->search($this->searchterm());
}
// sort
@ -156,27 +128,36 @@ return [
'data' => function () {
$data = [];
foreach ($this->pages as $item) {
$panel = $item->panel();
$permissions = $item->permissions();
foreach ($this->pages as $page) {
$panel = $page->panel();
$permissions = $page->permissions();
$data[] = [
$item = [
'dragText' => $panel->dragText(),
'id' => $item->id(),
'image' => $panel->image($this->image, $this->layout),
'info' => $item->toSafeString($this->info ?? false),
'id' => $page->id(),
'image' => $panel->image(
$this->image,
$this->layout === 'table' ? 'list' : $this->layout
),
'info' => $page->toSafeString($this->info ?? false),
'link' => $panel->url(true),
'parent' => $item->parentId(),
'parent' => $page->parentId(),
'permissions' => [
'sort' => $permissions->can('sort'),
'changeSlug' => $permissions->can('changeSlug'),
'changeStatus' => $permissions->can('changeStatus'),
'changeTitle' => $permissions->can('changeTitle'),
],
'status' => $item->status(),
'template' => $item->intendedTemplate()->name(),
'text' => $item->toSafeString($this->text),
'status' => $page->status(),
'template' => $page->intendedTemplate()->name(),
'text' => $page->toSafeString($this->text),
];
if ($this->layout === 'table') {
$item = $this->columnsValues($item, $page);
}
$data[] = $item;
}
return $data;
@ -224,35 +205,8 @@ return [
return true;
},
'link' => function () {
$modelLink = $this->model->panel()->url(true);
$parentLink = $this->parent->panel()->url(true);
if ($modelLink !== $parentLink) {
return $parentLink;
}
},
'pagination' => function () {
return $this->pagination();
},
'sortable' => function () {
if (in_array($this->status, ['listed', 'published', 'all']) === false) {
return false;
}
if ($this->sortable === false) {
return false;
}
if ($this->sortBy !== null) {
return false;
}
if ($this->flip === true) {
return false;
}
return true;
}
],
'methods' => [
@ -291,13 +245,15 @@ return [
'errors' => $this->errors,
'options' => [
'add' => $this->add,
'columns' => $this->columns,
'empty' => $this->empty,
'headline' => $this->headline,
'help' => $this->help,
'layout' => $this->layout,
'link' => $this->link,
'link' => $this->link(),
'max' => $this->max,
'min' => $this->min,
'search' => $this->search,
'size' => $this->size,
'sortable' => $this->sortable
],

View file

@ -0,0 +1,62 @@
<?php
use Kirby\Toolkit\I18n;
return [
'mixins' => [
'headline',
],
'props' => [
/**
* Array or query string for reports. Each report needs a `label` and `value` and can have additional `info`, `link` and `theme` settings.
*/
'reports' => function ($reports = null) {
if ($reports === null) {
return [];
}
if (is_string($reports) === true) {
$reports = $this->model()->query($reports);
}
if (is_array($reports) === false) {
return [];
}
return $reports;
},
/**
* The size of the report cards. Available sizes: `tiny`, `small`, `medium`, `large`
*/
'size' => function (string $size = 'large') {
return $size;
}
],
'computed' => [
'reports' => function () {
$reports = [];
$model = $this->model();
$value = fn ($value) => $value === null ? null : $model->toString($value);
foreach ($this->reports as $report) {
if (is_string($report) === true) {
$report = $model->query($report);
}
if (is_array($report) === false) {
continue;
}
$reports[] = [
'label' => I18n::translate($report['label'], $report['label']),
'value' => $value($report['value'] ?? null),
'info' => $value($report['info'] ?? null),
'link' => $value($report['link'] ?? null),
'theme' => $value($report['theme'] ?? null)
];
}
return $reports;
}
]
];

View file

@ -144,7 +144,9 @@ return [
// render KirbyText in caption
if ($tag->caption) {
$tag->caption = [$tag->kirby()->kirbytext($tag->caption, [], true)];
$options = ['markdown' => ['inline' => true]];
$caption = $tag->kirby()->kirbytext($tag->caption, $options);
$tag->caption = [$caption];
}
return Html::figure([ $link($image) ], $tag->caption, [
@ -212,7 +214,6 @@ return [
'title'
],
'html' => function ($tag) {
// get and sanitize the username
$username = str_replace('@', '', $tag->value);
@ -244,6 +245,7 @@ return [
'height',
'loop',
'muted',
'playsinline',
'poster',
'preload',
'style',
@ -290,6 +292,7 @@ return [
$attrs['controls'] = Str::toType($tag->controls ?? true, 'bool');
$attrs['loop'] = Str::toType($tag->loop, 'bool');
$attrs['muted'] = Str::toType($tag->muted ?? $autoplay, 'bool');
$attrs['playsinline'] = Str::toType($tag->playsinline ?? $autoplay, 'bool');
$attrs['poster'] = $tag->poster;
$attrs['preload'] = $tag->preload;
}

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Invalid code",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Hour",
"import": "Import",
"info": "Info",
"insert": "\u0412\u043c\u044a\u043a\u043d\u0438",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "\u041b\u0438\u0446\u0435\u043d\u0437 \u0437\u0430 Kirby",
"license.buy": "Купи лиценз",
"license.register": "Регистрирай",
"license.manage": "Manage your licenses",
"license.register.help": "You received your license code after the purchase via email. Please copy and paste it to register.",
"license.register.label": "Please enter your license code",
"license.register.success": "Thank you for supporting Kirby",
"license.unregistered": "Това е нерегистрирана демо версия на Kirby",
"license.unregistered.label": "Unregistered",
"link": "\u0412\u0440\u044a\u0437\u043a\u0430",
"link.text": "Текстова връзка",
@ -354,7 +360,7 @@
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Вход",
"login": "Подписване",
"login.code.label.login": "Login code",
"login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "The section is required",
"security": "Security",
"select": "Избери",
"server": "Server",
"settings": "Настройки",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Размер",
"slug": "URL-\u0434\u043e\u0431\u0430\u0432\u043a\u0430",
"sort": "Сортирай",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Заглавие",
"template": "Образец",
"today": "Днес",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Код",
"toolbar.button.bold": "\u041f\u043e\u043b\u0443\u0447\u0435\u0440 \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@exemple.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Codi invàlid",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Hora",
"import": "Import",
"info": "Info",
"insert": "Insertar",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "Llic\u00e8ncia Kirby",
"license.buy": "Comprar una llicència",
"license.register": "Registrar",
"license.manage": "Manage your licenses",
"license.register.help": "Heu rebut el codi de la vostra llicència després de la compra, per correu electrònic. Copieu-lo i enganxeu-lo per registrar-vos.",
"license.register.label": "Si us plau, introdueixi el seu codi de llicència",
"license.register.success": "Gràcies per donar suport a Kirby",
"license.unregistered": "Aquesta és una demo no registrada de Kirby",
"license.unregistered.label": "Unregistered",
"link": "Enlla\u00e7",
"link.text": "Enllaç de text",
@ -469,20 +475,28 @@
"section.required": "La secció és obligatòria",
"security": "Security",
"select": "Seleccionar",
"server": "Server",
"settings": "Configuració",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Tamany",
"slug": "URL-ap\u00e8ndix",
"sort": "Ordenar",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Títol",
"template": "Plantilla",
"today": "Avui",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Codi",
"toolbar.button.bold": "Negreta",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Prostředí",
"error.access.code": "Neplatný kód",
@ -294,6 +297,7 @@
"hide": "Skrýt",
"hour": "Hodina",
"import": "Import",
"info": "Info",
"insert": "Vlo\u017eit",
"insert.after": "Vložit za",
"insert.before": "Vložit před",
@ -336,10 +340,12 @@
"license": "Kirby licence",
"license.buy": "Zakoupit licenci",
"license.register": "Registrovat",
"license.manage": "Manage your licenses",
"license.register.help": "Licenční kód jste po zakoupení obdrželi na email. Vložte prosím kód a zaregistrujte Vaší kopii.",
"license.register.label": "Zadejte prosím licenční kód",
"license.register.success": "Děkujeme Vám za podporu Kirby",
"license.unregistered": "Toto je neregistrovaná kopie Kirby",
"license.unregistered.label": "Unregistered",
"link": "Odkaz",
"link.text": "Text odkazu",
@ -469,20 +475,28 @@
"section.required": "Sekce musí být vyplněna",
"security": "Security",
"select": "Vybrat",
"server": "Server",
"settings": "Nastavení",
"show": "Zobrazit",
"site.blueprint": "Hlavní panel nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/site.yml</strong>",
"size": "Velikost",
"slug": "P\u0159\u00edpona URL",
"sort": "Řadit",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Název",
"template": "\u0160ablona",
"today": "Dnes",
"server": "Server",
"site.blueprint": "Hlavní panel nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kód",
"toolbar.button.bold": "Tu\u010dn\u00fd text",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@eksempel.dk",
"entries": "Entries",
"entry": "Entry",
"environment": "Miljø",
"error.access.code": "Ugyldig kode",
@ -294,6 +297,7 @@
"hide": "Skjul",
"hour": "Time",
"import": "Importer",
"info": "Info",
"insert": "Inds\u00e6t",
"insert.after": "Indsæt efter",
"insert.before": "Indsæt før",
@ -336,10 +340,12 @@
"license": "Kirby licens",
"license.buy": "Køb en licens",
"license.register": "Registrer",
"license.manage": "Manage your licenses",
"license.register.help": "Du modtog din licenskode efter købet via email. Venligst kopier og indsæt den for at registrere.",
"license.register.label": "Indtast venligst din licenskode",
"license.register.success": "Tak for din støtte af Kirby",
"license.unregistered": "Dette er en uregistreret demo af Kirby",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Link tekst",
@ -396,7 +402,7 @@
"next": "Næste",
"no": "nej",
"off": "Sluk",
"on": "Tænd",
"on": "Aktiveret",
"open": "Åben",
"open.newWindow": "Åben i et nyt vindue",
"options": "Indstillinger",
@ -469,20 +475,28 @@
"section.required": "Sektionen er påkrævet",
"security": "Security",
"select": "Vælg",
"server": "Server",
"settings": "Indstillinger",
"show": "Vis",
"site.blueprint": "Sitet har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/site.yml</strong>",
"size": "Størrelse",
"slug": "URL-appendiks",
"sort": "Sorter",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titel",
"template": "Skabelon",
"today": "Idag",
"server": "Server",
"site.blueprint": "Sitet har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode",
"toolbar.button.bold": "Fed tekst",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "E-Mail",
"email.placeholder": "mail@beispiel.de",
"entries": "Einträge",
"entry": "Eintrag",
"environment": "Umgebung",
"error.access.code": "Ungültiger Code",
@ -294,6 +297,7 @@
"hide": "Verbergen",
"hour": "Stunde",
"import": "Importieren",
"info": "Info",
"insert": "Einf\u00fcgen",
"insert.after": "Danach einfügen",
"insert.before": "Davor einfügen",
@ -336,10 +340,12 @@
"license": "Lizenz",
"license.buy": "Kaufe eine Lizenz",
"license.register": "Registrieren",
"license.manage": "Verwalte deine Lizenzen",
"license.register.help": "Den Lizenzcode findest du in der Bestätigungsmail zu deinem Kauf. Bitte kopiere und füge ihn ein, um Kirby zu registrieren.",
"license.register.label": "Bitte gib deinen Lizenzcode ein",
"license.register.success": "Vielen Dank für deine Unterstützung",
"license.unregistered": "Dies ist eine unregistrierte Kirby-Demo",
"license.unregistered.label": "Unregistriert",
"link": "Link",
"link.text": "Linktext",
@ -469,20 +475,28 @@
"section.required": "Der Bereich ist Pflicht",
"security": "Sicherheit",
"select": "Auswählen",
"server": "Server",
"settings": "Einstellungen",
"show": "Anzeigen",
"site.blueprint": "Du kannst zusätzliche Felder und Bereiche für die Seite in <strong>/site/blueprints/site.yml</strong> anlegen",
"size": "Größe",
"slug": "URL-Anhang",
"sort": "Sortieren",
"stats.empty": "Keine Daten",
"system.issues.content": "Der content Ordner scheint öffentlich zugänglich zu sein",
"system.issues.debug": "Debugging muss im öffentlichen Betrieb ausgeschaltet sein",
"system.issues.git": "Der .git Ordner scheint öffentlich zugänglich zu sein",
"system.issues.https": "Wir empfehlen HTTPS für alle deine Seiten",
"system.issues.kirby": "Der kirby Ordner scheint öffentlich zugänglich zu sein",
"system.issues.site": "Der site Ordner scheint öffentlich zugänglich zu sein",
"title": "Titel",
"template": "Vorlage",
"today": "Heute",
"server": "Server",
"site.blueprint": "Du kannst zusätzliche Felder und Bereiche für die Seite in <strong>/site/blueprints/site.yml</strong> anlegen",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Fetter Text",
"toolbar.button.email": "E-Mail",

View file

@ -49,6 +49,9 @@
"email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Mη έγκυρος κωδικός",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Ώρα",
"import": "Import",
"info": "Info",
"insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "\u0386\u03b4\u03b5\u03b9\u03b1 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 Kirby",
"license.buy": "Αγοράστε μια άδεια",
"license.register": "Εγγραφή",
"license.manage": "Manage your licenses",
"license.register.help": "Έχετε λάβει τον κωδικό άδειας χρήσης μετά την αγορά μέσω ηλεκτρονικού ταχυδρομείου. Παρακαλώ αντιγράψτε και επικολλήστε τον για να εγγραφείτε.",
"license.register.label": "Παρακαλώ εισαγάγετε τον κωδικό άδειας χρήσης",
"license.register.success": "Σας ευχαριστούμε για την υποστήριξη του Kirby",
"license.unregistered": "Αυτό είναι ένα μη καταχωρημένο demo του Kirby",
"license.unregistered.label": "Unregistered",
"link": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2",
"link.text": "\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
@ -354,7 +360,7 @@
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7",
"login": "Σύνδεση",
"login.code.label.login": "Login code",
"login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "The section is required",
"security": "Security",
"select": "Επιλογή",
"server": "Server",
"settings": "Ρυθμίσεις",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Μέγεθος",
"slug": "\u0395\u03c0\u03af\u03b8\u03b5\u03bc\u03b1 URL",
"sort": "Ταξινόμηση",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Τίτλος",
"template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf",
"today": "Σήμερα",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Κώδικας",
"toolbar.button.bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7 \u03b3\u03c1\u03b1\u03c6\u03ae",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Invalid code",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Hour",
"import": "Import",
"info": "Info",
"insert": "Insert",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "License",
"license.buy": "Buy a license",
"license.register": "Register",
"license.manage": "Manage your licenses",
"license.register.help": "You received your license code after the purchase via email. Please copy and paste it to register.",
"license.register.label": "Please enter your license code",
"license.register.success": "Thank you for supporting Kirby",
"license.unregistered": "This is an unregistered demo of Kirby",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Link text",
@ -354,7 +360,7 @@
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Login",
"login": "Log in",
"login.code.label.login": "Login code",
"login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "The section is required",
"security": "Security",
"select": "Select",
"server": "Server",
"settings": "Settings",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Size",
"slug": "URL appendix",
"sort": "Sort",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Title",
"template": "Template",
"today": "Today",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Bold",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Retpoŝto",
"email.placeholder": "retpoŝto@ekzemplo.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Medio",
"error.access.code": "Nevalida kodo",
@ -294,6 +297,7 @@
"hide": "Kaŝi",
"hour": "Horo",
"import": "Importi",
"info": "Info",
"insert": "Enmeti",
"insert.after": "Enmeti post",
"insert.before": "Enmeti antaŭ",
@ -336,10 +340,12 @@
"license": "Permisilo",
"license.buy": "Aĉeti permisilon",
"license.register": "Registriĝi",
"license.manage": "Manage your licenses",
"license.register.help": "Vi ricevis vian kodon de permisilo retpoŝte, post aĉeti ĝin. Bonvolu kopii kaj alglui ĝin por registriĝi.",
"license.register.label": "Bonvolu entajpi vian kodon de permisilo",
"license.register.success": "Dankon pro subteni Kirby",
"license.unregistered": "Ĉi tiu estas neregistrita kopio de Kirby",
"license.unregistered.label": "Unregistered",
"link": "Ligilo",
"link.text": "Ligila teksto",
@ -469,20 +475,28 @@
"section.required": "La sekcio estas deviga",
"security": "Security",
"select": "Elekti",
"server": "Servilo",
"settings": "Agordoj",
"show": "Montri",
"site.blueprint": "La retejo ankoraŭ ne havas planon. Vi povas difini planon ĉe <strong>/site/blueprints/site.yml</strong>",
"size": "Grando",
"slug": "URL-nomo",
"sort": "Ordigi",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titolo",
"template": "Ŝablono",
"today": "Hodiaŭ",
"server": "Servilo",
"site.blueprint": "La retejo ankoraŭ ne havas planon. Vi povas difini planon ĉe <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kodo",
"toolbar.button.bold": "Grasa",
"toolbar.button.email": "Retpoŝto",

View file

@ -49,6 +49,9 @@
"email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Ambiente",
"error.access.code": "Código inválido",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Hora",
"import": "Import",
"info": "Info",
"insert": "Insertar",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "Licencia",
"license.buy": "Comprar una licencia",
"license.register": "Registrar",
"license.manage": "Manage your licenses",
"license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"license.register.label": "Por favor, ingresa tu código de licencia",
"license.register.success": "Gracias por apoyar a Kirby",
"license.unregistered": "Este es un demo no registrado de Kirby",
"license.unregistered.label": "Unregistered",
"link": "Enlace",
"link.text": "Texto de Enlace",
@ -354,7 +360,7 @@
"lock.unlock": "Desbloquear",
"lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.",
"login": "Iniciar sesi\u00f3n",
"login": "Iniciar sesión",
"login.code.label.login": "Login code",
"login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "Esta sección es requerida",
"security": "Security",
"select": "Seleccionar",
"server": "Server",
"settings": "Ajustes",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Tamaño",
"slug": "Apéndice URL",
"sort": "Ordenar",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Título",
"template": "Plantilla",
"today": "Hoy",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrita",
"toolbar.button.email": "Email",
@ -490,9 +504,9 @@
"toolbar.button.heading.1": "Encabezado 1",
"toolbar.button.heading.2": "Encabezado 2",
"toolbar.button.heading.3": "Encabezado 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.heading.4": "Encabezado 4",
"toolbar.button.heading.5": "Encabezado 5",
"toolbar.button.heading.6": "Encabezado 6",
"toolbar.button.italic": "Texto en It\u00e1licas",
"toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Selecciona un archivo",

View file

@ -49,6 +49,9 @@
"email": "Correo electrónico",
"email.placeholder": "correo@ejemplo.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Ambiente",
"error.access.code": "Código inválido",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Hora",
"import": "Import",
"info": "Info",
"insert": "Insertar",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "Licencia",
"license.buy": "Comprar una licencia",
"license.register": "Registro",
"license.manage": "Manage your licenses",
"license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"license.register.label": "Por favor ingrese su código de licencia",
"license.register.success": "Gracias por apoyar a Kirby",
"license.unregistered": "Esta es una demo no registrada de Kirby",
"license.unregistered.label": "Unregistered",
"link": "Enlace",
"link.text": "Texto del enlace",
@ -469,20 +475,28 @@
"section.required": "Esta sección es requerida",
"security": "Security",
"select": "Seleccionar",
"server": "Server",
"settings": "Ajustes",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Tamaño",
"slug": "Apéndice URL",
"sort": "Ordenar",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titulo",
"template": "Plantilla",
"today": "Hoy",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negritas",
"toolbar.button.email": "Correo electrónico",
@ -490,9 +504,9 @@
"toolbar.button.heading.1": "Encabezado 1",
"toolbar.button.heading.2": "Encabezado 2",
"toolbar.button.heading.3": "Encabezado 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.heading.4": "Encabezado 4",
"toolbar.button.heading.5": "Encabezado 5",
"toolbar.button.heading.6": "Encabezado 6",
"toolbar.button.italic": "Italica",
"toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Seleccione un archivo",

View file

@ -49,6 +49,9 @@
"email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Invalid code",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "ساعت",
"import": "Import",
"info": "Info",
"insert": "\u062f\u0631\u062c",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "\u0645\u062c\u0648\u0632",
"license.buy": "خرید مجوز",
"license.register": "ثبت",
"license.manage": "Manage your licenses",
"license.register.help": "پس از خرید از طریق ایمیل، کد مجوز خود را دریافت کردید. لطفا برای ثبت‌نام آن را کپی و اینجا پیست کنید.",
"license.register.label": "لطفا کد مجوز خود را وارد کنید",
"license.register.success": "با تشکر از شما برای حمایت از کربی",
"license.unregistered": "این یک نسخه آزمایشی ثبت نشده از کربی است",
"license.unregistered.label": "Unregistered",
"link": "\u067e\u06cc\u0648\u0646\u062f",
"link.text": "\u0645\u062a\u0646 \u067e\u06cc\u0648\u0646\u062f",
@ -469,20 +475,28 @@
"section.required": "The section is required",
"security": "Security",
"select": "انتخاب",
"server": "Server",
"settings": "تنظیمات",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "اندازه",
"slug": "پسوند Url",
"sort": "ترتیب",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "عنوان",
"template": "\u0642\u0627\u0644\u0628 \u0635\u0641\u062d\u0647",
"today": "امروز",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "کد",
"toolbar.button.bold": "\u0645\u062a\u0646 \u0628\u0627 \u062d\u0631\u0648\u0641 \u062f\u0631\u0634\u062a",
"toolbar.button.email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9",

View file

@ -49,6 +49,9 @@
"email": "S\u00e4hk\u00f6posti",
"email.placeholder": "nimi@osoite.fi",
"entries": "Entries",
"entry": "Entry",
"environment": "Ympäristö",
"error.access.code": "Väärä koodi",
@ -294,6 +297,7 @@
"hide": "Piilota",
"hour": "Tunti",
"import": "Tuo",
"info": "Info",
"insert": "Lis\u00e4\u00e4",
"insert.after": "Lisää eteen",
"insert.before": "Lisää jälkeen",
@ -336,10 +340,12 @@
"license": "Lisenssi",
"license.buy": "Osta lisenssi",
"license.register": "Rekisteröi",
"license.manage": "Manage your licenses",
"license.register.help": "Lisenssiavain on lähetetty oston jälkeen sähköpostiisi. Kopioi ja liitä avain tähän.",
"license.register.label": "Anna lisenssiavain",
"license.register.success": "Kiitos kun tuet Kirbyä",
"license.unregistered": "Tämä on rekisteröimätön demo Kirbystä",
"license.unregistered.label": "Unregistered",
"link": "Linkki",
"link.text": "Linkin teksti",
@ -469,20 +475,28 @@
"section.required": "Osio on pakollinen",
"security": "Security",
"select": "Valitse",
"server": "Palvelin",
"settings": "Asetukset",
"show": "Näytä",
"site.blueprint": "Tällä sivustolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/site.yml</strong>",
"size": "Koko",
"slug": "URL-tunniste",
"sort": "Järjestele",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Nimi",
"template": "Sivupohja",
"today": "Tänään",
"server": "Palvelin",
"site.blueprint": "Tällä sivustolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Koodi",
"toolbar.button.bold": "Lihavointi",
"toolbar.button.email": "S\u00e4hk\u00f6posti",

View file

@ -1,7 +1,7 @@
{
"account.changeName": "Modifier votre nom",
"account.delete": "Supprimer votre compte",
"account.delete.confirm": "Voulez-vous vraiment supprimer votre compte ? Vous serez déconnecté immédiatement. Votre compte ne pourra pas être récupéré.",
"account.delete.confirm": "Voulez-vous vraiment supprimer votre compte ? Vous serez déconnecté immédiatement. Votre compte ne pourra pas être récupéré.",
"add": "Ajouter",
"author": "Auteur",
@ -18,7 +18,7 @@
"create": "Créer",
"date": "Date",
"date.select": "Choisissez une date",
"date.select": "Choisir une date",
"day": "Jour",
"days.fri": "Ven",
@ -49,6 +49,9 @@
"email": "Courriel",
"email.placeholder": "mail@example.com",
"entries": "Entrées",
"entry": "Entrée",
"environment": "Environnement",
"error.access.code": "Code incorrect",
@ -61,7 +64,7 @@
"error.avatar.dimensions.invalid": "Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels",
"error.avatar.mime.forbidden": "L'image du profil utilisateur doit être un fichier JPEG ou PNG",
"error.blueprint.notFound": "Le blueprint «&nbsp;{name}&nbsp;» na pu être chargé",
"error.blueprint.notFound": "Le blueprint « {name} » na pu être chargé",
"error.blocks.max.plural": "Vous ne devez pas ajouter plus de {max} blocs",
"error.blocks.max.singular": "Vous ne devez pas ajouter plus d'un bloc",
@ -69,29 +72,29 @@
"error.blocks.min.singular": "Vous devez ajouter au moins un bloc",
"error.blocks.validation": "Il y a une erreur dans le bloc {index}",
"error.email.preset.notFound": "La configuration de courriel «&nbsp;{name}&nbsp;» na pu être trouvé",
"error.email.preset.notFound": "La configuration de courriel « {name} » na pu être trouvé ",
"error.field.converter.invalid": "Convertisseur «&nbsp;{converter}&nbsp;» incorrect",
"error.field.converter.invalid": "Convertisseur « {converter} » incorrect",
"error.file.changeName.empty": "Le nom ne peut être vide",
"error.file.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de «&nbsp;{filename}&nbsp;»",
"error.file.duplicate": "Un fichier nommé «&nbsp;{filename}&nbsp;» existe déjà",
"error.file.extension.forbidden": "Lextension «&nbsp;{extension}&nbsp;» nest pas autorisée",
"error.file.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de « {filename} »",
"error.file.duplicate": "Un fichier nommé « {filename} » existe déjà",
"error.file.extension.forbidden": "Lextension « {extension} » nest pas autorisée",
"error.file.extension.invalid": "Extension non valide : {extension}",
"error.file.extension.missing": "Lextension pour «&nbsp;{filename}&nbsp;» est manquante",
"error.file.extension.missing": "Lextension pour « {filename} » est manquante",
"error.file.maxheight": "La hauteur de l'image ne doit pas excéder {height} pixels",
"error.file.maxsize": "Le fichier est trop volumineux",
"error.file.maxwidth": "La largeur de l'image ne doit pas excéder {width} pixels",
"error.file.mime.differs": "Le fichier transféré doit être du même type de média «&nbsp;{mime}&nbsp;»",
"error.file.mime.forbidden": "Le type de média «&nbsp;{mime}&nbsp;» nest pas autorisé",
"error.file.mime.differs": "Le fichier transféré doit être du même type de média « {mime} »",
"error.file.mime.forbidden": "Le type de média « {mime} » nest pas autorisé",
"error.file.mime.invalid": "Type de média non valide : {mime}",
"error.file.mime.missing": "Le type de média de «&nbsp;{filename}&nbsp;» na pu être détecté",
"error.file.mime.missing": "Le type de média de « {filename} » na pu être détecté",
"error.file.minheight": "La hauteur de l'image doit être au moins {height} pixels",
"error.file.minsize": "Le fichier n'est pas assez volumineux",
"error.file.minwidth": "La largeur de l'image doit être au moins {width} pixels",
"error.file.name.missing": "Veuillez entrer un titre",
"error.file.notFound": "Le fichier «&nbsp;{filename}&nbsp;» na pu être trouvé",
"error.file.orientation": "L'orientation de l'image doit être \"{orientation}\"",
"error.file.notFound": "Le fichier « {filename} » na pu être trouvé",
"error.file.orientation": "L'orientation de l'image doit être « {orientation} »",
"error.file.type.forbidden": "Vous nêtes pas autorisé à transférer des fichiers {type}",
"error.file.type.invalid": "Type de fichier non valide : {type}",
"error.file.undefined": "Le fichier na pu être trouvé",
@ -113,43 +116,43 @@
"error.offline": "Le Panel est actuellement hors ligne",
"error.page.changeSlug.permission": "Vous nêtes pas autorisé à modifier lidentifiant dURL pour «&nbsp;{slug}&nbsp;»",
"error.page.changeSlug.permission": "Vous nêtes pas autorisé à modifier lidentifiant dURL pour « {slug} »",
"error.page.changeStatus.incomplete": "La page comporte des erreurs et ne peut pas être publiée",
"error.page.changeStatus.permission": "Le statut de cette page ne peut être modifié",
"error.page.changeStatus.toDraft.invalid": "La page «&nbsp;{slug}&nbsp;» ne peut être convertie en brouillon",
"error.page.changeTemplate.invalid": "Le modèle de la page «&nbsp;{slug}&nbsp;» ne peut être changé",
"error.page.changeTemplate.permission": "Vous nêtes pas autorisé à changer le modèle de «&nbsp;{slug}&nbsp;»",
"error.page.changeStatus.toDraft.invalid": "La page « {slug} » ne peut être convertie en brouillon",
"error.page.changeTemplate.invalid": "Le modèle de la page « {slug} » ne peut être changé",
"error.page.changeTemplate.permission": "Vous nêtes pas autorisé à changer le modèle de « {slug} »",
"error.page.changeTitle.empty": "Le titre ne peut être vide",
"error.page.changeTitle.permission": "Vous nêtes pas autorisé à modifier le titre de «&nbsp;{slug}&nbsp;»",
"error.page.create.permission": "Vous nêtes pas autorisé à créer «&nbsp;{slug}&nbsp;»",
"error.page.delete": "La page «&nbsp;{slug}&nbsp;» ne peut être supprimée",
"error.page.changeTitle.permission": "Vous nêtes pas autorisé à modifier le titre de « {slug} »",
"error.page.create.permission": "Vous nêtes pas autorisé à créer « {slug} »",
"error.page.delete": "La page « {slug} » ne peut être supprimée",
"error.page.delete.confirm": "Veuillez saisir le titre de la page pour confirmer",
"error.page.delete.hasChildren": "La page comporte des sous-pages et ne peut pas être supprimée",
"error.page.delete.permission": "Vous nêtes pas autorisé à supprimer «&nbsp;{slug}&nbsp;»",
"error.page.draft.duplicate": "Un brouillon avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"error.page.duplicate": "Une page avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer «&nbsp;{slug}&nbsp;»",
"error.page.notFound": "La page «&nbsp;{slug}&nbsp;» na pu être trouvée",
"error.page.delete.permission": "Vous nêtes pas autorisé à supprimer « {slug} »",
"error.page.draft.duplicate": "Un brouillon avec lidentifiant dURL « {slug} » existe déjà",
"error.page.duplicate": "Une page avec lidentifiant dURL « {slug} » existe déjà",
"error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer « {slug} »",
"error.page.notFound": "La page « {slug} » na pu être trouvée",
"error.page.num.invalid": "Veuillez saisir un numéro de position valide. Les numéros ne doivent pas être négatifs.",
"error.page.slug.invalid": "Veuillez entrer un identifiant dURL valide",
"error.page.slug.maxlength": "Lidentifiant dURL doit faire moins de \"{length}\" caractères",
"error.page.sort.permission": "La page «&nbsp;{slug}&nbsp;» ne peut être réordonnée",
"error.page.slug.maxlength": "Lidentifiant dURL doit faire moins de « {length} » caractères",
"error.page.sort.permission": "La page « {slug} » ne peut être réordonnée",
"error.page.status.invalid": "Veuillez choisir un statut de page valide",
"error.page.undefined": "La page na pu être trouvée",
"error.page.update.permission": "Vous nêtes pas autorisé à modifier «&nbsp;{slug}&nbsp;»",
"error.page.update.permission": "Vous nêtes pas autorisé à modifier « {slug} »",
"error.section.files.max.plural": "Vous ne pouvez ajouter plus de {max} fichier(s) à la section «&nbsp;{section}&nbsp;»",
"error.section.files.max.singular": "Vous ne pouvez ajouter plus dun fichier à la section «&nbsp;{section}&nbsp;»",
"error.section.files.min.plural": "La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} fichiers",
"error.section.files.min.singular": "La section «&nbsp;{section}\"&nbsp;» requiert au moins un fichier",
"error.section.files.max.plural": "Vous ne pouvez ajouter plus de {max} fichier(s) à la section « {section} »",
"error.section.files.max.singular": "Vous ne pouvez ajouter plus dun fichier à la section « {section} »",
"error.section.files.min.plural": "La section « {section} » requiert au moins {min} fichiers",
"error.section.files.min.singular": "La section « {section} » requiert au moins un fichier",
"error.section.pages.max.plural": "Vous ne pouvez ajouter plus de {max} pages à la section «&nbsp;{section}&nbsp;»",
"error.section.pages.max.singular": "Vous ne pouvez ajouter plus dune page à la section «&nbsp;{section}&nbsp;»",
"error.section.pages.min.plural": "La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} pages",
"error.section.pages.min.singular": "La section «&nbsp;{section}\"&nbsp;» requiert au moins une page",
"error.section.pages.max.plural": "Vous ne pouvez ajouter plus de {max} pages à la section « {section} »",
"error.section.pages.max.singular": "Vous ne pouvez ajouter plus dune page à la section « {section} »",
"error.section.pages.min.plural": "La section « {section} » requiert au moins {min} pages",
"error.section.pages.min.singular": "La section « {section} » requiert au moins une page",
"error.section.notLoaded": "La section «&nbsp;{name}&nbsp;» na pu être chargée",
"error.section.type.invalid": "Le type de section «&nbsp;{type}&nbsp;» est incorrect",
"error.section.notLoaded": "La section « {name} » na pu être chargée",
"error.section.type.invalid": "Le type de section « {type} » est incorrect",
"error.site.changeTitle.empty": "Le titre ne peut être vide",
"error.site.changeTitle.permission": "Vous nêtes pas autorisé à modifier le titre du site",
@ -157,46 +160,46 @@
"error.template.default.notFound": "Le modèle par défaut nexiste pas",
"error.unexpected": "Une erreur inattendue est survenue ! Activez le mode de débogage pour plus d'informations : https://getkirby.com/docs/reference/system/options/debug",
"error.unexpected": "Une erreur inattendue est survenue ! Activez le mode de débogage pour plus d'informations : https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Vous nêtes pas autorisé à modifier le courriel de lutilisateur «{name}»",
"error.user.changeLanguage.permission": "Vous nêtes pas autorisé à changer la langue de lutilisateur «{name}»",
"error.user.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de lutilisateur «{name}»",
"error.user.changePassword.permission": "Vous nêtes pas autorisé à changer le mot de passe de lutilisateur «{name}»",
"error.user.changeEmail.permission": "Vous nêtes pas autorisé à modifier le courriel de lutilisateur « {name} »",
"error.user.changeLanguage.permission": "Vous nêtes pas autorisé à changer la langue de lutilisateur « {name} »",
"error.user.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de lutilisateur « {name} »",
"error.user.changePassword.permission": "Vous nêtes pas autorisé à changer le mot de passe de lutilisateur « {name} »",
"error.user.changeRole.lastAdmin": "Le rôle du dernier administrateur ne peut être modifié",
"error.user.changeRole.permission": "Vous nêtes pas autorisé à changer le rôle de lutilisateur «{name}»",
"error.user.changeRole.permission": "Vous nêtes pas autorisé à changer le rôle de lutilisateur « {name} »",
"error.user.changeRole.toAdmin": "Vous nêtes pas autorisé à attribuer le rôle dadministrateur aux utilisateurs",
"error.user.create.permission": "Vous nêtes pas autorisé à créer cet utilisateur",
"error.user.delete": "Lutilisateur «{name}» ne peut être supprimé",
"error.user.delete": "Lutilisateur « {name} » ne peut être supprimé",
"error.user.delete.lastAdmin": "Le dernier administrateur ne peut être supprimé",
"error.user.delete.lastUser": "Le dernier utilisateur ne peut être supprimé",
"error.user.delete.permission": "Vous nêtes pas autorisé à supprimer lutilisateur «{name}»",
"error.user.duplicate": "Un utilisateur avec le courriel «{email}» existe déjà",
"error.user.delete.permission": "Vous nêtes pas autorisé à supprimer lutilisateur « {name} »",
"error.user.duplicate": "Un utilisateur avec le courriel « {email} » existe déjà",
"error.user.email.invalid": "Veuillez saisir un courriel valide",
"error.user.language.invalid": "Veuillez saisir une langue valide",
"error.user.notFound": "Lutilisateur «{name}» na pu être trouvé",
"error.user.notFound": "Lutilisateur « {name} » na pu être trouvé",
"error.user.password.invalid": "Veuillez saisir un mot de passe valide. Les mots de passe doivent comporter au moins 8 caractères.",
"error.user.password.notSame": "Les mots de passe ne sont pas identiques",
"error.user.password.undefined": "Cet utilisateur na pas de mot de passe",
"error.user.password.wrong": "Mot de passe incorrect",
"error.user.role.invalid": "Veuillez saisir un rôle valide",
"error.user.undefined": "Lutilisateur na pu être trouvé",
"error.user.update.permission": "Vous nêtes pas autorisé à modifier lutilisateur «{name}»",
"error.user.update.permission": "Vous nêtes pas autorisé à modifier lutilisateur « {name} »",
"error.validation.accepted": "Veuillez confirmer",
"error.validation.alpha": "Veuillez saisir uniquement des caractères alphabétiques minuscules",
"error.validation.alphanum": "Veuillez ne saisir que des minuscules de a à z et des chiffres de 0 à 9",
"error.validation.between": "Veuillez saisir une valeur entre «&nbsp;{min}&nbsp;» et «&nbsp;{max}&nbsp;»",
"error.validation.between": "Veuillez saisir une valeur entre « {min} » et « {max} »",
"error.validation.boolean": "Veuillez confirmer ou refuser",
"error.validation.contains": "Veuillez saisir une valeur contenant «&nbsp;{needle}&nbsp;»",
"error.validation.contains": "Veuillez saisir une valeur contenant « {needle} »",
"error.validation.date": "Veuillez saisir une date valide",
"error.validation.date.after": "Veuillez saisir une date après {date}",
"error.validation.date.before": "Veuillez saisir une date avant {date}",
"error.validation.date.between": "Veuillez saisir une date entre {min} et {max}",
"error.validation.denied": "Veuillez refuser",
"error.validation.different": "La valeur ne doit pas être «&nbsp;{other}&nbsp;»",
"error.validation.different": "La valeur ne doit pas être « {other} »",
"error.validation.email": "Veuillez saisir un courriel valide",
"error.validation.endswith": "La valeur doit se terminer par «&nbsp;{end}&nbsp;»",
"error.validation.endswith": "La valeur doit se terminer par « {end} »",
"error.validation.filename": "Veuillez saisir un nom de fichier valide",
"error.validation.in": "Veuillez saisir lun des éléments suivants: ({in})",
"error.validation.integer": "Veuillez saisir un entier valide",
@ -210,14 +213,14 @@
"error.validation.minlength": "Veuillez saisir une valeur plus longue (min. {min} caractères)",
"error.validation.minwords": "Veuillez saisir au moins {min} mot(s)",
"error.validation.more": "Veuillez saisir une valeur supérieure à {min}",
"error.validation.notcontains": "Veuillez saisir une valeur ne contenant pas «&nbsp;{needle}&nbsp;»",
"error.validation.notcontains": "Veuillez saisir une valeur ne contenant pas « {needle} »",
"error.validation.notin": "Veuillez ne saisir aucun des éléments suivants: ({notIn})",
"error.validation.option": "Veuillez sélectionner une option valide",
"error.validation.num": "Veuillez saisir un nombre valide",
"error.validation.required": "Veuillez saisir quelque chose",
"error.validation.same": "Veuillez saisir «&nbsp;{other}&nbsp;»",
"error.validation.size": "La grandeur de la valeur doit être «&nbsp;{size}&nbsp;»",
"error.validation.startswith": "La valeur doit commencer par «&nbsp;{start}&nbsp;»",
"error.validation.same": "Veuillez saisir « {other} »",
"error.validation.size": "La grandeur de la valeur doit être « {size} »",
"error.validation.startswith": "La valeur doit commencer par « {start} »",
"error.validation.time": "Veuillez saisir une heure valide",
"error.validation.time.after": "Veuillez entrer une heure après {time}",
"error.validation.time.before": "Veuillez entrer une heure avant {time}",
@ -232,9 +235,9 @@
"field.blocks.code.name": "Code",
"field.blocks.code.language": "Langue",
"field.blocks.code.placeholder": "Votre code…",
"field.blocks.delete.confirm": "Voulez-vous vraiment supprimer ce bloc ?",
"field.blocks.delete.confirm.all": "Voulez-vous vraiment supprimer tous les blocs ?",
"field.blocks.delete.confirm.selected": "Voulez-vous vraiment supprimer les blocs sélectionnés ?",
"field.blocks.delete.confirm": "Voulez-vous vraiment supprimer ce bloc ?",
"field.blocks.delete.confirm.all": "Voulez-vous vraiment supprimer tous les blocs ?",
"field.blocks.delete.confirm.selected": "Voulez-vous vraiment supprimer les blocs sélectionnés ?",
"field.blocks.empty": "Pas encore de blocs",
"field.blocks.fieldsets.label": "Veuillez sélectionner un type de bloc…",
"field.blocks.fieldsets.paste": "Presser <kbd>{{ shortcut }}</kbd> pour coller/importer des blocks depuis votre presse-papier",
@ -275,17 +278,17 @@
"field.files.empty": "Pas encore de fichier sélectionné",
"field.layout.delete": "Supprimer cette disposition",
"field.layout.delete.confirm": "Voulez-vous vraiment supprimer cette disposition ?",
"field.layout.delete.confirm": "Voulez-vous vraiment supprimer cette disposition ?",
"field.layout.empty": "Pas encore de rangées",
"field.layout.select": "Choisir une disposition",
"field.pages.empty": "Pas encore de page sélectionnée",
"field.structure.delete.confirm": "Voulez-vous vraiment supprimer cette ligne?",
"field.structure.delete.confirm": "Voulez-vous vraiment supprimer cette ligne ?",
"field.structure.empty": "Pas encore dentrée",
"field.users.empty": "Pas encore dutilisateur sélectionné",
"file.blueprint": "Ce fichier na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{filename}</strong>&nbsp;?",
"file.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{filename}</strong> ?",
"file.sort": "Modifier la position",
"files": "Fichiers",
@ -294,6 +297,7 @@
"hide": "Masquer",
"hour": "Heure",
"import": "Importer",
"info": "Info",
"insert": "Insérer",
"insert.after": "Insérer après",
"insert.before": "Insérer avant",
@ -315,9 +319,9 @@
"language": "Langue",
"language.code": "Code",
"language.convert": "Choisir comme langue par défaut",
"language.convert.confirm": "<p>Souhaitez-vous vraiment convertir <strong>{name}</strong> vers la langue par défaut&nbsp;? Cette action ne peut pas être annulée.</p><p>Si <strong>{name}</strong> a un contenu non traduit, il ny aura plus de solution de secours possible et certaines parties de votre site pourraient être vides.</p>",
"language.convert.confirm": "<p>Souhaitez-vous vraiment convertir <strong>{name}</strong> vers la langue par défaut ? Cette action ne peut pas être annulée.</p><p>Si <strong>{name}</strong> a un contenu non traduit, il ny aura plus de solution de secours possible et certaines parties de votre site pourraient être vides.</p>",
"language.create": "Ajouter une nouvelle langue",
"language.delete.confirm": "Voulez-vous vraiment supprimer la langue <strong>{name}</strong>, ainsi que toutes ses traductions&nbsp;? Cette action ne peut être annulée&nbsp;!",
"language.delete.confirm": "Voulez-vous vraiment supprimer la langue <strong>{name}</strong>, ainsi que toutes ses traductions ? Cette action ne peut être annulée !",
"language.deleted": "La langue a été supprimée",
"language.direction": "Sens de lecture",
"language.direction.ltr": "De gauche à droite",
@ -336,10 +340,12 @@
"license": "Licence",
"license.buy": "Acheter une licence",
"license.register": "Senregistrer",
"license.manage": "Gérer vos licences",
"license.register.help": "Vous avez reçu votre numéro de licence par courriel après l'achat. Veuillez le copier et le coller ici pour l'enregistrer.",
"license.register.label": "Veuillez saisir votre numéro de licence",
"license.register.success": "Merci pour votre soutien à Kirby",
"license.unregistered": "Ceci est une démo non enregistrée de Kirby",
"license.unregistered.label": "Non enregistré",
"link": "Lien",
"link.text": "Texte du lien",
@ -354,7 +360,7 @@
"lock.unlock": "Déverrouiller",
"lock.isUnlocked": "Vos modifications non enregistrées ont été écrasées pas un autre utilisateur. Vous pouvez télécharger vos modifications pour les fusionner manuellement.",
"login": "Se connecter",
"login": "Connexion",
"login.code.label.login": "Code de connexion",
"login.code.label.password-reset": "Code de réinitialisation du mot de passe",
"login.code.placeholder.email": "000 000",
@ -367,7 +373,7 @@
"login.reset": "Réinitialiser le mot de passe",
"login.toggleText.code.email": "Se connecter par courriel",
"login.toggleText.code.email-password": "Se connecter avec un mot de passe",
"login.toggleText.password-reset.email": "Mot de passe oublié ?",
"login.toggleText.password-reset.email": "Mot de passe oublié ?",
"login.toggleText.password-reset.email-password": "← Retour à la connexion",
"logout": "Se déconnecter",
@ -414,7 +420,7 @@
"page.changeStatus.position": "Veuillez sélectionner une position",
"page.changeStatus.select": "Sélectionner un nouveau statut",
"page.changeTemplate": "Changer de modèle",
"page.delete.confirm": "Voulez-vous vraiment supprimer <strong>{title}</strong>&nbsp;?",
"page.delete.confirm": "Voulez-vous vraiment supprimer <strong>{title}</strong> ?",
"page.delete.confirm.subpages": "<strong>Cette page contient des sous-pages</strong>. <br>Toutes les sous-pages seront également supprimées.",
"page.delete.confirm.title": "Veuillez saisir le titre de la page pour confirmer",
"page.draft.create": "Créer un brouillon",
@ -450,7 +456,7 @@
"replace": "Remplacer",
"retry": "Essayer à nouveau",
"revert": "Revenir",
"revert.confirm": "Voulez-vous vraiment <strong>supprimer toutes les modifications non-enregistrées</strong> ?",
"revert.confirm": "Voulez-vous vraiment <strong>supprimer toutes les modifications non-enregistrées</strong> ?",
"role": "Rôle",
"role.admin.description": "Ladministrateur dispose de tous les droits",
@ -469,20 +475,28 @@
"section.required": "Cette section est obligatoire",
"security": "Sécurité",
"select": "Sélectionner",
"server": "Serveur",
"settings": "Paramètres",
"show": "Afficher",
"site.blueprint": "Ce site na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/site.yml</strong>",
"size": "Poids",
"slug": "Identifiant de lURL",
"sort": "Trier",
"stats.empty": "Aucun rapport",
"system.issues.content": "Le dossier content semble exposé",
"system.issues.debug": "Le débogage doit être désactivé en production",
"system.issues.git": "Le dossier .git semble exposé",
"system.issues.https": "Nous recommandons HTTPS pour tous vos sites",
"system.issues.kirby": "Le dossier kirby semble exposé",
"system.issues.site": "Le dossier site semble exposé",
"title": "Titre",
"template": "Modèle",
"today": "Aujourdhui",
"server": "Serveur",
"site.blueprint": "Ce site na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Gras",
"toolbar.button.email": "Courriel",
@ -539,7 +553,7 @@
"user.changeRole.select": "Sélectionner un nouveau rôle",
"user.create": "Ajouter un nouvel utilisateur",
"user.delete": "Supprimer cet utilisateur",
"user.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{email}</strong>?",
"user.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{email}</strong> ?",
"users": "Utilisateurs",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@pelda.hu",
"entries": "Entries",
"entry": "Entry",
"environment": "Környezet",
"error.access.code": "Érvénytelen kód",
@ -294,6 +297,7 @@
"hide": "Elrejtés",
"hour": "Óra",
"import": "Importálás",
"info": "Info",
"insert": "Beilleszt",
"insert.after": "Beszúrás mögé",
"insert.before": "Beszúrás elé",
@ -336,10 +340,12 @@
"license": "Kirby licenc",
"license.buy": "Licenc vásárlása",
"license.register": "Regisztráció",
"license.manage": "Manage your licenses",
"license.register.help": "A vásárlás után emailben küldjük el a licenc-kódot. Regisztrációhoz másold ide a kapott kódot.",
"license.register.label": "Kérlek írd be a licenc-kódot",
"license.register.success": "Köszönjük, hogy támogatod a Kirby-t",
"license.unregistered": "Jelenleg a Kirby nem regisztrált próbaverzióját használod",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Link szövege",
@ -469,20 +475,28 @@
"section.required": "Ez a szakasz kötelező",
"security": "Security",
"select": "Kiválasztás",
"server": "Szerver",
"settings": "Beállítások",
"show": "Mutat",
"site.blueprint": "Ehhez a weblaphoz még nem tartozik oldalsablon. Itt hozhatod létre: <strong>/site/blueprints/site.yml</strong>",
"size": "Méret",
"slug": "URL n\u00e9v",
"sort": "Rendezés",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Cím",
"template": "Sablon",
"today": "Ma",
"server": "Szerver",
"site.blueprint": "Ehhez a weblaphoz még nem tartozik oldalsablon. Itt hozhatod létre: <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kód",
"toolbar.button.bold": "F\u00e9lk\u00f6v\u00e9r sz\u00f6veg",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Surel",
"email.placeholder": "surel@contoh.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Kode tidak valid",
@ -294,6 +297,7 @@
"hide": "Sembunyikan",
"hour": "Jam",
"import": "Import",
"info": "Info",
"insert": "Sisipkan",
"insert.after": "Sisipkan setelah",
"insert.before": "Sisipkan sebelum",
@ -336,10 +340,12 @@
"license": "Lisensi Kirby",
"license.buy": "Beli lisensi",
"license.register": "Daftar",
"license.manage": "Manage your licenses",
"license.register.help": "Anda menerima kode lisensi via surel setelah pembelian. Salin dan tempel kode tersebut untuk mendaftarkan.",
"license.register.label": "Masukkan kode lisensi Anda",
"license.register.success": "Terima kasih atas dukungan untuk Kirby",
"license.unregistered": "Ini adalah demo tidak diregistrasi dari Kirby",
"license.unregistered.label": "Unregistered",
"link": "Tautan",
"link.text": "Teks tautan",
@ -469,20 +475,28 @@
"section.required": "Bagian ini wajib",
"security": "Security",
"select": "Pilih",
"server": "Server",
"settings": "Pengaturan",
"show": "Tampilkan",
"site.blueprint": "Situs ini belum memiliki cetak biru. Anda dapat mendefinisikannya di <strong>/site/blueprints/site.yml</strong>",
"size": "Ukuran",
"slug": "Akhiran URL",
"sort": "Urutkan",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Judul",
"template": "Templat",
"today": "Hari ini",
"server": "Server",
"site.blueprint": "Situs ini belum memiliki cetak biru. Anda dapat mendefinisikannya di <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode",
"toolbar.button.bold": "Tebal",
"toolbar.button.email": "Surel",

View file

@ -49,6 +49,9 @@
"email": "Netfang",
"email.placeholder": "nafn@netfang.is",
"entries": "Entries",
"entry": "Entry",
"environment": "Umhverfi",
"error.access.code": "Ógildur kóði",
@ -294,6 +297,7 @@
"hide": "Fela",
"hour": "Klukkustund",
"import": "Hlaða inn",
"info": "Info",
"insert": "Setja inn",
"insert.after": "Setja eftir",
"insert.before": "Setja fyrir",
@ -336,10 +340,12 @@
"license": "Leyfi",
"license.buy": "Kaupa leyfi",
"license.register": "Skr\u00E1 Kirby",
"license.manage": "Manage your licenses",
"license.register.help": "Þú fékkst sendan tölvupóst með leyfiskóðanum þegar þú keyptir leyfi. Vinsamlegast afritaðu hann og settu hann hingað til að skrá þig.",
"license.register.label": "Vinsamlegast settu inn leyfiskóðan",
"license.register.success": "Þakka þér fyrir að velja Kirby",
"license.unregistered": "Þetta er óskráð prufueintak af Kirby",
"license.unregistered.label": "Unregistered",
"link": "Tengill",
"link.text": "Tengilstexti",
@ -469,20 +475,28 @@
"section.required": "Þetta svæði er nauðsynlegt",
"security": "Security",
"select": "Velja",
"server": "Vefþjónn",
"settings": "Stillingar",
"show": "Sýna",
"site.blueprint": "Þessi vefur hefur ekki skipan (e. blueprint) ennþá. Þú mátt skilgreina skipanina í <strong>/site/blueprints/site.yml</strong>",
"size": "Stærð",
"slug": "Slögg",
"sort": "Raða",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titill",
"template": "Sniðmát",
"today": "Núna",
"server": "Vefþjónn",
"site.blueprint": "Þessi vefur hefur ekki skipan (e. blueprint) ennþá. Þú mátt skilgreina skipanina í <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kóðasnið",
"toolbar.button.bold": "Feitletrun",
"toolbar.button.email": "Netfang",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@esempio.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Ambiente",
"error.access.code": "Codice non valido",
@ -294,6 +297,7 @@
"hide": "Nascondi",
"hour": "Ora",
"import": "Importa",
"info": "Info",
"insert": "Inserisci",
"insert.after": "Inserisci dopo",
"insert.before": "Inserisci prima",
@ -336,10 +340,12 @@
"license": "Licenza di Kirby",
"license.buy": "Acquista una licenza",
"license.register": "Registra",
"license.manage": "Manage your licenses",
"license.register.help": "Hai ricevuto il codice di licenza tramite email dopo l'acquisto. Per favore inseriscilo per registrare Kirby.",
"license.register.label": "Inserisci il codice di licenza",
"license.register.success": "Ti ringraziamo per aver supportato Kirby",
"license.unregistered": "Questa è una versione demo di Kirby non registrata",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Testo del link",
@ -469,20 +475,28 @@
"section.required": "La sezione è obbligatoria",
"security": "Security",
"select": "Seleziona",
"server": "Server",
"settings": "Impostazioni",
"show": "Mostra",
"site.blueprint": "Il sito non ha ancora un \"blueprint\". Puoi impostarne uno in <strong>/site/blueprints/site.yml</strong>",
"size": "Dimensioni",
"slug": "URL",
"sort": "Ordina",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titolo",
"template": "Template",
"today": "Oggi",
"server": "Server",
"site.blueprint": "Il sito non ha ancora un \"blueprint\". Puoi impostarne uno in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Codice",
"toolbar.button.bold": "Grassetto",
"toolbar.button.email": "Email",

View file

@ -29,7 +29,7 @@
"days.tue": "\ud654",
"days.wed": "\uc218",
"debugging": "디버",
"debugging": "디버",
"delete": "\uc0ad\uc81c",
"delete.all": "모두 삭제",
@ -49,6 +49,9 @@
"email": "\uc774\uba54\uc77c \uc8fc\uc18c",
"email.placeholder": "mail@example.com",
"entries": "항목",
"entry": "항목",
"environment": "구동 환경",
"error.access.code": "코드가 올바르지 않습니다.",
@ -294,6 +297,7 @@
"hide": "숨기기",
"hour": "시",
"import": "가져오기",
"info": "정보",
"insert": "\uc0bd\uc785",
"insert.after": "뒤에 삽입",
"insert.before": "앞에 삽입",
@ -302,15 +306,15 @@
"installation": "설치",
"installation.completed": "패널을 설치했습니다.",
"installation.disabled": "패널 설치 관리자는 로컬 서버에서 실행하거나 <code>panel.install</code> 옵션을 설정하세요.",
"installation.issues.accounts": "폴더(<code>/site/accounts</code>)에 쓰기 권한이 없습니다.",
"installation.issues.content": "폴더(<code>/content</code>)에 쓰기 권한이 없습니다.",
"installation.issues.accounts": "<code>/site/accounts</code> 폴더의 쓰기 권한을 확인하세요.",
"installation.issues.content": "<code>/content</code> 폴더의 쓰기 권한을 확인하세요.",
"installation.issues.curl": "<code>cURL</code> 확장 모듈이 필요합니다.",
"installation.issues.headline": "패널을 설치할 수 없습니다.",
"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> 버전이 7 이상인지 확인하세요.",
"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.code": "언어 코드",
@ -323,7 +327,7 @@
"language.direction.ltr": "왼쪽에서 오른쪽",
"language.direction.rtl": "오른쪽에서 왼쪽",
"language.locale": "PHP 로캘 문자열",
"language.locale.warning": "사용자 지정 로캘을 사용 중입니다. 폴더(<code>/site/languages</code>)의 언어 파일을 수정하세요.",
"language.locale.warning": "사용자 지정 로캘을 사용 중입니다. <code>/site/languages</code> 폴더의 언어 파일을 수정하세요.",
"language.name": "언어명",
"language.updated": "언어를 변경했습니다.",
@ -336,10 +340,12 @@
"license": "라이선스",
"license.buy": "라이선스 구매",
"license.register": "등록",
"license.manage": "라이선스 관리",
"license.register.help": "Kirby를 등록하려면 이메일로 전송받은 라이선스 코드와 이메일 주소를 입력하세요.",
"license.register.label": "라이선스 코드를 입력하세요.",
"license.register.success": "Kirby와 함께해주셔서 감사합니다.",
"license.unregistered": "Kirby가 등록되지 않았습니다.",
"license.unregistered.label": "Kirby가 등록되지 않았습니다.",
"link": "\uc77c\ubc18 \ub9c1\ud06c",
"link.text": "\ubb38\uc790",
@ -354,7 +360,7 @@
"lock.unlock": "잠금 해제",
"lock.isUnlocked": "다른 사용자가 이미 내용을 수정했으므로 현재 내용이 올바르게 저장되지 않았습니다. 저장되지 않은 내용은 다운로드해 수동으로 대치할 수 있습니다.",
"login": "\ub85c\uadf8\uc778",
"login": "로그인",
"login.code.label.login": "로그인 코드",
"login.code.label.password-reset": "암호 초기화 코드",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "섹션이 필요합니다.",
"security": "보안",
"select": "선택",
"server": "서버",
"settings": "설정",
"show": "보기",
"site.blueprint": "블루프린트(<strong>/site/blueprints/site.yml</strong>)를 설정하세요.",
"size": "크기",
"slug": "고유 주소",
"sort": "정렬",
"stats.empty": "관련 기록이 없습니다.",
"system.issues.content": "<code>/content</code> 폴더의 권한을 확인하세요.",
"system.issues.debug": "공개 서버상에서는 디버그 모드를 해제하세요.",
"system.issues.git": "<code>/.git</code> 폴더의 권한을 확인하세요.",
"system.issues.https": "HTTPS를 권장합니다.",
"system.issues.kirby": "<code>/kirby</code> 폴더의 권한을 확인하세요.",
"system.issues.site": "<code>/site</code> 폴더의 권한을 확인하세요.",
"title": "제목",
"template": "\ud15c\ud50c\ub9bf",
"today": "오늘",
"server": "서버",
"site.blueprint": "블루프린트(<strong>/site/blueprints/site.yml</strong>)를 설정하세요.",
"toolbar.button.code": "코드",
"toolbar.button.bold": "강조",
"toolbar.button.email": "이메일 주소",

View file

@ -49,6 +49,9 @@
"email": "El. paštas",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Neteisinas kodas",
@ -294,6 +297,7 @@
"hide": "Paslėpti",
"hour": "Valanda",
"import": "Importuoti",
"info": "Info",
"insert": "Įterpti",
"insert.after": "Įterpti po",
"insert.before": "Įterpti prieš",
@ -336,10 +340,12 @@
"license": "Licenzija",
"license.buy": "Pirkti licenziją",
"license.register": "Registruoti",
"license.manage": "Manage your licenses",
"license.register.help": "Licenzijos kodą gavote el. paštu po apmokėjimo. Prašome įterpti čia, kad sistema būtų užregistruota.",
"license.register.label": "Prašome įrašyti jūsų licenzijos kodą",
"license.register.success": "Ačiū, kad palaikote Kirby",
"license.unregistered": "Tai neregistruota Kirby demo versija",
"license.unregistered.label": "Unregistered",
"link": "Nuoroda",
"link.text": "Nuorodos tekstas",
@ -469,20 +475,28 @@
"section.required": "Sekcija privaloma",
"security": "Security",
"select": "Pasirinkti",
"server": "Server",
"settings": "Nustatymai",
"show": "Rodyti",
"site.blueprint": "Svetainė neturi blueprint. Jūs galite nustatyti jį <strong>/site/blueprints/site.yml</strong>",
"size": "Dydis",
"slug": "URL pabaiga",
"sort": "Rikiuoti",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Pavadinimas",
"template": "Puslapio šablonas",
"today": "Šiandien",
"server": "Server",
"site.blueprint": "Svetainė neturi blueprint. Jūs galite nustatyti jį <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kodas",
"toolbar.button.bold": "Bold",
"toolbar.button.email": "El. paštas",

View file

@ -49,6 +49,9 @@
"email": "Epost",
"email.placeholder": "epost@eksempel.no",
"entries": "Entries",
"entry": "Entry",
"environment": "Miljø",
"error.access.code": "Ugyldig kode",
@ -294,6 +297,7 @@
"hide": "Skjul",
"hour": "Tid",
"import": "Importer",
"info": "Info",
"insert": "Sett Inn",
"insert.after": "Sett inn etter",
"insert.before": "Sett inn før",
@ -336,10 +340,12 @@
"license": "Kirby lisens",
"license.buy": "Kjøp lisens",
"license.register": "Registrer",
"license.manage": "Manage your licenses",
"license.register.help": "Du skal ha mottatt din lisenskode for kjøpet via e-post. Vennligst kopier og lim inn denne for å registrere deg.",
"license.register.label": "Vennligst skriv inn din lisenskode",
"license.register.success": "Takk for at du støtter Kirby",
"license.unregistered": "Dette er en uregistrert demo av Kirby",
"license.unregistered.label": "Unregistered",
"link": "Adresse",
"link.text": "Koblingstekst",
@ -469,20 +475,28 @@
"section.required": "Denne seksjonen er påkrevd",
"security": "Security",
"select": "Velg",
"server": "Server",
"settings": "Innstillinger",
"show": "Vis",
"site.blueprint": "Denne siden har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/site.yml</strong>",
"size": "Størrelse",
"slug": "URL-appendiks",
"sort": "Sortere",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Tittel",
"template": "Mal",
"today": "I dag",
"server": "Server",
"site.blueprint": "Denne siden har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode",
"toolbar.button.bold": "Fet tekst",
"toolbar.button.email": "Epost",

View file

@ -49,6 +49,9 @@
"email": "E-mailadres",
"email.placeholder": "mail@voorbeeld.nl",
"entries": "Entries",
"entry": "Entry",
"environment": "Omgeving",
"error.access.code": "Ongeldige code",
@ -157,7 +160,7 @@
"error.template.default.notFound": "Het standaard template bestaat niet",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.unexpected": "Een onverwacht fout heeft plaats gevonden! Schakel debug-modus in voor meer informatie: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Je hebt geen rechten om het e-mailadres van gebruiker \"{name}\" te wijzigen",
"error.user.changeLanguage.permission": "Je hebt geen rechten om de taal voor gebruiker \"{name}\" te wijzigen",
@ -294,6 +297,7 @@
"hide": "Verberg",
"hour": "Uur",
"import": "Importeer",
"info": "Info",
"insert": "Toevoegen",
"insert.after": "Voeg toe na",
"insert.before": "Voeg toe voor",
@ -336,10 +340,12 @@
"license": "Licentie",
"license.buy": "Koop een licentie",
"license.register": "Registreren",
"license.manage": "Manage your licenses",
"license.register.help": "Je hebt de licentie via e-mail gekregen nadat je de aankoop hebt gedaan. Kopieer en plak de licentie om te registreren. ",
"license.register.label": "Vul je licentie in",
"license.register.success": "Bedankt dat je Kirby ondersteunt",
"license.unregistered": "Dit is een niet geregistreerde demo van Kirby",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Linktekst",
@ -469,20 +475,28 @@
"section.required": "De sectie is verplicht",
"security": "Security",
"select": "Selecteren",
"server": "Server",
"settings": "Opties",
"show": "Toon",
"site.blueprint": "Deze website heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen<strong>/site/blueprints/site.yml</strong>",
"size": "Grootte",
"slug": "URL-toevoeging",
"sort": "Sorteren",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titel",
"template": "Template",
"today": "Vandaag",
"server": "Server",
"site.blueprint": "Deze website heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen<strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Dikgedrukte tekst",
"toolbar.button.email": "E-mailadres",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@example.com",
"entries": "Wpisy",
"entry": "Wpis",
"environment": "Środowisko",
"error.access.code": "Nieprawidłowy kod",
@ -294,6 +297,7 @@
"hide": "Ukryj",
"hour": "Godzina",
"import": "Importuj",
"info": "Informacje",
"insert": "Wstaw",
"insert.after": "Wstaw po",
"insert.before": "Wstaw przed",
@ -336,10 +340,12 @@
"license": "Licencja",
"license.buy": "Kup licencję",
"license.register": "Zarejestruj",
"license.manage": "Zarządzaj swoimi licencjami",
"license.register.help": "Po zakupieniu licencji otrzymałaś/-eś mailem klucz. Skopiuj go i wklej tutaj, aby dokonać rejestracji.",
"license.register.label": "Wprowadź swój kod licencji",
"license.register.success": "Dziękujemy za wspieranie Kirby",
"license.unregistered": "To jest niezarejestrowana wersja demonstracyjna Kirby",
"license.unregistered.label": "Niezarejestrowane",
"link": "Link",
"link.text": "Tekst linku",
@ -354,7 +360,7 @@
"lock.unlock": "Odblokuj",
"lock.isUnlocked": "Twoje niezapisane zmiany zostały nadpisane przez innego użytkownika. Możesz pobrać swoje zmiany, by scalić je ręcznie.",
"login": "Zaloguj",
"login": "Zaloguj się",
"login.code.label.login": "Kod logowania się",
"login.code.label.password-reset": "Kod resetowania hasła",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "Sekcja jest wymagana",
"security": "Bezpieczeństwo",
"select": "Wybierz",
"server": "Serwer",
"settings": "Ustawienia",
"show": "Pokaż",
"site.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/site.yml</strong>",
"size": "Rozmiar",
"slug": "Końcówka URL",
"sort": "Sortuj",
"stats.empty": "Brak raportów",
"system.issues.content": "Zdaje się, że folder „content” jest wystawiony na publiczny dostęp",
"system.issues.debug": "Debugowanie musi być wyłączone w środowisku produkcyjnym",
"system.issues.git": "Zdaje się, że folder „.git” jest wystawiony na publiczny dostęp",
"system.issues.https": "Zalecamy HTTPS dla wszystkich Twoich witryn",
"system.issues.kirby": "Zdaje się, że folder „kirby” jest wystawiony na publiczny dostęp",
"system.issues.site": "Zdaje się, że folder „site” jest wystawiony na publiczny dostęp",
"title": "Tytuł",
"template": "Szablon",
"today": "Dzisiaj",
"server": "Serwer",
"site.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kod",
"toolbar.button.bold": "Pogrubienie",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@exemplo.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Ambiente",
"error.access.code": "Código inválido",
@ -294,6 +297,7 @@
"hide": "Ocultar",
"hour": "Hora",
"import": "Importar",
"info": "Info",
"insert": "Inserir",
"insert.after": "Inserir após",
"insert.before": "Inserir antes",
@ -336,10 +340,12 @@
"license": "Licen\u00e7a do Kirby ",
"license.buy": "Comprar licença",
"license.register": "Registrar",
"license.manage": "Manage your licenses",
"license.register.help": "Você recebeu o código da sua licença por email ao efetuar sua compra. Por favor, copie e cole o código para completar seu registro.",
"license.register.label": "Por favor, digite o código da sua licença",
"license.register.success": "Obrigado por apoiar o Kirby",
"license.unregistered": "Esta é uma cópia de demonstração não registrada do Kirby",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Texto do link",
@ -469,20 +475,28 @@
"section.required": "Esta seção é obrigatória",
"security": "Security",
"select": "Selecionar",
"server": "Servidor",
"settings": "Configurações",
"show": "Mostrar",
"site.blueprint": "Este site não tem planta. Você pode definir sua planta em <strong>/site/blueprints/site.yml</strong>",
"size": "Tamanho",
"slug": "Anexo de URL",
"sort": "Ordenar",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Título",
"template": "Tema",
"today": "Hoje",
"server": "Servidor",
"site.blueprint": "Este site não tem planta. Você pode definir sua planta em <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrito",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@exemplo.pt",
"entries": "Entries",
"entry": "Entry",
"environment": "Ambiente",
"error.access.code": "Código inválido",
@ -294,6 +297,7 @@
"hide": "Ocultar",
"hour": "Hora",
"import": "Importar",
"info": "Info",
"insert": "Inserir",
"insert.after": "Inserir após",
"insert.before": "Inserir antes",
@ -336,10 +340,12 @@
"license": "Licen\u00e7a do Kirby ",
"license.buy": "Comprar uma licença",
"license.register": "Registrar",
"license.manage": "Manage your licenses",
"license.register.help": "Recebeu o código da sua licença por email após a compra. Por favor, copie e cole-o para completar o registro.",
"license.register.label": "Por favor, digite o código da sua licença",
"license.register.success": "Obrigado por apoiar o Kirby",
"license.unregistered": "Esta é uma demonstração não registrada do Kirby",
"license.unregistered.label": "Unregistered",
"link": "Link",
"link.text": "Texto do link",
@ -469,20 +475,28 @@
"section.required": "Esta seção é necessária",
"security": "Security",
"select": "Selecionar",
"server": "Servidor",
"settings": "Configurações",
"show": "Mostrar",
"site.blueprint": "Este site não tem planta. Você pode definir sua planta em <strong>/site/blueprints/site.yml</strong>",
"size": "Tamanho",
"slug": "URL",
"sort": "Ordenar",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Título",
"template": "Tema",
"today": "Hoje",
"server": "Servidor",
"site.blueprint": "Este site não tem planta. Você pode definir sua planta em <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrito",
"toolbar.button.email": "Email",

View file

@ -49,6 +49,9 @@
"email": "Email",
"email.placeholder": "mail@example.com",
"entries": "Записи",
"entry": "Запись",
"environment": "Среда",
"error.access.code": "Неверный код",
@ -174,7 +177,7 @@
"error.user.duplicate": "Пользователь с Email \"{email}\" уже есть",
"error.user.email.invalid": "Пожалуйста, введите правильный адрес эл. почты",
"error.user.language.invalid": "Введите правильный язык",
"error.user.notFound": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.user.notFound": "Пользователь \"{name}\" не найден",
"error.user.password.invalid": "Пожалуйста, введите правильный пароль. Он должен состоять минимум из 8 символов.",
"error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c",
"error.user.password.undefined": "У пользователя нет пароля",
@ -235,11 +238,11 @@
"field.blocks.delete.confirm": "Вы действительно хотите удалить этот блок?",
"field.blocks.delete.confirm.all": "Вы действительно хотите удалить все блоки?",
"field.blocks.delete.confirm.selected": "Вы действительно хотите удалить эти блоки?",
"field.blocks.empty": "Еще нет блоков",
"field.blocks.empty": "Блоков нет",
"field.blocks.fieldsets.label": "Пожалуйста, выберите тип блока…",
"field.blocks.fieldsets.paste": "Нажмите <kbd>{{ shortcut }}</kbd> чтобы вставить/импортировать блоки из буфера памяти",
"field.blocks.gallery.name": "Галерея",
"field.blocks.gallery.images.empty": "Еще нет изображений",
"field.blocks.gallery.images.empty": "Изображений нет",
"field.blocks.gallery.images.label": "Изображения",
"field.blocks.heading.level": "Уровень",
"field.blocks.heading.name": "Заголовок",
@ -272,17 +275,17 @@
"field.blocks.video.url.label": "Ссылка на видео",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Еще не выбраны файлы",
"field.files.empty": "Файлы не выбраны",
"field.layout.delete": "Удалить разметку",
"field.layout.delete.confirm": "Вы действительно хотите удалить эту разметку?",
"field.layout.empty": "Еще нет строк",
"field.layout.empty": "Строк нет",
"field.layout.select": "Выберите разметку",
"field.pages.empty": "Еще не выбраны страницы",
"field.pages.empty": "Страницы не выбраны",
"field.structure.delete.confirm": "Вы точно хотите удалить эту запись?",
"field.structure.empty": "Еще нет записей",
"field.users.empty": "Еще нет пользователей",
"field.structure.empty": "Записей нет",
"field.users.empty": "Пользователей нет",
"file.blueprint": "У файла пока нет разметки. Вы можете определить новые секции и поля разметки в <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Вы точно хотите удалить файл <br><strong>{filename}</strong>?",
@ -294,6 +297,7 @@
"hide": "Скрыть",
"hour": "Час",
"import": "Импортировать",
"info": "Информация",
"insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"insert.after": "Вставить ниже",
"insert.before": "Вставить выше",
@ -329,17 +333,19 @@
"languages": "Языки",
"languages.default": "Главный язык",
"languages.empty": "Еще нет языков",
"languages.empty": "Языков нет",
"languages.secondary": "Дополнительные языки",
"languages.secondary.empty": "Еще нет дополнительных языков",
"languages.secondary.empty": "Дополнительных языков нет",
"license": "Лицензия",
"license.buy": "Купить лицензию",
"license.register": "Зарегистрировать",
"license.manage": "Управление лицензиями",
"license.register.help": "После покупки вы получили по эл. почте код лицензии. Пожалуйста скопируйте и вставьте сюда чтобы зарегистрировать.",
"license.register.label": "Пожалуйста вставьте код лицензии",
"license.register.success": "Спасибо за поддержку Kirby",
"license.unregistered": "Это незарегистрированная версия Kirby",
"license.unregistered.label": "Не зарегистрировано",
"link": "\u0421\u0441\u044b\u043b\u043a\u0430",
"link.text": "\u0422\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u043a\u0438",
@ -347,7 +353,7 @@
"loading": "Загрузка",
"lock.unsaved": "Несохраненные изменения",
"lock.unsaved.empty": "Больше нет несохраненных изменений",
"lock.unsaved.empty": "Несохраненных изменений больше нет",
"lock.isLocked": "Несохраненные изменения пользователя <strong>{email}</strong>",
"lock.file.isLocked": "В данный момент этот файл редактирует {email}, поэтому его нельзя изменить.",
"lock.page.isLocked": "В данный момент эту страницу редактирует {email}, поэтому его нельзя изменить.",
@ -359,9 +365,9 @@
"login.code.label.password-reset": "Код для сброса пароля",
"login.code.placeholder.email": "000 000",
"login.code.text.email": "Если ваш Email уже зарегистрирован, запрашиваемый код был отправлен на него.",
"login.email.login.body": "Привет, {user.nameOrEmail}!\n\nНедавно вы запросили код для входа в Панель управления {site}.\nСледующий код входа будет действителен в течение {timeout} минут:\n\n{code}\n\nЕсли вы не запрашивали код для входа, проигнорируйте это письмо или обратитесь к администратору, если у вас есть вопросы.\nВ целях безопасности НЕ ПЕРЕСЫЛАЙТЕ это письмо.",
"login.email.login.body": "Привет, {user.nameOrEmail}!\n\nНедавно вы запросили код для входа на «{site}».\nСледующий код входа будет действителен в течение {timeout} минут:\n\n{code}\n\nЕсли вы не запрашивали код для входа, проигнорируйте это письмо или обратитесь к администратору, если у вас есть вопросы.\nВ целях безопасности НЕ ПЕРЕСЫЛАЙТЕ это письмо.",
"login.email.login.subject": "Ваш код для входа",
"login.email.password-reset.body": "Привет, {user.nameOrEmail}!\n\nНедавно вы запросили сброс пароля для входа в Панель управления {site}.\nСледующий код входа будет действителен в течение {timeout} минут:\n\n{code}\n\nЕсли вы не запрашивали сброс пароля, проигнорируйте это письмо или обратитесь к администратору, если у вас есть вопросы.\nВ целях безопасности НЕ ПЕРЕСЫЛАЙТЕ это письмо.",
"login.email.password-reset.body": "Привет, {user.nameOrEmail}!\n\nНедавно вы запросили сброс пароля для входа на «{site}».\nСледующий код входа будет действителен в течение {timeout} минут:\n\n{code}\n\nЕсли вы не запрашивали сброс пароля, проигнорируйте это письмо или обратитесь к администратору, если у вас есть вопросы.\nВ целях безопасности НЕ ПЕРЕСЫЛАЙТЕ это письмо.",
"login.email.password-reset.subject": "Ваш код для сброса пароля",
"login.remember": "Сохранять вход активным",
"login.reset": "Сбросить пароль",
@ -400,7 +406,7 @@
"open": "Открыть",
"open.newWindow": "Открывать в новом окне",
"options": "Опции",
"options.none": "Нет параметров",
"options.none": "Параметров нет",
"orientation": "Ориентация",
"orientation.landscape": "Горизонтальная",
@ -418,7 +424,7 @@
"page.delete.confirm.subpages": "<strong>У этой страницы есть внутренние страницы</strong>.<br>Все внутренние страницы так же будут удалены.",
"page.delete.confirm.title": "Напишите название страницы, чтобы подтвердить",
"page.draft.create": "Создать черновик",
"page.duplicate.appendix": "Скопировать",
"page.duplicate.appendix": "(копия)",
"page.duplicate.files": "Копировать файлы",
"page.duplicate.pages": "Копировать страницы",
"page.sort": "Изменить позицию",
@ -431,7 +437,7 @@
"page.status.unlisted.description": "Страница доступна только по URL",
"pages": "Страницы",
"pages.empty": "Еще нет страниц",
"pages.empty": "Страниц нет",
"pages.status.draft": "Черновики",
"pages.status.listed": "Опубликовано",
"pages.status.unlisted": "Скрытая",
@ -456,7 +462,7 @@
"role.admin.description": "Администратор имеет все права",
"role.admin.title": "Администратор",
"role.all": "Все",
"role.empty": "Нет пользователей с такой ролью",
"role.empty": "Пользователей с такой ролью нет",
"role.description.placeholder": "Без описания",
"role.nobody.description": "Эта роль применяется если у пользователя нет никаких прав",
"role.nobody.title": "Никто",
@ -469,20 +475,28 @@
"section.required": "Секция обязательна",
"security": "Безопасность",
"select": "Выбрать",
"server": "Сервер",
"settings": "Настройка",
"show": "Показать",
"site.blueprint": "У сайта пока нет разметки. Вы можете определить новые секции и поля разметки в <strong>/site/blueprints/site.yml</strong>",
"size": "Размер",
"slug": "Понятная ссылка",
"sort": "Сортировать",
"stats.empty": "Статистики нет",
"system.issues.content": "Похоже, к папке content есть несанкционированный доступ",
"system.issues.debug": "Включен режим отладки (debugging). Используйте его только при разработке.",
"system.issues.git": "Похоже, к папке .git есть несанкционированный доступ",
"system.issues.https": "Рекомендуется использовать HTTPS на всех сайтах",
"system.issues.kirby": "Похоже, к папке kirby есть несанкционированный доступ",
"system.issues.site": "Похоже, к папке site есть несанкционированный доступ",
"title": "Название",
"template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"today": "Сегодня",
"server": "Сервер",
"site.blueprint": "У сайта пока нет разметки. Вы можете определить новые секции и поля разметки в <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Код",
"toolbar.button.bold": "\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.email": "Email",
@ -510,9 +524,9 @@
"translation.locale": "ru_RU",
"upload": "Закачать",
"upload.error.cantMove": "Загруженный файл не может быть перемещен",
"upload.error.cantMove": "Не удается переместить загруженный файл",
"upload.error.cantWrite": "Не получилось записать файл на диск",
"upload.error.default": "Не получилось загрузить файл",
"upload.error.default": "Не удалось загрузить файл",
"upload.error.extension": "Загрузка файла не удалась из за расширения",
"upload.error.formSize": "Загруженный файл больше чем MAX_FILE_SIZE настройка в форме",
"upload.error.iniPostSize": "Загружаемый файл больше чем post_max_size настройка в php.ini",

View file

@ -49,6 +49,9 @@
"email": "E-mail",
"email.placeholder": "mail@example.com",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
"error.access.code": "Neplatný kód",
@ -294,6 +297,7 @@
"hide": "Hide",
"hour": "Hodina",
"import": "Import",
"info": "Info",
"insert": "Vložiť",
"insert.after": "Insert after",
"insert.before": "Insert before",
@ -336,10 +340,12 @@
"license": "Licencia",
"license.buy": "Zakúpiť licenciu",
"license.register": "Registrovať",
"license.manage": "Manage your licenses",
"license.register.help": "Licenčný kód vám bol doručený e-mailom po úspešnom nákupe. Prosím, skopírujte a prilepte ho na uskutočnenie registrácie.",
"license.register.label": "Prosím, zadajte váš licenčný kód",
"license.register.success": "Ďakujeme za vašu podporu Kirby",
"license.unregistered": "Toto je neregistrované demo Kirby",
"license.unregistered.label": "Unregistered",
"link": "Odkaz",
"link.text": "Text odkazu",
@ -469,20 +475,28 @@
"section.required": "The section is required",
"security": "Security",
"select": "Zvoliť",
"server": "Server",
"settings": "Nastavenia",
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"size": "Veľkosť",
"slug": "URL appendix",
"sort": "Zoradiť",
"stats.empty": "No reports",
"system.issues.content": "The content folder seems to be exposed",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed",
"title": "Titulok",
"template": "Šablóna",
"today": "Dnes",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kód",
"toolbar.button.bold": "Tučný",
"toolbar.button.email": "E-mail",

View file

@ -49,6 +49,9 @@
"email": "E-postadress",
"email.placeholder": "namn@exempel.se",
"entries": "Poster",
"entry": "Post",
"environment": "Miljö",
"error.access.code": "Ogiltig kod",
@ -157,7 +160,7 @@
"error.template.default.notFound": "Standardmallen existerar inte",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.unexpected": "Ett oväntat fel uppstod! Aktivera felsökningsläge för mer information: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Du har inte behörighet att ändra e-postadressen för användaren \"{name}\"",
"error.user.changeLanguage.permission": "Du har inte behörighet att ändra språket för användaren \"{name}\"",
@ -294,6 +297,7 @@
"hide": "Göm",
"hour": "Timme",
"import": "Importera",
"info": "Info",
"insert": "Infoga",
"insert.after": "Infoga efter",
"insert.before": "Infoga före",
@ -336,10 +340,12 @@
"license": "Licens",
"license.buy": "Köp en licens",
"license.register": "Registrera",
"license.manage": "Hantera dina licenser",
"license.register.help": "Du fick din licenskod via e-post efter inköpet. Kopiera och klistra in den för att registrera licensen.",
"license.register.label": "Ange din licenskod",
"license.register.success": "Tack för att du stödjer Kirby",
"license.unregistered": "Detta är en oregistrerad demo av Kirby",
"license.unregistered.label": "Oregistrerad",
"link": "L\u00e4nk",
"link.text": "L\u00e4nktext",
@ -469,20 +475,28 @@
"section.required": "Sektionen krävs",
"security": "Säkerhet",
"select": "Välj",
"server": "Server",
"settings": "Inställningar",
"show": "Visa",
"site.blueprint": "Webbplatsen har ingen blueprint än. Du kan skapa en i <strong>/site/blueprints/site.yml</strong>",
"size": "Storlek",
"slug": "URL-appendix",
"sort": "Sortera",
"stats.empty": "Inga rapporter",
"system.issues.content": "Mappen content verkar vara exponerad",
"system.issues.debug": "Felsökningsläget måste vara avstängt i produktion",
"system.issues.git": "Mappen .git verkar vara exponerad",
"system.issues.https": "Vi rekommenderar HTTPS för alla dina webbplatser",
"system.issues.kirby": "Mappen kirby verkar vara exponerad",
"system.issues.site": "Mappen site verkar vara exponerad",
"title": "Titel",
"template": "Mall",
"today": "Idag",
"server": "Server",
"site.blueprint": "Webbplatsen har ingen blueprint än. Du kan skapa en i <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kod",
"toolbar.button.bold": "Fet",
"toolbar.button.email": "E-post",

View file

@ -49,6 +49,9 @@
"email": "E-Posta",
"email.placeholder": "eposta@ornek.com",
"entries": "Girdiler",
"entry": "Girdi",
"environment": "Ortam",
"error.access.code": "Geçersiz kod",
@ -294,6 +297,7 @@
"hide": "Gizle",
"hour": "Saat",
"import": "İçe aktar",
"info": "Bilgi",
"insert": "Ekle",
"insert.after": "Sonrasına ekle",
"insert.before": "Öncesine ekle",
@ -336,10 +340,12 @@
"license": "Lisans",
"license.buy": "Bir lisans satın al",
"license.register": "Kayıt Ol",
"license.manage": "Lisanslarınızı yönetin",
"license.register.help": "Satın alma işleminden sonra e-posta yoluyla lisans kodunuzu aldınız. Lütfen kayıt olmak için kodu kopyalayıp yapıştırın.",
"license.register.label": "Lütfen lisans kodunu giriniz",
"license.register.success": "Kirby'yi desteklediğiniz için teşekkürler",
"license.unregistered": "Bu Kirby'nin kayıtsız bir demosu",
"license.unregistered.label": "Kayıtsız",
"link": "Ba\u011flant\u0131",
"link.text": "Ba\u011flant\u0131 yaz\u0131s\u0131",
@ -354,7 +360,7 @@
"lock.unlock": "Kilidi Aç",
"lock.isUnlocked": "Kaydedilmemiş değişikliklerin üzerine başka bir kullanıcı yazmış. Değişikliklerinizi el ile birleştirmek için değişikliklerinizi indirebilirsiniz.",
"login": "Giri\u015f",
"login": "Giriş",
"login.code.label.login": "Giriş kodu",
"login.code.label.password-reset": "Şifre sıfırlama kodu",
"login.code.placeholder.email": "000 000",
@ -469,20 +475,28 @@
"section.required": "Bölüm gereklidir",
"security": "Güvenlik",
"select": "Seç",
"server": "Sunucu",
"settings": "Ayarlar",
"show": "Göster",
"site.blueprint": "Sitenin henüz bir planı yok. Kurulumu <strong>/site/blueprints/site.yml</strong>'de tanımlayabilirsiniz.",
"size": "Boyut",
"slug": "Web Adres Uzantısı",
"sort": "Sırala",
"stats.empty": "Rapor yok",
"system.issues.content": "İçerik klasörü açığa çıkmış görünüyor",
"system.issues.debug": "Canlı modda hata ayıklama kapatılmalıdır",
"system.issues.git": ".git klasörü açığa çıkmış görünüyor",
"system.issues.https": "Tüm siteleriniz için HTTPS'yi öneriyoruz",
"system.issues.kirby": "Kirby klasörü açığa çıkmış görünüyor",
"system.issues.site": "Site klasörü açığa çıkmış görünüyor",
"title": "Başlık",
"template": "\u015eablon",
"today": "Bugün",
"server": "Sunucu",
"site.blueprint": "Sitenin henüz bir planı yok. Kurulumu <strong>/site/blueprints/site.yml</strong>'de tanımlayabilirsiniz.",
"toolbar.button.code": "Kod",
"toolbar.button.bold": "Kalın Yazı",
"toolbar.button.email": "E-Posta",

View file

@ -1,22 +0,0 @@
module.exports = {
extends: [
"eslint:recommended",
"plugin:cypress/recommended",
"plugin:vue/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"
}
};

View file

@ -1,3 +0,0 @@
{
"trailingComma": "none"
}

View file

@ -0,0 +1,11 @@
const { defineConfig } = require("cypress");
module.exports = defineConfig({
video: false,
e2e: {
baseUrl: "http://sandbox.test",
specPattern: "src/**/*.e2e.js",
supportFile: false
}
});

File diff suppressed because one or more lines are too long

117
kirby/panel/dist/img/icons.svg vendored Executable file → Normal file
View file

@ -24,12 +24,18 @@
<symbol id="icon-angle-up" viewBox="0 0 16 16">
<path d="M12 11.4l-4-4-4 4L2.6 10 8 4.6l5.4 5.4z" />
</symbol>
<symbol id="icon-archive" viewBox="0 0 16 16">
<path d="M15.977 4.887a.975.975 0 0 0-.04-.2.909.909 0 0 0-.089-.186 1.048 1.048 0 0 0-.048-.1l-3-4A1 1 0 0 0 12 0H4a1 1 0 0 0-.8.4l-3 4a1.048 1.048 0 0 0-.048.1.892.892 0 0 0-.089.187.957.957 0 0 0-.04.2A.885.885 0 0 0 0 5v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a.87.87 0 0 0-.023-.113ZM8 13.5 5 10h2V7h2v3h2ZM3 4l1.5-2h7L13 4Z" />
</symbol>
<symbol id="icon-attachment" viewBox="0 0 16 16">
<path d="M5,5v4c0,1.7,1.3,3,3,3s3-1.3,3-3V4.5C11,2,9,0,6.5,0S2,2,2,4.5V10c0,3.3,2.7,6,6,6s6-2.7,6-6V4h-2v6 c0,2.2-1.8,4-4,4s-4-1.8-4-4V4.5C4,3.1,5.1,2,6.5,2S9,3.1,9,4.5V9c0,0.6-0.4,1-1,1S7,9.6,7,9V5H5z" />
</symbol>
<symbol id="icon-audio" viewBox="0 0 16 16">
<path d="M14,0H5C4.4,0,4,0.4,4,1v9.2C3.7,10.1,3.4,10,3,10c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3V5h7v3.2 C12.7,8.1,12.4,8,12,8c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3V1C15,0.4,14.6,0,14,0z" />
</symbol>
<symbol id="icon-badge" viewBox="0 0 16 16">
<path d="M14,6V3c0-0.552-0.448-1-1-1h-3L8,0L6,2H3C2.448,2,2,2.448,2,3v3L0,8l2,2v3c0,0.552,0.448,1,1,1h3l2,2l2-2h3 c0.552,0,1-0.448,1-1v-3l2-2L14,6z" />
</symbol>
<symbol id="icon-bars" viewBox="0 0 16 16">
<path d="M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z" />
</symbol>
@ -60,6 +66,10 @@
<symbol id="icon-bug" viewBox="0 0 16 16">
<path d="M16,4V3h-2v1c0,0.6-0.4,1-1,1h-1c-0.3-0.4-0.6-0.7-1-1V3c0-1.7-1.3-3-3-3S5,1.3,5,3v1C4.6,4.3,4.3,4.6,4,5H3 C2.4,5,2,4.6,2,4V3H0v1c0,1.7,1.3,3,3,3h0.1C3,7.3,3,7.7,3,8H0v2h3v1c-1.7,0-3,1.3-3,3v1h2v-1c0-0.6,0.4-1,1-1h0.4 C4.2,14.8,6,16,8,16s3.8-1.2,4.6-3H13c0.6,0,1,0.4,1,1v1h2v-1c0-1.7-1.3-3-3-3v-1h3V8h-3c0-0.3,0-0.7-0.1-1H13C14.7,7,16,5.7,16,4z"/>
</symbol>
<symbol id="icon-brush" viewBox="0 0 16 16">
<path d="M9,10L6,7l6.4-6.4c0.8-0.8,2.2-0.8,3,0l0,0c0.8,0.8,0.8,2.2,0,3L9,10z" />
<path d="M1.4,10.3c1.2-1.2,3.1-1.2,4.2,0s1.2,3.1,0,4.2S0,16,0,16S0.2,11.5,1.4,10.3z" />
</symbol>
<symbol id="icon-calendar" viewBox="0 0 16 16">
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 12H2V5h12v9z" />
<path d="M4 7h2v2H4V7zM7 7h2v2H7V7zM4 10h2v2H4v-2zM7 10h2v2H7v-2zM10 7h2v2h-2V7zM10 10h2v2h-2v-2z" />
@ -140,6 +150,15 @@
<symbol id="icon-dashboard" viewBox="0 0 16 16">
<path d="M6 9H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1zM6 16H1a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1zM15 6h-5a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zM15 16h-5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1z" />
</symbol>
<symbol id="icon-discord" viewBox="0 0 16 16">
<path d="M6.552,6.712a.891.891,0,0,0,0,1.776A.852.852,0,0,0,7.368,7.6.847.847,0,0,0,6.552,6.712Zm2.92,0a.891.891,0,1,0,.816.888A.852.852,0,0,0,9.472,6.712Z" />
<path d="M13.36,0H2.64A1.644,1.644,0,0,0,1,1.648V12.464a1.644,1.644,0,0,0,1.64,1.648h9.072l-.424-1.48,1.024.952.968.9L15,16V1.648A1.644,1.644,0,0,0,13.36,0ZM10.272,10.448S9.984,10.1,9.744,9.8a2.524,2.524,0,0,0,1.448-.952,4.578,4.578,0,0,1-.92.472,5.265,5.265,0,0,1-1.16.344A5.6,5.6,0,0,1,7.04,9.656a6.716,6.716,0,0,1-1.176-.344,4.683,4.683,0,0,1-.912-.472,2.488,2.488,0,0,0,1.4.944c-.24.3-.536.664-.536.664a2.9,2.9,0,0,1-2.44-1.216A10.713,10.713,0,0,1,4.528,4.568a3.956,3.956,0,0,1,2.248-.84l.08.1a5.4,5.4,0,0,0-2.1,1.048s.176-.1.472-.232a6.008,6.008,0,0,1,1.816-.5.788.788,0,0,1,.136-.016A6.769,6.769,0,0,1,8.792,4.1a6.521,6.521,0,0,1,2.408.768A5.324,5.324,0,0,0,9.208,3.856l.112-.128a3.956,3.956,0,0,1,2.248.84A10.713,10.713,0,0,1,12.72,9.232,2.924,2.924,0,0,1,10.272,10.448Z" />
</symbol>
<symbol id="icon-discount" viewBox="0 0 16 16">
<rect x="-0.211" y="7" width="16.422" height="2" transform="translate(-3.094 10.219) rotate(-56.31)" />
<path d="M7,4A3,3,0,1,0,4,7,3,3,0,0,0,7,4ZM3,4A1,1,0,1,1,4,5,1,1,0,0,1,3,4Z" />
<path d="M12,9a3,3,0,1,0,3,3A3,3,0,0,0,12,9Zm0,4a1,1,0,1,1,1-1A1,1,0,0,1,12,13Z" />
</symbol>
<symbol id="icon-display" viewBox="0 0 16 16">
<path d="M15,0H1C0.4,0,0,0.4,0,1v11c0,0.6,0.4,1,1,1h5v1H3v2h10v-2h-3v-1h5c0.6,0,1-0.4,1-1V1C16,0.4,15.6,0,15,0z M14,2v7H2V2H14z" />
</symbol>
@ -175,69 +194,35 @@
<symbol id="icon-facebook" viewBox="0 0 16 16">
<path d="M15.3 0H.7C.3 0 0 .3 0 .7v14.7c0 .3.3.6.7.6H8v-5H6V8h2V6c0-2.1 1.2-3 3-3h2v3h-1c-.6 0-1 .4-1 1v1h2.6l-.6 3h-2v5h4.3c.4 0 .7-.3.7-.7V.7c0-.4-.3-.7-.7-.7z" />
</symbol>
<symbol id="icon-file-word" viewBox="0 0 32 32">
<g>
<circle cx="14" cy="17" r="1" />
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<path d="M17.6,25h-7.2l-4.6-8.1L14,6.4l8.2,10.5L17.6,25z M11.6,23h4.8l3.4-5.9L14,9.6l-5.8,7.5L11.6,23z" />
<rect x="7" y="23" width="14" height="2" />
<circle cx="14" cy="17" r="2" />
</g>
<symbol id="icon-file" viewBox="0 0 32 32">
<use href="#icon-attachment" />
</symbol>
<symbol id="icon-file-audio" viewBox="0 0 32 32">
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<polygon points="12,20.5 10,20.5 10,8 21,8 21,18.5 19,18.5 19,10 12,10" />
<path d="M8.5,24C6.6,24,5,22.4,5,20.5S6.6,17,8.5,17s3.5,1.6,3.5,3.5S10.4,24,8.5,24z M8.5,19C7.7,19,7,19.7,7,20.5 S7.7,22,8.5,22s1.5-0.7,1.5-1.5S9.3,19,8.5,19z" />
<path d="M17.5,22c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5s3.5,1.6,3.5,3.5S19.4,22,17.5,22z M17.5,17 c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S18.3,17,17.5,17z" />
</symbol>
<symbol id="icon-file-image" viewBox="0 0 32 32">
<polygon points="13.1,23.4 8.1,19.3 5,22.4 3.6,21 7.9,16.7 12.9,20.6 19,13.4 24.4,20.2 22.8,21.4 19,16.6 " />
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<path d="M12.5,14C10.6,14,9,12.4,9,10.5S10.6,7,12.5,7S16,8.6,16,10.5S14.4,14,12.5,14z M12.5,9 C11.7,9,11,9.7,11,10.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S13.3,9,12.5,9z" />
</symbol>
<symbol id="icon-file-text" viewBox="0 0 32 32">
<path d="M32,32H0V0h32V32z M2,30h28V2H2V30z" />
<polygon points="23.1,25.4 16.3,8 15.7,8 8.9,25.4 7.1,24.6 14.3,6 17.7,6 24.9,24.6 " />
<rect x="11.1" y="16" width="9.8" height="2" />
<rect x="5" y="24" width="6" height="2" />
<rect x="21" y="24" width="6" height="2" />
</symbol>
<symbol id="icon-file-video" viewBox="0 0 32 32">
<path d="M32,32H0V0h32V32z M2,30h28V2H2V30z" />
<path d="M11,18.8V5.2L21.9,12L11,18.8z M13,8.8v6.4l5.1-3.2L13,8.8z" />
<rect x="24" y="23" width="4" height="2" />
<rect x="4" y="23" width="12" height="2" />
<path d="M18,28c-2.2,0-4-1.8-4-4s1.8-4,4-4c2.2,0,4,1.8,4,4S20.2,28,18,28z M18,22c-1.1,0-2,0.9-2,2s0.9,2,2,2 c1.1,0,2-0.9,2-2S19.1,22,18,22z" />
<use href="#icon-audio" />
</symbol>
<symbol id="icon-file-code" viewBox="0 0 32 32">
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<polygon points="9,20.4 4.6,16 9,11.6 10.4,13 7.4,16 10.4,19 " />
<polygon points="19,20.4 17.6,19 20.6,16 17.6,13 19,11.6 23.4,16 " />
<rect x="13" y="8.7" transform="matrix(0.9488 0.3159 -0.3159 0.9488 5.7719 -3.6035)" width="2" height="14.6" />
</symbol>
<symbol id="icon-file-zip" viewBox="0 0 32 32">
<polygon points="28,32 0,32 0,0 15,0 15,8 13,8 13,2 2,2 2,30 26,30 26,2 18,2 18,0 28,0 " />
<path d="M18,19h-8v-9h8V19z M12,17h4v-5h-4V17z" />
<rect x="12" y="25" width="4" height="2" />
<rect x="12" y="21" width="4" height="2" />
<use href="#icon-code" />
</symbol>
<symbol id="icon-file-document" viewBox="0 0 32 32">
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<rect x="16" y="7" width="6" height="2" />
<rect x="16" y="12" width="6" height="2" />
<rect x="6" y="17" width="16" height="2" />
<rect x="6" y="22" width="16" height="2" />
<path d="M14,14H6V7h8V14z M8,12h4V9H8V12z" />
<use href="#icon-document" />
</symbol>
<symbol id="icon-file-image" viewBox="0 0 32 32">
<use href="#icon-image" />
</symbol>
<symbol id="icon-file-spreadsheet" viewBox="0 0 32 32">
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<rect x="13" y="10" width="2" height="12" />
<rect x="8" y="17" width="2" height="5" />
<rect x="18" y="14" width="2" height="8" />
<use href="#icon-table" />
</symbol>
<symbol id="icon-file" viewBox="0 0 32 32">
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<path d="M19.5,22h-11C6.6,22,5,20.4,5,18.5c0-1.8,1.3-3.3,3.1-3.5c0.5-2.8,2.9-5,5.9-5s5.5,2.2,5.9,5 c1.7,0.2,3.1,1.7,3.1,3.5C23,20.4,21.4,22,19.5,22z M8.5,17C7.7,17,7,17.7,7,18.5S7.7,20,8.5,20h11c0.8,0,1.5-0.7,1.5-1.5 S20.3,17,19.5,17c-0.1,0-0.2,0-0.3,0L18,17.3l0-1.3c0-2.2-1.8-3.9-4-3.9c-2.2,0-4,1.8-4,3.9l0,0.1v1.2L8.8,17C8.7,17,8.6,17,8.5,17 z" />
<symbol id="icon-file-text" viewBox="0 0 32 32">
<use href="#icon-markdown" />
</symbol>
<symbol id="icon-file-video" viewBox="0 0 32 32">
<use href="#icon-video" />
</symbol>
<symbol id="icon-file-word" viewBox="0 0 32 32">
<use href="#icon-pen" />
</symbol>
<symbol id="icon-file-zip" viewBox="0 0 32 32">
<use href="#icon-archive" />
</symbol>
<symbol id="icon-filter" viewBox="0 0 16 16">
<use href="#icon-funnel" />
@ -248,6 +233,11 @@
<symbol id="icon-folder" viewBox="0 0 16 16">
<path d="M15,3H8V1c0-0.6-0.4-1-1-1H1C0.4,0,0,0.4,0,1v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V4C16,3.4,15.6,3,15,3z M6,2v2c0,0.6,0.4,1,1,1h7v2H2V2H6z M2,14V9h12v5H2z"/>
</symbol>
<symbol id="icon-folder-structure" viewBox="0 0 16 16">
<path d="M15,10H7c-0.552,0-1,0.448-1,1v1v2v1c0,0.552,0.448,1,1,1h8c0.552,0,1-0.448,1-1v-4 C16,10.448,15.552,10,15,10z" />
<path d="M5,12H2V6h3V4H2V1c0-0.552-0.448-1-1-1S0,0.448,0,1v12c0,0.553,0.448,1,1,1h4V12z" />
<path d="M15,2H7C6.448,2,6,2.448,6,3v1v2v1c0,0.552,0.448,1,1,1h8c0.552,0,1-0.448,1-1V3C16,2.448,15.552,2,15,2z" />
</symbol>
<symbol id="icon-food" viewBox="0 0 16 16">
<path d="M6,0,5.6,5H4.4L4,0H3L2.6,5H1.4L1,0H0V6A2,2,0,0,0,2,8v6.5a1.5,1.5,0,0,0,3,0V8A2,2,0,0,0,7,6V0Z" />
<path d="M15,0a5,5,0,0,0-5,5v6h2v3.5A1.5,1.5,0,0,0,13.5,16h0A1.5,1.5,0,0,0,15,14.5V0Z" />
@ -255,6 +245,9 @@
<symbol id="icon-funnel" viewBox="0 0 16 16">
<path d="M9 15H7a1 1 0 0 1 0-2h2a1 1 0 0 1 0 2zM11 11H5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2zM13 7H3a1 1 0 0 1 0-2h10a1 1 0 0 1 0 2zM15 3H1a1 1 0 0 1 0-2h14a1 1 0 0 1 0 2z" />
</symbol>
<symbol id="icon-github" viewBox="0 0 16 16">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8,0.2c-4.4,0-8,3.6-8,8c0,3.5,2.3,6.5,5.5,7.6 C5.9,15.9,6,15.6,6,15.4c0-0.2,0-0.7,0-1.4C3.8,14.5,3.3,13,3.3,13c-0.4-0.9-0.9-1.2-0.9-1.2c-0.7-0.5,0.1-0.5,0.1-0.5 c0.8,0.1,1.2,0.8,1.2,0.8C4.4,13.4,5.6,13,6,12.8c0.1-0.5,0.3-0.9,0.5-1.1c-1.8-0.2-3.6-0.9-3.6-4c0-0.9,0.3-1.6,0.8-2.1 c-0.1-0.2-0.4-1,0.1-2.1c0,0,0.7-0.2,2.2,0.8c0.6-0.2,1.3-0.3,2-0.3c0.7,0,1.4,0.1,2,0.3c1.5-1,2.2-0.8,2.2-0.8 c0.4,1.1,0.2,1.9,0.1,2.1c0.5,0.6,0.8,1.3,0.8,2.1c0,3.1-1.9,3.7-3.7,3.9C9.7,12,10,12.5,10,13.2c0,1.1,0,1.9,0,2.2 c0,0.2,0.1,0.5,0.6,0.4c3.2-1.1,5.5-4.1,5.5-7.6C16,3.8,12.4,0.2,8,0.2z" />
</symbol>
<symbol id="icon-globe" viewBox="0 0 16 16">
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5.9 7H12c-.1-1.5-.4-2.9-.8-4.1 1.4.9 2.4 2.4 2.7 4.1zM8 14c-.6 0-1.8-1.9-2-5h4c-.2 3.1-1.4 5-2 5zM6 7c.2-3.1 1.3-5 2-5s1.8 1.9 2 5H6zM4.9 2.9C4.4 4.1 4.1 5.5 4 7H2.1c.3-1.7 1.3-3.2 2.8-4.1zM2.1 9H4c.1 1.5.4 2.9.8 4.1-1.4-.9-2.4-2.4-2.7-4.1zm9 4.1c.5-1.2.7-2.6.8-4.1h1.9c-.2 1.7-1.2 3.2-2.7 4.1z" />
</symbol>
@ -422,6 +415,10 @@
<symbol id="icon-mobile" viewBox="0 0 16 16">
<path d="M12,0H4C2.897,0,2,0.897,2,2v12c0,1.103,0.897,2,2,2h8c1.103,0,2-0.897,2-2V2C14,0.897,13.103,0,12,0z M8,14 c-0.552,0-1-0.448-1-1s0.448-1,1-1s1,0.448,1,1S8.552,14,8,14z M12,10H4V2h8V10z" />
</symbol>
<symbol id="icon-money" viewBox="0 0 16 16">
<path d="M15,2H1C0.4,2,0,2.4,0,3v10c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V3C16,2.4,15.6,2,15,2z M11.1,12H4.9 C4.5,10.6,3.4,9.5,2,9.1V6.9C3.4,6.5,4.5,5.4,4.9,4h6.3c0.4,1.4,1.5,2.5,2.9,2.9v2.3C12.6,9.5,11.5,10.6,11.1,12z" />
<circle cx="8" cy="8" r="2" />
</symbol>
<symbol id="icon-moon" viewBox="0 0 16 16">
<path d="M5.2,2C2.2,2.8,0,5.6,0,8.9C0,12.8,3.2,16,7.1,16c3.3,0,6-2.2,6.9-5.2C8.7,12.2,3.8,7.3,5.2,2z" />
<circle cx="10" cy="1" r="1" />
@ -456,6 +453,9 @@
<path d="M14 0H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H3V2h10v12z" />
<path d="M4 3h4v4H4V3zM9 4h3v1H9V4zM9 6h3v1H9V6zM4 8h8v1H4V8zM4 10h8v1H4v-1zM4 12h5v1H4v-1z" />
</symbol>
<symbol id="icon-palette" viewBox="0 0 16 16">
<path d="M13.9,3.8c-3.6-1.7-6.6,1.8-8,0c-0.5-0.7,0.7-2,0-2.9c-0.5-0.6-1.7-0.5-2.4,0C1.4,2.4,0,4.8,0,7.5 c0,4.4,3.6,8,8,8c3.7,0,6.8-2.5,7.7-5.9C16.1,8.5,16.5,5.1,13.9,3.8z M3,8C2.4,8,2,7.6,2,7c0-0.6,0.4-1,1-1s1,0.4,1,1 C4,7.6,3.6,8,3,8z M5,12c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1s1,0.4,1,1C6,11.6,5.6,12,5,12z M9,14c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C10,13.6,9.6,14,9,14z M12,10c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2s2,0.9,2,2C14,9.1,13.1,10,12,10z" />
</symbol>
<symbol id="icon-paragraph" viewBox="0 0 16 16">
<path d="M6,0V0A4,4,0,0,0,6,8v8H8V2h3V16h2V2h2V0Z" />
</symbol>
@ -466,6 +466,9 @@
<path d="M12.8,1.2C12,0.4,10.7,0,9,0H4C3.6,0,3.4,0.3,3.3,0.6L1.2,13.7c0,0.3,0.2,0.5,0.4,0.5h3.1l0.7-4.7 c0.1-0.3,0.4-0.6,0.7-0.6h1.5c2.9,0,5.1-1.2,5.8-4.5C13.4,4.3,13.7,2.3,12.8,1.2z" />
<path d="M14.3,4.8c-0.8,3.3-3,5.1-6.7,5.1H6.4L5.5,16h2c0.3,0,0.6-0.2,0.6-0.5l0.5-3.2l0-0.2c0.1-0.6,1-0.5,1-0.5 c2.5,0,4.5-1,5-4C14.9,6.5,14.8,5.5,14.3,4.8z" />
</symbol>
<symbol id="icon-pen" viewBox="0 0 16 16">
<path d="M15.207,8.793l-5.5-5.5c-0.391-0.391-1.023-0.391-1.414,0l-7,7c-0.128,0.128-0.219,0.289-0.263,0.464l-1,4 c-0.085,0.341,0.015,0.701,0.263,0.95C0.483,15.897,0.738,16,1,16c0.081,0,0.162-0.01,0.243-0.03l4-1 c0.176-0.044,0.336-0.135,0.464-0.263L12,8.414L13.086,9.5l-3.293,3.293c-0.391,0.391-0.391,1.023,0,1.414 c0.391,0.391,1.023,0.391,1.414,0l4-4C15.598,9.816,15.598,9.184,15.207,8.793z"></path> <path d="M11.121,1.879l3,3l1.258-1.258c0.828-0.828,0.828-2.172,0-3v0c-0.828-0.828-2.172-0.828-3,0 L11.121,1.879L11.121,1.879z" />
</symbol>
<symbol id="icon-phone" viewBox="0 0 16 16">
<path d="M15.285 12.305l-2.578-2.594a1 1 0 0 0-1.416-.002L9 12 4 7l2.294-2.294a1 1 0 0 0 .001-1.414L3.715.708a1 1 0 0 0-1.415 0L.004 3.003 0 3c0 7.18 5.82 13 13 13l2.283-2.283a1 1 0 0 0 .002-1.412z" />
</symbol>
@ -573,6 +576,9 @@
<symbol id="icon-star-outline" viewBox="0 0 16 16">
<path d="M11.86,15.542L8,13.513l-3.86,2.029c-0.727,0.387-1.592-0.235-1.451-1.054l0.737-4.299L0.302,7.145 c-0.594-0.58-0.263-1.587,0.555-1.706l4.316-0.627L7.104,0.9c0.336-0.683,1.457-0.683,1.793,0l1.931,3.911l4.316,0.627 c0.818,0.119,1.148,1.126,0.555,1.706l-3.124,3.045l0.737,4.299C13.453,15.311,12.586,15.924,11.86,15.542z M8.466,11.498 l2.532,1.331l-0.483-2.82c-0.056-0.324,0.052-0.655,0.287-0.885l2.049-1.998L10.02,6.715C9.693,6.668,9.412,6.463,9.267,6.168 L8,3.602L6.733,6.168c-0.146,0.295-0.427,0.5-0.753,0.547L3.149,7.126l2.049,1.998c0.235,0.229,0.343,0.561,0.287,0.885 l-0.483,2.82l2.532-1.331C7.826,11.344,8.174,11.344,8.466,11.498z" />
</symbol>
<symbol id="icon-store" viewBox="0 0 16 16">
<path d="M13.9,0.5C13.7,0.2,13.4,0,13,0H3C2.6,0,2.3,0.2,2.1,0.5C0,4.5,0,4.7,0,5c0,1.1,0.9,2,2,2v8c0,0.6,0.4,1,1,1 h10c0.6,0,1-0.4,1-1V7c1.1,0,2-0.9,2-2C16,4.7,16,4.5,13.9,0.5z M10,14v-4H6v4H4V6.7C4.3,6.9,4.6,7,5,7c0.6,0,1.1-0.3,1.5-0.7 C6.9,6.7,7.4,7,8,7s1.1-0.3,1.5-0.7C9.9,6.7,10.4,7,11,7c0.4,0,0.7-0.1,1-0.3V14H10z" />
</symbol>
<symbol id="icon-strikethrough" viewBox="0 0 16 16">
<path d="M9,13.27924V11H7v2.27924c0,0.43042-0.27545,0.81256-0.68378,0.94867L4,15v1h4h4v-1l-2.31622-0.77209 C9.27545,14.0918,9,13.70966,9,13.27924z"/>
<path d="M9,2h3.38196c0.37878,0,0.72504,0.21399,0.89441,0.5528L14,4h1V0H8H1v4h1l0.72363-1.4472 C2.89301,2.21399,3.23926,2,3.61804,2H7v5h2V2z"/>
@ -626,6 +632,9 @@
<rect y="9" width="16" height="2" />
<rect x="6" y="13" width="10" height="2" />
</symbol>
<symbol id="icon-ticket" viewBox="0 0 16 16">
<path d="M16,6.003v-4c0-0.552-0.448-1-1-1H1c-0.552,0-1,0.448-1,1v4c1.1,0,2,0.9,2,2c0,1.1-0.9,2-2,2V14 c0,0.552,0.448,1,1,1h14c0.552,0,1-0.448,1-1v-3.997c-1.1,0-2-0.9-2-2C14,6.902,14.9,6.003,16,6.003z" />
</symbol>
<symbol id="icon-tiktok" viewBox="0 0 16 16">
<path d="M6.793,5.958V8.706a2.392,2.392,0,0,0-3,2.216,2.163,2.163,0,0,0,2.312,2.3,2.155,2.155,0,0,0,2.311-2.326V0h2.719c.463,2.876,1.9,3.544,3.827,3.852V6.608a8.19,8.19,0,0,1-3.75-1.266v5.445C11.21,13.25,9.75,16,6.125,16A5.11,5.11,0,0,1,1.04,10.761,5.01,5.01,0,0,1,6.793,5.958Z" />
</symbol>

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more