Update Kirby and dependencies
This commit is contained in:
parent
503b339974
commit
399fa20902
439 changed files with 66915 additions and 64442 deletions
139
composer.lock
generated
139
composer.lock
generated
|
@ -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.6",
|
||||
"version": "3.7.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getkirby/kirby.git",
|
||||
"reference": "005fc78fcc0e7f99f61e6973efa8ea8ec85741d9"
|
||||
"reference": "021561f7444896fc9917eccb52768a6e715e9a74"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getkirby/kirby/zipball/005fc78fcc0e7f99f61e6973efa8ea8ec85741d9",
|
||||
"reference": "005fc78fcc0e7f99f61e6973efa8ea8ec85741d9",
|
||||
"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.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.25.0",
|
||||
"symfony/polyfill-mbstring": "1.25.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-05-05T11:30:27+00:00"
|
||||
"time": "2022-08-30T18:27:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "getkirby/composer-installer",
|
||||
|
@ -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",
|
||||
|
@ -799,16 +820,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-idn",
|
||||
"version": "v1.25.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.25.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -882,7 +903,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-09-14T14:02:44+00:00"
|
||||
"time": "2022-05-24T11:49:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
|
@ -970,16 +991,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.25.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.25.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.4.1",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342"
|
||||
"reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342",
|
||||
"reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
|
||||
"reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1113,7 +1134,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.4.1"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1125,7 +1146,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-05-17T05:48:52+00:00"
|
||||
"time": "2022-08-12T06:47:24+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
165
kirby/cacert.pem
165
kirby/cacert.pem
|
@ -1,7 +1,7 @@
|
|||
##
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Tue Apr 26 03:12:05 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: 34a54d5191775c1bd37be6cfd3f09e831e072555dc3a2e51f4a2c4b0f8ada5cc
|
||||
## 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-----
|
||||
|
@ -3345,3 +3321,140 @@ 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-----
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"description": "The Kirby 3 core",
|
||||
"license": "proprietary",
|
||||
"type": "kirby-cms",
|
||||
"version": "3.6.6",
|
||||
"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.10.0",
|
||||
"michelf/php-smartypants": "1.8.1",
|
||||
"phpmailer/phpmailer": "6.5.4",
|
||||
"psr/log": "1.1.4",
|
||||
"symfony/polyfill-intl-idn": "1.25.0",
|
||||
"symfony/polyfill-mbstring": "1.25.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": {
|
||||
|
|
88
kirby/composer.lock
generated
88
kirby/composer.lock
generated
|
@ -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": "cb6bffc372828b6d36107d104c0b2a3e",
|
||||
"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",
|
||||
|
@ -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.25.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.25.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.25.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.25.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"
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
],
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
],
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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']
|
||||
|
|
|
@ -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())
|
||||
]),
|
||||
]
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
];
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
21
kirby/config/areas/logout.php
Normal file
21
kirby/config/areas/logout.php
Normal 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');
|
||||
},
|
||||
]
|
||||
]
|
||||
];
|
||||
};
|
|
@ -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',
|
||||
|
|
|
@ -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';
|
||||
|
@ -33,7 +35,7 @@ return [
|
|||
'fields' => [
|
||||
'position' => Field::pagePosition($page),
|
||||
],
|
||||
'submitButton' => t('change'),
|
||||
'submitButton' => I18n::translate('change'),
|
||||
'value' => [
|
||||
'position' => $page->panel()->position()
|
||||
]
|
||||
|
@ -41,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',
|
||||
];
|
||||
|
@ -75,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,
|
||||
]
|
||||
];
|
||||
|
@ -84,7 +92,7 @@ return [
|
|||
|
||||
$fields = [
|
||||
'status' => [
|
||||
'label' => t('page.changeStatus.select'),
|
||||
'label' => I18n::translate('page.changeStatus.select'),
|
||||
'type' => 'radio',
|
||||
'required' => true,
|
||||
'options' => $states
|
||||
|
@ -105,7 +113,7 @@ return [
|
|||
'component' => 'k-form-dialog',
|
||||
'props' => [
|
||||
'fields' => $fields,
|
||||
'submitButton' => t('change'),
|
||||
'submitButton' => I18n::translate('change'),
|
||||
'value' => [
|
||||
'status' => $status,
|
||||
'position' => $position
|
||||
|
@ -114,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',
|
||||
];
|
||||
|
@ -145,7 +159,7 @@ return [
|
|||
'required' => true
|
||||
])
|
||||
],
|
||||
'submitButton' => t('change'),
|
||||
'submitButton' => I18n::translate('change'),
|
||||
'value' => [
|
||||
'template' => $page->intendedTemplate()->name()
|
||||
]
|
||||
|
@ -153,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',
|
||||
];
|
||||
|
@ -164,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',
|
||||
|
@ -183,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(),
|
||||
|
@ -198,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) {
|
||||
|
@ -256,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);
|
||||
|
@ -300,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
|
||||
]);
|
||||
|
@ -310,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' => '',
|
||||
|
@ -321,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([
|
||||
|
@ -329,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 [
|
||||
|
@ -347,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())
|
||||
]);
|
||||
|
||||
|
@ -359,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',
|
||||
]
|
||||
|
@ -383,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']);
|
||||
}
|
||||
|
||||
|
@ -425,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'
|
||||
]
|
||||
])
|
||||
|
@ -433,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
|
||||
|
@ -442,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
|
||||
|
@ -453,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 [
|
||||
|
@ -511,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',
|
||||
];
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)',
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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') . ' →</a>' :
|
||||
// @codeCoverageIgnoreEnd
|
||||
'<a href="https://getkirby.com/buy">' . I18n::translate('license.buy') . ' →</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
|
||||
}
|
||||
|
|
|
@ -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')
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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())
|
||||
])
|
||||
]
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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: ?>
|
||||
|
|
|
@ -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()): ?>
|
||||
|
|
|
@ -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);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
],
|
||||
|
|
|
@ -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;
|
||||
|
|
41
kirby/config/fields/toggles.php
Normal file
41
kirby/config/fields/toggles.php
Normal 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) ?? '';
|
||||
},
|
||||
]
|
||||
];
|
|
@ -10,6 +10,7 @@ return [
|
|||
*/
|
||||
'converter' => null,
|
||||
'counter' => null,
|
||||
'pattern' => null,
|
||||
'spellcheck' => null,
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
@ -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;
|
||||
},
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -107,7 +107,6 @@ return function ($kirby) {
|
|||
if ($kirby->multilang() === true) {
|
||||
$after = LanguageRoutes::create($kirby);
|
||||
} else {
|
||||
|
||||
// Single-language home
|
||||
$after[] = [
|
||||
'pattern' => '',
|
||||
|
|
|
@ -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
|
||||
|
|
36
kirby/config/sections/mixins/details.php
Normal file
36
kirby/config/sections/mixins/details.php
Normal 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;
|
||||
}
|
||||
}
|
||||
]
|
||||
];
|
|
@ -1,18 +1,26 @@
|
|||
<?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 deprecate in 3.7
|
||||
* @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);
|
||||
},
|
||||
/**
|
||||
* label is the new official replacement for 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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
],
|
||||
];
|
||||
|
|
|
@ -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(),
|
||||
];
|
||||
},
|
||||
}
|
||||
]
|
||||
];
|
||||
|
|
19
kirby/config/sections/mixins/search.php
Normal file
19
kirby/config/sections/mixins/search.php
Normal 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');
|
||||
}
|
||||
]
|
||||
];
|
53
kirby/config/sections/mixins/sort.php
Normal file
53
kirby/config/sections/mixins/sort.php
Normal 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;
|
||||
}
|
||||
]
|
||||
];
|
|
@ -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
|
||||
],
|
||||
|
|
62
kirby/config/sections/stats.php
Normal file
62
kirby/config/sections/stats.php
Normal 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;
|
||||
}
|
||||
]
|
||||
];
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -336,10 +340,12 @@
|
|||
"license": "Licence",
|
||||
"license.buy": "Acheter une licence",
|
||||
"license.register": "S’enregistrer",
|
||||
"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",
|
||||
|
@ -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 n’a pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/site.yml</strong>",
|
||||
"size": "Poids",
|
||||
"slug": "Identifiant de l’URL",
|
||||
"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": "Aujourd’hui",
|
||||
|
||||
"server": "Serveur",
|
||||
|
||||
"site.blueprint": "Ce site n’a 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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "이메일 주소",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -49,6 +49,9 @@
|
|||
"email": "E-mailadres",
|
||||
"email.placeholder": "mail@voorbeeld.nl",
|
||||
|
||||
"entries": "Entries",
|
||||
"entry": "Entry",
|
||||
|
||||
"environment": "Omgeving",
|
||||
|
||||
"error.access.code": "Ongeldige code",
|
||||
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
11
kirby/panel/cypress.config.js
Normal file
11
kirby/panel/cypress.config.js
Normal 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
|
||||
}
|
||||
});
|
2
kirby/panel/dist/css/style.css
vendored
2
kirby/panel/dist/css/style.css
vendored
File diff suppressed because one or more lines are too long
117
kirby/panel/dist/img/icons.svg
vendored
Executable file → Normal file
117
kirby/panel/dist/img/icons.svg
vendored
Executable file → Normal 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 |
2
kirby/panel/dist/js/index.js
vendored
2
kirby/panel/dist/js/index.js
vendored
File diff suppressed because one or more lines are too long
15
kirby/panel/dist/js/vendor.js
vendored
15
kirby/panel/dist/js/vendor.js
vendored
File diff suppressed because one or more lines are too long
7
kirby/panel/dist/js/vuedraggable.js
vendored
Normal file
7
kirby/panel/dist/js/vuedraggable.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -8,6 +8,7 @@ use Kirby\Exception\NotFoundException;
|
|||
use Kirby\Filesystem\F;
|
||||
use Kirby\Http\Response;
|
||||
use Kirby\Http\Router;
|
||||
use Kirby\Toolkit\I18n;
|
||||
use Kirby\Toolkit\Pagination;
|
||||
use Kirby\Toolkit\Properties;
|
||||
use Kirby\Toolkit\Str;
|
||||
|
@ -679,6 +680,12 @@ class Api
|
|||
*/
|
||||
public function responseForException(Throwable $e): array
|
||||
{
|
||||
if (isset($this->kirby) === true) {
|
||||
$docRoot = $this->kirby->environment()->get('DOCUMENT_ROOT');
|
||||
} else {
|
||||
$docRoot = $_SERVER['DOCUMENT_ROOT'] ?? null;
|
||||
}
|
||||
|
||||
// prepare the result array for all exception types
|
||||
$result = [
|
||||
'status' => 'error',
|
||||
|
@ -686,7 +693,7 @@ class Api
|
|||
'code' => empty($e->getCode()) === true ? 500 : $e->getCode(),
|
||||
'exception' => get_class($e),
|
||||
'key' => null,
|
||||
'file' => F::relativepath($e->getFile(), $_SERVER['DOCUMENT_ROOT'] ?? null),
|
||||
'file' => F::relativepath($e->getFile(), $docRoot),
|
||||
'line' => $e->getLine(),
|
||||
'details' => [],
|
||||
'route' => $this->route ? $this->route->pattern() : null
|
||||
|
@ -735,13 +742,13 @@ class Api
|
|||
|
||||
// get error messages from translation
|
||||
$errorMessages = [
|
||||
UPLOAD_ERR_INI_SIZE => t('upload.error.iniSize'),
|
||||
UPLOAD_ERR_FORM_SIZE => t('upload.error.formSize'),
|
||||
UPLOAD_ERR_PARTIAL => t('upload.error.partial'),
|
||||
UPLOAD_ERR_NO_FILE => t('upload.error.noFile'),
|
||||
UPLOAD_ERR_NO_TMP_DIR => t('upload.error.tmpDir'),
|
||||
UPLOAD_ERR_CANT_WRITE => t('upload.error.cantWrite'),
|
||||
UPLOAD_ERR_EXTENSION => t('upload.error.extension')
|
||||
UPLOAD_ERR_INI_SIZE => I18n::translate('upload.error.iniSize'),
|
||||
UPLOAD_ERR_FORM_SIZE => I18n::translate('upload.error.formSize'),
|
||||
UPLOAD_ERR_PARTIAL => I18n::translate('upload.error.partial'),
|
||||
UPLOAD_ERR_NO_FILE => I18n::translate('upload.error.noFile'),
|
||||
UPLOAD_ERR_NO_TMP_DIR => I18n::translate('upload.error.tmpDir'),
|
||||
UPLOAD_ERR_CANT_WRITE => I18n::translate('upload.error.cantWrite'),
|
||||
UPLOAD_ERR_EXTENSION => I18n::translate('upload.error.extension')
|
||||
];
|
||||
|
||||
if (empty($files) === true) {
|
||||
|
@ -749,9 +756,9 @@ class Api
|
|||
$uploadMaxFileSize = Str::toBytes(ini_get('upload_max_filesize'));
|
||||
|
||||
if ($postMaxSize < $uploadMaxFileSize) {
|
||||
throw new Exception(t('upload.error.iniPostSize'));
|
||||
throw new Exception(I18n::translate('upload.error.iniPostSize'));
|
||||
} else {
|
||||
throw new Exception(t('upload.error.noFiles'));
|
||||
throw new Exception(I18n::translate('upload.error.noFiles'));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -764,7 +771,7 @@ class Api
|
|||
|
||||
try {
|
||||
if ($upload['error'] !== 0) {
|
||||
$errorMessage = $errorMessages[$upload['error']] ?? t('upload.error.default');
|
||||
$errorMessage = $errorMessages[$upload['error']] ?? I18n::translate('upload.error.default');
|
||||
throw new Exception($errorMessage);
|
||||
}
|
||||
|
||||
|
@ -786,7 +793,7 @@ class Api
|
|||
// move the file to a location including the extension,
|
||||
// for better mime detection
|
||||
if ($debug === false && move_uploaded_file($upload['tmp_name'], $source) === false) {
|
||||
throw new Exception(t('upload.error.cantMove'));
|
||||
throw new Exception(I18n::translate('upload.error.cantMove'));
|
||||
}
|
||||
|
||||
$data = $callback($source, $filename);
|
||||
|
|
|
@ -75,24 +75,24 @@ class FileCache extends Cache
|
|||
$keyParts = [];
|
||||
foreach (preg_split('#([\/\\\\])#', $key, 0, PREG_SPLIT_DELIM_CAPTURE) as $part) {
|
||||
switch ($part) {
|
||||
// forward slashes don't need special treatment
|
||||
case '/':
|
||||
// forward slashes don't need special treatment
|
||||
break;
|
||||
|
||||
case '\\':
|
||||
// backslashes get their own marker in the path
|
||||
// to differentiate the cache key from one with forward slashes
|
||||
case '\\':
|
||||
$keyParts[] = '_backslash';
|
||||
break;
|
||||
|
||||
case '':
|
||||
// empty part means two slashes in a row;
|
||||
// special marker like for backslashes
|
||||
case '':
|
||||
$keyParts[] = '_empty';
|
||||
break;
|
||||
|
||||
// an actual path segment
|
||||
default:
|
||||
// an actual path segment:
|
||||
// check if the segment only contains safe characters;
|
||||
// underscores are *not* safe to guarantee uniqueness
|
||||
// as they are used in the special cases
|
||||
|
|
|
@ -114,7 +114,7 @@ class Api extends BaseApi
|
|||
*/
|
||||
public function language(): ?string
|
||||
{
|
||||
return get('language') ?? $this->requestHeaders('x-language');
|
||||
return $this->requestQuery('language') ?? $this->requestHeaders('x-language');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,10 +9,10 @@ use Kirby\Exception\LogicException;
|
|||
use Kirby\Exception\NotFoundException;
|
||||
use Kirby\Filesystem\Dir;
|
||||
use Kirby\Filesystem\F;
|
||||
use Kirby\Http\Environment;
|
||||
use Kirby\Http\Request;
|
||||
use Kirby\Http\Response;
|
||||
use Kirby\Http\Router;
|
||||
use Kirby\Http\Server;
|
||||
use Kirby\Http\Uri;
|
||||
use Kirby\Http\Visitor;
|
||||
use Kirby\Session\AutoSession;
|
||||
|
@ -22,6 +22,7 @@ use Kirby\Toolkit\A;
|
|||
use Kirby\Toolkit\Config;
|
||||
use Kirby\Toolkit\Controller;
|
||||
use Kirby\Toolkit\Properties;
|
||||
use Kirby\Toolkit\Str;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
|
@ -71,7 +72,6 @@ class App
|
|||
protected $roots;
|
||||
protected $routes;
|
||||
protected $router;
|
||||
protected $server;
|
||||
protected $sessionHandler;
|
||||
protected $site;
|
||||
protected $system;
|
||||
|
@ -97,7 +97,7 @@ class App
|
|||
// stuff from config and additional options
|
||||
$this->optionsFromConfig();
|
||||
$this->optionsFromProps($props['options'] ?? []);
|
||||
$this->optionsFromEnvironment();
|
||||
$this->optionsFromEnvironment($props);
|
||||
} finally {
|
||||
// register the Whoops error handler inside of a
|
||||
// try-finally block to ensure it's still registered
|
||||
|
@ -105,6 +105,9 @@ class App
|
|||
$this->handleErrors();
|
||||
}
|
||||
|
||||
// a custom request setup must come before defining the path
|
||||
$this->setRequest($props['request'] ?? null);
|
||||
|
||||
// set the path to make it available for the url bakery
|
||||
$this->setPath($props['path'] ?? null);
|
||||
|
||||
|
@ -115,7 +118,6 @@ class App
|
|||
// configurable properties
|
||||
$this->setOptionalProperties($props, [
|
||||
'languages',
|
||||
'request',
|
||||
'roles',
|
||||
'site',
|
||||
'user',
|
||||
|
@ -330,26 +332,9 @@ class App
|
|||
*/
|
||||
public function call(string $path = null, string $method = null)
|
||||
{
|
||||
$router = $this->router();
|
||||
|
||||
/**
|
||||
* @todo Closures should not defined statically but
|
||||
* for each instance to avoid this constant setting and unsetting
|
||||
*/
|
||||
$router::$beforeEach = function ($route, $path, $method) {
|
||||
$this->trigger('route:before', compact('route', 'path', 'method'));
|
||||
};
|
||||
|
||||
$router::$afterEach = function ($route, $path, $method, $result, $final) {
|
||||
return $this->apply('route:after', compact('route', 'path', 'method', 'result', 'final'), 'result');
|
||||
};
|
||||
|
||||
$result = $router->call($path ?? $this->path(), $method ?? $this->request()->method());
|
||||
|
||||
$router::$beforeEach = null;
|
||||
$router::$afterEach = null;
|
||||
|
||||
return $result;
|
||||
$path ??= $this->path();
|
||||
$method ??= $this->request()->method();
|
||||
return $this->router()->call($path, $method);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -476,7 +461,6 @@ class App
|
|||
}
|
||||
|
||||
if ($contentType !== 'html') {
|
||||
|
||||
// no luck for a specific representation controller?
|
||||
// let's try the html controller instead
|
||||
if ($controller = $this->controllerLookup($name)) {
|
||||
|
@ -529,6 +513,43 @@ class App
|
|||
return $this->core;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks/returns a CSRF token
|
||||
* @since 3.7.0
|
||||
*
|
||||
* @param string|null $check Pass a token here to compare it to the one in the session
|
||||
* @return string|bool Either the token or a boolean check result
|
||||
*/
|
||||
public function csrf(?string $check = null)
|
||||
{
|
||||
$session = $this->session();
|
||||
|
||||
// no arguments, generate/return a token
|
||||
// (check explicitly if there have been no arguments at all;
|
||||
// checking for null introduces a security issue because null could come
|
||||
// from user input or bugs in the calling code!)
|
||||
if (func_num_args() === 0) {
|
||||
$token = $session->get('kirby.csrf');
|
||||
|
||||
if (is_string($token) !== true) {
|
||||
$token = bin2hex(random_bytes(32));
|
||||
$session->set('kirby.csrf', $token);
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
// argument has been passed, check the token
|
||||
if (
|
||||
is_string($check) === true &&
|
||||
is_string($session->get('kirby.csrf')) === true
|
||||
) {
|
||||
return hash_equals($session->get('kirby.csrf'), $check) === true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default language object
|
||||
*
|
||||
|
@ -595,11 +616,11 @@ class App
|
|||
* Returns the environment object with access
|
||||
* to the detected host, base url and dedicated options
|
||||
*
|
||||
* @return \Kirby\Cms\Environment
|
||||
* @return \Kirby\Http\Environment
|
||||
*/
|
||||
public function environment()
|
||||
{
|
||||
return $this->environment;
|
||||
return $this->environment ?? new Environment();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -627,11 +648,13 @@ class App
|
|||
if ($id === '.') {
|
||||
if ($file = $parent->file($filename)) {
|
||||
return $file;
|
||||
} elseif ($file = $this->site()->file($filename)) {
|
||||
return $file;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($file = $this->site()->file($filename)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($page = $this->page($id, $parent, $drafts)) {
|
||||
|
@ -645,6 +668,50 @@ class App
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an image from any page
|
||||
* specified by the path
|
||||
*
|
||||
* Example:
|
||||
* <?= App::image('some/page/myimage.jpg') ?>
|
||||
*
|
||||
* @param string|null $path
|
||||
* @return \Kirby\Cms\File|null
|
||||
*
|
||||
* @todo merge with App::file()
|
||||
*/
|
||||
public function image(?string $path = null)
|
||||
{
|
||||
if ($path === null) {
|
||||
return $this->site()->page()->image();
|
||||
}
|
||||
|
||||
$uri = dirname($path);
|
||||
$filename = basename($path);
|
||||
|
||||
if ($uri === '.') {
|
||||
$uri = null;
|
||||
}
|
||||
|
||||
switch ($uri) {
|
||||
case '/':
|
||||
$parent = $this->site();
|
||||
break;
|
||||
case null:
|
||||
$parent = $this->site()->page();
|
||||
break;
|
||||
default:
|
||||
$parent = $this->site()->page($uri);
|
||||
break;
|
||||
}
|
||||
|
||||
if ($parent) {
|
||||
return $parent->image($filename);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current App instance
|
||||
*
|
||||
|
@ -770,14 +837,28 @@ class App
|
|||
* Renders a single KirbyTag with the given attributes
|
||||
*
|
||||
* @internal
|
||||
* @param string $type
|
||||
* @param string|array $type Tag type or array with all tag arguments
|
||||
* (the key of the first element becomes the type)
|
||||
* @param string|null $value
|
||||
* @param array $attr
|
||||
* @param array $data
|
||||
* @return string
|
||||
*/
|
||||
public function kirbytag(string $type, string $value = null, array $attr = [], array $data = []): string
|
||||
public function kirbytag($type, ?string $value = null, array $attr = [], array $data = []): string
|
||||
{
|
||||
if (is_array($type) === true) {
|
||||
$kirbytag = $type;
|
||||
$type = key($kirbytag);
|
||||
$value = current($kirbytag);
|
||||
$attr = $kirbytag;
|
||||
|
||||
// check data attribute and separate from attr data if exists
|
||||
if (isset($attr['data']) === true) {
|
||||
$data = $attr['data'];
|
||||
unset($attr['data']);
|
||||
}
|
||||
}
|
||||
|
||||
$data['kirby'] = $data['kirby'] ?? $this;
|
||||
$data['site'] = $data['site'] ?? $data['kirby']->site();
|
||||
$data['parent'] = $data['parent'] ?? $data['site']->page();
|
||||
|
@ -813,20 +894,21 @@ class App
|
|||
*
|
||||
* @internal
|
||||
* @param string|null $text
|
||||
* @param array $data
|
||||
* @param bool $inline (deprecated: use $data['markdown']['inline'] instead)
|
||||
* @param array $options
|
||||
* @param bool $inline (deprecated: use $options['markdown']['inline'] instead)
|
||||
* @return string
|
||||
* @todo add deprecation warning for $inline parameter in 3.7.0
|
||||
* @todo rename $data parameter to $options in 3.7.0
|
||||
* @todo remove $inline parameter in in 3.8.0
|
||||
*/
|
||||
public function kirbytext(string $text = null, array $data = [], bool $inline = false): string
|
||||
public function kirbytext(string $text = null, array $options = [], bool $inline = false): string
|
||||
{
|
||||
$options = A::merge([
|
||||
'markdown' => [
|
||||
'inline' => $inline
|
||||
]
|
||||
], $data);
|
||||
// warning for deprecated fourth parameter
|
||||
// @codeCoverageIgnoreStart
|
||||
if (func_num_args() === 3) {
|
||||
Helpers::deprecated('Cms\App::kirbytext(): the $inline parameter is deprecated and will be removed in Kirby 3.8.0. Use $options[\'markdown\'][\'inline\'] instead.');
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
$options['markdown']['inline'] ??= $inline;
|
||||
|
||||
$text = $this->apply('kirbytext:before', compact('text'), 'text');
|
||||
$text = $this->kirbytags($text, $options);
|
||||
|
@ -924,23 +1006,22 @@ class App
|
|||
*
|
||||
* @internal
|
||||
* @param string|null $text
|
||||
* @param bool|array $options
|
||||
* @param bool|array $options Boolean inline value is deprecated, use `['inline' => true]` instead
|
||||
* @return string
|
||||
* @todo rename $inline parameter to $options in 3.7.0
|
||||
* @todo add deprecation warning for boolean $options in 3.7.0
|
||||
* @todo remove boolean $options in in 3.8.0
|
||||
*/
|
||||
public function markdown(string $text = null, $inline = null): string
|
||||
public function markdown(string $text = null, $options = null): string
|
||||
{
|
||||
// TODO: remove after renaming parameter
|
||||
$options = $inline;
|
||||
|
||||
// support for the old syntax to enable inline mode as second argument
|
||||
// @codeCoverageIgnoreStart
|
||||
if (is_bool($options) === true) {
|
||||
Helpers::deprecated('Cms\App::markdown(): Passing a boolean as second parameter has been deprecated and won\'t be supported anymore in Kirby 3.8.0. Instead pass array with the key "inline" set to true or false.');
|
||||
|
||||
$options = [
|
||||
'inline' => $options
|
||||
];
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
// merge global options with local options
|
||||
$options = array_merge(
|
||||
|
@ -948,9 +1029,10 @@ class App
|
|||
(array)$options
|
||||
);
|
||||
|
||||
// TODO: deprecate passing the $inline parameter in 3.7.0
|
||||
// TODO: remove passing the $inline parameter in 3.8.0
|
||||
$inline = $options['inline'] ?? false;
|
||||
// $options['inline'] is set to `false` to avoid the deprecation
|
||||
// warning in the component; this can also be removed in 3.8.0
|
||||
$inline = $options['inline'] ??= false;
|
||||
return ($this->component('markdown'))($this, $text, $options, $inline);
|
||||
}
|
||||
|
||||
|
@ -1024,15 +1106,34 @@ class App
|
|||
* Load all options for the current
|
||||
* server environment
|
||||
*
|
||||
* @param array $props
|
||||
* @return array
|
||||
*/
|
||||
protected function optionsFromEnvironment(): array
|
||||
protected function optionsFromEnvironment(array $props = []): array
|
||||
{
|
||||
$globalUrl = $this->options['url'] ?? null;
|
||||
|
||||
// create the environment based on the URL setup
|
||||
$this->environment = new Environment($this->root('config'), $this->options['url'] ?? null);
|
||||
$this->environment = new Environment([
|
||||
'allowed' => $globalUrl,
|
||||
'cli' => $props['cli'] ?? null,
|
||||
], $props['server'] ?? null);
|
||||
|
||||
// merge into one clean options array
|
||||
return $this->options = array_replace_recursive($this->options, $this->environment->options());
|
||||
$options = $this->environment()->options($this->root('config'));
|
||||
$this->options = array_replace_recursive($this->options, $options);
|
||||
|
||||
// reload the environment if the environment config has overridden
|
||||
// the `url` option; this ensures that the base URL is correct
|
||||
$envUrl = $this->options['url'] ?? null;
|
||||
if ($envUrl !== $globalUrl) {
|
||||
$this->environment->detect([
|
||||
'allowed' => $envUrl,
|
||||
'cli' => $props['cli'] ?? null
|
||||
], $props['server'] ?? null);
|
||||
}
|
||||
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1134,14 +1235,11 @@ class App
|
|||
return $this->path;
|
||||
}
|
||||
|
||||
$requestUri = '/' . $this->request()->url()->path();
|
||||
$scriptName = $_SERVER['SCRIPT_NAME'];
|
||||
$scriptFile = basename($scriptName);
|
||||
$scriptDir = dirname($scriptName);
|
||||
$scriptPath = $scriptFile === 'index.php' ? $scriptDir : $scriptName;
|
||||
$requestPath = preg_replace('!^' . preg_quote($scriptPath) . '!', '', $requestUri);
|
||||
$current = $this->request()->path()->toString();
|
||||
$index = $this->environment()->baseUri()->path()->toString();
|
||||
$path = Str::afterStart($current, $index);
|
||||
|
||||
return $this->setPath($requestPath)->path;
|
||||
return $this->setPath($path)->path;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1164,7 +1262,16 @@ class App
|
|||
*/
|
||||
public function request()
|
||||
{
|
||||
return $this->request = $this->request ?? new Request();
|
||||
if ($this->request !== null) {
|
||||
return $this->request;
|
||||
}
|
||||
|
||||
$env = $this->environment();
|
||||
|
||||
return $this->request = new Request([
|
||||
'cli' => $env->cli(),
|
||||
'url' => $env->requestUri()
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1201,7 +1308,7 @@ class App
|
|||
|
||||
// search for a draft if the page cannot be found
|
||||
if (!$page && $draft = $site->draft($path)) {
|
||||
if ($this->user() || $draft->isVerified(get('token'))) {
|
||||
if ($this->user() || $draft->isVerified($this->request()->get('token'))) {
|
||||
$page = $draft;
|
||||
}
|
||||
}
|
||||
|
@ -1269,9 +1376,9 @@ class App
|
|||
* Returns a system root
|
||||
*
|
||||
* @param string $type
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function root(string $type = 'index'): string
|
||||
public function root(string $type = 'index'): ?string
|
||||
{
|
||||
return $this->roots->__get($type);
|
||||
}
|
||||
|
@ -1314,7 +1421,16 @@ class App
|
|||
}
|
||||
}
|
||||
|
||||
return $this->router = $this->router ?? new Router($routes);
|
||||
$hooks = [
|
||||
'beforeEach' => function ($route, $path, $method) {
|
||||
$this->trigger('route:before', compact('route', 'path', 'method'));
|
||||
},
|
||||
'afterEach' => function ($route, $path, $method, $result, $final) {
|
||||
return $this->apply('route:after', compact('route', 'path', 'method', 'result', 'final'), 'result');
|
||||
}
|
||||
];
|
||||
|
||||
return $this->router ??= new Router($routes, $hooks);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1344,11 +1460,16 @@ class App
|
|||
*/
|
||||
public function session(array $options = [])
|
||||
{
|
||||
// never cache responses that depend on the session
|
||||
$this->response()->cache(false);
|
||||
$this->response()->header('Cache-Control', 'no-store', true);
|
||||
$session = $this->sessionHandler()->get($options);
|
||||
|
||||
return $this->sessionHandler()->get($options);
|
||||
// disable caching for sessions that use the `Authorization` header;
|
||||
// cookie sessions are already covered by the `Cookie` class
|
||||
if ($session->mode() === 'manual') {
|
||||
$this->response()->cache(false);
|
||||
$this->response()->header('Cache-Control', 'no-store, private', true);
|
||||
}
|
||||
|
||||
return $session;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1447,13 +1568,17 @@ class App
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the Server object
|
||||
* Returns the Environment object
|
||||
* @deprecated 3.7.0 Use `$kirby->environment()` instead
|
||||
*
|
||||
* @return \Kirby\Http\Server
|
||||
* @return \Kirby\Http\Environment
|
||||
* @todo Start throwing deprecation warnings in 3.8.0
|
||||
* @todo Remove in 3.9.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function server()
|
||||
{
|
||||
return $this->server ??= new Server();
|
||||
return $this->environment();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1505,12 +1630,24 @@ class App
|
|||
*
|
||||
* @internal
|
||||
* @param mixed $name
|
||||
* @param array $data
|
||||
* @param array|object $data Variables or an object that becomes `$item`
|
||||
* @param bool $return On `false`, directly echo the snippet
|
||||
* @return string|null
|
||||
*/
|
||||
public function snippet($name, array $data = []): ?string
|
||||
public function snippet($name, $data = [], bool $return = true): ?string
|
||||
{
|
||||
return ($this->component('snippet'))($this, $name, array_merge($this->data, $data));
|
||||
if (is_object($data) === true) {
|
||||
$data = ['item' => $data];
|
||||
}
|
||||
|
||||
$snippet = ($this->component('snippet'))($this, $name, array_merge($this->data, $data));
|
||||
|
||||
if ($return === true) {
|
||||
return $snippet;
|
||||
}
|
||||
|
||||
echo $snippet;
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1602,7 +1739,7 @@ class App
|
|||
*
|
||||
* @param string $type
|
||||
* @param bool $object If set to `true`, the URL is converted to an object
|
||||
* @return string|\Kirby\Http\Uri
|
||||
* @return string|\Kirby\Http\Uri|null
|
||||
*/
|
||||
public function url(string $type = 'index', bool $object = false)
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Kirby\Cms;
|
||||
|
||||
use Kirby\Filesystem\F;
|
||||
use Kirby\Http\Response;
|
||||
use Kirby\Toolkit\I18n;
|
||||
use Whoops\Handler\CallbackHandler;
|
||||
|
@ -46,7 +47,7 @@ trait AppErrors
|
|||
*/
|
||||
protected function handleErrors(): void
|
||||
{
|
||||
if ($this->request()->cli() === true) {
|
||||
if ($this->environment()->cli() === true) {
|
||||
$this->handleCliErrors();
|
||||
return;
|
||||
}
|
||||
|
@ -129,7 +130,7 @@ trait AppErrors
|
|||
'code' => $code,
|
||||
'message' => $exception->getMessage(),
|
||||
'details' => $details,
|
||||
'file' => ltrim($exception->getFile(), $_SERVER['DOCUMENT_ROOT'] ?? ''),
|
||||
'file' => F::relativepath($exception->getFile(), $this->environment()->get('DOCUMENT_ROOT', '')),
|
||||
'line' => $exception->getLine(),
|
||||
], $httpCode);
|
||||
} else {
|
||||
|
|
|
@ -790,6 +790,18 @@ trait AppPlugins
|
|||
$this->extendTemplates($this->core->templates());
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a native component was extended
|
||||
* @since 3.7.0
|
||||
*
|
||||
* @param string $component
|
||||
* @return bool
|
||||
*/
|
||||
public function isNativeComponent(string $component): bool
|
||||
{
|
||||
return $this->component($component) === $this->nativeComponent($component);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the native implementation
|
||||
* of a core component
|
||||
|
@ -874,13 +886,26 @@ trait AppPlugins
|
|||
}
|
||||
|
||||
$dir = $root . '/' . $dirname;
|
||||
$entry = $dir . '/index.php';
|
||||
|
||||
if (is_dir($dir) !== true || is_file($entry) !== true) {
|
||||
if (is_dir($dir) !== true) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$entry = $dir . '/index.php';
|
||||
$script = $dir . '/index.js';
|
||||
$styles = $dir . '/index.css';
|
||||
|
||||
if (is_file($entry) === true) {
|
||||
F::loadOnce($entry);
|
||||
} elseif (is_file($script) === true || is_file($styles) === true) {
|
||||
// if no PHP file is present but an index.js or index.css,
|
||||
// register as anonymous plugin (without actual extensions)
|
||||
// to be picked up by the Panel\Document class when
|
||||
// rendering the Panel view
|
||||
static::plugin('plugins/' . $dirname, ['root' => $dir]);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
$loaded[] = $dir;
|
||||
}
|
||||
|
|
|
@ -155,22 +155,6 @@ trait AppTranslations
|
|||
I18n::$locale = $translationCode ?? 'en';
|
||||
}
|
||||
|
||||
/**
|
||||
* Set locale settings
|
||||
*
|
||||
* @deprecated 3.5.0 Use `\Kirby\Toolkit\Locale::set()` instead
|
||||
* @todo Remove in 3.7.0
|
||||
*
|
||||
* @param string|array $locale
|
||||
*/
|
||||
public function setLocale($locale): void
|
||||
{
|
||||
// @codeCoverageIgnoreStart
|
||||
deprecated('`Kirby\Cms\App::setLocale()` has been deprecated and will be removed in 3.7.0. Use `Kirby\Toolkit\Locale::set()` instead');
|
||||
Locale::set($locale);
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a specific translation by locale
|
||||
*
|
||||
|
|
|
@ -195,7 +195,8 @@ class Auth
|
|||
public function csrfFromSession(): string
|
||||
{
|
||||
$isDev = $this->kirby->option('panel.dev', false) !== false;
|
||||
return $this->kirby->option('api.csrf', $isDev ? 'dev' : csrf());
|
||||
$fallback = $isDev ? 'dev' : $this->kirby->csrf();
|
||||
return $this->kirby->option('api.csrf', $fallback);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue