Upgrade to 3.6.3
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# This file is for unifying the coding style for different editors and IDEs
|
||||
# editorconfig.org
|
||||
|
||||
# PHP PSR-2 Coding Standards
|
||||
# http://www.php-fig.org/psr/psr-2/
|
||||
# PHP PSR-12 Coding Standards
|
||||
# https://www.php-fig.org/psr/psr-12/
|
||||
|
||||
root = true
|
||||
|
||||
|
99
kirby/CONTRIBUTING.md
Executable file
99
kirby/CONTRIBUTING.md
Executable file
@@ -0,0 +1,99 @@
|
||||
# Contributing
|
||||
|
||||
:+1::tada: First off, yes, you can contribute and thanks already for taking the time if you do! :tada::+1:
|
||||
|
||||
## How we organize code
|
||||
|
||||
To keep track of different states of our code (current release, bugfixes, features) we use branches:
|
||||
|
||||
| Branch | Used for | PRs allowed? |
|
||||
| ----------- | ------------------------------------------------------------------------ | --------------------------- |
|
||||
| `main` | Latest released version | - |
|
||||
| `develop` | Working branch for next release, e.g. `3.7.x` | ✅ |
|
||||
| `fix/*` | Temporary branches for single patch | - |
|
||||
| `feature/*` | Temporary branches for single feature | - |
|
||||
| `release/*` | Pre-releases in testing before they are merged into `main` when released | only during release testing |
|
||||
|
||||
We will review all pull requests (PRs) to `develop` and merge them if accepted, once an appropriate version is upcoming. Please understand that this might not be the immediate next release and might take some time.
|
||||
|
||||
## How you can contribute
|
||||
|
||||
### Report a bug
|
||||
|
||||
When you find a bug, the first step to fixing it is to help us understand and reproduce the bug as best as possible. When you create a bug report, please include as many details as possible. Fill out [the template](ISSUE_TEMPLATE/bug_report.md) because the requested information helps us resolve issues so much faster.
|
||||
|
||||
### Bug fixes
|
||||
|
||||
For bug fixes, please create a new branch following the name scheme: `fix/issue_number-bug-x`, e.g. `fix/234-this-nasty-bug`. Limit bug fix PRs to a single bug. **Do not mix multiple bug fixes in a single PR.** This will make it easier for us to review the fix and merge it.
|
||||
|
||||
- Always send bug fix PRs against the `develop` branch––not `main`.
|
||||
- Add a helpful description of what the PR does if it is not 100% self-explanatory.
|
||||
- Every bug fix should include a [unit test](#tests) to avoid future regressions. Let us know if you need help with that.
|
||||
- Make sure your code [style](#style) matches ours and includes [comments/in-code documentation](#documentation).
|
||||
- Make sure your branch is up to date with the latest state on the `develop` branch. [Rebase](https://help.github.com/articles/about-pull-request-merges/) changes before you send the PR.
|
||||
|
||||
### Features
|
||||
|
||||
For features create a new branch following the name scheme: `feature/issue_number-feature-x`, e.g. `feature/123-awesome-function`. Our [feedback platform](https://feedback.getkirby.com) can be a good source of highly requested features. Maybe your feature idea already exists and you can get valuable feedback from other Kirby users. Focus on a single feature per PR. Don't mix features!
|
||||
|
||||
- Always send feature PRs against the `develop` branch––not `main`.
|
||||
- Add a helpful description of what the PR does.
|
||||
- New features should include [unit tests](#tests). Let us know if you need help with that.
|
||||
- Make your code [style](#style) matches ours and includes [comments/in-code documentation](#documentation).
|
||||
- Make sure your branch is up to date with the latest state on the `develop` branch. [Rebase](https://help.github.com/articles/about-pull-request-merges/) changes before you send the PR.
|
||||
|
||||
We try to bundle features in our major releases, e.g. `3.x`. That is why we might only review and, if accepted, merge your PR once an appropriate release is upcoming. Please understand that we cannot merge all feature ideas or that it might take a while. Check out the [roadmap](https://roadmap.getkirby.com) to see upcoming releases.
|
||||
|
||||
### Translations
|
||||
|
||||
We are really happy about any help with translations. Please do not directly translate JSON files, though. We use a service called Transifex to handle [all translations](https://translation.getkirby.com/). Create an account there and send us a request to join our translator group. Additionally, also send an email to <support@getkirby.com>. Unfortunately, we don't get notified properly about new translator requests.
|
||||
|
||||
## How we write code
|
||||
|
||||
### Style
|
||||
|
||||
#### Backend (PHP)
|
||||
|
||||
We use [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) to ensure a consistent style for our PHP code. It is mainly based on [PSR-12](https://www.php-fig.org/psr/psr-12/). [Install PHP CS Fixer globally](https://github.com/FriendsOfPHP/PHP-CS-Fixer#globally-composer) via Composer and then run `composer fix` in the `kirby` folder to check for inconsistencies and fix them. Our automated PR checks will fail if there are code style issues with your code.
|
||||
|
||||
#### Frontend/Panel (JavaScript, Vue)
|
||||
|
||||
We use [Prettier](https://prettier.io) to ensure a consistent style for our JavaScript and Vue code. After running `npm install` in the `kirby/panel` folder, you can run `npm run format` to check for inconsistencies and fix them. We also use [ESLint](https://eslint.org) which you can use by running `npm run lint` and/or `npm run lint:fix`.
|
||||
|
||||
### Documentation
|
||||
|
||||
In-code documentation and comments help us understand each other's code - or our own code after some months. Especially when matters get more complicated, we try to add a lot of comments to explain what the code does or why we implemented it like this. Even better than good comments is good code that is easy to understand.
|
||||
|
||||
#### Backend (PHP)
|
||||
|
||||
We use PHP [DocBlocks](https://docs.phpdoc.org/guide/references/phpdoc/basic-syntax.html#what-is-a-docblock) for classes and methods.
|
||||
|
||||
#### Frontend/Panel (JavaScript, Vue)
|
||||
|
||||
We use [JSDoc](https://jsdoc.app) for documenting JavaScript code, especially for [Vue components](https://vue-styleguidist.github.io/docs/Documenting.html).
|
||||
|
||||
#### Public documentation
|
||||
|
||||
We also document Kirby on the Kirby website at <https://getkirby.com>. However we recommend to wait with writing public documentation until the feature PR is merged. If you don't know where the documentation for a feature best belongs, don't worry. We can take care of writing the docs.
|
||||
|
||||
### Tests
|
||||
|
||||
Unit and integration tests help us prevent regressions when we make changes to the code. Every bug fix should also add a unit test for the fixed bug to make sure we won't re-introduce the same problem later down the road. Every new feature should be accompanied by unit tests to protect it from breaking through future changes.
|
||||
|
||||
#### Backend (PHP)
|
||||
|
||||
We use [PHPUnit](https://phpunit.de) for unit test for our PHP code. You can find all existing tests in the [`kirby/tests` subfolders](https://github.com/getkirby/kirby/tree/main/tests). Take a look to see how we usually structure our tests.
|
||||
|
||||
#### Frontend/Panel (JavaScript, Vue)
|
||||
|
||||
The Panel doesn't have extensive test coverage yet. That's an area we are still trying to improve.
|
||||
|
||||
We use [vitest](https://vitest.dev) for unit tests for JavaScript and Vue components - `.test.js` files next to the actual JavaScript/Vue file.
|
||||
|
||||
For integration tests, we use [cypress](https://www.cypress.io) - `.e2e.js` files.
|
||||
|
||||
## And last…
|
||||
|
||||
Let us know [in the forum](https://forum.getkirby.com) if you have questions.
|
||||
|
||||
**And once more: thank you!** :+1::tada:
|
211
kirby/LICENSE.md
Executable file
211
kirby/LICENSE.md
Executable file
@@ -0,0 +1,211 @@
|
||||
# Kirby License Agreement
|
||||
|
||||
Published: March 15, 2022
|
||||
Source: https://getkirby.com/license/2022-03-15
|
||||
|
||||
## About this Agreement
|
||||
|
||||
While Kirby's source code is publicly available, Kirby is **not free**. To use Kirby in production, you need to [purchase a license](https://getkirby.com/buy).
|
||||
|
||||
This End User License Agreement (the **"Agreement"**) is fundamental to the relationship between you and us. Therefore we recommend to read this Agreement carefully before you download, install or use Kirby.
|
||||
|
||||
If you do not agree to this Agreement, please do not download, install or use Kirby. Installation or use of Kirby signifies that you have read, understood, and agreed to be bound by this Agreement.
|
||||
|
||||
## Definitions
|
||||
|
||||
Before we get started with the conditions of the Agreement, let's define the terms that will be used throughout it:
|
||||
|
||||
- When we refer to **"You"**, we mean the licensee. Before purchasing Kirby, that's the individual or company that has downloaded and/or installed Kirby for a Development Installation, Private Installation or Extension Demo. When used for a Public Site, the licensee is the individual or company that has purchased the Kirby license. If you work on a client project and have purchased the Kirby license for your client, you (and _not_ the client) are the licensee.
|
||||
- When we refer to **"We"**/**"Us"**/**"Our"**, we mean the licensor, the Content Folder GmbH & Co. KG. You can find Our company and contact information on Our [contact page](https://getkirby.com/contact).
|
||||
- A **"Website"** is a single Kirby project that is defined by its domain name and root directory (e.g. `https://sub.example.com` or `https://example.com/example/`). Each (sub)domain and root directory is a separate Website, even if the projects are related in any way. Exception: If You use the cross-domain multi-language feature with the same `content` folder, these domains count as the same Website.
|
||||
You may use Kirby as a headless backend or as a static site generator. In these cases the Website is defined by the domain and root directory of the user- or visitor-facing frontend(s).
|
||||
- A **"Development Installation"** is a Website that is installed purely for the purposes of development and client preview. It must only be accessible by a restricted number of users (like on a personal computer, on a server in a network with restricted access or when protecting a staging website with a password that only a restricted number of users know).
|
||||
- A **"Private Installation"** is a Website that is installed purely for personal use. It must only be accessible by You and Your family.
|
||||
- An **"Extension Demo"** is a Website with the single purpose to showcase a free or commercial Kirby theme or Kirby plugin, as long as that Website only contains demo content. If the showcased extension is a Kirby theme, the demo content must be exactly as shipped with the theme. Demos for Kirby plugins may _not_ contain any additional content that is not needed to showcase the plugin in use.
|
||||
- A **"Public Site"** is a Website that is _neither_ a Development Installation, a Private Installation nor an Extension Demo.
|
||||
- An **"Update"** is defined as a Kirby release which adds smaller new features, minor functionality enhancements or bug fixes. This class of release is identified by the change of the revision to the right of the first decimal point, e.g. 3.1 to 3.2, 3.X.1 to 3.X.2 or 3.X.X.1 to 3.X.X.2.
|
||||
- An **"Upgrade"** is a major Kirby release which incorporates major new features or enhancements that increase the core functionality of Kirby to a larger extent. This class of release is identified by the change of the revision to the left of the first decimal point, e.g. 3.X to 4.0.
|
||||
- The **"Source Code"** is defined as the contents of all files that are provided with Kirby and that make Kirby work. This includes (but is not limited to) all PHP, JavaScript, JSON, HTML and CSS files as well as all related image and other media files.
|
||||
|
||||
Every time you see one of these capitalized terms in the following text, it has the meaning that has been explained above.
|
||||
|
||||
## Usage for a Public Site
|
||||
|
||||
Installing Kirby on or using it for a Public Site requires a [paid license](https://getkirby.com/buy).
|
||||
|
||||
As Kirby is software and software is intangible, We don't sell it as such. Instead, this Agreement grants a license for each purchase to install and use a single instance of Kirby on a **specific Website**. Additional Kirby licenses must be purchased in order to install and use Kirby on **additional Websites**.
|
||||
|
||||
The license is **non-exclusive** (meaning that You are not the only one who We will issue a license) and **generally non-transferable** (meaning that the one who purchases the license is the licensee).
|
||||
|
||||
On request, We will **transfer** a license to anyone who is also allowed to buy Kirby licenses by law and this Agreement.
|
||||
|
||||
We will also **reassign** a license to another Website domain and root directory of Your choice, provided that You confirm that the previous Website is no longer in operation and will not be operated with the same license in the future.
|
||||
|
||||
If you need to transfer your Kirby license to another individual or company (for example to your client or a new agency) or reassign it to a different project, please get in touch directly at <support@getkirby.com>.
|
||||
|
||||
A license is valid for all Updates of the same major Kirby release. We reserve the right to charge an **upgrade fee for Upgrade releases**. Whether a release is an Update or Upgrade is at Our sole discretion.
|
||||
|
||||
## Order Process
|
||||
|
||||
Our order process is conducted by Our online reseller [Paddle.com](https://paddle.com). Paddle.com is the Merchant of Record for all Our orders. Paddle provides all customer service inquiries and handles returns.
|
||||
|
||||
## Free Licenses
|
||||
|
||||
Kirby can be used **for free in the following cases**.
|
||||
|
||||
Please note that the restrictions and all other clauses of this Agreement also apply to free licenses. You may especially _not_ alter or circumvent the licensing features.
|
||||
|
||||
### Usage for a Development Installation
|
||||
|
||||
We believe that it should be possible to test and evaluate software before having to purchase a license. Also, We understand that a web project first needs to be built in a protected environment before it can be published.
|
||||
|
||||
Therefore, installing and using Kirby on a personal computer (like a desktop PC, notebook or tablet) or server for a Development Installation is **free** for as long as You need.
|
||||
|
||||
The usage of Kirby in production (with the intention to handle production data or content) is _never_ considered a Development Installation, even in internal apps or systems.
|
||||
|
||||
### Usage for a Private Installation
|
||||
|
||||
You may also install and use Kirby for **free** in Private Installations as long as they are not accessible by anyone except You and Your family.
|
||||
|
||||
Our [definition](#definitions) of a Private Installation allows the following use cases:
|
||||
|
||||
- Private sites for personal use, for example:
|
||||
- Apps for You personally (like a personal diary)
|
||||
- Apps for You as a freelancer (like a bookkeeping, invoicing or project management app)
|
||||
- Apps for Your family (like a private photo gallery)
|
||||
- Experimental local Kirby setups for Your personal use (for example to try out Kirby features)
|
||||
|
||||
However, the following use cases are _not_ covered and need a **[paid license](#usage-for-a-public-site)**:
|
||||
|
||||
- Intranets for companies, authorities or organizations, no matter if on a local or public server
|
||||
- (Internal) apps for teams or entire companies, authorities or organizations
|
||||
- Websites that are accessible by the public, even for personal/non-commercial purposes
|
||||
- Use of Kirby as a local CMS for a static or headless site without a license for the frontend domain(s)
|
||||
|
||||
### Usage for an Extension Demo
|
||||
|
||||
Extension Demos are not real Websites. We want to encourage you to build and showcase your themes and plugins.
|
||||
|
||||
Therefore, You may **operate Extension Demos without purchasing a license**.
|
||||
|
||||
Please note that this does _not_ apply to store fronts or other types of sites used to promote free or commercial themes or plugins. If such a site is built with Kirby as well, it is a Public Site and needs a **[paid license](#usage-for-a-public-site)**.
|
||||
|
||||
## Restrictions
|
||||
|
||||
### Legal Restrictions
|
||||
|
||||
You may only use Kirby in a manner that complies with any and all **applicable laws** in the jurisdictions in which You use Kirby. Please respect all applicable restrictions concerning **privacy and intellectual property rights**.
|
||||
|
||||
### Making Copies
|
||||
|
||||
You may make **copies of Kirby** in any machine readable form solely for purposes of **deploying a Website to a server, developing a Website on a personal computer or server or as a backup**, provided that You reproduce Kirby in its original form and with all proprietary notices on the copy.
|
||||
|
||||
You may _not_ reproduce Kirby or its Source Code, in whole or in part, for **any other purpose**.
|
||||
|
||||
### Modification of the Source Code
|
||||
|
||||
You may **alter, modify or extend the Source Code** for Your own use. You may also **commission a third party** to perform those modifications for You.
|
||||
|
||||
However You may _not_:
|
||||
|
||||
- **alter or circumvent the licensing features**, including (but not limited to) the license validation and payment prompts or
|
||||
- **resell, redistribute or transfer** the modified or derivative version.
|
||||
|
||||
Please note that We **can't provide technical support** for modified or derivative versions of the Source Code.
|
||||
|
||||
### Your Relationship to Third Parties
|
||||
|
||||
You are generally _not_ allowed to **sell, assign, license, disclose, distribute, or otherwise transfer or make available** Kirby or its Source Code, in whole or in part, in any form to any third parties.
|
||||
|
||||
The following cases are exempted from this restriction:
|
||||
|
||||
- Kirby licenses may be transferred to a new licensee by requesting the transfer from Us ([see above](#usage-for-a-public-site)).
|
||||
- You may create Websites for third parties (e.g. as an agency or freelancer for a client). Together with this Website, You may bill Your client for the used Kirby license. You may also include the license price in a flat rate. Please note that the licensee in both of these cases is still You unless You request to transfer the license to Your client. If Your price exceeds the price You paid to Us, You need to give Your client the option to purchase the license directly from Us.
|
||||
- You may make Kirby available to customers via a Software-as-a-Service (SaaS) offering, provided You ensure that each Website has a valid Kirby license purchased either by You or Your customer. If multiple customers share a Website, each customer needs at least one license. Your offering _must not_ appear to be provided or officially endorsed by Us.
|
||||
- You may make a Kirby installation available to employees or partners of You or Your Website client. You may also disclose and distribute Kirby’s Source Code to Your client together with the source code of the Website You created for them.
|
||||
- You may disclose the Source Code to individuals or companies that are involved in the development or operation of Your Website (e.g. agencies, design or development freelancers, hosting providers or administrators).
|
||||
|
||||
E.g. the following cases are explicitly **_not_ allowed**:
|
||||
|
||||
- Selling, licensing or distributing a new product based on Kirby that modifies or hides Kirby’s identity as a Content Management System (CMS)
|
||||
- Forking Kirby and selling the modified version ([see above](#restrictions__modification-of-the-source-code))
|
||||
- Buying licenses in bulk and reselling them in your own shop
|
||||
- Bundling or including Kirby’s Source Code in the publication and/or distribution of a Website’s source code or a (free or paid) theme or plugin (please use Git submodules or Composer or provide a link to Our repository or website instead)
|
||||
|
||||
### Disallowed Uses
|
||||
|
||||
The following uses of Kirby are _not_ covered by this Agreement and will result in the termination of the license:
|
||||
|
||||
- Direct or indirect use of Kirby in **critical infrastructure** (e.g. water and energy services, public health, financial services, public security services) or **high-risk environments** (e.g. handling of harmful or dangerous materials). The use in Websites without connection to core processes is allowed.
|
||||
- Use of Kirby for Websites that contain **misinformation, hate speech or discriminating content** based on age, gender, gender identity, race, sexuality, religion, nationality, serious illnesses or disabilities, no matter who authored this content. Misinformation is defined as content that is false or misleading and may lead to significant risk of physical or societal harm.
|
||||
- Use of Kirby by **companies or individuals who**:
|
||||
- lobby for, promote, derive a majority of income from or are significantly invested in:
|
||||
- the production of tobacco or weapons,
|
||||
- any prison or jail operated for profit,
|
||||
- any action or facility that supports or contributes to:
|
||||
- gambling, adversely addictive behaviours or
|
||||
- deforestation.
|
||||
- lobby against, or derive a majority of income from actions that discourage or frustrate:
|
||||
- peace,
|
||||
- access to the rights set out in the Universal Declaration of Human Rights and the Convention on the Rights of the Child,
|
||||
- peaceful assembly and association (including worker associations),
|
||||
- a safe environment or action to curtail the use of fossil fuels or to prevent climate change or
|
||||
- democratic processes.
|
||||
|
||||
### Other Restrictions
|
||||
|
||||
You may also _not_:
|
||||
|
||||
- **extract parts of the Source Code** for use in other programs or projects (unless the code file in question is explicitly licensed under the terms of the MIT license) or
|
||||
- **remove or alter any proprietary notices** on Kirby.
|
||||
|
||||
## Technical Support
|
||||
|
||||
Technical support is **provided as described on Our website** at <https://getkirby.com>. **No representations or guarantees** are made regarding the response time in which support questions are answered, however We will do Our best to respond quickly.
|
||||
|
||||
We reserve the right to **limit technical support for free licenses**.
|
||||
|
||||
## Refund Policy
|
||||
|
||||
We offer a **14-day**, money back refund policy if Kirby didn't work out for Your project.
|
||||
|
||||
If you need a refund, please get in touch directly at <support@getkirby.com>.
|
||||
|
||||
## No Warranty
|
||||
|
||||
KIRBY IS OFFERED ON AN **"AS-IS" BASIS** AND **NO WARRANTY**, EITHER EXPRESSED OR IMPLIED, IS GIVEN. WE EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND, WHETHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. YOU ASSUME ALL RISK ASSOCIATED WITH THE QUALITY, PERFORMANCE, INSTALLATION AND USE OF KIRBY INCLUDING, BUT NOT LIMITED TO, THE RISKS OF PROGRAM ERRORS, DAMAGE TO EQUIPMENT, LOSS OF DATA OR SOFTWARE PROGRAMS, OR UNAVAILABILITY OR INTERRUPTION OF OPERATIONS. **YOU ARE SOLELY RESPONSIBLE** FOR DETERMINING THE APPROPRIATENESS OF USE OF KIRBY AND ASSUME ALL RISKS ASSOCIATED WITH ITS USE. THIS PARAGRAPH ALSO APPLIES TO YOU IF YOU ARE NOT THE LICENSEE (E.G. IF YOU USE KIRBY WHILE SOMEONE ELSE IS THE LICENSEE).
|
||||
|
||||
## Term, Termination and Modification
|
||||
|
||||
You may use Kirby under this Agreement until either party terminates this Agreement as described in this paragraph. Either party may **terminate the Agreement** at any time, upon notice to the other party in textual form (via email or letter). Upon termination, all or the specified **licenses granted to You will terminate**, and You will **immediately uninstall and cease all use** of Kirby. If not all licenses are terminated, You may continue to use Kirby for the Websites with active licenses. The sections entitled "No Warranty", "Indemnification" and "Limitation of Liability" will **survive any termination** of this Agreement.
|
||||
|
||||
We may **modify Kirby and this Agreement** with notice to You either via email or by publishing content on the Kirby website at https://getkirby.com, including but not limited to changing the functionality or appearance of Kirby. Any such modification will **become binding on You** unless You terminate this Agreement. Changes to this Agreement that constrain Your rights to a great extent will only become effective with Your approval in textual or electronic form.
|
||||
|
||||
## Indemnification
|
||||
|
||||
By accepting the Agreement, you **agree to indemnify and otherwise hold harmless** Us as well as Our officers, employees, agents, subsidiaries, affiliates and other partners from any direct, indirect, incidental, special, consequential or exemplary damages arising out of, relating to, or resulting from your use of Kirby or any other matter relating to Kirby. This paragraph also applies to you if you are not the licensee (e.g. if you use Kirby while someone else is the licensee).
|
||||
|
||||
## Limitation of Liability
|
||||
|
||||
YOU EXPRESSLY UNDERSTAND AND AGREE THAT **WE SHALL NOT BE LIABLE** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES). SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, **SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU**. **IN NO EVENT WILL OUR TOTAL CUMULATIVE DAMAGES EXCEED** THE FEES YOU PAID TO US UNDER THIS AGREEMENT IN THE MOST RECENT TWELVE-MONTH PERIOD. THIS PARAGRAPH ALSO APPLIES TO YOU IF YOU ARE NOT THE LICENSEE (E.G. IF YOU USE KIRBY WHILE SOMEONE ELSE IS THE LICENSEE).
|
||||
|
||||
## All Rights Reserved
|
||||
|
||||
Bastian Allgeier **owns all rights**, title and interest to Kirby (including all intellectual property rights) and **reserves all rights to Kirby** that are not expressly granted in this Agreement.
|
||||
|
||||
## Applicable Law & Place of Jurisdiction
|
||||
|
||||
1. For all disputes arising out of or in connection with this Agreement, the courts competent for Neckargemünd, Germany, shall have exclusive jurisdiction. However, We shall have the choice to file lawsuits against You before the courts competent for Your place of business.
|
||||
2. If You reside in Germany, para. 1 shall only apply if You are a merchant, a legal entity under public law or a special fund under public law.
|
||||
3. If You don't reside in Germany, but in a different member state of the European Union, para. 1 shall only apply if You are not a consumer under Art. 17 of the regulation (EU) No. 1215/2012. In that case, You shall be entitled to file actions against Us either at Our place of business or at the courts competent at the place where You usually reside. We, on the other hand, are only entitled to bring proceedings against You in the courts of the Member State in which You are domiciled.
|
||||
4. If You neither reside in Germany nor in a member state of the EU, the applicability of para. 1 remains unaffected.
|
||||
|
||||
## Severability Clause
|
||||
|
||||
Should any provision of this Agreement be or become invalid, void or unenforceable, in whole or in part, at present or in the future, this shall not affect the validity of the remaining provisions of this Agreement. The same shall apply if a gap requiring supplementation arises after conclusion of this Agreement. The parties shall replace the invalid, void or unenforceable provision or gap requiring filling by a valid provision which in its legal or economic content takes account of the invalid, void provision and the overall content of the agreement. § Section 139 of the German Civil Code (partial invalidity) is expressly waived.
|
||||
|
||||
## Questions?
|
||||
|
||||
Due to Kirby's flexibility, you may have special use cases or requirements that don't fit this Agreement.
|
||||
|
||||
If that's the case or if you have any questions, feel free to get in touch: <support@getkirby.com>. We are happy to think outside the box and find custom license solutions for your creative application of Kirby.
|
49
kirby/README.md
Executable file
49
kirby/README.md
Executable file
@@ -0,0 +1,49 @@
|
||||
[<img src="http://getkirby.com/assets/images/github/kirby.jpg" width="300">](https://getkirby.com)
|
||||
|
||||
[](https://github.com/getkirby/kirby/releases/latest)
|
||||
[](https://github.com/getkirby/kirby/actions?query=workflow%3ACI)
|
||||
[](https://codecov.io/gh/getkirby/kirby)
|
||||
[](https://github.com/getkirby/kirby/releases/latest)
|
||||
[](https://twitter.com/getkirby)
|
||||
|
||||
**Kirby: the CMS that adapts to any project, loved by developers and editors alike.**
|
||||
With Kirby, you build your own ideal interface. Combine forms, galleries, articles, spreadsheets and more into an amazing editing experience. You can learn more about Kirby at [getkirby.com](https://getkirby.com).
|
||||
|
||||
This is Kirby's core application folder. Get started with one of the following repositories instead:
|
||||
|
||||
- [Starterkit](https://github.com/getkirby/starterkit)
|
||||
- [Plainkit](https://github.com/getkirby/plainkit)
|
||||
|
||||
<img src="http://getkirby.com/assets/images/github/kirby-screen.png" />
|
||||
|
||||
### Try Kirby for free
|
||||
Kirby is not free software. However, you can try Kirby and the Starterkit on your local machine or on a test server as long as you need to make sure it is the right tool for your next project. … and when you’re convinced, [buy your license](https://getkirby.com/buy).
|
||||
|
||||
### Contribute
|
||||
|
||||
**Found a bug?**
|
||||
Please post all bug reports in our [issue tracker](https://github.com/getkirby/kirby/issues).
|
||||
|
||||
**Suggest a feature**
|
||||
If you have ideas for a feature or enhancement for Kirby, please use our [feedback platform](https://feedback.getkirby.com).
|
||||
|
||||
**Translations, bug fixes, code contributions ...**
|
||||
Read about how to contribute to the development in our [contributing guide](/.github/CONTRIBUTING.md).
|
||||
|
||||
|
||||
|
||||
## What's Kirby?
|
||||
- **[getkirby.com](https://getkirby.com)** – Get to know the CMS.
|
||||
- **[Try it](https://getkirby.com/try)** – Take a test ride with our online demo. Or download one of our kits to get started.
|
||||
- **[Documentation](https://getkirby.com/docs/guide)** – Read the official guide, reference and cookbook recipes.
|
||||
- **[Issues](https://github.com/getkirby/kirby/issues)** – Report bugs and other problems.
|
||||
- **[Feedback](https://feedback.getkirby.com)** – You have an idea for Kirby? Share it.
|
||||
- **[Forum](https://forum.getkirby.com)** – Whenever you get stuck, don't hesitate to reach out for questions and support.
|
||||
- **[Discord](https://chat.getkirby.com)** – Hang out and meet the community.
|
||||
- **[Twitter](https://twitter.com/getkirby)** – Spread the word.
|
||||
- **[Instagram](https://www.instagram.com/getkirby/)** – Share your creations: #madewithkirby.
|
||||
|
||||
---
|
||||
|
||||
© 2009-2022 Bastian Allgeier
|
||||
[getkirby.com](https://getkirby.com) · [License agreement](https://getkirby.com/license)
|
411
kirby/cacert.pem
411
kirby/cacert.pem
@@ -1,7 +1,7 @@
|
||||
##
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Tue Oct 26 03:12:05 2021 GMT
|
||||
## Certificate data from Mozilla as of: Fri Mar 18 12:29:51 2022 GMT
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||
@@ -13,8 +13,8 @@
|
||||
## an Apache+mod_ssl webserver for SSL client authentication.
|
||||
## Just configure this file as the SSLCACertificateFile.
|
||||
##
|
||||
## Conversion done with mk-ca-bundle.pl version 1.28.
|
||||
## SHA256: bb36818a81feaa4cca61101e6d6276cd09e972efcb08112dfed846918ca41d7f
|
||||
## Conversion done with mk-ca-bundle.pl version 1.29.
|
||||
## SHA256: 187ef9dc231135324fe78830cf4462f1ecdeab3e6c9d5e38d623391e88dc5d3c
|
||||
##
|
||||
|
||||
|
||||
@@ -39,28 +39,6 @@ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
||||
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign Root CA - R2
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
||||
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
||||
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
||||
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
||||
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
||||
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
||||
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
||||
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
||||
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
||||
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
||||
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
||||
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
||||
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
||||
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
||||
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
||||
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
||||
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Entrust.net Premium 2048 Secure Server CA
|
||||
=========================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -573,28 +551,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
||||
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Cybertrust Global Root
|
||||
======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
||||
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
||||
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
||||
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
||||
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
||||
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
||||
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
||||
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
||||
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
||||
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
||||
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
||||
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
||||
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
||||
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
||||
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
||||
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ePKI Root Certification Authority
|
||||
=================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -1037,36 +993,6 @@ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
||||
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
EC-ACC
|
||||
======
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
||||
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
||||
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
||||
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
||||
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
||||
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
||||
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
||||
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
||||
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
||||
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
||||
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
||||
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
||||
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
||||
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
||||
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
||||
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
||||
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
||||
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
||||
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
||||
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
||||
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
||||
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
||||
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
||||
5EI=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Hellenic Academic and Research Institutions RootCA 2011
|
||||
=======================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -1737,20 +1663,6 @@ HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
|
||||
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign ECC Root CA - R4
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
|
||||
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
||||
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
|
||||
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
|
||||
EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
|
||||
OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
|
||||
AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
|
||||
MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
|
||||
JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign ECC Root CA - R5
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -2472,96 +2384,6 @@ AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
|
||||
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R1
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
CFF1pkgl
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R2
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
o/DUhgkC
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R3
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
|
||||
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
|
||||
UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
|
||||
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
|
||||
hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
|
||||
Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
|
||||
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
|
||||
0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
|
||||
glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
|
||||
KaqW04MjyaR7YbPMAuhd
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R4
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
|
||||
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
|
||||
UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
|
||||
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
|
||||
hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
|
||||
6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
|
||||
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
|
||||
2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
|
||||
N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
|
||||
zPKwTdb+mciUqXWi4w==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
UCA Global G2 Root
|
||||
==================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@@ -3230,3 +3052,230 @@ ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW
|
||||
rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw
|
||||
CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
||||
=========================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
||||
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
||||
MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw
|
||||
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
||||
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
||||
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
||||
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
||||
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
||||
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
||||
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
||||
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
||||
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
||||
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
||||
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud
|
||||
DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w
|
||||
gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j
|
||||
b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A
|
||||
bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC
|
||||
AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL
|
||||
4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb
|
||||
LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il
|
||||
I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP
|
||||
cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA
|
||||
LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A
|
||||
lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH
|
||||
9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf
|
||||
NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE
|
||||
ZycPvEJdvSRUDewdcAZfpLz6IHxV
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
vTrus ECC Root CA
|
||||
=================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE
|
||||
BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS
|
||||
b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa
|
||||
BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw
|
||||
EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c
|
||||
ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n
|
||||
TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO
|
||||
BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT
|
||||
QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL
|
||||
YgmRWAD5Tfs0aNoJrSEGGJTO
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
vTrus Root CA
|
||||
=============
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
l3s=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ISRG Root X2
|
||||
============
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV
|
||||
UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT
|
||||
UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT
|
||||
MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS
|
||||
RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
|
||||
ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb
|
||||
d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
|
||||
HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF
|
||||
cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5
|
||||
U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
HiPKI Root CA - G1
|
||||
==================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign ECC Root CA - R4
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i
|
||||
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
|
||||
b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i
|
||||
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
|
||||
b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW
|
||||
ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E
|
||||
BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI
|
||||
KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg
|
||||
UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R1
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
gm3c
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R2
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
HYbL
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R3
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
|
||||
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw
|
||||
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
|
||||
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO
|
||||
PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
|
||||
736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA
|
||||
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq
|
||||
Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT
|
||||
L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV
|
||||
11RZt+cRLInUue4X
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GTS Root R4
|
||||
===========
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
|
||||
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw
|
||||
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
|
||||
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO
|
||||
PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
|
||||
hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA
|
||||
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1
|
||||
PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C
|
||||
r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh
|
||||
4rsUecrNIdSUtUlD
|
||||
-----END CERTIFICATE-----
|
||||
|
@@ -3,7 +3,7 @@
|
||||
"description": "The Kirby 3 core",
|
||||
"license": "proprietary",
|
||||
"type": "kirby-cms",
|
||||
"version": "3.6.2",
|
||||
"version": "3.6.3",
|
||||
"keywords": [
|
||||
"kirby",
|
||||
"cms",
|
||||
@@ -33,7 +33,7 @@
|
||||
"getkirby/composer-installer": "^1.2.1",
|
||||
"laminas/laminas-escaper": "2.9.0",
|
||||
"michelf/php-smartypants": "1.8.1",
|
||||
"phpmailer/phpmailer": "6.5.3",
|
||||
"phpmailer/phpmailer": "6.5.4",
|
||||
"psr/log": "1.1.4",
|
||||
"symfony/polyfill-intl-idn": "1.24.0",
|
||||
"symfony/polyfill-mbstring": "1.24.0"
|
||||
|
44
kirby/composer.lock
generated
44
kirby/composer.lock
generated
@@ -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": "14602437d78db71d4bba50467b607075",
|
||||
"content-hash": "d4cf75084dae428fe0ab54124637d51f",
|
||||
"packages": [
|
||||
{
|
||||
"name": "claviska/simpleimage",
|
||||
@@ -349,16 +349,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpmailer/phpmailer",
|
||||
"version": "v6.5.3",
|
||||
"version": "v6.5.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
||||
"reference": "baeb7cde6b60b1286912690ab0693c7789a31e71"
|
||||
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/baeb7cde6b60b1286912690ab0693c7789a31e71",
|
||||
"reference": "baeb7cde6b60b1286912690ab0693c7789a31e71",
|
||||
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285",
|
||||
"reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -371,10 +371,10 @@
|
||||
"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",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.3.1",
|
||||
"phpcompatibility/php-compatibility": "^9.3.5",
|
||||
"roave/security-advisories": "dev-latest",
|
||||
"squizlabs/php_codesniffer": "^3.6.0",
|
||||
"squizlabs/php_codesniffer": "^3.6.2",
|
||||
"yoast/phpunit-polyfills": "^1.0.0"
|
||||
},
|
||||
"suggest": {
|
||||
@@ -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.3"
|
||||
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -423,7 +423,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2021-11-25T16:34:11+00:00"
|
||||
"time": "2022-02-17T08:19:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
@@ -508,12 +508,12 @@
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Intl\\Idn\\": ""
|
||||
},
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Intl\\Idn\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
@@ -564,7 +564,7 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
"version": "v1.24.0",
|
||||
"version": "v1.25.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||
@@ -593,12 +593,12 @@
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
|
||||
},
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
@@ -628,7 +628,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -680,12 +680,12 @@
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||
},
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
|
@@ -765,11 +765,12 @@ function svg($file)
|
||||
*
|
||||
* @param string|array $key
|
||||
* @param string|null $fallback
|
||||
* @param string|null $locale
|
||||
* @return array|string|null
|
||||
*/
|
||||
function t($key, string $fallback = null)
|
||||
function t($key, string $fallback = null, string $locale = null)
|
||||
{
|
||||
return I18n::translate($key, $fallback);
|
||||
return I18n::translate($key, $fallback, $locale);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -777,11 +778,13 @@ function t($key, string $fallback = null)
|
||||
*
|
||||
* @param string $key
|
||||
* @param int $count
|
||||
* @param string|null $locale
|
||||
* @param bool $formatNumber If set to `false`, the count is not formatted
|
||||
* @return mixed
|
||||
*/
|
||||
function tc(string $key, int $count)
|
||||
function tc(string $key, int $count, string $locale = null, bool $formatNumber = true)
|
||||
{
|
||||
return I18n::translateCount($key, $count);
|
||||
return I18n::translateCount($key, $count, $locale, $formatNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -17,7 +17,7 @@ class ParsedownExtra extends Parsedown
|
||||
{
|
||||
# ~
|
||||
|
||||
const version = '0.8.0-beta-1';
|
||||
public const version = '0.8.0-beta-1';
|
||||
|
||||
# ~
|
||||
|
||||
@@ -568,11 +568,11 @@ class ParsedownExtra extends Parsedown
|
||||
# http://stackoverflow.com/q/1148928/200145
|
||||
libxml_use_internal_errors(true);
|
||||
|
||||
$DOMDocument = new DOMDocument;
|
||||
$DOMDocument = new DOMDocument();
|
||||
|
||||
# http://stackoverflow.com/q/11309194/200145
|
||||
$elementMarkup = mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8');
|
||||
|
||||
|
||||
# Ensure that saveHTML() is not remove new line characters. New lines will be split by this character.
|
||||
$DOMDocument->formatOutput = true;
|
||||
|
||||
|
@@ -17,7 +17,7 @@ class Parsedown
|
||||
{
|
||||
# ~
|
||||
|
||||
const version = '1.8.0-beta-7';
|
||||
public const version = '1.8.0-beta-7';
|
||||
|
||||
# ~
|
||||
|
||||
@@ -207,11 +207,9 @@ class Parsedown
|
||||
$CurrentBlock = $Block;
|
||||
|
||||
continue;
|
||||
} else {
|
||||
if ($this->isBlockCompletable($CurrentBlock['type'])) {
|
||||
$methodName = 'block' . $CurrentBlock['type'] . 'Complete';
|
||||
$CurrentBlock = $this->$methodName($CurrentBlock);
|
||||
}
|
||||
} elseif ($this->isBlockCompletable($CurrentBlock['type'])) {
|
||||
$methodName = 'block' . $CurrentBlock['type'] . 'Complete';
|
||||
$CurrentBlock = $this->$methodName($CurrentBlock);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1597,12 +1595,10 @@ class Parsedown
|
||||
$markup .= $this->elements($Element['elements']);
|
||||
} elseif (isset($Element['element'])) {
|
||||
$markup .= $this->element($Element['element']);
|
||||
} elseif (!$permitRawHtml) {
|
||||
$markup .= self::escape($text, true);
|
||||
} else {
|
||||
if (!$permitRawHtml) {
|
||||
$markup .= self::escape($text, true);
|
||||
} else {
|
||||
$markup .= $text;
|
||||
}
|
||||
$markup .= $text;
|
||||
}
|
||||
|
||||
$markup .= $hasName ? '</' . $Element['name'] . '>' : '';
|
||||
|
@@ -19,7 +19,7 @@ class Spyc
|
||||
{
|
||||
// SETTINGS
|
||||
|
||||
const REMPTY = "\0\0\0\0\0";
|
||||
public const REMPTY = "\0\0\0\0\0";
|
||||
|
||||
/**
|
||||
* Setting this to true will force YAMLDump to enclose any string value in
|
||||
@@ -106,7 +106,7 @@ class Spyc
|
||||
*/
|
||||
public static function YAMLLoad($input, $options = [])
|
||||
{
|
||||
$Spyc = new Spyc;
|
||||
$Spyc = new Spyc();
|
||||
foreach ($options as $key => $value) {
|
||||
if (property_exists($Spyc, $key)) {
|
||||
$Spyc->$key = $value;
|
||||
@@ -137,7 +137,7 @@ class Spyc
|
||||
*/
|
||||
public static function YAMLLoadString($input, $options = [])
|
||||
{
|
||||
$Spyc = new Spyc;
|
||||
$Spyc = new Spyc();
|
||||
foreach ($options as $key => $value) {
|
||||
if (property_exists($Spyc, $key)) {
|
||||
$Spyc->$key = $value;
|
||||
@@ -169,7 +169,7 @@ class Spyc
|
||||
*/
|
||||
public static function YAMLDump($array, $indent = false, $wordwrap = false, $no_opening_dashes = false)
|
||||
{
|
||||
$spyc = new Spyc;
|
||||
$spyc = new Spyc();
|
||||
return $spyc->dump($array, $indent, $wordwrap, $no_opening_dashes);
|
||||
}
|
||||
|
||||
@@ -448,9 +448,9 @@ class Spyc
|
||||
{
|
||||
if (self::isTrueWord($value)) {
|
||||
$value = true;
|
||||
} else if (self::isFalseWord($value)) {
|
||||
} elseif (self::isFalseWord($value)) {
|
||||
$value = false;
|
||||
} else if (self::isNullWord($value)) {
|
||||
} elseif (self::isNullWord($value)) {
|
||||
$value = null;
|
||||
}
|
||||
}
|
||||
@@ -912,20 +912,18 @@ class Spyc
|
||||
}
|
||||
|
||||
$_arr = array_merge($_arr, $value);
|
||||
} else if ($key || $key === '' || $key === '0') {
|
||||
} elseif ($key || $key === '' || $key === '0') {
|
||||
if (!is_array($_arr))
|
||||
$_arr = array($key => $value);
|
||||
else
|
||||
$_arr[$key] = $value;
|
||||
} elseif (!is_array($_arr)) {
|
||||
$_arr = array($value);
|
||||
$key = 0;
|
||||
} else {
|
||||
if (!is_array($_arr)) {
|
||||
$_arr = array($value);
|
||||
$key = 0;
|
||||
} else {
|
||||
$_arr[] = $value;
|
||||
end($_arr);
|
||||
$key = key($_arr);
|
||||
}
|
||||
$_arr[] = $value;
|
||||
end($_arr);
|
||||
$key = key($_arr);
|
||||
}
|
||||
|
||||
$reverse_path = array_reverse($this->path);
|
||||
@@ -992,12 +990,12 @@ class Spyc
|
||||
return $literalBlock . $line;
|
||||
}
|
||||
|
||||
function revertLiteralPlaceHolder($lineArray, $literalBlock)
|
||||
public function revertLiteralPlaceHolder($lineArray, $literalBlock)
|
||||
{
|
||||
foreach ($lineArray as $k => $_) {
|
||||
if (is_array($_))
|
||||
$lineArray[$k] = $this->revertLiteralPlaceHolder($_, $literalBlock);
|
||||
else if (substr($_, -1 * strlen($this->LiteralPlaceHolder)) == $this->LiteralPlaceHolder)
|
||||
elseif (substr($_, -1 * strlen($this->LiteralPlaceHolder)) == $this->LiteralPlaceHolder)
|
||||
$lineArray[$k] = rtrim($literalBlock, " \r\n");
|
||||
}
|
||||
return $lineArray;
|
||||
|
@@ -9,7 +9,7 @@
|
||||
"back": "Zpět",
|
||||
"cancel": "Zru\u0161it",
|
||||
"change": "Zm\u011bnit",
|
||||
"close": "Zav\u0159it",
|
||||
"close": "Zavřít",
|
||||
"confirm": "Ok",
|
||||
"collapse": "Sbalit",
|
||||
"collapse.all": "Sbalit vše",
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
"error.template.default.notFound": "Výchozí šablona neexistuje",
|
||||
|
||||
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
|
||||
"error.unexpected": "Vyskytla se neočekávaná chyba! Pro více informací povolte debug mód, viz: https://getkirby.com/docs/reference/system/options/debug",
|
||||
|
||||
"error.user.changeEmail.permission": "Nemáte dovoleno měnit email uživatele \"{name}\"",
|
||||
"error.user.changeLanguage.permission": "Nemáte dovoleno změnit jazyk uživatele \"{name}\"",
|
||||
|
@@ -505,7 +505,7 @@
|
||||
"toolbar.button.ul": "Bula listo",
|
||||
|
||||
"translation.author": "Teamo Kirby",
|
||||
"translation.direction": "demaldekstre",
|
||||
"translation.direction": "ltr",
|
||||
"translation.name": "Esperanto",
|
||||
"translation.locale": "eo",
|
||||
|
||||
|
@@ -11,10 +11,10 @@
|
||||
"change": "Cambiar",
|
||||
"close": "Cerrar",
|
||||
"confirm": "Confirmar",
|
||||
"collapse": "Collapse",
|
||||
"collapse.all": "Collapse All",
|
||||
"collapse": "Colapsar",
|
||||
"collapse.all": "Colapsar todos",
|
||||
"copy": "Copiar",
|
||||
"copy.all": "Copy all",
|
||||
"copy.all": "Copiar todo",
|
||||
"create": "Crear",
|
||||
|
||||
"date": "Fecha",
|
||||
@@ -32,7 +32,7 @@
|
||||
"debugging": "Debugging",
|
||||
|
||||
"delete": "Borrar",
|
||||
"delete.all": "Delete all",
|
||||
"delete.all": "Eliminar todos",
|
||||
|
||||
"dialog.files.empty": "No se ha seleccionado ningún archivo",
|
||||
"dialog.pages.empty": "No se ha seleccionado ninguna página",
|
||||
@@ -49,12 +49,12 @@
|
||||
"email": "Correo electrónico",
|
||||
"email.placeholder": "correo@ejemplo.com",
|
||||
|
||||
"environment": "Environment",
|
||||
"environment": "Ambiente",
|
||||
|
||||
"error.access.code": "Invalid code",
|
||||
"error.access.code": "Código inválido",
|
||||
"error.access.login": "Ingreso inválido",
|
||||
"error.access.panel": "No estás autorizado para acceder al panel",
|
||||
"error.access.view": "You are not allowed to access this part of the panel",
|
||||
"error.access.view": "No tienes permiso para acceder a esta parte del panel",
|
||||
|
||||
"error.avatar.create.fail": "No se pudo subir la foto de perfil.",
|
||||
"error.avatar.delete.fail": "No se pudo borrar la foto de perfil",
|
||||
@@ -63,55 +63,55 @@
|
||||
|
||||
"error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado",
|
||||
|
||||
"error.blocks.max.plural": "You must not add more than {max} blocks",
|
||||
"error.blocks.max.singular": "You must not add more than one block",
|
||||
"error.blocks.min.plural": "You must add at least {min} blocks",
|
||||
"error.blocks.min.singular": "You must add at least one block",
|
||||
"error.blocks.validation": "There's an error in block {index}",
|
||||
"error.blocks.max.plural": "No debes añadir más de {max} bloques",
|
||||
"error.blocks.max.singular": "No debes añadir más de un bloque",
|
||||
"error.blocks.min.plural": "Debes añadir al menos {min} bloques ",
|
||||
"error.blocks.min.singular": "Debes añadir al menos un bloque",
|
||||
"error.blocks.validation": "Hay un error en el bloque {index}",
|
||||
|
||||
"error.email.preset.notFound": "El preset del correo \"{name}\" no pudo ser encontrado",
|
||||
|
||||
"error.field.converter.invalid": "Convertidor \"{converter}\" inválido",
|
||||
|
||||
"error.file.changeName.empty": "The name must not be empty",
|
||||
"error.file.changeName.empty": "El nombre no debe estar vacío",
|
||||
"error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"",
|
||||
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"",
|
||||
"error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida",
|
||||
"error.file.extension.invalid": "Invalid extension: {extension}",
|
||||
"error.file.extension.invalid": "Extensión inválida: {extension}",
|
||||
"error.file.extension.missing": "Falta la extensión para \"{filename}\"",
|
||||
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
|
||||
"error.file.maxsize": "The file is too large",
|
||||
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
|
||||
"error.file.maxheight": "La altura de la imagen no debe exceder {height} pixeles",
|
||||
"error.file.maxsize": "El archivo es muy grande",
|
||||
"error.file.maxwidth": "El ancho de la imagen no debe exceder {width} pixeles",
|
||||
"error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\"",
|
||||
"error.file.mime.forbidden": "Los medios tipo \"{mime}\" no están permitidos",
|
||||
"error.file.mime.invalid": "Invalid mime type: {mime}",
|
||||
"error.file.mime.invalid": "Tipo invalido de mime: {mime}",
|
||||
"error.file.mime.missing": "El tipo de medio para \"{filename}\" no pudo ser detectado",
|
||||
"error.file.minheight": "The height of the image must be at least {height} pixels",
|
||||
"error.file.minsize": "The file is too small",
|
||||
"error.file.minwidth": "The width of the image must be at least {width} pixels",
|
||||
"error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles",
|
||||
"error.file.minsize": "El archivo es muy pequeño",
|
||||
"error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
|
||||
"error.file.name.missing": "El nombre de archivo no debe estar vacío",
|
||||
"error.file.notFound": "El archivo \"{filename}\" no pudo ser encontrado",
|
||||
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
|
||||
"error.file.type.forbidden": "No está permitido subir archivos {type}",
|
||||
"error.file.type.invalid": "Invalid file type: {type}",
|
||||
"error.file.type.invalid": "Tipo de archivo inválido: {type}",
|
||||
"error.file.undefined": "El archivo no pudo ser encontrado",
|
||||
|
||||
"error.form.incomplete": "Por favor, corrija todos los errores del formulario…",
|
||||
"error.form.notSaved": "El formulario no pudo ser guardado",
|
||||
|
||||
"error.language.code": "Please enter a valid code for the language",
|
||||
"error.language.duplicate": "The language already exists",
|
||||
"error.language.name": "Please enter a valid name for the language",
|
||||
"error.language.notFound": "The language could not be found",
|
||||
"error.language.code": "Por favor introduce un código válido para el idioma",
|
||||
"error.language.duplicate": "El idioma ya existe",
|
||||
"error.language.name": "Por favor introduce un nombre válido para el idioma",
|
||||
"error.language.notFound": "No se pudo encontrar el idioma",
|
||||
|
||||
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
|
||||
"error.layout.validation.settings": "There's an error in layout {index} settings",
|
||||
|
||||
"error.license.format": "Please enter a valid license key",
|
||||
"error.license.format": "Por favor introduce una llave de licencia válida",
|
||||
"error.license.email": "Por favor, introduce un correo electrónico válido",
|
||||
"error.license.verification": "The license could not be verified",
|
||||
"error.license.verification": "La licencia no pude ser verificada",
|
||||
|
||||
"error.offline": "The Panel is currently offline",
|
||||
"error.offline": "El Panel se encuentra fuera de linea ",
|
||||
|
||||
"error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
|
||||
@@ -165,7 +165,7 @@
|
||||
"error.user.changePassword.permission": "No tienes permitido cambiar la contraseña del usuario \"{name}\"",
|
||||
"error.user.changeRole.lastAdmin": "El rol para el último administrador no puede ser cambiado",
|
||||
"error.user.changeRole.permission": "No tienes permitido cambiar el rol del usuario \"{name}\"",
|
||||
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
|
||||
"error.user.changeRole.toAdmin": "No tienes permitido promover a alguien al rol de admin",
|
||||
"error.user.create.permission": "No tienes permiso para crear este usuario",
|
||||
"error.user.delete": "El usuario \"{name}\" no puede ser eliminado",
|
||||
"error.user.delete.lastAdmin": "El último administrador no puede ser eliminado",
|
||||
@@ -178,7 +178,7 @@
|
||||
"error.user.password.invalid": "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.",
|
||||
"error.user.password.notSame": "Las contraseñas no coinciden",
|
||||
"error.user.password.undefined": "El usuario no tiene contraseña",
|
||||
"error.user.password.wrong": "Wrong password",
|
||||
"error.user.password.wrong": "Contraseña incorrecta",
|
||||
"error.user.role.invalid": "Por favor ingrese un rol válido",
|
||||
"error.user.undefined": "El usuario no puede ser encontrado",
|
||||
"error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"",
|
||||
@@ -190,9 +190,9 @@
|
||||
"error.validation.boolean": "Por favor confirme o rechace",
|
||||
"error.validation.contains": "Por favor ingrese un valor que contenga \"{needle}\"",
|
||||
"error.validation.date": "Por favor introduzca una fecha valida",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.date.after": "Por favor introduce una fecha posterior a {date}",
|
||||
"error.validation.date.before": "Por favor introduce una fecha anterior a {date}",
|
||||
"error.validation.date.between": "Por favor introduce un número entre {min} y {max}",
|
||||
"error.validation.denied": "Por favor, rechace",
|
||||
"error.validation.different": "El valor no debe ser \"{other}\"",
|
||||
"error.validation.email": "Por favor, introduce un correo electrónico válido",
|
||||
@@ -219,54 +219,54 @@
|
||||
"error.validation.size": "El tamaño del valor debe ser \"{size}\"",
|
||||
"error.validation.startswith": "El valor debe comenzar con \"{start}\"",
|
||||
"error.validation.time": "Por favor ingrese una hora válida",
|
||||
"error.validation.time.after": "Please enter a time after {time}",
|
||||
"error.validation.time.before": "Please enter a time before {time}",
|
||||
"error.validation.time.between": "Please enter a time between {min} and {max}",
|
||||
"error.validation.time.after": "Por favor ingresa una fecha después de {time}",
|
||||
"error.validation.time.before": "Por favor ingresa una fecha antes de {time}",
|
||||
"error.validation.time.between": "Por favor ingresa un fecha entre {min} y {max}",
|
||||
"error.validation.url": "Por favor introduzca un URL válido",
|
||||
|
||||
"expand": "Expand",
|
||||
"expand.all": "Expand All",
|
||||
"expand": "Expandir",
|
||||
"expand.all": "Expandir todo",
|
||||
|
||||
"field.required": "The field is required",
|
||||
"field.blocks.changeType": "Change type",
|
||||
"field.required": "Este campo es requerido",
|
||||
"field.blocks.changeType": "Cambiar tipo",
|
||||
"field.blocks.code.name": "Código",
|
||||
"field.blocks.code.language": "Idioma",
|
||||
"field.blocks.code.placeholder": "Your code …",
|
||||
"field.blocks.delete.confirm": "Do you really want to delete this block?",
|
||||
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
|
||||
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
|
||||
"field.blocks.empty": "No blocks yet",
|
||||
"field.blocks.fieldsets.label": "Please select a block type …",
|
||||
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
|
||||
"field.blocks.gallery.name": "Gallery",
|
||||
"field.blocks.gallery.images.empty": "No images yet",
|
||||
"field.blocks.gallery.images.label": "Images",
|
||||
"field.blocks.heading.level": "Level",
|
||||
"field.blocks.heading.name": "Heading",
|
||||
"field.blocks.heading.text": "Text",
|
||||
"field.blocks.heading.placeholder": "Heading …",
|
||||
"field.blocks.image.alt": "Alternative text",
|
||||
"field.blocks.image.caption": "Caption",
|
||||
"field.blocks.image.crop": "Crop",
|
||||
"field.blocks.code.placeholder": "Tu código...",
|
||||
"field.blocks.delete.confirm": "¿Seguro que quieres eliminar este bloque?",
|
||||
"field.blocks.delete.confirm.all": "¿Seguro que quieres eliminar todos los bloques?",
|
||||
"field.blocks.delete.confirm.selected": "¿Seguro que quieres eliminar los bloques seleccionados?",
|
||||
"field.blocks.empty": "No hay bloques aún",
|
||||
"field.blocks.fieldsets.label": "Por favor selecciona un tipo de bloque...",
|
||||
"field.blocks.fieldsets.paste": "Presiona <kbd>{{ shortcut }}</kbd>para pegar/importar bloques en tu portapapeles ",
|
||||
"field.blocks.gallery.name": "Galería",
|
||||
"field.blocks.gallery.images.empty": "No hay imágenes aún",
|
||||
"field.blocks.gallery.images.label": "Imágenes",
|
||||
"field.blocks.heading.level": "Nivel",
|
||||
"field.blocks.heading.name": "Encabezado",
|
||||
"field.blocks.heading.text": "Texto",
|
||||
"field.blocks.heading.placeholder": "Encabezado...",
|
||||
"field.blocks.image.alt": "Texto alternativo",
|
||||
"field.blocks.image.caption": "Leyenda",
|
||||
"field.blocks.image.crop": "Cortar",
|
||||
"field.blocks.image.link": "Enlace",
|
||||
"field.blocks.image.location": "Location",
|
||||
"field.blocks.image.location": "Ubicación",
|
||||
"field.blocks.image.name": "Imágen",
|
||||
"field.blocks.image.placeholder": "Select an image",
|
||||
"field.blocks.image.ratio": "Ratio",
|
||||
"field.blocks.image.url": "Image URL",
|
||||
"field.blocks.line.name": "Line",
|
||||
"field.blocks.list.name": "List",
|
||||
"field.blocks.image.placeholder": "Selecciona una imagen",
|
||||
"field.blocks.image.ratio": "Proporción",
|
||||
"field.blocks.image.url": "URL de imágen",
|
||||
"field.blocks.line.name": "Linea",
|
||||
"field.blocks.list.name": "Lista",
|
||||
"field.blocks.markdown.name": "Markdown",
|
||||
"field.blocks.markdown.label": "Text",
|
||||
"field.blocks.markdown.placeholder": "Markdown …",
|
||||
"field.blocks.quote.name": "Quote",
|
||||
"field.blocks.quote.text.label": "Text",
|
||||
"field.blocks.quote.text.placeholder": "Quote …",
|
||||
"field.blocks.markdown.label": "Texto",
|
||||
"field.blocks.markdown.placeholder": "Markdown...",
|
||||
"field.blocks.quote.name": "Cita",
|
||||
"field.blocks.quote.text.label": "Texto",
|
||||
"field.blocks.quote.text.placeholder": "Cita...",
|
||||
"field.blocks.quote.citation.label": "Citation",
|
||||
"field.blocks.quote.citation.placeholder": "by …",
|
||||
"field.blocks.text.name": "Text",
|
||||
"field.blocks.quote.citation.placeholder": "Por ...",
|
||||
"field.blocks.text.name": "Texto",
|
||||
"field.blocks.text.placeholder": "Text …",
|
||||
"field.blocks.video.caption": "Caption",
|
||||
"field.blocks.video.caption": "Leyenda",
|
||||
"field.blocks.video.name": "Video",
|
||||
"field.blocks.video.placeholder": "Enter a video URL",
|
||||
"field.blocks.video.url.label": "Video-URL",
|
||||
@@ -323,7 +323,7 @@
|
||||
"language.direction.ltr": "De izquierda a derecha",
|
||||
"language.direction.rtl": "De derecha a izquierda",
|
||||
"language.locale": "PHP locale string",
|
||||
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
|
||||
"language.locale.warning": "Estas utilizando un configuración local. Por favor modifícalo en el archivo del lenguaje en /site/languages",
|
||||
"language.name": "Nombre",
|
||||
"language.updated": "El idioma ha sido actualizado",
|
||||
|
||||
@@ -346,13 +346,13 @@
|
||||
|
||||
"loading": "Cargando",
|
||||
|
||||
"lock.unsaved": "Unsaved changes",
|
||||
"lock.unsaved.empty": "There are no more unsaved changes",
|
||||
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
|
||||
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
|
||||
"lock.unlock": "Unlock",
|
||||
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
|
||||
"lock.unsaved": "Cambios sin guardar",
|
||||
"lock.unsaved.empty": "No hay más cambios sin guardar",
|
||||
"lock.isLocked": "Cambios sin guardar por <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "El archivo está siendo actualmente editado por {email} y no puede ser cambiado.",
|
||||
"lock.page.isLocked": "La página está siendo actualmente editada por {email} y no puede ser cambiada.",
|
||||
"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ón",
|
||||
"login.code.label.login": "Login code",
|
||||
@@ -395,8 +395,8 @@
|
||||
"name": "Nombre",
|
||||
"next": "Siguiente",
|
||||
"no": "no",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"off": "Apagado",
|
||||
"on": "Encendido",
|
||||
"open": "Abrir",
|
||||
"open.newWindow": "Open in new window",
|
||||
"options": "Opciones",
|
||||
@@ -419,8 +419,8 @@
|
||||
"page.delete.confirm.title": "Introduzca el título de la página para confirmar",
|
||||
"page.draft.create": "Crear borrador",
|
||||
"page.duplicate.appendix": "Copiar",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.duplicate.files": "Copiar archivos",
|
||||
"page.duplicate.pages": "Copiar páginas",
|
||||
"page.sort": "Change position",
|
||||
"page.status": "Estado",
|
||||
"page.status.draft": "Borrador",
|
||||
@@ -453,13 +453,13 @@
|
||||
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
|
||||
|
||||
"role": "Rol",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.admin.description": "El administrador tiene todos los derechos",
|
||||
"role.admin.title": "Administrador",
|
||||
"role.all": "Todos",
|
||||
"role.empty": "No hay usuarios con este rol",
|
||||
"role.description.placeholder": "Sin descripción",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
"role.nobody.description": "Este es un rol alternativo sin permisos",
|
||||
"role.nobody.title": "Nadie",
|
||||
|
||||
"save": "Guardar",
|
||||
"search": "Buscar",
|
||||
@@ -467,7 +467,7 @@
|
||||
"search.all": "Show all",
|
||||
"search.results.none": "No results",
|
||||
|
||||
"section.required": "The section is required",
|
||||
"section.required": "Esta sección es requerida",
|
||||
|
||||
"select": "Seleccionar",
|
||||
"settings": "Ajustes",
|
||||
@@ -510,17 +510,17 @@
|
||||
"translation.locale": "es_ES",
|
||||
|
||||
"upload": "Subir",
|
||||
"upload.error.cantMove": "The uploaded file could not be moved",
|
||||
"upload.error.cantWrite": "Failed to write file to disk",
|
||||
"upload.error.default": "The file could not be uploaded",
|
||||
"upload.error.extension": "File upload stopped by extension",
|
||||
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
|
||||
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
|
||||
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
|
||||
"upload.error.noFile": "No file was uploaded",
|
||||
"upload.error.noFiles": "No files were uploaded",
|
||||
"upload.error.partial": "The uploaded file was only partially uploaded",
|
||||
"upload.error.tmpDir": "Missing a temporary folder",
|
||||
"upload.error.cantMove": "El archivo subido no puede ser movido",
|
||||
"upload.error.cantWrite": "Error al escribir el archivo en el disco",
|
||||
"upload.error.default": "El archivo no pudo ser subido",
|
||||
"upload.error.extension": "Subida de archivo detenida por la extensión",
|
||||
"upload.error.formSize": "El archivo subido excede la directiva MAX_FILE_SIZE que fue especificada en el formulario",
|
||||
"upload.error.iniPostSize": "El archivo subido excede la directiva post_max_size directive en php.ini",
|
||||
"upload.error.iniSize": "El archivo subido excede la directiva upload_max_filesize en php.ini",
|
||||
"upload.error.noFile": "Ningún archivo ha sido subido",
|
||||
"upload.error.noFiles": "Ningún archivo ha sido subido",
|
||||
"upload.error.partial": "El archivo ha sido subido solo parcialmente",
|
||||
"upload.error.tmpDir": "No se encuentra la carpeta temporal",
|
||||
"upload.errors": "Error",
|
||||
"upload.progress": "Cargando…",
|
||||
|
||||
|
@@ -157,7 +157,7 @@
|
||||
|
||||
"error.template.default.notFound": "Az alapértelmezett sablon nem létezik",
|
||||
|
||||
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
|
||||
"error.unexpected": "Váratlan hiba történt! További információért engedélyezd a hibakeresés módot: https://getkirby.com/docs/reference/system/options/debug",
|
||||
|
||||
"error.user.changeEmail.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó email-címét",
|
||||
"error.user.changeLanguage.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nyelvi beállításait",
|
||||
|
@@ -67,7 +67,7 @@
|
||||
"error.blocks.max.singular": "Ekki meira en einn bálkur",
|
||||
"error.blocks.min.plural": "Minnst {min}. bálka",
|
||||
"error.blocks.min.singular": "Allavegana einn bálkur takk",
|
||||
"error.blocks.validation": "Það er villa í bálk {index}",
|
||||
"error.blocks.validation": "Það er villa í bálki númer {index}. Klikkaðu á bálkinn og finndu villuna. Það er væntanlega rauðlitur rammi utan um villuna.",
|
||||
|
||||
"error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki",
|
||||
|
||||
@@ -411,7 +411,7 @@
|
||||
"page.changeSlug": "Breyta vefslóð",
|
||||
"page.changeSlug.fromTitle": "Slóð af titli",
|
||||
"page.changeStatus": "Breyta stöðu",
|
||||
"page.changeStatus.position": "Veldu ákjósanlega stöðu",
|
||||
"page.changeStatus.position": "Veldu ákjósanlega röðun",
|
||||
"page.changeStatus.select": "Veldu nýja stöðu",
|
||||
"page.changeTemplate": "Breyta sniðmáti",
|
||||
"page.delete.confirm": "Viltu virkilega farga <strong>{title}</strong>?",
|
||||
|
@@ -157,7 +157,7 @@
|
||||
|
||||
"error.template.default.notFound": "Il template \"default\" non esiste",
|
||||
|
||||
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
|
||||
"error.unexpected": "Si è verificato un errore inaspettato! Abilita la modalità \"debug\" per ulteriori informazioni: https://getkirby.com/docs/reference/system/options/debug",
|
||||
|
||||
"error.user.changeEmail.permission": "Non ti è permesso modificare l'indirizzo email di \"{name}\"",
|
||||
"error.user.changeLanguage.permission": "Non ti è permesso modificare la lingua per l'utente \"{name}\"",
|
||||
|
@@ -505,7 +505,7 @@
|
||||
"toolbar.button.ul": "기호 목록",
|
||||
|
||||
"translation.author": "Kirby 팀",
|
||||
"translation.direction": "왼쪽에서 오른쪽",
|
||||
"translation.direction": "ltr",
|
||||
"translation.name": "한국어",
|
||||
"translation.locale": "ko_KR",
|
||||
|
||||
|
@@ -1,20 +1,20 @@
|
||||
{
|
||||
"account.changeName": "Change your name",
|
||||
"account.delete": "Delete your account",
|
||||
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
|
||||
"account.changeName": "Endre navnet ditt",
|
||||
"account.delete": "Slett kontoen din",
|
||||
"account.delete.confirm": "Er du sikker på at du vil slette kontoen din? Du vil bli logget ut umiddelbart. Kontoen din kan ikke gjenopprettes.",
|
||||
|
||||
"add": "Legg til",
|
||||
"author": "Author",
|
||||
"author": "Forfatter",
|
||||
"avatar": "Profilbilde",
|
||||
"back": "Tilbake",
|
||||
"cancel": "Avbryt",
|
||||
"change": "Endre",
|
||||
"close": "Lukk",
|
||||
"confirm": "Lagre",
|
||||
"collapse": "Collapse",
|
||||
"collapse.all": "Collapse All",
|
||||
"collapse": "Skjul",
|
||||
"collapse.all": "Skjule alle",
|
||||
"copy": "Kopier",
|
||||
"copy.all": "Copy all",
|
||||
"copy.all": "Kopier alle",
|
||||
"create": "Opprett",
|
||||
|
||||
"date": "Dato",
|
||||
@@ -29,89 +29,89 @@
|
||||
"days.tue": "Tir",
|
||||
"days.wed": "Ons",
|
||||
|
||||
"debugging": "Debugging",
|
||||
"debugging": "Feilsøker",
|
||||
|
||||
"delete": "Slett",
|
||||
"delete.all": "Delete all",
|
||||
"delete.all": "Slett alle",
|
||||
|
||||
"dialog.files.empty": "No files to select",
|
||||
"dialog.pages.empty": "No pages to select",
|
||||
"dialog.users.empty": "No users to select",
|
||||
"dialog.files.empty": "Ingen filer å velge",
|
||||
"dialog.pages.empty": "Ingen sider å velge",
|
||||
"dialog.users.empty": "Ingen brukere å velge",
|
||||
|
||||
"dimensions": "Dimensjoner",
|
||||
"disabled": "Disabled",
|
||||
"disabled": "Deaktivert",
|
||||
"discard": "Forkast",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"download": "Last ned",
|
||||
"duplicate": "Dupliser",
|
||||
|
||||
"edit": "Rediger",
|
||||
|
||||
"email": "Epost",
|
||||
"email.placeholder": "epost@eksempel.no",
|
||||
|
||||
"environment": "Environment",
|
||||
"environment": "Miljø",
|
||||
|
||||
"error.access.code": "Invalid code",
|
||||
"error.access.code": "Ugyldig kode",
|
||||
"error.access.login": "Ugyldig innlogging",
|
||||
"error.access.panel": "Du har ikke tilgang til panelet",
|
||||
"error.access.view": "You are not allowed to access this part of the panel",
|
||||
"error.access.view": "Du har ikke tilgang til denne delen av panelet",
|
||||
|
||||
"error.avatar.create.fail": "Profilbildet kunne ikke lastes opp",
|
||||
"error.avatar.delete.fail": "Profil bildet kunne ikke bli slette",
|
||||
"error.avatar.delete.fail": "Profilbildet kunne ikke slettes",
|
||||
"error.avatar.dimensions.invalid": "Vennligst hold profilbildets bredde og høyde under 3000 piksler",
|
||||
"error.avatar.mime.forbidden": "Ugyldig MIME-type",
|
||||
|
||||
"error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke lastes inn",
|
||||
|
||||
"error.blocks.max.plural": "You must not add more than {max} blocks",
|
||||
"error.blocks.max.singular": "You must not add more than one block",
|
||||
"error.blocks.min.plural": "You must add at least {min} blocks",
|
||||
"error.blocks.min.singular": "You must add at least one block",
|
||||
"error.blocks.validation": "There's an error in block {index}",
|
||||
"error.blocks.max.plural": "Du kan ikke legge til flere enn {max} blokker",
|
||||
"error.blocks.max.singular": "Du kan ikke legge til mer enn en blokk",
|
||||
"error.blocks.min.plural": "Du må legge til minst {min} blokker",
|
||||
"error.blocks.min.singular": "Du må legge til minst en blokk",
|
||||
"error.blocks.validation": "Det er en feil i blokken {index}",
|
||||
|
||||
"error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet",
|
||||
|
||||
"error.field.converter.invalid": "Ugyldig omformer \"{converter}\"",
|
||||
|
||||
"error.file.changeName.empty": "The name must not be empty",
|
||||
"error.file.changeName.permission": "Du er ikke tillatt å endre navnet til \"{filename}\"",
|
||||
"error.file.changeName.empty": "Navnet kan ikke være tomt",
|
||||
"error.file.changeName.permission": "Du har ikke rettighet til å endre navnet til \"{filename}\"",
|
||||
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
|
||||
"error.file.extension.forbidden": "Ugyldig filtype",
|
||||
"error.file.extension.invalid": "Invalid extension: {extension}",
|
||||
"error.file.extension.invalid": "Ugyldig utvidelse: {extension}",
|
||||
"error.file.extension.missing": "Du kan ikke laste opp filer uten filtype",
|
||||
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
|
||||
"error.file.maxsize": "The file is too large",
|
||||
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
|
||||
"error.file.maxheight": "Høyden til bildet kan ikke overgå {height} piksler",
|
||||
"error.file.maxsize": "Filen er for stor",
|
||||
"error.file.maxwidth": "Bredden til bildet kan ikke overgå {width} piksler",
|
||||
"error.file.mime.differs": "Den opplastede filen må være av samme MIME-type \"{mime}\"",
|
||||
"error.file.mime.forbidden": "Mediatypen \"{mime}\" er ikke tillatt",
|
||||
"error.file.mime.invalid": "Invalid mime type: {mime}",
|
||||
"error.file.mime.invalid": "Ugyldig mediatype: {mime}",
|
||||
"error.file.mime.missing": "Mediatypen for \"{filename}\" kan ikke gjenkjennes",
|
||||
"error.file.minheight": "The height of the image must be at least {height} pixels",
|
||||
"error.file.minsize": "The file is too small",
|
||||
"error.file.minwidth": "The width of the image must be at least {width} pixels",
|
||||
"error.file.minheight": "Høyden til bildet må være minst {height} piksler",
|
||||
"error.file.minsize": "Filen er for liten",
|
||||
"error.file.minwidth": "Bredden til bildet må være minst {width} piksler",
|
||||
"error.file.name.missing": "Filnavnet kan ikke være tomt",
|
||||
"error.file.notFound": "Filen kunne ikke bli funnet",
|
||||
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
|
||||
"error.file.notFound": "Finner ikke filen",
|
||||
"error.file.orientation": "Bilderetningen må være \"{orientation}\"",
|
||||
"error.file.type.forbidden": "Du har ikke lov til å laste opp filer av typen {type}",
|
||||
"error.file.type.invalid": "Invalid file type: {type}",
|
||||
"error.file.undefined": "Filen kunne ikke bli funnet",
|
||||
"error.file.type.invalid": "Ugyldig filtype: {type}",
|
||||
"error.file.undefined": "Finner ikke filen",
|
||||
|
||||
"error.form.incomplete": "Vennligst fiks alle feil…",
|
||||
"error.form.notSaved": "Skjemaet kunne ikke lagres",
|
||||
|
||||
"error.language.code": "Please enter a valid code for the language",
|
||||
"error.language.duplicate": "The language already exists",
|
||||
"error.language.name": "Please enter a valid name for the language",
|
||||
"error.language.notFound": "The language could not be found",
|
||||
"error.language.code": "Vennligst skriv inn gyldig språkkode",
|
||||
"error.language.duplicate": "Språket eksisterer allerede",
|
||||
"error.language.name": "Vennligst skriv inn et gyldig navn for språket",
|
||||
"error.language.notFound": "Finner ikke språket",
|
||||
|
||||
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
|
||||
"error.layout.validation.settings": "There's an error in layout {index} settings",
|
||||
"error.layout.validation.block": "Det er en feil i blokk {blockIndex} i layout {layoutIndex}",
|
||||
"error.layout.validation.settings": "Det er en feil i layout {index} innstillinger",
|
||||
|
||||
"error.license.format": "Please enter a valid license key",
|
||||
"error.license.format": "Vennligst skriv inn gyldig lisensnøkkel",
|
||||
"error.license.email": "Vennligst skriv inn en gyldig e-postadresse",
|
||||
"error.license.verification": "The license could not be verified",
|
||||
"error.license.verification": "Lisensen kunne ikke verifiseres",
|
||||
|
||||
"error.offline": "The Panel is currently offline",
|
||||
"error.offline": "Panelet er i øyeblikket offline",
|
||||
|
||||
"error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden",
|
||||
"error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres",
|
||||
@@ -125,28 +125,28 @@
|
||||
"error.page.delete": "Siden \"{slug}\" kan ikke slettes",
|
||||
"error.page.delete.confirm": "Vennligst skriv inn sidens tittel for å bekrefte",
|
||||
"error.page.delete.hasChildren": "Siden har undersider og kan derfor ikke slettes",
|
||||
"error.page.delete.permission": "Du har ikke tilgang til å slette \"{slug}\"",
|
||||
"error.page.delete.permission": "Du har ikke til å slette \"{slug}\"",
|
||||
"error.page.draft.duplicate": "Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede",
|
||||
"error.page.duplicate": "En side med URL-tillegget \"{slug}\" eksisterer allerede",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.duplicate.permission": "Du har ikke tillatelse til å duplisere \"{slug}\"",
|
||||
"error.page.notFound": "Siden \"{slug}\" ble ikke funnet",
|
||||
"error.page.num.invalid": "Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
|
||||
"error.page.slug.invalid": "Please enter a valid URL appendix",
|
||||
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters",
|
||||
"error.page.slug.invalid": "Vennligst skriv inn en gyldig URL endelse",
|
||||
"error.page.slug.maxlength": "Slug lengden må være mindre enn \"{length}\" karakterer",
|
||||
"error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres",
|
||||
"error.page.status.invalid": "Vennligst angi en gyldig sidestatus",
|
||||
"error.page.undefined": "Siden kunne ikke bli funnet",
|
||||
"error.page.update.permission": "Du har ikke tilgang til å oppdatere \"{slug}\"",
|
||||
"error.page.update.permission": "Du har ikke tillatelse til å oppdatere \"{slug}\"",
|
||||
|
||||
"error.section.files.max.plural": "Det er ikke mulig å legge til mer enn {max} filer i seksjonen \"{section}\"",
|
||||
"error.section.files.max.singular": "Det er ikke mulig å legge til mer enn én fil i seksjonen \"{section}\"",
|
||||
"error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
|
||||
"error.section.files.min.singular": "The \"{section}\" section requires at least one file",
|
||||
"error.section.files.min.plural": "Seksjonen \"{section}\" krever minst {min} filer",
|
||||
"error.section.files.min.singular": "Seksjonen \"{section}\" krever minst en fil",
|
||||
|
||||
"error.section.pages.max.plural": "Det er ikke mulig å legge til mer enn {max} sider i \"{section}\" seksjonen",
|
||||
"error.section.pages.max.singular": "Det er ikke mulig å legge til mer enn én side i \"{section}\" seksjonen",
|
||||
"error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
|
||||
"error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
|
||||
"error.section.pages.min.plural": "Seksjonen \"{section}\" krever minst {min} sider",
|
||||
"error.section.pages.min.singular": "Seksjonen \"{section}\" krever minst en side",
|
||||
|
||||
"error.section.notLoaded": "Seksjonen \"{name}\" kunne ikke lastes inn",
|
||||
"error.section.type.invalid": "Seksjonstypen \"{type}\" er ikke gyldig",
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
"error.template.default.notFound": "Standardmalen eksisterer ikke",
|
||||
|
||||
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
|
||||
"error.unexpected": "En uventet feil oppstod! Aktiver feilsøkmodus for mer info: https://getkirby.com/docs/reference/system/options/debug",
|
||||
|
||||
"error.user.changeEmail.permission": "Du har ikke tillatelse til å endre e-post for brukeren \"{name}\"",
|
||||
"error.user.changeLanguage.permission": "Du har ikke tillatelse til å endre språk for brukeren \"{name}\"",
|
||||
@@ -165,8 +165,8 @@
|
||||
"error.user.changePassword.permission": "Du har ikke tillatelse til å endre passord for brukeren \"{name}\"",
|
||||
"error.user.changeRole.lastAdmin": "Rollen for den siste administratoren kan ikke endres",
|
||||
"error.user.changeRole.permission": "Du har ikke tillatelse til å endre rollen for brukeren \"{name}\"",
|
||||
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
|
||||
"error.user.create.permission": "Du har ikke tilgang til å opprette denne brukeren",
|
||||
"error.user.changeRole.toAdmin": "Du har ikke tillatelse til å endre noen til adminrolle",
|
||||
"error.user.create.permission": "Du har ikke tillatelse til å opprette denne brukeren",
|
||||
"error.user.delete": "Denne brukeren kunne ikke bli slettet",
|
||||
"error.user.delete.lastAdmin": "Siste administrator kan ikke slettes",
|
||||
"error.user.delete.lastUser": "Den siste brukeren kan ikke slettes",
|
||||
@@ -178,7 +178,7 @@
|
||||
"error.user.password.invalid": "Vennligst skriv inn et gyldig passord. Passordet må minst være 8 tegn langt.",
|
||||
"error.user.password.notSame": "Vennligst bekreft passordet",
|
||||
"error.user.password.undefined": "Brukeren har ikke et passord",
|
||||
"error.user.password.wrong": "Wrong password",
|
||||
"error.user.password.wrong": "Feil passord",
|
||||
"error.user.role.invalid": "Vennligst skriv inn en gyldig rolle",
|
||||
"error.user.undefined": "Brukeren kunne ikke bli funnet",
|
||||
"error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
|
||||
@@ -190,9 +190,9 @@
|
||||
"error.validation.boolean": "Vennligst bekreft eller avslå",
|
||||
"error.validation.contains": "Vennligst skriv inn en verdi som inneholder \"{needle}\"",
|
||||
"error.validation.date": "Vennligst skriv inn en gyldig dato",
|
||||
"error.validation.date.after": "Please enter a date after {date}",
|
||||
"error.validation.date.before": "Please enter a date before {date}",
|
||||
"error.validation.date.between": "Please enter a date between {min} and {max}",
|
||||
"error.validation.date.after": "Vennligst angi en dato etter {date}",
|
||||
"error.validation.date.before": "Vennligst angi en dato før {date}",
|
||||
"error.validation.date.between": "Vennligst angi en dato mellom {min} og {max}",
|
||||
"error.validation.denied": "Vennligst avslå",
|
||||
"error.validation.different": "Verdien kan ikke være \"{other}\"",
|
||||
"error.validation.email": "Vennligst skriv inn en gyldig e-postadresse",
|
||||
@@ -219,84 +219,84 @@
|
||||
"error.validation.size": "Størrelsen på verdien må være \"{size}\"",
|
||||
"error.validation.startswith": "Verdien må starte med \"{start}\"",
|
||||
"error.validation.time": "Vennligst angi et gyldig tidspunkt",
|
||||
"error.validation.time.after": "Please enter a time after {time}",
|
||||
"error.validation.time.before": "Please enter a time before {time}",
|
||||
"error.validation.time.between": "Please enter a time between {min} and {max}",
|
||||
"error.validation.time.after": "Vennligst angi et tidspunkt etter {time}",
|
||||
"error.validation.time.before": "Vennligst angi et tidspunkt før {time}",
|
||||
"error.validation.time.between": "Vennligst angi et tidspunkt mellom {min} og {max}",
|
||||
"error.validation.url": "Vennligst skriv inn en gyldig URL",
|
||||
|
||||
"expand": "Expand",
|
||||
"expand.all": "Expand All",
|
||||
"expand": "Utvid",
|
||||
"expand.all": "Utvid alle",
|
||||
|
||||
"field.required": "The field is required",
|
||||
"field.blocks.changeType": "Change type",
|
||||
"field.required": "Feltet er påkrevd",
|
||||
"field.blocks.changeType": "Endre type",
|
||||
"field.blocks.code.name": "Kode",
|
||||
"field.blocks.code.language": "Språk",
|
||||
"field.blocks.code.placeholder": "Your code …",
|
||||
"field.blocks.delete.confirm": "Do you really want to delete this block?",
|
||||
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
|
||||
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
|
||||
"field.blocks.empty": "No blocks yet",
|
||||
"field.blocks.fieldsets.label": "Please select a block type …",
|
||||
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
|
||||
"field.blocks.gallery.name": "Gallery",
|
||||
"field.blocks.gallery.images.empty": "No images yet",
|
||||
"field.blocks.gallery.images.label": "Images",
|
||||
"field.blocks.heading.level": "Level",
|
||||
"field.blocks.heading.name": "Heading",
|
||||
"field.blocks.heading.text": "Text",
|
||||
"field.blocks.heading.placeholder": "Heading …",
|
||||
"field.blocks.image.alt": "Alternative text",
|
||||
"field.blocks.code.placeholder": "Din kode…",
|
||||
"field.blocks.delete.confirm": "Er du sikker på at du vil slette denne blokken?",
|
||||
"field.blocks.delete.confirm.all": "Er du sikker på at du vil slette alle blokkene?",
|
||||
"field.blocks.delete.confirm.selected": "Er du sikker på at du vil slette de valgte blokkene?",
|
||||
"field.blocks.empty": "Ingen blokker enda",
|
||||
"field.blocks.fieldsets.label": "Vennligst velg en blokktype…",
|
||||
"field.blocks.fieldsets.paste": "Trykk <kbd>{{ shortcut }}</kbd> for å lime/importere blokker fra din utklippstavle",
|
||||
"field.blocks.gallery.name": "Galleri",
|
||||
"field.blocks.gallery.images.empty": "Ingen bilder enda",
|
||||
"field.blocks.gallery.images.label": "Bilder",
|
||||
"field.blocks.heading.level": "Nivå",
|
||||
"field.blocks.heading.name": "Overskrift",
|
||||
"field.blocks.heading.text": "Tekst",
|
||||
"field.blocks.heading.placeholder": "Overskrift…",
|
||||
"field.blocks.image.alt": "Alternativ tekst",
|
||||
"field.blocks.image.caption": "Caption",
|
||||
"field.blocks.image.crop": "Crop",
|
||||
"field.blocks.image.crop": "Beskjær",
|
||||
"field.blocks.image.link": "Adresse",
|
||||
"field.blocks.image.location": "Location",
|
||||
"field.blocks.image.location": "Plassering",
|
||||
"field.blocks.image.name": "Bilde",
|
||||
"field.blocks.image.placeholder": "Select an image",
|
||||
"field.blocks.image.placeholder": "Velg et bilde",
|
||||
"field.blocks.image.ratio": "Ratio",
|
||||
"field.blocks.image.url": "Image URL",
|
||||
"field.blocks.line.name": "Line",
|
||||
"field.blocks.list.name": "List",
|
||||
"field.blocks.image.url": "Bilde URL",
|
||||
"field.blocks.line.name": "Linje",
|
||||
"field.blocks.list.name": "Liste",
|
||||
"field.blocks.markdown.name": "Markdown",
|
||||
"field.blocks.markdown.label": "Text",
|
||||
"field.blocks.markdown.placeholder": "Markdown …",
|
||||
"field.blocks.quote.name": "Quote",
|
||||
"field.blocks.quote.text.label": "Text",
|
||||
"field.blocks.quote.text.placeholder": "Quote …",
|
||||
"field.blocks.quote.citation.label": "Citation",
|
||||
"field.blocks.quote.citation.placeholder": "by …",
|
||||
"field.blocks.text.name": "Text",
|
||||
"field.blocks.text.placeholder": "Text …",
|
||||
"field.blocks.markdown.label": "Tekst",
|
||||
"field.blocks.markdown.placeholder": "Markdown…",
|
||||
"field.blocks.quote.name": "Sitat",
|
||||
"field.blocks.quote.text.label": "Tekst",
|
||||
"field.blocks.quote.text.placeholder": "Sitat…",
|
||||
"field.blocks.quote.citation.label": "Kildehenvisning",
|
||||
"field.blocks.quote.citation.placeholder": "av…",
|
||||
"field.blocks.text.name": "Tekst",
|
||||
"field.blocks.text.placeholder": "Tekst…",
|
||||
"field.blocks.video.caption": "Caption",
|
||||
"field.blocks.video.name": "Video",
|
||||
"field.blocks.video.placeholder": "Enter a video URL",
|
||||
"field.blocks.video.placeholder": "Legg til en video URL",
|
||||
"field.blocks.video.url.label": "Video-URL",
|
||||
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
||||
|
||||
"field.files.empty": "Ingen filer har blitt valgt",
|
||||
|
||||
"field.layout.delete": "Delete layout",
|
||||
"field.layout.delete.confirm": "Do you really want to delete this layout?",
|
||||
"field.layout.empty": "No rows yet",
|
||||
"field.layout.select": "Select a layout",
|
||||
"field.layout.delete": "Slett layout",
|
||||
"field.layout.delete.confirm": "Er du sikker på at du vil slette denne layouten?",
|
||||
"field.layout.empty": "Ingen rader enda",
|
||||
"field.layout.select": "Velg en layout",
|
||||
|
||||
"field.pages.empty": "Ingen side har blitt valgt",
|
||||
"field.structure.delete.confirm": "\u00d8nsker du virkelig \u00e5 slette denne oppf\u00f8ringen?",
|
||||
"field.structure.empty": "Ingen oppf\u00f8ringer enda",
|
||||
"field.users.empty": "Ingen bruker har blitt valgt",
|
||||
|
||||
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
|
||||
"file.blueprint": "Denne filen har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/files/{blueprint}.yml</strong>",
|
||||
"file.delete.confirm": "Vil du virkelig slette denne filen?",
|
||||
"file.sort": "Change position",
|
||||
"file.sort": "Endre plassering",
|
||||
|
||||
"files": "Filer",
|
||||
"files.empty": "Ingen filer ennå",
|
||||
|
||||
"hide": "Hide",
|
||||
"hour": "Time",
|
||||
"import": "Import",
|
||||
"hide": "Skjul",
|
||||
"hour": "Tid",
|
||||
"import": "Importer",
|
||||
"insert": "Sett Inn",
|
||||
"insert.after": "Insert after",
|
||||
"insert.before": "Insert before",
|
||||
"insert.after": "Sett inn etter",
|
||||
"insert.before": "Sett inn før",
|
||||
"install": "Installer",
|
||||
|
||||
"installation": "Installasjon",
|
||||
@@ -323,7 +323,7 @@
|
||||
"language.direction.ltr": "Venstre til høyre",
|
||||
"language.direction.rtl": "Høyre til venstre",
|
||||
"language.locale": "PHP locale streng",
|
||||
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
|
||||
"language.locale.warning": "Du bruker et egendefinert lokalt oppsett. Vennligst endre det i språkfilen i /site/languages",
|
||||
"language.name": "Navn",
|
||||
"language.updated": "Språk har blitt oppdatert",
|
||||
|
||||
@@ -346,29 +346,29 @@
|
||||
|
||||
"loading": "Laster inn",
|
||||
|
||||
"lock.unsaved": "Unsaved changes",
|
||||
"lock.unsaved.empty": "There are no more unsaved changes",
|
||||
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
|
||||
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
|
||||
"lock.unlock": "Unlock",
|
||||
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
|
||||
"lock.unsaved": "Ulagrede endringer",
|
||||
"lock.unsaved.empty": "Det er ingen flere ulagrede endringer",
|
||||
"lock.isLocked": "Ulagrede endringer av <strong>{email}</strong>",
|
||||
"lock.file.isLocked": "Filen redigeres for øyeblikket av {email} og kan ikke endres.",
|
||||
"lock.page.isLocked": "Siden redigeres for øyeblikket av {email} og kan ikke endres.",
|
||||
"lock.unlock": "Lås opp",
|
||||
"lock.isUnlocked": "Dine ulagrede endringer har blitt overskrevet av en annen bruker. Du kan laste ned dine endringer for å sammenslå dem manuelt",
|
||||
|
||||
"login": "Logg Inn",
|
||||
"login.code.label.login": "Login code",
|
||||
"login.code.label.password-reset": "Password reset code",
|
||||
"login.code.label.login": "Login kode",
|
||||
"login.code.label.password-reset": "Passord tilbakestillingskode",
|
||||
"login.code.placeholder.email": "000 000",
|
||||
"login.code.text.email": "If your email address is registered, the requested code was sent via email.",
|
||||
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
|
||||
"login.email.login.subject": "Your login code",
|
||||
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
|
||||
"login.email.password-reset.subject": "Your password reset code",
|
||||
"login.code.text.email": "Dersom din e-post er registrert vil den forespurte koden bli sendt via e-post.",
|
||||
"login.email.login.body": "Hei {user.nameOrEmail},\n\nDu ba nylig om en innloggingskode til panelet til {site}.\nFølgende innloggingskode vil være gyldig i {timeout} minutter:\n\n{code}\n\nDersom du ikke ba om en innloggingskode, vennligst ignorer denne e-posten eller kontakt din administrator hvis du har spørsmål.\nFor sikkerhets skyld, vennligst IKKE videresend denne e-posten.",
|
||||
"login.email.login.subject": "Din innloggingskode",
|
||||
"login.email.password-reset.body": "Hei {user.nameOrEmail},\n\nDu ba nylig om en tilbakestilling av passord til panelet til {site}.\nFølgende tilbakestillingskode vil være gyldig i {timeout} minutter:\n\n{code}\n\nDersom du ikke ba om en tilbakestillingskode, vennligst ignorer denne e-posten eller kontakt din administrator hvis du har spørsmål.\nFor sikkerhets skyld, vennligst IKKE videresend denne e-posten.",
|
||||
"login.email.password-reset.subject": "Din kode for tilbakestilling av passord",
|
||||
"login.remember": "Hold meg innlogget",
|
||||
"login.reset": "Reset password",
|
||||
"login.toggleText.code.email": "Login via email",
|
||||
"login.toggleText.code.email-password": "Login with password",
|
||||
"login.toggleText.password-reset.email": "Forgot your password?",
|
||||
"login.toggleText.password-reset.email-password": "← Back to login",
|
||||
"login.reset": "Tilbakestill passord",
|
||||
"login.toggleText.code.email": "Logg inn via e-post",
|
||||
"login.toggleText.code.email-password": "Logg inn med passord",
|
||||
"login.toggleText.password-reset.email": "Glemt passord?",
|
||||
"login.toggleText.password-reset.email-password": "← Tilbake til innlogging",
|
||||
|
||||
"logout": "Logg ut",
|
||||
|
||||
@@ -394,20 +394,20 @@
|
||||
"more": "Mer",
|
||||
"name": "Navn",
|
||||
"next": "Neste",
|
||||
"no": "no",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"no": "nei",
|
||||
"off": "av",
|
||||
"on": "på",
|
||||
"open": "Åpne",
|
||||
"open.newWindow": "Open in new window",
|
||||
"open.newWindow": "Åpne i nytt vindu",
|
||||
"options": "Alternativer",
|
||||
"options.none": "No options",
|
||||
"options.none": "Ingen alternativer",
|
||||
|
||||
"orientation": "Orientering",
|
||||
"orientation.landscape": "Landskap",
|
||||
"orientation.portrait": "Portrett",
|
||||
"orientation.square": "Kvadrat",
|
||||
|
||||
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
|
||||
"page.blueprint": "Denne siden har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
|
||||
"page.changeSlug": "Endre URL",
|
||||
"page.changeSlug.fromTitle": "Opprett fra tittel",
|
||||
"page.changeStatus": "Endre status",
|
||||
@@ -419,12 +419,12 @@
|
||||
"page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte",
|
||||
"page.draft.create": "Lag utkast",
|
||||
"page.duplicate.appendix": "Kopier",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.sort": "Change position",
|
||||
"page.duplicate.files": "Kopier filer",
|
||||
"page.duplicate.pages": "Kopier sider",
|
||||
"page.sort": "Endre plassering",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Utkast",
|
||||
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
|
||||
"page.status.draft.description": "Denne siden er i kladdmodus og er kun synlig for innloggede brukere eller via en hemmelig lenke.",
|
||||
"page.status.listed": "Offentlig",
|
||||
"page.status.listed.description": "Siden er offentlig og synlig for alle",
|
||||
"page.status.unlisted": "Unotert",
|
||||
@@ -439,39 +439,39 @@
|
||||
"pagination.page": "Side",
|
||||
|
||||
"password": "Passord",
|
||||
"paste": "Paste",
|
||||
"paste.after": "Paste after",
|
||||
"paste": "Lim inn",
|
||||
"paste.after": "Lim inn etter",
|
||||
"pixel": "Piksel",
|
||||
"plugins": "Plugins",
|
||||
"prev": "Forrige",
|
||||
"preview": "Preview",
|
||||
"preview": "Forhåndsvisning",
|
||||
"remove": "Fjern",
|
||||
"rename": "Endre navn",
|
||||
"replace": "Erstatt",
|
||||
"retry": "Pr\u00f8v p\u00e5 nytt",
|
||||
"revert": "Forkast",
|
||||
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
|
||||
"revert.confirm": "Er du sikker på at vil <strong>slette alle ulagrede endringer</strong>?",
|
||||
|
||||
"role": "Rolle",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.description": "Administrator har alle rettigheter",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Alle",
|
||||
"role.empty": "Det er ingen brukere med denne rollen",
|
||||
"role.description.placeholder": "Ingen beskrivelse",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
"role.nobody.description": "Dette er en fallback rolle uten noen rettigheter.",
|
||||
"role.nobody.title": "Ingen",
|
||||
|
||||
"save": "Lagre",
|
||||
"search": "Søk",
|
||||
"search.min": "Enter {min} characters to search",
|
||||
"search.all": "Show all",
|
||||
"search.results.none": "No results",
|
||||
"search.min": "Skriv inn {min} tegn for å søke",
|
||||
"search.all": "Vis alle",
|
||||
"search.results.none": "Ingen resultater",
|
||||
|
||||
"section.required": "The section is required",
|
||||
"section.required": "Denne seksjonen er påkrevd",
|
||||
|
||||
"select": "Velg",
|
||||
"settings": "Innstillinger",
|
||||
"show": "Show",
|
||||
"show": "Vis",
|
||||
"size": "Størrelse",
|
||||
"slug": "URL-appendiks",
|
||||
"sort": "Sortere",
|
||||
@@ -481,27 +481,27 @@
|
||||
|
||||
"server": "Server",
|
||||
|
||||
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
|
||||
"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": "Tykk tekst",
|
||||
"toolbar.button.bold": "Fet tekst",
|
||||
"toolbar.button.email": "Epost",
|
||||
"toolbar.button.headings": "Overskrifter",
|
||||
"toolbar.button.heading.1": "Overskrift 1",
|
||||
"toolbar.button.heading.2": "Overskrift 2",
|
||||
"toolbar.button.heading.3": "Overskrift 3",
|
||||
"toolbar.button.heading.4": "Heading 4",
|
||||
"toolbar.button.heading.5": "Heading 5",
|
||||
"toolbar.button.heading.6": "Heading 6",
|
||||
"toolbar.button.heading.4": "Overskrift 4",
|
||||
"toolbar.button.heading.5": "Overskrift 5",
|
||||
"toolbar.button.heading.6": "Overskrift 6",
|
||||
"toolbar.button.italic": "Kursiv tekst",
|
||||
"toolbar.button.file": "Fil",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Velg en fil",
|
||||
"toolbar.button.file.upload": "Last opp en fil",
|
||||
"toolbar.button.link": "Adresse",
|
||||
"toolbar.button.paragraph": "Paragraph",
|
||||
"toolbar.button.strike": "Strike-through",
|
||||
"toolbar.button.paragraph": "Avsnitt",
|
||||
"toolbar.button.strike": "Gjennomstreking",
|
||||
"toolbar.button.ol": "Ordnet liste",
|
||||
"toolbar.button.underline": "Underline",
|
||||
"toolbar.button.underline": "Understrek",
|
||||
"toolbar.button.ul": "Punktliste",
|
||||
|
||||
"translation.author": "Kirby Team",
|
||||
@@ -510,17 +510,17 @@
|
||||
"translation.locale": "nb_NO",
|
||||
|
||||
"upload": "Last opp",
|
||||
"upload.error.cantMove": "The uploaded file could not be moved",
|
||||
"upload.error.cantWrite": "Failed to write file to disk",
|
||||
"upload.error.default": "The file could not be uploaded",
|
||||
"upload.error.extension": "File upload stopped by extension",
|
||||
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
|
||||
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
|
||||
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
|
||||
"upload.error.noFile": "No file was uploaded",
|
||||
"upload.error.noFiles": "No files were uploaded",
|
||||
"upload.error.partial": "The uploaded file was only partially uploaded",
|
||||
"upload.error.tmpDir": "Missing a temporary folder",
|
||||
"upload.error.cantMove": "Den opplastede filen kunne ikke flyttes",
|
||||
"upload.error.cantWrite": "Kunne ikke skrive fil til disk",
|
||||
"upload.error.default": "Kunne ikke laste opp fil",
|
||||
"upload.error.extension": "Filopplasting stoppet av en utvidelse",
|
||||
"upload.error.formSize": "Den opplastede filen overskrider MAX_FILE_SIZE direktivet som er spesifisert i skjemaet",
|
||||
"upload.error.iniPostSize": "Den opplastede filen overskrider post_max_size direktivet i php.ini",
|
||||
"upload.error.iniSize": "Den opplastede filen overskrider upload_max_filesize direktivet i php.ini",
|
||||
"upload.error.noFile": "Ingen fil ble lastet opp",
|
||||
"upload.error.noFiles": "Ingen filer ble lastet opp",
|
||||
"upload.error.partial": "Den opplastede filen ble bare delvis lastet opp",
|
||||
"upload.error.tmpDir": "Mangler en midlertidig mappe",
|
||||
"upload.errors": "Feil",
|
||||
"upload.progress": "Laster opp…",
|
||||
|
||||
@@ -528,7 +528,7 @@
|
||||
"url.placeholder": "https://example.com",
|
||||
|
||||
"user": "Bruker",
|
||||
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
|
||||
"user.blueprint": "Du kan definere flere seksjoner og skjemafelter for denne brukerrollen i <strong>/site/blueprints/users/{blueprint}.yml</strong>",
|
||||
"user.changeEmail": "Endre e-post",
|
||||
"user.changeLanguage": "Endre språk",
|
||||
"user.changeName": "Angi nytt navn for denne brukeren",
|
||||
@@ -548,12 +548,12 @@
|
||||
"view.account": "Din konto",
|
||||
"view.installation": "Installasjon",
|
||||
"view.languages": "Språk",
|
||||
"view.resetPassword": "Reset password",
|
||||
"view.resetPassword": "Tilbakestill passord",
|
||||
"view.site": "Side",
|
||||
"view.system": "System",
|
||||
"view.users": "Brukere",
|
||||
|
||||
"welcome": "Velkommen",
|
||||
"year": "År",
|
||||
"yes": "yes"
|
||||
"yes": "ja"
|
||||
}
|
||||
|
@@ -1,20 +1,20 @@
|
||||
{
|
||||
"account.changeName": "Change your name",
|
||||
"account.delete": "Delete your account",
|
||||
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
|
||||
"account.changeName": "Mudar seu nome",
|
||||
"account.delete": "Deletar sua conta",
|
||||
"account.delete.confirm": "Deseja realmente deletar sua conta? Você sairá do site imediatamente. Sua conta não poderá ser recuperada. ",
|
||||
|
||||
"add": "Adicionar",
|
||||
"author": "Author",
|
||||
"author": "Autor",
|
||||
"avatar": "Foto do perfil",
|
||||
"back": "Voltar",
|
||||
"cancel": "Cancelar",
|
||||
"change": "Alterar",
|
||||
"close": "Fechar",
|
||||
"confirm": "Salvar",
|
||||
"collapse": "Collapse",
|
||||
"collapse.all": "Collapse All",
|
||||
"collapse": "Colapsar",
|
||||
"collapse.all": "Colapsar todos",
|
||||
"copy": "Copiar",
|
||||
"copy.all": "Copy all",
|
||||
"copy.all": "Copiar todos",
|
||||
"create": "Criar",
|
||||
|
||||
"date": "Data",
|
||||
@@ -29,10 +29,10 @@
|
||||
"days.tue": "Ter",
|
||||
"days.wed": "Qua",
|
||||
|
||||
"debugging": "Debugging",
|
||||
"debugging": "Depuração ",
|
||||
|
||||
"delete": "Excluir",
|
||||
"delete.all": "Delete all",
|
||||
"delete.all": "Deletar todos",
|
||||
|
||||
"dialog.files.empty": "Sem arquivos para selecionar",
|
||||
"dialog.pages.empty": "Sem páginas para selecionar",
|
||||
@@ -49,9 +49,9 @@
|
||||
"email": "Email",
|
||||
"email.placeholder": "mail@exemplo.pt",
|
||||
|
||||
"environment": "Environment",
|
||||
"environment": "Ambiente",
|
||||
|
||||
"error.access.code": "Invalid code",
|
||||
"error.access.code": "Código inválido",
|
||||
"error.access.login": "Login inválido",
|
||||
"error.access.panel": "Não tem permissões para aceder ao painel",
|
||||
"error.access.view": "Não tem permissões para aceder a esta área do Painel",
|
||||
@@ -63,11 +63,11 @@
|
||||
|
||||
"error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado",
|
||||
|
||||
"error.blocks.max.plural": "You must not add more than {max} blocks",
|
||||
"error.blocks.max.singular": "You must not add more than one block",
|
||||
"error.blocks.min.plural": "You must add at least {min} blocks",
|
||||
"error.blocks.min.singular": "You must add at least one block",
|
||||
"error.blocks.validation": "There's an error in block {index}",
|
||||
"error.blocks.max.plural": "Você não deve adicionar mais do que {max} blocos",
|
||||
"error.blocks.max.singular": "Você não deve adicionar mais do que um bloco",
|
||||
"error.blocks.min.plural": "Você deve adicionar pelo menos {min} blocos",
|
||||
"error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
|
||||
"error.blocks.validation": "Há um erro no bloco {index}",
|
||||
|
||||
"error.email.preset.notFound": "Preset de email \"{name}\" não encontrado",
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"error.file.changeName.permission": "Não tem permissões para alterar o nome de \"{filename}\"",
|
||||
"error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
|
||||
"error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
|
||||
"error.file.extension.invalid": "Invalid extension: {extension}",
|
||||
"error.file.extension.invalid": "Extensão inválida: {extension}",
|
||||
"error.file.extension.missing": "Extensão de \"{filename}\" em falta",
|
||||
"error.file.maxheight": "A altura da imagem não deve exceder {height} pixels",
|
||||
"error.file.maxsize": "O arquivo é muito grande",
|
||||
@@ -93,7 +93,7 @@
|
||||
"error.file.notFound": "Arquivo \"{filename}\" não encontrado",
|
||||
"error.file.orientation": "A orientação da imagem deve ser \"{orientation}\"",
|
||||
"error.file.type.forbidden": "Não tem permissões para enviar arquivos {type}",
|
||||
"error.file.type.invalid": "Invalid file type: {type}",
|
||||
"error.file.type.invalid": "Tipo inválido de arquivo: {type}",
|
||||
"error.file.undefined": "Arquivo n\u00e3o encontrado",
|
||||
|
||||
"error.form.incomplete": "Por favor, corrija os erros do formulário…",
|
||||
@@ -102,16 +102,16 @@
|
||||
"error.language.code": "Insira um código de idioma válido",
|
||||
"error.language.duplicate": "O idioma já existe",
|
||||
"error.language.name": "Insira um nome válido para o idioma",
|
||||
"error.language.notFound": "The language could not be found",
|
||||
"error.language.notFound": "O idioma não foi encontrado",
|
||||
|
||||
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
|
||||
"error.layout.validation.settings": "There's an error in layout {index} settings",
|
||||
"error.layout.validation.block": "Há um erro no bloco {blockIndex} no layout {layoutIndex}",
|
||||
"error.layout.validation.settings": "Há um erro na configuração do layout {index}",
|
||||
|
||||
"error.license.format": "Insira uma chave de licença válida",
|
||||
"error.license.email": "Digite um endereço de email válido",
|
||||
"error.license.verification": "Não foi possível verificar a licença",
|
||||
|
||||
"error.offline": "The Panel is currently offline",
|
||||
"error.offline": "O painel está offline no momento",
|
||||
|
||||
"error.page.changeSlug.permission": "Não tem permissões para alterar a URL de \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete": "A página possui erros e não pode ser guardada",
|
||||
@@ -131,7 +131,7 @@
|
||||
"error.page.duplicate.permission": "Não tem permissão para duplicar \"{slug}\"",
|
||||
"error.page.notFound": "Página\"{slug}\" não encontrada",
|
||||
"error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
|
||||
"error.page.slug.invalid": "Please enter a valid URL appendix",
|
||||
"error.page.slug.invalid": "Por favor entre um anexo de URL válido ",
|
||||
"error.page.slug.maxlength": "O slug não pode conter mais do que \"{length}\" caracteres",
|
||||
"error.page.sort.permission": "A página \"{slug}\" não pode ser ordenada",
|
||||
"error.page.status.invalid": "Por favor, defina um estado de página válido",
|
||||
@@ -178,7 +178,7 @@
|
||||
"error.user.password.invalid": "Digite uma palavra-passe válida. A sua palavra-passe deve ter pelo menos 8 caracteres.",
|
||||
"error.user.password.notSame": "As palavras-passe não combinam",
|
||||
"error.user.password.undefined": "O utilizador não possui uma palavra-passe",
|
||||
"error.user.password.wrong": "Wrong password",
|
||||
"error.user.password.wrong": "Senha errada",
|
||||
"error.user.role.invalid": "Digite uma função válida",
|
||||
"error.user.undefined": "Usuário não encontrado",
|
||||
"error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"",
|
||||
@@ -219,84 +219,84 @@
|
||||
"error.validation.size": "O tamanho do valor deve ser \"{size}\"",
|
||||
"error.validation.startswith": "O valor deve começar com \"{start}\"",
|
||||
"error.validation.time": "Digite uma hora válida",
|
||||
"error.validation.time.after": "Please enter a time after {time}",
|
||||
"error.validation.time.before": "Please enter a time before {time}",
|
||||
"error.validation.time.between": "Please enter a time between {min} and {max}",
|
||||
"error.validation.time.after": "Por favor entre um horário depois de {time}",
|
||||
"error.validation.time.before": "Por favor entre um horário antes de {time}",
|
||||
"error.validation.time.between": "Por favor entre um horário entre {min} e {max}",
|
||||
"error.validation.url": "Digite uma URL válida",
|
||||
|
||||
"expand": "Expand",
|
||||
"expand.all": "Expand All",
|
||||
"expand": "Expandir",
|
||||
"expand.all": "Expandir todos",
|
||||
|
||||
"field.required": "Este campo é necessário",
|
||||
"field.blocks.changeType": "Change type",
|
||||
"field.blocks.changeType": "Mudar tipo",
|
||||
"field.blocks.code.name": "Código",
|
||||
"field.blocks.code.language": "Idioma",
|
||||
"field.blocks.code.placeholder": "Your code …",
|
||||
"field.blocks.delete.confirm": "Do you really want to delete this block?",
|
||||
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
|
||||
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
|
||||
"field.blocks.empty": "No blocks yet",
|
||||
"field.blocks.fieldsets.label": "Please select a block type …",
|
||||
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
|
||||
"field.blocks.gallery.name": "Gallery",
|
||||
"field.blocks.gallery.images.empty": "No images yet",
|
||||
"field.blocks.gallery.images.label": "Images",
|
||||
"field.blocks.heading.level": "Level",
|
||||
"field.blocks.heading.name": "Heading",
|
||||
"field.blocks.heading.text": "Text",
|
||||
"field.blocks.heading.placeholder": "Heading …",
|
||||
"field.blocks.image.alt": "Alternative text",
|
||||
"field.blocks.image.caption": "Caption",
|
||||
"field.blocks.image.crop": "Crop",
|
||||
"field.blocks.code.placeholder": "Seu código …",
|
||||
"field.blocks.delete.confirm": "Deseja realmente deletar este bloco?",
|
||||
"field.blocks.delete.confirm.all": "Deseja realmente deletar todos os blocos?",
|
||||
"field.blocks.delete.confirm.selected": "Deseja realmente deletar os blocos selecionados?",
|
||||
"field.blocks.empty": "Nenhum bloco",
|
||||
"field.blocks.fieldsets.label": "Por favor selecione um tipo de bloco …",
|
||||
"field.blocks.fieldsets.paste": "Digite <kbd>{{ shortcut }}</kbd> para colar/importar blocos da sua área de transferência ",
|
||||
"field.blocks.gallery.name": "Galeria",
|
||||
"field.blocks.gallery.images.empty": "Nenhuma imagem",
|
||||
"field.blocks.gallery.images.label": "Imagens",
|
||||
"field.blocks.heading.level": "Nível ",
|
||||
"field.blocks.heading.name": "Título ",
|
||||
"field.blocks.heading.text": "Texto",
|
||||
"field.blocks.heading.placeholder": "Título …",
|
||||
"field.blocks.image.alt": "Texto alternativo",
|
||||
"field.blocks.image.caption": "Legenda",
|
||||
"field.blocks.image.crop": "Cortar",
|
||||
"field.blocks.image.link": "Link",
|
||||
"field.blocks.image.location": "Location",
|
||||
"field.blocks.image.location": "Localização ",
|
||||
"field.blocks.image.name": "Imagem",
|
||||
"field.blocks.image.placeholder": "Select an image",
|
||||
"field.blocks.image.ratio": "Ratio",
|
||||
"field.blocks.image.url": "Image URL",
|
||||
"field.blocks.line.name": "Line",
|
||||
"field.blocks.list.name": "List",
|
||||
"field.blocks.image.placeholder": "Selecionar uma imagem",
|
||||
"field.blocks.image.ratio": "Proporção ",
|
||||
"field.blocks.image.url": "URL da imagem",
|
||||
"field.blocks.line.name": "Linha",
|
||||
"field.blocks.list.name": "Lista",
|
||||
"field.blocks.markdown.name": "Markdown",
|
||||
"field.blocks.markdown.label": "Text",
|
||||
"field.blocks.markdown.label": "Texto",
|
||||
"field.blocks.markdown.placeholder": "Markdown …",
|
||||
"field.blocks.quote.name": "Quote",
|
||||
"field.blocks.quote.text.label": "Text",
|
||||
"field.blocks.quote.text.placeholder": "Quote …",
|
||||
"field.blocks.quote.citation.label": "Citation",
|
||||
"field.blocks.quote.citation.placeholder": "by …",
|
||||
"field.blocks.text.name": "Text",
|
||||
"field.blocks.text.placeholder": "Text …",
|
||||
"field.blocks.video.caption": "Caption",
|
||||
"field.blocks.video.name": "Video",
|
||||
"field.blocks.video.placeholder": "Enter a video URL",
|
||||
"field.blocks.video.url.label": "Video-URL",
|
||||
"field.blocks.quote.name": "Citação ",
|
||||
"field.blocks.quote.text.label": "Texto",
|
||||
"field.blocks.quote.text.placeholder": "Citação …",
|
||||
"field.blocks.quote.citation.label": "Citação ",
|
||||
"field.blocks.quote.citation.placeholder": "de …",
|
||||
"field.blocks.text.name": "Texto",
|
||||
"field.blocks.text.placeholder": "Texto …",
|
||||
"field.blocks.video.caption": "Legenda",
|
||||
"field.blocks.video.name": "Vídeo ",
|
||||
"field.blocks.video.placeholder": "Entre uma URL de vídeo ",
|
||||
"field.blocks.video.url.label": "URL-Vídeo",
|
||||
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
|
||||
|
||||
"field.files.empty": "Nenhum arquivo selecionado",
|
||||
|
||||
"field.layout.delete": "Delete layout",
|
||||
"field.layout.delete.confirm": "Do you really want to delete this layout?",
|
||||
"field.layout.empty": "No rows yet",
|
||||
"field.layout.select": "Select a layout",
|
||||
"field.layout.delete": "Deletar layout",
|
||||
"field.layout.delete.confirm": "Deseja realmente deletar este layout?",
|
||||
"field.layout.empty": "Nenhuma linha",
|
||||
"field.layout.select": "Selecionar um layout",
|
||||
|
||||
"field.pages.empty": "Nenhuma página selecionada",
|
||||
"field.structure.delete.confirm": "Deseja realmente excluir este registro?",
|
||||
"field.structure.empty": "Nenhum registro",
|
||||
"field.users.empty": "Nenhum utilizador selecionado",
|
||||
|
||||
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
|
||||
"file.blueprint": "Este arquivo não tem planta. Você pode definir sua planta em <strong>/site/blueprints/files/{blueprint}.yml</strong>",
|
||||
"file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?",
|
||||
"file.sort": "Change position",
|
||||
"file.sort": "Mudar posição",
|
||||
|
||||
"files": "Arquivos",
|
||||
"files.empty": "Nenhum arquivo",
|
||||
|
||||
"hide": "Hide",
|
||||
"hide": "Ocultar",
|
||||
"hour": "Hora",
|
||||
"import": "Import",
|
||||
"import": "Importar",
|
||||
"insert": "Inserir",
|
||||
"insert.after": "Insert after",
|
||||
"insert.before": "Insert before",
|
||||
"insert.after": "Inserir após",
|
||||
"insert.before": "Inserir antes",
|
||||
"install": "Instalar",
|
||||
|
||||
"installation": "Instalação",
|
||||
@@ -355,20 +355,20 @@
|
||||
"lock.isUnlocked": "As suas alterações foram sobrepostas por outro utilizador. Pode descarregar as suas alterações e combiná-las manualmente.",
|
||||
|
||||
"login": "Entrar",
|
||||
"login.code.label.login": "Login code",
|
||||
"login.code.label.password-reset": "Password reset code",
|
||||
"login.code.placeholder.email": "000 000",
|
||||
"login.code.text.email": "If your email address is registered, the requested code was sent via email.",
|
||||
"login.code.label.login": "Código de acesso",
|
||||
"login.code.label.password-reset": "Código de redefinição de senha",
|
||||
"login.code.placeholder.email": "000 0000",
|
||||
"login.code.text.email": "Se seu endereço de email está registrado, o código requisitado será mandado por email.",
|
||||
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
|
||||
"login.email.login.subject": "Your login code",
|
||||
"login.email.login.subject": "Seu código de acesso",
|
||||
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
|
||||
"login.email.password-reset.subject": "Your password reset code",
|
||||
"login.email.password-reset.subject": "Seu código de redefinição de senha",
|
||||
"login.remember": "Manter-me conectado",
|
||||
"login.reset": "Reset password",
|
||||
"login.toggleText.code.email": "Login via email",
|
||||
"login.toggleText.code.email-password": "Login with password",
|
||||
"login.toggleText.password-reset.email": "Forgot your password?",
|
||||
"login.toggleText.password-reset.email-password": "← Back to login",
|
||||
"login.reset": "Redefinir senha",
|
||||
"login.toggleText.code.email": "Entrar com email",
|
||||
"login.toggleText.code.email-password": "Entrar com senha",
|
||||
"login.toggleText.password-reset.email": "Esqueceu sua senha?",
|
||||
"login.toggleText.password-reset.email-password": "← Voltar à entrada",
|
||||
|
||||
"logout": "Sair",
|
||||
|
||||
@@ -394,11 +394,11 @@
|
||||
"more": "Mais",
|
||||
"name": "Nome",
|
||||
"next": "Próximo",
|
||||
"no": "no",
|
||||
"no": "não",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Abrir",
|
||||
"open.newWindow": "Open in new window",
|
||||
"open.newWindow": "Abrir em nova janela",
|
||||
"options": "Opções",
|
||||
"options.none": "Sem opções",
|
||||
|
||||
@@ -407,7 +407,7 @@
|
||||
"orientation.portrait": "Retrato",
|
||||
"orientation.square": "Quadrado",
|
||||
|
||||
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
|
||||
"page.blueprint": "Esta página não tem planta. Você pode definir sua planta em <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
|
||||
"page.changeSlug": "Alterar URL",
|
||||
"page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo",
|
||||
"page.changeStatus": "Alterar estado",
|
||||
@@ -421,7 +421,7 @@
|
||||
"page.duplicate.appendix": "Copiar",
|
||||
"page.duplicate.files": "Copiar arquivos",
|
||||
"page.duplicate.pages": "Copiar páginas",
|
||||
"page.sort": "Change position",
|
||||
"page.sort": "Mudar posição",
|
||||
"page.status": "Estado",
|
||||
"page.status.draft": "Rascunho",
|
||||
"page.status.draft.description": "A página está em modo de rascunho e é visível somente para editores",
|
||||
@@ -439,12 +439,12 @@
|
||||
"pagination.page": "Página",
|
||||
|
||||
"password": "Palavra-passe",
|
||||
"paste": "Paste",
|
||||
"paste.after": "Paste after",
|
||||
"paste": "Colar",
|
||||
"paste.after": "Colar após",
|
||||
"pixel": "Pixel",
|
||||
"plugins": "Plugins",
|
||||
"prev": "Anterior",
|
||||
"preview": "Preview",
|
||||
"preview": "Visualizar",
|
||||
"remove": "Remover",
|
||||
"rename": "Renomear",
|
||||
"replace": "Substituir",
|
||||
@@ -471,7 +471,7 @@
|
||||
|
||||
"select": "Selecionar",
|
||||
"settings": "Configurações",
|
||||
"show": "Show",
|
||||
"show": "Mostrar",
|
||||
"size": "Tamanho",
|
||||
"slug": "URL",
|
||||
"sort": "Ordenar",
|
||||
@@ -479,9 +479,9 @@
|
||||
"template": "Tema",
|
||||
"today": "Hoje",
|
||||
|
||||
"server": "Server",
|
||||
"server": "Servidor",
|
||||
|
||||
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
|
||||
"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",
|
||||
@@ -490,18 +490,18 @@
|
||||
"toolbar.button.heading.1": "Título 1",
|
||||
"toolbar.button.heading.2": "Título 2",
|
||||
"toolbar.button.heading.3": "Título 3",
|
||||
"toolbar.button.heading.4": "Heading 4",
|
||||
"toolbar.button.heading.5": "Heading 5",
|
||||
"toolbar.button.heading.6": "Heading 6",
|
||||
"toolbar.button.heading.4": "Título 4",
|
||||
"toolbar.button.heading.5": "Título 5",
|
||||
"toolbar.button.heading.6": "Título 6",
|
||||
"toolbar.button.italic": "Itálico",
|
||||
"toolbar.button.file": "Ficheiro",
|
||||
"toolbar.button.file.select": "Selecione o arquivo",
|
||||
"toolbar.button.file.upload": "Carregue o arquivo",
|
||||
"toolbar.button.link": "Link",
|
||||
"toolbar.button.paragraph": "Paragraph",
|
||||
"toolbar.button.strike": "Strike-through",
|
||||
"toolbar.button.paragraph": "Parágrafo",
|
||||
"toolbar.button.strike": "Riscado",
|
||||
"toolbar.button.ol": "Lista ordenada",
|
||||
"toolbar.button.underline": "Underline",
|
||||
"toolbar.button.underline": "Sublinhado",
|
||||
"toolbar.button.ul": "Lista não-ordenada",
|
||||
|
||||
"translation.author": "Kirby Team",
|
||||
@@ -528,7 +528,7 @@
|
||||
"url.placeholder": "https://exemplo.pt",
|
||||
|
||||
"user": "Utilizador",
|
||||
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
|
||||
"user.blueprint": "Você pode definir seções e campos de formulário adicionais para este papel de usuário em <strong>/site/blueprints/users/{blueprint}.yml</strong>",
|
||||
"user.changeEmail": "Alterar email",
|
||||
"user.changeLanguage": "Alterar idioma",
|
||||
"user.changeName": "Renomear este utilizador",
|
||||
@@ -548,12 +548,12 @@
|
||||
"view.account": "A sua conta",
|
||||
"view.installation": "Instala\u00e7\u00e3o",
|
||||
"view.languages": "Idiomas",
|
||||
"view.resetPassword": "Reset password",
|
||||
"view.resetPassword": "Redefinir senha",
|
||||
"view.site": "Site",
|
||||
"view.system": "System",
|
||||
"view.system": "Sistema",
|
||||
"view.users": "Utilizadores",
|
||||
|
||||
"welcome": "Bem-vindo",
|
||||
"year": "Ano",
|
||||
"yes": "yes"
|
||||
"yes": "sim"
|
||||
}
|
||||
|
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
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
6
kirby/panel/dist/js/vendor.js
vendored
6
kirby/panel/dist/js/vendor.js
vendored
File diff suppressed because one or more lines are too long
@@ -64,7 +64,10 @@ export default defineConfig(({ command }) => {
|
||||
}
|
||||
},
|
||||
optimizeDeps: {
|
||||
entries: "src/**/*.{js,vue}"
|
||||
entries: "src/**/*.{js,vue}",
|
||||
exclude: [
|
||||
"vitest"
|
||||
]
|
||||
},
|
||||
css: {
|
||||
postcss: {
|
||||
|
@@ -22,7 +22,7 @@ use Throwable;
|
||||
* @package Kirby Api
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Api
|
||||
@@ -181,7 +181,7 @@ class Api
|
||||
|
||||
// get the locale from the translation
|
||||
$translation = $user->kirby()->translation($language);
|
||||
$locale = ($translation !== null)? $translation->locale() : $language;
|
||||
$locale = ($translation !== null) ? $translation->locale() : $language;
|
||||
|
||||
// provide some variants as fallbacks to be
|
||||
// compatible with as many systems as possible
|
||||
|
@@ -14,7 +14,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Api
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Collection
|
||||
|
@@ -16,7 +16,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Api
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Model
|
||||
|
@@ -10,7 +10,7 @@ use APCUIterator;
|
||||
* @package Kirby Cache
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
class ApcuCache extends Cache
|
||||
|
@@ -11,7 +11,7 @@ namespace Kirby\Cache;
|
||||
* @package Kirby Cache
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
abstract class Cache
|
||||
|
@@ -13,7 +13,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cache
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
class FileCache extends Cache
|
||||
|
@@ -10,7 +10,7 @@ use Memcached as MemcachedExt;
|
||||
* @package Kirby Cache
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
class MemCached extends Cache
|
||||
|
@@ -8,7 +8,7 @@ namespace Kirby\Cache;
|
||||
* @package Kirby Cache
|
||||
* @author Lukas Bestle <lukas@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
class MemoryCache extends Cache
|
||||
|
@@ -8,7 +8,7 @@ namespace Kirby\Cache;
|
||||
* @package Kirby Cache
|
||||
* @author Lukas Bestle <lukas@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
class NullCache extends Cache
|
||||
|
@@ -12,7 +12,7 @@ use Throwable;
|
||||
* @package Kirby Cache
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://opensource.org/licenses/MIT
|
||||
*/
|
||||
class Value
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Form\Form;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Api extends BaseApi
|
||||
|
@@ -33,13 +33,11 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class App
|
||||
{
|
||||
const CLASS_ALIAS = 'kirby';
|
||||
|
||||
use AppCaches;
|
||||
use AppErrors;
|
||||
use AppPlugins;
|
||||
@@ -47,6 +45,8 @@ class App
|
||||
use AppUsers;
|
||||
use Properties;
|
||||
|
||||
public const CLASS_ALIAS = 'kirby';
|
||||
|
||||
protected static $instance;
|
||||
protected static $version;
|
||||
|
||||
@@ -56,6 +56,7 @@ class App
|
||||
protected $collections;
|
||||
protected $core;
|
||||
protected $defaultLanguage;
|
||||
protected $environment;
|
||||
protected $language;
|
||||
protected $languages;
|
||||
protected $locks;
|
||||
@@ -91,12 +92,17 @@ class App
|
||||
// register all roots to be able to load stuff afterwards
|
||||
$this->bakeRoots($props['roots'] ?? []);
|
||||
|
||||
// stuff from config and additional options
|
||||
$this->optionsFromConfig();
|
||||
$this->optionsFromProps($props['options'] ?? []);
|
||||
|
||||
// register the Whoops error handler
|
||||
$this->handleErrors();
|
||||
try {
|
||||
// stuff from config and additional options
|
||||
$this->optionsFromConfig();
|
||||
$this->optionsFromProps($props['options'] ?? []);
|
||||
$this->optionsFromEnvironment();
|
||||
} finally {
|
||||
// register the Whoops error handler inside of a
|
||||
// try-finally block to ensure it's still registered
|
||||
// even if there is a problem loading the configurations
|
||||
$this->handleErrors();
|
||||
}
|
||||
|
||||
// set the path to make it available for the url bakery
|
||||
$this->setPath($props['path'] ?? null);
|
||||
@@ -282,11 +288,6 @@ class App
|
||||
*/
|
||||
protected function bakeUrls(array $urls = null)
|
||||
{
|
||||
// inject the index URL from the config
|
||||
if (isset($this->options['url']) === true) {
|
||||
$urls['index'] = $this->options['url'];
|
||||
}
|
||||
|
||||
$urls = array_merge($this->core->urls(), (array)$urls);
|
||||
$this->urls = Ingredients::bake($urls);
|
||||
return $this;
|
||||
@@ -589,6 +590,17 @@ class App
|
||||
return ($this->component('email'))($this, $props, $debug);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the environment object with access
|
||||
* to the detected host, base url and dedicated options
|
||||
*
|
||||
* @return \Kirby\Cms\Environment
|
||||
*/
|
||||
public function environment()
|
||||
{
|
||||
return $this->environment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds any file in the content directory
|
||||
*
|
||||
@@ -924,7 +936,10 @@ class App
|
||||
(array)$options
|
||||
);
|
||||
|
||||
return ($this->component('markdown'))($this, $text, $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;
|
||||
return ($this->component('markdown'))($this, $text, $options, $inline);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -982,18 +997,30 @@ class App
|
||||
*/
|
||||
protected function optionsFromConfig(): array
|
||||
{
|
||||
$server = $this->server();
|
||||
$root = $this->root('config');
|
||||
|
||||
// create an empty config container
|
||||
Config::$data = [];
|
||||
|
||||
$main = F::load($root . '/config.php', []);
|
||||
$host = F::load($root . '/config.' . basename($server->host()) . '.php', []);
|
||||
$addr = F::load($root . '/config.' . basename($server->address()) . '.php', []);
|
||||
// load the main config options
|
||||
$root = $this->root('config');
|
||||
$options = F::load($root . '/config.php', []);
|
||||
|
||||
$config = Config::$data;
|
||||
// merge into one clean options array
|
||||
return $this->options = array_replace_recursive(Config::$data, $options);
|
||||
}
|
||||
|
||||
return $this->options = array_replace_recursive($config, $main, $host, $addr);
|
||||
/**
|
||||
* Load all options for the current
|
||||
* server environment
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function optionsFromEnvironment(): array
|
||||
{
|
||||
// create the environment based on the URL setup
|
||||
$this->environment = new Environment($this->root('config'), $this->options['url'] ?? null);
|
||||
|
||||
// merge into one clean options array
|
||||
return $this->options = array_replace_recursive($this->options, $this->environment->options());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1004,7 +1031,10 @@ class App
|
||||
*/
|
||||
protected function optionsFromProps(array $options = []): array
|
||||
{
|
||||
return $this->options = array_replace_recursive($this->options, $options);
|
||||
return $this->options = array_replace_recursive(
|
||||
$this->options,
|
||||
$options
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1411,7 +1441,7 @@ class App
|
||||
*/
|
||||
public function server()
|
||||
{
|
||||
return $this->server = $this->server ?? new Server();
|
||||
return $this->server ??= new Server();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -11,7 +11,7 @@ use Kirby\Exception\InvalidArgumentException;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait AppCaches
|
||||
|
@@ -16,7 +16,7 @@ use Whoops\Run as Whoops;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait AppErrors
|
||||
|
@@ -21,7 +21,7 @@ use Kirby\Toolkit\V;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait AppPlugins
|
||||
@@ -181,7 +181,7 @@ trait AppPlugins
|
||||
{
|
||||
return $this->extensions['blockModels'] = Block::$models = array_merge(Block::$models, $models);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers additional blocks methods
|
||||
*
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait AppTranslations
|
||||
|
@@ -11,7 +11,7 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait AppUsers
|
||||
|
@@ -20,7 +20,7 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Auth
|
||||
|
@@ -11,7 +11,7 @@ use Kirby\Cms\User;
|
||||
* @package Kirby Cms
|
||||
* @author Lukas Bestle <lukas@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
abstract class Challenge
|
||||
|
@@ -13,7 +13,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Lukas Bestle <lukas@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class EmailChallenge extends Challenge
|
||||
|
@@ -14,7 +14,7 @@ use Kirby\Toolkit\Properties;
|
||||
* @package Kirby Cms
|
||||
* @author Lukas Bestle <lukas@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Status
|
||||
|
@@ -15,15 +15,15 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Block extends Item
|
||||
{
|
||||
const ITEMS_CLASS = '\Kirby\Cms\Blocks';
|
||||
|
||||
use HasMethods;
|
||||
|
||||
public const ITEMS_CLASS = '\Kirby\Cms\Blocks';
|
||||
|
||||
/**
|
||||
* @var \Kirby\Cms\Content
|
||||
*/
|
||||
|
@@ -10,7 +10,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class BlockConverter
|
||||
|
@@ -18,12 +18,12 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Blocks extends Items
|
||||
{
|
||||
const ITEM_CLASS = '\Kirby\Cms\Block';
|
||||
public const ITEM_CLASS = '\Kirby\Cms\Block';
|
||||
|
||||
/**
|
||||
* Return HTML when the collection is
|
||||
|
@@ -20,7 +20,7 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Blueprint
|
||||
|
@@ -19,7 +19,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Collection extends BaseCollection
|
||||
|
@@ -17,7 +17,7 @@ use Kirby\Toolkit\Controller;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Collections
|
||||
|
@@ -11,7 +11,7 @@ use Kirby\Form\Form;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Content
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Exception\PermissionException;
|
||||
* @package Kirby Cms
|
||||
* @author Nico Hoffmann <nico@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class ContentLock
|
||||
|
@@ -13,7 +13,7 @@ use Kirby\Filesystem\F;
|
||||
* @author Nico Hoffmann <nico@getkirby.com>,
|
||||
* Lukas Bestle <lukas@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class ContentLocks
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Toolkit\Properties;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class ContentTranslation
|
||||
|
@@ -16,7 +16,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Core
|
||||
@@ -452,7 +452,7 @@ class Core
|
||||
public function urls(): array
|
||||
{
|
||||
return $this->cache['urls'] ??= [
|
||||
'index' => fn () => Url::index(),
|
||||
'index' => fn () => $this->kirby->environment()->url(),
|
||||
'base' => fn (array $urls) => rtrim($urls['index'], '/'),
|
||||
'current' => function (array $urls) {
|
||||
$path = trim($this->kirby->path(), '/');
|
||||
|
@@ -14,7 +14,7 @@ use Kirby\Exception\NotFoundException;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Email
|
||||
|
222
kirby/src/Cms/Environment.php
Executable file
222
kirby/src/Cms/Environment.php
Executable file
@@ -0,0 +1,222 @@
|
||||
<?php
|
||||
|
||||
namespace Kirby\Cms;
|
||||
|
||||
use Kirby\Exception\InvalidArgumentException;
|
||||
use Kirby\Filesystem\F;
|
||||
use Kirby\Http\Server;
|
||||
use Kirby\Http\Uri;
|
||||
|
||||
/**
|
||||
* The environment object takes care of
|
||||
* secure host and base URL detection, as
|
||||
* well as loading the dedicated
|
||||
* environment options.
|
||||
*
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Environment
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $root;
|
||||
|
||||
/**
|
||||
* @var \Kirby\Http\Uri
|
||||
*/
|
||||
protected $uri;
|
||||
|
||||
/**
|
||||
* @param string $root
|
||||
* @param bool|string|array|null $allowed
|
||||
*/
|
||||
public function __construct(string $root, $allowed = null)
|
||||
{
|
||||
$this->root = $root;
|
||||
|
||||
if (is_string($allowed) === true) {
|
||||
$this->setupFromString($allowed);
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_array($allowed) === true) {
|
||||
$this->setupFromArray($allowed);
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_int($allowed) === true) {
|
||||
$this->setupFromFlag($allowed);
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_null($allowed) === true) {
|
||||
$this->setupFromFlag(Server::HOST_FROM_SERVER | Server::HOST_ALLOW_EMPTY);
|
||||
return;
|
||||
}
|
||||
|
||||
throw new InvalidArgumentException('Invalid allow list setup for base URLs');
|
||||
}
|
||||
|
||||
/**
|
||||
* Throw an exception if the host in the URI
|
||||
* object is empty
|
||||
*
|
||||
* @throws \Kirby\Exception\InvalidArgumentException
|
||||
* @return void
|
||||
*/
|
||||
protected function blockEmptyHost(): void
|
||||
{
|
||||
if (empty($this->uri->host()) === true) {
|
||||
throw new InvalidArgumentException('Invalid host setup. The detected host is not allowed.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the detected host name
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function host(): ?string
|
||||
{
|
||||
return $this->uri->host();
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads and returns the environment options
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function options(): array
|
||||
{
|
||||
$configHost = [];
|
||||
$configAddr = [];
|
||||
|
||||
$host = $this->host();
|
||||
$addr = Server::address();
|
||||
|
||||
// load the config for the host
|
||||
if (empty($host) === false) {
|
||||
$configHost = F::load($this->root . '/config.' . $host . '.php', []);
|
||||
}
|
||||
|
||||
// load the config for the server IP
|
||||
if (empty($addr) === false) {
|
||||
$configAddr = F::load($this->root . '/config.' . $addr . '.php', []);
|
||||
}
|
||||
|
||||
return array_replace_recursive($configHost, $configAddr);
|
||||
}
|
||||
|
||||
/**
|
||||
* The current URL should be auto detected from a host allowlist
|
||||
*
|
||||
* @param array $allowed
|
||||
* @return \Kirby\Http\Uri
|
||||
*/
|
||||
public function setupFromArray(array $allowed)
|
||||
{
|
||||
$allowedStrings = [];
|
||||
$allowedUris = [];
|
||||
$hosts = [];
|
||||
|
||||
foreach ($allowed as $url) {
|
||||
$allowedUris[] = $uri = new Uri($url, ['slash' => false]);
|
||||
$allowedStrings[] = $uri->toString();
|
||||
$hosts[] = $uri->host();
|
||||
}
|
||||
|
||||
// register all allowed hosts
|
||||
Server::hosts($hosts);
|
||||
|
||||
// get the index URL, including the subfolder if it exists
|
||||
$this->uri = Uri::index();
|
||||
|
||||
// empty URLs don't make sense in an allow list
|
||||
$this->blockEmptyHost();
|
||||
|
||||
// validate against the list of allowed base URLs
|
||||
if (in_array($this->uri->toString(), $allowedStrings) === false) {
|
||||
throw new InvalidArgumentException('The subfolder is not in the allowed base URL list');
|
||||
}
|
||||
|
||||
return $this->uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* The URL option receives a set of Server constant flags
|
||||
*
|
||||
* Server::HOST_FROM_SERVER
|
||||
* Server::HOST_FROM_SERVER | Server::HOST_ALLOW_EMPTY
|
||||
* Server::HOST_FROM_HOST
|
||||
* Server::HOST_FROM_HOST | Server::HOST_ALLOW_EMPTY
|
||||
*
|
||||
* @param int $allowed
|
||||
* @return \Kirby\Http\Uri
|
||||
*/
|
||||
public function setupFromFlag(int $allowed)
|
||||
{
|
||||
// allow host detection from host headers
|
||||
if ($allowed & Server::HOST_FROM_HEADER) {
|
||||
Server::hosts(Server::HOST_FROM_HEADER);
|
||||
|
||||
// detect host only from server name
|
||||
} else {
|
||||
Server::hosts(Server::HOST_FROM_SERVER);
|
||||
}
|
||||
|
||||
// get the base URL
|
||||
$this->uri = Uri::index();
|
||||
|
||||
// accept empty hosts
|
||||
if ($allowed & Server::HOST_ALLOW_EMPTY) {
|
||||
return $this->uri;
|
||||
}
|
||||
|
||||
// block empty hosts
|
||||
$this->blockEmptyHost();
|
||||
|
||||
return $this->uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* The current URL is predefined with a single string
|
||||
* and not detected automatically.
|
||||
*
|
||||
* If the url option is relative (i.e. '/' or '/some/subfolder')
|
||||
* The host will be empty and that's totally fine.
|
||||
* No need to block an empty host here
|
||||
*
|
||||
* @param string $allowed
|
||||
* @return \Kirby\Http\Uri
|
||||
*/
|
||||
public function setupFromString(string $allowed)
|
||||
{
|
||||
// create the URI object directly from the given option
|
||||
// without any form of detection from the server
|
||||
$this->uri = new Uri($allowed);
|
||||
|
||||
// only create an allow list from absolute URLs
|
||||
// otherwise the default secure host detection
|
||||
// behavior will be used
|
||||
if (empty($host = $this->uri->host()) === false) {
|
||||
Server::hosts([$host]);
|
||||
}
|
||||
|
||||
return $this->uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the base URL for the environment
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function url(): string
|
||||
{
|
||||
return $this->uri;
|
||||
}
|
||||
}
|
@@ -16,7 +16,7 @@ use Kirby\Toolkit\Controller;
|
||||
* @author Lukas Bestle <lukas@getkirby.com>,
|
||||
* Ahmet Bora
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Event
|
||||
|
@@ -21,7 +21,7 @@ use Kirby\Exception\InvalidArgumentException;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Field
|
||||
|
@@ -14,12 +14,12 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Fieldset extends Item
|
||||
{
|
||||
const ITEMS_CLASS = '\Kirby\Cms\Fieldsets';
|
||||
public const ITEMS_CLASS = '\Kirby\Cms\Fieldsets';
|
||||
|
||||
protected $disabled;
|
||||
protected $editable;
|
||||
|
@@ -14,12 +14,12 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Fieldsets extends Items
|
||||
{
|
||||
const ITEM_CLASS = '\Kirby\Cms\Fieldset';
|
||||
public const ITEM_CLASS = '\Kirby\Cms\Fieldset';
|
||||
|
||||
protected static function createFieldsets($params)
|
||||
{
|
||||
|
@@ -25,19 +25,19 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class File extends ModelWithContent
|
||||
{
|
||||
const CLASS_ALIAS = 'file';
|
||||
|
||||
use FileActions;
|
||||
use FileModifications;
|
||||
use HasMethods;
|
||||
use HasSiblings;
|
||||
use IsFile;
|
||||
|
||||
public const CLASS_ALIAS = 'file';
|
||||
|
||||
/**
|
||||
* Cache for the initialized blueprint object
|
||||
*
|
||||
|
@@ -14,7 +14,7 @@ use Kirby\Form\Form;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait FileActions
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class FileBlueprint extends Blueprint
|
||||
|
@@ -10,7 +10,7 @@ use Kirby\Exception\InvalidArgumentException;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait FileModifications
|
||||
|
@@ -8,7 +8,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class FilePermissions extends ModelPermissions
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Exception\InvalidArgumentException;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class FilePicker extends Picker
|
||||
|
@@ -15,7 +15,7 @@ use Kirby\Toolkit\V;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class FileRules
|
||||
|
@@ -10,7 +10,7 @@ use Kirby\Filesystem\IsFile;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class FileVersion
|
||||
|
@@ -16,7 +16,7 @@ use Kirby\Filesystem\F;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Files extends Collection
|
||||
|
@@ -14,7 +14,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Find
|
||||
|
@@ -11,7 +11,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait HasChildren
|
||||
|
@@ -8,7 +8,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait HasFiles
|
||||
|
@@ -10,7 +10,7 @@ use Kirby\Exception\BadMethodCallException;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait HasMethods
|
||||
|
@@ -9,7 +9,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait HasSiblings
|
||||
|
@@ -10,7 +10,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Html extends \Kirby\Toolkit\Html
|
||||
|
@@ -11,7 +11,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Ingredients
|
||||
|
@@ -15,15 +15,15 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Item
|
||||
{
|
||||
const ITEMS_CLASS = '\Kirby\Cms\Items';
|
||||
|
||||
use HasSiblings;
|
||||
|
||||
public const ITEMS_CLASS = '\Kirby\Cms\Items';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
@@ -12,12 +12,12 @@ use Exception;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Items extends Collection
|
||||
{
|
||||
const ITEM_CLASS = '\Kirby\Cms\Item';
|
||||
public const ITEM_CLASS = '\Kirby\Cms\Item';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
|
@@ -23,7 +23,7 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Language extends Model
|
||||
|
@@ -15,7 +15,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class LanguageRouter
|
||||
|
@@ -12,7 +12,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class LanguageRules
|
||||
|
@@ -11,7 +11,7 @@ use Kirby\Filesystem\F;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Languages extends Collection
|
||||
|
@@ -10,15 +10,15 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Layout extends Item
|
||||
{
|
||||
const ITEMS_CLASS = '\Kirby\Cms\Layouts';
|
||||
|
||||
use HasMethods;
|
||||
|
||||
public const ITEMS_CLASS = '\Kirby\Cms\Layouts';
|
||||
|
||||
/**
|
||||
* @var \Kirby\Cms\Content
|
||||
*/
|
||||
|
@@ -12,15 +12,15 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class LayoutColumn extends Item
|
||||
{
|
||||
const ITEMS_CLASS = '\Kirby\Cms\LayoutColumns';
|
||||
|
||||
use HasMethods;
|
||||
|
||||
public const ITEMS_CLASS = '\Kirby\Cms\LayoutColumns';
|
||||
|
||||
/**
|
||||
* @var \Kirby\Cms\Blocks
|
||||
*/
|
||||
|
@@ -9,10 +9,10 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class LayoutColumns extends Items
|
||||
{
|
||||
const ITEM_CLASS = '\Kirby\Cms\LayoutColumn';
|
||||
public const ITEM_CLASS = '\Kirby\Cms\LayoutColumn';
|
||||
}
|
||||
|
@@ -12,12 +12,12 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Layouts extends Items
|
||||
{
|
||||
const ITEM_CLASS = '\Kirby\Cms\Layout';
|
||||
public const ITEM_CLASS = '\Kirby\Cms\Layout';
|
||||
|
||||
public static function factory(array $items = null, array $params = [])
|
||||
{
|
||||
|
@@ -23,7 +23,7 @@ use Kirby\Filesystem\F;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Loader
|
||||
|
@@ -15,7 +15,7 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Media
|
||||
|
@@ -10,7 +10,7 @@ use Kirby\Toolkit\Properties;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
abstract class Model
|
||||
@@ -23,7 +23,7 @@ abstract class Model
|
||||
* The CLASS_ALIAS is a short human-readable
|
||||
* version of the class name. I.e. page.
|
||||
*/
|
||||
const CLASS_ALIAS = null;
|
||||
public const CLASS_ALIAS = null;
|
||||
|
||||
/**
|
||||
* The parent Kirby instance
|
||||
|
@@ -10,7 +10,7 @@ use Kirby\Toolkit\A;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
abstract class ModelPermissions
|
||||
|
@@ -15,7 +15,7 @@ use Throwable;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
abstract class ModelWithContent extends Model
|
||||
|
@@ -13,7 +13,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Nest
|
||||
|
@@ -11,7 +11,7 @@ use Kirby\Toolkit\Collection as BaseCollection;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class NestCollection extends BaseCollection
|
||||
|
@@ -10,7 +10,7 @@ use Kirby\Toolkit\Obj;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class NestObject extends Obj
|
||||
|
@@ -20,13 +20,11 @@ use Kirby\Toolkit\A;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class Page extends ModelWithContent
|
||||
{
|
||||
const CLASS_ALIAS = 'page';
|
||||
|
||||
use PageActions;
|
||||
use PageSiblings;
|
||||
use HasChildren;
|
||||
@@ -34,6 +32,8 @@ class Page extends ModelWithContent
|
||||
use HasMethods;
|
||||
use HasSiblings;
|
||||
|
||||
public const CLASS_ALIAS = 'page';
|
||||
|
||||
/**
|
||||
* All registered page methods
|
||||
*
|
||||
@@ -1338,7 +1338,7 @@ class Page extends ModelWithContent
|
||||
'mediaUrl' => $this->mediaUrl(),
|
||||
'mediaRoot' => $this->mediaRoot(),
|
||||
'num' => $this->num(),
|
||||
'parent' => $this->parent() ? $this->parent()->id(): null,
|
||||
'parent' => $this->parent() ? $this->parent()->id() : null,
|
||||
'slug' => $this->slug(),
|
||||
'template' => $this->template(),
|
||||
'translations' => $this->translations()->toArray(),
|
||||
|
@@ -19,7 +19,7 @@ use Kirby\Toolkit\Str;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
trait PageActions
|
||||
@@ -780,10 +780,8 @@ trait PageActions
|
||||
foreach ($sorted as $key => $id) {
|
||||
if ($id === $this->id()) {
|
||||
continue;
|
||||
} else {
|
||||
if ($sibling = $siblings->get($id)) {
|
||||
$sibling->changeNum($key + 1);
|
||||
}
|
||||
} elseif ($sibling = $siblings->get($id)) {
|
||||
$sibling->changeNum($key + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -8,7 +8,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class PageBlueprint extends Blueprint
|
||||
|
@@ -8,7 +8,7 @@ namespace Kirby\Cms;
|
||||
* @package Kirby Cms
|
||||
* @author Bastian Allgeier <bastian@getkirby.com>
|
||||
* @link https://getkirby.com
|
||||
* @copyright Bastian Allgeier GmbH
|
||||
* @copyright Bastian Allgeier
|
||||
* @license https://getkirby.com/license
|
||||
*/
|
||||
class PagePermissions extends ModelPermissions
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user