(Grav GitSync) Automatic Commit from grav

This commit is contained in:
grav 2022-11-03 22:26:12 +01:00 committed by GitSync
parent 20e5251c1a
commit a6eb1f8550
760 changed files with 48398 additions and 47953 deletions

42
pages/01.home/default.md Normal file
View File

@ -0,0 +1,42 @@
---
title: Home
body_classes: title-center title-h1h2
---
# Say Hello to Grav!
## installation successful...
Congratulations! You have installed the **Base Grav Package** that provides a **simple page** and the default **Quark** theme to get you started.
!! If you see a **404 Error** when you click `Typography` in the menu, please refer to the [troubleshooting guide](http://learn.getgrav.org/troubleshooting/page-not-found).
### Find out all about Grav
* Learn about **Grav** by checking out our dedicated [Learn Grav](http://learn.getgrav.org) site.
* Download **plugins**, **themes**, as well as other Grav **skeleton** packages from the [Grav Downloads](http://getgrav.org/downloads) page.
* Check out our [Grav Development Blog](http://getgrav.org/blog) to find out the latest goings on in the Grav-verse.
!!! If you want a more **full-featured** base install, you should check out [**Skeleton** packages available in the downloads](http://getgrav.org/downloads).
### Edit this Page
To edit this page, simply navigate to the folder you installed **Grav** into, and then browse to the `user/pages/01.home` folder and open the `default.md` file in your [editor of choice](http://learn.getgrav.org/basics/requirements). You will see the content of this page in [Markdown format](http://learn.getgrav.org/content/markdown).
### Create a New Page
Creating a new page is a simple affair in **Grav**. Simply follow these simple steps:
1. Navigate to your pages folder: `user/pages/` and create a new folder. In this example, we will use [explicit default ordering](http://learn.getgrav.org/content/content-pages) and call the folder `03.mypage`.
2. Launch your text editor and paste in the following sample code:
---
title: My New Page
---
# My New Page!
This is the body of **my new page** and I can easily use _Markdown_ syntax here.
3. Save this file in the `user/pages/03.mypage/` folder as `default.md`. This will tell **Grav** to render the page using the **default** template.
4. That is it! Reload your browser to see your new page in the menu.
! NOTE: The page will automatically show up in the Menu after the "Typography" menu item. If you wish to change the name that shows up in the Menu, simple add: `menu: My Page` between the dashes in the page content. This is called the YAML front matter, and it is where you configure page-specific options.

View File

@ -1,4 +1,4 @@
# EditorConfig is awesome: http://EditorConfig.org
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
@ -10,8 +10,8 @@ end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
# 2 space indentation
[*.{yaml,.yml}]
indent_size = 2
# 4 space indentation
[*.php]
indent_size = 4

View File

@ -1,3 +1,145 @@
# v1.10.30.2
## 02/09/2022
1. [](#bugfix)
* Fixed regression preventing new `elements` field from saving its state
# v1.10.30.1
## 02/09/2022
1. [](#improved)
* List field items will now require confirmation before getting deleted
# v1.10.30
## 02/07/2022
1. [](#new)
* Require **Grav 1.7.30**
* Updated SCSS compiler to v1.10
* PageMedia can now be collapsed and thumbnails previewed smaller, in order to save room on the page. Selection will be remembered.
* DEPRECATED: Admin field `pages_list_display_field` is no longer available as an option [#2191](https://github.com/getgrav/grav-plugin-admin/issues/2191)
* When listing installable themes/plugins, it is now possible to sort them by [Premium](https://getgrav.org/premium)
2. [](#improved)
* Updated JavaScript dependencies
* Cleaned up JavaScript unused dependencies and warnings
* Removed unused style assets
* Plugins list rows now properly highlight on hover, no more guessing when wanting to disable a plugin!
3. [](#bugfix)
* Fixed `elements` field when it's used inside `list` field
* Fixed issue uploading non-images media when Resolution setting enabled in Admin [#2172](https://github.com/getgrav/grav-plugin-admin/issues/2172)
* Prevent fields from being toggled incorrectly by adding originalValue to childs of fieldset. [#2218](https://github.com/getgrav/grav-plugin-admin/pull/2218)
* Fixed persistent focus on Folder field when Adding page (Safari) [#2209](https://github.com/getgrav/grav-plugin-admin/issues/2209)
* Fixed performance of Plugins / Themes sort in the installation table
* Fixed list field with key/value pairs throwing an exception due to bad value [#2199](https://github.com/getgrav/grav-plugin-admin/issues/2199)
* Fixed disabling/enabling plugin from the list breaking the plugin configuration
# v1.10.29
## 01/28/2022
1. [](#new)
* Require **Grav 1.7.29**
3. [](#improved)
* Made path handling unicode-safe, use new `Utils::basename()` and `Utils::pathinfo()` everywhere
# v1.10.28
## 01/24/2022
1. [](#bugfix)
* Clean file names before displaying errors/metadata modals
* Recompiled JS for production [#2225](https://github.com/getgrav/grav-plugin-admin/issues/2225)
# v1.10.27
## 01/12/2022
1. [](#new)
* Support for `YubiKey OTP` 2-Factor authenticator
* New `elements` container field that shows/hides children fields based on boolean trigger value
* Requires Grav `v1.7.27` and Login `v3.6.2`
2. [](#improved)
* Added new asset language strings
# v1.10.26.1
## 01/03/2022
3. [](#bugfix)
* Fixed an issue with missing files reference by cached autoloader
# v1.10.26
## 01/03/2022
2. [](#improved)
* Updated SCSS compiler to v1.9 and other vendor libraries
* Fixed various deprecation warnings
* Localized dialog buttons and icons [#2207](https://github.com/getgrav/grav-plugin-admin/pull/2207)
* Updated copyright year
# v1.10.25
## 11/16/2021
3. [](#bugfix)
* Fixed unescaped messages in JSON responses
# v1.10.24
## 10/26/2021
1. [](#new)
* Require **Grav 1.7.24**
2. [](#improved)
* Use new `Http\Response` rather than deprecated `GPM\Response`
3. [](#bugfix)
* Fixed an issue with invalid HTML throwing errors on HTML security scanning
* Clear cache when installing plugins
# v1.10.23
## 09/29/2021
1. [](#new)
* Updated SCSS compiler to v1.8
2. [](#improved)
* Updated with latest language strings from Crowdin.com
3. [](#bugfix)
* Fixed images from plugins/themes disappearing when saving twice
# v1.10.22
## 09/16/2021
1. [](#new)
* Updated SCSS compiler to v1.7
# v1.10.21
## 09/14/2021
1. [](#new)
* Require **Grav 1.7.21**
2. [](#improved)
* Added a note about UTC times in scheduler AT syntax help
* Now using a monospaced text-based scheduler AT field in scheduler for simplicity
* Improved `Admin:data()` and `Admin::getConfigurationData()` to be more strict
3. [](#bugfix)
* Fixed configuration save location to point to existing config folder [#2176](https://github.com/getgrav/grav-plugin-admin/issues/2176)
# v1.10.20
## 09/01/2021
1. [](#bugfix)
* Fixed regression `Argument 4 passed to Grav\Plugin\Form\TwigExtension::prepareFormField() must be of the type array` [#2177](https://github.com/getgrav/grav-plugin-admin/issues/2177)
* Fixed `X-Frame-Options` to be `DENY` in all admin pages to prevent a clickjacking attack
# v1.10.19
## 08/31/2021
1. [](#new)
* Require **Grav 1.7.19** and **Form 5.1.0** and **Login 3.5.0**
* Updated SCSS compiler to v1.6
2. [](#improved)
* Updated forms and nested fields to use new form logic
* Admin form now use layout `admin`, meaning you can create admin specific field templates by `forms/fields/myfield/admin-field.html.twig`
* Stop using `|tu` filter, Grav already has the same logic in `|t` for admin
* Remove unneeded escapes
* Allow removal of plugin when disabled [#2167](https://github.com/getgrav/grav-plugin-admin/issues/2167)
3. [](#bugfix)
* Fixed missing values in `fieldset` form field
# v1.10.18
## 07/19/2021

View File

@ -1,6 +1,6 @@
# Grav Standard Administration Panel Plugin
This **admin plugin** for [Grav](http://github.com/getgrav/grav) is an HTML user interface that provides a convenient way to configure Grav and easily create and modify pages. This will remain a totally optional plugin, and is not in any way required or needed to use Grav effectively. In fact, the admin provides an intentionally limited view to ensure it remains easy to use and not overwhelming. I'm sure power users will still prefer to work with the configuration files directly.
This **admin plugin** for [Grav](https://github.com/getgrav/grav) is an HTML user interface that provides a convenient way to configure Grav and easily create and modify pages. This will remain a totally optional plugin, and is not in any way required or needed to use Grav effectively. In fact, the admin provides an intentionally limited view to ensure it remains easy to use and not overwhelming. I'm sure power users will still prefer to work with the configuration files directly.
![](assets/admin-dashboard.png)
@ -33,7 +33,7 @@ This **admin plugin** for [Grav](http://github.com/getgrav/grav) is an HTML user
We have tested internally, but we hope to use this public beta phase to identify, isolate, and fix issues related to the plugin to ensure it is as solid and reliable as possible.
For **live chatting**, please use the dedicated [Slack Chat Room](https://getgrav.org/slack) for discussions directly related to Grav.
For **live chatting**, please use the dedicated [Discord Chat Room](https://getgrav.org/discord) for discussions directly related to Grav.
For **bugs, features, improvements**, please ensure you [create issues in the admin plugin GitHub repository](https://github.com/getgrav/grav-plugin-admin).
@ -99,7 +99,7 @@ By default, you can access the admin by pointing your browser to `http://yoursit
# Standard Free & Paid Pro Versions
If you have been following the [blog](http://getgrav.org/blog), [Twitter](https://twitter.com/getgrav), [Slack chat](https://getgrav.org/slack), etc., you probably already know now that our intention is to provide two versions of this plugin.
If you have been following the [blog](https://getgrav.org/blog), [Twitter](https://twitter.com/getgrav), [Discord chat](https://getgrav.org/discord), etc., you probably already know now that our intention is to provide two versions of this plugin.
The **standard free version**, is very powerful, and has more functionality than most commercial flat-file CMS systems.

View File

@ -119,6 +119,12 @@ class AdminPlugin extends Plugin
'list' => [
'array' => true
],
'elements' => [
'input@' => true
],
'element' => [
'input@' => false
],
'file' => [
'array' => true,
'media_field' => true,
@ -452,11 +458,11 @@ class AdminPlugin extends Plugin
$legacyController = true;
}
/** @var UserInterface $user */
$user = $this->grav['user'];
// Replace page service with admin.
if (empty($this->grav['page'])) {
/** @var UserInterface $user */
$user = $this->grav['user'];
$this->grav['page'] = function () use ($user) {
$page = new Page();
@ -480,7 +486,7 @@ class AdminPlugin extends Plugin
Admin::DEBUG && Admin::addDebugMessage("Admin page: {$this->template}");
$page->init(new \SplFileInfo(__DIR__ . "/pages/admin/{$this->template}.md"));
$page->slug(basename($this->template));
$page->slug(Utils::basename($this->template));
return $page;
}
@ -501,7 +507,7 @@ class AdminPlugin extends Plugin
Admin::DEBUG && Admin::addDebugMessage("Admin page: plugin {$plugin->name}/{$this->template}");
$page->init(new \SplFileInfo($path));
$page->slug(basename($this->template));
$page->slug(Utils::basename($this->template));
return $page;
}
@ -525,7 +531,7 @@ class AdminPlugin extends Plugin
$error_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/error.md');
$page = new Page();
$page->init(new \SplFileInfo($error_file));
$page->slug(basename($this->route));
$page->slug(Utils::basename($this->route));
$page->routable(true);
}
@ -537,7 +543,7 @@ class AdminPlugin extends Plugin
$login_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/login.md');
$page = new Page();
$page->init(new \SplFileInfo($login_file));
$page->slug(basename($this->route));
$page->slug(Utils::basename($this->route));
unset($this->grav['page']);
$this->grav['page'] = $page;
}
@ -1304,7 +1310,7 @@ class AdminPlugin extends Plugin
$options = [];
$theme_files = glob(__dir__ . '/themes/grav/css/codemirror/themes/*.css');
foreach ($theme_files as $theme_file) {
$theme = basename(basename($theme_file, '.css'));
$theme = Utils::basename(Utils::basename($theme_file, '.css'));
$options[$theme] = Inflector::titleize($theme);
}
}

View File

@ -26,7 +26,6 @@ session:
edit_mode: normal
frontend_preview_target: inline
show_github_msg: true
pages_list_display_field: title
admin_icons: line-awesome
enable_auto_updates_check: true
notifications:

View File

@ -1,13 +1,13 @@
name: Admin Panel
slug: admin
type: plugin
version: 1.10.18
version: 1.10.30.2
description: Adds an advanced administration panel to manage your site
icon: empire
author:
name: Team Grav
email: devs@getgrav.org
url: http://getgrav.org
url: https://getgrav.org
homepage: https://github.com/getgrav/grav-plugin-admin
keywords: admin, plugin, manager, panel
bugs: https://github.com/getgrav/grav-plugin-admin/issues
@ -15,11 +15,11 @@ docs: https://github.com/getgrav/grav-plugin-admin/blob/develop/README.md
license: MIT
dependencies:
- { name: grav, version: '>=1.7.10' }
- { name: form, version: '>=4.1.0' }
- { name: login, version: '>=3.3.5' }
- { name: email, version: '>=3.0.9' }
- { name: flex-objects, version: '>=1.0.0' }
- { name: grav, version: '>=1.7.30' }
- { name: form, version: '>=5.1.0' }
- { name: login, version: '>=3.6.2' }
- { name: email, version: '>=3.1.0' }
- { name: flex-objects, version: '>=1.1.0' }
form:
validation: loose
@ -202,12 +202,6 @@ form:
type: bool
help: PLUGIN_ADMIN.SHOW_GITHUB_LINK_HELP
pages_list_display_field:
type: text
size: small
label: PLUGIN_ADMIN.PAGES_LIST_DISPLAY_FIELD
help: PLUGIN_ADMIN.PAGES_LIST_DISPLAY_FIELD_HELP
enable_auto_updates_check:
type: toggle
label: PLUGIN_ADMIN.AUTO_UPDATES

View File

@ -10,9 +10,9 @@ use Grav\Common\File\CompiledYamlFile;
use Grav\Common\Flex\Types\Users\UserObject;
use Grav\Common\GPM\GPM;
use Grav\Common\GPM\Licenses;
use Grav\Common\GPM\Response;
use Grav\Common\Grav;
use Grav\Common\Helpers\YamlLinter;
use Grav\Common\HTTP\Response;
use Grav\Common\Language\Language;
use Grav\Common\Language\LanguageCodes;
use Grav\Common\Page\Collection;
@ -38,6 +38,7 @@ use Grav\Framework\Route\RouteFactory;
use Grav\Plugin\AdminPlugin;
use Grav\Plugin\Login\Login;
use Grav\Plugin\Login\TwoFactorAuth\TwoFactorAuth;
use JsonException;
use PicoFeed\Parser\MalformedXmlException;
use Psr\Http\Message\ServerRequestInterface;
use RocketTheme\Toolbox\Event\Event;
@ -867,115 +868,20 @@ class Admin
*
* @param string $type
* @param array $post
* @return mixed
* @return object
* @throws \RuntimeException
*/
public function data($type, array $post = [])
{
static $data = [];
if (isset($data[$type])) {
return $data[$type];
}
if (!$post) {
$post = $this->grav['uri']->post();
$post = $post['data'] ?? [];
$post = $this->preparePost($this->grav['uri']->post()['data'] ?? []);
}
// Check to see if a data type is plugin-provided, before looking into core ones
$event = $this->grav->fireEvent('onAdminData', new Event(['type' => &$type]));
if ($event) {
if (isset($event['data_type'])) {
return $event['data_type'];
}
if (is_string($event['type'])) {
$type = $event['type'];
}
try {
return $this->getConfigurationData($type, $post);
} catch (\RuntimeException $e) {
return new Data\Data();
}
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
$filename = $locator->findResource("config://{$type}.yaml", true, true);
$file = CompiledYamlFile::instance($filename);
if (preg_match('|plugins/|', $type)) {
/** @var Plugins $plugins */
$plugins = $this->grav['plugins'];
$obj = $plugins->get(preg_replace('|plugins/|', '', $type));
if (!$obj) {
return [];
}
$obj->merge($post);
$obj->file($file);
$data[$type] = $obj;
} elseif (preg_match('|themes/|', $type)) {
/** @var Themes $themes */
$themes = $this->grav['themes'];
$obj = $themes->get(preg_replace('|themes/|', '', $type));
if (!$obj) {
return [];
}
$obj->merge($post);
$obj->file($file);
$data[$type] = $obj;
} elseif (preg_match('|users?/|', $type)) {
/** @var UserCollectionInterface $users */
$users = $this->grav['accounts'];
$obj = $users->load(preg_replace('|users?/|', '', $type));
$obj->update($this->cleanUserPost($post));
$data[$type] = $obj;
} elseif (preg_match('|config/|', $type)) {
$type = preg_replace('|config/|', '', $type);
$blueprints = $this->blueprints("config/{$type}");
$config = $this->grav['config'];
$obj = new Data\Data($config->get($type, []), $blueprints);
$obj->merge($post);
// FIXME: We shouldn't allow user to change configuration files in system folder!
$filename = $this->grav['locator']->findResource("config://{$type}.yaml")
?: $this->grav['locator']->findResource("config://{$type}.yaml", true, true);
$file = CompiledYamlFile::instance($filename);
$obj->file($file);
$data[$type] = $obj;
} elseif (preg_match('|media-manager/|', $type)) {
$filename = base64_decode(preg_replace('|media-manager/|', '', $type));
$file = File::instance($filename);
$pages = static::enablePages();
$obj = new \stdClass();
$obj->title = $file->basename();
$obj->path = $file->filename();
$obj->file = $file;
$obj->page = $pages->get(dirname($obj->path));
$fileInfo = pathinfo($obj->title);
$filename = str_replace(['@3x', '@2x'], '', $fileInfo['filename']);
if (isset($fileInfo['extension'])) {
$filename .= '.' . $fileInfo['extension'];
}
if ($obj->page && isset($obj->page->media()[$filename])) {
$obj->metadata = new Data\Data($obj->page->media()[$filename]->metadata());
}
$data[$type] = $obj;
} else {
throw new \RuntimeException("Data type '{$type}' doesn't exist!");
}
return $data[$type];
}
/**
@ -993,7 +899,16 @@ class Admin
static $data = [];
if (isset($data[$type])) {
return $data[$type];
$obj = $data[$type];
if ($post) {
if ($obj instanceof Data\Data) {
$obj = $this->mergePost($obj, $post);
} elseif ($obj instanceof UserInterface) {
$obj->update($this->cleanUserPost($post));
}
}
return $obj;
}
// Check to see if a data type is plugin-provided, before looking into core ones
@ -1010,61 +925,48 @@ class Admin
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
$filename = $locator->findResource("config://{$type}.yaml", true, true);
// Configuration file will be saved to the existing config stream.
$filename = $locator->findResource('config://') . "/{$type}.yaml";
$file = CompiledYamlFile::instance($filename);
if (preg_match('|plugins/|', $type)) {
$obj = Plugins::get(preg_replace('|plugins/|', '', $type));
if (null === $obj) {
return new \stdClass();
throw new \RuntimeException("Plugin '{$type}' doesn't exist!");
}
if ($post) {
$obj = $this->mergePost($obj, $post);
}
$obj->file($file);
$data[$type] = $obj;
} elseif (preg_match('|themes/|', $type)) {
/** @var Themes $themes */
$themes = $this->grav['themes'];
$obj = $themes->get(preg_replace('|themes/|', '', $type));
if (null === $obj) {
return new \stdClass();
throw new \RuntimeException("Theme '{$type}' doesn't exist!");
}
if ($post) {
$obj = $this->mergePost($obj, $post);
}
$obj->file($file);
$data[$type] = $obj;
} elseif (preg_match('|users?/|', $type)) {
/** @var UserCollectionInterface $users */
$users = $this->grav['accounts'];
$obj = $users->load(preg_replace('|users?/|', '', $type));
$obj->update($this->cleanUserPost($post));
$data[$type] = $obj;
} elseif (preg_match('|config/|', $type)) {
$type = preg_replace('|config/|', '', $type);
$blueprints = $this->blueprints("config/{$type}");
if (!$blueprints->form()) {
throw new \RuntimeException("Configuration type '{$type}' doesn't exist!");
}
// Configuration file will be saved to the existing config stream.
$filename = $locator->findResource('config://') . "/{$type}.yaml";
$file = CompiledYamlFile::instance($filename);
$config = $this->grav['config'];
$obj = new Data\Data($config->get($type, []), $blueprints);
if ($post) {
$obj = $this->mergePost($obj, $post);
}
// FIXME: We shouldn't allow user to change configuration files in system folder!
$filename = $this->grav['locator']->findResource("config://{$type}.yaml")
?: $this->grav['locator']->findResource("config://{$type}.yaml", true, true);
$file = CompiledYamlFile::instance($filename);
$obj->file($file);
$data[$type] = $obj;
} elseif (preg_match('|media-manager/|', $type)) {
$filename = base64_decode(preg_replace('|media-manager/|', '', $type));
@ -1078,7 +980,7 @@ class Admin
$obj->file = $file;
$obj->page = $pages->get(dirname($obj->path));
$fileInfo = pathinfo($obj->title);
$fileInfo = Utils::pathinfo($obj->title);
$filename = str_replace(['@3x', '@2x'], '', $fileInfo['filename']);
if (isset($fileInfo['extension'])) {
$filename .= '.' . $fileInfo['extension'];
@ -1088,12 +990,20 @@ class Admin
$obj->metadata = new Data\Data($obj->page->media()[$filename]->metadata());
}
$data[$type] = $obj;
} else {
throw new \RuntimeException("Data type '{$type}' doesn't exist!");
}
return $data[$type];
$data[$type] = $obj;
if ($post) {
if ($obj instanceof Data\Data) {
$obj = $this->mergePost($obj, $post);
} elseif ($obj instanceof UserInterface) {
$obj->update($this->cleanUserPost($post));
}
}
return $obj;
}
/**
@ -2069,7 +1979,7 @@ class Admin
$page = $path ? $pages->find($path, true) : $pages->root();
if (!$page) {
$slug = basename($path);
$slug = Utils::basename($path);
if ($slug === '') {
return null;
@ -2497,7 +2407,7 @@ class Admin
/**
* Get changelog for a given GPM package based on slug
*
* @param null $slug
* @param string|null $slug
* @return array
*/
public function getChangelog($slug = null)
@ -2518,4 +2428,66 @@ class Admin
return $changelog;
}
/**
* Prepare and return POST data.
*
* @param array $post
* @return array
*/
public function preparePost($post): array
{
if (!is_array($post)) {
return [];
}
unset($post['task']);
// Decode JSON encoded fields and merge them to data.
if (isset($post['_json'])) {
$post = array_replace_recursive($post, $this->jsonDecode($post['_json']));
unset($post['_json']);
}
return $this->cleanDataKeys($post);
}
/**
* Recursively JSON decode data.
*
* @param array $data
* @return array
* @throws JsonException
*/
private function jsonDecode(array $data): array
{
foreach ($data as &$value) {
if (is_array($value)) {
$value = $this->jsonDecode($value);
} else {
$value = json_decode($value, true, 512, JSON_THROW_ON_ERROR);
}
}
return $data;
}
/**
* @param array $source
* @return array
*/
private function cleanDataKeys(array $source): array
{
$out = [];
foreach ($source as $key => $value) {
$key = str_replace(['%5B', '%5D'], ['[', ']'], $key);
if (is_array($value)) {
$out[$key] = $this->cleanDataKeys($value);
} else {
$out[$key] = $value;
}
}
return $out;
}
}

View File

@ -19,6 +19,7 @@ use Grav\Common\Plugin;
use Grav\Common\Theme;
use Grav\Framework\Controller\Traits\ControllerResponseTrait;
use Grav\Framework\RequestHandler\Exception\RequestException;
use JsonException;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use RocketTheme\Toolbox\Event\Event;
@ -34,56 +35,31 @@ class AdminBaseController
{
use ControllerResponseTrait;
/**
* @var Grav
*/
/** @var Grav */
public $grav;
/**
* @var string
*/
/** @var string */
public $view;
/**
* @var string
*/
/** @var string */
public $task;
/**
* @var string
*/
/** @var string */
public $route;
/**
* @var array
*/
/** @var array */
public $post;
/**
* @var array|null
*/
/** @var array|null */
public $data;
/** @var array */
public $blacklist_views = [];
/**
* @var \Grav\Common\Uri
*/
/** @var Uri */
protected $uri;
/**
* @var Admin
*/
/** @var Admin */
protected $admin;
/**
* @var string
*/
/** @var string */
protected $redirect;
/**
* @var int
*/
/** @var int */
protected $redirectCode;
/** @var string[] */
protected $upload_errors = [
0 => 'There is no error, the file uploaded with success',
1 => 'The uploaded file exceeds the max upload size',
@ -95,9 +71,6 @@ class AdminBaseController
8 => 'A PHP extension stopped the file upload'
];
/** @var array */
public $blacklist_views = [];
/**
* Performs a task.
*
@ -105,6 +78,10 @@ class AdminBaseController
*/
public function execute()
{
if (null === $this->admin) {
$this->admin = $this->grav['admin'];
}
// Ignore blacklisted views.
if (in_array($this->view, $this->blacklist_views, true)) {
return false;
@ -294,7 +271,7 @@ class AdminBaseController
$this->admin->json_response = [
'status' => 'error',
'message' => sprintf($this->admin::translate('PLUGIN_ADMIN.FILEUPLOAD_UNABLE_TO_UPLOAD', null),
$filename, 'Bad filename')
htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8'), 'Bad filename')
];
return false;
@ -314,7 +291,7 @@ class AdminBaseController
$this->admin->json_response = [
'status' => 'error',
'message' => sprintf($this->admin::translate('PLUGIN_ADMIN.FILEUPLOAD_PREVENT_SELF', null),
$settings->destination)
htmlspecialchars($settings->destination, ENT_QUOTES | ENT_HTML5, 'UTF-8'))
];
return false;
@ -325,7 +302,8 @@ class AdminBaseController
$this->admin->json_response = [
'status' => 'error',
'message' => sprintf($this->admin::translate('PLUGIN_ADMIN.FILEUPLOAD_UNABLE_TO_UPLOAD', null),
$filename, $this->upload_errors[$upload->file->error])
htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8'),
$this->upload_errors[$upload->file->error])
];
return false;
@ -363,7 +341,7 @@ class AdminBaseController
if ($isMime) {
$match = preg_match('#' . $find . '$#', $mime);
if (!$match) {
$errors[] = 'The MIME type "' . $mime . '" for the file "' . $filename . '" is not an accepted.';
$errors[] = htmlspecialchars('The MIME type "' . $mime . '" for the file "' . $filename . '" is not an accepted.', ENT_QUOTES | ENT_HTML5, 'UTF-8');
} else {
$accepted = true;
break;
@ -371,7 +349,7 @@ class AdminBaseController
} else {
$match = preg_match('#' . $find . '$#', $filename);
if (!$match) {
$errors[] = 'The File Extension for the file "' . $filename . '" is not an accepted.';
$errors[] = htmlspecialchars('The File Extension for the file "' . $filename . '" is not an accepted.', ENT_QUOTES | ENT_HTML5, 'UTF-8');
} else {
$accepted = true;
break;
@ -396,14 +374,17 @@ class AdminBaseController
// since php removes it from the upload location
$tmp_dir = Admin::getTempDir();
$tmp_file = $upload->file->tmp_name;
$tmp = $tmp_dir . '/uploaded-files/' . basename($tmp_file);
$tmp = $tmp_dir . '/uploaded-files/' . Utils::basename($tmp_file);
Folder::create(dirname($tmp));
if (!move_uploaded_file($tmp_file, $tmp)) {
$this->admin->json_response = [
'status' => 'error',
'message' => sprintf($this->admin::translate('PLUGIN_ADMIN.FILEUPLOAD_UNABLE_TO_MOVE', null), '',
$tmp)
'message' => sprintf(
$this->admin::translate('PLUGIN_ADMIN.FILEUPLOAD_UNABLE_TO_MOVE', null),
'',
htmlspecialchars($tmp, ENT_QUOTES | ENT_HTML5, 'UTF-8')
)
];
return false;
@ -442,7 +423,7 @@ class AdminBaseController
// Generate random name if required
if ($settings->random_name) { // TODO: document
$extension = pathinfo($upload->file->name, PATHINFO_EXTENSION);
$extension = Utils::pathinfo($upload->file->name, PATHINFO_EXTENSION);
$upload->file->name = Utils::generateRandomString(15) . '.' . $extension;
}
@ -671,7 +652,6 @@ class AdminBaseController
* Prepare and return POST data.
*
* @param array $post
*
* @return array
*/
protected function getPost($post)
@ -688,25 +668,24 @@ class AdminBaseController
unset($post['_json']);
}
$post = $this->cleanDataKeys($post);
return $post;
return $this->cleanDataKeys($post);
}
/**
* Recursively JSON decode data.
*
* @param array $data
*
* @param array $data
* @return array
* @throws JsonException
* @internal Do not use directly!
*/
protected function jsonDecode(array $data)
protected function jsonDecode(array $data): array
{
foreach ($data as &$value) {
if (is_array($value)) {
$value = $this->jsonDecode($value);
} else {
$value = json_decode($value, true);
$value = json_decode($value, true, 512, JSON_THROW_ON_ERROR);
}
}
@ -716,19 +695,17 @@ class AdminBaseController
/**
* @param array $source
* @return array
* @internal Do not use directly!
*/
protected function cleanDataKeys($source = [])
protected function cleanDataKeys(array $source): array
{
$out = [];
if (is_array($source)) {
foreach ($source as $key => $value) {
$key = str_replace(['%5B', '%5D'], ['[', ']'], $key);
if (is_array($value)) {
$out[$key] = $this->cleanDataKeys($value);
} else {
$out[$key] = $value;
}
foreach ($source as $key => $value) {
$key = str_replace(['%5B', '%5D'], ['[', ']'], $key);
if (is_array($value)) {
$out[$key] = $this->cleanDataKeys($value);
} else {
$out[$key] = $value;
}
}
@ -952,7 +929,7 @@ class AdminBaseController
$type = $uri->param('type');
$field = $uri->param('field');
$filename = basename($this->post['filename'] ?? '');
$filename = Utils::basename($this->post['filename'] ?? '');
if ($filename === '') {
$this->admin->json_response = [
'status' => 'error',
@ -1091,7 +1068,7 @@ class AdminBaseController
if ($file->exists()) {
$resultRemoveMedia = $file->delete();
$fileParts = pathinfo($filename);
$fileParts = Utils::pathinfo($filename);
foreach (scandir($fileParts['dirname']) as $file) {
$regex_pattern = '/' . preg_quote($fileParts['filename'], '/') . "@\d+x\." . $fileParts['extension'] . "(?:\.meta\.yaml)?$|" . preg_quote($fileParts['basename'], '/') . "\.meta\.yaml$/";

View File

@ -22,6 +22,7 @@ use Grav\Common\Page\Medium\Medium;
use Grav\Common\Page\Page;
use Grav\Common\Page\Pages;
use Grav\Common\Page\Collection;
use Grav\Common\Plugins;
use Grav\Common\Security;
use Grav\Common\User\Interfaces\UserCollectionInterface;
use Grav\Common\User\Interfaces\UserInterface;
@ -35,6 +36,7 @@ use PicoFeed\Parser\MalformedXmlException;
use Psr\Http\Message\ResponseInterface;
use RocketTheme\Toolbox\Event\Event;
use RocketTheme\Toolbox\File\File;
use RocketTheme\Toolbox\File\YamlFile;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
use Twig\Loader\FilesystemLoader;
@ -56,6 +58,7 @@ class AdminController extends AdminBaseController
public function initialize(Grav $grav = null, $view = null, $task = null, $route = null, $post = null)
{
$this->grav = $grav;
$this->admin = $this->grav['admin'];
$this->view = $view;
$this->task = $task ?: 'display';
if (isset($post['data'])) {
@ -67,7 +70,6 @@ class AdminController extends AdminBaseController
}
$this->post = $this->getPost($post);
$this->route = $route;
$this->admin = $this->grav['admin'];
$this->grav->fireEvent('onAdminControllerInit', new Event(['controller' => &$this]));
}
@ -165,7 +167,13 @@ class AdminController extends AdminBaseController
// Not used if Flex-Objects plugin handles users.
return $this->saveUser();
default:
return $this->saveDefault();
if ($this->saveDefault()) {
$route = $this->grav['uri']::getCurrentRoute();
$this->setRedirect($route->withGravParam('task', null)->toString(), 302);
$this->redirect();
}
return false;
}
}
@ -174,11 +182,11 @@ class AdminController extends AdminBaseController
*/
protected function saveDefault()
{
// Handle standard data types.
$type = $this->getDataType();
$obj = $this->admin->getConfigurationData($type, $this->data);
try {
// Handle standard data types.
$type = $this->getDataType();
$obj = $this->admin->getConfigurationData($type, $this->data);
$obj->validate();
} catch (\Exception $e) {
/** @var Debugger $debugger */
@ -282,7 +290,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()];
$this->admin->json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
return false;
}
@ -401,7 +409,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$json_response = ['status' => 'error', 'message' => $e->getMessage()];
$json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
}
$this->sendJsonResponse($json_response);
@ -484,7 +492,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$json_response = ['status' => 'error', 'message' => $e->getMessage()];
$json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
}
$this->sendJsonResponse($json_response);
@ -515,7 +523,7 @@ class AdminController extends AdminBaseController
try {
if ($download) {
$filename = basename(base64_decode(urldecode($download)));
$filename = Utils::basename(base64_decode(urldecode($download)));
$file = $this->grav['locator']->findResource("backup://{$filename}", true);
if (!$file || !Utils::endsWith($filename, '.zip', false)) {
header('HTTP/1.1 401 Unauthorized');
@ -534,7 +542,7 @@ class AdminController extends AdminBaseController
$this->admin->json_response = [
'status' => 'error',
'message' => $this->admin::translate('PLUGIN_ADMIN.AN_ERROR_OCCURRED') . '. ' . $e->getMessage()
'message' => $this->admin::translate('PLUGIN_ADMIN.AN_ERROR_OCCURRED') . '. ' . htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')
];
return true;
@ -578,7 +586,7 @@ class AdminController extends AdminBaseController
$backup = $this->grav['uri']->param('backup', null);
if (null !== $backup) {
$filename = basename(base64_decode(urldecode($backup)));
$filename = Utils::basename(base64_decode(urldecode($backup)));
$file = $this->grav['locator']->findResource("backup://{$filename}", true);
if ($file && Utils::endsWith($filename, '.zip', false)) {
@ -623,10 +631,8 @@ class AdminController extends AdminBaseController
return false;
}
// Filter value and save it.
$this->post = ['enabled' => true];
$obj = $this->prepareData($this->post);
$obj->save();
$type = $this->getDataType();
$this->updatePluginState($type, ['enabled' => true]);
$this->post = ['_redirect' => 'plugins'];
if ($this->grav['uri']->param('redirect')) {
@ -656,10 +662,8 @@ class AdminController extends AdminBaseController
return false;
}
// Filter value and save it.
$this->post = ['enabled' => false];
$obj = $this->prepareData($this->post);
$obj->save();
$type = $this->getDataType();
$this->updatePluginState($type, ['enabled' => false]);
$this->post = ['_redirect' => 'plugins'];
$this->admin->setMessage($this->admin::translate('PLUGIN_ADMIN.SUCCESSFULLY_DISABLED_PLUGIN'), 'info');
@ -669,6 +673,30 @@ class AdminController extends AdminBaseController
return true;
}
/**
* @param string $type
* @param array $value
* @return void
*/
protected function updatePluginState(string $type, array $value): void
{
$obj = Plugins::get(preg_replace('|plugins/|', '', $type));
if (null === $obj) {
throw new \RuntimeException("Plugin '{$type}' doesn't exist!");
}
/** @var UniformResourceLocator $locator */
$locator = $this->grav['locator'];
// Configuration file will be saved to the existing config stream.
$filename = $locator->findResource('config://') . "/{$type}.yaml";
$file = YamlFile::instance($filename);
$contents = $value + $file->content();
$file->save($contents);
}
/**
* Set the default theme.
*
@ -911,7 +939,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()];
$this->admin->json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
return false;
}
@ -955,7 +983,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()];
$this->admin->json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
return false;
}
@ -998,7 +1026,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()];
$this->admin->json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
return false;
}
@ -1053,7 +1081,7 @@ class AdminController extends AdminBaseController
$msg = Utils::contains($msg, '401 Unauthorized') ? "ERROR: License key for this resource is invalid." : $msg;
$msg = Utils::contains($msg, '404 Not Found') ? "ERROR: Resource not found" : $msg;
$this->admin->json_response = ['status' => 'error', 'message' => $msg];
$this->admin->json_response = ['status' => 'error', 'message' => htmlspecialchars($msg, ENT_QUOTES | ENT_HTML5, 'UTF-8')];
return false;
}
@ -1127,7 +1155,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$json_response = ['status' => 'error', 'message' => $e->getMessage()];
$json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
$this->sendJsonResponse($json_response, 200);
}
@ -2062,7 +2090,7 @@ class AdminController extends AdminBaseController
$debugger = $this->grav['debugger'];
$debugger->addException($e);
$this->admin->json_response = ['status' => 'error', 'message' => $e->getMessage()];
$this->admin->json_response = ['status' => 'error', 'message' => htmlspecialchars($e->getMessage(), ENT_QUOTES | ENT_HTML5, 'UTF-8')];
return false;
}
@ -2219,7 +2247,7 @@ class AdminController extends AdminBaseController
$this->admin->json_response = [
'status' => 'error',
'message' => sprintf($this->admin::translate('PLUGIN_ADMIN.FILEUPLOAD_UNABLE_TO_UPLOAD'),
$filename, 'Bad filename')
htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8'), 'Bad filename')
];
return false;
@ -2238,7 +2266,7 @@ class AdminController extends AdminBaseController
// Check extension
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
$extension = strtolower(Utils::pathinfo($filename, PATHINFO_EXTENSION));
// If not a supported type, return
if (!$extension || !$config->get("media.types.{$extension}")) {
@ -2287,7 +2315,7 @@ class AdminController extends AdminBaseController
// Add metadata if needed
$include_metadata = Grav::instance()['config']->get('system.media.auto_metadata_exif', false);
$basename = str_replace(['@3x', '@2x'], '', pathinfo($filename, PATHINFO_BASENAME));
$basename = str_replace(['@3x', '@2x'], '', Utils::pathinfo($filename, PATHINFO_BASENAME));
$metadata = [];
@ -2417,7 +2445,7 @@ class AdminController extends AdminBaseController
return false;
}
$filename = !empty($this->post['filename']) ? basename($this->post['filename']) : null;
$filename = !empty($this->post['filename']) ? Utils::basename($this->post['filename']) : null;
// Handle bad filenames.
if (!$filename || !Utils::checkFilename($filename)) {
@ -2436,7 +2464,7 @@ class AdminController extends AdminBaseController
if ($locator->isStream($targetPath)) {
$targetPath = $locator->findResource($targetPath, true, true);
}
$fileParts = pathinfo($filename);
$fileParts = Utils::pathinfo($filename);
$found = false;
@ -2447,7 +2475,7 @@ class AdminController extends AdminBaseController
if (!$result) {
$this->admin->json_response = [
'status' => 'error',
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_COULD_NOT_BE_DELETED') . ': ' . $filename
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_COULD_NOT_BE_DELETED') . ': ' . htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8')
];
return false;
@ -2468,7 +2496,7 @@ class AdminController extends AdminBaseController
if (!$result) {
$this->admin->json_response = [
'status' => 'error',
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_COULD_NOT_BE_DELETED') . ': ' . $filename
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_COULD_NOT_BE_DELETED') . ': ' . htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8')
];
return false;
@ -2483,7 +2511,7 @@ class AdminController extends AdminBaseController
if (!$found) {
$this->admin->json_response = [
'status' => 'error',
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_NOT_FOUND') . ': ' . $filename
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_NOT_FOUND') . ': ' . htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8')
];
return false;
@ -2494,7 +2522,7 @@ class AdminController extends AdminBaseController
$this->admin->json_response = [
'status' => 'success',
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_DELETED') . ': ' . $filename
'message' => $this->admin::translate('PLUGIN_ADMIN.FILE_DELETED') . ': ' . htmlspecialchars($filename, ENT_QUOTES | ENT_HTML5, 'UTF-8')
];
return true;
@ -2620,7 +2648,7 @@ class AdminController extends AdminBaseController
$payload = [
'name' => $file_page ? $file_page->title() : $fileName,
'value' => $file_page ? $file_page->rawRoute() : $file_path,
'item-key' => basename($file_page ? $file_page->route() : $file_path),
'item-key' => Utils::basename($file_page ? $file_page->route() : $file_path),
'filename' => $fileName,
'extension' => $type === 'dir' ? '' : $fileInfo->getExtension(),
'type' => $type,

View File

@ -3,7 +3,7 @@
/**
* @package Grav\Plugin\Admin
*
* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/

View File

@ -292,7 +292,7 @@ abstract class AbstractController implements RequestHandlerInterface
$response = [
'code' => $code,
'status' => 'error',
'message' => $message
'message' => htmlspecialchars($message, ENT_QUOTES | ENT_HTML5, 'UTF-8')
];
$accept = $this->getAccept(['application/json', 'text/html']);

View File

@ -3,7 +3,7 @@
/**
* @package Grav\Plugin\Admin
*
* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/

View File

@ -3,7 +3,7 @@
/**
* @package Grav\Plugin\Admin
*
* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
@ -15,6 +15,7 @@ use Grav\Common\Page\Pages;
use Grav\Common\Uri;
use Grav\Common\User\Interfaces\UserCollectionInterface;
use Grav\Common\User\Interfaces\UserInterface;
use Grav\Common\Utils;
use Grav\Framework\RequestHandler\Exception\PageExpiredException;
use Grav\Framework\RequestHandler\Exception\RequestException;
use Grav\Plugin\Admin\Admin;
@ -111,7 +112,7 @@ class LoginController extends AdminController
{
$uri = (string)$this->getRequest()->getUri();
$ext = pathinfo($uri, PATHINFO_EXTENSION);
$ext = Utils::pathinfo($uri, PATHINFO_EXTENSION);
$accept = $this->getAccept(['application/json', 'text/html']);
if ($ext === 'json' || $accept === 'application/json') {
return $this->createErrorResponse(new RequestException($this->getRequest(), $this->translate('PLUGIN_ADMIN.LOGGED_OUT'), 401));
@ -140,7 +141,7 @@ class LoginController extends AdminController
}
$post = $this->getPost();
$credentials = $post['data'] ?? [];
$credentials = (array)($post['data'] ?? []);
$login = $this->getLogin();
$config = $this->getConfig();
@ -275,11 +276,17 @@ class LoginController extends AdminController
$twoFa = null;
}
$code = $data['2fa_code'] ?? null;
$secret = $user->twofa_secret ?? null;
$code = $data['2fa_code'] ?? '';
$secret = $user->twofa_secret ?? '';
$twofa_valid = $twoFa->verifyCode($secret, $code);
$yubikey_otp = $data['yubikey_otp'] ?? '';
$yubikey_id = $user->yubikey_id ?? '';
$yubikey_valid = $twoFa->verifyYubikeyOTP($yubikey_id, $yubikey_otp);
$redirect = (string)$this->getRequest()->getUri();
if (null === $twoFa || !$user->authenticated || !$code || !$secret || !$twoFa->verifyCode($secret, $code)) {
if (null === $twoFa || !$user->authenticated || (!$twofa_valid && !$yubikey_valid) ) {
Admin::DEBUG && Admin::addDebugMessage('Admin login: 2FA check failed, log out!');
// Failed 2FA auth, logout and redirect to the current page.

View File

@ -7,8 +7,8 @@ use Grav\Common\Grav;
use Grav\Common\GPM\GPM as GravGPM;
use Grav\Common\GPM\Licenses;
use Grav\Common\GPM\Installer;
use Grav\Common\GPM\Response;
use Grav\Common\GPM\Upgrader;
use Grav\Common\HTTP\Response;
use Grav\Common\Filesystem\Folder;
use Grav\Common\GPM\Common\Package;
@ -118,6 +118,8 @@ class Gpm
}
}
Cache::clearCache();
return $messages ?: true;
}
@ -190,6 +192,8 @@ class Gpm
}
}
Cache::clearCache();
return true;
}
@ -277,6 +281,7 @@ class Gpm
}
Folder::delete($tmp_zip);
Cache::clearCache();
return true;
}
@ -311,7 +316,7 @@ class Gpm
$bad_chars = array_merge(array_map('chr', range(0, 31)), ['<', '>', ':', '"', '/', '\\', '|', '?', '*']);
$filename = $package->slug . str_replace($bad_chars, '', basename($package->zipball_url));
$filename = $package->slug . str_replace($bad_chars, '', \Grav\Common\Utils::basename($package->zipball_url));
$filename = preg_replace('/[\\\\\/:"*?&<>|]+/m', '-', $filename);
file_put_contents($tmp_dir . DS . $filename . '.zip', $contents);
@ -358,7 +363,7 @@ class Gpm
$error[] = '<p>Grav has increased the minimum PHP requirement.<br />';
$error[] = 'You are currently running PHP <strong>' . phpversion() . '</strong>';
$error[] = ', but PHP <strong>' . $upgrader->minPHPVersion() . '</strong> is required.</p>';
$error[] = '<p><a href="http://getgrav.org/blog/changing-php-requirements-to-5.5" class="button button-small secondary">Additional information</a></p>';
$error[] = '<p><a href="https://getgrav.org/blog/changing-php-requirements-to-5.5" class="button button-small secondary">Additional information</a></p>';
Installer::setError(implode("\n", $error));

View File

@ -67,6 +67,6 @@ class Router extends ProcessorBase
$this->stopTimer();
// Never allow admin pages to be rendered in <frame>, <iframe>, <embed> or <object> for improved security.
return $response->withHeader('X-Frame-Options', 'NONE');
return $response->withHeader('X-Frame-Options', 'DENY');
}
}

View File

@ -3,7 +3,7 @@
/**
* @package Grav\Plugin\Admin
*
* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/

View File

@ -23,7 +23,8 @@
"php": "^7.3.6 || ^8.0",
"ext-json": "*",
"p3k/picofeed": "@stable",
"scssphp/scssphp": "^1.5"
"scssphp/scssphp": "^1.7",
"laminas/laminas-zendframework-bridge": "^1.4"
},
"require-dev": {
"codeception/codeception": "^2.4",

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "هذا إصدار بيتا! استخدم هذا في الإنتاج على مسؤوليتك الخاصة..."
ADMIN_REPORT_ISSUE: "وجدت مشكلة؟ الرجاء الإبلاغ عن GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "تسجل الدخول"
LOGIN_BTN_FORGOT: "نسيت"
LOGIN_BTN_RESET: "إعادة تعيين كلمة المرور"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Това е Бета версия! Използвате на ваша отговорност..."
ADMIN_REPORT_ISSUE: "Открили сте проблем? Моля, съобщете за него в GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Задвижван от Grav</a> - Модерният Флат Файл CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Задвижван от Grav</a> - Модерният Флат Файл CMS"
LOGIN_BTN: "Вход"
LOGIN_BTN_FORGOT: "Забравена парола"
LOGIN_BTN_RESET: "Промяна на паролата"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Un ermaeziadenn beta an hini eo! Arverit en endro produadur gant evezh..."
ADMIN_REPORT_ISSUE: "Kavet hoc'h eus ur gudenn? Danevellit anezhi war Github."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Lusket gant Grav</a> - Ar CMS Restr plad modern"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Lusket gant Grav</a> - Ar CMS Restr plad modern"
LOGIN_BTN: "Anv arveriad"
LOGIN_BTN_FORGOT: "Ankouaet"
LOGIN_BTN_RESET: "Adderaouekaat ar ger-tremen"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Aquesta és una versió beta! Utilitza-la en producció sota el teu propi risc..."
ADMIN_REPORT_ISSUE: "Has trobat algun problema? Sisplau, reporta'l a GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Funcionant amb Grav</a> - El CMS de fitxers plans modern"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Funcionant amb Grav</a> - El CMS de fitxers plans modern"
LOGIN_BTN: "Inicia sessió"
LOGIN_BTN_FORGOT: "Ho he oblidat"
LOGIN_BTN_RESET: "Restablir contrasenya"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Prosím povolte JavaScript ve vašem prohlížeči."
ADMIN_BETA_MSG: "Jedná se o beta verzi! V ostrém provozu používejte pouze na vlastní nebezpečí..."
ADMIN_REPORT_ISSUE: "Objevili jste problém? Nahlaste ho, prosím, na GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Beží na Grav CMS</a> - Moderní správce obsahu pomocí souborů prostých textů"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Beží na Grav CMS</a> - Moderní správce obsahu pomocí souborů prostých textů"
LOGIN_BTN: "Přihlásit"
LOGIN_BTN_FORGOT: "Obnovit heslo"
LOGIN_BTN_RESET: "Obnovit heslo"
@ -548,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Zapněte, pokud jste za reverzní proxy and máte problémy s URL obsahující nesprávné porty"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Nesprávný formát frontmatter, nelze uložit"
ADD_FOLDER: "Přidat složku"
COPY_PAGE: "Kopírovat stránku"
PROXY_URL: "Adresa proxy serveru"
PROXY_URL_HELP: "Zadejte server proxy hostitele nebo adresu IP a PORT"
NOTHING_TO_SAVE: "Nic k uložení"
@ -1042,6 +1043,7 @@ PLUGIN_ADMIN:
CONTENT_HEADER_HELP: "Hlavička obsahu"
CONTENT_TABS_BG_HELP: "Pozadí záložek obsahu"
CONTENT_TABS_TEXT_HELP: "Text záložek obsahu"
CONTENT_HIGHLIGHT_HELP: "Zvýraznění obsahu"
BUTTON_BG_HELP: "Pozadí tlačítek"
BUTTON_TEXT_HELP: "Text tlačítek"
NOTICE_BG_HELP: "Pozadí poznámek"
@ -1104,3 +1106,7 @@ PLUGIN_ADMIN:
IMAGES_CLS_ASPECT_RATIO_HELP: "Volitelná proměnná CSS, aplikovaná prostřednictvím atributu \"style\", kterou lze použít v CSS pro vlastní stylování"
IMAGES_CLS_RETINA_SCALE: "Faktor měřítka Retina"
IMAGES_CLS_RETINA_SCALE_HELP: "Vezme vypočítanou velikost a vydělí faktorem měřítka, aby zobrazil obrázek s vyšším rozlišením při menší velikosti pixelu pro lepší zpracování rozlišení HiDPI"
AUTOREGENERATE_FOLDER_SLUG: "Automaticky obnovit na základě názvu stránky"
ENABLE: Povolit
PLUGINS_MUST_BE_ENABLED: "Pro nastavení musí být doplněk povolen"
ACTIVATION_REQUIRED: "Pro nastavení je vyžadována aktivace"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Mae hwn yn fersiwn beta! Defnyddio hwn yn cynhyrchu ar risg eich hun..."
ADMIN_REPORT_ISSUE: "Canfod problem? Rhowch wybod ar GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\"> wedi'u pweru gan Grav</a>-ffeil fflat Modern CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\"> wedi'u pweru gan Grav</a>-ffeil fflat Modern CMS"
LOGIN_BTN: "Mewngofnodi"
LOGIN_BTN_FORGOT: "Anghofio"
LOGIN_BTN_RESET: "Ailosod cyfrinair"

View File

@ -1,8 +1,9 @@
---
PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Aktivér JavaScript i din browser."
ADMIN_BETA_MSG: "Dette er en beta-udgivelse! Brug i produktionsmiljøer er på egen risiko..."
ADMIN_REPORT_ISSUE: "Har du fundet et problem? Så bedes du rapportere det på GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Drevet af Grav</a> - det moderne fladfil-CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Drevet af Grav</a> - det moderne fladfil-CMS"
LOGIN_BTN: "Login"
LOGIN_BTN_FORGOT: "Glemt"
LOGIN_BTN_RESET: "Nulstil adgangskode"
@ -534,6 +535,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Aktiver denne hvis du er bag en omvendt proxy og har problemer med URL'er, der indeholder ukorrekte porte"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ugyldigt forskræp; kunne ikke gemme"
ADD_FOLDER: "Tilføj mappe"
COPY_PAGE: "Kopiér side"
PROXY_URL: "Proxy-URL"
PROXY_URL_HELP: "Indtast proxyens host eller IP og port"
NOTHING_TO_SAVE: "Intet at gemme"
@ -739,6 +741,7 @@ PLUGIN_ADMIN:
TIMEOUT_HELP: "Angiver sessionstimeout i sekunder"
DASHBOARD: "Kontrolpanel"
NOTIFICATIONS: "Notifikationer"
CONTENT_HIGHLIGHT_HELP: "Indholdsfremhævning"
REDIRECT_OPTION_NO_REDIRECT: "Ingen omdirigering"
REDIRECT_OPTION_DEFAULT_REDIRECT: "Benyt standardomdirigeringskode"
REDIRECT_OPTION_301: "301 - Flyttet permanent"
@ -751,3 +754,7 @@ PLUGIN_ADMIN:
IMAGES_CLS_ASPECT_RATIO_HELP: "Valgfri CSS-variabel, der bliver anvendt via en 'stil'-attribut, der kan bruges i CSS til tilpasset styling"
IMAGES_CLS_RETINA_SCALE: "Retinaskaleringsfaktor"
IMAGES_CLS_RETINA_SCALE_HELP: "Vil tage den beregnede størrelse og dividere med skaleringsfaktoren for at vise et billede med højere opløsning ved en mindre pixelstørrelse for bedre håndtering af HiDPI-opløsninger"
AUTOREGENERATE_FOLDER_SLUG: "Auto-regenerér baseret på sidetitel"
ENABLE: Aktivér
PLUGINS_MUST_BE_ENABLED: "Plugin skal være aktiveret for at opsætte"
ACTIVATION_REQUIRED: "Aktivering krævet for at opsætte"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Bitte aktivieren Sie JavaScript in Ihrem Browser."
ADMIN_BETA_MSG: "Dies ist eine Beta-Version! Benutzung auf eigene Gefahr..."
ADMIN_REPORT_ISSUE: "Fehler gefunden? Bitte melden Sie ihn auf GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\"> Umgesetzt mit Grav</a> - dem modernen Flat-File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\"> Umgesetzt mit Grav</a> - dem modernen Flat-File CMS"
LOGIN_BTN: "Anmelden"
LOGIN_BTN_FORGOT: "Passwort vergessen"
LOGIN_BTN_RESET: "Passwort zurücksetzen"
@ -93,7 +93,7 @@ PLUGIN_ADMIN:
BACKUP_NOW: "Sicherung jetzt erstellen"
BACKUPS_STATS: "Sicherungsstatistiken"
BACKUPS_HISTORY: "Sicherungsverlauf"
BACKUPS_PURGE_CONFIG: "Backup Bereinigung"
BACKUPS_PURGE_CONFIG: "Automatisches Löschen von Sicherungen"
BACKUPS_PROFILES: "Sicherungsprofile"
BACKUPS_COUNT: "Anzahl an Sicherungen"
BACKUPS_PROFILES_COUNT: "Anzahl der Profile"
@ -226,7 +226,7 @@ PLUGIN_ADMIN:
TAXONOMY_TYPES_HELP: "Wenn sie verschiedene Tag-Typen verwenden wollen, müssen Sie hier die verschiedenen Typen angeben."
PAGE_SUMMARY: "Seitenzusammenfassung"
ENABLED: "Aktiviert"
ENABLED_HELP: "Aktiviert die Seitenzusammenfasung (die Seitenzusammenfassung entspricht dem Inhalt der Seite)"
ENABLED_HELP: "Aktiviert die Seitenzusammenfassung (die Seitenzusammenfassung entspricht dem Inhalt der Seite)"
'YES': "Ja"
'NO': "Nein"
SUMMARY_SIZE: "Zusammenfassungslänge"
@ -282,7 +282,7 @@ PLUGIN_ADMIN:
PAGE_ORDER: "Seitensortierung"
OVERRIDES: "Überschreibungen"
MENU: "Menü"
MENU_HELP: "Beschriftung zur Anzeige im Menu. Wenn nicht gesetzt, wird der Titel als Standard genutzt."
MENU_HELP: "Text zur Anzeige im Menu. Wenn nicht gesetzt, wird der Titel verwendet."
SLUG: "Slug"
SLUG_HELP: "Der Slug bestimmt den Namen der Seite innerhalb der URL."
SLUG_VALIDATE_MESSAGE: "Ein Slug darf nur aus Kleinbuchstaben und Bindestrichen bestehen"
@ -294,7 +294,7 @@ PLUGIN_ADMIN:
ROUTABLE_HELP: "Ob diese Seite mit einer URL aufgerufen werden kann"
CACHING: "Caching"
VISIBLE: "Sichtbar"
VISIBLE_HELP: "Steuert die Sichtbarkeit einer Seite im Menu."
VISIBLE_HELP: "Steuert die Sichtbarkeit einer Seite im Menü."
DISABLED: "Deaktiviert"
ITEMS: "Elemente"
ORDER_BY: "Sortieren nach"
@ -548,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Aktivieren Sie dies, wenn sie sich hinter einem Reverse Proxy befinden und Probleme mit URLs und inkorrekten Ports haben"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ungültiger Frontmatter, speichern nicht möglich"
ADD_FOLDER: "Ordner hinzufügen"
COPY_PAGE: "Seite kopieren"
PROXY_URL: "Proxy-URL"
PROXY_URL_HELP: "Geben Sie den Proxy-HOST oder IP und PORT ein"
NOTHING_TO_SAVE: "Nichts zu speichern"
@ -682,7 +683,7 @@ PLUGIN_ADMIN:
IMAGES_AUTO_FIX_ORIENTATION: "Bildausrichtung automatisch beheben"
IMAGES_AUTO_FIX_ORIENTATION_HELP: "Bildausrichtung anhand der Exif-Daten automatisch beheben"
REDIS_SOCKET: "Redis Socket"
REDIS_SOCKET_HELP: "Der Redis Socket"
REDIS_SOCKET_HELP: "Der Redis-Socket"
NOT_SET: "Nicht eingestellt"
PERMISSIONS: "Zugriffsrechte"
NEVER_CACHE_TWIG: "Twig niemals chachen"
@ -732,13 +733,13 @@ PLUGIN_ADMIN:
2FA_REGEN_HINT: "Das Erneuern des Geheimnisses erfordert es, dass Sie Ihre Authenticator App aktualisieren"
2FA_LABEL: "Admin Zugriff"
2FA_FAILED: "Ungültiger 2-Faktor-Authentifizierungscode, bitte versuchen Sie es erneut..."
2FA_ENABLED: "Zwei-Faktor-Authentifizierung aktiviert"
2FA_ENABLED: "2FA aktiviert"
2FA_CODE_INPUT: "000000"
2FA_SECRET: "Zwei-Faktor-Authentifizierung Geheimnis"
2FA_SECRET: "2FA Geheimnis"
2FA_SECRET_HELP: "Scannen Sie diesen QR-Code in Ihre [Authenticator App] (https://learn.getgrav.org/admin-panel/2fa#apps). Außerdem ist es eine gute Idee, das Geheimnis an einem sicheren Ort zu sichern, falls Sie Ihre App neu installieren müssen. Weitere Informationen finden Sie in den [Grav docs] (https://learn.getgrav.org/admin-panel/2fa) "
2FA_REGENERATE: "Erneuern"
FORCE_LOWERCASE_URLS: "Erzwingen von Kleinbuchstaben-URLs"
FORCE_LOWERCASE_URLS_HELP: "Standardmäßig setzt Grav alle Slugs und Routen in Kleinbuchstaben um. Wenn dieser Wert auf falsch gesetzt wird, können auch Großbuchstaben in Slugs und Routen verwendet werden"
2FA_REGENERATE: "Neu generieren"
FORCE_LOWERCASE_URLS: "Erzwinge URLs in Kleinbuchstaben"
FORCE_LOWERCASE_URLS_HELP: "Standardmäßig setzt Grav alle Slugs und Routen in Kleinbuchstaben. Wenn dieser Wert auf \"false\" gesetzt wird, können auch Großbuchstaben für Slugs und Routen verwendet werden"
INTL_ENABLED: "Intl Modulintegration"
INTL_ENABLED_HELP: "Verwenden Sie das Intl PHP-Modul um UTF8-basierte Sammlungen zu sortieren"
VIEW_SITE_TIP: "Seite anzeigen"
@ -796,14 +797,14 @@ PLUGIN_ADMIN:
LOGS: "Logs"
LOG_VIEWER_FILES: "Log Viewer Dateien"
LOG_VIEWER_FILES_HELP: "Dateien in /logs/ welche unter Werkzeuge - Logs angezeigt werden. z.B. 'grav' = /logs/grav.log"
BACKUPS_STORAGE_PURGE_TRIGGER: "Auslöser für die Leerung des Backupspeichers"
BACKUPS_STORAGE_PURGE_TRIGGER: "Auslöser für Löschung alter Sicherungen"
BACKUPS_MAX_COUNT: "Maximale Anzahl an Sicherungen"
BACKUPS_MAX_COUNT_HELP: "0 = unbegrenzt"
BACKUPS_MAX_SPACE: "Maximaler Speicherplatz für Backups"
BACKUPS_MAX_RETENTION_TIME: "Maximale Gesamtzeit"
BACKUPS_MAX_SPACE: "Maximaler Speicherplatz für Sicherungen"
BACKUPS_MAX_RETENTION_TIME: "Maximale Speicherungsdauer"
BACKUPS_MAX_RETENTION_TIME_APPEND: "in Tagen"
BACKUPS_PROFILE_NAME: "Sicherungsname"
BACKUPS_PROFILE_ROOT_FOLDER: "Stammverzeichnis"
BACKUPS_PROFILE_ROOT_FOLDER: "Stammordner"
BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Kann ein absoluter Pfad oder ein Stream sein"
BACKUPS_PROFILE_EXCLUDE_PATHS: "Pfade ausschließen"
BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Absolute Pfade zum Ausschließen, einer pro Zeile"
@ -816,7 +817,10 @@ PLUGIN_ADMIN:
DEFAULT_LANG: "Standardsprache überschreiben"
DEBUGGER_PROVIDER: "Debugger-Provider"
DEBUGGER_DEBUGBAR: "PHP Debug Bar"
DEBUGGER_CLOCKWORK: "Clockwork-Browser-Erweiterung"
CONTENT_LANGUAGE_FALLBACKS: "Ausweichsprache für Inhalte"
CONTENT_LANGUAGE_FALLBACKS_HELP: "Standardmäßig wird Grav Inhalte in der Standardsprache anzeigen, solange der jeweilige Inhalt nicht übersetzt ist. Verwenden Sie diese Einstellung, um das Verhalten pro Sprache zu überschreiben."
CONTENT_LANGUAGE_FALLBACK: "Fallback-Sprachen"
CONTENT_FALLBACK_LANGUAGE_HELP: "Geben Sie den Sprachcode an, den Sie anpassen möchten."
EXPERIMENTAL: "Experimentell"
FLEX: "Flex-Objekt (EXPERIMENTELL)"
@ -824,12 +828,12 @@ PLUGIN_ADMIN:
FILE: "Datei"
SANITIZE_SVG: "SVG säubern"
SANITIZE_SVG_HELP: "Entfernt XSS-Code aus SVG"
ACCOUNTS: "Konten"
ACCOUNTS: "Benutzerkonten"
USER_ACCOUNTS: "Benutzerkonten"
USER_GROUPS: "Benutzergruppen"
GROUP_NAME: "Gruppenname"
DISPLAY_NAME: "Anzeigename"
ICON: "Symbol"
ICON: "Icon"
ACCESS: "Zugriff"
NO_ACCESS: "Kein Zugriff"
ALLOWED: "Erlaubt"
@ -854,7 +858,7 @@ PLUGIN_ADMIN:
READ: "Lesen"
PUBLISH: "Veröffentlichen"
LIST: "Liste"
ACCESS_SITE: "Site"
ACCESS_SITE: "Website"
ACCESS_SITE_LOGIN: "An der Website anmelden"
ACCESS_ADMIN: "Admin"
ACCESS_ADMIN_LOGIN: "An der Administrationsoberfläche anmelden"
@ -872,16 +876,23 @@ PLUGIN_ADMIN:
ACCESS_ADMIN_USERS: "Benutzer verwalten"
USERS: "Benutzer"
ACL: "Zugriffskontrolle"
FLEX_OBJECT_CACHE_ENABLED: "Objekt-Cache aktivieren"
FLEX_RENDER_CACHE_ENABLED: "Render-Cache aktivieren"
DEBUGGER_CENSORED: "Sensible Daten verbergen"
LANGUAGE_TRANSLATIONS: "Übersetzungen"
RESET: "Zurücksetzen"
LOGOS: "Logos"
PRESETS: "Vorlagen"
COLOR_SCHEME_LABEL: "Farbschema"
COLOR_SCHEME_NAME_PLACEHOLDER: "Blautöne"
PRIMARY_ACCENT_LABEL: "Primärer Farbton"
SECONDARY_ACCENT_LABEL: "Sekundärer Farbton"
TERTIARY_ACCENT_LABEL: "Tertiärer Farbton"
WEB_FONTS_LABEL: "Web-Schriftarten"
HEADER_FONT_LABEL: "Schriftart Kopfzeile"
CUSTOM_CSS_LABEL: "Benutzerdefiniertes CSS"
CUSTOM_FOOTER: "Benutzerdefinierte Fußzeile"
CUSTOM_FOOTER_HELP: "Sie können hier HTML- und/oder Markdown-Syntax verwenden"
LOAD_PRESET: "Voreinstellung laden"
RECOMPILE: "Neu kompilieren"
EXPORT: "Exportieren"
@ -894,19 +905,53 @@ PLUGIN_ADMIN:
BAD_FILENAME: "Ungültiger Dateiname"
SHOW_SENSITIVE: "Sensible Daten anzeigen"
CONFIGURATION: "Einstellungen"
EXTRAS: "Extras"
BASICS: "Grundlagen"
ADMIN_CACHING: "Aktivere Admin Caching"
ADMIN_CACHING_HELP: "Caching für den Admin-Bereich kann unabhängig vom Front-End kontrolliert werden"
ADMIN_PATH: "Administratorpfad"
ADMIN_PATH_HELP: "Wenn Sie die URL für den Administrator ändern möchten, können Sie hier einen Pfad angeben"
LOGO_TEXT: "Logotext"
LOGO_TEXT_HELP: "Text, der anstelle des Standard-Grav-Logos angezeigt wird"
CONTENT_PADDING: "Abstand um Inhalte"
CONTENT_PADDING_HELP: "Abstand um Inhalte aktivieren/deaktivieren um mehr Platz anzubieten"
BODY_CLASSES: "Body-CSS-Klassen"
BODY_CLASSES_HELP: "Fügen Sie einen durch Leerzeichen getrennten Namen benutzerdefinierter Body-CSS-Klassen hinzu"
SIDEBAR_ACTIVATION: "Seitenleistenaktivierung"
SIDEBAR_ACTIVATION_HELP: "Legen Sie fest, wie die Seitenleiste aktiviert wird"
SIDEBAR_HOVER_DELAY_APPEND: "Millisekunde"
SIDEBAR_ACTIVATION_TAB: "Tab"
SIDEBAR_SIZE: "Seitenleistengröße"
SIDEBAR_SIZE_HELP: "Steuert die Breite der Seitenleiste"
SIDEBAR_SIZE_AUTO: "Automatische Breite"
SIDEBAR_SIZE_SMALL: "Kleine Breite"
EDIT_MODE: "Bearbeitungsmodus"
FRONTEND_PREVIEW_TARGET_NEW: "Neuer Tab"
FRONTEND_PREVIEW_TARGET_CURRENT: "Aktueller Tab"
PARENT_DROPDOWN: "Übergeordnete Dropdown-Liste"
PARENT_DROPDOWN_FOLDER: "Ordner anzeigen"
PARENT_DROPDOWN_FULLPATH: "Vollständigen Pfad anzeigen"
PARENTS_LEVELS: "Übergeordnete Ebenen"
PARENTS_LEVELS_HELP: "Anzahl der Ebenen, die in der übergeordneten Auswahlliste angezeigt werden sollen"
MODULAR_PARENTS_HELP: "Zeige modulare Seiten in der übergeordneten Auswahlliste"
SHOW_GITHUB_LINK: "Zeige GitHub Link"
SHOW_GITHUB_LINK_HELP: "Zeige die Nachricht \"Problem gefunden? Bitte melde es auf GitHub\" an."
PAGES_LIST_DISPLAY_FIELD: "Seitenlistenanzeigefeld"
AUTO_UPDATES: "Automatisch nach Updates suchen"
AUTO_UPDATES_HELP: "Zeigt eine informative Nachricht im Admin-Panel, wenn ein Update verfügbar ist."
TIMEOUT: "Zeitüberschreitung"
TIMEOUT_HELP: "Session Timeout in Sekunden"
HIDE_PAGE_TYPES: "Seitentypen im Admin ausblenden"
HIDE_MODULAR_PAGE_TYPES: "Modulare Seitentypen im Admin ausblenden"
DASHBOARD: "Übersicht"
WIDGETS_DISPLAY: "Widget-Anzeigestatus"
NOTIFICATIONS: "Benachrichtigungen"
FEED_NOTIFICATIONS: "Feed-Benachrichtigungen"
BUTTON_BG_HELP: "Schaltflächenhintergrund"
BUTTON_TEXT_HELP: "Schaltflächentext"
BUTTON_COLORS: "Schaltflächenfarben"
LOGO_COLORS: "Logofarben"
PAGE_COLORS: "Seitenfarben"
POPULARITY: "Beliebtheit"
IGNORE_URLS: "Ignorieren"
IGNORE_URLS_HELP: "Zu ignorierende URLs"
@ -914,4 +959,7 @@ PLUGIN_ADMIN:
MONTHLY_HISTORY: "Monatsverlauf"
VISITORS_HISTORY: "Besucherverlauf"
PAGEMEDIA_RESIZER: "> Die folgenden Einstellungen gelten für Bilder, die über die \"Media\" Seite hochgeladen werden. \"Resize Width / Height\" verkleinert ein Bild automatisch und proportional, wenn die voreingestellten Limits überschritten werden. Die Min- und Max-Werte der Auflösung definieren die Größenbereiche für hochgeladene Bilder. Setzen Sie die Felder auf 0, um Manipulationen zu vermeiden."
RESIZE_WIDTH: "Breite ändern"
RESIZE_HEIGHT: "Höhe ändern"
PIXELS: "Pixel"
IMAGES_CLS_AUTO_SIZES: "Automatische Größenanpassung aktivieren"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Αυτή είναι δοκιμαστική έκδοση (beta)! Χρησιμοποιήστε την στην παραγωγή με δική σας ευθύνη..."
ADMIN_REPORT_ISSUE: "Βρήκατε κάποιο πρόβλημα; Παρακαλείστε να το αναφέρετε στο GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\"> με την ισχύ του Grav</a> - Το μοντέρνο CMS χωρίς τη χρήση Βάσης Δεδομένων"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\"> με την ισχύ του Grav</a> - Το μοντέρνο CMS χωρίς τη χρήση Βάσης Δεδομένων"
LOGIN_BTN: "Σύνδεση"
LOGIN_BTN_FORGOT: "Το ξέχασα"
LOGIN_BTN_RESET: "Επαναφορά συνθηματικού"

View File

@ -2,7 +2,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Please enable JavaScript in your browser."
ADMIN_BETA_MSG: "This is a Beta release! Use this in production at your own risk..."
ADMIN_REPORT_ISSUE: "Found an issue? Please report it on GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Login"
LOGIN_BTN_FORGOT: "Forgot"
LOGIN_BTN_RESET: "Reset Password"
@ -394,6 +394,7 @@ PLUGIN_ADMIN:
AUTOESCAPE_VARIABLES: "Autoescape variables"
AUTOESCAPE_VARIABLES_HELP: "Autoescapes all variables. This will break your site most likely"
ASSETS: "Assets"
CSS_ASSETS: "CSS Assets"
CSS_PIPELINE: "CSS pipeline"
CSS_PIPELINE_HELP: "The CSS pipeline is the unification of multiple CSS resources into one file"
CSS_PIPELINE_INCLUDE_EXTERNALS: "Include externals in CSS pipeline"
@ -406,12 +407,21 @@ PLUGIN_ADMIN:
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minify Override for Windows platforms. False by default due to ThreadStackSize"
CSS_REWRITE: "CSS rewrite"
CSS_REWRITE_HELP: "Rewrite any CSS relative URLs during pipelining"
JS_ASSETS: "JavaScript Assets"
JAVASCRIPT_PIPELINE: "JavaScript pipeline"
JAVASCRIPT_PIPELINE_HELP: "The JS pipeline is the unification of multiple JS resources into one file"
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Include externals in JS pipeline"
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "External URLs sometimes have relative file references and shouldn't be pipelined"
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "JS pipeline render first"
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Render the JS pipeline before any other JS references that are not included"
JS_MODULE_ASSETS: "JavaScript Module Assets"
JAVASCRIPT_MODULE_PIPELINE: "JavaScript Module pipeline"
JAVASCRIPT_MODULE_PIPELINE_HELP: "The JS Module pipeline is the unification of multiple JS resources into one file"
JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS: "Include externals in JS Module pipeline"
JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS_HELP: "External URLs sometimes have relative file references and shouldn't be pipelined"
JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES: "JS Module pipeline render first"
JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES_HELP: "Render the JS pipeline before any other JS references that are not included"
GENERAL_CONFIG: "General Asset Configuration"
JAVASCRIPT_MINIFY: "JavaScript minify"
JAVASCRIPT_MINIFY_HELP: "Minify the JS during pipelining"
ENABLED_TIMESTAMPS_ON_ASSETS: "Enable timestamps on assets"
@ -551,6 +561,8 @@ PLUGIN_ADMIN:
COPY_PAGE: "Copy Page"
PROXY_URL: "Proxy URL"
PROXY_URL_HELP: "Enter the proxy HOST or IP and PORT"
PROXY_CERT: "Proxy Certificate Path"
PROXY_CERT_HELP: "Local path to folder containing proxy certificate pem file"
NOTHING_TO_SAVE: "Nothing to Save"
FILE_ERROR_ADD: "An error occurred while trying to add the file"
FILE_ERROR_UPLOAD: "An error occurred while trying to upload the file"
@ -578,12 +590,20 @@ PLUGIN_ADMIN:
UPDATING_PACKAGES: "Updating package(s).."
PACKAGES_SUCCESSFULLY_UPDATED: "Package(s) successfully updated."
UPDATING: "Updating"
GPM_SECTION: "GPM Section"
GPM_RELEASES: "GPM Releases"
GPM_RELEASES_HELP: "Choose 'Testing' to install beta or testing versions"
GPM_METHOD: "Remote Fetch Method"
GPM_METHOD_HELP: "When set to Auto, Grav will determine if fopen is available and use it, otherwise fall back to cURL. To force the use of one or the other switch the setting."
GPM_VERIFY_PEER: "Remote Verify Peer (SSL)"
GPM_VERIFY_PEER_HELP: "Some providers seems to fail verifying getgrav.org SSL certificate, causing GPM to not work. If this is the case for you, turning off this setting might help"
HTTP_SECTION: "HTTP Section"
SSL_ENABLE_PROXY: "Enable Proxy Server"
SSL_VERIFY_PEER: "Remote Verify Peer"
SSL_VERIFY_PEER_HELP: "Some may fail verifying SSL certificates"
SSL_VERIFY_HOST: "Remote Verify Host"
SSL_VERIFY_HOST_HELP: "Some may fail verifying SSL certificates"
HTTP_CONNECTIONS: "HTTP Connections"
HTTP_CONNECTIONS_HELP: "The number of concurrent HTTP connections during multiplexed requests"
MISC_SECTION: "Miscellaneous Section"
AUTO: "Auto"
FOPEN: "fopen"
CURL: "cURL"
@ -738,6 +758,9 @@ PLUGIN_ADMIN:
2FA_SECRET: "2FA Secret"
2FA_SECRET_HELP: "Scan this QR code into your [Authenticator App](https://learn.getgrav.org/admin-panel/2fa#apps). Also it's a good idea to backup the secret in a safe location, in case you need to reinstall your app. Check the [Grav docs](https://learn.getgrav.org/admin-panel/2fa) for more information "
2FA_REGENERATE: "Regenerate"
YUBIKEY_ID: "YubiKey ID"
YUBIKEY_OTP_INPUT: "YubiKey OTP"
YUBIKEY_HELP: "Insert your YubiKey into your computer and click the button to generate an OTP. The first 12 chars are your client ID and will be saved."
FORCE_LOWERCASE_URLS: "Force lowercase URLs"
FORCE_LOWERCASE_URLS_HELP: "By default Grav will set all slugs and routes to be lowercase. With this set to false, Uppercase slugs and routes can be used"
INTL_ENABLED: "Intl module integration"
@ -771,7 +794,7 @@ PLUGIN_ADMIN:
SCHEDULER_JOBS: "Custom Scheduler Jobs"
SCHEDULER_STATUS: "Scheduler Status"
SCHEDULER_RUNAT: "Run At"
SCHEDULER_RUNAT_HELP: "Cron formatted 'at' syntax"
SCHEDULER_RUNAT_HELP: "Cron formatted 'at' syntax. NOTE: All times are UTC!"
SCHEDULER_OUTPUT: "Output File"
SCHEDULER_OUTPUT_HELP: "The path/filename of the output file (from the root of the Grav installation)"
SCHEDULER_OUTPUT_TYPE: "Output Type"
@ -1112,3 +1135,5 @@ PLUGIN_ADMIN:
ENABLE: Enable
PLUGINS_MUST_BE_ENABLED: "Plugin must be enabled to configure"
ACTIVATION_REQUIRED: "Activation required to configure"
SESSION_SECURE_HTTPS: "Secure (HTTPS)"
SESSION_SECURE_HTTPS_HELP: "Set session secure on HTTPS but not on HTTP. Has no effect if you have above Secure setting set to true. Set to false if your site jumps between HTTP and HTTPS."

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Tio ĉi estas beta-versio! Uzi ĝin en produkta medio estas je via propra risko..."
ADMIN_REPORT_ISSUE: "Ĉu vi trovis problemon? Bonvolu raporti ĝin ĉe GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Povigita de Grav</a> - La moderna platdosiera CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Povigita de Grav</a> - La moderna platdosiera CMS"
LOGIN_BTN: "Ensaluti"
LOGIN_BTN_FORGOT: "Forgesita"
LOGIN_BTN_RESET: "Restarigi pasvorton"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Por favor, habilita JavaScript en tu navegador."
ADMIN_BETA_MSG: "¡Ésta es una versión Beta! Utilízala en producción bajo tu propio riesgo..."
ADMIN_REPORT_ISSUE: "¿Encontraste algún problema de funcionamiento? Por favor, repórtalo en GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Generado con Grav</a> - El CMS moderno de archivos planos"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Generado con Grav</a> - El CMS moderno de archivos planos"
LOGIN_BTN: "Acceder"
LOGIN_BTN_FORGOT: "La olvidé"
LOGIN_BTN_RESET: "Restablecer contraseña"
@ -416,6 +416,8 @@ PLUGIN_ADMIN:
JAVASCRIPT_MINIFY_HELP: "Minificar JS en canalización"
ENABLED_TIMESTAMPS_ON_ASSETS: "Habilitar las marcas de tiempo en activos"
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Habilitar las marcas de tiempo en los recursos"
ENABLED_SRI_ON_ASSETS: "Activar SRI en recursos"
ENABLED_SRI_ON_ASSETS_HELP: "Activa SRI de recursos"
COLLECTIONS: "Colecciones"
ERROR_HANDLER: "Manejador de Errores"
DISPLAY_ERRORS: "Mostrar errores"
@ -546,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Habilitar esta opción si esta usted detras de un proxy reverso y usted tiene problemas con URLs que contienen puertos incorrectos"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmater no válido, no se pudo guardar"
ADD_FOLDER: "Agregar carpeta"
COPY_PAGE: "Copiar página"
PROXY_URL: "Dirección URL del Proxy"
PROXY_URL_HELP: "Escribir el host o IP y puerto del Proxy"
NOTHING_TO_SAVE: "Nada que Guardar"
@ -828,6 +831,7 @@ PLUGIN_ADMIN:
CONTENT_LANGUAGE_FALLBACK_HELP: "Por favor, introduce la lista de códigos de lenguaje. Notar que si se omite el código del lenguaje por defecto, este no sera usado. "
CONTENT_FALLBACK_LANGUAGE_HELP: "Especifica el código del lenguaje que quieres personalizar."
EXPERIMENTAL: "Experimental"
PAGES_TYPE: "Tipo de página de inicio"
PAGES_TYPE_HELP: "Esta opción habilita las páginas Flex Object en el front-end. Las páginas tipo Flex en el Admin, requieren del plugin Flex Objects"
ACCOUNTS_TYPE: "Tipo de Cuenta"
ACCOUNTS_TYPE_HELP: "Sistema Flex Object para almacenar cuentas de usuario"
@ -891,22 +895,66 @@ PLUGIN_ADMIN:
ACCESS_ADMIN_USERS: "Administrar usuarios"
USERS: "Usuarios"
ACL: "Control de Acceso"
FLEX_CACHING: "Caché Flex"
FLEX_INDEX_CACHE_ENABLED: "Habilitar caché de índices"
FLEX_INDEX_CACHE_LIFETIME: "Duración de la caché del índice (segundos)"
FLEX_OBJECT_CACHE_ENABLED: "Habilitar caché de objetos"
FLEX_OBJECT_CACHE_LIFETIME: "Duración de la caché de objetos (segundos)"
FLEX_RENDER_CACHE_ENABLED: "Habilitar caché de procesamiento"
FLEX_RENDER_CACHE_LIFETIME: "Duración de la caché de procesamiento (segundos)"
DEBUGGER_CENSORED: "Censurar datos sensibles"
DEBUGGER_CENSORED_HELP: "SOLAMENTE para Clockwork: Si se selecciona sí, censurar información potencialmente sensible (parámetros POST, cookies, archivos, configuraciones y la mayoría de datos array/objetos en los mensajes de registro)."
LANGUAGE_TRANSLATIONS: "Traducciones"
LANGUAGE_TRANSLATIONS_HELP: "Si es falso, las keys de traducción son usadas en vez de los strings traducidos. Esta característica puede ser usada para ayudar a arreglar traducciones incorrectas o para encontrar strings en Inglés dentro del código."
STRICT_BLUEPRINT_COMPAT: "Compatibilidad de planos"
STRICT_BLUEPRINT_COMPAT_HELP: "Habilita el soporte estricto compatible con versiones anteriores de los planos. Si se desactiva, el nuevo comportamiento hace que la validación del formulario falle si hay datos extra que no están definidos en el plano."
RESET: "Restablecer"
LOGOS: "Logos"
PRESETS: "Plantillas"
COLOR_SCHEME_LABEL: "Paleta de colores"
COLOR_SCHEME_HELP: "Elige una paleta de colores de una lista de combinaciones predefinidas, o agrega una con tu propio estilo."
COLOR_SCHEME_NAME: "Nombre de la paleta de colores personalizada"
COLOR_SCHEME_NAME_HELP: "Dale un nombre a tu tema personalizado para exportarlo y compartirlo."
COLOR_SCHEME_NAME_PLACEHOLDER: "Tonos de Azul"
PRIMARY_ACCENT_LABEL: "Acento principal"
PRIMARY_ACCENT_HELP: "Selecciona qué color debe usar el acento principal en su esquema de color"
SECONDARY_ACCENT_LABEL: "Acento secundario"
SECONDARY_ACCENT_HELP: "Selecciona qué color debe usar el acento secundario en su esquema de color"
TERTIARY_ACCENT_LABEL: "Acento terciario"
TERTIARY_ACCENT_HELP: "Selecciona qué color debe usar el acento terciario en su esquema de color"
WEB_FONTS_LABEL: "Fuentes Web"
WEB_FONTS_HELP: "Usar fuentes web personalizadas"
HEADER_FONT_LABEL: "Fuente de encabezado"
HEADER_FONT_HELP: "Fuente usada para los encabezados, nav lateral y títulos de sección"
BODY_FONT_LABEL: "Fuente del cuerpo"
BODY_FONT_HELP: "Fuente principal usada a lo largo del cuerpo del tema"
CUSTOM_CSS_LABEL: "CSS personalizado"
CUSTOM_CSS_PLACEHOLDER: "Pon tu CSS personalizado aquí..."
CUSTOM_CSS_HELP: "CSS personalizado que se añadirá a cada página de administración"
CUSTOM_FOOTER: "Pie de página personalizado"
CUSTOM_FOOTER_HELP: "Puedes utilizar HTML y/o Markdown aquí"
CUSTOM_FOOTER_PLACEHOLDER: "Introduce HTML/Markdown para anular el pie de página predeterminado"
LOGIN_SCREEN_CUSTOM_LOGO_LABEL: "Logo personalizado en inicio de sesión"
TOP_LEFT_CUSTOM_LOGO_LABEL: "Logo personalizado principal"
LOAD_PRESET: "Cargar preestablecido"
RECOMPILE: "Recompilar"
EXPORT: "Exportar"
CODEMIRROR: "Editor CodeMirror"
CODEMIRROR_THEME: "Tema del editor"
CODEMIRROR_THEME_DESC: "**NOTA:** Usar el [CodeMirror Themes Demo](https://codemirror.net/demo/theme.html?target=_blank) para verlos en acción. **_Paper_** es el tema que Grav trae por defecto."
CODEMIRROR_FONTSIZE: "Tamaño de fuente del editor"
CODEMIRROR_FONTSIZE_SM: "Fuente pequeña"
CODEMIRROR_FONTSIZE_MD: "Fuente mediana"
CODEMIRROR_FONTSIZE_LG: "Fuente grande"
CODEMIRROR_MD_FONT: "Fuente del editor Markdown"
CODEMIRROR_MD_FONT_SANS: "Fuente Sans"
CODEMIRROR_MD_FONT_MONO: "Fuente monoespaciada/ancho fijo"
CUSTOM_PRESETS: "Preajustes personalizados"
CUSTOM_PRESETS_HELP: "Arrastra un archivo .yaml del tema aquí, o puedes crear un array de preajustes con claves basadas en texto"
CUSTOM_PRESETS_PLACEHOLDER: "Coloca tus preajustes aquí"
GENERAL: "General"
CONTENT_EDITOR: "Editor de Contenido"
CONTENT_EDITOR_HELP: "Se pueden utilizar editores personalizados para la edición de contenidos"
BAD_FILENAME: "Nombre de archivo incorrecto"
SHOW_SENSITIVE: "Mostrar Datos Sensibles"
VALID_LINK_ATTRIBUTES: "Atributos de Enlace Válidos"
@ -934,4 +982,8 @@ PLUGIN_ADMIN:
DASHBOARD: "Panel"
NOTIFICATIONS: "Notificaciones"
PLUGINS_NOTIFICATIONS: "Notificaciones de Extensiones"
TOOLBAR_TEXT_HELP: "Texto de la barra de herramientas"
PAGE_BG_HELP: "Fondo de página"
PAGE_TEXT_HELP: "Texto de página"
PAGE_LINK_HELP: "Enlace de página"
PAGEMEDIA_RESIZER: "> Los siguientes ajustes se aplican a las imágenes subidas a través de la página media. El sistema de Redimensionamiento ancho / altura le hara de forma automática hacia el valor mas bajo y y guardando las proporciones de una imagen si esta excede los límites establecidos en la configuración. Los valores máximos de resolución definen los rangos de tamaño para las imágenes subidas. Establezca eso valores a 0 para evitar cualquier manipulación."

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Tegemist on beeta-versiooniga! Kasutamine töötaval veebilehel oma vastutusel..."
ADMIN_REPORT_ISSUE: "Leidsid mõne vea? Palun anna sellest teada GitHub-i vahendusel."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\"> Veebileht kasutab Grav'i</a> - kaasaegset failipõhist CMS-i"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\"> Veebileht kasutab Grav'i</a> - kaasaegset failipõhist CMS-i"
LOGIN_BTN: "Logi sisse"
LOGIN_BTN_FORGOT: "Unusta"
LOGIN_BTN_RESET: "Lähtesta salasõna"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Beta bertsio bat da hau! Produkzioan erabili ezazu zure ardurapean..."
ADMIN_REPORT_ISSUE: "Arazoren bat topatu duzu? Mesedez, horren berri eman GitHub-en."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Grav-ekin eginda</a> - Fitxategi lauzko CMS modernoa"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Grav-ekin eginda</a> - Fitxategi lauzko CMS modernoa"
LOGIN_BTN: "Sartu"
LOGIN_BTN_FORGOT: "Ahaztu"
LOGIN_BTN_RESET: "Berrezarri pasahitza"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "لطفاً جاوا اسکریپت را در مرورگرتان فعال کنید."
ADMIN_BETA_MSG: "این یک نسخه تکمیل نشده است! استفاده از آن در محصولتان شمارا با خطر مواجه میکند..."
ADMIN_REPORT_ISSUE: "یک مشکل پیدا شد؟ لطفاً آن را در گیت هاب گزارش کنید."
EMAIL_FOOTER: "قدرت گرفته از <a href=\"http://getgrav.org\">گراو</a> - سامانه مدیریت محتوی مدرن و بی نیاز به پایگاه داده"
EMAIL_FOOTER: "قدرت گرفته از <a href=\"https://getgrav.org\">گراو</a> - سامانه مدیریت محتوی مدرن و بی نیاز به پایگاه داده"
LOGIN_BTN: "ورود"
LOGIN_BTN_FORGOT: "فراموش کرده اید"
LOGIN_BTN_RESET: "تنظیم مجدد رمز عبور"
@ -760,6 +760,9 @@ PLUGIN_ADMIN:
SCHEDULER_EMAIL: "رایانامه"
SECURITY: "امنیت"
REPORTS: "گزارش‌ها"
BACKUPS_MAX_COUNT: "حداکثر تعداد پشتیبان‌ها"
BACKUPS_MAX_COUNT_HELP: "0 نامحدود است"
BACKUPS_PROFILE_NAME: "نام پشتيبان"
BACKUPS_PROFILE_ROOT_FOLDER: "پوشه اصلی"
BACKUPS_PROFILE_ROOT_FOLDER_HELP: "می تواند یک مسیر منسوخ یا یک جریان (stream) باشد"
BACKUPS_PROFILE_EXCLUDE_PATHS: "مسیر های مستثنا"
@ -777,6 +780,8 @@ PLUGIN_ADMIN:
NO_ROUTE_PROVIDED: "مسیری ارائه نشده"
EXPERIMENTAL: "آزمایشی"
PAGES_TYPE: "نوع صفحه Frontend"
ACCOUNTS_TYPE: "نوع حساب‌ها"
ACCOUNTS_STORAGE: "فضا حساب"
REGULAR: "عادی"
FILE: "فایل"
SANITIZE_SVG: "تمیز کردن SVG"
@ -795,6 +800,34 @@ PLUGIN_ADMIN:
MODULE: "ماژول"
NON_MODULE: "غیر ماژول"
ADD_MODULE: "افزودن ماژول"
MODULE_SETUP: "نصب ماژول"
MODULE_TEMPLATE: "قالب ماژول"
ADD_MODULE_CONTENT: "اضافه کردن محتوا ماژول"
CHANGELOG: "لیست تغییرات"
PAGE_ACCESS: "دسترسی صفحه"
PAGE PERMISSIONS: "مجوز‌های صفحه"
PAGE_AUTHORS: "نویسنده‌های صفحه"
PAGE_GROUPS: "گروه‌های صفحه"
PAGE_GROUPS_HELP: "کاربران گروه‌های صفحه دسترسی ویژه‌ای به این صفحه دارند."
READ: "خواندن"
PUBLISH: "انتشار"
LIST: "ليست"
ACCESS_SITE: "وب‌سایت"
ACCESS_SITE_LOGIN: "ورود به سایت"
ACCESS_ADMIN: "مدیریت"
ACCESS_ADMIN_LOGIN: "ورود به مدیریت"
ACCESS_ADMIN_SUPER: "کاربر ارشد"
ACCESS_ADMIN_CACHE: "پاک کردن حافظه نهان"
ACCESS_ADMIN_CONFIGURATION: "تنظیمات"
ACCESS_ADMIN_CONFIGURATION_SYSTEM: "مدیریت تنظیمات سیستم"
ACCESS_ADMIN_CONFIGURATION_SITE: "مدیریت تنظیمات سایت"
ACCESS_ADMIN_CONFIGURATION_MEDIA: "مدیریت تنظیمات رسانه"
ACCESS_ADMIN_CONFIGURATION_INFO: "اطلاعات سرور را ببینید"
ACCESS_ADMIN_SETTINGS: "تنظيمات"
ACCESS_ADMIN_PAGES: "مدیریت صفحات"
ACCESS_ADMIN_MAINTENANCE: "تعمیر سایت"
ACCESS_ADMIN_STATISTICS: "آمار سایت"
ACCESS_ADMIN_THEMES: "مدیریت پوسته‌ها"
ACCESS_ADMIN_TOOLS: "دسترسی به ابزار"
ACCESS_ADMIN_USERS: "مدیریت کاربران"
USERS: "کاربران"
@ -813,6 +846,8 @@ PLUGIN_ADMIN:
PRESETS: "از پیش تعیین شده ها"
COLOR_SCHEME_LABEL: "رنگ بندی"
COLOR_SCHEME_NAME_PLACEHOLDER: "سایه های آبی"
PRIMARY_ACCENT_LABEL: "لهجه اولیه"
SECONDARY_ACCENT_LABEL: "لهجه ثانویه"
WEB_FONTS_LABEL: "فونت های وب"
WEB_FONTS_HELP: "استفاده از قلم های سفارشی وب"
HEADER_FONT_LABEL: "قلم سرتیتر"
@ -820,6 +855,8 @@ PLUGIN_ADMIN:
BODY_FONT_LABEL: "قلم متن (بادی)"
BODY_FONT_HELP: "قلم اصلی مورد استفاده در بدنه متون در قالب"
CUSTOM_CSS_LABEL: "CSS سفارشی"
CUSTOM_FOOTER: "پاورقی سفارشی"
CODEMIRROR_THEME: "ویرایش پوسته"
CODEMIRROR_FONTSIZE: "اندازه قلم ویرایشگر"
CODEMIRROR_FONTSIZE_SM: "قلم کوچک"
CODEMIRROR_FONTSIZE_MD: "قلم متوسط"
@ -827,6 +864,8 @@ PLUGIN_ADMIN:
CODEMIRROR_MD_FONT: "قلم ویرایشگر مارک دان"
CODEMIRROR_MD_FONT_SANS: "قلم های سانس"
CODEMIRROR_MD_FONT_MONO: "عرض دوگانه یا ثابت قلم"
GENERAL: "عمومی"
CONTENT_EDITOR: "ويرايشگر محتوا"
CONFIGURATION: "پیکربندی"
ADMIN_CACHING: "فعالسازی کش مدیریت"
ADMIN_CACHING_HELP: "کش مدیریت میتواند به صورت مستقل از سایت جلویی کنترل شوذ"

View File

@ -1,8 +1,9 @@
---
PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Ota JavaScript käyttöön selaimessasi."
ADMIN_BETA_MSG: "Tämä on beta-versio! Käyttö tuotannossa omalla vastuulla..."
ADMIN_REPORT_ISSUE: "Löysitkö virheen tai puutteen? Ilmoita siitä Github-palveluun."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Tehty Gravilla</a> - Moderni Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Tehty Gravilla</a> - Moderni Flat File CMS"
LOGIN_BTN: "Kirjaudu sisään"
LOGIN_BTN_FORGOT: "Unohditko"
LOGIN_BTN_RESET: "Nollaa salasana"
@ -105,8 +106,8 @@ PLUGIN_ADMIN:
GRAV_ADMIN: "Grav admin"
GRAV_OFFICIAL_PLUGIN: "Grav: n virallinen lisäosa"
GRAV_OFFICIAL_THEME: "Grav: n virallinen teema"
PLUGIN_SYMBOLICALLY_LINKED: "Tämä lisäosa on symbolisesti yhteydessä. Päivityksiä ei tulla haivaitsemaan."
THEME_SYMBOLICALLY_LINKED: "Tämä teema on symbolisesti yhteydessä. Päivityksiä ei tulla haivaitsemaan"
PLUGIN_SYMBOLICALLY_LINKED: "Tämä lisäosa on symbolisesti linkitetty. Päivityksiä ei tulla havaita."
THEME_SYMBOLICALLY_LINKED: "Tämä teema on symbolisesti linkitetty. Päivityksiä ei havaita"
REMOVE_PLUGIN: "Poista lisäosa"
INSTALL_PLUGIN: "Asenna lisäosa"
AVAILABLE: "Saatavilla"
@ -178,7 +179,7 @@ PLUGIN_ADMIN:
LANGUAGE: "Kieli"
ACCOUNT: "Käyttäjätili"
EMAIL_VALIDATION_MESSAGE: "Sähköpostin pitää olla validi"
PASSWORD_VALIDATION_MESSAGE: "Salasanan pitää sisältää vähintään yhden numeron ja yhden ison kirjaimen ja pienen kirjaimen sekä pituus pitää olla 8 tai enemmän merkkejä"
PASSWORD_VALIDATION_MESSAGE: "Salasanan tulee sisältää vähintään yksi numero ja yksi iso ja pieni kirjain, ja olla vähintään 8 merkkiä pitkä"
LANGUAGE_HELP: "Aseta suosikki kieli"
MEDIA: "Media"
DEFAULTS: "Oletukset"
@ -216,9 +217,12 @@ PLUGIN_ADMIN:
SESSION: "Istunto"
IS_NOW_AVAILABLE: "on nyt saatavilla"
UPDATE_GRAV_NOW: "Päivitä Grav nyt"
GRAV_SYMBOLICALLY_LINKED: "Grav on symbolisesti linkitetty. Päivitys ei ole käytettävissä"
SAVE_AS: "Tallenna nimellä"
UPDATE_AVAILABLE: "Päivitys saatavilla"
USERNAME_HELP: "Käyttäjänimen tulee olla 316 merkkiä pitkä ja sisätää pieniä kirjaimia, numeroita, alaviivoja tai väliviivoja. Isot kirjaimet, välilyönnit ja erikoismerkit eivät ole sallittuja"
FULLY_UPDATED: "Täysin päivitetty"
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Arvaa automaattisesti"
HTTP_ACCEPT_LANGUAGE: "Aseta kieli selaimesta"
IGNORE_HIDDEN: "Ohita piilotetut"
GROUPS: "Ryhmät"
@ -227,6 +231,7 @@ PLUGIN_ADMIN:
ADD_FOLDER: "Lisää kansio"
FILE_UNSUPPORTED: "Tiedostotyyppiä ei tueta"
ADD_ITEM: "Lisää kohde"
INSTALLING: "Asennetaan"
LOADING: "Lataa.."
PACKAGES_SUCCESSFULLY_INSTALLED: "Paketti/-it asennettu onnistuneesti."
UPDATING: "Päivitetään"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Veuillez activer JavaScript pour votre navigateur."
ADMIN_BETA_MSG: "Ceci est une version bêta ! Utilisez-là en production à vos risques et périls..."
ADMIN_REPORT_ISSUE: "Vous avez rencontré une anomalie ? Veuillez la signaler sur GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Propulsé par Grav</a> - Le CMS Moderne sans base de données"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Propulsé par Grav</a> - Le CMS Moderne sans base de données"
LOGIN_BTN: "Connexion"
LOGIN_BTN_FORGOT: "Mot de passe oublié"
LOGIN_BTN_RESET: "Réinitialiser le mot de passe"
@ -47,6 +47,7 @@ PLUGIN_ADMIN:
CLOSE: "Fermer"
CANCEL: "Annuler"
CONTINUE: "Continuer"
CONFIRM: "Confirmer"
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmation requise"
MODAL_CHANGED_DETECTED_TITLE: "Modifications détectées"
MODAL_CHANGED_DETECTED_DESC: "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter sans enregistrer ?"
@ -70,6 +71,7 @@ PLUGIN_ADMIN:
LICENSE: "Licence "
DESCRIPTION: "Description "
README: "Lisez-moi "
DOCS: "Documentation"
REMOVE_THEME: "Supprimer le thème"
INSTALL_THEME: "Installer le thème"
THEME: "Thème "
@ -99,7 +101,7 @@ PLUGIN_ADMIN:
BACKUPS_NEWEST: "Dernière sauvegarde"
BACKUPS_OLDEST: "Sauvegarde plus ancienne"
BACKUPS_PURGE: "épurer ou purger"
BACKUPS_NOT_GENERATED: "Aucune sauvegarde générée pour l'instant..."
BACKUPS_NOT_GENERATED: "Aucune sauvegarde générée pour l'instant"
BACKUPS_PURGE_NUMBER: "Utilisation %s de %s emplacements de sauvegardes"
BACKUPS_PURGE_TIME: "%s jours de sauvegarde restants"
BACKUPS_PURGE_SPACE: "Utilisation de %s de %s"
@ -107,6 +109,7 @@ PLUGIN_ADMIN:
BACKUP_NOT_FOUND: "Sauvegarde introuvable"
BACKUP_DATE: "Date de sauvegarde"
STATISTICS: "Statistiques"
VIEWS_STATISTICS: "Afficher les statistiques"
TODAY: "Aujourd'hui"
WEEK: "Semaine"
MONTH: "Mois"
@ -193,7 +196,7 @@ PLUGIN_ADMIN:
EVERYTHING_UPDATED: "Tout est à jour"
UPDATES_FAILED: "Les mises à jour ont échoué"
AVATAR_BY: "Avatar par"
AVATAR_UPLOAD_OWN: "Ou chargez le votre..."
AVATAR_UPLOAD_OWN: "Ou chargez le votre"
LAST_BACKUP: "Dernière sauvegarde"
FULL_NAME: "Nom complet"
USERNAME: "Nom d'utilisateur"
@ -344,6 +347,7 @@ PLUGIN_ADMIN:
EXPIRES_HELP: "Définit l'expiration de l'en-tête. La valeur est en secondes."
CACHE_CONTROL: "Contrôle du cache HTTP"
CACHE_CONTROL_HELP: "Définissez une valeur de cache-control valide telle que `no-cache, no-store, must-revalidate`"
CACHE_CONTROL_PLACEHOLDER: "par exemple : public, max-age=31536000"
LAST_MODIFIED: "Last modified"
LAST_MODIFIED_HELP: "Définit l'en-tête 'Last modified' pouvant améliorer l'optimisation du cache des proxies et navigateurs"
ETAG: "ETag"
@ -412,6 +416,8 @@ PLUGIN_ADMIN:
JAVASCRIPT_MINIFY_HELP: "Minification du JS durant la procédure de concaténation"
ENABLED_TIMESTAMPS_ON_ASSETS: "Active l'horodatage des assets"
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Active l'horodatage des assets"
ENABLED_SRI_ON_ASSETS: "Activer SRI sur les actifs"
ENABLED_SRI_ON_ASSETS_HELP: "Activer SRI des actifs"
COLLECTIONS: "Collections"
ERROR_HANDLER: "Gestionnaire des erreurs"
DISPLAY_ERRORS: "Afficher les erreurs"
@ -434,6 +440,8 @@ PLUGIN_ADMIN:
CACHE_ALL_HELP: "Gérer toutes les images via le système de cache de Grav même si il n'y pas de manipulations de média"
IMAGES_DEBUG: "Filigrane de débogage d'image"
IMAGES_DEBUG_HELP: "Affiche une incrustation sur les images indiquant la profondeur de pixel de l'image lorsque l'on travaille avec retina par exemple."
IMAGES_LOADING: "Comportement du chargement de l'image"
IMAGES_LOADING_HELP: "L'attribut de chargement permet au navigateur de reporter le chargement des images et des iframes hors écran jusqu'à ce que les utilisateurs fassent defiler la page à leur proximité. Le chargement prend en charge trois valeurs : auto, lazy, eager"
IMAGES_SEOFRIENDLY: "Noms d'images optimisés SEO"
IMAGES_SEOFRIENDLY_HELP: "Lorsque activé, le nom de l'image est affiché en premier, puis un condensé plus petit pour refléter les opérations traitées"
UPLOAD_LIMIT: "Taille limite d'envoi pour un fichier"
@ -473,7 +481,7 @@ PLUGIN_ADMIN:
PAGE_FILE: "Template de page"
PAGE_FILE_HELP: "Le nom du fichier template de la page, et par défaut, le template d'affichage pour cette page"
NO_USER_ACCOUNTS: "Aucun compte utilisateur trouvé. Veuillez en créer un..."
NO_USER_EXISTS: "Aucun utilisateur local n'existe pour ce compte, impossible de sauvegarder..."
NO_USER_EXISTS: "Aucun utilisateur local n'existe pour ce compte, impossible de sauvegarder"
REDIRECT_TRAILING_SLASH: "Slash final de redirection"
REDIRECT_TRAILING_SLASH_HELP: "Effectue une redirection de type 301 au lieu de traiter de façon transparente le slash final d'URI."
DEFAULT_DATE_FORMAT: "Format de date des pages"
@ -494,6 +502,8 @@ PLUGIN_ADMIN:
PLUGIN_STATUS: "Statut du plugin"
INCLUDE_DEFAULT_LANG: "Inclure la langue par défaut"
INCLUDE_DEFAULT_LANG_HELP: "Toutes les URL de langue seront préfixées avec la langue par défaut. ex : `/fr/blog/mon-post`"
INCLUDE_DEFAULT_LANG_FILE_EXTENSION: "Inclure la langue par défaut dans l'extension de fichier"
INCLUDE_DEFAULT_LANG_HELP_FILE_EXTENSION: "Si activé, la langue par défaut sera ajoutée à l'extension de fichier (par exemple `.en.md`). Désactivez-la pour laisser la langue par défaut utiliser l'extension de fichier `.md`."
PAGES_FALLBACK_ONLY: "Pages de secours uniquement"
PAGES_FALLBACK_ONLY_HELP: "Seul 'repli' pour trouver le contenu de la page à travers les langues supportées, le comportement par défaut est d'afficher n'importe quelle langue trouvée si la langue active manque."
ALLOW_URL_TAXONOMY_FILTERS: "Filtres de taxonomie d'URL"
@ -538,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Activer si vous êtes derrière un proxy inversé et que vous rencontrez des problèmes avec les URL contenant des ports incorrects."
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter non valide, enregistrement impossible"
ADD_FOLDER: "Ajouter un dossier"
COPY_PAGE: "Copier la page"
PROXY_URL: "URL du proxy"
PROXY_URL_HELP: "Indiquez le proxy HÔTE ou l'IP et le PORT"
NOTHING_TO_SAVE: "Rien à enregistrer"
@ -632,16 +643,20 @@ PLUGIN_ADMIN:
REDIS_PORT: "Port Redis"
REDIS_PORT_HELP: "Le port du serveur Redis"
REDIS_PASSWORD: "mot de passe/secret Redis"
REDIS_DATABASE: "ID de la base de données Redis"
REDIS_DATABASE_HELP: "ID d'instance de la base de données Redis"
ALL: "Tous"
FROM: "de"
TO: "à"
RELEASE_DATE: "Date de sortie"
SORT_BY: "Trier par"
RESOURCE_FILTER: "Filtre..."
RESOURCE_FILTER: "Filtre"
FORCE_SSL: "Forcer SSL"
FORCE_SSL_HELP: "Forcer SSL globalement. Si activé, lorsque le site est accessible via HTTP, Grav envoie une redirection vers la page HTTPS."
NEWS_FEED: "Fil d'actualité"
EXTERNAL_URL: "URL externe"
SESSION_SAMESITE: "Attribut de session SameSite"
SESSION_SAMESITE_HELP: "Lax|Strict|None . Voir https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Set-Cookie/SameSite pour plus d'informations"
CUSTOM_BASE_URL: "URL de base personnalisée"
CUSTOM_BASE_URL_HELP: "À utiliser si vous souhaitez réécrire le domaine du site ou utiliser un sous-dossier différent de celui utilisé par Grav. Par exemple : http://localhost"
FILEUPLOAD_PREVENT_SELF: 'Impossible dutiliser "%s" en dehors des pages.'
@ -717,7 +732,7 @@ PLUGIN_ADMIN:
2FA_INSTRUCTIONS: "##### Authentification à deux facteurs\nL'**authentification à deux facteurs** est activée sur ce compte. Veuillez utiliser l'application **A2F** pour entrer le **code à 6 chiffres** actuel afin de terminer le processus de connexion."
2FA_REGEN_HINT: "Si vous regénérez la clef d'authentification, vous devrez mettre à jour la configuration de votre application d'authentification en deux étapes"
2FA_LABEL: "Accès administrateur"
2FA_FAILED: "Code d'authentification 2-Factor invalide, veuillez réessayer..."
2FA_FAILED: "Code d'authentification à deux facteurs invalide, veuillez réessayer…"
2FA_ENABLED: "A2F activée"
2FA_CODE_INPUT: "000000"
2FA_SECRET: "Clef d'authentification pour l'application A2F"
@ -748,8 +763,11 @@ PLUGIN_ADMIN:
SCHEDULER: "Planificateur"
SCHEDULER_INSTALL_INSTRUCTIONS: "Instructions d'installation"
SCHEDULER_INSTALLED_READY: "Installé et prêt"
SCHEDULER_CRON_NA: "Cron indisponible pour l'utilisateur : <b>%s</b>"
SCHEDULER_NOT_ENABLED: "Désactivé pour l'utilisateur : <b>%s</b>"
SCHEDULER_SETUP: "Configuration du planificateur"
SCHEDULER_INSTRUCTIONS: "Le <b>Planificateur Grav</b> vous permet de créer et de planifier des travaux personnalisés. Il fournit également une méthode permettant aux plugins Grav d'intégrer de manière programmatique et dynamique des tâches à exécuter périodiquement."
SCHEDULER_POST_INSTRUCTIONS: "Pour activer la fonctionnalité du planificateur, vous devez ajouter le <b>planificateur Grav</b> au fichier crontab de votre système pour l'utilisateur <b>%s </b>. Exécutez la commande ci-dessus à partir du terminal pour l'ajouter automatiquement. Une fois enregistrée, actualisez cette page pour voir l'état."
SCHEDULER_JOBS: "Tâches du planificateur personnalisées"
SCHEDULER_STATUS: "Status du planificateur"
SCHEDULER_RUNAT: "Exécuter à"
@ -760,6 +778,7 @@ PLUGIN_ADMIN:
SCHEDULER_OUTPUT_TYPE_HELP: "Ajouter chaque exécution au fichier, ou écraser le fichier à chaque exécution"
SCHEDULER_EMAIL: "Email"
SCHEDULER_EMAIL_HELP: "Destinataire du fichier de sortie. Nécessite que le fichier de sortie soit défini"
SCHEDULER_WARNING: "Le planificateur utilise le système crontab de votre système pour exécuter des commandes. Vous ne devriez l'utiliser que si vous êtes un utilisateur avancé et que vous savez ce que vous faites. Une mauvaise configuration ou un abus peuvent conduire à des vulnérabilités de sécurité."
SECURITY: "Sécurité"
XSS_SECURITY: "Sécurité XSS pour le Contenu"
XSS_WHITELIST_PERMISSIONS: "Permissions pour Liste blanche"
@ -771,7 +790,7 @@ PLUGIN_ADMIN:
XSS_HTML_INLINE_STYLES: "Filtrer les styles HTML en ligne"
XSS_DANGEROUS_TAGS: "Filtrer les balises HTML dangereuses"
XSS_DANGEROUS_TAGS_LIST: "Liste des balises HTML dangereuses"
XSS_ONSAVE_ISSUE: "Sauvegarde échouée: problème XSS détecté..."
XSS_ONSAVE_ISSUE: "Échec de la sauvegarde : problème XSS détecté…"
XSS_ISSUE: "<strong>NOTICE:</strong> Grav a trouvé des problèmes potentiels d'XSS dans <strong>%s</strong>"
UPLOADS_SECURITY: "Téléchargements de sécurité"
UPLOADS_DANGEROUS_EXTENSIONS: "Extensions dangereuses"
@ -797,23 +816,68 @@ PLUGIN_ADMIN:
BACKUPS_PROFILE_SCHEDULE_AT: "Exécuter la planification"
COMMAND: "Commande"
EXTRA_ARGUMENTS: "Arguments supplémentaires"
DEFAULT_LANG: "Écraser la langue par défaut"
DEFAULT_LANG_HELP: "La langue par défaut est prise en charge en premier . Cela peut être écrasé en paramétrant cette option uniquement avec une des autres langues prises en charge"
DEBUGGER_PROVIDER: "Fournisseur du débogueur"
DEBUGGER_PROVIDER_HELP: "PHP Debug Bar par défaut, mais l'extension de navigateur Clockwork a une approche moins intrusive"
DEBUGGER_DEBUGBAR: "PHP Debug Bar"
DEBUGGER_CLOCKWORK: "Extension de navigateur Clockwork"
PAGE_ROUTE_NOT_FOUND: "Chemin vers la page introuvable"
PAGE_ROUTE_FOUND: "Chemin vers la page trouvé"
NO_ROUTE_PROVIDED: "Aucun chemin fourni"
CONTENT_LANGUAGE_FALLBACKS: "Reprise de la langue de contenu"
CONTENT_LANGUAGE_FALLBACKS_HELP: "Par défaut, si le contenu n'est pas traduit, Grav affichera le contenu dans la langue par défaut. Utilisez ce paramètre pour remplacer ce comportement par base de langue."
CONTENT_LANGUAGE_FALLBACK: "Langues de repli"
CONTENT_LANGUAGE_FALLBACK_HELP: "Veuillez entrer une liste de languages de code. Attention, si vous omettez le language par défaut il ne sera pas utilisé."
CONTENT_FALLBACK_LANGUAGE_HELP: "Spécifiez le language que vous souhaitez personnaliser."
EXPERIMENTAL: "Expérimental"
PAGES_TYPE: "Type de Page Frontend"
PAGES_TYPE_HELP: "Cette option active les pages d'objet Flex sur le front-end. Les pages Flex de l'administrateur ont besoin du plugin Flex Objects"
ACCOUNTS_TYPE: "Type de Comptes"
ACCOUNTS_TYPE_HELP: "Système Flex Object pour stocker les comptes utilisateur"
ACCOUNTS_STORAGE: "Espace de stockage du compte"
ACCOUNTS_STORAGE_HELP: "Le mécanisme de stockage à utiliser pour le type de compte d'objet Flex. Les fichiers sont l'approche traditionnelle où le compte est stocké dans un fichier YAML dans un seul dossier, lorsque le dossier crée un nouveau dossier pour chaque compte"
FLEX: "Flex Object (EXPERIMENTAL)"
REGULAR: "Standard"
FILE: "Fichier"
SANITIZE_SVG: "Assainir SVG"
SANITIZE_SVG_HELP: "Supprime tout code XSS du SVG"
ACCOUNTS: "Comptes"
USER_ACCOUNTS: "Comptes Utilisateurs"
USER_GROUPS: "Groupes dutilisateurs"
GROUP_NAME: "Nom de groupe"
DISPLAY_NAME: "Nom affiché"
ICON: "Icône"
ACCESS: "Accès"
NO_ACCESS: "Aucun accès"
SUPER_USER: "Super utilisateur"
ALLOWED: "Autorisé"
DENIED: "Refusé"
MODULE: "Module"
NON_MODULE: "Non-module"
ADD_MODULE: "Ajouter un module"
MODULE_SETUP: "Configuration du module"
MODULE_TEMPLATE: "Template du module"
ADD_MODULE_CONTENT: "Ajouter un contenu d'un module"
CHANGELOG: "Journal des modifications"
PAGE_ACCESS: "Accès à la page"
PAGE PERMISSIONS: "Permissions de la page"
PAGE_ACCESS_HELP: "L'utilisateur ayant les autorisations d'accès suivantes peut accéder à la page."
PAGE_VISIBILITY_REQUIRES_ACCESS: "Le menu visibilité requiert un accès"
PAGE_VISIBILITY_REQUIRES_ACCESS_HELP: "Réglez sur Oui si la page doit être affichée dans les menus uniquement si l'utilisateur peut y accéder."
PAGE_INHERIT_PERMISSIONS: "Hériter des permissions"
PAGE_INHERIT_PERMISSIONS_HELP: "Hériter du contrôle d'accès de la page parente."
PAGE_AUTHORS: "Auteurs"
PAGE_AUTHORS_HELP: "Les membres des auteurs de page ont un accès de niveau propriétaire à cette page défini dans le groupe de pages spécial «Auteurs»."
PAGE_GROUPS: "Groupes de pages"
PAGE_GROUPS_HELP: "Les membres des groupes de pages ont un accès spécial à cette page."
READ: "Lire"
PUBLISH: "Publier"
LIST: "Liste"
ACCESS_SITE: "Site"
ACCESS_SITE_LOGIN: "Connexion au site"
ACCESS_ADMIN: "Administrateur"
ACCESS_ADMIN_LOGIN: "Connexion Administrateur"
ACCESS_ADMIN_SUPER: "Super utilisateur"
ACCESS_ADMIN_CACHE: "Vider le cache"
ACCESS_ADMIN_CONFIGURATION: "Configuration"
@ -831,7 +895,19 @@ PLUGIN_ADMIN:
ACCESS_ADMIN_USERS: "Gérer les utilisateurs"
USERS: "Utilisateurs"
ACL: "Contrôle des accès"
FLEX_CACHING: "Mise en cache Flex"
FLEX_INDEX_CACHE_ENABLED: "Activer la mise en cache de l'index"
FLEX_INDEX_CACHE_LIFETIME: "Durée de mise en cache de l'index (secondes)"
FLEX_OBJECT_CACHE_ENABLED: "Activer la mise en cache des objets"
FLEX_OBJECT_CACHE_LIFETIME: "Durée de mise en cache des objets (secondes)"
FLEX_RENDER_CACHE_ENABLED: "Activer la mise en cache du rendu"
FLEX_RENDER_CACHE_LIFETIME: "Durée de mise en cache du rendu (secondes)"
DEBUGGER_CENSORED: "Censurer les données sensibles"
DEBUGGER_CENSORED_HELP: "Fournisseur Clockwork UNIQUEMENT: si Oui, censurer les informations potentiellement sensibles (paramètres POST, cookies, fichiers, configuration et la plupart des données de tableau / objet dans les messages de journal)"
LANGUAGE_TRANSLATIONS: "Traductions"
LANGUAGE_TRANSLATIONS_HELP: "Si faux, les clés de traduction sont utilisées à la place des chaînes traduites. Cette fonctionnalité peut être utilisée pour aider à corriger les mauvaises traductions ou pour trouver des chaînes en anglais codées en dur."
STRICT_BLUEPRINT_COMPAT: "Compatibilité des plans"
STRICT_BLUEPRINT_COMPAT_HELP: "Active la prise en charge stricte des plans compatibles. Si désactivé, le nouveau comportement fait échouer la validation du formulaire s'il y a des données supplémentaires qui ne sont pas définies dans le plan."
RESET: "Réinitialiser"
LOGOS: "Logos"
PRESETS: "Réglages prédéfinis"
@ -840,40 +916,197 @@ PLUGIN_ADMIN:
COLOR_SCHEME_NAME: "Nom du jeu de couleurs personnalisé"
COLOR_SCHEME_NAME_HELP: "Donnez un nom à votre thème personnalisé pour l'export et le partage"
COLOR_SCHEME_NAME_PLACEHOLDER: "Nuances de Bleu"
PRIMARY_ACCENT_LABEL: "Accent primaire"
PRIMARY_ACCENT_HELP: "Sélectionnez le jeu de couleurs que l'accent principal doit utiliser pour son jeu de couleurs"
SECONDARY_ACCENT_LABEL: "Accent secondaire"
SECONDARY_ACCENT_HELP: "Sélectionnez le jeu de couleurs que l'accent secondaire doit utiliser pour son jeu de couleurs"
TERTIARY_ACCENT_LABEL: "Accent tertiaire"
TERTIARY_ACCENT_HELP: "Sélectionnez le jeu de couleurs que l'accent tertiaire doit utiliser pour son jeu de couleurs"
WEB_FONTS_LABEL: "Police web"
WEB_FONTS_HELP: "Utiliser une police internet personnalisée :"
HEADER_FONT_LABEL: "Police de l'en-tête"
HEADER_FONT_HELP: "Polices utilisée pour les en-têtes, la barre latérale et les titres"
BODY_FONT_LABEL: "Police du corps du texte"
BODY_FONT_HELP: "Police primaire utilisée pour le corps du thème"
CUSTOM_CSS_LABEL: "CSS personnalisé"
CUSTOM_CSS_PLACEHOLDER: "Insérez votre CSS personnalisé ici..."
CUSTOM_CSS_PLACEHOLDER: "Insérez votre CSS personnalisé ici…"
CUSTOM_CSS_HELP: "CSS personnalisé qui sera ajouté à chaque page d'administration"
CUSTOM_FOOTER: "Pied de page personnalisé"
CUSTOM_FOOTER_HELP: "Vous pouvez utiliser la syntaxe HTML et/ou Markdown ici"
CUSTOM_FOOTER_PLACEHOLDER: "Entrez du HTML/Markdown pour remplacer le pied de page par défaut"
LOGIN_SCREEN_CUSTOM_LOGO_LABEL: "Logo de connexion personnalisé "
TOP_LEFT_CUSTOM_LOGO_LABEL: "Logo Principal Personnalisé"
LOAD_PRESET: "Charger un préréglage"
RECOMPILE: "Recompiler"
EXPORT: "Exporter"
QUICKTRAY_RECOMPILE: "Icone de recompilation QuickTray"
QUICKTRAY_RECOMPILE_HELP: "Recompilera le SCSS prédéfini pour récupérer les modifications ou les nouveaux plugins"
CODEMIRROR: "Éditeur CodeMirror"
CODEMIRROR_THEME: "Thème de l'éditeur"
CODEMIRROR_THEME_DESC: "** REMARQUE: ** Utilisez la [Démo de thèmes CodeMirror] (https://codemirror.net/demo/theme.html?target=_blank) pour les voir en action. **_ Paper_ ** est le thème Grav par défaut."
CODEMIRROR_FONTSIZE: "Taille de la police de l'éditeur"
CODEMIRROR_FONTSIZE_SM: "Petite police"
CODEMIRROR_FONTSIZE_MD: "Police moyenne"
CODEMIRROR_FONTSIZE_LG: "Grande police"
CODEMIRROR_MD_FONT: "Police de l'éditeur Markdown"
CODEMIRROR_MD_FONT_SANS: "Police Sans"
CODEMIRROR_MD_FONT_MONO: "Police de largeur mono/fixe"
CUSTOM_PRESETS: "Préréglages personnalisés"
CUSTOM_PRESETS_HELP: "Glisser-déposer un fichier de thème .yaml ici, ou vous pouvez créer un tableau de préréglages avec des clés basées sur le texte"
CUSTOM_PRESETS_PLACEHOLDER: "Mettez vos préréglages ici"
GENERAL: "Général"
CONTENT_EDITOR: "Éditeur de contenu"
CONTENT_EDITOR_HELP: "Les éditeurs personnalisés peuvent être utilisés pour l'édition de contenu"
BAD_FILENAME: "Nom de fichier erroné"
SHOW_SENSITIVE: "Afficher les données sensibles"
SHOW_SENSITIVE_HELP: "Clockwork Provider UNIQUEMENT: censurer les informations potentiellement sensibles (paramètres POST, cookies, fichiers, configuration et la plupart des données de tableau / objet dans les messages de journal)"
VALID_LINK_ATTRIBUTES: "Attributs de liens valides"
VALID_LINK_ATTRIBUTES_HELP: "Attributs qui seront automatiquement ajoutés à l'élément HTML du média"
CONFIGURATION: "Configuration"
CUSTOMIZATION: "Personnalisation"
EXTRAS: "Suppléments"
BASICS: "Paramètres de base"
ADMIN_CACHING: "Activer le cache dadministration"
ADMIN_CACHING_HELP: "La mise en cache dans ladministration peut être contrôlée indépendamment de celui du front-end."
ADMIN_PATH: "Chemin de l'administrateur"
ADMIN_PATH_PLACEHOLDER: "Route par défaut pour l'administrateur (par rapport à la base)"
ADMIN_PATH_HELP: "Si vous voulez modifier l'URL de l'administrateur, vous pouvez renseigner un chemin ici"
LOGO_TEXT: "Texte du logo"
LOGO_TEXT_HELP: "Texte à afficher à la place du logo Grav par défaut"
CONTENT_PADDING: "Bordure du contenu"
CONTENT_PADDING_HELP: "Activer/désactiver la bordure autour de la zone de contenu pour laisser plus d'espace"
BODY_CLASSES: "Classes du corps"
BODY_CLASSES_HELP: "Ajouter un nom (séparé par espace) pour les classes de corps personnalisés"
SIDEBAR_ACTIVATION: "Activation de la barre latérale"
SIDEBAR_ACTIVATION_HELP: "Contrôler comment la barre latérale est activée"
SIDEBAR_HOVER_DELAY: "Délai de survol"
SIDEBAR_HOVER_DELAY_APPEND: "millisecondes"
SIDEBAR_ACTIVATION_TAB: "Onglet"
SIDEBAR_ACTIVATION_HOVER: "Survol"
SIDEBAR_SIZE: "Taille de la barre latérale"
SIDEBAR_SIZE_HELP: "Contrôler la largeur de la barre latérale"
SIDEBAR_SIZE_AUTO: "Largeur automatique"
SIDEBAR_SIZE_SMALL: "Petite largeur"
EDIT_MODE: "Mode édition"
EDIT_MODE_HELP: "Auto utilisera le plan si disponible, s'il n'y en a pas, il utilisera le mode \"Expert\"."
FRONTEND_PREVIEW_TARGET: "Cible des pages d'apercu"
FRONTEND_PREVIEW_TARGET_INLINE: "En ligne dans l'admin"
FRONTEND_PREVIEW_TARGET_NEW: "Nouvel onglet"
FRONTEND_PREVIEW_TARGET_CURRENT: "Onglet actuel"
PARENT_DROPDOWN: "Liste déroulante du parent"
PARENT_DROPDOWN_BOTH: "Afficher le slug et le dossier"
PARENT_DROPDOWN_FOLDER: "Afficher le dossier"
PARENT_DROPDOWN_FULLPATH: "Afficher le chemin complet"
PARENTS_LEVELS: "Niveau parents"
PARENTS_LEVELS_HELP: "Le nombre de niveaux à afficher dans la liste de sélection des parents"
MODULAR_PARENTS: "Parents modulaires"
MODULAR_PARENTS_HELP: "Afficher les pages modulaires dans la liste de sélection des parents"
SHOW_GITHUB_LINK: "Afficher le lien GitHub"
SHOW_GITHUB_LINK_HELP: "Afficher le message « Trouvé un problème ? Veuillez le signaler sur GitHub»."
PAGES_LIST_DISPLAY_FIELD: "Champ d'affichage de la liste des pages"
PAGES_LIST_DISPLAY_FIELD_HELP: "Champ de la page à utiliser dans la liste des pages si présent. Par défaut au titre."
AUTO_UPDATES: "Vérification automatique des mises à jour"
AUTO_UPDATES_HELP: "Affiche un message informatif dans le panneau d'administration, quand une mise à jour est disponible."
TIMEOUT: "Durée de session"
TIMEOUT_HELP: "Définit la durée d'activité de la session en secondes"
HIDE_PAGE_TYPES: "Cacher les types de page dans Admin"
HIDE_MODULAR_PAGE_TYPES: "Masquer les types de pages modulaires dans l'admin"
DASHBOARD: "Tableau de bord"
WIDGETS_DISPLAY: "Statut d'affichage du widget"
NOTIFICATIONS: "Notifications"
FEED_NOTIFICATIONS: "Notifications de flux"
FEED_NOTIFICATIONS_HELP: "Afficher les notifications basées sur les flux"
DASHBOARD_NOTIFICATIONS: "Notifications du tableau de bord"
DASHBOARD_NOTIFICATIONS_HELP: "Afficher les notifications basées sur le tableau de bord"
PLUGINS_NOTIFICATIONS: "Notifications de plugins"
PLUGINS_NOTIFICATIONS_HELP: "Afficher les notifications ciblées par les plugins"
THEMES_NOTIFICATIONS: "Notifications de thèmes"
THEMES_NOTIFICATIONS_HELP: "Afficher les notifications des thèmes ciblés"
LOGO_BG_HELP: "Logo bg"
LOGO_LINK_HELP: "Lien du logo"
NAV_BG_HELP: "Bg de navigation"
NAV_TEXT_HELP: "Texte de la navigation"
NAV_LINK_HELP: "Lien de navigation"
NAV_SELECTED_BG_HELP: "Bg de navigation sélectionné"
NAV_SELECTED_LINK_HELP: "Lien sélectionné par Nav"
NAV_HOVER_BG_HELP: "Nav hover bg"
NAV_HOVER_LINK_HELP: "Lien du survol de navigation"
TOOLBAR_BG_HELP: "Barre d'outils bg"
TOOLBAR_TEXT_HELP: "Texte de la barre d'outils"
PAGE_BG_HELP: "Bg de page"
PAGE_TEXT_HELP: "Texte de la page"
PAGE_LINK_HELP: "Lien de la page"
CONTENT_BG_HELP: "Bg de contenu"
CONTENT_TEXT_HELP: "Texte du contenu"
CONTENT_LINK_HELP: "Lien de contenu"
CONTENT_LINK2_HELP: "Lien de contenu 2"
CONTENT_HEADER_HELP: "En-tête du contenu"
CONTENT_TABS_BG_HELP: "Onglets de contenu bg"
CONTENT_TABS_TEXT_HELP: "Texte des onglets de contenu"
CONTENT_HIGHLIGHT_HELP: "Surbrillance du contenu"
BUTTON_BG_HELP: "Bouton bg"
BUTTON_TEXT_HELP: "Texte du bouton"
NOTICE_BG_HELP: "Avis bg"
NOTICE_TEXT_HELP: "Texte de la note"
UPDATES_BG_HELP: "Mises à jour bg"
UPDATES_TEXT_HELP: "Texte de mise à jour"
CRITICAL_BG_HELP: "Bg critique"
CRITICAL_TEXT_HELP: "Texte critique"
BUTTON_COLORS: "Couleurs des boutons"
CONTENT_COLORS: "Couleurs du contenu"
TABS_COLORS: "Couleurs des onglets"
CRITICAL_COLORS: "Couleurs critiques"
LOGO_COLORS: "Couleurs du logo"
NAV_COLORS: "Couleurs de navigation"
NOTICE_COLORS: "Couleurs de notification"
PAGE_COLORS: "Couleurs de la page"
TOOLBAR_COLORS: "Couleurs de la barre d'outils"
UPDATE_COLORS: "Mettre à jour les couleurs"
POPULARITY: "Popularité"
VISITOR_TRACKING: "Suivi des visiteurs"
VISITOR_TRACKING_HELP: "Activer la fonction de collecte des statistiques des visiteurs"
DAYS_OF_STATS: "Jours de statistiques"
DAYS_OF_STATS_HELP: "Conserver les statistiques pour le nombre de jours spécifiés, puis les supprimer"
IGNORE_URLS: "Ignorer"
IGNORE_URLS_HELP: "Liens à ignorer"
DAILY_HISTORY: "Historique quotidien"
MONTHLY_HISTORY: "Historique mensuel"
VISITORS_HISTORY: "Historique des visiteurs"
MEDIA_RESIZE: "Redimensionnement de la page Media Image"
PAGEMEDIA_RESIZER: "> Les paramètres suivants s'appliquent au images téléchargées par le biais des pages média. Redimensionner Largeur / Hauteur redimensionnera automatiquement et proportionnellement une image si elle dépasse les limites définies dans les entrées. Les valeurs minimales et maximales de résolution définissent les plages de taille des images téléchargées. Définissez les champs à 0 pour éviter toute manipulation."
RESIZE_WIDTH: "Redimensionner la largeur"
RESIZE_WIDTH_HELP: "Redimensionner les images larges à la valeur définie"
RESIZE_HEIGHT: "Redimensionner la hauteur"
RESIZE_HEIGHT_HELP: "Redimensionner les images hautes à la valeur définie"
RES_MIN_WIDTH: "Largeur minimale de la résolution"
RES_MIN_WIDTH_HELP: "La largeur minimale autorisée pour l'ajout d'une image"
RES_MIN_HEIGHT: "Hauteur min de la résolution"
RES_MIN_HEIGHT_HELP: "La hauteur minimale autorisée pour l'ajout d'une image"
RES_MAX_WIDTH: "Largeur max de la résolution"
RES_MAX_WIDTH_HELP: "La largeur maximale autorisée pour l'ajout d'une image"
RES_MAX_HEIGHT: "Hauteur max de la résolution"
RES_MAX_HEIGHT_HELP: "La hauteur maximale autorisée pour l'ajout d'une image"
RESIZE_QUALITY: "Redimensionner la qualité"
RESIZE_QUALITY_HELP: "La qualité à utiliser lors du redimensionnement d'une image. Entre 0 et 1."
PIXELS: "pixels"
ACCESS_ADMIN_CONFIGURATION_SECURITY: "Gérer la configuration de sécurité"
SESSION_DOMAIN: "Domaine de session"
SESSION_DOMAIN_HELP: "N'utilisez que si vous réécrivez le domaine du site par exemple dans un conteneur Docker."
SESSION_PATH: "Chemin de session"
SESSION_PATH_HELP: "N'utilisez que si vous réécrivez le chemin du site par exemple dans un conteneur Docker."
REDIRECT_OPTION_NO_REDIRECT: "Aucune redirection"
REDIRECT_OPTION_DEFAULT_REDIRECT: "Utiliser le code de redirection par défaut"
REDIRECT_OPTION_301: "301 - Déplacé en permanence"
REDIRECT_OPTION_302: "302 - Déplacé temporairement"
REDIRECT_OPTION_303: "303 - Voir autre"
IMAGES_CLS_TITLE: "Décalage de mise en page cumulé (CLS)"
IMAGES_CLS_AUTO_SIZES: "Activer les tailles automatiques"
IMAGES_CLS_AUTO_SIZES_HELP: "Ajouter automatiquement les attributs 'width' et 'height' aux images à l'adresse CLS"
IMAGES_CLS_ASPECT_RATIO: "Activer le rapport d'aspect"
IMAGES_CLS_ASPECT_RATIO_HELP: "Variable CSS optionnelle qui est appliquée via un attribut 'style' qui peut être utilisé en CSS pour le style personnalisé"
IMAGES_CLS_RETINA_SCALE: "Facteur de redimensionnement Retina"
IMAGES_CLS_RETINA_SCALE_HELP: "Prendra la taille calculée et divisera par facteur d'échelle pour afficher une image de plus haute résolution à une taille de plus petit pixel pour une meilleure gestion des résolutions HiDPI"
AUTOREGENERATE_FOLDER_SLUG: "Régénérer automatiquement sur la base du titre de page"
ENABLE: Activer
PLUGINS_MUST_BE_ENABLED: "Le plugin doit être activé pour la configuration"
ACTIVATION_REQUIRED: "Activation requise pour la configuration"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Porfavor habilite JavaScript no seu navegador."
ADMIN_BETA_MSG: "Esta é unha versión beta! Utilícea en produción asumindo o risco..."
ADMIN_REPORT_ISSUE: "Atopou unha incidencia? Informe dela en GitHub"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Xerado con Grav</a> - O CMS moderno sobre ficheiro plano"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Xerado con Grav</a> - O CMS moderno sobre ficheiro plano"
LOGIN_BTN: "Iniciar sesión"
LOGIN_BTN_FORGOT: "Esquecido"
LOGIN_BTN_RESET: "Restabelecer o contrasinal"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "זוהי מהדורת ביתא! השימוש על אחריותכם בלבד..."
ADMIN_REPORT_ISSUE: "GitHub נמצאה בעיה? נא לדווח עליה דרך"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">אתר זה מופעל על ידי גראב</a> -מערכת ניהול בקובץ שטוח מודרני"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">אתר זה מופעל על ידי גראב</a> -מערכת ניהול בקובץ שטוח מודרני"
LOGIN_BTN: "התחברות"
LOGIN_BTN_FORGOT: "שכחת"
LOGIN_BTN_RESET: "איפוס סיסמה"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Ovo je Beta izdanje! Koristite u produkciji na vlastiti rizik..."
ADMIN_REPORT_ISSUE: "Pronašli ste grešku? Molimo Vas da prijavite na GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Pokreće Grav</a> - Moderni Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Pokreće Grav</a> - Moderni Flat File CMS"
LOGIN_BTN: "Prijava"
LOGIN_BTN_FORGOT: "Zaboravih"
LOGIN_BTN_RESET: "Resetiraj Lozinku"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Kérjük, engedélyezd a JavaScriptet a böngésződben."
ADMIN_BETA_MSG: "Ez egy béta kiadás! Éles környezetben csak saját felelősségre használd..."
ADMIN_REPORT_ISSUE: "Találtál egy hibát? Kérlek jelezd a GitHub-on."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - Egy Modern, File-alapú CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - Egy Modern, File-alapú CMS"
LOGIN_BTN: "Bejelentkezés"
LOGIN_BTN_FORGOT: "Elfelejtettem"
LOGIN_BTN_RESET: "Új jelszó"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Silahkan aktifkan JavaScript di browser Anda."
ADMIN_BETA_MSG: "Ini merupakan rilisan Beta! Gunakan ini di produksi dengan resiko anda sendiri..."
ADMIN_REPORT_ISSUE: "Menemukan masalah? Harap laporkan di Github."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Ditenagai oleh Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Ditenagai oleh Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Login"
LOGIN_BTN_FORGOT: "Lupa"
LOGIN_BTN_RESET: "Reset Password"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Per cortesia, abilita JavaScript nel browser."
ADMIN_BETA_MSG: "Questa è una versione beta! Usare in produzione a proprio rischio e pericolo…"
ADMIN_REPORT_ISSUE: "Trovato un problema? Per favore, apri un ticket su GitHub"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - Il CMS Flat File e Moderno"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - Il CMS Flat File e Moderno"
LOGIN_BTN: "Accedi"
LOGIN_BTN_FORGOT: "Dimenticata"
LOGIN_BTN_RESET: "Ripristina la password"
@ -548,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Abilitare se si utilizza proxy inverso e si riscontrano problemi con gli URL contenenti porte non corrette"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter non valido, impossibile salvare"
ADD_FOLDER: "Aggiungi cartella"
COPY_PAGE: "Copia Pagina"
PROXY_URL: "URL del proxy"
PROXY_URL_HELP: "Inserire l'HOST o l'IP del proxy e la porta"
NOTHING_TO_SAVE: "Niente da salvare"
@ -1042,6 +1043,7 @@ PLUGIN_ADMIN:
CONTENT_HEADER_HELP: "Intestazione contenuto"
CONTENT_TABS_BG_HELP: "Sfondo dei tabs"
CONTENT_TABS_TEXT_HELP: "Testo dei tabs"
CONTENT_HIGHLIGHT_HELP: "Contenuto in evidenza"
BUTTON_BG_HELP: "Sfondo del bottone"
BUTTON_TEXT_HELP: "Testo del bottone"
NOTICE_BG_HELP: "Sfondo delle notifiche"
@ -1094,3 +1096,17 @@ PLUGIN_ADMIN:
SESSION_PATH_HELP: "Utilizzare solo se si riscrive il percorso del sito per esempio in un contenitore Docker."
REDIRECT_OPTION_NO_REDIRECT: "Nessun reindirizzamento"
REDIRECT_OPTION_DEFAULT_REDIRECT: "Usa il codice di reindirizzamento predefinito"
REDIRECT_OPTION_301: "301 - Spostato permanentemente"
REDIRECT_OPTION_302: "302 - Spostato temporaneamente"
REDIRECT_OPTION_303: "303 Vedi altro"
IMAGES_CLS_TITLE: "Cumulative Layout Shift (CLS)"
IMAGES_CLS_AUTO_SIZES: "Abilita Dimensioni Automatiche"
IMAGES_CLS_AUTO_SIZES_HELP: "Aggiungi automaticamente attributi 'width' e 'height' alle immagini per indirizzare CLS"
IMAGES_CLS_ASPECT_RATIO: "Abilita Rapporto Dimensioni"
IMAGES_CLS_ASPECT_RATIO_HELP: "Variabile CSS opzionale che viene applicata tramite un attributo 'style' che può essere utilizzato in CSS per uno stile personalizzato"
IMAGES_CLS_RETINA_SCALE: "Fattore di Scala Retina"
IMAGES_CLS_RETINA_SCALE_HELP: "Utilizzerà la dimensione calcolata e dividerà per il fattore di scala per visualizzare un'immagine a risoluzione più alta con dimensioni in pixel più piccole per una migliore gestione delle risoluzioni HiDPI"
AUTOREGENERATE_FOLDER_SLUG: "Rigenerazione automatica basata sul titolo della pagina"
ENABLE: Abilita
PLUGINS_MUST_BE_ENABLED: "Il plugin deve essere abilitato per configurare"
ACTIVATION_REQUIRED: "Attivazione richiesta per configurare"

View File

@ -1,8 +1,9 @@
---
PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "お使いのブラウザーの JavaScript を有効にしてください。"
ADMIN_BETA_MSG: "これはベータリリースです。稼働中サイトでは、自己責任においてご利用ください。"
ADMIN_REPORT_ISSUE: "問題を見つけた場合は、GitHub にてご報告をお願いします。"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "ログイン"
LOGIN_BTN_FORGOT: "パスワードを紛失"
LOGIN_BTN_RESET: "パスワードをリセット"
@ -46,11 +47,13 @@ PLUGIN_ADMIN:
CLOSE: "閉じる"
CANCEL: "キャンセル"
CONTINUE: "続ける"
CONFIRM: "確認"
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "ご確認ください"
MODAL_CHANGED_DETECTED_TITLE: "変更が見つかりました"
MODAL_CHANGED_DETECTED_DESC: "変更が保存されていません。本当に、保存せずに移動してもよろしいですか?"
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "ご確認ください"
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "本当に、このファイルを削除してもよろしいですか? この操作は元に戻すことができません。"
MODAL_UPDATE_GRAV_CONFIRMATION_REQUIRED_DESC: "Gravを利用可能な最新バージョンにアップグレードしようとしています。続行しますか"
ADD_FILTERS: "絞り込み条件を追加"
SEARCH_PAGES: "ページを検索"
VERSION: "バージョン"
@ -68,6 +71,7 @@ PLUGIN_ADMIN:
LICENSE: "ライセンス"
DESCRIPTION: "説明"
README: "Readme"
DOCS: "ドキュメント"
REMOVE_THEME: "テーマを削除"
INSTALL_THEME: "テーマをインストール"
THEME: "テーマ"
@ -92,6 +96,7 @@ PLUGIN_ADMIN:
BACKUPS_PURGE_CONFIG: "バックアップの消去設定"
BACKUPS_PROFILES: "バックアッププロファイル"
BACKUPS_COUNT: "バックアップの世代数"
BACKUPS_PROFILES_COUNT: "プロファイルの数"
BACKUPS_TOTAL_SIZE: "利用済:"
BACKUPS_NEWEST: "最新バックアップ"
BACKUPS_OLDEST: "最古のバックアップ"
@ -99,10 +104,12 @@ PLUGIN_ADMIN:
BACKUPS_NOT_GENERATED: "バックアップは作成されませんでした。"
BACKUPS_PURGE_NUMBER: "Using %s of %s backup slots"
BACKUPS_PURGE_TIME: "バックアップが消去されるまで%s日"
BACKUPS_PURGE_SPACE: "%s 中 %s を使用しています"
BACKUP_DELETED: "正常に削除されました。"
BACKUP_NOT_FOUND: "バックアップは見つかりませんでした。"
BACKUP_DATE: "バックアップの日付"
STATISTICS: "統計"
VIEWS_STATISTICS: "ページ表示の統計"
TODAY: "今日"
WEEK: "週"
MONTH: "月"
@ -330,6 +337,7 @@ PLUGIN_ADMIN:
LANGUAGES: "言語"
SUPPORTED: "対応"
SUPPORTED_HELP: "コンマで区切った 2 文字の言語コードのリスト (例: 'en,fr,de') です。"
SUPPORTED_PLACEHOLDER: "例: en, fr"
TRANSLATIONS_FALLBACK: "翻訳の次候補"
TRANSLATIONS_FALLBACK_HELP: "アクティブな言語が存在しない場合に、サポートする翻訳の次候補を使用します。"
ACTIVE_LANGUAGE_IN_SESSION: "セッション内のアクティブ言語"
@ -425,6 +433,7 @@ PLUGIN_ADMIN:
CACHE_ALL_HELP: "メディア操作がない場合でも、Grav のキャッシュシステム経由ですべての画像を実行します。"
IMAGES_DEBUG: "デバッグで透過画像"
IMAGES_DEBUG_HELP: "例えばレティナディスプレイで作業する場合、後ろの画像の上に透過して画像を表示します"
IMAGES_LOADING: "画像読み込みの動作"
IMAGES_SEOFRIENDLY: "SEO-フレンドリィなイメージ名"
UPLOAD_LIMIT: "ファイルのアップロード制限"
UPLOAD_LIMIT_HELP: "アップロードの最大サイズをバイト単位 (0 = 無制限) で設定します。"
@ -523,6 +532,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "リバースプロキシの背後にある不適切なポートを含むURLに問題がある場合は、これを有効にします"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "無効な frontmatter を保存できませんでした。"
ADD_FOLDER: "フォルダーの追加"
COPY_PAGE: "ページをコピーする"
PROXY_URL: "プロキシURL"
PROXY_URL_HELP: "プロキシのホストか IP 、ポートを入力"
NOTHING_TO_SAVE: "保存するものがありません"
@ -541,6 +551,7 @@ PLUGIN_ADMIN:
READY_TO_INSTALL_PACKAGES: "パッケージをインストールする準備ができました"
PACKAGES_NOT_INSTALLED: "パッケージはインストールさていません"
PACKAGES_NEED_UPDATE: "パッケージはすでにインストールされていますが、古いようです"
PACKAGES_SUGGESTED_UPDATE: "パッケージは既にインストールされており、バージョンも問題ありませんが、最新の状態にしておくためにアップデートされます"
REMOVE_THE: "%s を削除"
CONFIRM_REMOVAL: "%s を削除してもよろしいですか?"
REMOVED_SUCCESSFULLY: "%s の削除が正常におこなわれました"
@ -563,6 +574,8 @@ PLUGIN_ADMIN:
FRONTMATTER_IGNORE_FIELDS_HELP: "Twig変数を含むFrontMatterフィールドを作成することはできますが、formsのようなフィールドについてはTwig変数は処理されるべきではありません。"
PACKAGE_X_INSTALLED_SUCCESSFULLY: "パッケージ %s が正常にインストールされました"
ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "200ページ以上あるため管理画面経由で並び替えをサポートできません"
CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "注:このページを保存するまでメディアファイルを追加することはできません。上部の「保存」をクリックして下さい。"
CANNOT_ADD_FILES_PAGE_NOT_SAVED: "注意: ファイルをアップロードする前に、ページを保存する必要があります。"
DROP_FILES_HERE_TO_UPLOAD: "ここにファイルをドロップするか<strong>このエリアをクリックしてください</strong>"
INSERT: "挿入"
UNDO: "取り消す"
@ -615,10 +628,13 @@ PLUGIN_ADMIN:
NEWS_FEED: "ニュースフィード"
EXTERNAL_URL: "外部 URL"
CUSTOM_BASE_URL: "カスタムベース URL"
FILEUPLOAD_PREVENT_SELF: 'ページ外で「%s」は使用できません。'
FILEUPLOAD_UNABLE_TO_UPLOAD: 'ファイル %s をアップロードできません: %s'
FILEUPLOAD_UNABLE_TO_MOVE: 'ファイル %s を「%s」に移動できません。'
DROPZONE_CANCEL_UPLOAD: 'アップロードのキャンセル'
DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'このアップロードをキャンセルしてもよろしいですか?'
DROPZONE_DEFAULT_MESSAGE: 'ファイルをここにドロップして<strong>この部分をクリックして下さい</strong>。'
DROPZONE_FALLBACK_MESSAGE: 'ご利用のブラウザーがドラッグ&ドロップでのアップロードをサポートしていません。'
DROPZONE_FILE_TOO_BIG: 'ファイルがあまりにも大きいです({{filesize}}MiB)。最大ファイルサイズ: {{maxFilesize}}MiB。'
DROPZONE_INVALID_FILE_TYPE: "この種類のファイルはアップロードできません。"
DROPZONE_MAX_FILES_EXCEEDED: "これ以上ファイルをアップロードすることはできません。"
@ -638,6 +654,7 @@ PLUGIN_ADMIN:
PERMISSIONS: "パーミッション"
NEVER_CACHE_TWIG: "Twig をキャッシュしない"
ALLOW_WEBSERVER_GZIP: "ウェブサーバ Gzip を許可する"
OFFLINE_WARNING: "GPMへの接続が確立できませんでした"
CLEAR_IMAGES_BY_DEFAULT: "デフォルトで画像キャッシュをクリア"
CLI_COMPATIBILITY: "CLIの互換性"
REINSTALL_PLUGIN: "プラグインを再インストール"
@ -648,6 +665,7 @@ PLUGIN_ADMIN:
ERROR_REINSTALLING_THE: "%s の再インストール中にエラーが発生しました"
PACKAGE_X_REINSTALLED_SUCCESSFULLY: "パッケージ %s が正常に再インストールされました"
REINSTALLATION_FAILED: "再インストールに失敗しました"
WARNING_REINSTALL_NOT_LATEST_RELEASE: "インストールされているバージョンは最新のリリースではありません。続けるをクリックすると、現在のバージョンを削除し、最新の利用可能なリリースをインストールします。"
TOOLS: "ツール"
DIRECT_INSTALL: "直接インストール"
NO_PACKAGE_NAME: "パッケージ名が指定されていません"
@ -663,6 +681,7 @@ PLUGIN_ADMIN:
ADMIN_CHILDREN_DISPLAY_ORDER: "子ページの表示順序"
PWD_PLACEHOLDER: "最短 8 文字で複雑な文字列にしてください"
PWD_REGEX: "パスワードの正規表現"
PWD_REGEX_HELP: "デフォルトでは、パスワードは少なくとも 1 つの数字、1つの大文字、1つの小文字を含めた8文字以上である必要があります。"
USERNAME_PLACEHOLDER: "小文字のみ、例「admin」"
USERNAME_REGEX: "ユーザー名の正規表現"
USERNAME_REGEX_HELP: "デフォルト: 小文字の英数字、ダッシュ(-)およびアンダースコア(_)のみ。3〜6文字"
@ -678,7 +697,9 @@ PLUGIN_ADMIN:
2FA_REGENERATE: "再生成"
FORCE_LOWERCASE_URLS: "URLを小文字に限定"
VIEW_SITE_TIP: "サイトを表示"
TOOLS_DIRECT_INSTALL_TITLE: "Grav パッケージの直接インストール"
TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "ZIPファイルのアップロードによるパッケージのインストール"
TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "この方法を使用すると有効なGravの<strong>テーマ</strong>や、<strong>プラグイン</strong>、<strong>Grav</strong>アップデートのZipパッケージすら簡単にインストールできます。このパッケージはGPM経由で登録する必要はなく、以前のバージョンに戻すことやテスト用のインストールも簡単にできます。"
TOOLS_DIRECT_INSTALL_URL_TITLE: "URL指定によるリモートからのパッケージインストール"
TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "アップロードしてインストール"
ROUTE_OVERRIDES: "Routeの上書き"
@ -687,8 +708,52 @@ PLUGIN_ADMIN:
ROUTE_ALIASES: "代替のRoute"
OPEN_NEW_TAB: "新しいタブで開く"
SESSION_INITIALIZE: "セッションを初期化"
STRICT_TWIG_COMPAT: "Twig の互換性"
SCHEDULER: "スケジューラ"
SCHEDULER_INSTALL_INSTRUCTIONS: "インストール手順"
SCHEDULER_INSTALLED_READY: "インストール済み、準備完了"
SCHEDULER_CRON_NA: "ユーザー<b>%s</b>にはCronは利用できません。"
SCHEDULER_SETUP: "スケジューラのセットアップ"
SCHEDULER_STATUS: "スケジューラのステータス"
SCHEDULER_OUTPUT: "出力ファイル"
SCHEDULER_EMAIL: "Eメール"
SECURITY: "セキュリティ"
UPLOADS_DANGEROUS_EXTENSIONS: "危険な拡張機能"
REPORTS: "レポート"
LOGS: "ログ"
BACKUPS_MAX_COUNT: "バックアップの最大数"
BACKUPS_MAX_COUNT_HELP: "0 = 無制限"
COMMAND: "コマンド"
DEFAULT_LANG_HELP: "デフォルトは最初にサポートされている言語です。このオプションを設定することで上書きできますが、サポートされている言語のいずれかでなければなりません。"
ACCOUNTS_TYPE: "アカウントの種類"
ACCOUNTS: "アカウント"
USER_ACCOUNTS: "ユーザーアカウント"
USER_GROUPS: "ユーザーグループ"
GROUP_NAME: "グループ名"
ICON: "アイコン"
ACCESS: "アクセス"
ALLOWED: "許可"
DENIED: "拒否"
MODULE: "モジュール"
ADD_MODULE: "モジュールを追加"
MODULE_SETUP: "モジュールのセットアップ"
LIST: "一覧"
ACCESS_SITE: "サイト"
ACCESS_SITE_LOGIN: "サイトにログイン"
ACCESS_ADMIN_THEMES: "テーマの管理"
ACCESS_ADMIN_TOOLS: "ツールへのアクセス"
ACCESS_ADMIN_USERS: "ユーザーの管理"
USERS: "ユーザー"
ACL: "アクセス管理"
LANGUAGE_TRANSLATIONS: "翻訳"
LANGUAGE_TRANSLATIONS_HELP: "false の場合、翻訳キーは翻訳された文字列の代わりに使用されます。 この機能は、誤った翻訳を修正したり、変更できない英語文字列を見つけたりするのに役立ちます。"
STRICT_BLUEPRINT_COMPAT: "ブループリントの互換性"
RESET: "リセット"
LOGOS: "ロゴ"
PRESETS: "プリセット"
CONFIGURATION: "設定"
TIMEOUT: "タイムアウト"
TIMEOUT_HELP: "セッションのタイムアウトを秒単位で設定します。"
DASHBOARD: "ダッシュボード"
NOTIFICATIONS: "通知"
ACCESS_ADMIN_CONFIGURATION_SECURITY: "セキュリティ設定の管理"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "이것은 베타입니다! 개인적으로 사용할시 위험할수있습니다..."
ADMIN_REPORT_ISSUE: "문제가 있습니까? GitHub에 신고해주세요."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\"> Grav에 의해 구동</a>-현대 플랫 파일 CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\"> Grav에 의해 구동</a>-현대 플랫 파일 CMS"
LOGIN_BTN: "로그인"
LOGIN_BTN_FORGOT: "잃어버림"
LOGIN_BTN_RESET: "비밀번호 초기화"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Tai Grav administravimo įskiepio beta versija! Naudokite atsargiai..."
ADMIN_REPORT_ISSUE: "Radote klaidą? Prašome pranešti apie ją GitHub platformoje."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Naudojama Grav</a> - Moderni TVS, nenaudojanti duomenų bazės"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Naudojama Grav</a> - Moderni TVS, nenaudojanti duomenų bazės"
LOGIN_BTN: "Prisijungti"
LOGIN_BTN_FORGOT: "Pamiršau"
LOGIN_BTN_RESET: "Atstatyti slaptažodį"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Хөтөч дээрээ JavaScript-ийг идэвхжүүлнэ үү."
ADMIN_BETA_MSG: "Энэ нь туршилтийн хувилбар шүү! Тиймээс ашиглалт нь таны өөрийн эрсдэлийн асуудал..."
ADMIN_REPORT_ISSUE: "Алдаа олсон уу? Та ийшээ GitHub -д орж мэдэгдэнэ үү."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Grav -ын тусламжаар</a> - Орчин үеийн текст файл CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Grav -ын тусламжаар</a> - Орчин үеийн текст файл CMS"
LOGIN_BTN: "Нэвтрэх"
LOGIN_BTN_FORGOT: "Мартсан"
LOGIN_BTN_RESET: "Нууц үгийг өөрчлөх"
@ -416,6 +416,8 @@ PLUGIN_ADMIN:
JAVASCRIPT_MINIFY_HELP: "JS -г дамжуулах үед нь багасгах"
ENABLED_TIMESTAMPS_ON_ASSETS: "Өмч дээрх цагийн тэмдэгийг идэвхжүүлэх"
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Хугацааны тэмдгийг идэвхжүүлэх"
ENABLED_SRI_ON_ASSETS: "Өгөгдөлд SRI -ийг идэвхжүүлэх"
ENABLED_SRI_ON_ASSETS_HELP: "Өгөгдлийн SRI -ийг идэвхжүүлэх"
COLLECTIONS: "Цуглуулгууд"
ERROR_HANDLER: "Алдаа боловсруулагч"
DISPLAY_ERRORS: "Алдаануудыг харуул"
@ -546,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Хэрвээ та урвуу замчлал (reverse proxy) -ын ард хамгаалагдсан бөгөөд буруу боомттой (port) URL-үүдтэй асуудалтай байгаа бол идэвхжүүл"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter нь буруу байна, хадгалах боломжгүй"
ADD_FOLDER: "Хавтас оруулах"
COPY_PAGE: "Хуудсыг хуулах"
PROXY_URL: "URL замчлал (proxy)"
PROXY_URL_HELP: "Замчлалын (proxy) HOST эсвэл IP ба боомтыг (port) оруулна уу"
NOTHING_TO_SAVE: "Хадгалах юм алга"
@ -843,13 +846,267 @@ PLUGIN_ADMIN:
USER_ACCOUNTS: "Хэрэглэгчийн бүртгэл"
USER_GROUPS: "Хэрэглэгчийн бүлгүүд"
GROUP_NAME: "Бүлгийн нэр"
DISPLAY_NAME: "Харагдах нэр"
ICON: "Дүрс"
ACCESS: "Хандалт"
NO_ACCESS: "Хандалт байхгүй"
SUPER_USER: "Супер хэрэглэгч"
ALLOWED: "Зөвшөөрөгдсөн"
DENIED: "Татгалзсан"
MODULE: "Модуль"
NON_MODULE: "Модуль бус"
ADD_MODULE: "Модуль нэмэх"
MODULE_SETUP: "Модулийн тохиргоо"
MODULE_TEMPLATE: "Модулийн загвар"
ADD_MODULE_CONTENT: "Модулийн агуулга нэмэх"
CHANGELOG: "Өөрчлөлтийн бүртгэл"
PAGE_ACCESS: "Хуудасны хандалт"
PAGE PERMISSIONS: "Хуудасны зөвшөөрөл"
PAGE_ACCESS_HELP: "Дараах хандалтын зөвшөөрөлтэй хэрэглэгч хуудас руу нэвтрэх боломжтой."
PAGE_VISIBILITY_REQUIRES_ACCESS: "Цэсийн харагдах байдал нь хандалтыг шаарддаг"
PAGE_VISIBILITY_REQUIRES_ACCESS_HELP: "Хуудсыг цэсэнд зөвхөн хэрэглэгч хандах боломжтой тохиолдолд харуулах ёстой бол Тийм гэж тохируулна уу."
PAGE_INHERIT_PERMISSIONS: "Зөвшөөрлийг өвлөн авах"
PAGE_INHERIT_PERMISSIONS_HELP: "ACL -ийг эх хуудаснаас өвлөх."
PAGE_AUTHORS: "Хуудасны зохиогчид"
PAGE_AUTHORS_HELP: "Хуудасны Зохиогчдын гишүүд 'Зохиогчдын' хуудасны тусгай бүлэгт тодорхойлсон энэ хуудсанд эзэмшигчийн түвшинд хандах эрхтэй."
PAGE_GROUPS: "Хуудасны бүлгүүд"
PAGE_GROUPS_HELP: "Хуудасны бүлгүүдийн гишүүд энэ хуудсанд тусгай хандах эрхтэй."
READ: "Унших"
PUBLISH: "Нийтлэх"
LIST: "Жагсаалт"
ACCESS_SITE: "Хуудас"
ACCESS_SITE_LOGIN: "Хуудас руу нэвтрэх"
ACCESS_ADMIN: "админ"
ACCESS_ADMIN_LOGIN: "Админ руу нэвтэрнэ үү"
ACCESS_ADMIN_SUPER: "Супер хэрэглэгч"
ACCESS_ADMIN_CACHE: "Кэшийг цэвэрлэх"
ACCESS_ADMIN_CONFIGURATION: "Тохиргоо"
ACCESS_ADMIN_CONFIGURATION_SYSTEM: "Систем тохиргоог удирдах"
ACCESS_ADMIN_CONFIGURATION_SITE: "Хуудасны тохиргоог удирдах"
ACCESS_ADMIN_CONFIGURATION_MEDIA: "Медиа тохиргоог удирдах"
ACCESS_ADMIN_CONFIGURATION_INFO: "Серверийн мэдээлэлийг харах"
ACCESS_ADMIN_SETTINGS: "Тохиргоо"
ACCESS_ADMIN_PAGES: "Хуудсыг удирдах"
ACCESS_ADMIN_MAINTENANCE: "Засвар үйлчилгээ хийх газар"
ACCESS_ADMIN_STATISTICS: "Хуудасны статистик"
ACCESS_ADMIN_PLUGINS: "Өргөтгөлүүдийг удирдах"
ACCESS_ADMIN_THEMES: "Нүүр загвар удирдах"
ACCESS_ADMIN_TOOLS: "Багаж хэрэгсэлд хандах"
ACCESS_ADMIN_USERS: "Хэрэглэгчдийг удирдах"
USERS: "Хэрэглэгчид"
ACL: "Хандалтын хяналт"
FLEX_CACHING: "Flex кэш хийх"
FLEX_INDEX_CACHE_ENABLED: "Индекс кэшийг идэвхжүүлэх"
FLEX_INDEX_CACHE_LIFETIME: "Кэшийн ашиглалтын хугацааны индекс (секунд)"
FLEX_OBJECT_CACHE_ENABLED: "Объект кэшийг идэвхжүүлэх"
FLEX_OBJECT_CACHE_LIFETIME: "Объектын кэшийн ашиглалтын хугацаа (секунд)"
FLEX_RENDER_CACHE_ENABLED: "Render кэшийг идэвхжүүлэх"
FLEX_RENDER_CACHE_LIFETIME: "Кэшийг насан туршдаа үзүүлэх (секунд)"
DEBUGGER_CENSORED: "Мэдрэмтгий өгөгдлийг хянах"
DEBUGGER_CENSORED_HELP: "ЗӨВХӨН Clockwork Provider: Хэрэв тийм бол эмзэг байж болзошгүй мэдээллийг (POST параметрүүд, күүки, файлууд, тохиргоо болон бүртгэлийн мессеж дэх ихэнх массив/объектын өгөгдлийг) цензурлаарай"
LANGUAGE_TRANSLATIONS: "Орчуулга"
LANGUAGE_TRANSLATIONS_HELP: "Хэрэв худал бол орчуулсан мөрийн оронд орчуулгын түлхүүрийг ашиглана. Энэ функцийг муу орчуулгыг засах эсвэл англи хэлний хатуу кодчилсон мөрүүдийг олоход ашиглаж болно."
STRICT_BLUEPRINT_COMPAT: "Зураг төслийн нийцтэй байдал"
STRICT_BLUEPRINT_COMPAT_HELP: "Ноорог зурагны арын нийцтэй хатуу дэмжлэгийг идэвхжүүлдэг. Хэрэв унтраасан бол шинэ төлөвлөгөө нь зураг төсөлд тодорхойлогдоогүй нэмэлт өгөгдөл байгаа тохиолдолд маягтын баталгаажуулалтыг амжилтгүй болгодог."
RESET: "Дахин тохируулах"
LOGOS: "Лого дүрс"
PRESETS: "Урьдчилсан тохиргоо"
COLOR_SCHEME_LABEL: "Өнгөний схем"
COLOR_SCHEME_HELP: "Урьдчилан тодорхойлсон хослолуудын жагсаалтаас өнгөний схемийг сонгох эсвэл өөрийн стилийг нэмээрэй"
COLOR_SCHEME_NAME: "Тусгай өнгөний схемийн нэр"
COLOR_SCHEME_NAME_HELP: "Экспортлох, хуваалцахын тулд өөрийн захиалгат сэдэвт нэр өгнө үү"
COLOR_SCHEME_NAME_PLACEHOLDER: "Цэнхэр өнгийн сүүдэр"
PRIMARY_ACCENT_LABEL: "Үндсэн өргөлт"
PRIMARY_ACCENT_HELP: "Өнгөний схемд ямар өргөлтийг ашиглах ёстойг сонгоно уу"
SECONDARY_ACCENT_LABEL: "Хоёрдогч өргөлт"
SECONDARY_ACCENT_HELP: "Өнгөний схемд хоёрдогч өргөлтийг ашиглах ёстой өнгөний багцыг сонгоно уу"
TERTIARY_ACCENT_LABEL: "Гуравдагч өргөлт"
TERTIARY_ACCENT_HELP: "Өнгөний схемд гуравдагч өргөлт ямар өнгийг ашиглахыг сонгоно уу"
WEB_FONTS_LABEL: "Вэб фонтууд"
WEB_FONTS_HELP: "Тусгай вэб фонт ашиглах"
HEADER_FONT_LABEL: "Толгойн фонт"
HEADER_FONT_HELP: "Толгой, хажуугийн навигаци, хэсгийн гарчигт ашигладаг фонт"
BODY_FONT_LABEL: "Биеийн фонт"
BODY_FONT_HELP: "Сэдвийн бүх хэсэгт хэрэглэгддэг үндсэн фонт"
CUSTOM_CSS_LABEL: "Тусгай CSS"
CUSTOM_CSS_PLACEHOLDER: "Өөрийн захиалгат CSS -ийг энд оруулна уу ..."
CUSTOM_CSS_HELP: "Админ хуудас бүрт нэмэгдэх захиалгат CSS"
CUSTOM_FOOTER: "Захиалгат хөл"
CUSTOM_FOOTER_HELP: "Та энд HTML болон/эсвэл Markdown синтаксийг ашиглаж болно"
CUSTOM_FOOTER_PLACEHOLDER: "Үндсэн хөлийг дарахын тулд HTML/Markdown оруулна уу"
LOGIN_SCREEN_CUSTOM_LOGO_LABEL: "Нэвтрэн орохын захиалгат лого дүрс"
TOP_LEFT_CUSTOM_LOGO_LABEL: "Үндсэн захиалгат лого дүрс"
LOAD_PRESET: "Үндсэн тохиргоог ачаалах"
RECOMPILE: "Дахин эмхэтгэх"
EXPORT: "Экспортлох"
QUICKTRAY_RECOMPILE: "QuickTray дахин эмхэтгэх дүрс тэмдэг"
QUICKTRAY_RECOMPILE_HELP: "Аливаа өөрчлөлт эсвэл шинэ залгаасыг авахын тулд урьдчилан тохируулсан SCSS -ийг дахин эмхэтгэх болно"
CODEMIRROR: "CodeMirror редактор"
CODEMIRROR_THEME: "Редакторын нүүр загвар"
CODEMIRROR_THEME_DESC: "**ТАЙЛБАР:** Эдгээрийг ажил хэрэг болгохын тулд [CodeMirror Themes Demo] (https://codemirror.net/demo/theme.html?target=_blank)-ийг ашиглаарай. **_Paper_** бол Grav-ийн үндсэн нүүр загвар юм."
CODEMIRROR_FONTSIZE: "Фонтын хэмжээг өөрчлөх"
CODEMIRROR_FONTSIZE_SM: "Жижиг фонт"
CODEMIRROR_FONTSIZE_MD: "Дундаж фонт"
CODEMIRROR_FONTSIZE_LG: "Том фонт"
CODEMIRROR_MD_FONT: "Markdown Фонт Өөрчлөгч"
CODEMIRROR_MD_FONT_SANS: "Sans Фонт"
CODEMIRROR_MD_FONT_MONO: "Моно/тогтмол өргөнт фонт"
CUSTOM_PRESETS: "Хувийн Тохиргоонууд"
CUSTOM_PRESETS_HELP: "Нүүр загварын .yaml файлыг энд чирж, эсвэл текст дээр суурилсан түлхүүрүүдээр урьдчилан тохируулсан массив үүсгэж болно."
CUSTOM_PRESETS_PLACEHOLDER: "Урьдчилсан тохиргоогоо энд тавь"
GENERAL: "Ерөнхий"
CONTENT_EDITOR: "Агуулга засварлагч"
CONTENT_EDITOR_HELP: "Агуулга засварлахын тулд захиалгат редакторыг илүүд үзэж болно"
BAD_FILENAME: "Муу файлын нэр"
SHOW_SENSITIVE: "Мэдрэмтгий өгөгдлийг харуулах"
SHOW_SENSITIVE_HELP: "ЗӨВХӨН Clockwork Provider: Мэдрэмжтэй байж болзошгүй мэдээллийг цензурлах (POST параметрүүд, күүки, файлууд, тохиргоо болон бүртгэлийн мессеж дэх ихэнх массив/объектын өгөгдөл)"
VALID_LINK_ATTRIBUTES: "Хүчинтэй холбоосын шинж чанарууд"
VALID_LINK_ATTRIBUTES_HELP: "Медиа HTML элементэд автоматаар нэмэгдэх шинж чанарууд"
CONFIGURATION: "Тохируулга"
CUSTOMIZATION: "Өөрчлөлт"
EXTRAS: "Нэмэлтүүд"
BASICS: "Үндсэн мэдээлэл"
ADMIN_CACHING: "Админ Кэшийг идэвхжүүлэх"
ADMIN_CACHING_HELP: "Админ дахь кэшийг урд талын сайтаас хамааралгүйгээр хянах боломжтой"
ADMIN_PATH: "Администраторын зам"
ADMIN_PATH_PLACEHOLDER: "Администраторын үндсэн маршрут (суурьтай харьцуулахад)"
ADMIN_PATH_HELP: "Хэрэв та администраторын URL хаягийг өөрчлөхийг хүсвэл энд замыг зааж өгөх боломжтой"
LOGO_TEXT: "Лого дүрсний текст"
LOGO_TEXT_HELP: "Үндсэн Grav логоны оронд харуулах текст"
CONTENT_PADDING: "Догол мөрний унах зай"
CONTENT_PADDING_HELP: "Илүү их зай гаргахын тулд агуулгын талбайн эргэн тойронд агуулагдах дэвсгэр хэсгийг идэвхтэй/идэвхгүй болгох"
BODY_CLASSES: "Биеийн ангиуд"
BODY_CLASSES_HELP: "Захиалгат биеийн ангиудын зайгаар тусгаарлагдсан нэрийг нэмнэ үү"
SIDEBAR_ACTIVATION: "Хажуугийн самбарыг идэвхжүүлэх"
SIDEBAR_ACTIVATION_HELP: "Хажуугийн самбар хэрхэн идэвхжсэнийг хянах"
SIDEBAR_HOVER_DELAY: "Хөдлөх саатал"
SIDEBAR_HOVER_DELAY_APPEND: "миллисекунд"
SIDEBAR_ACTIVATION_TAB: "Таб"
SIDEBAR_ACTIVATION_HOVER: "Зөөх"
SIDEBAR_SIZE: "Хажуугийн самбарын хэмжээ"
SIDEBAR_SIZE_HELP: "Хажуугийн самбарын өргөнийг хянах"
SIDEBAR_SIZE_AUTO: "Автомат өргөн"
SIDEBAR_SIZE_SMALL: "Жижиг өргөн"
EDIT_MODE: "Засварлах горим"
EDIT_MODE_HELP: "Хэрэв боломжтой бол Auto нь зураг төслийг ашиглах бөгөөд хэрэв олдохгүй бол \"Expert\" горимыг ашиглах болно."
FRONTEND_PREVIEW_TARGET: "Хуудасны зорилгыг урьдчилан үзэх"
FRONTEND_PREVIEW_TARGET_INLINE: "Админ дотор оруулна"
FRONTEND_PREVIEW_TARGET_NEW: "Шинэ таб"
FRONTEND_PREVIEW_TARGET_CURRENT: "Одоогийн таб"
PARENT_DROPDOWN: "Эх хувилбарын жагсаалт"
PARENT_DROPDOWN_BOTH: "Хаягны тодорхойлогч болон хавтас харуулах"
PARENT_DROPDOWN_FOLDER: "Хавтас харуулах"
PARENT_DROPDOWN_FULLPATH: "Замыг бүрэн харуулах"
PARENTS_LEVELS: "Эх хувилбарын түвшин"
PARENTS_LEVELS_HELP: "Эх хувилбарыг сонгох жагсаалтад харуулах түвшний тоо"
MODULAR_PARENTS: "Модульчлагдсан эх хувилбар"
MODULAR_PARENTS_HELP: "Модульчлагдсан хуудсыг эх хувилбар сонгосон жагсаалтад харуулах"
SHOW_GITHUB_LINK: "GitHub холбоосыг үзүүлэх"
SHOW_GITHUB_LINK_HELP: "\"Асуудал олсон уу? Үүнийг GitHub дээр мэдээлнэ үү\" мэдээг харуулах."
PAGES_LIST_DISPLAY_FIELD: "Хуудасны жагсаалтын дэлгэцийн талбар"
PAGES_LIST_DISPLAY_FIELD_HELP: "Хэрэв байгаа бол хуудасны жагсаалтад ашиглах хуудасны талбар. Анхдагч/Гарчиг руу буцах."
AUTO_UPDATES: "Шинэчлэлтийг автоматаар шалгана уу"
AUTO_UPDATES_HELP: "Шинэчлэлт бэлэн болсон үед мэдээллийн самбарыг админ самбар дээр харуулна."
TIMEOUT: "Хугацаа дууссан"
TIMEOUT_HELP: "Session Timeout секундээр"
HIDE_PAGE_TYPES: "Админ дахь хуудасны төрлийг нуух"
HIDE_MODULAR_PAGE_TYPES: "Админ дахь модульчлагдсан хуудасны төрлийг нуух"
DASHBOARD: "Хяналтын самбар"
WIDGETS_DISPLAY: "Виджетийг харуулах төлөв"
NOTIFICATIONS: "Мэдээлэлүүд"
FEED_NOTIFICATIONS: "Мэдээлэлээр хангах"
FEED_NOTIFICATIONS_HELP: "Хангалт дээр суурилсан мэдээлэл харуулах"
DASHBOARD_NOTIFICATIONS: "Хяналтын самбарын мэдэгдэл"
DASHBOARD_NOTIFICATIONS_HELP: "Хяналтын самбар дээр суурилсан мэдэгдлүүдийг харуулах"
PLUGINS_NOTIFICATIONS: "Мэдэгдэлийн өргөтгөлүүд"
PLUGINS_NOTIFICATIONS_HELP: "Өргөтгөлтэй хамааралтай мэдэгдэл харуулах"
THEMES_NOTIFICATIONS: "Нүүр загвар мэдэгдэл"
THEMES_NOTIFICATIONS_HELP: "Нүүр загвартай хамааралтай мэдэгдэл харуулах"
LOGO_BG_HELP: "Лого дүрс ар тал"
LOGO_LINK_HELP: "Лого дүрс линк"
NAV_BG_HELP: "Зам ар тал"
NAV_TEXT_HELP: "Зам текст"
NAV_LINK_HELP: "Зам линк"
NAV_SELECTED_BG_HELP: "Зам сонгогдсон ар тал"
NAV_SELECTED_LINK_HELP: "Зам сонгогдсон линк"
NAV_HOVER_BG_HELP: "Зам дэлгэх ар тал"
NAV_HOVER_LINK_HELP: "Зам дэлгэх линк"
TOOLBAR_BG_HELP: "Хэрэгслийн самбар ар тал"
TOOLBAR_TEXT_HELP: "Хэрэгслийн самбарын текст"
PAGE_BG_HELP: "Хуудас ар тал"
PAGE_TEXT_HELP: "Хуудас текст"
PAGE_LINK_HELP: "Хуудас линк"
CONTENT_BG_HELP: "Агуулгын ар тал"
CONTENT_TEXT_HELP: "Агуулгын текст"
CONTENT_LINK_HELP: "Агуулга линк"
CONTENT_LINK2_HELP: "Агуулга линк 2"
CONTENT_HEADER_HELP: "Агуулга толгой"
CONTENT_TABS_BG_HELP: "Агуулга таб ар тал"
CONTENT_TABS_TEXT_HELP: "Агуулга таб текст"
CONTENT_HIGHLIGHT_HELP: "Агуулгын тодруулга"
BUTTON_BG_HELP: "Товч ар тал"
BUTTON_TEXT_HELP: "Товч текст"
NOTICE_BG_HELP: "Мэдэгдэл ар тал"
NOTICE_TEXT_HELP: "Мэдэгдэл текст"
UPDATES_BG_HELP: "Шинэчлэл ар тал"
UPDATES_TEXT_HELP: "Шинэчлэл текст"
CRITICAL_BG_HELP: "Аюултай ар тал"
CRITICAL_TEXT_HELP: "Аюултай текст"
BUTTON_COLORS: "Товчлуурын өнгө"
CONTENT_COLORS: "Агуулгын өнгө"
TABS_COLORS: "Табуудын өнгө"
CRITICAL_COLORS: "Чухал өнгө"
LOGO_COLORS: "Лого өнгө"
NAV_COLORS: "Чиглэл өнгө"
NOTICE_COLORS: "Тодотгол өнгө"
PAGE_COLORS: "Хуудасны өнгө"
TOOLBAR_COLORS: "Хэрэгслийн самбарын өнгө"
UPDATE_COLORS: "Өнгийг шинэчлэх"
POPULARITY: "Тархац"
VISITOR_TRACKING: "Зочдыг хянах"
VISITOR_TRACKING_HELP: "Зочдын статистик мэдээллийг цуглуулах боломжийг идэвхжүүлнэ үү"
DAYS_OF_STATS: "Статистикийн өдрүүд"
DAYS_OF_STATS_HELP: "Статистикийг заасан хэдэн өдрийн турш байлгаад дараа нь хасна уу"
IGNORE_URLS: "Үл тоомсорлох"
IGNORE_URLS_HELP: "Үл тоомсорлох URL -ууд"
DAILY_HISTORY: "Өдөр тутмын түүх"
MONTHLY_HISTORY: "Сар бүрийн түүх"
VISITORS_HISTORY: "Зочдын түүх"
MEDIA_RESIZE: "Хуудасны Медиа Зураг Тохируулагч"
PAGEMEDIA_RESIZER: "> Хуудасны хэвлэл мэдээллийн хэрэгслээр байршуулсан зургуудад дараахь тохиргоог хийнэ. Өргөн / Өндөр хэмжээг өөрчлөх нь оролтод заасан хэмжээнээс давсан тохиолдолд автоматаар хэмжээг багасгаж, пропорцоор хэмжээг өөрчлөх болно. Нарийвчлалын минимум ба максимум утга нь байршуулсан зургуудын хэмжээ хязгаарыг тодорхойлдог. Аливаа гаргалтаас урьдчилан сэргийлэхийн тулд талбаруудыг 0 болгож тохируулна уу."
RESIZE_WIDTH: "Өргөний хэмжээг өөрчлөх"
RESIZE_WIDTH_HELP: "Өргөн зургуудын хэмжээг тогтоосон хэмжээнд хүртэл өөрчлөх"
RESIZE_HEIGHT: "Өндөр хэмжээг өөрчлөх"
RESIZE_HEIGHT_HELP: "Өндөр зургуудын хэмжээг тогтоосон хэмжээнд хүртэл өөрчлөх"
RES_MIN_WIDTH: "Хамгийн бага өргөн"
RES_MIN_WIDTH_HELP: "Зураг нэмж оруулах хамгийн бага өргөн"
RES_MIN_HEIGHT: "Хамгийн бага өндөр"
RES_MIN_HEIGHT_HELP: "Зураг нэмж оруулах хамгийн бага өндөр"
RES_MAX_WIDTH: "Хамгийн их өргөн"
RES_MAX_WIDTH_HELP: "Зураг нэмж оруулах хамгийн их өргөн"
RES_MAX_HEIGHT: "Хамгийн их өндөр"
RES_MAX_HEIGHT_HELP: "Зураг нэмж оруулах хамгийн их өндөр"
RESIZE_QUALITY: "Чанарын хэмжээг өөрчлөх"
RESIZE_QUALITY_HELP: "Зургийн хэмжээг өөрчлөх үед ашиглах чанар. 0 -ээс 1 хүртэлх утга."
PIXELS: "цэг"
ACCESS_ADMIN_CONFIGURATION_SECURITY: "Аюулгүй байдлын тохиргоог удирдах"
SESSION_DOMAIN: "Домайны хэсэг"
SESSION_DOMAIN_HELP: "Хэрэв та сайтын домайныг жишээ нь Docker контейнерт дахин бичсэн бол л ашиглаарай."
SESSION_PATH: "Хэсгийн зам"
SESSION_PATH_HELP: "Хэрэв та сайтын замыг жишээ нь Docker контейнерт дахин бичсэн бол л ашиглаарай."
REDIRECT_OPTION_NO_REDIRECT: "Дахин чиглүүлэхгүй"
REDIRECT_OPTION_DEFAULT_REDIRECT: "Анхдагч дахин чиглүүлэх кодыг ашиглана уу"
REDIRECT_OPTION_301: "301 - Бүрмөсөн нүүсэн"
REDIRECT_OPTION_302: "302 - Түр шилжсэн"
REDIRECT_OPTION_303: "303 - Бусдыг үзнэ үү"
IMAGES_CLS_TITLE: "Байршлын хуримтлалын өөрчлөлт (CLS)"
IMAGES_CLS_AUTO_SIZES: "Авто хэмжээг идэвхжүүлэх"
IMAGES_CLS_AUTO_SIZES_HELP: "CLS -ийг шийдвэрлэхийн тулд зураг дээр 'өргөн' ба 'өндөр' шинж чанаруудыг автоматаар нэмнэ үү"
IMAGES_CLS_ASPECT_RATIO: "Хамаарсан харьцааг идэвхжүүлэх"
IMAGES_CLS_ASPECT_RATIO_HELP: "CSS -д захиалгат хэв маягаар ашиглах боломжтой 'style' шинж чанараар ашиглагддаг нэмэлт CSS хувьсагч"
IMAGES_CLS_RETINA_SCALE: "Retina хамаарсан өөрчлөлтийн хувь"
IMAGES_CLS_RETINA_SCALE_HELP: "HiDPI -ийн нарийвчлалыг илүү сайн зохицуулахын тулд тооцоолсон хэмжээг авч, масштабын коэффициентэд хуваахын тулд өндөр нарийвчлалтай зургийг жижиг пикселийн хэмжээгээр харуулах болно."
AUTOREGENERATE_FOLDER_SLUG: "Хуудасны гарчиг дээр үндэслэн автоматаар сэргээнэ"
ENABLE: Идэвхжүүлэх
PLUGINS_MUST_BE_ENABLED: "Тохируулахын тулд өргөтгөлийг идэвхжүүлэх ёстой"
ACTIVATION_REQUIRED: "Тохируулахын тулд идэвхжүүлэх шаардлагатай"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Dette er en betaversjon! Bruk denne i produksjon på egen risiko..."
ADMIN_REPORT_ISSUE: "Oppdaget et problem? Vennligst rapport det på GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Drevet av Grav</a> - Det moderne flat file CMSet"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Drevet av Grav</a> - Det moderne flat file CMSet"
LOGIN_BTN: "Logg inn"
LOGIN_BTN_FORGOT: "Glemt"
LOGIN_BTN_RESET: "Nullstill passord"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Proszę, włącz JavaScript w przeglądarce."
ADMIN_BETA_MSG: "To jest wersja Beta! Używasz tego w produkcji na własne ryzyko..."
ADMIN_REPORT_ISSUE: "Znalazłeś błąd? Zgłoś to na GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Zaloguj"
LOGIN_BTN_FORGOT: "Zapomniałem"
LOGIN_BTN_RESET: "Zresetuj hasło"
@ -256,7 +256,7 @@ PLUGIN_ADMIN:
DEFAULT: "Domyślne"
PAGE_MEDIA: "Media strony"
OPTIONS: "Opcje"
PUBLISHED: "Opublikowana"
PUBLISHED: "Opublikowany"
PUBLISHED_HELP: "Domyślnie strona jest opublikowana, chyba że ustawiono czas publikacji, albo czas odpublikowania lub odpublikowano stronę ręcznie"
DATE: "Data"
DATE_HELP: "Zmienna date pozwala ustawić datę związaną z tą stroną."
@ -372,6 +372,7 @@ PLUGIN_ADMIN:
CACHE_PREFIX_HELP: "Identyfikator Grav. Nie zmieniać, chyba że wiesz co robisz."
CACHE_PURGE_JOB: "Uruchom zaplanowane zadanie czyszczenia"
CACHE_CLEAR_JOB: "Uruchom zaplanowane zadanie czyszczenia"
CACHE_JOB_TYPE: "Typ zadania pamięci podręcznej"
CACHE_PURGE: "Usuń Stare Dane"
LIFETIME: "Czas życia"
LIFETIME_HELP: "Ustaw okres życia plików pamięci podręcznej w sekundach. 0 = nieskończoność"
@ -436,6 +437,7 @@ PLUGIN_ADMIN:
SESSION: "Sesja"
SESSION_ENABLED_HELP: "Włącz obsługę sesji w Grav"
SESSION_NAME_HELP: "Identyfikator używany do utworzenia nazwy pliku cookie"
SESSION_UNIQUENESS: "Unikalny ciąg"
ABSOLUTE_URLS: "Bezwzględne adresy URL"
ABSOLUTE_URLS_HELP: "Bezwzględne lub względne adresy URL dla \"base_url\""
PARAMETER_SEPARATOR: "Separator parametrów"
@ -464,6 +466,7 @@ PLUGIN_ADMIN:
PAGE_FILE: "Szablon strony"
PAGE_FILE_HELP: "Nazwa pliku szablonu strony, oraz domyślnie wyświetlany szablon dla tej strony"
NO_USER_ACCOUNTS: "Brak użytkowników, proszę utworzyć pierwszego użytkownika..."
NO_USER_EXISTS: "Brak lokalnego użytkownika dla tego konta, nie można zapisać..."
REDIRECT_TRAILING_SLASH: "Przekieruj końcowy ukośnik"
REDIRECT_TRAILING_SLASH_HELP: "Wykonaj przekierowanie 301, zamiast obsługiwać adresy URI z końcowym ukośnikiem."
DEFAULT_DATE_FORMAT: "Format daty"
@ -483,6 +486,7 @@ PLUGIN_ADMIN:
PLUGIN_STATUS: "Status wtyczki"
INCLUDE_DEFAULT_LANG: "Załącz domyślny język"
INCLUDE_DEFAULT_LANG_HELP: "Zostaną dołączone do adresów URL kody języka z domyślnie ustawionego języka (np 'pl/blog/moj-post')"
INCLUDE_DEFAULT_LANG_FILE_EXTENSION: "Dołącz domyślny język w rozszerzeniu pliku"
ALLOW_URL_TAXONOMY_FILTERS: "Filtry taksonomii adresów URL"
ALLOW_URL_TAXONOMY_FILTERS_HELP: "Zbiory stron pozwalaną na filtrowanie używając `/taxonomy:value`."
REDIRECT_DEFAULT_CODE: "Domyślny kod przekierowania"
@ -522,6 +526,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Włącz tą opcję jeśli masz odwrotne proxy i masz problemy z adresami URL które zawierają niepoprawne porty"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Nieprawidłowy frontmatter, nie można zapisać"
ADD_FOLDER: "Dodaj folder"
COPY_PAGE: "Skopiuj stronę"
PROXY_URL: "Adres URL proxy"
PROXY_URL_HELP: "Wpisz HOST albo IP proxy i PORT"
NOTHING_TO_SAVE: "Nie ma nic do zapisania"
@ -566,6 +571,7 @@ PLUGIN_ADMIN:
FRONTMATTER_PROCESS_TWIG_HELP: "Gdy jest włączone, możesz używać zmiennych Twig we frontmatter dla strony"
FRONTMATTER_IGNORE_FIELDS: "Ignoruj pola frontmatter"
FRONTMATTER_IGNORE_FIELDS_HELP: "Niektóre pola frontmatter mogą zawierać Twig, ale nie powinny być przetwarzane, np. 'forms'"
FRONTMATTER_IGNORE_FIELDS_PLACEHOLDER: "przykładowo formularze"
PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pomyślnie zainstalowano pakiet %s"
ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Sortowanie niemożliwe z powodu ustawień nadrzędnych"
ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Strona nie jest widoczna, sortowanie wyłączone"
@ -684,6 +690,7 @@ PLUGIN_ADMIN:
GPM_OFFICIAL_ONLY: "Tylko oficjalne GPM"
GPM_OFFICIAL_ONLY_HELP: "Zezwalaj na bezpośrednie instalacje jedynie z oficjalnego repozytorium GPM."
SORTABLE_PAGES: "Sortowalne strony:"
UNSORTABLE_PAGES: "Niesortowalne strony"
ADMIN_SPECIFIC_OVERRIDES: "Nadpisania panelu admina"
ADMIN_CHILDREN_DISPLAY_ORDER: "Kolejność wyświetlania dzieci"
ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Kolejność, w której dzieci tej strony będą wyświetlane w widoku stron panelu admina"
@ -697,11 +704,13 @@ PLUGIN_ADMIN:
ENABLE_AUTO_METADATA_HELP: "Automatycznie generuj pliki metadanych dla obrazów z dołączonym Exif"
2FA_TITLE: "Uwierzytelnienie dwuetapowe"
2FA_INSTRUCTIONS: "##### Uwierzytelnienie dwuetapowe\nMasz na tym koncie włączone **2FA**. Użyj aplikacji od **2FA** i wprowadź aktualny **kod 6-cyfrowy**, aby zakończyć proces logowania."
2FA_REGEN_HINT: "Regeneracja sekretu będzie wymagać abyś uaktualnił dane w aplikacji uwierzytelniającej"
2FA_LABEL: "Dostęp administratora"
2FA_FAILED: "Nieprawidłowy kod uwierzytelnienia dwuetapowego, proszę spróbować ponownie..."
2FA_ENABLED: "2FA włączone"
2FA_CODE_INPUT: "000000"
2FA_SECRET: "Sekret 2FA"
2FA_SECRET_HELP: "Zeskanuj ten kod QR do swojej [Aplikacji Awierzytelniającej](https://learn.getgrav.org/admin-panel/2fa#apps). Dobrym pomysłem jest także stworzenie kopi zapasowej sekretu w bezpiecznym miejscu, na wypadek potrzeby przeinstalowania twojej aplikacji. Sprawdź [dokumentację Grav] (https://learn.getgrav.org/admin-panel/2fa) for more information) po więcej informacji."
2FA_REGENERATE: "Zregeneruj"
FORCE_LOWERCASE_URLS: "Wymuś URL małymi literami"
VIEW_SITE_TIP: "Wyświetl stronę"
@ -713,16 +722,31 @@ PLUGIN_ADMIN:
SCHEDULER: "Harmonogram"
SCHEDULER_INSTALL_INSTRUCTIONS: "Instrukcja instalacji"
SCHEDULER_INSTALLED_READY: "Zainstalowane i gotowe"
SCHEDULER_CRON_NA: "Cron jest niedostępny dla użytkownika: "
SCHEDULER_SETUP: "Ustawienia harmonogramu"
SCHEDULER_STATUS: "Status harmonogramu"
SCHEDULER_RUNAT: "Uruchom o"
SCHEDULER_OUTPUT: "Plik wyjściowy"
SCHEDULER_OUTPUT_TYPE: "Typ wyjścia"
SCHEDULER_EMAIL: "Email"
SCHEDULER_EMAIL_HELP: "E-mail do którego ma być wysłany rezultat. UWAGA: wymagane jest ustawienie pliku wyjściowego."
SECURITY: "Bezpieczeństwo"
XSS_WHITELIST_PERMISSIONS: "Uprawnienia białej listy"
XSS_INVALID_PROTOCOLS: "Filtr nieprawidłowych protokołów"
XSS_INVALID_PROTOCOLS_LIST: "Lista nieprawidłowych protokołów"
XSS_DANGEROUS_TAGS: "Filtruj niebezpieczne znaczniki HTML"
XSS_DANGEROUS_TAGS_LIST: "Lista niebezpiecznych tagów HTML"
XSS_ONSAVE_ISSUE: "Zapisywanie nie powiodło się: Znaleziono błąd XSS"
XSS_ISSUE: "<strong>UWAGA:</strong> Grav znalazł potencjalne problemy XSS w <strong>%s</strong>"
UPLOADS_SECURITY: "Zabezpieczenie wgrywania"
UPLOADS_DANGEROUS_EXTENSIONS: "Niebezpieczne rozszerzenia"
UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Blokuj te rozszerzenia przed wgraniem ich bez względu na akceptowalne typy MIME"
REPORTS: "Raporty"
LOGS: "Logi"
BACKUPS_MAX_COUNT: "Maksymalna liczba kopii zapasowych"
BACKUPS_MAX_COUNT_HELP: "0 jest nieskończone"
BACKUPS_MAX_SPACE: "Maksymalna ilość miejsca dla kopii zapasowych"
BACKUPS_MAX_RETENTION_TIME_APPEND: "w dniach"
BACKUPS_PROFILE_NAME: "Nazwa kopii zapasowej"
BACKUPS_PROFILE_ROOT_FOLDER: "Katalog główny"
BACKUPS_PROFILE_EXCLUDE_PATHS: "Wyklucz ścieżki"
@ -731,6 +755,36 @@ PLUGIN_ADMIN:
BACKUPS_PROFILE_SCHEDULE: "Włącz planowane zadania"
BACKUPS_PROFILE_SCHEDULE_AT: "Uruchom zaplanowane zadanie"
COMMAND: "Polecenie"
DEFAULT_LANG: "Nadpisz domyślny język"
DEBUGGER_PROVIDER: "Dostawca debugera"
DEBUGGER_CLOCKWORK: "Rozszerzenie Clockwork dla przeglądarki"
EXPERIMENTAL: "Eksperymentalny"
ACCOUNTS_TYPE: "Typ konta"
ACCOUNTS_STORAGE: "Pamięć konta"
MODULE_TEMPLATE: "Szablon modułu"
ADD_MODULE_CONTENT: "Dodaj zawartość modułu"
CHANGELOG: "Lista zmian"
PAGE_ACCESS: "Dostęp do strony"
PAGE PERMISSIONS: "Uprawnienia Strony"
PAGE_VISIBILITY_REQUIRES_ACCESS: "Aby wyświetlić menu potrzeby jest dostęp"
PAGE_VISIBILITY_REQUIRES_ACCESS_HELP: "Zaznacz Tak jeśli strona powinna być pokazana w menu tylko jeśli użytkownik ma do niej dostęp.\n"
PAGE_AUTHORS: "Autorzy strony"
PAGE_GROUPS: "Grupy stron"
READ: "Czytaj"
PUBLISH: "Publikuj"
LIST: "Lista"
ACCESS_SITE: "Strona"
ACCESS_SITE_LOGIN: "Zaloguj się do Strony"
ACCESS_ADMIN: "Admin"
ACCESS_ADMIN_LOGIN: "Zaloguj się do administratora"
ACCESS_ADMIN_SUPER: "Super Użytkownik"
ACCESS_ADMIN_CACHE: "Wyczyść pamięć podręczną"
ACCESS_ADMIN_CONFIGURATION: "Konfiguracja"
CUSTOM_CSS_LABEL: "Niestandardowy CSS"
CUSTOM_FOOTER: "Niestandardowa stopka"
CODEMIRROR_FONTSIZE_SM: "Mała czcionka"
CODEMIRROR_FONTSIZE_MD: "Średni czcionka"
CODEMIRROR_FONTSIZE_LG: "Duża czcionka"
CONFIGURATION: "Konfiguracja"
ADMIN_CACHING: "Włącz buforowanie panelu admina"
ADMIN_CACHING_HELP: "Buforowanie panelu admina można kontrolować niezależnie od reszty strony"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Por favor, ative o JavaScript no seu navegador."
ADMIN_BETA_MSG: "Esta é uma versão Beta! Usa-a em produção à tua responsabilidade..."
ADMIN_REPORT_ISSUE: "Encontrou um problema? Por favor reporte-o no GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\"> Gerado por Grav</a> - O moderno CMS de ficheiros simples"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\"> Gerado por Grav</a> - O moderno CMS de ficheiros simples"
LOGIN_BTN: "Entrar"
LOGIN_BTN_FORGOT: "Esqueci-me"
LOGIN_BTN_RESET: "Repôr Palavra-passe"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Vă rugăm să activați JavaScript în browser-ul dvs."
ADMIN_BETA_MSG: "Aceasta este o versiune Beta! Folosiți-o pe propiul risc..."
ADMIN_REPORT_ISSUE: "Ați găsit o problemă? Raportați-o pe Github."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Construit cu Grav</a> - CMS modern"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Construit cu Grav</a> - CMS modern"
LOGIN_BTN: "Logare"
LOGIN_BTN_FORGOT: "Ai uitat?"
LOGIN_BTN_RESET: "Resetarea parolei"

View File

@ -548,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "Включить, если находитесь за обратным прокси и испытываете проблемы с URL-адресов, содержащих некорректные порты"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Неверный формат вступления, не удалось сохранить"
ADD_FOLDER: "Добавить папку"
COPY_PAGE: "Копировать страницу"
PROXY_URL: "Адрес прокси"
PROXY_URL_HELP: "Введите адрес прокси или IP-адрес и номер порта"
NOTHING_TO_SAVE: "Нечего сохранять"
@ -1092,3 +1093,11 @@ PLUGIN_ADMIN:
SESSION_DOMAIN_HELP: "Используйте только если вы переписываете домен сайта, например в контейнере Docker."
SESSION_PATH: "Путь к сессии"
SESSION_PATH_HELP: "Используйте только если вы перепишете путь к сайту, например, в контейнере Docker."
REDIRECT_OPTION_NO_REDIRECT: "Без перенаправления"
REDIRECT_OPTION_DEFAULT_REDIRECT: "Использовать код перенаправления по умолчанию"
REDIRECT_OPTION_301: "301 - Перемещено навсегда"
REDIRECT_OPTION_302: "302 - Перемещено временно"
AUTOREGENERATE_FOLDER_SLUG: "Авторегенерация на основе заголовка страницы"
ENABLE: Включить
PLUGINS_MUST_BE_ENABLED: "Плагин должен быть включен для настройки"
ACTIVATION_REQUIRED: "Для настройки требуется активация"

View File

@ -0,0 +1,98 @@
---
PLUGIN_ADMIN:
LOGIN_BTN: "පිවිසෙන්න"
LOGIN_BTN_FORGOT: "අමතක වුනා"
LOGIN_FAILED: "පිවිසීමට අසමත්විය"
PAGES: "පිටු"
THEMES: "තේමා"
LOGOUT: "නික්මෙන්න"
BACK: "ආපසු"
NEXT: "ඊළඟ"
SAVE: "සුරකින්න"
NORMAL: "සාමාන්‍ය"
ERROR: "දෝෂය"
CLOSE: "වසන්න"
CANCEL: "අවලංගු"
CONTINUE: "ඉදිරියට"
CONFIRM: "තහවුරු"
ADD_FILTERS: "පෙරහන් එකතු කරන්න"
SEARCH_PAGES: "පිටු සොයන්න"
VERSION: "අනුවාදය"
UPDATE_THEME: "තේමාව යාවත්කාලකරන්න"
HOMEPAGE: "මුල් පිටුව"
LICENSE: "බලපත්‍රය"
REMOVE_THEME: "තේමාව යාවත්කාලකරන්න"
INSTALL_THEME: "තේමාව ස්ථාපනයකරන්න"
THEME: "තේමාව"
BACK_TO_THEMES: "තේමාවන්ට ආපසු"
ADD: "එකතු කරන්න"
CLEAR_CACHE_ALL_CACHE: "සියලුම නිහිත"
DAYS: "දවස්"
UPDATE: "යාවත්කාල"
BACKUP: "උපස්ථය"
BACKUPS: "උපස්ථ"
BACKUP_NOW: "දැන් උපස්ථකරන්න"
BACKUPS_STATS: "සංඛ්‍යාලේඛන උපස්ථකරන්න"
BACKUPS_HISTORY: "ඉතිහාසය උපස්ථකරන්න"
BACKUPS_PROFILES: "පැතිකඩයන් උපස්ථකරන්න"
BACKUPS_COUNT: "උපස්ථ ගණන"
BACKUPS_PROFILES_COUNT: "පැතිකඩ ගණන"
BACKUP_DATE: "උපස්ථ කළ දිනය"
STATISTICS: "සංඛ්‍යාලේඛන"
TODAY: "අද"
WEEK: "සතිය"
MONTH: "මාසය"
MON: "සඳු"
TUE: "අඟ"
WED: "බදා"
THU: "බ්‍රහ"
FRI: "සිකු"
SITE: "අඩවිය"
INFO: "තොරතුරු"
SYSTEM: "පද්ධතිය"
USER: "පරිශීලක"
ADD_ACCOUNT: "ගිණුම එකතු කරන්න"
INSTALLATION_FAILED: "ස්ථාපනය අසමත්විය"
UNINSTALL_FAILED: "අස්ථාපනය අසමත්විය"
UNINSTALL_SUCCESSFUL: "අස්ථාපනය සාර්ථකයි"
METHOD: "ක්‍රමය"
DOWNLOAD_BACKUP: "උපස්ථය බාගන්න"
UNKNOWN_ERRORS: "නොදන්නා දෝෂ"
MEDIA: "මාධ්‍යය"
ENABLED: "සබල කර ඇත"
'YES': "ඔව්"
'NO': "නැහැ"
NAME: "නම"
CONTENT: "අන්තර්ගතය"
SIZE: "ප්‍රමාණය"
ACTION: "ක්‍රියාමාර්ගය"
OPTIONS: "විකල්ප"
SETTINGS: "සැකසුම්"
FOLDER_NAME: "බහාලුමේ නම"
DISABLED: "අබල කර ඇත"
FOLDER: "බහාලුම"
ASCENDING: "ආරෝහණ"
DESCENDING: "අවරෝහණ"
PAGE: "පිටුව"
FILENAME: "ගොනුවේ නම"
HOME_PAGE: "මුල් පිටුව"
LANGUAGES: "භාෂා"
SAVE_LOCATION: "ස්ථානය සුරකින්න"
IGNORE_FILES: "ගොනු සුරකින්න"
IGNORE_FOLDERS: "බහාලුම් නොසලකන්න"
PAGE_TYPES: "පිටු වර්ග"
ACCESS_LEVELS: "ප්‍රවේශ මට්ටම්"
GROUPS: "සමූහ"
ADMIN_ACCESS: "පරිපාලන ප්‍රවේශය"
REMOVE_SUCCESSFUL: "ඉවත්කිරීම සාර්ථකයි"
REMOVE_FAILED: "ඉවත්කිරීමට අසමත්විය"
SESSION_SECURE: "ආරක්ෂිත"
ADD_FOLDER: "බහාලුම එකතු කරන්න"
COPY_PAGE: "පිටුව පිටපත්කරන්න"
INSTALLING: "ස්ථාපනය වෙමින්"
LOADING: "පූරණය වෙමින්.."
INSTALLING_PACKAGES: "ඇසුරුම්(ක්) ස්ථාපනය වෙමින්.."
READY_TO_INSTALL_PACKAGES: "ඇසුරුම්(ක්) ස්ථාපනයට සූදානම්ය"
PACKAGES_NOT_INSTALLED: "ඇසුරුම් ස්ථාපනය කර නැත"
REMOVE_THE: "%s ඉවත් කරන්න"
UPDATING: "යාවත්කාල වෙමින්"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Toto je Beta verzia! Používajte v ostrej prevádzke na vlastné riziko..."
ADMIN_REPORT_ISSUE: "Vyskytla sa chyba? Prosím, nahláste to na GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Poháňaný Grav-om</a> - moderný flat-file redakčný systém"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Poháňaný Grav-om</a> - moderný flat-file redakčný systém"
LOGIN_BTN: "Prihlásiť sa"
LOGIN_BTN_FORGOT: "Zabudli ste meno/heslo"
LOGIN_BTN_RESET: "Obnoviť heslo"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Ово је Бета издање! Користите га у раду на сопствену одговорност..."
ADMIN_REPORT_ISSUE: "Пронашли сте грешку? Пријавите је на GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Покреће се са Grav-ом</a> - Модерним Flat File CMS-ом"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Покреће се са Grav-ом</a> - Модерним Flat File CMS-ом"
LOGIN_BTN: "Пријава"
LOGIN_BTN_FORGOT: "Заборавили сте"
LOGIN_BTN_RESET: "Ресетуј лозинку"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Detta är en betaversion! Använd i produktion på egen risk..."
ADMIN_REPORT_ISSUE: "Hittat ett fel? Vänligen rapportera det på GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Logga in"
LOGIN_BTN_FORGOT: "Glömt"
LOGIN_BTN_RESET: "Återställ Lösenord"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "นี่เป็นรุ่นทดลอง หากคุณใช้บนเว็บจริงคุณต้องยอมรับในความเสี่ยงนั้นเอง"
ADMIN_REPORT_ISSUE: "พบปัญหา กรุณารายงานบน GitHub"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">ขับเคลื่อนด้วย Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">ขับเคลื่อนด้วย Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "เข้าสู่ระบบ"
LOGIN_BTN_FORGOT: "ลืมรหัสผ่าน"
LOGIN_BTN_RESET: "กำหนดรหัสผ่านใหม่"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Lütfen tarayıcınızda Javascript aktive edin."
ADMIN_BETA_MSG: "Bu bir beta sürümüdür! Sunucunuzda kullanmak sizin sorumluluğunuzdadır..."
ADMIN_REPORT_ISSUE: "Hata mı var? Lütfen GitHub aracılığıyla bildirin."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Grav ile güçlendirilmiştir</a> - Modern Düz Dosya CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Grav ile güçlendirilmiştir</a> - Modern Düz Dosya CMS"
LOGIN_BTN: "Giriş"
LOGIN_BTN_FORGOT: "Şifremi Unuttum"
LOGIN_BTN_RESET: "Şifreni Sıfırla"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "Будь ласка, увімкніть JavaScript у Вашому браузері."
ADMIN_BETA_MSG: "Це бета-реліз! Використовуйте його на продуктовому сервері на свій страх і ризик..."
ADMIN_REPORT_ISSUE: "Виявила проблему? Будь ласка, повідомте про це на GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Працює на Grav</a> - сучасна файлова CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Працює на Grav</a> - сучасна файлова CMS"
LOGIN_BTN: "Увійти"
LOGIN_BTN_FORGOT: "Забув"
LOGIN_BTN_RESET: "Скинути пароль"
@ -410,6 +410,8 @@ PLUGIN_ADMIN:
SESSION: "Сесія"
SESSION_ENABLED_HELP: "Увімкнути підтримку сесії в Grav"
ABSOLUTE_URLS: "Абсолютні посилання"
PARAMETER_SEPARATOR: "Розділювач параметрів"
PARAMETER_SEPARATOR_HELP: "Роздільник параметрів, які можна змінити для Apache на Windows"
TASK_COMPLETED: "Завдання завершене"
EVERYTHING_UP_TO_DATE: "Усе найновішої версії"
UPDATES_ARE_AVAILABLE: "оновлень(ня) доступно"
@ -417,6 +419,7 @@ PLUGIN_ADMIN:
IS_NOW_AVAILABLE: "вже доступно"
CURRENT: "Поточний"
UPDATE_GRAV_NOW: "Оновити Grav зараз"
GRAV_SYMBOLICALLY_LINKED: "Grav символічно пов'язано. Оновлення не будуть доступні"
UPDATING_PLEASE_WAIT: "Оновлення... зачекайте будь ласка, завантажуємо"
OF_THIS: "цього"
OF_YOUR: "з вашого"
@ -432,6 +435,7 @@ PLUGIN_ADMIN:
SAVE_LOCATION: "Зберегти місцерозташування"
PAGE_FILE: "Шаблон сторінки"
PAGE_FILE_HELP: "Ім'я файлу шаблону сторінки, який за визначенням використовується як шаблон для відображення цієї сторінки."
NO_USER_ACCOUNTS: "Облікові записи користувача не знайдені, будь ласка, спочатку створіть їх..."
DEFAULT_DATE_FORMAT: "Формат дати"
DEFAULT_DATE_FORMAT_HELP: "Формат дати сторінки, який використовує Grav. Типово, Grav намагається самостійно визначити правильний формат дати, однак ви можете вказати потрібний формат за допомогою синтаксису дати PHP (наприклад, Y-m-d H:i)"
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Визначити автоматично"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "Đây là phiên bản thử nghiệm! Bạn phải tự chịu rủi ro khi sử dụng trong production..."
ADMIN_REPORT_ISSUE: "Tìm thấy một lỗi? Xin vui lòng báo cáo trên GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Cung cấp bởi Grav</a> - The Modern Flat File CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Cung cấp bởi Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Đăng nhập"
LOGIN_BTN_FORGOT: "Quên"
LOGIN_BTN_RESET: "Đặt lại mật khẩu"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "请在您的浏览器中启用 JavaScript。"
ADMIN_BETA_MSG: "这是一个 Beta 版本!若在生产环境中使用,请自行承担责任。"
ADMIN_REPORT_ISSUE: "遇到问题?请提交到 GitHub。"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">由 Grav 驱动</a> - 先进的纯文件 CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">由 Grav 驱动</a> - 先进的纯文件 CMS"
LOGIN_BTN: "登录"
LOGIN_BTN_FORGOT: "忘记密码"
LOGIN_BTN_RESET: "重置密码"
@ -416,6 +416,8 @@ PLUGIN_ADMIN:
JAVASCRIPT_MINIFY_HELP: "在管道化同时压缩 JavaScript"
ENABLED_TIMESTAMPS_ON_ASSETS: "在资源上启用时间戳"
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "启用在资源上的时间戳"
ENABLED_SRI_ON_ASSETS: "在资源上启用 SRI"
ENABLED_SRI_ON_ASSETS_HELP: "启用资源 SRI"
COLLECTIONS: "集合"
ERROR_HANDLER: "错误处理"
DISPLAY_ERRORS: "显示错误"
@ -546,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "如果你在反向代理之后并且你的URL包含不正确的端口启用此项"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "无效 frontmatter不能保存"
ADD_FOLDER: "添加文件夹"
COPY_PAGE: "复制页面"
PROXY_URL: "代理 URL"
PROXY_URL_HELP: "输入代理服务器主机或 IP 和端口"
NOTHING_TO_SAVE: "没有要保存的数据"
@ -1040,6 +1043,7 @@ PLUGIN_ADMIN:
CONTENT_HEADER_HELP: "内容标题"
CONTENT_TABS_BG_HELP: "内容标签页背景"
CONTENT_TABS_TEXT_HELP: "内容标签页文本"
CONTENT_HIGHLIGHT_HELP: "内容高亮"
BUTTON_BG_HELP: "按钮背景"
BUTTON_TEXT_HELP: "按钮文本"
NOTICE_BG_HELP: "通知背景"
@ -1085,3 +1089,24 @@ PLUGIN_ADMIN:
RESIZE_QUALITY: "调整质量"
RESIZE_QUALITY_HELP: "调整图像大小时使用的质量。取值介于 0 到 1 之间。"
PIXELS: "像素"
ACCESS_ADMIN_CONFIGURATION_SECURITY: "管理安全配置"
SESSION_DOMAIN: "Session 域"
SESSION_DOMAIN_HELP: "仅在您重写站点域名时使用,例如在 Docker 容器中。"
SESSION_PATH: "Session 路径"
SESSION_PATH_HELP: "仅在您重写站点路径时使用,例如在 Docker 容器中。"
REDIRECT_OPTION_NO_REDIRECT: "没有重定向"
REDIRECT_OPTION_DEFAULT_REDIRECT: "使用默认重定向代码"
REDIRECT_OPTION_301: "301 - 永久移动"
REDIRECT_OPTION_302: "302 - 临时移动"
REDIRECT_OPTION_303: "303 - 查看其他"
IMAGES_CLS_TITLE: "累积布局偏移 (CLS)"
IMAGES_CLS_AUTO_SIZES: "启用自动尺寸"
IMAGES_CLS_AUTO_SIZES_HELP: "自动将 '宽度' 和 '高度' 属性添加到图片以应对 CLS"
IMAGES_CLS_ASPECT_RATIO: "启用宽高比"
IMAGES_CLS_ASPECT_RATIO_HELP: "通过 'style' 属性应用的可选的 CSS 变量,可以在 CSS 中用于自定义样式"
IMAGES_CLS_RETINA_SCALE: "Retina 缩放倍数"
IMAGES_CLS_RETINA_SCALE_HELP: "将计算出的尺寸除以缩放率,以较小像素大小显示较高分辨率图像,从而更好地处理 HiDPI 分辨率"
AUTOREGENERATE_FOLDER_SLUG: "基于页面标题自动生成"
ENABLE: 启用
PLUGINS_MUST_BE_ENABLED: "必须启用插件才能配置"
ACTIVATION_REQUIRED: "配置需要先激活"

View File

@ -2,7 +2,7 @@
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "這是 Beta 版!如果要用在營運中請自行承擔風險…"
ADMIN_REPORT_ISSUE: "發現有問題?請回報到 GitHub 上。"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">由 Grav 提供技術驅動</a> - 現代純文字檔案管理系統"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">由 Grav 提供技術驅動</a> - 現代純文字檔案管理系統"
LOGIN_BTN: "登入"
LOGIN_BTN_FORGOT: "忘記密碼"
LOGIN_BTN_RESET: "重設密碼"

View File

@ -3,7 +3,7 @@ PLUGIN_ADMIN:
ADMIN_NOSCRIPT_MSG: "请在您的浏览器中启用 JavaScript。"
ADMIN_BETA_MSG: "这是一个 Beta 版本!若在生产环境中使用,请自行承担责任。"
ADMIN_REPORT_ISSUE: "遇到问题?请提交到 GitHub。"
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">由 Grav 驱动</a> - 先进的纯文件 CMS"
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">由 Grav 驱动</a> - 先进的纯文件 CMS"
LOGIN_BTN: "登录"
LOGIN_BTN_FORGOT: "忘记密码"
LOGIN_BTN_RESET: "重置密码"
@ -416,6 +416,8 @@ PLUGIN_ADMIN:
JAVASCRIPT_MINIFY_HELP: "在管道化同时压缩 JavaScript"
ENABLED_TIMESTAMPS_ON_ASSETS: "在资源上启用时间戳"
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "启用在资源上的时间戳"
ENABLED_SRI_ON_ASSETS: "在资源上启用 SRI"
ENABLED_SRI_ON_ASSETS_HELP: "启用资源 SRI"
COLLECTIONS: "集合"
ERROR_HANDLER: "错误处理"
DISPLAY_ERRORS: "显示错误"
@ -546,6 +548,7 @@ PLUGIN_ADMIN:
REVERSE_PROXY_HELP: "如果你在反向代理之后并且你的URL包含不正确的端口启用此项"
INVALID_FRONTMATTER_COULD_NOT_SAVE: "无效 frontmatter不能保存"
ADD_FOLDER: "添加文件夹"
COPY_PAGE: "复制页面"
PROXY_URL: "代理 URL"
PROXY_URL_HELP: "输入代理服务器主机或 IP 和端口"
NOTHING_TO_SAVE: "没有要保存的数据"
@ -1040,6 +1043,7 @@ PLUGIN_ADMIN:
CONTENT_HEADER_HELP: "内容标题"
CONTENT_TABS_BG_HELP: "内容标签页背景"
CONTENT_TABS_TEXT_HELP: "内容标签页文本"
CONTENT_HIGHLIGHT_HELP: "内容高亮"
BUTTON_BG_HELP: "按钮背景"
BUTTON_TEXT_HELP: "按钮文本"
NOTICE_BG_HELP: "通知背景"
@ -1085,3 +1089,24 @@ PLUGIN_ADMIN:
RESIZE_QUALITY: "调整质量"
RESIZE_QUALITY_HELP: "调整图像大小时使用的质量。取值介于 0 到 1 之间。"
PIXELS: "像素"
ACCESS_ADMIN_CONFIGURATION_SECURITY: "管理安全配置"
SESSION_DOMAIN: "Session 域"
SESSION_DOMAIN_HELP: "仅在您重写站点域名时使用,例如在 Docker 容器中。"
SESSION_PATH: "Session 路径"
SESSION_PATH_HELP: "仅在您重写站点路径时使用,例如在 Docker 容器中。"
REDIRECT_OPTION_NO_REDIRECT: "没有重定向"
REDIRECT_OPTION_DEFAULT_REDIRECT: "使用默认重定向代码"
REDIRECT_OPTION_301: "301 - 永久移动"
REDIRECT_OPTION_302: "302 - 临时移动"
REDIRECT_OPTION_303: "303 - 查看其他"
IMAGES_CLS_TITLE: "累积布局偏移 (CLS)"
IMAGES_CLS_AUTO_SIZES: "启用自动尺寸"
IMAGES_CLS_AUTO_SIZES_HELP: "自动将 '宽度' 和 '高度' 属性添加到图片以应对 CLS"
IMAGES_CLS_ASPECT_RATIO: "启用宽高比"
IMAGES_CLS_ASPECT_RATIO_HELP: "通过 'style' 属性应用的可选的 CSS 变量,可以在 CSS 中用于自定义样式"
IMAGES_CLS_RETINA_SCALE: "Retina 缩放倍数"
IMAGES_CLS_RETINA_SCALE_HELP: "将计算出的尺寸除以缩放率,以较小像素大小显示较高分辨率图像,从而更好地处理 HiDPI 分辨率"
AUTOREGENERATE_FOLDER_SLUG: "基于页面标题自动生成"
ENABLE: 启用
PLUGINS_MUST_BE_ENABLED: "必须启用插件才能配置"
ACTIVATION_REQUIRED: "配置需要先激活"

View File

@ -37,4 +37,9 @@ forms:
id: twofa-code
autofocus: true
placeholder: PLUGIN_ADMIN.2FA_CODE_INPUT
description: or
yubikey_otp:
type: text
id: yubikey-otp
placeholder: PLUGIN_ADMIN.YUBIKEY_OTP_INPUT
---

View File

@ -0,0 +1 @@
node_modules/

View File

@ -35,7 +35,6 @@
"generator-star-spacing": [2, { "before": true, "after": true }],
"guard-for-in": 0,
"handle-callback-err": [2, "^(err|error)$" ],
"indent": [2, 4, { "SwitchCase": 1 }],
"key-spacing": [2, { "beforeColon": false, "afterColon": true }],
"linebreak-style": 0,
"lines-around-comment": 0,

View File

@ -3,259 +3,309 @@ import Sortable from 'sortablejs';
import '../../utils/jquery-utils';
export default class CollectionsField {
constructor() {
this.lists = $();
constructor() {
this.lists = $();
$('[data-type="collection"]').each((index, list) => this.addList(list));
$('body').on('mutation._grav', this._onAddedNodes.bind(this));
const body = $('body');
$('[data-type="collection"]').each((index, list) => this.addList(list));
body.on('mutation._grav', this._onAddedNodes.bind(this));
body.on('click', (event) => {
const target = $(event.target);
if (!(target.is('[data-action="confirm"], [data-action="delete"]') || target.closest('[data-action="confirm"], [data-action="delete"]').length)) {
CollectionsField.closeConfirmations();
}
});
}
addList(list) {
list = $(list);
this.lists = this.lists.add(list);
list.on('click', '> .collection-actions [data-action="add"]', (event) => this.addItem(event));
list.on('click', '> ul > li > .item-actions [data-action="confirm"]', (event) => this.confirmRemove(event));
list.on('click', '> ul > li > .item-actions [data-action="delete"]', (event) => this.removeItem(event));
list.on('click', '> ul > li > .item-actions [data-action="collapse"]', (event) => this.collapseItem(event));
list.on('click', '> ul > li > .item-actions [data-action="expand"]', (event) => this.expandItem(event));
list.on('click', '> .collection-actions [data-action-sort="date"]', (event) => this.sortItems(event));
list.on('click', '> .collection-actions [data-action="collapse_all"]', (event) => this.collapseItems(event));
list.on('click', '> .collection-actions [data-action="expand_all"]', (event) => this.expandItems(event));
list.on('input change', '[data-key-observe]', (event) => this.observeKey(event));
list.find('[data-collection-holder]').each((index, container) => {
container = $(container);
if (container.data('collection-sort') || container[0].hasAttribute('data-collection-nosort')) {
return;
}
container.data('collection-sort', new Sortable(container.get(0), {
forceFallback: false,
handle: '.collection-sort',
animation: 150,
onUpdate: () => this.reindex(container)
}));
});
this._updateActionsStateBasedOnMinMax(list);
}
addItem(event) {
let button = $(event.currentTarget);
let position = button.data('action-add') || 'bottom';
let list = $(button.closest('[data-type="collection"]'));
let template = $(list.find('> [data-collection-template="new"]').data('collection-template-html'));
this._updateActionsStateBasedOnMinMax(list);
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let maxItems = list.data('max');
if (typeof maxItems !== 'undefined' && items.length >= maxItems) {
return;
}
addList(list) {
list = $(list);
this.lists = this.lists.add(list);
list.find('> [data-collection-holder]')[position === 'top'
? 'prepend'
: 'append'](template);
this.reindex(list);
list.on('click', '> .collection-actions [data-action="add"]', (event) => this.addItem(event));
list.on('click', '> ul > li > .item-actions [data-action="delete"]', (event) => this.removeItem(event));
list.on('click', '> ul > li > .item-actions [data-action="collapse"]', (event) => this.collapseItem(event));
list.on('click', '> ul > li > .item-actions [data-action="expand"]', (event) => this.expandItem(event));
list.on('click', '> .collection-actions [data-action-sort="date"]', (event) => this.sortItems(event));
list.on('click', '> .collection-actions [data-action="collapse_all"]', (event) => this.collapseItems(event));
list.on('click', '> .collection-actions [data-action="expand_all"]', (event) => this.expandItems(event));
list.on('input change', '[data-key-observe]', (event) => this.observeKey(event));
items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let topAction = list.closest('[data-type="collection"]').find('[data-action-add="top"]');
let sortAction = list.closest('[data-type="collection"]').find('[data-action="sort"]');
list.find('[data-collection-holder]').each((index, container) => {
container = $(container);
if (container.data('collection-sort') || container[0].hasAttribute('data-collection-nosort')) { return; }
container.data('collection-sort', new Sortable(container.get(0), {
forceFallback: false,
handle: '.collection-sort',
animation: 150,
onUpdate: () => this.reindex(container)
}));
});
this._updateActionsStateBasedOnMinMax(list);
if (items.length) {
if (topAction.length) {
topAction.parent().removeClass('hidden');
}
if (sortAction.length && items.length > 1) {
sortAction.removeClass('hidden');
}
}
addItem(event) {
let button = $(event.currentTarget);
let position = button.data('action-add') || 'bottom';
let list = $(button.closest('[data-type="collection"]'));
let template = $(list.find('> [data-collection-template="new"]').data('collection-template-html'));
// refresh toggleables in a list
$('[data-grav-field="toggleable"] input[type="checkbox"]').trigger('change');
}
this._updateActionsStateBasedOnMinMax(list);
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let maxItems = list.data('max');
if (typeof maxItems !== 'undefined' && items.length >= maxItems) {
static closeConfirmations() {
$('.list-confirm-deletion[data-action="delete"]').addClass('hidden');
}
confirmRemove(event) {
const button = $(event.currentTarget);
const list = $(button.closest('.item-actions'));
const action = list.find('.list-confirm-deletion[data-action="delete"]');
const isHidden = action.hasClass('hidden');
CollectionsField.closeConfirmations();
action[isHidden ? 'removeClass' : 'addClass']('hidden');
}
removeItem(event) {
let button = $(event.currentTarget);
let item = button.closest('[data-collection-item]');
let list = $(button.closest('[data-type="collection"]'));
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let minItems = list.data('min');
if (typeof minItems !== 'undefined' && items.length <= minItems) {
return;
}
item.remove();
this.reindex(list);
items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let topAction = list.closest('[data-type="collection"]').find('[data-action-add="top"]');
let sortAction = list.closest('[data-type="collection"]').find('[data-action="sort"]');
if (!items.length) {
if (topAction.length) {
topAction.parent().addClass('hidden');
}
}
if (sortAction.length && items.length <= 1) {
sortAction.addClass('hidden');
}
this._updateActionsStateBasedOnMinMax(list);
}
collapseItems(event) {
let button = $(event.currentTarget);
let items = $(button.closest('[data-type="collection"]')).find('> ul > [data-collection-item] > .item-actions [data-action="collapse"]');
items.click();
}
collapseItem(event) {
let button = $(event.currentTarget);
let item = button.closest('[data-collection-item]');
button.attr('data-action', 'expand').removeClass('fa-chevron-circle-down').addClass('fa-chevron-circle-right');
item.addClass('collection-collapsed');
}
expandItems(event) {
let button = $(event.currentTarget);
let items = $(button.closest('[data-type="collection"]')).find('> ul > [data-collection-item] > .item-actions [data-action="expand"]');
items.click();
}
expandItem(event) {
let button = $(event.currentTarget);
let item = button.closest('[data-collection-item]');
button.attr('data-action', 'collapse').removeClass('fa-chevron-circle-right').addClass('fa-chevron-circle-down');
item.removeClass('collection-collapsed');
}
sortItems(event) {
let button = $(event.currentTarget);
let sortby = button.data('action-sort');
let sortby_dir = button.data('action-sort-dir') || 'asc';
let list = $(button.closest('[data-type="collection"]'));
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
items.sort((a, b) => {
let A = $(a).find('[name$="[' + sortby + ']"]');
let B = $(b).find('[name$="[' + sortby + ']"]');
let sort;
if (sortby_dir === 'asc') {
sort = (A.val() < B.val())
? -1
: (A.val() > B.val())
? 1
: 0;
} else {
sort = (A.val() > B.val())
? -1
: (A.val() < B.val())
? 1
: 0;
}
return sort;
}).each((_, container) => {
$(container).parent().append(container);
});
this.reindex(list);
}
observeKey(event) {
let input = $(event.target);
let value = input.val();
let item = input.closest('[data-collection-key]');
item.data('collection-key-backup', item.data('collection-key')).data('collection-key', value);
this.reindex(null, item);
}
reindex(list, items) {
items = items || $(list).closest('[data-type="collection"]').find('> ul > [data-collection-item]');
items.each((index, item) => {
item = $(item);
let observed = item.find('[data-key-observe]');
let observedValue = observed.val();
let hasCustomKey = observed.length;
let currentKey = item.data('collection-key-backup');
item.attr('data-collection-key', hasCustomKey
? observedValue
: index);
['name', 'data-grav-field-name', 'for', 'id', 'data-grav-file-settings', 'data-file-post-add', 'data-file-post-remove', 'data-grav-array-name'].forEach((prop) => {
item.find('[' + prop + '], [_' + prop + ']').each(function() {
let element = $(this);
let indexes = [];
let array_index = null;
let regexps = [
new RegExp('\\[(\\d+|\\*|' + currentKey + ')\\]', 'g'),
new RegExp('\\.(\\d+|\\*|' + currentKey + ')\\.', 'g')
];
// special case to preserve array field index keys
if (prop === 'name' && element.data('gravArrayType')) {
const match_index = element.attr(prop).match(/\[[0-9]{1,}\]$/);
const pattern = element[0].closest('[data-grav-array-name]').dataset.gravArrayName;
if (match_index && pattern) {
array_index = match_index[0];
element.attr(prop, `${pattern}${match_index[0]}`);
return;
}
}
if (hasCustomKey && !observedValue) {
element.attr(`_${prop}`, element.attr(prop));
element.attr(prop, null);
return;
}
}
list.find('> [data-collection-holder]')[position === 'top' ? 'prepend' : 'append'](template);
this.reindex(list);
if (element.attr(`_${prop}`)) {
element.attr(prop, element.attr(`_${prop}`));
element.attr(`_${prop}`, null);
}
items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let topAction = list.closest('[data-type="collection"]').find('[data-action-add="top"]');
let sortAction = list.closest('[data-type="collection"]').find('[data-action="sort"]');
element.parents('[data-collection-key]').map((idx, parent) => indexes.push($(parent).attr('data-collection-key')));
indexes.reverse();
if (items.length) {
if (topAction.length) { topAction.parent().removeClass('hidden'); }
if (sortAction.length && items.length > 1) { sortAction.removeClass('hidden'); }
}
// refresh toggleables in a list
$('[data-grav-field="toggleable"] input[type="checkbox"]').trigger('change');
}
removeItem(event) {
let button = $(event.currentTarget);
let item = button.closest('[data-collection-item]');
let list = $(button.closest('[data-type="collection"]'));
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let minItems = list.data('min');
if (typeof minItems !== 'undefined' && items.length <= minItems) {
return;
}
item.remove();
this.reindex(list);
items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let topAction = list.closest('[data-type="collection"]').find('[data-action-add="top"]');
let sortAction = list.closest('[data-type="collection"]').find('[data-action="sort"]');
if (!items.length) {
if (topAction.length) { topAction.parent().addClass('hidden'); }
}
if (sortAction.length && items.length <= 1) { sortAction.addClass('hidden'); }
this._updateActionsStateBasedOnMinMax(list);
}
collapseItems(event) {
let button = $(event.currentTarget);
let items = $(button.closest('[data-type="collection"]')).find('> ul > [data-collection-item] > .item-actions [data-action="collapse"]');
items.click();
}
collapseItem(event) {
let button = $(event.currentTarget);
let item = button.closest('[data-collection-item]');
button.attr('data-action', 'expand').removeClass('fa-chevron-circle-down').addClass('fa-chevron-circle-right');
item.addClass('collection-collapsed');
}
expandItems(event) {
let button = $(event.currentTarget);
let items = $(button.closest('[data-type="collection"]')).find('> ul > [data-collection-item] > .item-actions [data-action="expand"]');
items.click();
}
expandItem(event) {
let button = $(event.currentTarget);
let item = button.closest('[data-collection-item]');
button.attr('data-action', 'collapse').removeClass('fa-chevron-circle-right').addClass('fa-chevron-circle-down');
item.removeClass('collection-collapsed');
}
sortItems(event) {
let button = $(event.currentTarget);
let sortby = button.data('action-sort');
let sortby_dir = button.data('action-sort-dir') || 'asc';
let list = $(button.closest('[data-type="collection"]'));
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
items.sort((a, b) => {
let A = $(a).find('[name$="[' + sortby + ']"]');
let B = $(b).find('[name$="[' + sortby + ']"]');
let sort;
if (sortby_dir === 'asc') {
sort = (A.val() < B.val()) ? -1 : (A.val() > B.val()) ? 1 : 0;
} else {
sort = (A.val() > B.val()) ? -1 : (A.val() < B.val()) ? 1 : 0;
let matchedKey = currentKey;
let replaced = element.attr(prop).replace(regexps[0], (/* str, p1, offset */) => {
let extras = '';
if (array_index) {
extras = array_index;
console.log(indexes, extras);
}
return sort;
}).each((_, container) => {
$(container).parent().append(container);
matchedKey = indexes.shift() || matchedKey;
return `[${matchedKey}]${extras}`;
});
replaced = replaced.replace(regexps[1], (/* str, p1, offset */) => {
matchedKey = indexes.shift() || matchedKey;
return `.${matchedKey}.`;
});
element.attr(prop, replaced);
});
});
});
}
this.reindex(list);
_onAddedNodes(event, target/* , record, instance */) {
let collections = $(target).find('[data-type="collection"]');
if (!collections.length) {
return;
}
observeKey(event) {
let input = $(event.target);
let value = input.val();
let item = input.closest('[data-collection-key]');
collections.each((index, collection) => {
collection = $(collection);
if (!~this.lists.index(collection)) {
this.addList(collection);
}
});
}
item.data('collection-key-backup', item.data('collection-key')).data('collection-key', value);
this.reindex(null, item);
_updateActionsStateBasedOnMinMax(list) {
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let minItems = list.data('min');
let maxItems = list.data('max');
list.find('> .collection-actions [data-action="add"]').attr('disabled', false);
list.find('> ul > li > .item-actions [data-action="delete"]').attr('disabled', false);
if (typeof minItems !== 'undefined' && items.length <= minItems) {
list.find('> ul > li > .item-actions [data-action="delete"]').attr('disabled', true);
}
reindex(list, items) {
items = items || $(list).closest('[data-type="collection"]').find('> ul > [data-collection-item]');
items.each((index, item) => {
item = $(item);
let observed = item.find('[data-key-observe]');
let observedValue = observed.val();
let hasCustomKey = observed.length;
let currentKey = item.data('collection-key-backup');
item.attr('data-collection-key', hasCustomKey ? observedValue : index);
['name', 'data-grav-field-name', 'for', 'id', 'data-grav-file-settings', 'data-file-post-add', 'data-file-post-remove', 'data-grav-array-name'].forEach((prop) => {
item.find('[' + prop + '], [_' + prop + ']').each(function() {
let element = $(this);
let indexes = [];
let array_index = null;
let regexps = [
new RegExp('\\[(\\d+|\\*|' + currentKey + ')\\]', 'g'),
new RegExp('\\.(\\d+|\\*|' + currentKey + ')\\.', 'g')
];
// special case to preserve array field index keys
if (prop === 'name' && element.data('gravArrayType')) {
const match_index = element.attr(prop).match(/\[[0-9]{1,}\]$/);
const pattern = element[0].closest('[data-grav-array-name]').dataset.gravArrayName;
if (match_index && pattern) {
array_index = match_index[0];
element.attr(prop, `${pattern}${match_index[0]}`);
return;
}
}
if (hasCustomKey && !observedValue) {
element.attr(`_${prop}`, element.attr(prop));
element.attr(prop, null);
return;
}
if (element.attr(`_${prop}`)) {
element.attr(prop, element.attr(`_${prop}`));
element.attr(`_${prop}`, null);
}
element.parents('[data-collection-key]').map((idx, parent) => indexes.push($(parent).attr('data-collection-key')));
indexes.reverse();
let matchedKey = currentKey;
let replaced = element.attr(prop).replace(regexps[0], (/* str, p1, offset */) => {
let extras = '';
if (array_index) { extras = array_index; console.log(indexes, extras); }
matchedKey = indexes.shift() || matchedKey;
return `[${matchedKey}]${extras}`;
});
replaced = replaced.replace(regexps[1], (/* str, p1, offset */) => {
matchedKey = indexes.shift() || matchedKey;
return `.${matchedKey}.`;
});
element.attr(prop, replaced);
});
});
});
}
_onAddedNodes(event, target/* , record, instance */) {
let collections = $(target).find('[data-type="collection"]');
if (!collections.length) { return; }
collections.each((index, collection) => {
collection = $(collection);
if (!~this.lists.index(collection)) {
this.addList(collection);
}
});
}
_updateActionsStateBasedOnMinMax(list) {
let items = list.closest('[data-type="collection"]').find('> ul > [data-collection-item]');
let minItems = list.data('min');
let maxItems = list.data('max');
list.find('> .collection-actions [data-action="add"]').attr('disabled', false);
list.find('> ul > li > .item-actions [data-action="delete"]').attr('disabled', false);
if (typeof minItems !== 'undefined' && items.length <= minItems) {
list.find('> ul > li > .item-actions [data-action="delete"]').attr('disabled', true);
}
if (typeof maxItems !== 'undefined' && items.length >= maxItems) {
list.find('> .collection-actions [data-action="add"]').attr('disabled', true);
}
if (typeof maxItems !== 'undefined' && items.length >= maxItems) {
list.find('> .collection-actions [data-action="add"]').attr('disabled', true);
}
}
}
export let Instance = new CollectionsField();

View File

@ -0,0 +1,10 @@
import $ from 'jquery';
$(document).on('change', '[data-grav-elements] select', (event) => {
const target = $(event.currentTarget);
const value = target.val();
const id = target.closest('[data-grav-elements]').data('gravElements');
$(`[id^="${id}_"]`).css('display', 'none');
$(`[id="${id}__${value}"]`).css('display', 'inherit');
});

View File

@ -83,6 +83,11 @@ const ACCEPT_FUNC = function(file, done, settings) {
const hasMax = (resolution.max && (resolution.max.width || resolution.max.height));
if (hasMin || (!(settings.resizeWidth || settings.resizeHeight) && hasMax)) {
reader.onload = function(event) {
if (!/image\//.test(file.type)) {
done();
return;
}
const image = new Image();
image.src = event.target.result;
image.onerror = function() {
@ -139,6 +144,7 @@ export default class FilesField {
this.dropzone = new Dropzone(container, this.options);
this.dropzone.on('complete', this.onDropzoneComplete.bind(this));
this.dropzone.on('success', this.onDropzoneSuccess.bind(this));
this.dropzone.on('addedfile', this.onDropzoneAddedFile.bind(this));
this.dropzone.on('removedfile', this.onDropzoneRemovedFile.bind(this));
this.dropzone.on('sending', this.onDropzoneSending.bind(this));
this.dropzone.on('error', this.onDropzoneError.bind(this));
@ -224,7 +230,7 @@ export default class FilesField {
file,
data: response,
mode: 'removeFile',
msg: `<p>${translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD} <strong>${file.name}</strong></p>
msg: `<p>${translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD} <strong>{{fileName}}</strong></p>
<pre>${response.message}</pre>`
});
}
@ -240,7 +246,7 @@ export default class FilesField {
file,
data,
mode: 'removeFile',
msg: `<p>${translations.PLUGIN_ADMIN.FILE_ERROR_ADD} <strong>${file.name}</strong></p>
msg: `<p>${translations.PLUGIN_ADMIN.FILE_ERROR_ADD} <strong>{{fileName}}</strong></p>
<pre>${data.message}</pre>`
});
}
@ -255,6 +261,10 @@ export default class FilesField {
return decodeURIComponent(escape(window.atob(str)));
}
onDropzoneAddedFile(file, ...extra) {
return this.dropzone.options.addedfile(file);
}
onDropzoneRemovedFile(file, ...extra) {
if (!file.accepted || file.rejected) { return; }
let url = file.removeUrl || this.urls.delete || this.options.url;
@ -325,7 +335,9 @@ export default class FilesField {
}
let modal = $('[data-remodal-id="generic"]');
modal.find('.error-content').html(msg);
const cleanName = file.name.replace('<', '&lt;').replace('>', '&gt;');
modal.find('.error-content').html(msg.replace('{{fileName}}', cleanName));
$.remodal.lookup[modal.data('remodal')].open();
}
}

View File

View File

@ -19,6 +19,7 @@ import './mediapicker';
import './multilevel';
import './text';
import './range';
import './elements';
export default {
FilepickerField: {

View File

@ -3,7 +3,7 @@ import '@babel/polyfill';
import $ from 'jquery';
import './utils/remodal';
import 'simplebar';
import 'simplebar/dist/simplebar.min.js';
import GPM, { Instance as gpm } from './utils/gpm';
import KeepAlive from './utils/keepalive';
import Updates, { Instance as updates, Notifications, Feed } from './updates';

View File

@ -43,7 +43,9 @@ folder.on('input', (event) => {
});
folder.on('focus blur', (event) => getFields('title', event.currentTarget).title.trigger('input'));
folder.on('focus blur', (event) => {
getFields('title').title.trigger('input');
});
$(document).on('change', '[name="data[route]"]', (event) => {
const rawroute = $(event.currentTarget).val();

View File

@ -1,4 +1,5 @@
import $ from 'jquery';
import Cookies from '../../utils/cookies.js';
import request from '../../utils/request';
import FilesField, { UriToMarkdown } from '../../forms/fields/files';
import { config, translations } from 'grav-config';
@ -90,6 +91,7 @@ export default class PageMedia extends FilesField {
this.dropzone.options.thumbnail.call(this.dropzone, mock, data.url);
});
this.updateThumbsSize();
this.container.find('.dz-preview').prop('draggable', 'true');
});
}
@ -113,16 +115,40 @@ export default class PageMedia extends FilesField {
}
// accepted
this.updateThumbsSize();
this.updateMediaCount();
$('.dz-preview').prop('draggable', 'true');
}
onDropzoneAddedFile(file, ...extra) {
super.onDropzoneAddedFile(file, extra);
this.updateThumbsSize();
}
onDropzoneRemovedFile(file, ...extra) {
super.onDropzoneRemovedFile(file, ...extra);
this.updateMediaCount();
if (this.sortable) {
this.sortable.options.onSort();
}
}
updateThumbsSize() {
const status = JSON.parse(Cookies.get('grav-admin-pagemedia') || '{}');
if (status.width) {
const input = this.container.closest('.pagemedia-field').find('.media-resizer');
updateMediaSizes(input, status.width, false);
}
}
updateMediaCount() {
const element = this.container.closest('.pagemedia-field').find('[data-pagemedia-count]');
element.text(`(${this.dropzone.files.length})`);
}
attachDragDrop() {
this.container.delegate('[data-dz-insert]', 'click', (e) => {
let target = $(e.currentTarget).parent('.dz-preview').find('.dz-filename');
@ -155,6 +181,7 @@ export default class PageMedia extends FilesField {
const target = $(e.currentTarget);
const file = target.parent('.dz-preview').find('.dz-filename');
const filename = encodeURI(file.text());
const cleanName = file.text().replace('<', '&lt;').replace('>', '&gt;');
let fileObj = this.dropzone.files.filter((file) => file.name === global.decodeURI(filename)).shift() || {};
@ -163,7 +190,7 @@ export default class PageMedia extends FilesField {
}
if (Array.isArray(fileObj.extras.metadata) && !fileObj.extras.metadata.length) {
fileObj.extras.metadata = { '': `${global.decodeURI(filename)}.meta.yaml doesn't exist` };
fileObj.extras.metadata = { '': `${cleanName}.meta.yaml doesn't exist` };
}
fileObj = fileObj.extras;
@ -171,14 +198,15 @@ export default class PageMedia extends FilesField {
const modal_element = $('body').find('[data-remodal-id="metadata"]');
const modal = $.remodal.lookup[modal_element.data('remodal')];
modal_element.find('h1 strong').html(filename);
modal_element.find('h1 strong').html(cleanName);
if (fileObj.url) {
modal_element.find('.meta-preview').html(`<img src="${fileObj.url}" />`);
}
const container = modal_element.find('.meta-content').html('<ul />').find('ul');
Object.keys(fileObj.metadata).forEach((meta) => {
container.append(`<li><strong>${meta ? meta + ':' : ''}</strong> ${fileObj.metadata[meta]}</li>`);
const cleanMeta = fileObj.metadata[meta].replace('<', '&lt;').replace('>', '&gt;');
container.append(`<li><strong>${meta ? meta + ':' : ''}</strong> ${cleanMeta}</li>`);
});
modal.open();
@ -202,4 +230,61 @@ export default class PageMedia extends FilesField {
}
}
export const updateMediaSizes = (input, width, store = true) => {
const status = JSON.parse(Cookies.get('grav-admin-pagemedia') || '{}');
const height = 150 * width / 200;
const media = input.closest('.pagemedia-field').find('.dz-details, [data-dz-thumbnail]');
media.css({ width, height });
if (store) {
const data = Object.assign({}, status, { width });
Cookies.set('grav-admin-pagemedia', JSON.stringify(data), { expires: Infinity });
}
};
export const updateMediaCollapseStatus = (element, store = true) => {
const status = JSON.parse(Cookies.get('grav-admin-pagemedia') || '{}');
element = $(element);
const icon = element.find('i.fa');
const container = element.closest('.pagemedia-field');
const panel = container.find('.form-data');
const slider = container.find('.media-resizer').parent();
const isCollapsed = !icon.hasClass('fa-chevron-down');
const collapsed = !isCollapsed;
icon.removeClass('fa-chevron-down fa-chevron-right').addClass(isCollapsed ? 'fa-chevron-down' : 'fa-chevron-right');
slider[isCollapsed ? 'removeClass' : 'addClass']('hidden');
panel[isCollapsed ? 'slideDown' : 'slideUp']();
if (store) {
const data = Object.assign({}, status, { collapsed });
Cookies.set('grav-admin-pagemedia', JSON.stringify(data), { expires: Infinity });
}
};
$(document).on('input', '.media-resizer', (event) => {
const target = $(event.currentTarget);
const width = target.val();
updateMediaSizes(target, width);
});
$(document).on('click', '.media-collapser', (event) => {
updateMediaCollapseStatus(event.currentTarget);
});
$(document).ready(() => {
const status = JSON.parse(Cookies.get('grav-admin-pagemedia') || '{}');
if (status.width) {
$('.media-resizer').each((index, input) => {
input = $(input);
updateMediaSizes(input, status.width, false);
});
}
});
export let Instance = new PageMedia();

View File

@ -13,7 +13,6 @@ const factory = function(window) {
}
const Cookies = (key, value, options) => {
alert('a');
return arguments.length === 1
? Cookies.get(key)
: Cookies.set(key, value, options);

View File

@ -2,12 +2,12 @@ import $ from 'jquery';
import { config, translations } from 'grav-config';
import request from '../utils/request';
import { Instance as gpm } from '../utils/gpm';
import { Promise } from 'es6-promise';
class Sorter {
getElements(elements, container) {
this.elements = elements || $('[data-gpm-plugin], [data-gpm-theme]');
this.container = container || $('.gpm-plugins > table > tbody, .gpm-themes > .themes.card-row');
this.elements = elements || document.querySelectorAll('[data-gpm-plugin], [data-gpm-theme]');
this.container = container || document.querySelector('.gpm-plugins > table > tbody, .gpm-themes > .themes.card-row');
return this.elements;
}
@ -19,50 +19,78 @@ class Sorter {
}
byCommon(direction = 'asc', data = '') {
let elements = this.getElements().sort((a, b) => {
let A = $(a).data(data).toString().toLowerCase();
let B = $(b).data(data).toString().toLowerCase();
const elements = this.getElements();
this.removeGumroad();
Array.from(elements).sort((a, b) => {
let A = a.dataset[data].toString().toLowerCase();
let B = b.dataset[data].toString().toLowerCase();
return Sorter.sort(A, B, direction);
}).forEach((element) => {
this.container.appendChild(element);
});
return elements.appendTo(this.container);
this.addGumroad();
return this.container;
}
byName(direction = 'asc', data = 'gpm-name') {
byName(direction = 'asc', data = 'gpmName') {
return this.byCommon(direction, data);
}
byAuthor(direction = 'asc', data = 'gpm-author') {
byAuthor(direction = 'asc', data = 'gpmAuthor') {
return this.byCommon(direction, data);
}
byOfficial(direction = 'asc', data = 'gpm-official') {
return this.byCommon(direction, data);
byOfficial(direction = 'asc', data = 'gpmOfficial') {
return this.byCommon(direction, data);
}
byReleaseDate(direction = 'asc', data = 'gpm-release-date') {
let elements = this.getElements().sort((a, b) => {
let A = new Date($(a).data(data)).getTime();
let B = new Date($(b).data(data)).getTime();
byPremium(direction = 'asc', data = 'gpmPremium') {
return this.byCommon(direction, data);
}
byReleaseDate(direction = 'asc', data = 'gpmReleaseDate') {
const elements = this.getElements();
this.removeGumroad();
Array.from(elements).sort((a, b) => {
let A = new Date(a.dataset[data]).getTime();
let B = new Date(b.dataset[data]).getTime();
return Sorter.sort(A, B, direction === 'asc' ? 'desc' : 'asc');
}).forEach((element) => {
this.container.appendChild(element);
});
elements.appendTo(this.container);
this.addGumroad();
return this.container;
}
byUpdatable(direction = 'asc', data = 'gpm-updatable') {
byUpdatable(direction = 'asc', data = 'gpmUpdatable') {
return this.byCommon(direction, data);
}
byEnabled(direction = 'asc', data = 'gpm-enabled') {
byEnabled(direction = 'asc', data = 'gpmEnabled') {
return this.byCommon(direction, data);
}
byTesting(direction = 'asc', data = 'gpm-testing') {
byTesting(direction = 'asc', data = 'gpmTesting') {
return this.byCommon(direction, data);
}
addGumroad() {
if (window.GumroadOverlay) {
window.GumroadOverlay.startNodeAdditionObserver();
}
}
removeGumroad() {
if (window.GumroadOverlay) {
window.GumroadOverlay.nodeAdditionObserver.disconnect();
}
}
}
class Packages {
@ -279,8 +307,8 @@ class Packages {
installPackages(type, slugs, callbackSuccess) {
let url = Packages.getInstallPackageUrl(type);
Promise.all(slugs.map((slug) => {
return new Promise((resolve, reject) => {
global.Promise.all(slugs.map((slug) => {
return new global.Promise((resolve, reject) => {
request(url, {
method: 'post',
body: {

View File

@ -1 +0,0 @@
import 'simplebar';

View File

@ -1,5 +1,4 @@
import $ from 'jquery';
import Map from 'es6-map';
import Cookies from '../utils/cookies';
const MOBILE_BREAKPOINT = 48 - 0.062;
@ -9,7 +8,7 @@ const TARGETS = '[data-sidebar-mobile-toggle], #overlay';
const MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT}em)`;
const DESKTOP_QUERY = `(min-width: ${DESKTOP_BREAKPOINT}em)`;
let map = new Map();
let map = new global.Map();
export default class Sidebar {
constructor() {

View File

@ -1,3 +0,0 @@
@import url("https://fonts.googleapis.com/css?family=Josefin+Slab:400|Roboto:300,400,500|Inconsolata:400,700&subset=latin-ext");body,h5,h6,.badge,.note,.grav-mdeditor-preview,input,select,textarea,button,.selectize-input{font-family:"Roboto","Helvetica","Tahoma","Geneva","Arial",sans-serif}h1,h2,h3,h4,.form-tabs>label,.label{font-family:"Josefin Slab","Helvetica","Tahoma","Geneva","Arial",sans-serif}code,kbd,pre,samp,body .CodeMirror{font-family:"Inconsolata","Monaco","Consolas","Lucida Console",monospace !important}
/*# sourceMappingURL=../css-compiled/fonts.css.map */

View File

@ -1 +0,0 @@
{"version":3,"file":"fonts.css","sources":["fonts.scss","configuration/fonts/_support.scss"],"sourcesContent":["$fonts-header: 'Josefin Slab' !default;\n$fonts-default: 'Roboto' !default;\n$fonts-mono: 'Inconsolata' !default;\n\n$font-definitions: (\n 'Josefin Slab': '400',\n Roboto: '300,400,500',\n Inconsolata: '400,700'\n);\n\n@import \"configuration/fonts/support\";\n","@function str-replace($string, $search, $replace: '') {\n $index: str-index($string, $search);\n\n @if $index {\n @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);\n }\n\n @return $string;\n}\n\n@function admin-font-faces($fonts) {\n $url: \"https://fonts.googleapis.com/css?family=\";\n $nb: 0;\n\n @each $fontname, $weights in $fonts {\n\n @if $fontname == $fonts-default or\n $fontname == $fonts-header or\n $fontname == $fonts-mono {\n\n $nb: $nb + 1;\n $nb-word: 0;\n\n $fontname: str-replace(\"#{$fontname}\", \" \", \"+\");\n\n $url: $url + $fontname;\n\n @if $weights != null {\n $url: $url + \":\" + $weights;\n }\n\n @if $nb < 3 {\n $url: $url + \"|\";\n }\n }\n }\n\n @return $url + \"&subset=latin-ext\";\n}\n\n@mixin body-fonts($font) {\n body, h5, h6,\n .badge, .note, .grav-mdeditor-preview,\n input, select, textarea, button, .selectize-input {\n font-family: \"#{$font}\", \"Helvetica\", \"Tahoma\", \"Geneva\", \"Arial\", sans-serif;\n }\n}\n\n@mixin header-fonts($font) {\n h1, h2, h3, h4,\n .form-tabs > label, .label {\n font-family: \"#{$font}\", \"Helvetica\", \"Tahoma\", \"Geneva\", \"Arial\", sans-serif;\n }\n}\n\n@mixin mono-fonts($font) {\n code, kbd, pre, samp,\n body .CodeMirror {\n font-family: \"#{$font}\", \"Monaco\", \"Consolas\", \"Lucida Console\", monospace !important;\n }\n}\n$font-url: admin-font-faces($font-definitions);\n\n@import url(\"#{$font-url}\");\n\n@include body-fonts($fonts-default);\n\n@include header-fonts($fonts-header);\n\n@include mono-fonts($fonts-mono);\n\n\n\n\n\n"],"names":[],"mappings":"AC+DA,OAAO,CAAC,uHAAI,CAtBR,AAAA,IAAI,CAAE,EAAE,CAAE,EAAE,CACZ,MAAM,CAAE,KAAK,CAAE,sBAAsB,CACrC,KAAK,CAAE,MAAM,CAAE,QAAQ,CAAE,MAAM,CAAE,gBAAgB,AAAC,CAC9C,WAAW,CAAE,QAAU,CAAE,WAAW,CAAE,QAAQ,CAAE,QAAQ,CAAE,OAAO,CAAE,UAAU,CAChF,AAID,AAAA,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CACd,UAAU,CAAG,KAAK,CAAE,MAAM,AAAC,CACvB,WAAW,CAAE,cAAU,CAAE,WAAW,CAAE,QAAQ,CAAE,QAAQ,CAAE,OAAO,CAAE,UAAU,CAChF,AAID,AAAA,IAAI,CAAE,GAAG,CAAE,GAAG,CAAE,IAAI,CACpB,IAAI,CAAC,WAAW,AAAC,CACb,WAAW,CAAE,aAAU,CAAE,QAAQ,CAAE,UAAU,CAAE,gBAAgB,CAAE,SAAS,CAAC,UAAU,CACxF"}

View File

@ -1 +0,0 @@
{"version":3,"file":"paper.css","sources":["paper.scss"],"sourcesContent":["// CodeMirror Theme\n.cm-s-paper {\n $paper-fg: #666;\n $tag: darken($paper-fg, 10%);\n\n &.CodeMirror {\n color: $paper-fg;\n line-height: 1.4;\n font-size: 16px;\n }\n\n .cm-link {color: #0082ba;}\n .cm-comment {color: lighten($paper-fg,10%);}\n .cm-header {color: darken($paper-fg,5%);}\n .cm-strong {color: darken($paper-fg,10%);}\n .cm-em {color: darken($paper-fg, 10%);}\n .cm-string {color: #0082BA;}\n .cm-tag {color: $tag}\n .cm-bracket {color: lighten($tag, 10%);}\n .cm-hr {color: lighten($paper-fg,40%);font-weight: bold;}\n\n .cm-keyword {color: #0082ba;}\n .cm-atom {color: #9055af;}\n .cm-meta {color: $paper-fg;}\n\n .cm-number {color: #7f8c8d;}\n .cm-def {color: #00f;}\n .cm-variable {color: black;}\n //.cm-variable-2 {color: #555;}\n //.cm-variable-3 {color: #085;}\n .cm-property {color: black;}\n .cm-operator {color: black;}\n\n\n .cm-string-2 {color: #f50;}\n .cm-meta {color: #555;}\n .cm-error {color: #f00;}\n .cm-qualifier {color: #555;}\n .cm-builtin {color: #555;}\n\n\n .cm-attribute {color: #7f8c8d;}\n\n .cm-quote {color: #888;}\n\n\n .cm-header-1 {font-size: 140%;}\n .cm-header-2 {font-size: 120%;}\n .cm-header-3 {font-size: 110%;}\n\n .cm-negative {color: #d44;}\n .cm-positive {color: #292;}\n .cm-header, .cm-strong {font-weight: bold;}\n .cm-em {font-style: italic;}\n .cm-link {text-decoration: underline;}\n\n .cm-invalidchar {color: #f00;}\n}\n"],"names":[],"mappings":"AACA,AAII,WAJO,AAIN,WAAW,AAAC,CACT,KAAK,CAJE,IAAI,CAKX,WAAW,CAAE,GAAG,CAChB,SAAS,CAAE,IAAI,CAClB,AARL,AAUI,WAVO,CAUP,QAAQ,AAAC,CAAC,KAAK,CAAE,OAAO,CAAG,AAV/B,AAWI,WAXO,CAWP,WAAW,AAAC,CAAC,KAAK,CAAE,IAAsB,CAAG,AAXjD,AAYI,WAZO,CAYP,UAAU,AAAC,CAAC,KAAK,CAAE,OAAoB,CAAG,AAZ9C,AAaI,WAbO,CAaP,UAAU,AAAC,CAAC,KAAK,CAAE,OAAqB,CAAG,AAb/C,AAcI,WAdO,CAcP,MAAM,AAAC,CAAC,KAAK,CAAE,OAAsB,CAAG,AAd5C,AAeI,WAfO,CAeP,UAAU,AAAC,CAAC,KAAK,CAAE,OAAO,CAAG,AAfjC,AAgBI,WAhBO,CAgBP,OAAO,AAAC,CAAC,KAAK,CAdR,OAAsB,CAcN,AAhB1B,AAiBI,WAjBO,CAiBP,WAAW,AAAC,CAAC,KAAK,CAAE,IAAkB,CAAG,AAjB7C,AAkBI,WAlBO,CAkBP,MAAM,AAAC,CAAC,KAAK,CAAE,IAAsB,CAAC,WAAW,CAAE,IAAI,CAAG,AAlB9D,AAoBI,WApBO,CAoBP,WAAW,AAAC,CAAC,KAAK,CAAE,OAAO,CAAG,AApBlC,AAqBI,WArBO,CAqBP,QAAQ,AAAC,CAAC,KAAK,CAAE,OAAO,CAAG,AArB/B,AAsBI,WAtBO,CAsBP,QAAQ,AAAC,CAAC,KAAK,CArBJ,IAAI,CAqBc,AAtBjC,AAwBI,WAxBO,CAwBP,UAAU,AAAC,CAAC,KAAK,CAAE,OAAO,CAAG,AAxBjC,AAyBI,WAzBO,CAyBP,OAAO,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AAzB3B,AA0BI,WA1BO,CA0BP,YAAY,AAAC,CAAC,KAAK,CAAE,KAAK,CAAG,AA1BjC,AA6BI,WA7BO,CA6BP,YAAY,AAAC,CAAC,KAAK,CAAE,KAAK,CAAG,AA7BjC,AA8BI,WA9BO,CA8BP,YAAY,AAAC,CAAC,KAAK,CAAE,KAAK,CAAG,AA9BjC,AAiCI,WAjCO,CAiCP,YAAY,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AAjChC,AAkCI,WAlCO,CAkCP,QAAQ,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AAlC5B,AAmCI,WAnCO,CAmCP,SAAS,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AAnC7B,AAoCI,WApCO,CAoCP,aAAa,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AApCjC,AAqCI,WArCO,CAqCP,WAAW,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AArC/B,AAwCI,WAxCO,CAwCP,aAAa,AAAC,CAAC,KAAK,CAAE,OAAO,CAAG,AAxCpC,AA0CI,WA1CO,CA0CP,SAAS,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AA1C7B,AA6CI,WA7CO,CA6CP,YAAY,AAAC,CAAC,SAAS,CAAE,IAAI,CAAG,AA7CpC,AA8CI,WA9CO,CA8CP,YAAY,AAAC,CAAC,SAAS,CAAE,IAAI,CAAG,AA9CpC,AA+CI,WA/CO,CA+CP,YAAY,AAAC,CAAC,SAAS,CAAE,IAAI,CAAG,AA/CpC,AAiDI,WAjDO,CAiDP,YAAY,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AAjDhC,AAkDI,WAlDO,CAkDP,YAAY,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG,AAlDhC,AAmDI,WAnDO,CAmDP,UAAU,CAnDd,WAAW,CAmDK,UAAU,AAAC,CAAC,WAAW,CAAE,IAAI,CAAG,AAnDhD,AAoDI,WApDO,CAoDP,MAAM,AAAC,CAAC,UAAU,CAAE,MAAM,CAAG,AApDjC,AAqDI,WArDO,CAqDP,QAAQ,AAAC,CAAC,eAAe,CAAE,SAAS,CAAG,AArD3C,AAuDI,WAvDO,CAuDP,eAAe,AAAC,CAAC,KAAK,CAAE,IAAI,CAAG"}

View File

@ -942,7 +942,7 @@ form .form-display-wrapper table {
.gpm > table > tbody > tr {
border-bottom: 1px solid #f7f7f7; }
.gpm > table > tbody > tr:hover {
background: white; }
background: #f2f2f2; }
.gpm .gpm-name {
color: #99a2ad; }

File diff suppressed because one or more lines are too long

View File

@ -1404,6 +1404,19 @@ textarea.frontmatter {
.form-list-wrapper [data-collection-nosort] .collection-sort {
display: none; }
.form-list-wrapper .list-confirm-deletion {
cursor: pointer;
display: flex;
position: absolute !important;
z-index: 10010;
padding: .5rem;
top: 13px;
right: 20px; }
.form-list-wrapper .list-confirm-deletion > i, .form-list-wrapper .list-confirm-deletion span {
text-align: center;
display: inline-flex;
align-items: center; }
.form-label.block {
position: relative; }
.form-label.block:hover {
@ -1512,6 +1525,10 @@ textarea.frontmatter {
display: flex;
align-items: center; }
.cron-selector input {
font-family: "Bitstream Vera Sans Mono", Consolas, Courier, monospace !important;
font-weight: bold !important; }
.cron-install {
margin: 1rem;
padding: 0;
@ -1908,6 +1925,12 @@ table.noflex {
display: none; }
#admin-login .form-data {
padding-right: 0; }
#admin-login .form-description {
display: block;
margin-top: -15px;
padding-bottom: 15px;
text-align: center;
font-size: 110%; }
#admin-login .wrapper-spacer {
width: 100% !important;
display: block !important;
@ -4091,6 +4114,19 @@ html.remodal-is-locked {
padding-left: 20px; }
/* The MIT License */
.pagemedia-field .form-label {
display: flex;
justify-content: space-between;
margin-right: 1.5rem;
align-items: center; }
.pagemedia-field .form-label label {
cursor: pointer;
flex: 1; }
.pagemedia-field input[type="range"]::-webkit-slider-runnable-track {
background: inherit !important;
border: none !important; }
.dropzone {
position: relative;
border-radius: 4px;
@ -4139,7 +4175,7 @@ html.remodal-is-locked {
content: '\f12a'; }
.dropzone .dz-preview .dz-progress {
position: absolute;
top: 150px;
bottom: auto;
left: 0px;
right: 0px;
height: 4px;

File diff suppressed because one or more lines are too long

0
plugins/admin/themes/grav/css/chartist.min.css vendored Normal file → Executable file
View File

View File

@ -1,7 +1,7 @@
/*
Name: 3024 day
Author: Jan T. Sott (http://github.com/idleberg)
Author: Jan T. Sott (https://github.com/idleberg)
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)

View File

@ -1,7 +1,7 @@
/*
Name: 3024 night
Author: Jan T. Sott (http://github.com/idleberg)
Author: Jan T. Sott (https://github.com/idleberg)
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)

View File

@ -1,7 +1,7 @@
/*
Name: dracula
Author: Michael Kaminsky (http://github.com/mkaminsky11)
Author: Michael Kaminsky (https://github.com/mkaminsky11)
Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)

View File

@ -1,6 +1,6 @@
/*
Name: material
Author: Mattia Astorino (http://github.com/equinusocio)
Author: Mattia Astorino (https://github.com/equinusocio)
Website: https://material-theme.site/
*/
@ -132,4 +132,4 @@
.cm-s-material-darker .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
}

View File

@ -1,6 +1,6 @@
/*
Name: material
Author: Mattia Astorino (http://github.com/equinusocio)
Author: Mattia Astorino (https://github.com/equinusocio)
Website: https://material-theme.site/
*/
@ -132,4 +132,4 @@
.cm-s-material-ocean .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
}

View File

@ -1,6 +1,6 @@
/*
Name: material
Author: Mattia Astorino (http://github.com/equinusocio)
Author: Mattia Astorino (https://github.com/equinusocio)
Website: https://material-theme.site/
*/
@ -132,4 +132,4 @@
.cm-s-material-palenight .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
}

View File

@ -1,6 +1,6 @@
/*
Name: material
Author: Mattia Astorino (http://github.com/equinusocio)
Author: Mattia Astorino (https://github.com/equinusocio)
Website: https://material-theme.site/
*/
@ -132,4 +132,4 @@
.cm-s-material .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
}

View File

@ -1,6 +1,6 @@
/*
Name: Moxer Theme
Author: Mattia Astorino (http://github.com/equinusocio)
Author: Mattia Astorino (https://github.com/equinusocio)
Website: https://github.com/moxer-theme/moxer-code
*/
@ -140,4 +140,4 @@
.cm-s-moxer .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
}

View File

@ -1,6 +1,6 @@
/*
Name: Panda Syntax
Author: Siamak Mokhtari (http://github.com/siamak/)
Author: Siamak Mokhtari (https://github.com/siamak/)
CodeMirror template by Siamak Mokhtari (https://github.com/siamak/atom-panda-syntax)
*/
.cm-s-panda-syntax {

View File

@ -1,7 +1,7 @@
/*
Name: seti
Author: Michael Kaminsky (http://github.com/mkaminsky11)
Author: Michael Kaminsky (https://github.com/mkaminsky11)
Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax)

View File

@ -1,7 +1,7 @@
/*
Name: shadowfox
Author: overdodactyl (http://github.com/overdodactyl)
Author: overdodactyl (https://github.com/overdodactyl)
Original shadowfox color scheme by Firefox

View File

@ -1,7 +1,7 @@
/*
Name: yeti
Author: Michael Kaminsky (http://github.com/mkaminsky11)
Author: Michael Kaminsky (https://github.com/mkaminsky11)
Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax)

View File

@ -1,7 +1,7 @@
/*
Name: yoncé
Author: Thomas MacLean (http://github.com/thomasmaclean)
Author: Thomas MacLean (https://github.com/thomasmaclean)
Original yoncé color scheme by Mina Markham (https://github.com/minamarkham)

View File

@ -1,8 +0,0 @@
/**
* Featherlight - ultra slim jQuery lightbox
* Version 0.4.9 - http://noelboss.github.io/featherlight/
*
* Copyright 2014, Noël Raoul Bossart (http://www.noelboss.com)
* MIT Licensed.
**/
@media all{.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:rgba(0,0,0,0)}.featherlight:last-of-type{background:rgba(0,0,0,.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-.25em}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:auto;padding:25px 25px 0;border-bottom:25px solid transparent;min-width:30%;margin-left:5%;margin-right:5%;max-height:95%;background:#fff;cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font:Arial,sans-serif;background:#fff;background:rgba(255,255,255,.3);color:#000}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0}.featherlight iframe{border:0}}@media only screen and (max-width:1024px){.featherlight .featherlight-content{margin-left:10px;margin-right:10px;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}}

0
plugins/admin/themes/grav/css/fork-awesome.min.css vendored Normal file → Executable file
View File

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