diff --git a/.gitattributes b/.gitattributes
index 9fdbbd7e31..14b928ff45 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,9 +15,10 @@ tests/ export-ignore
# panel
panel/.env.example export-ignore
-panel/.eslintrc.js export-ignore
+panel/.prettierignore export-ignore
panel/.prettierrc.json export-ignore
panel/dist/ui export-ignore
+panel/eslint.config.mjs export-ignore
panel/jsconfig.json export-ignore
panel/lab export-ignore
panel/package-lock.json export-ignore
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
deleted file mode 100644
index d4ba3dbf95..0000000000
--- a/.github/workflows/stale.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# Close Stale Issues
-# Warns and then closes issues and PRs that have had no activity for a specified amount of time.
-# https://github.com/actions/stale
-
-name: Close Stale Issues
-on:
- schedule:
- - cron: "0 0 * * *"
-
-jobs:
- stale:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b # pin@v7
- with:
- # Idle number of days before marking issues stale, set `-1` to disable
- days-before-issue-stale: 60
-
- # Idle number of days before marking issues stale, set `-1` to disable
- days-before-pr-stale: 60
-
- # Idle number of days before closing stale issues/PRs
- days-before-close: 15
-
- # Comment on the staled issues
- stale-issue-message: "This issue has been marked as stale because it requires further input but has not seen activity in the past months. This is for us to prioritize issues that are still relevant and actionable. It will be closed if no further activity occurs within the next 15 days. If this issue is still relevant to you, please help us in gathering the necessary input."
-
- # Comment on the staled PRs
- stale-pr-message: "This PR has been marked as stale because it requires further changes but has not seen activity in the past months. This is for us to prioritize PRs that can be reviewed and merged. It will be closed if no further activity occurs within the next 15 days. If you still have interest in this PR, please help us finalizing it. Please let us know in case you are stuck on the required changes."
-
- # Label to apply on staled issues
- stale-issue-label: "type: stale 💤"
-
- # Label to apply on staled PRs
- stale-pr-label: "type: stale 💤"
-
- # Reason to use when closing issues
- close-issue-reason: not_planned
-
- # Labels to check for stale issues/PRs
- any-of-pr-labels: "needs: changes 🔁"
- any-of-issue-labels: "needs: information ❓,needs: replication 🔬"
-
- # PRs/issues exempted from stale
- exempt-all-milestones: true
- exempt-issue-labels: "critical: roadblock 🚧,type: regression 🚨"
diff --git a/cacert.pem b/cacert.pem
index eb11b2fd1a..e8cc6c1c09 100644
--- a/cacert.pem
+++ b/cacert.pem
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla as of: Tue Nov 26 13:58:25 2024 GMT
+## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT
##
## Find updated versions here: https://curl.se/docs/caextract.html
##
@@ -16,7 +16,7 @@
## Just configure this file as the SSLCACertificateFile.
##
## Conversion done with mk-ca-bundle.pl version 1.29.
-## SHA256: 36105b01631f9fc03b1eca779b44a30a1a5890b9bf8dc07ccb001a07301e01cf
+## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116
##
@@ -584,27 +584,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
-----END CERTIFICATE-----
-SecureSign RootCA11
-===================
------BEGIN CERTIFICATE-----
-MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
-SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
-b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
-KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
-cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
-TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
-wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
-g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
-O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
-bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
-t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
-OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
-bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
-Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
-y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
-lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
------END CERTIFICATE-----
-
Microsec e-Szigno Root CA 2009
==============================
-----BEGIN CERTIFICATE-----
@@ -2319,40 +2298,6 @@ hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB
dBb9HxEGmpv0
-----END CERTIFICATE-----
-Entrust Root Certification Authority - G4
-=========================================
------BEGIN CERTIFICATE-----
-MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV
-BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu
-bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1
-dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT
-AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
-L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D
-umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV
-3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds
-8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ
-e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7
-ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X
-xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV
-7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
-dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW
-Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n
-MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q
-jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht
-7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK
-YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt
-jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+
-m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW
-RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA
-JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G
-+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT
-kcpG2om3PVODLAgfi49T3f+sHw==
------END CERTIFICATE-----
-
Microsoft ECC Root Certificate Authority 2017
=============================================
-----BEGIN CERTIFICATE-----
@@ -3170,36 +3115,6 @@ AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8
rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
-----END CERTIFICATE-----
-Security Communication RootCA3
-==============================
------BEGIN CERTIFICATE-----
-MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw
-IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD
-b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw
-CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE
-AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r
-hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE
-NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2
-/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm
-npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY
-XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK
-p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC
-3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf
-GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw
-CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB
-/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS
-YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu
-Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O
-H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx
-YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ
-XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml
-+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn
-KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9
-dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm
-6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg==
------END CERTIFICATE-----
-
Security Communication ECC RootCA1
==================================
-----BEGIN CERTIFICATE-----
diff --git a/composer.json b/composer.json
index 5878405cb0..d5cd897a33 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "The Kirby core",
"license": "proprietary",
"type": "kirby-cms",
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"keywords": [
"kirby",
"cms",
@@ -41,7 +41,7 @@
"composer/semver": "3.4.3",
"filp/whoops": "2.16.0",
"getkirby/composer-installer": "^1.2.1",
- "laminas/laminas-escaper": "2.14.0",
+ "laminas/laminas-escaper": "2.15.0",
"michelf/php-smartypants": "1.8.1",
"phpmailer/phpmailer": "6.9.3",
"symfony/polyfill-intl-idn": "1.31.0",
diff --git a/composer.lock b/composer.lock
index ae7d908671..3424cc7c52 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cd0bc29d4679e32533e424a55ec835d7",
+ "content-hash": "2550f426620b94078f37ad93fa7dfbd8",
"packages": [
{
"name": "christian-riesen/base32",
@@ -319,16 +319,16 @@
},
{
"name": "laminas/laminas-escaper",
- "version": "2.14.0",
+ "version": "2.15.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-escaper.git",
- "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb"
+ "reference": "c612b0488ae486284c39885efca494c180f16351"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/0f7cb975f4443cf22f33408925c231225cfba8cb",
- "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb",
+ "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/c612b0488ae486284c39885efca494c180f16351",
+ "reference": "c612b0488ae486284c39885efca494c180f16351",
"shasum": ""
},
"require": {
@@ -340,12 +340,12 @@
"zendframework/zend-escaper": "*"
},
"require-dev": {
- "infection/infection": "^0.27.9",
- "laminas/laminas-coding-standard": "~3.0.0",
+ "infection/infection": "^0.27.11",
+ "laminas/laminas-coding-standard": "~3.0.1",
"maglnet/composer-require-checker": "^3.8.0",
- "phpunit/phpunit": "^9.6.16",
+ "phpunit/phpunit": "^9.6.22",
"psalm/plugin-phpunit": "^0.19.0",
- "vimeo/psalm": "^5.21.1"
+ "vimeo/psalm": "^5.26.1"
},
"type": "library",
"autoload": {
@@ -377,7 +377,7 @@
"type": "community_bridge"
}
],
- "time": "2024-10-24T10:12:53+00:00"
+ "time": "2024-12-17T19:39:54+00:00"
},
{
"name": "league/color-extractor",
@@ -644,12 +644,12 @@
},
"type": "library",
"extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
"branch-alias": {
"dev-main": "3.5-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
@@ -795,8 +795,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -961,8 +961,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -1091,7 +1091,7 @@
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": {},
+ "stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
@@ -1108,7 +1108,7 @@
"ext-mbstring": "*",
"ext-openssl": "*"
},
- "platform-dev": {},
+ "platform-dev": [],
"platform-overrides": {
"php": "8.2.0"
},
diff --git a/config/areas/site/dialogs.php b/config/areas/site/dialogs.php
index 81f7d3e745..2ddff9c874 100644
--- a/config/areas/site/dialogs.php
+++ b/config/areas/site/dialogs.php
@@ -410,19 +410,17 @@
if ($hasFiles === true) {
$fields['files'] = [
- 'label' => I18n::translate('page.duplicate.files'),
- 'type' => 'toggle',
- 'required' => true,
- 'width' => $toggleWidth
+ 'label' => I18n::translate('page.duplicate.files'),
+ 'type' => 'toggle',
+ 'width' => $toggleWidth
];
}
if ($hasChildren === true) {
$fields['children'] = [
- 'label' => I18n::translate('page.duplicate.pages'),
- 'type' => 'toggle',
- 'required' => true,
- 'width' => $toggleWidth
+ 'label' => I18n::translate('page.duplicate.pages'),
+ 'type' => 'toggle',
+ 'width' => $toggleWidth
];
}
diff --git a/config/areas/system/views.php b/config/areas/system/views.php
index 44797d5a35..c9d6106772 100644
--- a/config/areas/system/views.php
+++ b/config/areas/system/views.php
@@ -36,7 +36,7 @@
],
[
'label' => I18n::translate('server'),
- 'value' => $system->serverSoftware() ?? '?',
+ 'value' => $system->serverSoftwareShort() ?? '?',
'icon' => 'server'
]
];
@@ -63,6 +63,7 @@
'text' => $plugin->name() ?? '–',
'href' => $plugin->link(),
],
+ 'status' => $plugin->license()->status()->toArray(),
'version' => $version,
];
});
diff --git a/config/blocks/image/image.yml b/config/blocks/image/image.yml
index ada9313a36..dc348a591f 100644
--- a/config/blocks/image/image.yml
+++ b/config/blocks/image/image.yml
@@ -7,6 +7,7 @@ fields:
type: radio
columns: 2
default: "kirby"
+ required: true
options:
kirby: "{{ t('field.blocks.image.location.internal') }}"
web: "{{ t('field.blocks.image.location.external') }}"
diff --git a/config/fields/link.php b/config/fields/link.php
index 83e4badce2..7cab839421 100644
--- a/config/fields/link.php
+++ b/config/fields/link.php
@@ -16,14 +16,29 @@
* @values 'anchor', 'url, 'page, 'file', 'email', 'tel', 'custom'
*/
'options' => function (array|null $options = null): array {
- return $options ?? [
- 'url',
- 'page',
- 'file',
- 'email',
- 'tel',
- 'anchor'
- ];
+ // default options
+ if ($options === null) {
+ return [
+ 'url',
+ 'page',
+ 'file',
+ 'email',
+ 'tel',
+ 'anchor'
+ ];
+ }
+
+ // validate options
+ $available = array_keys($this->availableTypes());
+
+ if ($unavailable = array_diff($options, $available)) {
+ throw new InvalidArgumentException([
+ 'key' => 'field.link.options',
+ 'data' => ['options' => implode(', ', $unavailable)]
+ ]);
+ }
+
+ return $options;
},
'value' => function (string|null $value = null) {
return $value ?? '';
diff --git a/config/sections/fields.php b/config/sections/fields.php
index 7eb79ba988..9072616e1d 100644
--- a/config/sections/fields.php
+++ b/config/sections/fields.php
@@ -13,7 +13,7 @@
'computed' => [
'form' => function () {
$fields = $this->fields;
- $disabled = $this->model->permissions()->update() === false;
+ $disabled = $this->model->permissions()->cannot('update');
$lang = $this->model->kirby()->languageCode();
$content = $this->model->content($lang)->toArray();
diff --git a/config/sections/mixins/pagination.php b/config/sections/mixins/pagination.php
index ba3cdf5508..39f8d0a1da 100644
--- a/config/sections/mixins/pagination.php
+++ b/config/sections/mixins/pagination.php
@@ -12,7 +12,7 @@
return $limit;
},
/**
- * Sets the default page for the pagination. This will overwrite default pagination.
+ * Sets the default page for the pagination.
*/
'page' => function (int|null $page = null) {
return App::instance()->request()->get('page', $page);
diff --git a/i18n/translations/cs.json b/i18n/translations/cs.json
index b2850bd36f..9cb6e7fa34 100644
--- a/i18n/translations/cs.json
+++ b/i18n/translations/cs.json
@@ -22,7 +22,7 @@
"copy.all": "Kopírovat vše",
"copy.success": "{count} zkopírováno!",
"copy.success.multiple": "{count} copied!",
- "copy.url": "Copy URL",
+ "copy.url": "Kopírovat URL",
"create": "Vytvořit",
"custom": "Vlastní",
@@ -92,9 +92,9 @@
"error.cache.type.invalid": "Neplatný typ cache \"{type}\"",
- "error.content.lock.delete": "The version is locked and cannot be deleted",
+ "error.content.lock.delete": "Tato verze je uzamčená a nelze jí smazat",
"error.content.lock.move": "The source version is locked and cannot be moved",
- "error.content.lock.publish": "This version is already published",
+ "error.content.lock.publish": "Tato verze je již zveřejněná",
"error.content.lock.replace": "The version is locked and cannot be replaced",
"error.content.lock.update": "The version is locked and cannot be updated",
@@ -389,8 +389,8 @@
"form.discard.confirm": "Do you really want to discard all your changes?",
"form.locked": "This content is disabled for you as it is currently edited by another user",
"form.unsaved": "The current changes have not yet been saved",
- "form.preview": "Preview changes",
- "form.preview.draft": "Preview draft",
+ "form.preview": "Náhled změn",
+ "form.preview.draft": "Náhled konceptu",
"hide": "Skrýt",
"hour": "Hodina",
@@ -467,8 +467,8 @@
"license.status.missing.bubble": "Vše připraveno na spuštění vaši stránky?",
"license.status.missing.info": "Žádlná platná licence",
"license.status.missing.label": "Prosím aktivute svoji licenci",
- "license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.info": "Status licence je neznámý",
+ "license.status.unknown.label": "Neznámá licence",
"license.manage": "Spravovat licence",
"license.purchased": "Zakoupeno",
"license.success": "Děkujeme Vám za podporu Kirby",
@@ -481,9 +481,9 @@
"lock.unsaved": "Neuložené změny",
"lock.unsaved.empty": "Nezbývají již žádné neuložené změny.",
- "lock.unsaved.files": "Unsaved files",
- "lock.unsaved.pages": "Unsaved pages",
- "lock.unsaved.users": "Unsaved accounts",
+ "lock.unsaved.files": "Neuložené soubory",
+ "lock.unsaved.pages": "Neuložené stránky",
+ "lock.unsaved.users": "Neuložené účty",
"lock.isLocked": "Neuložené změny od {email}",
"lock.unlock": "Odemknout",
"lock.unlock.submit": "Odemknout a přepsat neuložené změny od {email}",
@@ -607,7 +607,7 @@
"prev": "Předchozí",
"preview": "Náhled",
- "publish": "Publish",
+ "publish": "Zveřejnit",
"published": "Zveřejněno",
"remove": "Odstranit",
@@ -629,9 +629,9 @@
"role.nobody.title": "Nikdo",
"save": "Ulo\u017eit",
- "saved": "Saved",
+ "saved": "Uloženo",
"search": "Hledat",
- "searching": "Searching",
+ "searching": "Hledání",
"search.min": "Pro vyhledání zadejte alespoň {min} znaky",
"search.all": "Zobrazit všech {count} výsledků",
"search.results.none": "Žádné výsledky",
@@ -682,10 +682,10 @@
"tel.placeholder": "+49123456789",
"template": "\u0160ablona",
- "theme": "Theme",
+ "theme": "Motiv",
"theme.light": "Lights on",
"theme.dark": "Lights off",
- "theme.automatic": "Match system default",
+ "theme.automatic": "Podle nastavení systému",
"title": "Název",
"today": "Dnes",
@@ -756,8 +756,8 @@
"users": "Uživatelé",
"version": "Verze Kirby",
- "version.changes": "Changed version",
- "version.compare": "Compare versions",
+ "version.changes": "Změnit verzi",
+ "version.compare": "Porovnat verze",
"version.current": "Současná verze",
"version.latest": "Poslední verze",
"versionInformation": "Informace o verzi",
diff --git a/i18n/translations/en.json b/i18n/translations/en.json
index 70bece0b76..9bacb695cd 100644
--- a/i18n/translations/en.json
+++ b/i18n/translations/en.json
@@ -101,6 +101,7 @@
"error.email.preset.notFound": "The email preset \"{name}\" cannot be found",
"error.field.converter.invalid": "Invalid converter \"{converter}\"",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
"error.file.changeName.empty": "The name must not be empty",
@@ -468,7 +469,7 @@
"license.status.missing.info": "No valid license",
"license.status.missing.label": "Please activate your license",
"license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.label": "Unknown",
"license.manage": "Manage your licenses",
"license.purchased": "Purchased",
"license.success": "Thank you for supporting Kirby",
diff --git a/i18n/translations/is_IS.json b/i18n/translations/is_IS.json
index 4040870a42..8c7dd9a9c0 100644
--- a/i18n/translations/is_IS.json
+++ b/i18n/translations/is_IS.json
@@ -22,7 +22,7 @@
"copy.all": "Afrita allt",
"copy.success": "Afritaði {count}!",
"copy.success.multiple": "Afritaði {count}!",
- "copy.url": "Copy URL",
+ "copy.url": "Afrita slóð",
"create": "Stofna",
"custom": "Sérstillt",
@@ -92,11 +92,11 @@
"error.cache.type.invalid": "Ógyld skyndiminnisgerð \"{type}\"",
- "error.content.lock.delete": "The version is locked and cannot be deleted",
- "error.content.lock.move": "The source version is locked and cannot be moved",
- "error.content.lock.publish": "This version is already published",
- "error.content.lock.replace": "The version is locked and cannot be replaced",
- "error.content.lock.update": "The version is locked and cannot be updated",
+ "error.content.lock.delete": "Þessi útgáfa er læst og henni verður ekki eytt",
+ "error.content.lock.move": "Þessi útgáfa er læst og hún verður ekki færð",
+ "error.content.lock.publish": "Þessi útgáfa er núþegar útgefin",
+ "error.content.lock.replace": "Þessi útfáfa er læst og það verður ekki skipt út",
+ "error.content.lock.update": "Þessi útgáfa er læst og hún verður ekki uppfærð",
"error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki",
@@ -126,7 +126,7 @@
"error.file.name.missing": "Skrárnafnið má ekki skilja eftir tómt",
"error.file.notFound": "Skráin \"{filename}\" fannst ekki",
"error.file.orientation": "Snið myndarinnar þarf að vera \"{orientation}\"",
- "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"",
+ "error.file.sort.permission": "Þú mátt ekkert breyta röðuninni á \"{filename}\"",
"error.file.type.forbidden": "Þú mátt ekkert hlaða inn {type} skrám",
"error.file.type.invalid": "Ógild skrártegund: {type}",
"error.file.undefined": "Skráin fannst ekki",
@@ -177,7 +177,7 @@
"error.page.move.ancestor": "Það er ekki hægt að færa síðuna á sjálfa sig.",
"error.page.move.directory": "Ekki er reyndist unnt að færa möppu síðunnar.",
"error.page.move.duplicate": "Undirsíða með slóðinni og forskeytinu \"{slug}\" er núþegar til",
- "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint",
+ "error.page.move.noSections": "Síðan \"{parent}\" getur ekki átt undirsíður þar sem tilskylin svið til umsýslu á undirsíðum vantar",
"error.page.move.notFound": "Síðan sem færð var finnst því miður ekki",
"error.page.move.permission": "Þú mátt ekkert færa \"{slug}\"",
"error.page.move.template": "Sniðmátið \"{template}\" er ekki gillt sem undirsíða af \"{parent}\"",
@@ -307,9 +307,9 @@
"field.blocks.heading.name": "Fyrirsögn",
"field.blocks.heading.text": "Texti/Prósi",
"field.blocks.heading.placeholder": "Fyrirsögn …",
- "field.blocks.figure.back.plain": "Plain",
- "field.blocks.figure.back.pattern.light": "Pattern (light)",
- "field.blocks.figure.back.pattern.dark": "Pattern (dark)",
+ "field.blocks.figure.back.plain": "Látlaust",
+ "field.blocks.figure.back.pattern.light": "Mynstur (ljóst)",
+ "field.blocks.figure.back.pattern.dark": "Mynstur (dökkt)",
"field.blocks.image.alt": "ALT texti",
"field.blocks.image.caption": "Myndartexti",
"field.blocks.image.crop": "Kroppa",
@@ -347,7 +347,7 @@
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Engar skrár valdar ennþá",
- "field.files.empty.single": "No file selected yet",
+ "field.files.empty.single": "Engin skrá valin enn",
"field.layout.change": "Breyta uppsetningu ramma",
"field.layout.delete": "Eyða ramma",
@@ -359,14 +359,14 @@
"field.object.empty": "Engar upplýsingar enn",
"field.pages.empty": "Engar síður valdar ennþá",
- "field.pages.empty.single": "No page selected yet",
+ "field.pages.empty.single": "Engin síða valin enn",
"field.structure.delete.confirm": "Viltu virkilega eyða þessari röð?",
"field.structure.delete.confirm.all": "Ætlar þú virkilega að eyða öllum færslum?",
"field.structure.empty": "Engar færslur enn",
"field.users.empty": "Engir notendur valdir enn",
- "field.users.empty.single": "No user selected yet",
+ "field.users.empty.single": "Enginn notandi valinn enn",
"fields.empty": "Hér eru engin svið enn",
@@ -385,12 +385,12 @@
"filter": "Sigta",
- "form.discard": "Discard changes",
- "form.discard.confirm": "Do you really want to discard all your changes?",
- "form.locked": "This content is disabled for you as it is currently edited by another user",
- "form.unsaved": "The current changes have not yet been saved",
- "form.preview": "Preview changes",
- "form.preview.draft": "Preview draft",
+ "form.discard": "Hunsa breytingar",
+ "form.discard.confirm": "Ætlarðu virkilega að hunsa alla breytingar?",
+ "form.locked": "Efnið er þér ekki aðgengilegt þar sem annar notandi er nú þegar að vinna í því",
+ "form.unsaved": "Þessar breytingar hafa ekki verið vistaðar",
+ "form.preview": "Skoða breytingar",
+ "form.preview.draft": "Skoða uppkast",
"hide": "Fela",
"hour": "Klukkustund",
@@ -467,8 +467,8 @@
"license.status.missing.bubble": "Er allt tilbúið til að gefa vefinn út?",
"license.status.missing.info": "Ekkert gilt skráningarleyfi",
"license.status.missing.label": "Vinsamlegast virkjaðu leyfið þitt",
- "license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.info": "Staða leyfis fyrir hugbúnaðinn er óþekkt",
+ "license.status.unknown.label": "Óþekkt leyfi",
"license.manage": "Sýslaðu með leyfin þín",
"license.purchased": "Verslað",
"license.success": "Þakka þér fyrir að velja Kirby",
@@ -481,9 +481,9 @@
"lock.unsaved": "Óvistað breytingar",
"lock.unsaved.empty": "Það eru öngvar óvistaðar breytingar",
- "lock.unsaved.files": "Unsaved files",
- "lock.unsaved.pages": "Unsaved pages",
- "lock.unsaved.users": "Unsaved accounts",
+ "lock.unsaved.files": "Óvistaðar skrár",
+ "lock.unsaved.pages": "Óvistaðar síður",
+ "lock.unsaved.users": "Óvistaðir notendareikningar",
"lock.isLocked": "Óvistaðar breytingar framkvæmdar af {email}",
"lock.unlock": "Aflæsa",
"lock.unlock.submit": "Aflæsa og yfirskrifa óvistaðar breytingar framkvæmdar af {email}",
@@ -607,7 +607,7 @@
"prev": "Fyrri",
"preview": "Forskoða",
- "publish": "Publish",
+ "publish": "Útgefa",
"published": "Útgefnar og listaðar",
"remove": "Fjarlægja",
@@ -629,9 +629,9 @@
"role.nobody.title": "Enginn",
"save": "Vista",
- "saved": "Saved",
+ "saved": "Vistað",
"search": "Leita",
- "searching": "Searching",
+ "searching": "Leita ..",
"search.min": "Lágmark {min} stafir til að leita",
"search.all": "Sýna allar {count} niðurstöður.",
"search.results.none": "Engar niðurstöður",
@@ -656,7 +656,7 @@
"system.info.copy": "Copy info",
"system.info.copied": "System info copied",
- "system.issues.api.methods": "Your server does not support PATCH requests",
+ "system.issues.api.methods": "Vefþjónn þinn styður ekkert PATCH beiðnir",
"system.issues.content": "Efnismappan virðist vera berskjölduð",
"system.issues.eol.kirby": "Uppsett Kirby eintak þitt hefur runnið sitt skeið á enda og mun ekki verða uppfært framar",
"system.issues.eol.plugin": "Uppsett eintak þitt af viðbótinni { plugin } hefur runnið sitt skeið á enda og mun ekki verða uppfærð framar",
@@ -682,10 +682,10 @@
"tel.placeholder": "+3548561234",
"template": "Sniðmát",
- "theme": "Theme",
- "theme.light": "Lights on",
- "theme.dark": "Lights off",
- "theme.automatic": "Match system default",
+ "theme": "Þema",
+ "theme.light": "Ljósin kveikt",
+ "theme.dark": "Ljósin slökkt",
+ "theme.automatic": "Nota kerfisstillingu",
"title": "Titill",
"today": "Núna",
@@ -756,13 +756,13 @@
"users": "Notendur",
"version": "Útgáfa",
- "version.changes": "Changed version",
- "version.compare": "Compare versions",
+ "version.changes": "Breytt útgáfa",
+ "version.compare": "Bera saman útgáfur",
"version.current": "Núverandi útgáfa",
"version.latest": "Nýjasta útgáfa",
"versionInformation": "Útgáfuupplýsingar",
- "view": "View",
+ "view": "Sýn",
"view.account": "Þínar stillingar",
"view.installation": "Uppsetning",
"view.languages": "Tungumál",
diff --git a/i18n/translations/pt_BR.json b/i18n/translations/pt_BR.json
index 50ca50f32b..7961f36acf 100644
--- a/i18n/translations/pt_BR.json
+++ b/i18n/translations/pt_BR.json
@@ -22,7 +22,7 @@
"copy.all": "Copiar todos",
"copy.success": "{count} copiados!",
"copy.success.multiple": "{count} copiados!",
- "copy.url": "Copy URL",
+ "copy.url": "Copiar URL",
"create": "Criar",
"custom": "Personalizado",
@@ -92,11 +92,11 @@
"error.cache.type.invalid": "Tipo de cache \"{type}\" inválido",
- "error.content.lock.delete": "The version is locked and cannot be deleted",
- "error.content.lock.move": "The source version is locked and cannot be moved",
- "error.content.lock.publish": "This version is already published",
- "error.content.lock.replace": "The version is locked and cannot be replaced",
- "error.content.lock.update": "The version is locked and cannot be updated",
+ "error.content.lock.delete": "A versão está bloqueada e não pode ser eliminada",
+ "error.content.lock.move": "A versão está bloqueada e não pode ser movida",
+ "error.content.lock.publish": "Esta versão já se encontra publicada",
+ "error.content.lock.replace": "A versão está bloqueada e não pode ser substituída",
+ "error.content.lock.update": "A versão está bloqueada e não pode ser atualizada",
"error.email.preset.notFound": "Pré-configuração de email \"{name}\" não foi encontrada",
@@ -126,7 +126,7 @@
"error.file.name.missing": "O nome do arquivo não pode ficar em branco",
"error.file.notFound": "Arquivo \"{filename}\" não encontrado",
"error.file.orientation": "A orientação da imagem deve ser “{orientation}”",
- "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"",
+ "error.file.sort.permission": "Não tem permissão para alterar a ordem de \"{filename}\"",
"error.file.type.forbidden": "Você não tem permissão para enviar arquivos {type}",
"error.file.type.invalid": "Tipo inválido de arquivo: {type}",
"error.file.undefined": "Arquivo n\u00e3o encontrado",
@@ -177,7 +177,7 @@
"error.page.move.ancestor": "A página não pode ser movida para dentro dela mesma",
"error.page.move.directory": "A pasta da página não pode ser movida",
"error.page.move.duplicate": "Uma subpágina com o segmento de URL \"{slug}\" já existe",
- "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint",
+ "error.page.move.noSections": "A página \"{parent}\" não pode ser pai de nenhuma página porque não tem secções de páginas na sua blueprint",
"error.page.move.notFound": "A página movida não foi encontrada",
"error.page.move.permission": "Não tem permissão para mover \"{slug}\"",
"error.page.move.template": "O template \"{template}\" não é aceite como subpágina de \"{parent}\"",
@@ -307,9 +307,9 @@
"field.blocks.heading.name": "Título ",
"field.blocks.heading.text": "Texto",
"field.blocks.heading.placeholder": "Título …",
- "field.blocks.figure.back.plain": "Plain",
- "field.blocks.figure.back.pattern.light": "Pattern (light)",
- "field.blocks.figure.back.pattern.dark": "Pattern (dark)",
+ "field.blocks.figure.back.plain": "Simples",
+ "field.blocks.figure.back.pattern.light": "Padrão (claro)",
+ "field.blocks.figure.back.pattern.dark": "Padrão (escuro)",
"field.blocks.image.alt": "Texto alternativo",
"field.blocks.image.caption": "Legenda",
"field.blocks.image.crop": "Cortar",
@@ -347,7 +347,7 @@
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Nenhum arquivo selecionado",
- "field.files.empty.single": "No file selected yet",
+ "field.files.empty.single": "Nenhum ficheiro selecionado ainda",
"field.layout.change": "Alterar layout",
"field.layout.delete": "Deletar layout",
@@ -359,14 +359,14 @@
"field.object.empty": "Nenhuma informação ainda",
"field.pages.empty": "Nenhuma página selecionada",
- "field.pages.empty.single": "No page selected yet",
+ "field.pages.empty.single": "Nenhuma página selecionada ainda",
"field.structure.delete.confirm": "Deseja realmente deletar esta linha?",
"field.structure.delete.confirm.all": "Tem a certeza que pretende eliminar todos os registos?",
"field.structure.empty": "Nenhum registro",
"field.users.empty": "Nenhum usuário selecionado",
- "field.users.empty.single": "No user selected yet",
+ "field.users.empty.single": "Nenhum utilizador selecionado ainda",
"fields.empty": "Nenhum campo ainda",
@@ -385,12 +385,12 @@
"filter": "Filtro",
- "form.discard": "Discard changes",
- "form.discard.confirm": "Do you really want to discard all your changes?",
- "form.locked": "This content is disabled for you as it is currently edited by another user",
- "form.unsaved": "The current changes have not yet been saved",
- "form.preview": "Preview changes",
- "form.preview.draft": "Preview draft",
+ "form.discard": "Reverter alterações",
+ "form.discard.confirm": "Tem a certeza que pretende reverter todas as suas alterações?",
+ "form.locked": "Este conteúdo está desativado para si porque encontra-se a ser editado por outro utilizador",
+ "form.unsaved": "As alterações atuais ainda não foram guardadas",
+ "form.preview": "Pré-visualizar alterações",
+ "form.preview.draft": "Pré-visualizar rascunho",
"hide": "Ocultar",
"hour": "Hora",
@@ -467,8 +467,8 @@
"license.status.missing.bubble": "Pronto para lançar o seu site?",
"license.status.missing.info": "Nenhuma licença válida",
"license.status.missing.label": "Por favor, ative a sua licença",
- "license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.info": "O estado da licença é desconhecido",
+ "license.status.unknown.label": "Licença desconhecida",
"license.manage": "Gerir as suas licenças",
"license.purchased": "Compradas",
"license.success": "Obrigado por apoiar o Kirby",
@@ -481,9 +481,9 @@
"lock.unsaved": "Mudanças não salvas",
"lock.unsaved.empty": "Não há mais mudanças não salvas",
- "lock.unsaved.files": "Unsaved files",
- "lock.unsaved.pages": "Unsaved pages",
- "lock.unsaved.users": "Unsaved accounts",
+ "lock.unsaved.files": "Ficheiros não guardados",
+ "lock.unsaved.pages": "Páginas não guardadas",
+ "lock.unsaved.users": "Contas não guardadas",
"lock.isLocked": "Alterações não guardadas de {email}",
"lock.unlock": "Destrancar",
"lock.unlock.submit": "Desbloqueie e substitua alterações não guardadas de {email}",
@@ -607,7 +607,7 @@
"prev": "Anterior",
"preview": "Visualizar",
- "publish": "Publish",
+ "publish": "Publicar",
"published": "Publicadas",
"remove": "Remover",
@@ -629,9 +629,9 @@
"role.nobody.title": "Ninguém",
"save": "Salvar",
- "saved": "Saved",
+ "saved": "Guardado",
"search": "Buscar",
- "searching": "Searching",
+ "searching": "À procura",
"search.min": "Digite {min} caracteres para fazer uma busca",
"search.all": "Mostrar todos os {count} resultados",
"search.results.none": "Nenhum resultado",
@@ -656,7 +656,7 @@
"system.info.copy": "Copiar informação",
"system.info.copied": "Informação de sistema copiada",
- "system.issues.api.methods": "Your server does not support PATCH requests",
+ "system.issues.api.methods": "O servidor não suporta pedidos PATCH",
"system.issues.content": "A pasta \"content\" parece não estar protegida",
"system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
"system.issues.eol.plugin": "A versão instalada do plugin {plugin} chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
@@ -682,10 +682,10 @@
"tel.placeholder": "+351 123456789",
"template": "Tema",
- "theme": "Theme",
- "theme.light": "Lights on",
- "theme.dark": "Lights off",
- "theme.automatic": "Match system default",
+ "theme": "Tema",
+ "theme.light": "Luzes ligadas",
+ "theme.dark": "Luzes desligadas",
+ "theme.automatic": "Ajustar ao tema do sistema",
"title": "Título",
"today": "Hoje",
@@ -756,13 +756,13 @@
"users": "Usuários",
"version": "Vers\u00e3o do Kirby",
- "version.changes": "Changed version",
- "version.compare": "Compare versions",
+ "version.changes": "Versão alterada",
+ "version.compare": "Comparar versões",
"version.current": "Versão atual",
"version.latest": "Versão mais recente",
"versionInformation": "Informação da versão",
- "view": "View",
+ "view": "Visualizar",
"view.account": "Sua conta",
"view.installation": "Instala\u00e7\u00e3o",
"view.languages": "Idiomas",
diff --git a/i18n/translations/pt_PT.json b/i18n/translations/pt_PT.json
index 71b1d9c842..f225c57626 100644
--- a/i18n/translations/pt_PT.json
+++ b/i18n/translations/pt_PT.json
@@ -22,7 +22,7 @@
"copy.all": "Copiar todos",
"copy.success": "{count} copiados!",
"copy.success.multiple": "{count} copiados!",
- "copy.url": "Copy URL",
+ "copy.url": "Copiar URL",
"create": "Criar",
"custom": "Personalizado",
@@ -92,11 +92,11 @@
"error.cache.type.invalid": "Tipo de cache \"{type}\" inválido",
- "error.content.lock.delete": "The version is locked and cannot be deleted",
- "error.content.lock.move": "The source version is locked and cannot be moved",
- "error.content.lock.publish": "This version is already published",
- "error.content.lock.replace": "The version is locked and cannot be replaced",
- "error.content.lock.update": "The version is locked and cannot be updated",
+ "error.content.lock.delete": "A versão está bloqueada e não pode ser eliminada",
+ "error.content.lock.move": "A versão está bloqueada e não pode ser movida",
+ "error.content.lock.publish": "Esta versão já se encontra publicada",
+ "error.content.lock.replace": "A versão está bloqueada e não pode ser substituída",
+ "error.content.lock.update": "A versão está bloqueada e não pode ser atualizada",
"error.email.preset.notFound": "A predefinição de email \"{name}\" não foi encontrada",
@@ -126,7 +126,7 @@
"error.file.name.missing": "O nome do ficheiro não pode ficar em branco",
"error.file.notFound": "Não foi possível encontrar o ficheiro \"{filename}\"",
"error.file.orientation": "A orientação da imagem deve ser \"{orientation}\"",
- "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"",
+ "error.file.sort.permission": "Não tem permissão para alterar a ordem de \"{filename}\"",
"error.file.type.forbidden": "Não tem permissões para enviar ficheiros {type}",
"error.file.type.invalid": "Tipo de ficheiro inválido: {type}",
"error.file.undefined": "Não foi possível encontrar o ficheiro",
@@ -177,7 +177,7 @@
"error.page.move.ancestor": "A página não pode ser movida para dentro dela mesma",
"error.page.move.directory": "A pasta da página não pode ser movida",
"error.page.move.duplicate": "Já existe uma subpágina com o URL \"{slug}\"",
- "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint",
+ "error.page.move.noSections": "A página \"{parent}\" não pode ser pai de nenhuma página porque não tem secções de páginas na sua blueprint",
"error.page.move.notFound": "A página movida não foi encontrada",
"error.page.move.permission": "Não tem permissões para mover \"{slug}\"",
"error.page.move.template": "O template \"{template}\" não é aceite como subpágina de \"{parent}\"",
@@ -307,9 +307,9 @@
"field.blocks.heading.name": "Título ",
"field.blocks.heading.text": "Texto",
"field.blocks.heading.placeholder": "Título …",
- "field.blocks.figure.back.plain": "Plain",
- "field.blocks.figure.back.pattern.light": "Pattern (light)",
- "field.blocks.figure.back.pattern.dark": "Pattern (dark)",
+ "field.blocks.figure.back.plain": "Simples",
+ "field.blocks.figure.back.pattern.light": "Padrão (claro)",
+ "field.blocks.figure.back.pattern.dark": "Padrão (escuro)",
"field.blocks.image.alt": "Texto alternativo",
"field.blocks.image.caption": "Legenda",
"field.blocks.image.crop": "Cortar",
@@ -347,7 +347,7 @@
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Nenhum ficheiro selecionado ainda",
- "field.files.empty.single": "No file selected yet",
+ "field.files.empty.single": "Nenhum ficheiro selecionado ainda",
"field.layout.change": "Alterar layout",
"field.layout.delete": "Eliminar layout",
@@ -359,14 +359,14 @@
"field.object.empty": "Nenhuma informação ainda",
"field.pages.empty": "Nenhuma página selecionada ainda",
- "field.pages.empty.single": "No page selected yet",
+ "field.pages.empty.single": "Nenhuma página selecionada ainda",
"field.structure.delete.confirm": "Tem a certeza que pretende eliminar esta linha?",
"field.structure.delete.confirm.all": "Tem a certeza que pretende eliminar todos os registos?",
"field.structure.empty": "Nenhum registo ainda",
"field.users.empty": "Nenhum utilizador selecionado ainda",
- "field.users.empty.single": "No user selected yet",
+ "field.users.empty.single": "Nenhum utilizador selecionado ainda",
"fields.empty": "Nenhum campo ainda",
@@ -385,12 +385,12 @@
"filter": "Filtro",
- "form.discard": "Discard changes",
- "form.discard.confirm": "Do you really want to discard all your changes?",
- "form.locked": "This content is disabled for you as it is currently edited by another user",
- "form.unsaved": "The current changes have not yet been saved",
- "form.preview": "Preview changes",
- "form.preview.draft": "Preview draft",
+ "form.discard": "Reverter alterações",
+ "form.discard.confirm": "Tem a certeza que pretende reverter todas as suas alterações?",
+ "form.locked": "Este conteúdo está desativado para si porque encontra-se a ser editado por outro utilizador",
+ "form.unsaved": "As alterações atuais ainda não foram guardadas",
+ "form.preview": "Pré-visualizar alterações",
+ "form.preview.draft": "Pré-visualizar rascunho",
"hide": "Ocultar",
"hour": "Hora",
@@ -467,8 +467,8 @@
"license.status.missing.bubble": "Pronto para lançar o seu site?",
"license.status.missing.info": "Sem licença válida",
"license.status.missing.label": "Por favor, ative a sua licença",
- "license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.info": "O estado da licença é desconhecido",
+ "license.status.unknown.label": "Licença desconhecida",
"license.manage": "Gerir as suas licenças",
"license.purchased": "Comprada",
"license.success": "Obrigado por apoiar o Kirby",
@@ -481,9 +481,9 @@
"lock.unsaved": "Alterações não guardadas",
"lock.unsaved.empty": "Não existem mais alterações não guardadas",
- "lock.unsaved.files": "Unsaved files",
- "lock.unsaved.pages": "Unsaved pages",
- "lock.unsaved.users": "Unsaved accounts",
+ "lock.unsaved.files": "Ficheiros não guardados",
+ "lock.unsaved.pages": "Páginas não guardadas",
+ "lock.unsaved.users": "Contas não guardadas",
"lock.isLocked": "Alterações não guardadas de {email}",
"lock.unlock": "Desbloquear",
"lock.unlock.submit": "Desbloqueie e substitua alterações não guardadas de {email}",
@@ -607,7 +607,7 @@
"prev": "Anterior",
"preview": "Pré-visualizar",
- "publish": "Publish",
+ "publish": "Publicar",
"published": "Publicadas",
"remove": "Remover",
@@ -629,9 +629,9 @@
"role.nobody.title": "Ninguém",
"save": "Guardar",
- "saved": "Saved",
+ "saved": "Guardado",
"search": "Pesquisar",
- "searching": "Searching",
+ "searching": "À procura",
"search.min": "Insira {min} caracteres para pesquisar",
"search.all": "Mostrar todos os {count} resultados",
"search.results.none": "Sem resultados",
@@ -656,7 +656,7 @@
"system.info.copy": "Copiar informação",
"system.info.copied": "Informação de sistema copiada",
- "system.issues.api.methods": "Your server does not support PATCH requests",
+ "system.issues.api.methods": "O servidor não suporta pedidos PATCH",
"system.issues.content": "A pasta content parece não estar protegida",
"system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
"system.issues.eol.plugin": "A versão instalada do plugin { plugin } chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
@@ -682,10 +682,10 @@
"tel.placeholder": "+351912345678",
"template": "Template",
- "theme": "Theme",
- "theme.light": "Lights on",
- "theme.dark": "Lights off",
- "theme.automatic": "Match system default",
+ "theme": "Tema",
+ "theme.light": "Luzes ligadas",
+ "theme.dark": "Luzes desligadas",
+ "theme.automatic": "Ajustar ao tema do sistema",
"title": "Título",
"today": "Hoje",
@@ -756,13 +756,13 @@
"users": "Utilizadores",
"version": "Versão",
- "version.changes": "Changed version",
- "version.compare": "Compare versions",
+ "version.changes": "Versão alterada",
+ "version.compare": "Comparar versões",
"version.current": "Versão atual",
"version.latest": "Versão mais recente",
"versionInformation": "Informação da versão",
- "view": "View",
+ "view": "Visualizar",
"view.account": "A sua conta",
"view.installation": "Instala\u00e7\u00e3o",
"view.languages": "Idiomas",
diff --git a/i18n/translations/ru.json b/i18n/translations/ru.json
index f86459f13c..aada80d5c7 100644
--- a/i18n/translations/ru.json
+++ b/i18n/translations/ru.json
@@ -22,7 +22,7 @@
"copy.all": "Копировать все",
"copy.success": "{count} скопировано",
"copy.success.multiple": "{count} скопировано",
- "copy.url": "Copy URL",
+ "copy.url": "Скопировать ссылку",
"create": "Создать",
"custom": "Другое",
@@ -308,8 +308,8 @@
"field.blocks.heading.text": "Текст",
"field.blocks.heading.placeholder": "Заголовок …",
"field.blocks.figure.back.plain": "Plain",
- "field.blocks.figure.back.pattern.light": "Pattern (light)",
- "field.blocks.figure.back.pattern.dark": "Pattern (dark)",
+ "field.blocks.figure.back.pattern.light": "Паттерн (светлый)",
+ "field.blocks.figure.back.pattern.dark": "Паттерн (темный)",
"field.blocks.image.alt": "Альтернативный текст",
"field.blocks.image.caption": "Подпись",
"field.blocks.image.crop": "Обрезать",
@@ -385,10 +385,10 @@
"filter": "Фильтр",
- "form.discard": "Discard changes",
+ "form.discard": " Отменить изменения",
"form.discard.confirm": "Do you really want to discard all your changes?",
"form.locked": "This content is disabled for you as it is currently edited by another user",
- "form.unsaved": "The current changes have not yet been saved",
+ "form.unsaved": "Текущие изменения не сохранены",
"form.preview": "Preview changes",
"form.preview.draft": "Preview draft",
@@ -467,8 +467,8 @@
"license.status.missing.bubble": "Готовы запустить Ваш сайт?",
"license.status.missing.info": "Нет действительной лицензии",
"license.status.missing.label": "Пожалуйста, активируйте Вашу лицензию",
- "license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.info": "Статус лицензии неизвестен",
+ "license.status.unknown.label": "Неизвестная лицензия",
"license.manage": "Управление лицензиями",
"license.purchased": "Приобретено",
"license.success": "Спасибо за поддержку Kirby",
@@ -481,9 +481,9 @@
"lock.unsaved": "Несохраненные изменения",
"lock.unsaved.empty": "Несохраненных изменений нет",
- "lock.unsaved.files": "Unsaved files",
- "lock.unsaved.pages": "Unsaved pages",
- "lock.unsaved.users": "Unsaved accounts",
+ "lock.unsaved.files": "Несохраненные файлы",
+ "lock.unsaved.pages": "Несохраненные страницы",
+ "lock.unsaved.users": "Несохраненные аккаунты",
"lock.isLocked": "Несохраненные изменения {email}",
"lock.unlock": "Разблокировать",
"lock.unlock.submit": "Разблокируйте и перезапишите несохраненные изменения {email}",
@@ -607,7 +607,7 @@
"prev": "Предыдущий",
"preview": "Предпросмотр",
- "publish": "Publish",
+ "publish": "Опубликовать",
"published": "Опубликовано",
"remove": "Удалить",
@@ -629,9 +629,9 @@
"role.nobody.title": "Никто",
"save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
- "saved": "Saved",
+ "saved": "Сохранено",
"search": "Поиск",
- "searching": "Searching",
+ "searching": "Поиск",
"search.min": "Введите хотя бы {min} символов для поиска",
"search.all": "Показать все результаты ({count})",
"search.results.none": "Нет результатов",
@@ -682,10 +682,10 @@
"tel.placeholder": "+79123456789",
"template": "\u0428\u0430\u0431\u043b\u043e\u043d",
- "theme": "Theme",
- "theme.light": "Lights on",
- "theme.dark": "Lights off",
- "theme.automatic": "Match system default",
+ "theme": "Тема",
+ "theme.light": "Светлая тема",
+ "theme.dark": "Темная тема",
+ "theme.automatic": "Как в системе",
"title": "Название",
"today": "Сегодня",
@@ -757,7 +757,7 @@
"version": "Версия",
"version.changes": "Changed version",
- "version.compare": "Compare versions",
+ "version.compare": "Сравнить версии",
"version.current": "Текущая версия",
"version.latest": "Последняя версия",
"versionInformation": "Информация о версии",
diff --git a/i18n/translations/sv_SE.json b/i18n/translations/sv_SE.json
index a1d8a741b9..3c46818b56 100644
--- a/i18n/translations/sv_SE.json
+++ b/i18n/translations/sv_SE.json
@@ -22,7 +22,7 @@
"copy.all": "Kopiera alla",
"copy.success": "{count} kopierad!",
"copy.success.multiple": "{count} kopierad!",
- "copy.url": "Copy URL",
+ "copy.url": "Kopiera URL",
"create": "Skapa",
"custom": "Anpassad",
@@ -92,11 +92,11 @@
"error.cache.type.invalid": "Ogiltig cachetyp \"{type}\"",
- "error.content.lock.delete": "The version is locked and cannot be deleted",
- "error.content.lock.move": "The source version is locked and cannot be moved",
- "error.content.lock.publish": "This version is already published",
- "error.content.lock.replace": "The version is locked and cannot be replaced",
- "error.content.lock.update": "The version is locked and cannot be updated",
+ "error.content.lock.delete": "Versionen är låst och kan inte raderas",
+ "error.content.lock.move": "Källversionen är låst och kan inte flyttas",
+ "error.content.lock.publish": "Denna version är redan publicerad",
+ "error.content.lock.replace": "Versionen är låst och kan inte bytas ut",
+ "error.content.lock.update": "Versionen är låst och kan inte uppdateras",
"error.email.preset.notFound": "E-postförinställningen \"{name}\" kan inte hittas",
@@ -126,7 +126,7 @@
"error.file.name.missing": "Filnamnet får inte vara tomt",
"error.file.notFound": "Filen \"{filename}\" kan ej hittas",
"error.file.orientation": "Bildens orientering måste vara \"{orientation}\"",
- "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"",
+ "error.file.sort.permission": "Du har inte behörighet att ändra sorteringen av \"{filename}\"",
"error.file.type.forbidden": "Du har inte behörighet att ladda upp filer av typen {type}",
"error.file.type.invalid": "Ogiltig filtyp: {type}",
"error.file.undefined": "Filen kan inte hittas",
@@ -177,7 +177,7 @@
"error.page.move.ancestor": "Sidan kan inte flyttas in i sig själv",
"error.page.move.directory": "Sidans mapp kan inte flyttas",
"error.page.move.duplicate": "En undersida med URL-appendixen \"{slug}\" existerar redan",
- "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint",
+ "error.page.move.noSections": "Sidan \"{parent}\" kan inte vara en förälder till någon sida eftersom den saknar sidsektioner i dess blueprint",
"error.page.move.notFound": "Den flyttade sidan kunde inte hittas",
"error.page.move.permission": "Du saknar behörighet för att flytta \"{slug}\"",
"error.page.move.template": "Mallen \"{template}\" accepteras inte som en undersida till \"{parent}\"",
@@ -307,9 +307,9 @@
"field.blocks.heading.name": "Rubrik",
"field.blocks.heading.text": "Text",
"field.blocks.heading.placeholder": "Rubrik …",
- "field.blocks.figure.back.plain": "Plain",
- "field.blocks.figure.back.pattern.light": "Pattern (light)",
- "field.blocks.figure.back.pattern.dark": "Pattern (dark)",
+ "field.blocks.figure.back.plain": "Vanlig",
+ "field.blocks.figure.back.pattern.light": "Mönster (ljust)",
+ "field.blocks.figure.back.pattern.dark": "Mönster (mörkt)",
"field.blocks.image.alt": "Alternativ text",
"field.blocks.image.caption": "Rubrik",
"field.blocks.image.crop": "Beskär",
@@ -347,7 +347,7 @@
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Inga filer valda än",
- "field.files.empty.single": "No file selected yet",
+ "field.files.empty.single": "Ingen fil har valts än",
"field.layout.change": "Ändra layout",
"field.layout.delete": "Radera layout",
@@ -359,14 +359,14 @@
"field.object.empty": "Ingen information ännu",
"field.pages.empty": "Inga sidor valda än",
- "field.pages.empty.single": "No page selected yet",
+ "field.pages.empty.single": "Ingen sida har valts än",
"field.structure.delete.confirm": "Vill du verkligen radera denna rad?",
"field.structure.delete.confirm.all": "Vill du verkligen radera alla poster?",
"field.structure.empty": "Inga poster än",
"field.users.empty": "Inga användare valda än",
- "field.users.empty.single": "No user selected yet",
+ "field.users.empty.single": "Ingen användare har valts än",
"fields.empty": "Inga fält ännu",
@@ -385,12 +385,12 @@
"filter": "Filter",
- "form.discard": "Discard changes",
- "form.discard.confirm": "Do you really want to discard all your changes?",
- "form.locked": "This content is disabled for you as it is currently edited by another user",
- "form.unsaved": "The current changes have not yet been saved",
- "form.preview": "Preview changes",
- "form.preview.draft": "Preview draft",
+ "form.discard": "Kassera ändringar",
+ "form.discard.confirm": "Vill du verkligen kassera dina ändringar?",
+ "form.locked": "Detta innehåll är inaktiverat för dig eftersom det för närvarande redigeras av en annan användare",
+ "form.unsaved": "De aktuella ändringarna har inte sparats än",
+ "form.preview": "Förhandsgranska ändringar",
+ "form.preview.draft": "Förhandsgranska utkast",
"hide": "Göm",
"hour": "Timme",
@@ -467,8 +467,8 @@
"license.status.missing.bubble": "Är du redo att lansera din webbplats?",
"license.status.missing.info": "Ingen giltig licens",
"license.status.missing.label": "Vänligen aktivera din licens",
- "license.status.unknown.info": "The license status is unknown",
- "license.status.unknown.label": "Unknown license",
+ "license.status.unknown.info": "Licensstatusen är okänd",
+ "license.status.unknown.label": "Okänd licens",
"license.manage": "Hantera dina licenser",
"license.purchased": "Köpt",
"license.success": "Tack för att du stödjer Kirby",
@@ -481,9 +481,9 @@
"lock.unsaved": "Osparade ändringar",
"lock.unsaved.empty": "Det finns inga fler osparade ändringar",
- "lock.unsaved.files": "Unsaved files",
- "lock.unsaved.pages": "Unsaved pages",
- "lock.unsaved.users": "Unsaved accounts",
+ "lock.unsaved.files": "Osparade filer",
+ "lock.unsaved.pages": "Osparade sidor",
+ "lock.unsaved.users": "Osparade konton",
"lock.isLocked": "Osparade ändringar av {email}",
"lock.unlock": "Lås upp",
"lock.unlock.submit": "Lås upp och skriv över osparade ändringar av {email}",
@@ -607,7 +607,7 @@
"prev": "Föregående",
"preview": "Förhandsgranska",
- "publish": "Publish",
+ "publish": "Publicera",
"published": "Publicerade",
"remove": "Ta bort",
@@ -629,9 +629,9 @@
"role.nobody.title": "Ingen",
"save": "Spara",
- "saved": "Saved",
+ "saved": "Sparad",
"search": "Sök",
- "searching": "Searching",
+ "searching": "Söker",
"search.min": "Ange {min} tecken för att söka",
"search.all": "Visa alla {count} resultat",
"search.results.none": "Inga träffar",
@@ -656,7 +656,7 @@
"system.info.copy": "Kopiera info",
"system.info.copied": "Systeminformation kopierad",
- "system.issues.api.methods": "Your server does not support PATCH requests",
+ "system.issues.api.methods": "Din server stöder inte PATCH-förfrågningar",
"system.issues.content": "Mappen content verkar vara exponerad",
"system.issues.eol.kirby": "Din installerade Kirby-version har nått slutet av sin livscykel och kommer inte att få fler säkerhetsuppdateringar",
"system.issues.eol.plugin": "Den installerade versionen av tillägget { plugin } har nått slutet på sin livscykel och kommer inte att få fler säkerhetsuppdateringar.",
@@ -682,10 +682,10 @@
"tel.placeholder": "+46701234567",
"template": "Mall",
- "theme": "Theme",
- "theme.light": "Lights on",
- "theme.dark": "Lights off",
- "theme.automatic": "Match system default",
+ "theme": "Tema",
+ "theme.light": "Ljus på",
+ "theme.dark": "Ljus av",
+ "theme.automatic": "Matcha systemstandard",
"title": "Titel",
"today": "Idag",
@@ -756,13 +756,13 @@
"users": "Användare",
"version": "Version",
- "version.changes": "Changed version",
- "version.compare": "Compare versions",
+ "version.changes": "Ändrad version",
+ "version.compare": "Jämför versioner",
"version.current": "Aktuell version",
"version.latest": "Senaste version",
"versionInformation": "Versionsinformation",
- "view": "View",
+ "view": "Visa",
"view.account": "Ditt konto",
"view.installation": "Installation",
"view.languages": "Språk",
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 7c78dd2c2c..0000000000
--- a/package-lock.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "kirby",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {}
-}
diff --git a/panel/lab/components/boxes/1_themes/index.vue b/panel/lab/components/boxes/1_themes/index.vue
index f2e06e8659..9b9693aa76 100644
--- a/panel/lab/components/boxes/1_themes/index.vue
+++ b/panel/lab/components/boxes/1_themes/index.vue
@@ -24,13 +24,25 @@
/>
+