Upgrade to 3.2.5

This commit is contained in:
Bastian Allgeier
2019-09-24 11:00:59 +02:00
parent ff9b5b1861
commit 447a9dd266
234 changed files with 1990 additions and 1224 deletions

58
kirby/.php_cs Executable file
View File

@@ -0,0 +1,58 @@
<?php
$finder = PhpCsFixer\Finder::create()
->exclude('dependencies')
->in(__DIR__);
return PhpCsFixer\Config::create()
->setRules([
'@PSR1' => true,
'@PSR2' => true,
'align_multiline_comment' => ['comment_type' => 'phpdocs_like'],
'array_indentation' => true,
'array_syntax' => ['syntax' => 'short'],
'cast_spaces' => ['space' => 'none'],
// 'class_keyword_remove' => true, // replaces static::class with 'static' (won't work)
'combine_consecutive_issets' => true,
'combine_consecutive_unsets' => true,
'combine_nested_dirname' => true,
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => ['space' => 'single'],
'dir_constant' => true,
'function_typehint_space' => true,
'include' => true,
'logical_operators' => true,
'lowercase_cast' => true,
'lowercase_static_reference' => true,
'magic_constant_casing' => true,
'magic_method_casing' => true,
'method_chaining_indentation' => true,
'modernize_types_casting' => true,
'multiline_comment_opening_closing' => true,
'native_function_casing' => true,
'native_function_type_declaration_casing' => true,
'new_with_braces' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_unneeded_control_parentheses' => true,
'no_unused_imports' => true,
'no_useless_return' => true,
'ordered_imports' => ['sort_algorithm' => 'alpha'],
// 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], // adds params in the wrong order
// 'phpdoc_align' => ['align' => 'vertical'], // added in a second step
'phpdoc_indent' => true,
// 'phpdoc_scalar' => true, // added in a second step
'phpdoc_trim' => true,
'short_scalar_cast' => true,
'single_line_comment_style' => true,
'single_quote' => true,
'ternary_to_null_coalescing' => true,
'whitespace_after_comma_in_array' => true
])
->setRiskyAllowed(true)
->setFinder($finder);

View File

@@ -1,7 +1,7 @@
{ {
"name": "getkirby/cms", "name": "getkirby/cms",
"description": "The Kirby 3 core", "description": "The Kirby 3 core",
"version": "3.2.4", "version": "3.2.5",
"license": "proprietary", "license": "proprietary",
"keywords": ["kirby", "cms", "core"], "keywords": ["kirby", "cms", "core"],
"homepage": "https://getkirby.com", "homepage": "https://getkirby.com",
@@ -44,7 +44,7 @@
"test": "phpunit --stderr --coverage-html=tests/coverage", "test": "phpunit --stderr --coverage-html=tests/coverage",
"zip": "composer archive --format=zip --file=dist", "zip": "composer archive --format=zip --file=dist",
"build": "./scripts/build", "build": "./scripts/build",
"fix": "php-cs-fixer fix ." "fix": "php-cs-fixer fix --config .php_cs"
}, },
"config": { "config": {
"optimize-autoloader": true "optimize-autoloader": true

View File

@@ -1,8 +1,6 @@
<?php <?php
use Kirby\Cms\Auth;
use Kirby\Exception\PermissionException; use Kirby\Exception\PermissionException;
use Kirby\Toolkit\Str;
return function () { return function () {
$auth = $this->kirby()->auth(); $auth = $this->kirby()->auth();

View File

@@ -1,12 +1,5 @@
<?php <?php
use Kirby\Cms\Files;
use Kirby\Cms\Languages;
use Kirby\Cms\Pages;
use Kirby\Cms\Roles;
use Kirby\Cms\Translations;
use Kirby\Cms\Users;
/** /**
* Api Collection Definitions * Api Collection Definitions
*/ */
@@ -17,7 +10,7 @@ return [
*/ */
'children' => [ 'children' => [
'model' => 'page', 'model' => 'page',
'type' => Pages::class, 'type' => 'Kirby\Cms\Pages',
'view' => 'compact' 'view' => 'compact'
], ],
@@ -26,7 +19,7 @@ return [
*/ */
'files' => [ 'files' => [
'model' => 'file', 'model' => 'file',
'type' => Files::class 'type' => 'Kirby\Cms\Files'
], ],
/** /**
@@ -34,7 +27,7 @@ return [
*/ */
'languages' => [ 'languages' => [
'model' => 'language', 'model' => 'language',
'type' => Languages::class, 'type' => 'Kirby\Cms\Languages',
'view' => 'compact' 'view' => 'compact'
], ],
@@ -43,7 +36,7 @@ return [
*/ */
'pages' => [ 'pages' => [
'model' => 'page', 'model' => 'page',
'type' => Pages::class, 'type' => 'Kirby\Cms\Pages',
'view' => 'compact' 'view' => 'compact'
], ],
@@ -52,7 +45,7 @@ return [
*/ */
'roles' => [ 'roles' => [
'model' => 'role', 'model' => 'role',
'type' => Roles::class, 'type' => 'Kirby\Cms\Roles',
'view' => 'compact' 'view' => 'compact'
], ],
@@ -61,7 +54,7 @@ return [
*/ */
'translations' => [ 'translations' => [
'model' => 'translation', 'model' => 'translation',
'type' => Translations::class, 'type' => 'Kirby\Cms\Translations',
'view' => 'compact' 'view' => 'compact'
], ],
@@ -73,7 +66,7 @@ return [
return $this->users(); return $this->users();
}, },
'model' => 'user', 'model' => 'user',
'type' => Users::class, 'type' => 'Kirby\Cms\Users',
'view' => 'compact' 'view' => 'compact'
] ]

View File

@@ -1,9 +1,5 @@
<?php <?php
use Kirby\Cms\File;
use Kirby\Cms\Page;
use Kirby\Cms\Site;
/** /**
* Api Model Definitions * Api Model Definitions
*/ */

View File

@@ -115,7 +115,7 @@ return [
return $file->url(true); return $file->url(true);
}, },
], ],
'type' => File::class, 'type' => 'Kirby\Cms\File',
'views' => [ 'views' => [
'default' => [ 'default' => [
'content', 'content',

View File

@@ -20,7 +20,7 @@ return [
return $blueprint->title(); return $blueprint->title();
}, },
], ],
'type' => FileBlueprint::class, 'type' => 'Kirby\Cms\FileBlueprint',
'views' => [ 'views' => [
], ],
]; ];

View File

@@ -44,7 +44,7 @@ return [
return $file->url(true); return $file->url(true);
}, },
], ],
'type' => FileVersion::class, 'type' => 'Kirby\Cms\FileVersion',
'views' => [ 'views' => [
'default' => [ 'default' => [
'dimensions', 'dimensions',

View File

@@ -29,7 +29,7 @@ return [
return $language->url(); return $language->url();
}, },
], ],
'type' => Language::class, 'type' => 'Kirby\Cms\Language',
'views' => [ 'views' => [
'compact' => [ 'compact' => [
'code', 'code',

View File

@@ -104,7 +104,7 @@ return [
return $page->url(); return $page->url();
}, },
], ],
'type' => Page::class, 'type' => 'Kirby\Cms\Page',
'views' => [ 'views' => [
'compact' => [ 'compact' => [
'id', 'id',

View File

@@ -29,7 +29,7 @@ return [
return $blueprint->title(); return $blueprint->title();
}, },
], ],
'type' => PageBlueprint::class, 'type' => 'Kirby\Cms\PageBlueprint',
'views' => [ 'views' => [
], ],
]; ];

View File

@@ -20,7 +20,7 @@ return [
return $role->title(); return $role->title();
}, },
], ],
'type' => Role::class, 'type' => 'Kirby\Cms\Role',
'views' => [ 'views' => [
'compact' => [ 'compact' => [
'description', 'description',

View File

@@ -39,7 +39,7 @@ return [
return $site->url(); return $site->url();
}, },
], ],
'type' => Site::class, 'type' => 'Kirby\Cms\Site',
'views' => [ 'views' => [
'compact' => [ 'compact' => [
'title', 'title',

View File

@@ -20,7 +20,7 @@ return [
return $blueprint->title(); return $blueprint->title();
}, },
], ],
'type' => SiteBlueprint::class, 'type' => 'Kirby\Cms\SiteBlueprint',
'views' => [ 'views' => [
], ],
]; ];

View File

@@ -11,6 +11,9 @@ return [
'ascii' => function () { 'ascii' => function () {
return Str::$ascii; return Str::$ascii;
}, },
'defaultLanguage' => function () {
return $this->kirby()->option('panel.language', 'en');
},
'isOk' => function (System $system) { 'isOk' => function (System $system) {
return $system->isOk(); return $system->isOk();
}, },
@@ -62,7 +65,7 @@ return [
} }
}, },
'kirbytext' => function () { 'kirbytext' => function () {
return $this->kirby()->option('panel')['kirbytext'] ?? true; return $this->kirby()->option('panel.kirbytext') ?? true;
}, },
'user' => function () { 'user' => function () {
return $this->user(); return $this->user();
@@ -71,7 +74,7 @@ return [
return $this->kirby()->version(); return $this->kirby()->version();
} }
], ],
'type' => System::class, 'type' => 'Kirby\Cms\System',
'views' => [ 'views' => [
'login' => [ 'login' => [
'isOk', 'isOk',
@@ -90,6 +93,7 @@ return [
], ],
'panel' => [ 'panel' => [
'ascii', 'ascii',
'defaultLanguage',
'isOk', 'isOk',
'isInstalled', 'isInstalled',
'isLocal', 'isLocal',

View File

@@ -23,7 +23,7 @@ return [
return $translation->name(); return $translation->name();
}, },
], ],
'type' => Translation::class, 'type' => 'Kirby\Cms\Translation',
'views' => [ 'views' => [
'compact' => [ 'compact' => [
'direction', 'direction',

View File

@@ -54,7 +54,7 @@ return [
return $user->username(); return $user->username();
} }
], ],
'type' => User::class, 'type' => 'Kirby\Cms\User',
'views' => [ 'views' => [
'default' => [ 'default' => [
'avatar', 'avatar',

View File

@@ -20,7 +20,7 @@ return [
return $blueprint->title(); return $blueprint->title();
}, },
], ],
'type' => UserBlueprint::class, 'type' => 'Kirby\Cms\UserBlueprint',
'views' => [ 'views' => [
], ],
]; ];

View File

@@ -1,8 +1,7 @@
<?php <?php
use Kirby\Exception\NotFoundException;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\PermissionException; use Kirby\Exception\NotFoundException;
/** /**
* Authentication * Authentication

View File

@@ -1,7 +1,5 @@
<?php <?php
use Kirby\Exception\InvalidArgumentException;
/** /**
* Files Routes * Files Routes
*/ */

View File

@@ -1,7 +1,5 @@
<?php <?php
use Kirby\Exception\InvalidArgumentException;
/** /**
* Page Routes * Page Routes
*/ */

View File

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

View File

@@ -1,5 +1,8 @@
<?php <?php
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
/** /**
* System Routes * System Routes
*/ */
@@ -54,11 +57,11 @@ return [
} }
if ($system->isInstallable() === false) { if ($system->isInstallable() === false) {
throw new Exception('The panel cannot be installed'); throw new Exception('The Panel cannot be installed');
} }
if ($system->isInstalled() === true) { if ($system->isInstalled() === true) {
throw new Exception('The panel is already installed'); throw new Exception('The Panel is already installed');
} }
// create the first user // create the first user

View File

@@ -4,12 +4,8 @@ use Kirby\Cms\App;
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Cms\Filename; use Kirby\Cms\Filename;
use Kirby\Cms\FileVersion; use Kirby\Cms\FileVersion;
use Kirby\Cms\FileModifications;
use Kirby\Cms\Model;
use Kirby\Cms\Response;
use Kirby\Cms\Template; use Kirby\Cms\Template;
use Kirby\Data\Data; use Kirby\Data\Data;
use Kirby\Exception\NotFoundException;
use Kirby\Image\Darkroom; use Kirby\Image\Darkroom;
use Kirby\Text\Markdown; use Kirby\Text\Markdown;
use Kirby\Text\SmartyPants; use Kirby\Text\SmartyPants;
@@ -22,7 +18,7 @@ return [
/** /**
* Used by the `css()` helper * Used by the `css()` helper
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $url Relative or absolute URL * @param string $url Relative or absolute URL
* @param string|array $options An array of attributes for the link tag or a media attribute string * @param string|array $options An array of attributes for the link tag or a media attribute string
*/ */
@@ -33,8 +29,8 @@ return [
/** /**
* Modify URLs for file objects * Modify URLs for file objects
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param Kirby\Cms\File $file The original file object * @param \Kirby\Cms\File $file The original file object
* @return string * @return string
*/ */
'file::url' => function (App $kirby, File $file): string { 'file::url' => function (App $kirby, File $file): string {
@@ -44,10 +40,10 @@ return [
/** /**
* Adapt file characteristics * Adapt file characteristics
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param Kirby\Cms\File|Kirby\Cms\FileModifications $file The file object * @param \Kirby\Cms\File|\Kirby\Cms\FileModifications $file The file object
* @param array $options All thumb options (width, height, crop, blur, grayscale) * @param array $options All thumb options (width, height, crop, blur, grayscale)
* @return Kirby\Cms\File|Kirby\Cms\FileVersion * @return \Kirby\Cms\File|\Kirby\Cms\FileVersion
*/ */
'file::version' => function (App $kirby, $file, array $options = []) { 'file::version' => function (App $kirby, $file, array $options = []) {
if ($file->isResizable() === false) { if ($file->isResizable() === false) {
@@ -82,7 +78,7 @@ return [
/** /**
* Used by the `js()` helper * Used by the `js()` helper
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $url Relative or absolute URL * @param string $url Relative or absolute URL
* @param string|array $options An array of attributes for the link tag or a media attribute string * @param string|array $options An array of attributes for the link tag or a media attribute string
*/ */
@@ -93,7 +89,7 @@ return [
/** /**
* Add your own Markdown parser * Add your own Markdown parser
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $text Text to parse * @param string $text Text to parse
* @param array $options Markdown options * @param array $options Markdown options
* @param bool $inline Whether to wrap the text in `<p>` tags * @param bool $inline Whether to wrap the text in `<p>` tags
@@ -116,7 +112,7 @@ return [
/** /**
* Add your own SmartyPants parser * Add your own SmartyPants parser
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $text Text to parse * @param string $text Text to parse
* @param array $options SmartyPants options * @param array $options SmartyPants options
* @return string * @return string
@@ -138,7 +134,7 @@ return [
/** /**
* Add your own snippet loader * Add your own snippet loader
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string|array $name Snippet name * @param string|array $name Snippet name
* @param array $data Data array for the snippet * @param array $data Data array for the snippet
* @return string|null * @return string|null
@@ -165,11 +161,11 @@ return [
/** /**
* Add your own template engine * Add your own template engine
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $name Template name * @param string $name Template name
* @param string $type Extension type * @param string $type Extension type
* @param string $defaultType Default extension type * @param string $defaultType Default extension type
* @return Kirby\Cms\Template * @return \Kirby\Cms\Template
*/ */
'template' => function (App $kirby, string $name, string $type = 'html', string $defaultType = 'html') { 'template' => function (App $kirby, string $name, string $type = 'html', string $defaultType = 'html') {
return new Template($name, $type, $defaultType); return new Template($name, $type, $defaultType);
@@ -178,7 +174,7 @@ return [
/** /**
* Add your own thumb generator * Add your own thumb generator
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $src The root of the original file * @param string $src The root of the original file
* @param string $dst The root to the desired destination * @param string $dst The root to the desired destination
* @param array $options All thumb options that should be applied: `width`, `height`, `crop`, `blur`, `grayscale` * @param array $options All thumb options that should be applied: `width`, `height`, `crop`, `blur`, `grayscale`
@@ -198,7 +194,7 @@ return [
/** /**
* Modify all URLs * Modify all URLs
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $path URL path * @param string $path URL path
* @param array|null $options Array of options for the Uri class * @param array|null $options Array of options for the Uri class
* @param Closure $originalHandler Callback function to the original URL handler with `$path` and `$options` as parameters * @param Closure $originalHandler Callback function to the original URL handler with `$path` and `$options` as parameters

View File

@@ -21,7 +21,7 @@ return [
/** /**
* Changes the calendar icon to something custom * Changes the calendar icon to something custom
*/ */
'icon' => function (string $icon = "calendar") { 'icon' => function (string $icon = 'calendar') {
return $icon; return $icon;
}, },
/** /**

View File

@@ -1,5 +1,7 @@
<?php <?php
use Kirby\Toolkit\I18n;
return [ return [
'extends' => 'text', 'extends' => 'text',
'props' => [ 'props' => [

View File

@@ -1,5 +1,6 @@
<?php <?php
use Kirby\Data\Yaml;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
@@ -112,7 +113,7 @@ return [
$field = $this->field(); $field = $this->field();
$uploads = $field->uploads(); $uploads = $field->uploads();
return $field->upload($this, $uploads, function ($file) use ($field) { return $field->upload($this, $uploads, function ($file, $parent) use ($field) {
return $file->panelPickerData([ return $file->panelPickerData([
'image' => $field->image(), 'image' => $field->image(),
'info' => $field->info(), 'info' => $field->info(),

View File

@@ -13,14 +13,11 @@ return [
], ],
'computed' => [ 'computed' => [
'text' => function () { 'text' => function () {
$text = $this->text; if ($text = $this->text) {
if ($model = $this->model()) {
$text = $this->model()->toString($text); $text = $this->model()->toString($text);
}
return kirbytext($text); return kirbytext($text);
} }
}
], ],
'save' => false, 'save' => false,
]; ];

View File

@@ -19,7 +19,7 @@ return [
$self = [ $self = [
'id' => $parent->id() == '' ? null : $parent->id(), 'id' => $parent->id() == '' ? null : $parent->id(),
'title' => $parent->title()->value(), 'title' => $parent->title()->value(),
'parent' => is_a($parent->parent(), Page::class) === true ? $parent->parent()->id() : null, 'parent' => is_a($parent->parent(), 'Kirby\Cms\Page') === true ? $parent->parent()->id() : null,
]; ];
} }

View File

@@ -1,5 +1,6 @@
<?php <?php
use Kirby\Toolkit\I18n;
return [ return [
'props' => [ 'props' => [

View File

@@ -2,6 +2,7 @@
use Kirby\Cms\Api; use Kirby\Cms\Api;
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Exception\Exception;
return [ return [
'props' => [ 'props' => [
@@ -64,7 +65,7 @@ return [
throw new Exception('The file could not be uploaded'); throw new Exception('The file could not be uploaded');
} }
return $map($file); return $map($file, $parent);
}); });
} }
] ]

View File

@@ -1,5 +1,7 @@
<?php <?php
use Kirby\Toolkit\Str;
return [ return [
'props' => [ 'props' => [
/** /**

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Data\Yaml;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\I18n;
return [ return [
'mixins' => ['min', 'pagepicker', 'picker'], 'mixins' => ['min', 'pagepicker', 'picker'],
@@ -47,6 +47,12 @@ return [
return $this->toPages($value); return $this->toPages($value);
}, },
], ],
'computed' => [
/**
* Unset inherited computed
*/
'default' => null
],
'methods' => [ 'methods' => [
'pageResponse' => function ($page) { 'pageResponse' => function ($page) {
return $page->panelPickerData([ return $page->panelPickerData([

View File

@@ -1,7 +1,8 @@
<?php <?php
use Kirby\Cms\Form; use Kirby\Cms\Form;
use Kirby\Cms\Blueprint; use Kirby\Data\Yaml;
use Kirby\Toolkit\I18n;
return [ return [
'mixins' => ['min'], 'mixins' => ['min'],
@@ -162,7 +163,7 @@ return [
$data = []; $data = [];
foreach ($value as $row) { foreach ($value as $row) {
$data[] = $this->form($row)->data(true); $data[] = $this->form($row)->data();
} }
return $data; return $data;

View File

@@ -1,5 +1,9 @@
<?php <?php
use Kirby\Toolkit\A;
use Kirby\Toolkit\Str;
use Kirby\Toolkit\V;
return [ return [
'mixins' => ['min', 'options'], 'mixins' => ['min', 'options'],
'props' => [ 'props' => [

View File

@@ -1,7 +1,6 @@
<?php <?php
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
return [ return [
@@ -98,6 +97,7 @@ return [
], ],
'validations' => [ 'validations' => [
'minlength', 'minlength',
'maxlength' 'maxlength',
'pattern'
] ]
]; ];

View File

@@ -76,7 +76,7 @@ return [
/** /**
* If `false`, spellcheck will be switched off * If `false`, spellcheck will be switched off
*/ */
'spellcheck' => function (bool $spellcheck = false) { 'spellcheck' => function (bool $spellcheck = true) {
return $spellcheck; return $spellcheck;
}, },
@@ -95,10 +95,15 @@ return [
[ [
'pattern' => 'upload', 'pattern' => 'upload',
'action' => function () { 'action' => function () {
return $this->field()->upload($this, $this->field()->uploads(), function ($file) { $field = $this->field();
$uploads = $field->uploads();
return $this->field()->upload($this, $uploads, function ($file, $parent) use ($field) {
$absolute = $field->model()->is($parent) === false;
return [ return [
'filename' => $file->filename(), 'filename' => $file->filename(),
'dragText' => $file->dragText(), 'dragText' => $file->dragText('auto', $absolute),
]; ];
}); });
} }

View File

@@ -1,6 +1,7 @@
<?php <?php
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\I18n;
return [ return [
'props' => [ 'props' => [
@@ -12,8 +13,8 @@ return [
/** /**
* Default value which will be saved when a new page/user/file is created * Default value which will be saved when a new page/user/file is created
*/ */
'default' => function ($value = null) { 'default' => function ($default = null) {
return $this->toBool($value); return $this->default = $default;
}, },
/** /**
* Sets the text next to the toggle. The text can be a string or an array of two options. The first one is the negative text and the second one the positive. The text will automatically switch when the toggle is triggered. * Sets the text next to the toggle. The text can be a string or an array of two options. The first one is the negative text and the second one the positive. The text will automatically switch when the toggle is triggered.
@@ -35,6 +36,9 @@ return [
}, },
], ],
'computed' => [ 'computed' => [
'default' => function () {
return $this->toBool($this->default);
},
'value' => function () { 'value' => function () {
if ($this->props['value'] === null) { if ($this->props['value'] === null) {
return $this->default(); return $this->default();

View File

@@ -1,5 +1,7 @@
<?php <?php
use Kirby\Toolkit\I18n;
return [ return [
'extends' => 'text', 'extends' => 'text',
'props' => [ 'props' => [

View File

@@ -1,5 +1,8 @@
<?php <?php
use Kirby\Data\Yaml;
use Kirby\Toolkit\A;
return [ return [
'mixins' => ['min', 'picker', 'userpicker'], 'mixins' => ['min', 'picker', 'userpicker'],
'props' => [ 'props' => [
@@ -33,6 +36,12 @@ return [
return $this->toUsers($value); return $this->toUsers($value);
}, },
], ],
'computed' => [
/**
* Unset inherited computed
*/
'default' => null
],
'methods' => [ 'methods' => [
'userResponse' => function ($user) { 'userResponse' => function ($user) {
return $user->panelPickerData([ return $user->panelPickerData([

View File

@@ -5,18 +5,18 @@ use Kirby\Cms\Asset;
use Kirby\Cms\Html; use Kirby\Cms\Html;
use Kirby\Cms\Response; use Kirby\Cms\Response;
use Kirby\Cms\Url; use Kirby\Cms\Url;
use Kirby\Exception\Exception;
use Kirby\Http\Server; use Kirby\Http\Server;
use Kirby\Toolkit\Escape; use Kirby\Toolkit\Escape;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
use Kirby\Toolkit\View; use Kirby\Toolkit\Str;
use Kirby\Toolkit\V;
/** /**
* Helper to create an asset object * Helper to create an asset object
* *
* @param string $path * @param string $path
* @return Kirby\Cms\Asset * @return \Kirby\Cms\Asset
*/ */
function asset(string $path) function asset(string $path)
{ {
@@ -44,7 +44,7 @@ function attr(array $attr = null, $before = null, $after = null)
* Returns the result of a collection by name * Returns the result of a collection by name
* *
* @param string $name * @param string $name
* @return Kirby\Cms\Collection|null * @return \Kirby\Cms\Collection|null
*/ */
function collection(string $name) function collection(string $name)
{ {
@@ -217,7 +217,7 @@ function go(string $url = null, int $code = 302)
/** /**
* Shortcut for html() * Shortcut for html()
* *
* @param string $text unencoded text * @param string $string unencoded text
* @param bool $keepTags * @param bool $keepTags
* @return string * @return string
*/ */
@@ -229,7 +229,7 @@ function h(string $string = null, bool $keepTags = false)
/** /**
* Creates safe html by encoding special characters * Creates safe html by encoding special characters
* *
* @param string $text unencoded text * @param string $string unencoded text
* @param bool $keepTags * @param bool $keepTags
* @return string * @return string
*/ */
@@ -246,7 +246,7 @@ function html(string $string = null, bool $keepTags = false)
* <?= image('some/page/myimage.jpg') ?> * <?= image('some/page/myimage.jpg') ?>
* *
* @param string $path * @param string $path
* @return Kirby\Cms\File|null * @return \Kirby\Cms\File|null
*/ */
function image(string $path = null) function image(string $path = null)
{ {
@@ -346,7 +346,7 @@ function invalid(array $data = [], array $rules = [], array $messages = [])
/** /**
* Creates a script tag to load a javascript file * Creates a script tag to load a javascript file
* *
* @param string|array $src * @param string|array $url
* @param string|array $options * @param string|array $options
* @return void * @return void
*/ */
@@ -382,7 +382,7 @@ function js($url, $options = null)
/** /**
* Returns the Kirby object in any situation * Returns the Kirby object in any situation
* *
* @return Kirby\Cms\App * @return \Kirby\Cms\App
*/ */
function kirby() function kirby()
{ {
@@ -527,7 +527,7 @@ function option(string $key, $default = null)
* id or the current page when no id is specified * id or the current page when no id is specified
* *
* @param string|array ...$id * @param string|array ...$id
* @return Kirby\Cms\Page|null * @return \Kirby\Cms\Page|null
*/ */
function page(...$id) function page(...$id)
{ {
@@ -542,7 +542,7 @@ function page(...$id)
* Helper to build page collections * Helper to build page collections
* *
* @param string|array ...$id * @param string|array ...$id
* @return Kirby\Cms\Pages * @return \Kirby\Cms\Pages
*/ */
function pages(...$id) function pages(...$id)
{ {
@@ -616,7 +616,7 @@ function timestamp(string $date = null, int $step = null): ?string
/** /**
* Returns the currrent site object * Returns the currrent site object
* *
* @return Kirby\Cms\Site * @return \Kirby\Cms\Site
*/ */
function site() function site()
{ {

View File

@@ -5,11 +5,13 @@ use Kirby\Cms\Field;
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Cms\Files; use Kirby\Cms\Files;
use Kirby\Cms\Html; use Kirby\Cms\Html;
use Kirby\Cms\Structure;
use Kirby\Cms\Page; use Kirby\Cms\Page;
use Kirby\Cms\Structure;
use Kirby\Cms\Url; use Kirby\Cms\Url;
use Kirby\Data\Json; use Kirby\Data\Json;
use Kirby\Data\Yaml; use Kirby\Data\Yaml;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
use Kirby\Toolkit\V; use Kirby\Toolkit\V;
use Kirby\Toolkit\Xml; use Kirby\Toolkit\Xml;
@@ -25,7 +27,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper boolean and inverts it * Converts the field value into a proper boolean and inverts it
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return boolean * @return boolean
*/ */
'isFalse' => function (Field $field): bool { 'isFalse' => function (Field $field): bool {
@@ -35,7 +37,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper boolean * Converts the field value into a proper boolean
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return boolean * @return boolean
*/ */
'isTrue' => function (Field $field): bool { 'isTrue' => function (Field $field): bool {
@@ -46,7 +48,7 @@ return function (App $app) {
* Validates the field content with the given validator and parameters * Validates the field content with the given validator and parameters
* *
* @param string $validator * @param string $validator
* @param mixed[] ...$arguments A list of optional validator arguments * @param mixed ...$arguments A list of optional validator arguments
* @return boolean * @return boolean
*/ */
'isValid' => function (Field $field, string $validator, ...$arguments): bool { 'isValid' => function (Field $field, string $validator, ...$arguments): bool {
@@ -58,7 +60,7 @@ return function (App $app) {
/** /**
* Parses the field value with the given method * Parses the field value with the given method
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param string $method [',', 'yaml', 'json'] * @param string $method [',', 'yaml', 'json']
* @return array * @return array
*/ */
@@ -76,7 +78,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper boolean * Converts the field value into a proper boolean
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param bool $default Default value if the field is empty * @param bool $default Default value if the field is empty
* @return bool * @return bool
*/ */
@@ -88,7 +90,7 @@ return function (App $app) {
/** /**
* Converts the field value to a timestamp or a formatted date * Converts the field value to a timestamp or a formatted date
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param string|null $format PHP date formatting string * @param string|null $format PHP date formatting string
* @param string|null $fallback Fallback string for `strtotime` (since 3.2) * @param string|null $fallback Fallback string for `strtotime` (since 3.2)
* @return string|int * @return string|int
@@ -110,8 +112,8 @@ return function (App $app) {
/** /**
* Returns a file object from a filename in the field * Returns a file object from a filename in the field
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\File|null * @return \Kirby\Cms\File|null
*/ */
'toFile' => function (Field $field) { 'toFile' => function (Field $field) {
return $field->toFiles()->first(); return $field->toFiles()->first();
@@ -120,9 +122,9 @@ return function (App $app) {
/** /**
* Returns a file collection from a yaml list of filenames in the field * Returns a file collection from a yaml list of filenames in the field
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param string $separator * @param string $separator
* @return Kirby\Cms\Files * @return \Kirby\Cms\Files
*/ */
'toFiles' => function (Field $field, string $separator = 'yaml') { 'toFiles' => function (Field $field, string $separator = 'yaml') {
$parent = $field->parent(); $parent = $field->parent();
@@ -140,31 +142,31 @@ return function (App $app) {
/** /**
* Converts the field value into a proper float * Converts the field value into a proper float
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param float $default Default value if the field is empty * @param float $default Default value if the field is empty
* @return float * @return float
*/ */
'toFloat' => function (Field $field, float $default = 0) { 'toFloat' => function (Field $field, float $default = 0) {
$value = $field->isEmpty() ? $default : $field->value; $value = $field->isEmpty() ? $default : $field->value;
return floatval($value); return (float)$value;
}, },
/** /**
* Converts the field value into a proper integer * Converts the field value into a proper integer
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param int $default Default value if the field is empty * @param int $default Default value if the field is empty
* @return int * @return int
*/ */
'toInt' => function (Field $field, int $default = 0) { 'toInt' => function (Field $field, int $default = 0) {
$value = $field->isEmpty() ? $default : $field->value; $value = $field->isEmpty() ? $default : $field->value;
return intval($value); return (int)$value;
}, },
/** /**
* Wraps a link tag around the field value. The field value is used as the link text * Wraps a link tag around the field value. The field value is used as the link text
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param mixed $attr1 Can be an optional Url. If no Url is set, the Url of the Page, File or Site will be used. Can also be an array of link attributes * @param mixed $attr1 Can be an optional Url. If no Url is set, the Url of the Page, File or Site will be used. Can also be an array of link attributes
* @param mixed $attr2 If `$attr1` is used to set the Url, you can use `$attr2` to pass an array of additional attributes. * @param mixed $attr2 If `$attr1` is used to set the Url, you can use `$attr2` to pass an array of additional attributes.
* @return string * @return string
@@ -188,8 +190,8 @@ return function (App $app) {
/** /**
* Returns a page object from a page id in the field * Returns a page object from a page id in the field
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Page|null * @return \Kirby\Cms\Page|null
*/ */
'toPage' => function (Field $field) use ($app) { 'toPage' => function (Field $field) use ($app) {
return $field->toPages()->first(); return $field->toPages()->first();
@@ -198,9 +200,9 @@ return function (App $app) {
/** /**
* Returns a pages collection from a yaml list of page ids in the field * Returns a pages collection from a yaml list of page ids in the field
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param string $separator Can be any other separator to split the field value by * @param string $separator Can be any other separator to split the field value by
* @return Kirby\Cms\Pages * @return \Kirby\Cms\Pages
*/ */
'toPages' => function (Field $field, string $separator = 'yaml') use ($app) { 'toPages' => function (Field $field, string $separator = 'yaml') use ($app) {
return $app->site()->find(false, false, ...$field->toData($separator)); return $app->site()->find(false, false, ...$field->toData($separator));
@@ -209,17 +211,27 @@ return function (App $app) {
/** /**
* Converts a yaml field to a Structure object * Converts a yaml field to a Structure object
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Structure * @return \Kirby\Cms\Structure
*/ */
'toStructure' => function (Field $field) { 'toStructure' => function (Field $field) {
try {
return new Structure(Yaml::decode($field->value), $field->parent()); return new Structure(Yaml::decode($field->value), $field->parent());
} catch (Exception $e) {
if ($field->parent() === null) {
$message = 'Invalid structure data for "' . $field->key() . '" field';
} else {
$message = 'Invalid structure data for "' . $field->key() . '" field on parent "' . $field->parent()->title() . '"';
}
throw new InvalidArgumentException($message);
}
}, },
/** /**
* Converts the field value to a Unix timestamp * Converts the field value to a Unix timestamp
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return int * @return int
*/ */
'toTimestamp' => function (Field $field): int { 'toTimestamp' => function (Field $field): int {
@@ -229,7 +241,7 @@ return function (App $app) {
/** /**
* Turns the field value into an absolute Url * Turns the field value into an absolute Url
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return string * @return string
*/ */
'toUrl' => function (Field $field): string { 'toUrl' => function (Field $field): string {
@@ -239,8 +251,8 @@ return function (App $app) {
/** /**
* Converts a user email address to a user object * Converts a user email address to a user object
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
'toUser' => function (Field $field) use ($app) { 'toUser' => function (Field $field) use ($app) {
return $field->toUsers()->first(); return $field->toUsers()->first();
@@ -249,9 +261,9 @@ return function (App $app) {
/** /**
* Returns a users collection from a yaml list of user email addresses in the field * Returns a users collection from a yaml list of user email addresses in the field
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param string $separator * @param string $separator
* @return Kirby\Cms\Users * @return \Kirby\Cms\Users
*/ */
'toUsers' => function (Field $field, string $separator = 'yaml') use ($app) { 'toUsers' => function (Field $field, string $separator = 'yaml') use ($app) {
return $app->users()->find(false, false, ...$field->toData($separator)); return $app->users()->find(false, false, ...$field->toData($separator));
@@ -279,7 +291,7 @@ return function (App $app) {
* Escapes the field value to be safely used in HTML * Escapes the field value to be safely used in HTML
* templates without the risk of XSS attacks * templates without the risk of XSS attacks
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param string $context html, attr, js or css * @param string $context html, attr, js or css
*/ */
'escape' => function (Field $field, string $context = 'html') { 'escape' => function (Field $field, string $context = 'html') {
@@ -291,11 +303,11 @@ return function (App $app) {
* Creates an excerpt of the field value without html * Creates an excerpt of the field value without html
* or any other formatting. * or any other formatting.
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param int $cahrs * @param int $cahrs
* @param boolean $strip * @param boolean $strip
* @param string $rep * @param string $rep
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = '…') { 'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = '…') {
$field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep); $field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep);
@@ -305,8 +317,8 @@ return function (App $app) {
/** /**
* Converts the field content to valid HTML * Converts the field content to valid HTML
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'html' => function (Field $field) { 'html' => function (Field $field) {
$field->value = htmlentities($field->value, ENT_COMPAT, 'utf-8'); $field->value = htmlentities($field->value, ENT_COMPAT, 'utf-8');
@@ -316,8 +328,8 @@ return function (App $app) {
/** /**
* Converts the field content from Markdown/Kirbytext to valid HTML * Converts the field content from Markdown/Kirbytext to valid HTML
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'kirbytext' => function (Field $field) use ($app) { 'kirbytext' => function (Field $field) use ($app) {
$field->value = $app->kirbytext($field->value, [ $field->value = $app->kirbytext($field->value, [
@@ -333,8 +345,8 @@ return function (App $app) {
* to valid HTML * to valid HTML
* @since 3.1.0 * @since 3.1.0
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'kirbytextinline' => function (Field $field) use ($app) { 'kirbytextinline' => function (Field $field) use ($app) {
$field->value = $app->kirbytext($field->value, [ $field->value = $app->kirbytext($field->value, [
@@ -348,8 +360,8 @@ return function (App $app) {
/** /**
* Parses all KirbyTags without also parsing Markdown * Parses all KirbyTags without also parsing Markdown
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'kirbytags' => function (Field $field) use ($app) { 'kirbytags' => function (Field $field) use ($app) {
$field->value = $app->kirbytags($field->value, [ $field->value = $app->kirbytags($field->value, [
@@ -363,8 +375,8 @@ return function (App $app) {
/** /**
* Converts the field content to lowercase * Converts the field content to lowercase
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'lower' => function (Field $field) { 'lower' => function (Field $field) {
$field->value = Str::lower($field->value); $field->value = Str::lower($field->value);
@@ -374,8 +386,8 @@ return function (App $app) {
/** /**
* Converts markdown to valid HTML * Converts markdown to valid HTML
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'markdown' => function (Field $field) use ($app) { 'markdown' => function (Field $field) use ($app) {
$field->value = $app->markdown($field->value); $field->value = $app->markdown($field->value);
@@ -385,8 +397,8 @@ return function (App $app) {
/** /**
* Converts the field content to valid XML * Converts the field content to valid XML
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'xml' => function (Field $field) { 'xml' => function (Field $field) {
$field->value = Xml::encode($field->value); $field->value = Xml::encode($field->value);
@@ -397,10 +409,10 @@ return function (App $app) {
* Cuts the string after the given length and * Cuts the string after the given length and
* adds "…" if it is longer * adds "…" if it is longer
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param int $length The number of characters in the string * @param int $length The number of characters in the string
* @param string $appendix An optional replacement for the missing rest * @param string $appendix An optional replacement for the missing rest
* @return Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'short' => function (Field $field, int $length, string $appendix = '…') { 'short' => function (Field $field, int $length, string $appendix = '…') {
$field->value = Str::short($field->value, $length, $appendix); $field->value = Str::short($field->value, $length, $appendix);
@@ -410,8 +422,8 @@ return function (App $app) {
/** /**
* Converts the field content to a slug * Converts the field content to a slug
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\cms\Field * @return \Kirby\cms\Field
*/ */
'slug' => function (Field $field) { 'slug' => function (Field $field) {
$field->value = Str::slug($field->value); $field->value = Str::slug($field->value);
@@ -421,8 +433,8 @@ return function (App $app) {
/** /**
* Applies SmartyPants to the field * Applies SmartyPants to the field
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\cms\Field * @return \Kirby\cms\Field
*/ */
'smartypants' => function (Field $field) use ($app) { 'smartypants' => function (Field $field) use ($app) {
$field->value = $app->smartypants($field->value); $field->value = $app->smartypants($field->value);
@@ -432,8 +444,8 @@ return function (App $app) {
/** /**
* Splits the field content into an array * Splits the field content into an array
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\cms\Field * @return \Kirby\cms\Field
*/ */
'split' => function (Field $field, $separator = ',') { 'split' => function (Field $field, $separator = ',') {
return Str::split((string)$field->value, $separator); return Str::split((string)$field->value, $separator);
@@ -442,8 +454,8 @@ return function (App $app) {
/** /**
* Converts the field content to uppercase * Converts the field content to uppercase
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\cms\Field * @return \Kirby\cms\Field
*/ */
'upper' => function (Field $field) { 'upper' => function (Field $field) {
$field->value = Str::upper($field->value); $field->value = Str::upper($field->value);
@@ -454,8 +466,8 @@ return function (App $app) {
* Avoids typographical widows in strings by replacing * Avoids typographical widows in strings by replacing
* the last space with `&nbsp;` * the last space with `&nbsp;`
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return Kirby\cms\Field * @return \Kirby\cms\Field
*/ */
'widont' => function (Field $field) { 'widont' => function (Field $field) {
$field->value = Str::widont($field->value); $field->value = Str::widont($field->value);
@@ -467,7 +479,7 @@ return function (App $app) {
/** /**
* Parses yaml in the field content and returns an array * Parses yaml in the field content and returns an array
* *
* @param Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return array * @return array
*/ */
'yaml' => function (Field $field): array { 'yaml' => function (Field $field): array {

View File

@@ -1,19 +1,13 @@
<?php <?php
use Kirby\Api\Api;
use Kirby\Cms\App;
use Kirby\Cms\Media; use Kirby\Cms\Media;
use Kirby\Cms\Panel; use Kirby\Cms\Panel;
use Kirby\Cms\PanelPlugins; use Kirby\Cms\PanelPlugins;
use Kirby\Cms\PluginAssets; use Kirby\Cms\PluginAssets;
use Kirby\Cms\Response;
use Kirby\Exception\NotFoundException;
use Kirby\Http\Response\Redirect; use Kirby\Http\Response\Redirect;
use Kirby\Http\Router;
use Kirby\Http\Router\Route; use Kirby\Http\Router\Route;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
use Kirby\Toolkit\View;
return function ($kirby) { return function ($kirby) {
$api = $kirby->option('api.slug', 'api'); $api = $kirby->option('api.slug', 'api');

View File

@@ -1,8 +1,7 @@
<?php <?php
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Toolkit\A; use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str;
return [ return [
'mixins' => [ 'mixins' => [
@@ -72,9 +71,6 @@ return [
return null; return null;
}, },
'dragTextType' => function () {
return (option('panel')['kirbytext'] ?? true) ? 'kirbytext' : 'markdown';
},
'parent' => function () { 'parent' => function () {
return $this->parentModel(); return $this->parentModel();
}, },
@@ -84,7 +80,7 @@ return [
if ($this->sortBy) { if ($this->sortBy) {
$files = $files->sortBy(...$files::sortArgs($this->sortBy)); $files = $files->sortBy(...$files::sortArgs($this->sortBy));
} elseif ($this->sortable === true) { } elseif ($this->sortable === true) {
$files = $files->sortBy('sort', 'asc'); $files = $files->sortBy('sort', 'asc', 'filename', 'asc');
} }
// apply the default pagination // apply the default pagination
@@ -106,7 +102,7 @@ return [
$image = $file->panelImage($this->image); $image = $file->panelImage($this->image);
$data[] = [ $data[] = [
'dragText' => $file->dragText($this->dragTextType, $dragTextAbsolute), 'dragText' => $file->dragText('auto', $dragTextAbsolute),
'filename' => $file->filename(), 'filename' => $file->filename(),
'id' => $file->id(), 'id' => $file->id(),
'text' => $file->toString($this->text), 'text' => $file->toString($this->text),

View File

@@ -1,5 +1,7 @@
<?php <?php
use Kirby\Toolkit\I18n;
return [ return [
'props' => [ 'props' => [
/** /**
@@ -8,5 +10,12 @@ return [
'empty' => function ($empty = null) { 'empty' => function ($empty = null) {
return I18n::translate($empty, $empty); return I18n::translate($empty, $empty);
} }
],
'computed' => [
'empty' => function () {
if ($this->empty) {
return $this->model()->toString($this->empty);
}
}
] ]
]; ];

View File

@@ -13,7 +13,11 @@ return [
], ],
'computed' => [ 'computed' => [
'headline' => function () { 'headline' => function () {
return $this->headline ?? ucfirst($this->name); if ($this->headline) {
return $this->model()->toString($this->headline);
}
return ucfirst($this->name);
} }
] ]
]; ];

View File

@@ -10,5 +10,12 @@ return [
'help' => function ($help = null) { 'help' => function ($help = null) {
return I18n::translate($help, $help); return I18n::translate($help, $help);
} }
],
'computed' => [
'help' => function () {
if ($this->help) {
return $this->model()->toString($this->help);
}
}
] ]
]; ];

View File

@@ -1,6 +1,6 @@
<?php <?php
use Kirby\Toolkit\Str; use Kirby\Exception\Exception;
return [ return [
'props' => [ 'props' => [
@@ -22,6 +22,15 @@ return [
if (!$parent) { if (!$parent) {
throw new Exception('The parent for the query "' . $query . '" cannot be found in the section "' . $this->name() . '"'); throw new Exception('The parent for the query "' . $query . '" cannot be found in the section "' . $this->name() . '"');
} }
if (
is_a($parent, 'Kirby\Cms\Page') === false &&
is_a($parent, 'Kirby\Cms\Site') === false &&
is_a($parent, 'Kirby\Cms\File') === false &&
is_a($parent, 'Kirby\Cms\User') === false
) {
throw new Exception('The parent for the section "' . $this->name() . '" has to be a page, site or user object');
}
} }
if ($parent === null) { if ($parent === null) {

View File

@@ -2,7 +2,7 @@
use Kirby\Cms\Blueprint; use Kirby\Cms\Blueprint;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\Str; use Kirby\Toolkit\I18n;
return [ return [
'mixins' => [ 'mixins' => [
@@ -80,9 +80,6 @@ return [
} }
], ],
'computed' => [ 'computed' => [
'dragTextType' => function () {
return option('panel.kirbytext', true) ? 'kirbytext' : 'markdown';
},
'parent' => function () { 'parent' => function () {
return $this->parentModel(); return $this->parentModel();
}, },
@@ -145,7 +142,7 @@ return [
$data[] = [ $data[] = [
'id' => $item->id(), 'id' => $item->id(),
'dragText' => $item->dragText($this->dragTextType), 'dragText' => $item->dragText(),
'text' => $item->toString($this->text), 'text' => $item->toString($this->text),
'info' => $item->toString($this->info ?? false), 'info' => $item->toString($this->info ?? false),
'parent' => $item->parentId(), 'parent' => $item->parentId(),

View File

@@ -8,7 +8,9 @@ use Kirby\Cms\Url;
*/ */
return [ return [
/* Date */ /**
* Date
*/
'date' => [ 'date' => [
'attr' => [], 'attr' => [],
'html' => function ($tag) { 'html' => function ($tag) {
@@ -16,7 +18,9 @@ return [
} }
], ],
/* Email */ /**
* Email
*/
'email' => [ 'email' => [
'attr' => [ 'attr' => [
'class', 'class',
@@ -35,7 +39,9 @@ return [
} }
], ],
/* File */ /**
* File
*/
'file' => [ 'file' => [
'attr' => [ 'attr' => [
'class', 'class',
@@ -66,7 +72,9 @@ return [
} }
], ],
/* Gist */ /**
* Gist
*/
'gist' => [ 'gist' => [
'attr' => [ 'attr' => [
'file' 'file'
@@ -76,7 +84,9 @@ return [
} }
], ],
/* Image */ /**
* Image
*/
'image' => [ 'image' => [
'attr' => [ 'attr' => [
'alt', 'alt',
@@ -143,7 +153,9 @@ return [
} }
], ],
/* Link */ /**
* Link
*/
'link' => [ 'link' => [
'attr' => [ 'attr' => [
'class', 'class',
@@ -169,7 +181,9 @@ return [
} }
], ],
/* Tel */ /**
* Tel
*/
'tel' => [ 'tel' => [
'attr' => [ 'attr' => [
'class', 'class',
@@ -186,7 +200,9 @@ return [
} }
], ],
/* Twitter */ /**
* Twitter
*/
'twitter' => [ 'twitter' => [
'attr' => [ 'attr' => [
'class', 'class',
@@ -216,7 +232,9 @@ return [
} }
], ],
/* Video */ /**
* Video
*/
'video' => [ 'video' => [
'attr' => [ 'attr' => [
'class', 'class',

View File

@@ -37,6 +37,7 @@
"error.access.login": "Invalid login", "error.access.login": "Invalid login",
"error.access.panel": "Нямате права за достъп до панела", "error.access.panel": "Нямате права за достъп до панела",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Профилната снимка не може да се качи", "error.avatar.create.fail": "Профилната снимка не може да се качи",
"error.avatar.delete.fail": "Профилната снимка не може да бъде изтрита", "error.avatar.delete.fail": "Профилната снимка не може да бъде изтрита",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Невалиден конвертор \"{converter}\"", "error.field.converter.invalid": "Невалиден конвертор \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Не можете да смените името на \"{filename}\"", "Не можете да смените името на \"{filename}\"",
"error.file.duplicate": "Файл с име \"{filename}\" вече съществува", "error.file.duplicate": "Файл с име \"{filename}\" вече съществува",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430", "error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430",
"error.user.password.undefined": "Потребителят няма парола", "error.user.password.undefined": "Потребителят няма парола",
"error.user.role.invalid": "Моля въведете валидна роля", "error.user.role.invalid": "Моля въведете валидна роля",
"error.user.undefined": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
"error.user.update.permission": "error.user.update.permission":
"Нямате права да обновите този потребител \"{name}\"", "Нямате права да обновите този потребител \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Български", "translation.name": "Български",
"upload": "Прикачи", "upload": "Прикачи",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Грешка", "upload.errors": "Грешка",
"upload.progress": "Uploading…", "upload.progress": "Uploading…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Inici de sessió no vàlid", "error.access.login": "Inici de sessió no vàlid",
"error.access.panel": "No tens permís per accedir al panell", "error.access.panel": "No tens permís per accedir al panell",
"error.access.view": "No tens accés a aquesta part del tauler",
"error.avatar.create.fail": "No s'ha pogut carregar la imatge del perfil", "error.avatar.create.fail": "No s'ha pogut carregar la imatge del perfil",
"error.avatar.delete.fail": "La imatge del perfil no s'ha pogut eliminar", "error.avatar.delete.fail": "La imatge del perfil no s'ha pogut eliminar",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"", "error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"",
"error.file.changeName.empty": "El nom no pot estar buit",
"error.file.changeName.permission": "error.file.changeName.permission":
"No tens permís per canviar el nom de \"{filename}\"", "No tens permís per canviar el nom de \"{filename}\"",
"error.file.duplicate": "Ja existeix un fitxer amb el nom \"{filename}\"", "error.file.duplicate": "Ja existeix un fitxer amb el nom \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Les contrasenyes no coincideixen", "error.user.password.notSame": "Les contrasenyes no coincideixen",
"error.user.password.undefined": "L'usuari no té una contrasenya", "error.user.password.undefined": "L'usuari no té una contrasenya",
"error.user.role.invalid": "Si us plau, introdueix un rol vàlid", "error.user.role.invalid": "Si us plau, introdueix un rol vàlid",
"error.user.undefined": "L'usuari no s'ha trobat",
"error.user.update.permission": "error.user.update.permission":
"No tens permís per actualitzar l'usuari \"{name}\"", "No tens permís per actualitzar l'usuari \"{name}\"",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Esquerra a dreta", "language.direction.ltr": "Esquerra a dreta",
"language.direction.rtl": "De dreta a esquerra", "language.direction.rtl": "De dreta a esquerra",
"language.locale": "Cadena local de PHP", "language.locale": "Cadena local de PHP",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "S'està fent servir una configuració regional personalitzada. Modifica el fitxer d'idioma a /site/languages",
"language.name": "Nom", "language.name": "Nom",
"language.updated": "S'ha actualitzat l'idioma", "language.updated": "S'ha actualitzat l'idioma",
@@ -412,6 +413,17 @@
"translation.name": "Catalan", "translation.name": "Catalan",
"upload": "Carregar", "upload": "Carregar",
"upload.error.cantMove": "El fitxer carregat no s'ha pogut moure",
"upload.error.cantWrite": "No s'ha pogut escriure el fitxer al disc",
"upload.error.default": "No s'ha pogut carregar el fitxer",
"upload.error.extension": "La càrrega del fitxer s'ha aturat per l'extensió",
"upload.error.formSize": "El fitxer carregat supera la directiva MAX_FILE_SIZE especificada en el formulari",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "El fitxer carregat supera la directiva upload_max_filesize especifiada al php.ini",
"upload.error.noFile": "No s'ha carregat cap fitxer",
"upload.error.noFiles": "No s'ha penjat cap fitxer",
"upload.error.partial": "El fitxer carregat només s'ha carregat parcialment",
"upload.error.tmpDir": "Falta una carpeta temporal",
"upload.errors": "Error", "upload.errors": "Error",
"upload.progress": "Carregant...", "upload.progress": "Carregant...",

View File

@@ -24,19 +24,20 @@
"delete": "Smazat", "delete": "Smazat",
"dimensions": "Rozměry", "dimensions": "Rozměry",
"discard": "Zahodit", "discard": "Zahodit",
"download": "Download", "download": "Stáhnout",
"duplicate": "Duplicate", "duplicate": "Duplikovat",
"edit": "Upravit", "edit": "Upravit",
"dialog.files.empty": "No files to select", "dialog.files.empty": "Žádné soubory k výběru",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "Žádné stránky k výběru",
"dialog.users.empty": "No users to select", "dialog.users.empty": "Žádní uživatelé k výběru",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"error.access.login": "Neplatné přihlášení", "error.access.login": "Neplatné přihlášení",
"error.access.panel": "Nemáte povoleno vstoupit do panelu", "error.access.panel": "Nemáte povoleno vstoupit do panelu",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Nebylo možné nahrát profilový obrázek", "error.avatar.create.fail": "Nebylo možné nahrát profilový obrázek",
"error.avatar.delete.fail": "Nebylo mo\u017en\u00e9 smazat profilov\u00fd obr\u00e1zek", "error.avatar.delete.fail": "Nebylo mo\u017en\u00e9 smazat profilov\u00fd obr\u00e1zek",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Neplatný konvertor \"{converter}\"", "error.field.converter.invalid": "Neplatný konvertor \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Nemáte povoleno změnit jméno souboru \"{filename}\"", "Nemáte povoleno změnit jméno souboru \"{filename}\"",
"error.file.duplicate": "Soubor s názvem \"{filename}\" již existuje", "error.file.duplicate": "Soubor s názvem \"{filename}\" již existuje",
@@ -71,13 +73,13 @@
"error.form.incomplete": "Prosím opravte všechny chyby ve formuláři", "error.form.incomplete": "Prosím opravte všechny chyby ve formuláři",
"error.form.notSaved": "Formulář nemohl být uložen", "error.form.notSaved": "Formulář nemohl být uložen",
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Zadejte prosím platný kód jazyka",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "Jazyk již existuje",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Zadejte prosím platné jméno jazyka",
"error.license.format": "Please enter a valid license key", "error.license.format": "Zadejte prosím platné licenční číslo",
"error.license.email": "Zadejte prosím platnou emailovou adresu", "error.license.email": "Zadejte prosím platnou emailovou adresu",
"error.license.verification": "The license could not be verified", "error.license.verification": "Licenci nelze ověřit",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky", "Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky",
@@ -104,7 +106,7 @@
"Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ", "Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ",
"error.page.duplicate": "error.page.duplicate":
"Stránka, která v adrese URL obsahuje \"{slug}\" již existuje", "Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "Nemáte dovoleno duplikovat \"{slug}\"",
"error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.", "error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.num.invalid": "error.page.num.invalid":
"Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.", "Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo", "error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo",
"error.user.password.undefined": "Uživatel nemá nastavené heslo.", "error.user.password.undefined": "Uživatel nemá nastavené heslo.",
"error.user.role.invalid": "Zadejte prosím platnou roli", "error.user.role.invalid": "Zadejte prosím platnou roli",
"error.user.undefined": "U\u017eivatele se nepoda\u0159ilo nal\u00e9zt",
"error.user.update.permission": "error.user.update.permission":
"Nemáte dovoleno upravit uživatele \"{name}\"", "Nemáte dovoleno upravit uživatele \"{name}\"",
@@ -183,9 +184,9 @@
"error.validation.contains": "error.validation.contains":
"Zadejte prosím hodnotu, která obsahuje \"{needle}\"", "Zadejte prosím hodnotu, která obsahuje \"{needle}\"",
"error.validation.date": "Zadejte prosím platné datum", "error.validation.date": "Zadejte prosím platné datum",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Zadejte prosím datum po {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Zadejte prosím datum před {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Zadejte prosím datum mezi {min} a {max}",
"error.validation.denied": "Prosím, odmítněte", "error.validation.denied": "Prosím, odmítněte",
"error.validation.different": "Hodnota nesmí být \"{other}\"", "error.validation.different": "Hodnota nesmí být \"{other}\"",
"error.validation.email": "Zadejte prosím platnou emailovou adresu", "error.validation.email": "Zadejte prosím platnou emailovou adresu",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Zleva doprava", "language.direction.ltr": "Zleva doprava",
"language.direction.rtl": "Zprava doleva", "language.direction.rtl": "Zprava doleva",
"language.locale": "Řetězec lokalizace PHP", "language.locale": "Řetězec lokalizace PHP",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Používáte vlastní jazykové nastavení. Upravte prosím soubor s nastavením v /site/languages",
"language.name": "Jméno", "language.name": "Jméno",
"language.updated": "Jazyk byl aktualizován", "language.updated": "Jazyk byl aktualizován",
@@ -289,12 +290,12 @@
"loading": "Načítám", "loading": "Načítám",
"lock.unsaved": "Unsaved changes", "lock.unsaved": "Neuložené změny",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>", "lock.isLocked": "Neuložené změny provedené <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "Soubor nelze změnit, právě jej upravuje {email}.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "Stránku nelze změnit, právě jí upravuje {email} .",
"lock.unlock": "Unlock", "lock.unlock": "Odemknout",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "lock.isUnlocked": "Vaše neuložené změny byly přepsány jiným uživatelem. Můžeze si své úpravy stáhnout a zapracovat je ručně.",
"login": "P\u0159ihl\u00e1sit se", "login": "P\u0159ihl\u00e1sit se",
"login.remember": "Zůstat přihlášen", "login.remember": "Zůstat přihlášen",
@@ -323,8 +324,8 @@
"more": "Více", "more": "Více",
"name": "Jméno", "name": "Jméno",
"next": "Další", "next": "Další",
"off": "off", "off": "vypnuto",
"on": "on", "on": "zapnuto",
"open": "Otevřít", "open": "Otevřít",
"options": "Možnosti", "options": "Možnosti",
@@ -346,8 +347,8 @@
"page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky", "page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky",
"page.draft.create": "Vytvořit koncept", "page.draft.create": "Vytvořit koncept",
"page.duplicate.appendix": "Kopírovat", "page.duplicate.appendix": "Kopírovat",
"page.duplicate.files": "Copy files", "page.duplicate.files": "Kopírovat soubory",
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Kopírovat stránky",
"page.status": "Stav", "page.status": "Stav",
"page.status.draft": "Koncept", "page.status.draft": "Koncept",
"page.status.draft.description": "page.status.draft.description":
@@ -373,13 +374,13 @@
"revert": "Zahodit", "revert": "Zahodit",
"role": "Role", "role": "Role",
"role.admin.description": "The admin has all rights", "role.admin.description": "Administrátor má všechna práva",
"role.admin.title": "Admin", "role.admin.title": "Administrátor",
"role.all": "Vše", "role.all": "Vše",
"role.empty": "Neexistují uživatelé s touto rolí", "role.empty": "Neexistují uživatelé s touto rolí",
"role.description.placeholder": "Žádný popis", "role.description.placeholder": "Žádný popis",
"role.nobody.description": "This is a fallback role without any permissions", "role.nobody.description": "Toto je výchozí role bez jakýchkoli oprávnění",
"role.nobody.title": "Nobody", "role.nobody.title": "Nikdo",
"save": "Ulo\u017eit", "save": "Ulo\u017eit",
"search": "Hledat", "search": "Hledat",
@@ -412,6 +413,17 @@
"translation.name": "\u010cesky", "translation.name": "\u010cesky",
"upload": "Nahrát", "upload": "Nahrát",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Chyba", "upload.errors": "Chyba",
"upload.progress": "Nahrávání...", "upload.progress": "Nahrávání...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ugyldigt log ind", "error.access.login": "Ugyldigt log ind",
"error.access.panel": "Du har ikke adgang til panelet", "error.access.panel": "Du har ikke adgang til panelet",
"error.access.view": "Du har ikke adgang til denne del af panelet",
"error.avatar.create.fail": "Profilbilledet kunne blev ikke uploadet ", "error.avatar.create.fail": "Profilbilledet kunne blev ikke uploadet ",
"error.avatar.delete.fail": "Profilbilledet kunne ikke slettes", "error.avatar.delete.fail": "Profilbilledet kunne ikke slettes",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ugyldig converter \"{converter}\"", "error.field.converter.invalid": "Ugyldig converter \"{converter}\"",
"error.file.changeName.empty": "Navn kan ikke efterlades tomt",
"error.file.changeName.permission": "error.file.changeName.permission":
"Du har ikke tilladelse til at ændre navnet på filen \"{filename}\"", "Du har ikke tilladelse til at ændre navnet på filen \"{filename}\"",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede", "error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden", "error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden",
"error.user.password.undefined": "Brugeren har ikke en adgangskode", "error.user.password.undefined": "Brugeren har ikke en adgangskode",
"error.user.role.invalid": "Indtast venligst en gyldig rolle", "error.user.role.invalid": "Indtast venligst en gyldig rolle",
"error.user.undefined": "Brugeren kunne ikke findes",
"error.user.update.permission": "error.user.update.permission":
"Du har ikke tilladelse til at opdatere brugeren \"{name}\"", "Du har ikke tilladelse til at opdatere brugeren \"{name}\"",
@@ -183,9 +184,9 @@
"error.validation.contains": "error.validation.contains":
"Indtast venligst en værdi der indeholder \"{needle}\"", "Indtast venligst en værdi der indeholder \"{needle}\"",
"error.validation.date": "Indtast venligst en gyldig dato", "error.validation.date": "Indtast venligst en gyldig dato",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Indtast venligst en dato efter {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Indtast venligst en dato før {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Indtast venligst en dato imellem {min} og {max}",
"error.validation.denied": "Venligst afvis", "error.validation.denied": "Venligst afvis",
"error.validation.different": "Værdien må ikke være \"{other}\"", "error.validation.different": "Værdien må ikke være \"{other}\"",
"error.validation.email": "Indtast venligst en gyldig email adresse", "error.validation.email": "Indtast venligst en gyldig email adresse",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Venstre mod højre", "language.direction.ltr": "Venstre mod højre",
"language.direction.rtl": "Højre mod venstre", "language.direction.rtl": "Højre mod venstre",
"language.locale": "PHP locale string", "language.locale": "PHP locale string",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Du benytter en brugerdefineret sprogopsætning. Rediger venligst dette i sprogfilen i /site/languages",
"language.name": "Navn", "language.name": "Navn",
"language.updated": "Sproget er blevet opdateret", "language.updated": "Sproget er blevet opdateret",
@@ -412,6 +413,17 @@
"translation.name": "Dansk", "translation.name": "Dansk",
"upload": "Upload", "upload": "Upload",
"upload.error.cantMove": "Den uploadede fil kunne ikke flyttes",
"upload.error.cantWrite": "Kunne ikke skrive fil til disk",
"upload.error.default": "Filen kunne ikke uploades",
"upload.error.extension": "Upload af filen blev stoppet af dens type",
"upload.error.formSize": "Filen overskrider MAX_FILE_SIZE direktivet der er specificeret for formularen",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "FIlen overskrider upload_max_filesize direktivet i php.ini",
"upload.error.noFile": "Ingen fil blev uploadet",
"upload.error.noFiles": "Ingen filer blev uploadet",
"upload.error.partial": "Den uploadede fil blev kun delvist uploadet",
"upload.error.tmpDir": "Der mangler en midlertidig mappe",
"upload.errors": "Fejl", "upload.errors": "Fejl",
"upload.progress": "Uploader...", "upload.progress": "Uploader...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ungültige Zugangsdaten", "error.access.login": "Ungültige Zugangsdaten",
"error.access.panel": "Du hast keinen Zugang zum Panel", "error.access.panel": "Du hast keinen Zugang zum Panel",
"error.access.view": "Du hast keinen Zugriff auf diesen Teil des Panels",
"error.avatar.create.fail": "Das Profilbild konnte nicht hochgeladen werden", "error.avatar.create.fail": "Das Profilbild konnte nicht hochgeladen werden",
"error.avatar.delete.fail": "Das Profilbild konnte nicht gel\u00f6scht werden", "error.avatar.delete.fail": "Das Profilbild konnte nicht gel\u00f6scht werden",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"", "error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"",
"error.file.changeName.empty": "Bitte gib einen Namen an",
"error.file.changeName.permission": "error.file.changeName.permission":
"Du darfst den Dateinamen von \"{filename}\" nicht ändern", "Du darfst den Dateinamen von \"{filename}\" nicht ändern",
"error.file.duplicate": "Eine Datei mit dem Dateinamen \"{filename}\" besteht bereits", "error.file.duplicate": "Eine Datei mit dem Dateinamen \"{filename}\" besteht bereits",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Die Passwörter stimmen nicht überein", "error.user.password.notSame": "Die Passwörter stimmen nicht überein",
"error.user.password.undefined": "Der Benutzer hat kein Passwort", "error.user.password.undefined": "Der Benutzer hat kein Passwort",
"error.user.role.invalid": "Bitte gib eine gültige Rolle an", "error.user.role.invalid": "Bitte gib eine gültige Rolle an",
"error.user.undefined": "Der Benutzer wurde nicht gefunden",
"error.user.update.permission": "error.user.update.permission":
"Du darfst den den Benutzer \"{name}\" nicht editieren", "Du darfst den den Benutzer \"{name}\" nicht editieren",
@@ -412,6 +413,17 @@
"translation.name": "Deutsch", "translation.name": "Deutsch",
"upload": "Hochladen", "upload": "Hochladen",
"upload.error.cantMove": "Die Datei konnte nicht an ihren Zielort bewegt werden",
"upload.error.cantWrite": "Die Datei konnte nicht auf der Festplatte gespeichert werden",
"upload.error.default": "Die Datei konnte nicht hochgeladen werden",
"upload.error.extension": "Der Dateiupload wurde durch eine Erweiterung verhindert",
"upload.error.formSize": "Die Datei ist größer als die MAX_FILE_SIZE Einstellung im Formular",
"upload.error.iniPostSize": "Die Datei ist größer als die post_max_size Einstellung in der php.ini",
"upload.error.iniSize": "Die Datei ist größer als die upload_max_filesize Einstellung in der php.ini",
"upload.error.noFile": "Es wurde keine Datei hochgeladen",
"upload.error.noFiles": "Es wurden keine Dateien hochgeladen",
"upload.error.partial": "Die Datei wurde nur teilweise hochgeladen",
"upload.error.tmpDir": "Der temporäre Ordner für den Dateiupload existiert leider nicht",
"upload.errors": "Fehler", "upload.errors": "Fehler",
"upload.progress": "Hochladen …", "upload.progress": "Hochladen …",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Mη έγκυρη σύνδεση", "error.access.login": "Mη έγκυρη σύνδεση",
"error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου", "error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Δεν ήταν δυνατή η μεταφόρτωση της εικόνας προφίλ", "error.avatar.create.fail": "Δεν ήταν δυνατή η μεταφόρτωση της εικόνας προφίλ",
"error.avatar.delete.fail": "Δεν ήταν δυνατή η διαγραφή της εικόνας προφίλ", "error.avatar.delete.fail": "Δεν ήταν δυνατή η διαγραφή της εικόνας προφίλ",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"", "error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Δεν επιτρέπεται να αλλάξετε το όνομα του \"{filename}\"", "Δεν επιτρέπεται να αλλάξετε το όνομα του \"{filename}\"",
"error.file.duplicate": "Ένα αρχείο με το όνομα \"{filename}\" υπάρχει ήδη", "error.file.duplicate": "Ένα αρχείο με το όνομα \"{filename}\" υπάρχει ήδη",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
"error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης", "error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης",
"error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο", "error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο",
"error.user.undefined": "Δεν είναι δυνατή η εύρεση του χρήστη",
"error.user.update.permission": "error.user.update.permission":
"Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"", "Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac", "translation.name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
"upload": "Μεταφόρτωση", "upload": "Μεταφόρτωση",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Σφάλμα", "upload.errors": "Σφάλμα",
"upload.progress": "Μεταφόρτωση...", "upload.progress": "Μεταφόρτωση...",

View File

@@ -155,6 +155,8 @@
"The role for the last admin cannot be changed", "The role for the last admin cannot be changed",
"error.user.changeRole.permission": "error.user.changeRole.permission":
"You are not allowed to change the role for the user \"{name}\"", "You are not allowed to change the role for the user \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "You are not allowed to create this user", "error.user.create.permission": "You are not allowed to create this user",
"error.user.delete": "The user \"{name}\" cannot be deleted", "error.user.delete": "The user \"{name}\" cannot be deleted",
"error.user.delete.lastAdmin": "The last admin cannot be deleted", "error.user.delete.lastAdmin": "The last admin cannot be deleted",
@@ -413,6 +415,17 @@
"translation.name": "English", "translation.name": "English",
"upload": "Upload", "upload": "Upload",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Error", "upload.errors": "Error",
"upload.progress": "Uploading…", "upload.progress": "Uploading…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ingreso inválido", "error.access.login": "Ingreso inválido",
"error.access.panel": "No tienes permitido acceder al panel.", "error.access.panel": "No tienes permitido acceder al panel.",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.", "error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "No se pudo eliminar la foto de perfil.", "error.avatar.delete.fail": "No se pudo eliminar la foto de perfil.",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertidor inválido \"{converter}\"", "error.field.converter.invalid": "Convertidor inválido \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"No tienes permitido cambiar el nombre de \"{filename}\"", "No tienes permitido cambiar el nombre de \"{filename}\"",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\".", "error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\".",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Por favor confirma la contrase\u00f1a", "error.user.password.notSame": "Por favor confirma la contrase\u00f1a",
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.role.invalid": "Por favor ingresa un rol valido", "error.user.role.invalid": "Por favor ingresa un rol valido",
"error.user.undefined": "El usuario no pudo ser encontrado",
"error.user.update.permission": "error.user.update.permission":
"No tienes permiso para actualizar al usuario \"{name}\"", "No tienes permiso para actualizar al usuario \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Inglés", "translation.name": "Inglés",
"upload": "Subir", "upload": "Subir",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Error", "upload.errors": "Error",
"upload.progress": "Subiendo...", "upload.progress": "Subiendo...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ingreso inválido", "error.access.login": "Ingreso inválido",
"error.access.panel": "No estás autorizado para acceder al panel", "error.access.panel": "No estás autorizado para acceder al panel",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.", "error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "No se pudo borrar la foto de perfil", "error.avatar.delete.fail": "No se pudo borrar la foto de perfil",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertidor \"{converter}\" inválido", "error.field.converter.invalid": "Convertidor \"{converter}\" inválido",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"No tienes permitido cambiar el nombre de \"{filename}\"", "No tienes permitido cambiar el nombre de \"{filename}\"",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"", "error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Las contraseñas no coinciden", "error.user.password.notSame": "Las contraseñas no coinciden",
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.role.invalid": "Por favor ingrese un rol válido", "error.user.role.invalid": "Por favor ingrese un rol válido",
"error.user.undefined": "El usuario no puede ser encontrado",
"error.user.update.permission": "error.user.update.permission":
"No tienes permitido actualizar al usuario \"{name}\"", "No tienes permitido actualizar al usuario \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Español", "translation.name": "Español",
"upload": "Subir", "upload": "Subir",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Error", "upload.errors": "Error",
"upload.progress": "Cargando…", "upload.progress": "Cargando…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "اطلاعات ورودی نامعتبر است", "error.access.login": "اطلاعات ورودی نامعتبر است",
"error.access.panel": "شما اجازه دسترسی به پانل را ندارید", "error.access.panel": "شما اجازه دسترسی به پانل را ندارید",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "بارگزاری تصویر پروفایل موفق نبود", "error.avatar.create.fail": "بارگزاری تصویر پروفایل موفق نبود",
"error.avatar.delete.fail": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f", "error.avatar.delete.fail": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "مبدل «{converter}» نامعتبر است", "error.field.converter.invalid": "مبدل «{converter}» نامعتبر است",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"شما اجازه تنغییر نام فایل «{filename}» را ندارید", "شما اجازه تنغییر نام فایل «{filename}» را ندارید",
"error.file.duplicate": "فایلی هم نام با «{filename}» هم اکنون موجود است", "error.file.duplicate": "فایلی هم نام با «{filename}» هم اکنون موجود است",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f", "error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f",
"error.user.password.undefined": "کاربر فاقد گذرواژه است", "error.user.password.undefined": "کاربر فاقد گذرواژه است",
"error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید", "error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید",
"error.user.undefined": "\u06a9\u0627\u0631\u0628\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f",
"error.user.update.permission": "error.user.update.permission":
"شما اجازه بروزرسانی کاربر «{name}» را ندارید", "شما اجازه بروزرسانی کاربر «{name}» را ندارید",
@@ -412,6 +413,17 @@
"translation.name": "انگلیسی", "translation.name": "انگلیسی",
"upload": "بارگذاری", "upload": "بارگذاری",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "خطا", "upload.errors": "خطا",
"upload.progress": "در حال بارگذاری...", "upload.progress": "در حال بارگذاری...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Kirjautumistiedot eivät kelpaa", "error.access.login": "Kirjautumistiedot eivät kelpaa",
"error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia", "error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profiilikuvaa ei voitu lähettää", "error.avatar.create.fail": "Profiilikuvaa ei voitu lähettää",
"error.avatar.delete.fail": "Profiilikuvaa ei voitu poistaa", "error.avatar.delete.fail": "Profiilikuvaa ei voitu poistaa",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa", "error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä", "Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä",
"error.file.duplicate": "Tiedosto nimellä \"{filename}\" on jo olemassa", "error.file.duplicate": "Tiedosto nimellä \"{filename}\" on jo olemassa",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Salasanat eivät täsmää", "error.user.password.notSame": "Salasanat eivät täsmää",
"error.user.password.undefined": "Käyttäjällä ei ole salasanaa", "error.user.password.undefined": "Käyttäjällä ei ole salasanaa",
"error.user.role.invalid": "Anna kelpaava käyttäjätaso", "error.user.role.invalid": "Anna kelpaava käyttäjätaso",
"error.user.undefined": "K\u00e4ytt\u00e4j\u00e4\u00e4 ei l\u00f6ytynyt",
"error.user.update.permission": "error.user.update.permission":
"Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"", "Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Suomi", "translation.name": "Suomi",
"upload": "Lähetä", "upload": "Lähetä",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Virhe", "upload.errors": "Virhe",
"upload.progress": "Lähetetään...", "upload.progress": "Lähetetään...",

View File

@@ -37,8 +37,9 @@
"error.access.login": "Identifiant incorrect", "error.access.login": "Identifiant incorrect",
"error.access.panel": "Vous nêtes pas autorisé à accéder au Panel", "error.access.panel": "Vous nêtes pas autorisé à accéder au Panel",
"error.access.view": "Vous nêtes pas autorisé à accéder à cette section du Panel",
"error.avatar.create.fail": "Limage du profil na pas pu être transférée", "error.avatar.create.fail": "Limage du profil na pu être transférée",
"error.avatar.delete.fail": "Limage du profil na pu être supprimée", "error.avatar.delete.fail": "Limage du profil na pu être supprimée",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid":
"Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels", "Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertisseur «&nbsp;{converter}&nbsp;» incorrect", "error.field.converter.invalid": "Convertisseur «&nbsp;{converter}&nbsp;» incorrect",
"error.file.changeName.empty": "Le nom ne peut être vide",
"error.file.changeName.permission": "error.file.changeName.permission":
"Vous nêtes pas autorisé à modifier le nom de «&nbsp;{filename}&nbsp;»", "Vous nêtes pas autorisé à modifier le nom de «&nbsp;{filename}&nbsp;»",
"error.file.duplicate": "Un fichier nommé «&nbsp;{filename}&nbsp;» existe déjà", "error.file.duplicate": "Un fichier nommé «&nbsp;{filename}&nbsp;» existe déjà",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Les mots de passe ne sont pas identiques", "error.user.password.notSame": "Les mots de passe ne sont pas identiques",
"error.user.password.undefined": "Cet utilisateur na pas de mot de passe", "error.user.password.undefined": "Cet utilisateur na pas de mot de passe",
"error.user.role.invalid": "Veuillez saisir un rôle valide", "error.user.role.invalid": "Veuillez saisir un rôle valide",
"error.user.undefined": "Lutilisateur est introuvable",
"error.user.update.permission": "error.user.update.permission":
"Vous nêtes pas autorisé à modifier lutilisateur « {name} »", "Vous nêtes pas autorisé à modifier lutilisateur « {name} »",
@@ -265,7 +266,7 @@
"language.direction.ltr": "De gauche à droite", "language.direction.ltr": "De gauche à droite",
"language.direction.rtl": "De droite à gauche", "language.direction.rtl": "De droite à gauche",
"language.locale": "Locales PHP", "language.locale": "Locales PHP",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Vous utilisez une Locale PHP personnalisée. Veuillez la modifier dans le fichier de langue situé dans /site/languages",
"language.name": "Nom", "language.name": "Nom",
"language.updated": "La langue a été mise à jour", "language.updated": "La langue a été mise à jour",
@@ -412,6 +413,17 @@
"translation.name": "Français", "translation.name": "Français",
"upload": "Transférer", "upload": "Transférer",
"upload.error.cantMove": "Le fichier transféré na pu être déplacé",
"upload.error.cantWrite": "Le fichier na pu être écrit sur le disque",
"upload.error.default": "Le fichier na pu être transféré",
"upload.error.extension": "Le transfert de fichier a été stoppé par une extension",
"upload.error.formSize": "Le fichier transféré excède la directive MAX_FILE_SIZE spécifiée dans le formulaire",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "Le fichier transféré excède la directive MAX_FILE_SIZE spécifiée dans php.ini",
"upload.error.noFile": "Aucun fichier na été transféré",
"upload.error.noFiles": "Aucun fichier na été transféré",
"upload.error.partial": "Le fichier na été que partiellement transféré",
"upload.error.tmpDir": "Un dossier temporaire est manquant",
"upload.errors": "Erreur", "upload.errors": "Erreur",
"upload.progress": "Transfert en cours…", "upload.progress": "Transfert en cours…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Érvénytelen bejelentkezés", "error.access.login": "Érvénytelen bejelentkezés",
"error.access.panel": "Nincs jogosultságod megnyitni a panelt", "error.access.panel": "Nincs jogosultságod megnyitni a panelt",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "A profilkép feltöltése nem sikerült", "error.avatar.create.fail": "A profilkép feltöltése nem sikerült",
"error.avatar.delete.fail": "A profilkép nem törölhető", "error.avatar.delete.fail": "A profilkép nem törölhető",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"", "error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Nincs jogosultságod megváltoztatni a \"{filename}\" fájl nevét", "Nincs jogosultságod megváltoztatni a \"{filename}\" fájl nevét",
"error.file.duplicate": "Már létezik \"{filename}\" nevű fájl", "error.file.duplicate": "Már létezik \"{filename}\" nevű fájl",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "K\u00e9rlek er\u0151s\u00edtsd meg a jelsz\u00f3t", "error.user.password.notSame": "K\u00e9rlek er\u0151s\u00edtsd meg a jelsz\u00f3t",
"error.user.password.undefined": "A felhasználónak nincs jelszó megadva", "error.user.password.undefined": "A felhasználónak nincs jelszó megadva",
"error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört", "error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört",
"error.user.undefined": "A felhaszn\u00e1l\u00f3 nem tal\u00e1lhat\u00f3",
"error.user.update.permission": "error.user.update.permission":
"Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait", "Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait",
@@ -412,6 +413,17 @@
"translation.name": "Magyar", "translation.name": "Magyar",
"upload": "Feltöltés", "upload": "Feltöltés",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Hiba", "upload.errors": "Hiba",
"upload.progress": "Feltöltés...", "upload.progress": "Feltöltés...",

View File

@@ -33,10 +33,11 @@
"dialog.users.empty": "Tidak ada pengguna untuk dipilih", "dialog.users.empty": "Tidak ada pengguna untuk dipilih",
"email": "Surel", "email": "Surel",
"email.placeholder": "surel@contohsurel.com", "email.placeholder": "surel@contoh.com",
"error.access.login": "Upaya masuk tidak valid", "error.access.login": "Upaya masuk tidak valid",
"error.access.panel": "Anda tidak diizinkan mengakses panel", "error.access.panel": "Anda tidak diizinkan mengakses panel",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Gambar profil tidak dapat diunggah", "error.avatar.create.fail": "Gambar profil tidak dapat diunggah",
"error.avatar.delete.fail": "Gambar profil tidak dapat dihapus", "error.avatar.delete.fail": "Gambar profil tidak dapat dihapus",
@@ -45,12 +46,13 @@
"error.avatar.mime.forbidden": "error.avatar.mime.forbidden":
"Gambar profil harus berupa berkas JPEG atau PNG", "Gambar profil harus berupa berkas JPEG atau PNG",
"error.blueprint.notFound": "Blueprint \"{name}\" tidak dapat dimuat", "error.blueprint.notFound": "Cetak biru \"{name}\" tidak dapat dimuat",
"error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan", "error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan",
"error.field.converter.invalid": "Konverter \"{converter}\" tidak valid", "error.field.converter.invalid": "Konverter \"{converter}\" tidak valid",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Anda tidak diizinkan mengubah nama berkas \"{filename}\"", "Anda tidak diizinkan mengubah nama berkas \"{filename}\"",
"error.file.duplicate": "Berkas dengan nama \"{filename}\" sudah ada", "error.file.duplicate": "Berkas dengan nama \"{filename}\" sudah ada",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Sandi tidak cocok", "error.user.password.notSame": "Sandi tidak cocok",
"error.user.password.undefined": "Pengguna tidak memiliki sandi", "error.user.password.undefined": "Pengguna tidak memiliki sandi",
"error.user.role.invalid": "Masukkan peran yang valid", "error.user.role.invalid": "Masukkan peran yang valid",
"error.user.undefined": "Pengguna tidak dapat ditemukan",
"error.user.update.permission": "error.user.update.permission":
"Anda tidak diizinkan memperbaharui pengguna \"{name}\"", "Anda tidak diizinkan memperbaharui pengguna \"{name}\"",
@@ -265,7 +266,7 @@
"language.direction.ltr": "Kiri ke kanan", "language.direction.ltr": "Kiri ke kanan",
"language.direction.rtl": "Kanan ke kiri", "language.direction.rtl": "Kanan ke kiri",
"language.locale": "String \"PHP locale\"", "language.locale": "String \"PHP locale\"",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Anda menggunakan pengaturan lokal ubah suaian. Ubah di berkas bahasa di /site/languages",
"language.name": "Nama", "language.name": "Nama",
"language.updated": "Bahasa sudah diperbaharui", "language.updated": "Bahasa sudah diperbaharui",
@@ -412,6 +413,17 @@
"translation.name": "Bahasa Indonesia", "translation.name": "Bahasa Indonesia",
"upload": "Unggah", "upload": "Unggah",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Kesalahan", "upload.errors": "Kesalahan",
"upload.progress": "Mengunggah…", "upload.progress": "Mengunggah…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Login Invalido", "error.access.login": "Login Invalido",
"error.access.panel": "Non ti è permesso accedere al pannello", "error.access.panel": "Non ti è permesso accedere al pannello",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Non è stato possibile caricare l'immagine del profilo", "error.avatar.create.fail": "Non è stato possibile caricare l'immagine del profilo",
"error.avatar.delete.fail": "Non è stato possibile eliminare l'immagine del profilo", "error.avatar.delete.fail": "Non è stato possibile eliminare l'immagine del profilo",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Convertitore \"{converter}\" non valido", "error.field.converter.invalid": "Convertitore \"{converter}\" non valido",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Non ti è permesso modificare il nome di \"{filename}\"", "Non ti è permesso modificare il nome di \"{filename}\"",
"error.file.duplicate": "Un file con il nome \"{filename}\" esiste già", "error.file.duplicate": "Un file con il nome \"{filename}\" esiste già",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Le password non corrispondono", "error.user.password.notSame": "Le password non corrispondono",
"error.user.password.undefined": "L'utente non ha una password", "error.user.password.undefined": "L'utente non ha una password",
"error.user.role.invalid": "Inserisci un ruolo valido", "error.user.role.invalid": "Inserisci un ruolo valido",
"error.user.undefined": "L'utente non \u00e8 stato trovato",
"error.user.update.permission": "error.user.update.permission":
"Non ti è permesso aggiornare l'utente \"{name}\"", "Non ti è permesso aggiornare l'utente \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Italiano", "translation.name": "Italiano",
"upload": "Carica", "upload": "Carica",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Errore", "upload.errors": "Errore",
"upload.progress": "Caricamento...", "upload.progress": "Caricamento...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "로그인할 수 없습니다.", "error.access.login": "로그인할 수 없습니다.",
"error.access.panel": "패널에 접근할 권한이 없습니다.", "error.access.panel": "패널에 접근할 권한이 없습니다.",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "프로필 이미지를 업로드할 수 없습니다.", "error.avatar.create.fail": "프로필 이미지를 업로드할 수 없습니다.",
"error.avatar.delete.fail": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", "error.avatar.delete.fail": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.", "error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"파일명({filename})을 변경할 권한이 없습니다.", "파일명({filename})을 변경할 권한이 없습니다.",
"error.file.duplicate": "파일명이 같은 파일({filename})이 있습니다.", "error.file.duplicate": "파일명이 같은 파일({filename})이 있습니다.",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.", "error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.",
"error.user.password.undefined": "암호가 설정되지 않았습니다.", "error.user.password.undefined": "암호가 설정되지 않았습니다.",
"error.user.role.invalid": "올바른 역할을 입력하세요.", "error.user.role.invalid": "올바른 역할을 입력하세요.",
"error.user.undefined": "\uc0ac\uc6a9\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.user.update.permission": "error.user.update.permission":
"사용자({name})의 정보를 변경할 권한이 없습니다.", "사용자({name})의 정보를 변경할 권한이 없습니다.",
@@ -412,6 +413,17 @@
"translation.name": "한국어", "translation.name": "한국어",
"upload": "업로드", "upload": "업로드",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "오류", "upload.errors": "오류",
"upload.progress": "업로드 중…", "upload.progress": "업로드 중…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Neteisingas prisijungimo vardas", "error.access.login": "Neteisingas prisijungimo vardas",
"error.access.panel": "Neturite teisės prisijungti prie valdymo pulto", "error.access.panel": "Neturite teisės prisijungti prie valdymo pulto",
"error.access.view": "Neturite teisės peržiūrėti šios valdymo pulto dalies",
"error.avatar.create.fail": "Nepavyko įkelti profilio nuotraukos", "error.avatar.create.fail": "Nepavyko įkelti profilio nuotraukos",
"error.avatar.delete.fail": "Nepavyko pašalinti profilio nuotraukos", "error.avatar.delete.fail": "Nepavyko pašalinti profilio nuotraukos",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"", "error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"",
"error.file.changeName.empty": "Pavadinimas negali būti tuščias",
"error.file.changeName.permission": "error.file.changeName.permission":
"Neturite teisės pakeisti failo pavadinimo \"{filename}\"", "Neturite teisės pakeisti failo pavadinimo \"{filename}\"",
"error.file.duplicate": "Failas su pavadinimu \"{filename}\" jau yra", "error.file.duplicate": "Failas su pavadinimu \"{filename}\" jau yra",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Slaptažodžiai nesutampa", "error.user.password.notSame": "Slaptažodžiai nesutampa",
"error.user.password.undefined": "Vartotojas neturi slaptažodžio", "error.user.password.undefined": "Vartotojas neturi slaptažodžio",
"error.user.role.invalid": "Įrašykite teisingą rolę", "error.user.role.invalid": "Įrašykite teisingą rolę",
"error.user.undefined": "Vartotojas nerastas",
"error.user.update.permission": "error.user.update.permission":
"Neturite teisės keisti vartotojo \"{name}\"", "Neturite teisės keisti vartotojo \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Lietuvių", "translation.name": "Lietuvių",
"upload": "Įkelti", "upload": "Įkelti",
"upload.error.cantMove": "Įkeltas failas negali būti perkeltas",
"upload.error.cantWrite": "Nepavyko įrašyti failo į diską",
"upload.error.default": "Nepavyko įkelti failo",
"upload.error.extension": "Neįmanoma įkelti tokio tipo failo",
"upload.error.formSize": "Įkeltas failas viršija MAX_FILE_SIZE nustatymą, kuris buvo nurodytas formoje",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "Įkeltas failas viršija upload_max_filesize nustatymą faile php.ini",
"upload.error.noFile": "Failas nebuvo įkeltas",
"upload.error.noFiles": "Failai nebuvo įkelti",
"upload.error.partial": "Failas įkeltas tik iš dalies",
"upload.error.tmpDir": "Trūksta laikinojo katalogo",
"upload.errors": "Klaida", "upload.errors": "Klaida",
"upload.progress": "Įkėlimas…", "upload.progress": "Įkėlimas…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ugyldig innlogging", "error.access.login": "Ugyldig innlogging",
"error.access.panel": "Du har ikke tilgang til panelet", "error.access.panel": "Du har ikke tilgang til panelet",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profilbildet kunne ikke lastes opp", "error.avatar.create.fail": "Profilbildet kunne ikke lastes opp",
"error.avatar.delete.fail": "Profil bildet kunne ikke bli slette", "error.avatar.delete.fail": "Profil bildet kunne ikke bli slette",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ugyldig omformer \"{converter}\"", "error.field.converter.invalid": "Ugyldig omformer \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Du er ikke tillatt å endre navnet til \"{filename}\"", "Du er ikke tillatt å endre navnet til \"{filename}\"",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede", "error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Vennligst bekreft passordet", "error.user.password.notSame": "Vennligst bekreft passordet",
"error.user.password.undefined": "Brukeren har ikke et passord", "error.user.password.undefined": "Brukeren har ikke et passord",
"error.user.role.invalid": "Vennligst skriv inn en gyldig rolle", "error.user.role.invalid": "Vennligst skriv inn en gyldig rolle",
"error.user.undefined": "Brukeren kunne ikke bli funnet",
"error.user.update.permission": "error.user.update.permission":
"Du har ikke tillatelse til å oppdatere brukeren \"{name}\"", "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Norsk Bokm\u00e5l", "translation.name": "Norsk Bokm\u00e5l",
"upload": "Last opp", "upload": "Last opp",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Feil", "upload.errors": "Feil",
"upload.progress": "Laster opp…", "upload.progress": "Laster opp…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ongeldige login", "error.access.login": "Ongeldige login",
"error.access.panel": "Je hebt geen toegang tot het Panel", "error.access.panel": "Je hebt geen toegang tot het Panel",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "De avatar kon niet worden geupload", "error.avatar.create.fail": "De avatar kon niet worden geupload",
"error.avatar.delete.fail": "De avatar kan niet worden verwijderd", "error.avatar.delete.fail": "De avatar kan niet worden verwijderd",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ongeldige converter \"{converter}\"", "error.field.converter.invalid": "Ongeldige converter \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Je hebt geen rechten om de naam te wijzigen van \"{filename}\"", "Je hebt geen rechten om de naam te wijzigen van \"{filename}\"",
"error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"", "error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "De wachtwoorden komen niet overeen", "error.user.password.notSame": "De wachtwoorden komen niet overeen",
"error.user.password.undefined": "De gebruiker heeft geen wachtwoord", "error.user.password.undefined": "De gebruiker heeft geen wachtwoord",
"error.user.role.invalid": "Gelieve een geldige rol in te voeren", "error.user.role.invalid": "Gelieve een geldige rol in te voeren",
"error.user.undefined": "De gebruiker kan niet worden gevonden",
"error.user.update.permission": "error.user.update.permission":
"Je hebt geen rechten om gebruiker \"{name}\" te updaten", "Je hebt geen rechten om gebruiker \"{name}\" te updaten",
@@ -412,6 +413,17 @@
"translation.name": "Nederlands", "translation.name": "Nederlands",
"upload": "Upload", "upload": "Upload",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Foutmelding", "upload.errors": "Foutmelding",
"upload.progress": "Uploaden...", "upload.progress": "Uploaden...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Nieprawidłowy login", "error.access.login": "Nieprawidłowy login",
"error.access.panel": "Nie masz uprawnień by dostać się do panelu", "error.access.panel": "Nie masz uprawnień by dostać się do panelu",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Nie udało się załadować zdjęcia profilowego", "error.avatar.create.fail": "Nie udało się załadować zdjęcia profilowego",
"error.avatar.delete.fail": "Nie udało się usunąć zdjęcia profilowego", "error.avatar.delete.fail": "Nie udało się usunąć zdjęcia profilowego",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"", "error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Nie masz uprawnień, by zmienić nazwę \"{filename}\"", "Nie masz uprawnień, by zmienić nazwę \"{filename}\"",
"error.file.duplicate": "Istnieje już plik o nazwie \"{filename}\"", "error.file.duplicate": "Istnieje już plik o nazwie \"{filename}\"",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Hasła nie są takie same", "error.user.password.notSame": "Hasła nie są takie same",
"error.user.password.undefined": "Użytkownik nie ma hasła", "error.user.password.undefined": "Użytkownik nie ma hasła",
"error.user.role.invalid": "Wprowadź poprawną rolę", "error.user.role.invalid": "Wprowadź poprawną rolę",
"error.user.undefined": "Nie można znaleźć użytkownika",
"error.user.update.permission": "error.user.update.permission":
"Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"", "Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Polski", "translation.name": "Polski",
"upload": "Prześlij", "upload": "Prześlij",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Błąd", "upload.errors": "Błąd",
"upload.progress": "Przesyłanie…", "upload.progress": "Przesyłanie…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Login inválido", "error.access.login": "Login inválido",
"error.access.panel": "Você não tem permissão para acessar o painel", "error.access.panel": "Você não tem permissão para acessar o painel",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "A foto de perfil não pôde ser enviada", "error.avatar.create.fail": "A foto de perfil não pôde ser enviada",
"error.avatar.delete.fail": "A foto do perfil não pôde ser deletada", "error.avatar.delete.fail": "A foto do perfil não pôde ser deletada",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Conversor \"{converter}\" inválido", "error.field.converter.invalid": "Conversor \"{converter}\" inválido",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Você não tem permissão para alterar o nome de \"{filename}\"", "Você não tem permissão para alterar o nome de \"{filename}\"",
"error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe", "error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "As senhas não combinam", "error.user.password.notSame": "As senhas não combinam",
"error.user.password.undefined": "O usuário não possui uma senha", "error.user.password.undefined": "O usuário não possui uma senha",
"error.user.role.invalid": "Digite um papel válido", "error.user.role.invalid": "Digite um papel válido",
"error.user.undefined": "Usu\u00e1rio n\u00e3o encontrado",
"error.user.update.permission": "error.user.update.permission":
"Você não tem permissão para atualizar o usuário \"{name}\"", "Você não tem permissão para atualizar o usuário \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Português (Brasileiro)", "translation.name": "Português (Brasileiro)",
"upload": "Enviar", "upload": "Enviar",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Erro", "upload.errors": "Erro",
"upload.progress": "Enviando…", "upload.progress": "Enviando…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Login inválido", "error.access.login": "Login inválido",
"error.access.panel": "Não tem permissões para aceder ao painel", "error.access.panel": "Não tem permissões para aceder ao painel",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "A foto de perfil não foi enviada", "error.avatar.create.fail": "A foto de perfil não foi enviada",
"error.avatar.delete.fail": "A foto do perfil não foi deletada", "error.avatar.delete.fail": "A foto do perfil não foi deletada",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Conversor \"{converter}\" inválido", "error.field.converter.invalid": "Conversor \"{converter}\" inválido",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Não tem permissões para alterar o nome de \"{filename}\"", "Não tem permissões para alterar o nome de \"{filename}\"",
"error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe", "error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "As palavras-passe não combinam", "error.user.password.notSame": "As palavras-passe não combinam",
"error.user.password.undefined": "O utilizador não possui uma palavra-passe", "error.user.password.undefined": "O utilizador não possui uma palavra-passe",
"error.user.role.invalid": "Digite uma função válida", "error.user.role.invalid": "Digite uma função válida",
"error.user.undefined": "Usu\u00e1rio n\u00e3o encontrado",
"error.user.update.permission": "error.user.update.permission":
"Não tem permissões para atualizar o utilizador \"{name}\"", "Não tem permissões para atualizar o utilizador \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Português (Europeu)", "translation.name": "Português (Europeu)",
"upload": "Enviar", "upload": "Enviar",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Erro", "upload.errors": "Erro",
"upload.progress": "A enviar…", "upload.progress": "A enviar…",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Неправильный логин", "error.access.login": "Неправильный логин",
"error.access.panel": "У вас нет права доступа к панели", "error.access.panel": "У вас нет права доступа к панели",
"error.access.view": "У вас нет прав доступа к этой части панели",
"error.avatar.create.fail": "Не удалось загрузить фотографию профиля", "error.avatar.create.fail": "Не удалось загрузить фотографию профиля",
"error.avatar.delete.fail": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e) \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d", "error.avatar.delete.fail": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e) \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Неверный конвертер \"{converter}\"", "error.field.converter.invalid": "Неверный конвертер \"{converter}\"",
"error.file.changeName.empty": "Название не может быть пустым",
"error.file.changeName.permission": "error.file.changeName.permission":
"У вас нет права поменять название \"{filename}\"", "У вас нет права поменять название \"{filename}\"",
"error.file.duplicate": "Файл с названием \"{filename}\" уже есть", "error.file.duplicate": "Файл с названием \"{filename}\" уже есть",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c", "error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c",
"error.user.password.undefined": "У пользователя нет пароля", "error.user.password.undefined": "У пользователя нет пароля",
"error.user.role.invalid": "Впишите правильную роль", "error.user.role.invalid": "Впишите правильную роль",
"error.user.undefined": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.user.update.permission": "error.user.update.permission":
"У вас нет права обновить пользователя \"{name}\"", "У вас нет права обновить пользователя \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Русский (Russian)", "translation.name": "Русский (Russian)",
"upload": "Закачать", "upload": "Закачать",
"upload.error.cantMove": "Загруженный файл не может быть перемещен",
"upload.error.cantWrite": "Не получилось записать файл на диск",
"upload.error.default": "Не получилось загрузить файл",
"upload.error.extension": "Загрузка файла не удалась из за расширения",
"upload.error.formSize": "Загруженный файл больше чем MAX_FILE_SIZE настройка в форме",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "Загруженный файл больше чем upload_max_filesize настройка в php.ini",
"upload.error.noFile": "Файл не был загружен",
"upload.error.noFiles": "Файлы не были загружены",
"upload.error.partial": "Файл загружен только частично",
"upload.error.tmpDir": "Не хватает временной папки",
"upload.errors": "Ошибка", "upload.errors": "Ошибка",
"upload.progress": "Закачивается...", "upload.progress": "Закачивается...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Neplatné prihlásenie", "error.access.login": "Neplatné prihlásenie",
"error.access.panel": "Nemáte povolenie na prístup do Panel-u", "error.access.panel": "Nemáte povolenie na prístup do Panel-u",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profilový obrázok sa nepodarilo nahrať", "error.avatar.create.fail": "Profilový obrázok sa nepodarilo nahrať",
"error.avatar.delete.fail": "Profilový obrázok sa nepodarilo zmazať", "error.avatar.delete.fail": "Profilový obrázok sa nepodarilo zmazať",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Neplatný converter \"{converter}\"", "error.field.converter.invalid": "Neplatný converter \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Nemáte povolenie na zmenu názvu pre \"{filename}\"", "Nemáte povolenie na zmenu názvu pre \"{filename}\"",
"error.file.duplicate": "Súbor s názvom \"{filename}\" už existuje", "error.file.duplicate": "Súbor s názvom \"{filename}\" už existuje",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Heslá nie sú rovnaké", "error.user.password.notSame": "Heslá nie sú rovnaké",
"error.user.password.undefined": "Užívateľ nemá heslo", "error.user.password.undefined": "Užívateľ nemá heslo",
"error.user.role.invalid": "Prosím, zadajte platnú rolu", "error.user.role.invalid": "Prosím, zadajte platnú rolu",
"error.user.undefined": "Užívateľa sa nepodarilo nájsť",
"error.user.update.permission": "error.user.update.permission":
"Nemáte povolenie na aktualizáciu užívateľa \"{name}\"", "Nemáte povolenie na aktualizáciu užívateľa \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Slovensky", "translation.name": "Slovensky",
"upload": "Nahrať", "upload": "Nahrať",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Chyba", "upload.errors": "Chyba",
"upload.progress": "Nahrávanie...", "upload.progress": "Nahrávanie...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Ogiltig inloggning", "error.access.login": "Ogiltig inloggning",
"error.access.panel": "Du saknar behörighet att nå panelen", "error.access.panel": "Du saknar behörighet att nå panelen",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "Profilbilden kunde inte laddas upp", "error.avatar.create.fail": "Profilbilden kunde inte laddas upp",
"error.avatar.delete.fail": "Profilbilden kunde inte raderas", "error.avatar.delete.fail": "Profilbilden kunde inte raderas",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"", "error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission":
"Du har inte behörighet att ändra namnet på \"{filename}\"", "Du har inte behörighet att ändra namnet på \"{filename}\"",
"error.file.duplicate": "En fil med namnet \"{filename}\" existerar redan", "error.file.duplicate": "En fil med namnet \"{filename}\" existerar redan",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "Lösenorden matchar inte", "error.user.password.notSame": "Lösenorden matchar inte",
"error.user.password.undefined": "Användaren har inget lösenord", "error.user.password.undefined": "Användaren har inget lösenord",
"error.user.role.invalid": "Ange en giltig roll", "error.user.role.invalid": "Ange en giltig roll",
"error.user.undefined": "Användaren kan inte hittas",
"error.user.update.permission": "error.user.update.permission":
"Du har inte behörighet att uppdatera användaren \"{name}\"", "Du har inte behörighet att uppdatera användaren \"{name}\"",
@@ -412,6 +413,17 @@
"translation.name": "Svenska", "translation.name": "Svenska",
"upload": "Ladda upp", "upload": "Ladda upp",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.errors": "Fel", "upload.errors": "Fel",
"upload.progress": "Laddar upp...", "upload.progress": "Laddar upp...",

View File

@@ -37,6 +37,7 @@
"error.access.login": "Geçersiz giriş", "error.access.login": "Geçersiz giriş",
"error.access.panel": "Panele erişim izniniz yok", "error.access.panel": "Panele erişim izniniz yok",
"error.access.view": "Panelin bu bölümüne erişemezsiniz",
"error.avatar.create.fail": "Profil resmi yüklenemedi", "error.avatar.create.fail": "Profil resmi yüklenemedi",
"error.avatar.delete.fail": "Profil resmi silinemedi", "error.avatar.delete.fail": "Profil resmi silinemedi",
@@ -51,6 +52,7 @@
"error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"", "error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"",
"error.file.changeName.empty": "İsim boş olmamalıdır",
"error.file.changeName.permission": "error.file.changeName.permission":
"\"{filename}\" adını değiştiremezsiniz", "\"{filename}\" adını değiştiremezsiniz",
"error.file.duplicate": "\"{filename}\" isimli bir dosya zaten var", "error.file.duplicate": "\"{filename}\" isimli bir dosya zaten var",
@@ -169,7 +171,6 @@
"error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n", "error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n",
"error.user.password.undefined": "Bu kullanıcının şifresi yok", "error.user.password.undefined": "Bu kullanıcının şifresi yok",
"error.user.role.invalid": "Lütfen geçerli bir rol girin", "error.user.role.invalid": "Lütfen geçerli bir rol girin",
"error.user.undefined": "Kullan\u0131c\u0131 bulunamad\u0131",
"error.user.update.permission": "error.user.update.permission":
"\"{name}\" kullanıcısını güncellemenize izin verilmiyor", "\"{name}\" kullanıcısını güncellemenize izin verilmiyor",
@@ -325,7 +326,7 @@
"next": "Sonraki", "next": "Sonraki",
"off": "kapalı", "off": "kapalı",
"on": "açık", "on": "açık",
"open": "Önizle", "open": "Önizleme",
"options": "Seçenekler", "options": "Seçenekler",
"orientation": "Oryantasyon", "orientation": "Oryantasyon",
@@ -412,6 +413,17 @@
"translation.name": "T\u00fcrk\u00e7e", "translation.name": "T\u00fcrk\u00e7e",
"upload": "Yükle", "upload": "Yükle",
"upload.error.cantMove": "Yüklenen dosya taşınamadı",
"upload.error.cantWrite": "Dosya diske yazılamadı",
"upload.error.default": "Dosya yüklenemedi",
"upload.error.extension": "Dosya yükleme uzantısı tarafından durduruldu",
"upload.error.formSize": "Yüklenen dosya, formda belirtilen MAX_FILE_SIZE yönergesini aşıyor",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "Yüklenen dosya php.ini içindeki upload_max_filesize yönergesini aşıyor",
"upload.error.noFile": "Dosya yüklenmedi",
"upload.error.noFiles": "Dosyalar yüklenmedi",
"upload.error.partial": "Yüklenen dosya sadece kısmen yüklendi",
"upload.error.tmpDir": "Geçici klasör eksik",
"upload.errors": "Hata", "upload.errors": "Hata",
"upload.progress": "Yükleniyor...", "upload.progress": "Yükleniyor...",

File diff suppressed because one or more lines are too long

View File

@@ -2,18 +2,15 @@
<defs> <defs>
<symbol id="icon-account" viewBox="0 0 16 16"> <symbol id="icon-account" viewBox="0 0 16 16">
<path d="M11 7a3 3 0 1 1-6 0 3 3 0 0 1 6 0z" /> <path d="M11 7a3 3 0 1 1-6 0 3 3 0 0 1 6 0z" />
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 12.4c-.6-.7-1.4-1.4-3-1.4H7c-1.6 0-2.4.7-3 1.4C2.8 11.3 2 9.8 2 8c0-3.3 2.7-6 6-6s6 2.7 6 6c0 1.8-.8 3.3-2 4.4z" <path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 12.4c-.6-.7-1.4-1.4-3-1.4H7c-1.6 0-2.4.7-3 1.4C2.8 11.3 2 9.8 2 8c0-3.3 2.7-6 6-6s6 2.7 6 6c0 1.8-.8 3.3-2 4.4z" />
/>
</symbol> </symbol>
<symbol id="icon-add" viewBox="0 0 16 16"> <symbol id="icon-add" viewBox="0 0 16 16">
<path d="M9 4H7v3H4v2h3v3h2V9h3V7H9z" /> <path d="M9 4H7v3H4v2h3v3h2V9h3V7H9z" />
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z" <path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z" />
/>
</symbol> </symbol>
<symbol id="icon-alert" viewBox="0 0 16 16"> <symbol id="icon-alert" viewBox="0 0 16 16">
<path d="M7 6h2v4H7V6zM9 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" /> <path d="M7 6h2v4H7V6zM9 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" />
<path d="M15 16H1a1.001 1.001 0 0 1-.895-1.448l7-14c.34-.678 1.449-.678 1.789 0l7 14A1 1 0 0 1 15 16zM2.618 14h10.764L8 3.236 2.618 14z" <path d="M15 16H1a1.001 1.001 0 0 1-.895-1.448l7-14c.34-.678 1.449-.678 1.789 0l7 14A1 1 0 0 1 15 16zM2.618 14h10.764L8 3.236 2.618 14z" />
/>
</symbol> </symbol>
<symbol id="icon-angle-down" viewBox="0 0 16 16"> <symbol id="icon-angle-down" viewBox="0 0 16 16">
<path d="M8 11.4L2.6 6 4 4.6l4 4 4-4L13.4 6z" /> <path d="M8 11.4L2.6 6 4 4.6l4 4 4-4L13.4 6z" />
@@ -31,30 +28,24 @@
<path d="M5,5v4c0,1.7,1.3,3,3,3s3-1.3,3-3V4.5C11,2,9,0,6.5,0S2,2,2,4.5V10c0,3.3,2.7,6,6,6s6-2.7,6-6V4h-2v6 c0,2.2-1.8,4-4,4s-4-1.8-4-4V4.5C4,3.1,5.1,2,6.5,2S9,3.1,9,4.5V9c0,0.6-0.4,1-1,1S7,9.6,7,9V5H5z" /> <path d="M5,5v4c0,1.7,1.3,3,3,3s3-1.3,3-3V4.5C11,2,9,0,6.5,0S2,2,2,4.5V10c0,3.3,2.7,6,6,6s6-2.7,6-6V4h-2v6 c0,2.2-1.8,4-4,4s-4-1.8-4-4V4.5C4,3.1,5.1,2,6.5,2S9,3.1,9,4.5V9c0,0.6-0.4,1-1,1S7,9.6,7,9V5H5z" />
</symbol> </symbol>
<symbol id="icon-bars" viewBox="0 0 16 16"> <symbol id="icon-bars" viewBox="0 0 16 16">
<path d="M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z" <path d="M15 7H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 1H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1zM15 13H1c-.6 0-1 .4-1 1s.4 1 1 1h14c.6 0 1-.4 1-1s-.4-1-1-1z" />
/>
</symbol> </symbol>
<symbol id="icon-bold" viewBox="0 0 16 16"> <symbol id="icon-bold" viewBox="0 0 16 16">
<path d="M11.561 7.316a3.485 3.485 0 0 0 1.418-3.208C12.781 2.305 11.144.999 9.33.999H2.001v1l1.447.724a1 1 0 0 1 .553.894v8.764a.998.998 0 0 1-.553.894l-1.447.724v1h7.823c2.104 0 3.98-1.547 4.162-3.643a4 4 0 0 0-2.424-4.04zM7 3h1a2 2 0 1 1 0 4H7V3zm2 10H7V9h2a2 2 0 1 1 0 4z" <path d="M11.561 7.316a3.485 3.485 0 0 0 1.418-3.208C12.781 2.305 11.144.999 9.33.999H2.001v1l1.447.724a1 1 0 0 1 .553.894v8.764a.998.998 0 0 1-.553.894l-1.447.724v1h7.823c2.104 0 3.98-1.547 4.162-3.643a4 4 0 0 0-2.424-4.04zM7 3h1a2 2 0 1 1 0 4H7V3zm2 10H7V9h2a2 2 0 1 1 0 4z" />
/>
</symbol> </symbol>
<symbol id="icon-bolt" viewBox="0 0 16 16"> <symbol id="icon-bolt" viewBox="0 0 16 16">
<path d="M9.2 0H5.4c-.4 0-.8.3-1 .7l-2 7c-.2.7.3 1.3.9 1.3H7l-1.5 7 7.3-9.4c.5-.6 0-1.6-.8-1.6H9l1.1-3.7C10.3.6 9.8 0 9.2 0z" <path d="M9.2 0H5.4c-.4 0-.8.3-1 .7l-2 7c-.2.7.3 1.3.9 1.3H7l-1.5 7 7.3-9.4c.5-.6 0-1.6-.8-1.6H9l1.1-3.7C10.3.6 9.8 0 9.2 0z" />
/>
</symbol> </symbol>
<symbol id="icon-calendar" viewBox="0 0 16 16"> <symbol id="icon-calendar" viewBox="0 0 16 16">
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 12H2V5h12v9z" <path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 12H2V5h12v9z" />
/>
<path d="M4 7h2v2H4V7zM7 7h2v2H7V7zM4 10h2v2H4v-2zM7 10h2v2H7v-2zM10 7h2v2h-2V7zM10 10h2v2h-2v-2z" /> <path d="M4 7h2v2H4V7zM7 7h2v2H7V7zM4 10h2v2H4v-2zM7 10h2v2H7v-2zM10 7h2v2h-2V7zM10 10h2v2h-2v-2z" />
</symbol> </symbol>
<symbol id="icon-cancel" viewBox="0 0 16 16"> <symbol id="icon-cancel" viewBox="0 0 16 16">
<path d="M10.1 4.5L8 6.6 5.9 4.5 4.5 5.9 6.6 8l-2.1 2.1 1.4 1.4L8 9.4l2.1 2.1 1.4-1.4L9.4 8l2.1-2.1z" /> <path d="M10.1 4.5L8 6.6 5.9 4.5 4.5 5.9 6.6 8l-2.1 2.1 1.4 1.4L8 9.4l2.1 2.1 1.4-1.4L9.4 8l2.1-2.1z" />
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z" <path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z" />
/>
</symbol> </symbol>
<symbol id="icon-check" viewBox="0 0 16 16"> <symbol id="icon-check" viewBox="0 0 16 16">
<path d="M8 0C3.589 0 0 3.589 0 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm0 14c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6z" <path d="M8 0C3.589 0 0 3.589 0 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm0 14c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6z" />
/>
<path d="M7 11.414L3.586 8 5 6.586l2 2 4-4L12.414 6z" /> <path d="M7 11.414L3.586 8 5 6.586l2 2 4-4L12.414 6z" />
</symbol> </symbol>
<symbol id="icon-clock" viewBox="0 0 16 16"> <symbol id="icon-clock" viewBox="0 0 16 16">
@@ -62,32 +53,27 @@
<path d="M9 4H7v5h5V7H9z" /> <path d="M9 4H7v5h5V7H9z" />
</symbol> </symbol>
<symbol id="icon-code" viewBox="0 0 16 16"> <symbol id="icon-code" viewBox="0 0 16 16">
<path d="M12.7 11.7l-1.4-1.4L13.6 8l-2.3-2.3 1.4-1.4 3 3c.4.4.4 1 0 1.4l-3 3zM3.3 11.7l-3-3c-.4-.4-.4-1 0-1.4l3-3 1.4 1.4L2.4 8l2.3 2.3-1.4 1.4zM6 15c-.1 0-.2 0-.3-.1-.5-.2-.8-.7-.6-1.3l4-12c.2-.5.7-.8 1.3-.6.5.2.8.7.6 1.3l-4 12c-.2.4-.6.7-1 .7z" <path d="M12.7 11.7l-1.4-1.4L13.6 8l-2.3-2.3 1.4-1.4 3 3c.4.4.4 1 0 1.4l-3 3zM3.3 11.7l-3-3c-.4-.4-.4-1 0-1.4l3-3 1.4 1.4L2.4 8l2.3 2.3-1.4 1.4zM6 15c-.1 0-.2 0-.3-.1-.5-.2-.8-.7-.6-1.3l4-12c.2-.5.7-.8 1.3-.6.5.2.8.7.6 1.3l-4 12c-.2.4-.6.7-1 .7z" />
/>
</symbol> </symbol>
<symbol id="icon-cog" viewBox="0 0 16 16"> <symbol id="icon-cog" viewBox="0 0 16 16">
<path d="M13.3 5.2l1.1-2.1L13 1.7l-2.1 1.1c-.3-.2-.7-.3-1.1-.4L9 0H7l-.8 2.3c-.3.1-.7.2-1 .4L3.1 1.6 1.6 3.1l1.1 2.1c-.2.3-.3.7-.4 1L0 7v2l2.3.8c.1.4.3.7.4 1.1L1.6 13 3 14.4l2.1-1.1c.3.2.7.3 1.1.4L7 16h2l.8-2.3c.4-.1.7-.3 1.1-.4l2.1 1.1 1.4-1.4-1.1-2.1c.2-.3.3-.7.4-1.1L16 9V7l-2.3-.8c-.1-.3-.2-.7-.4-1zM8 11c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3z" <path d="M13.3 5.2l1.1-2.1L13 1.7l-2.1 1.1c-.3-.2-.7-.3-1.1-.4L9 0H7l-.8 2.3c-.3.1-.7.2-1 .4L3.1 1.6 1.6 3.1l1.1 2.1c-.2.3-.3.7-.4 1L0 7v2l2.3.8c.1.4.3.7.4 1.1L1.6 13 3 14.4l2.1-1.1c.3.2.7.3 1.1.4L7 16h2l.8-2.3c.4-.1.7-.3 1.1-.4l2.1 1.1 1.4-1.4-1.1-2.1c.2-.3.3-.7.4-1.1L16 9V7l-2.3-.8c-.1-.3-.2-.7-.4-1zM8 11c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3z" />
/>
</symbol> </symbol>
<symbol id="icon-collapse" viewBox="0 0 16 16"> <symbol id="icon-collapse" viewBox="0 0 16 16">
<path d="M15.707 1.707A.999.999 0 1 0 14.293.293l-2.5 2.5L9 0v7h7l-2.793-2.793 2.5-2.5zM2.793 11.793l-2.5 2.5a.999.999 0 1 0 1.414 1.414l2.5-2.5L7 16V9H0l2.793 2.793z" <path d="M15.707 1.707A.999.999 0 1 0 14.293.293l-2.5 2.5L9 0v7h7l-2.793-2.793 2.5-2.5zM2.793 11.793l-2.5 2.5a.999.999 0 1 0 1.414 1.414l2.5-2.5L7 16V9H0l2.793 2.793z" />
/>
</symbol> </symbol>
<symbol id="icon-copy" viewBox="0 0 16 16"> <symbol id="icon-copy" viewBox="0 0 16 16">
<path d="M10 4H2c-.6 0-1 .4-1 1v10c0 .6.4 1 1 1h8c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1z" /> <path d="M10 4H2c-.6 0-1 .4-1 1v10c0 .6.4 1 1 1h8c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1z" />
<path d="M14 0H4v2h9v11h2V1c0-.6-.4-1-1-1z" /> <path d="M14 0H4v2h9v11h2V1c0-.6-.4-1-1-1z" />
</symbol> </symbol>
<symbol id="icon-dashboard" viewBox="0 0 16 16"> <symbol id="icon-dashboard" viewBox="0 0 16 16">
<path d="M6 9H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1zM6 16H1a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1zM15 6h-5a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zM15 16h-5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1z" <path d="M6 9H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1zM6 16H1a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1zM15 6h-5a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1zM15 16h-5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1z" />
/>
</symbol> </symbol>
<symbol id="icon-document" viewBox="0 0 16 16"> <symbol id="icon-document" viewBox="0 0 16 16">
<path d="M14 0H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H3V2h10v12z" /> <path d="M14 0H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H3V2h10v12z" />
<path d="M4 3h4v4H4V3zM9 4h3v1H9V4zM9 6h3v1H9V6zM4 8h8v1H4V8zM4 10h8v1H4v-1zM4 12h5v1H4v-1z" /> <path d="M4 3h4v4H4V3zM9 4h3v1H9V4zM9 6h3v1H9V6zM4 8h8v1H4V8zM4 10h8v1H4v-1zM4 12h5v1H4v-1z" />
</symbol> </symbol>
<symbol id="icon-dots" viewBox="0 0 16 16"> <symbol id="icon-dots" viewBox="0 0 16 16">
<path d="M10 8a2 2 0 1 1-3.999.001A2 2 0 0 1 10 8zM4 8a2 2 0 1 1-3.999.001A2 2 0 0 1 4 8zM16 8a2 2 0 1 1-3.999.001A2 2 0 0 1 16 8z" <path d="M10 8a2 2 0 1 1-3.999.001A2 2 0 0 1 10 8zM4 8a2 2 0 1 1-3.999.001A2 2 0 0 1 4 8zM16 8a2 2 0 1 1-3.999.001A2 2 0 0 1 16 8z" />
/>
</symbol> </symbol>
<symbol id="icon-download" viewBox="0 0 16 16"> <symbol id="icon-download" viewBox="0 0 16 16">
<path d="M8 12c.3 0 .5-.1.7-.3L14.4 6 13 4.6l-4 4V0H7v8.6l-4-4L1.6 6l5.7 5.7c.2.2.4.3.7.3z" /> <path d="M8 12c.3 0 .5-.1.7-.3L14.4 6 13 4.6l-4 4V0H7v8.6l-4-4L1.6 6l5.7 5.7c.2.2.4.3.7.3z" />
@@ -98,19 +84,16 @@
<path d="M8 5h4v2H8V5zM8 9h4v2H8V9z" /> <path d="M8 5h4v2H8V5zM8 9h4v2H8V9z" />
</symbol> </symbol>
<symbol id="icon-edit" viewBox="0 0 16 16"> <symbol id="icon-edit" viewBox="0 0 16 16">
<path d="M8.1 3.5L.3 11.3c-.2.2-.3.4-.3.7v3c0 .6.4 1 1 1h3c.3 0 .5-.1.7-.3l7.8-7.8-4.4-4.4zM15.7 3.3l-3-3c-.4-.4-1-.4-1.4 0L9.5 2.1l4.4 4.4 1.8-1.8c.4-.4.4-1 0-1.4z" <path d="M8.1 3.5L.3 11.3c-.2.2-.3.4-.3.7v3c0 .6.4 1 1 1h3c.3 0 .5-.1.7-.3l7.8-7.8-4.4-4.4zM15.7 3.3l-3-3c-.4-.4-1-.4-1.4 0L9.5 2.1l4.4 4.4 1.8-1.8c.4-.4.4-1 0-1.4z" />
/>
</symbol> </symbol>
<symbol id="icon-email" viewBox="0 0 16 16"> <symbol id="icon-email" viewBox="0 0 16 16">
<path d="M15 1H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 12H2V6.723l5.504 3.145a.998.998 0 0 0 .992 0L14 6.723V13zm0-8.58L8 7.849 2 4.42V3h12v1.42z" <path d="M15 1H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 12H2V6.723l5.504 3.145a.998.998 0 0 0 .992 0L14 6.723V13zm0-8.58L8 7.849 2 4.42V3h12v1.42z" />
/>
</symbol> </symbol>
<symbol id="icon-expand" viewBox="0 0 16 16"> <symbol id="icon-expand" viewBox="0 0 16 16">
<path d="M7.4 10L6 8.6l-2.7 2.7L0 8v8h8l-3.3-3.3zM11.3 3.3L8.6 6 10 7.4l2.7-2.7L16 8V0H8z" /> <path d="M7.4 10L6 8.6l-2.7 2.7L0 8v8h8l-3.3-3.3zM11.3 3.3L8.6 6 10 7.4l2.7-2.7L16 8V0H8z" />
</symbol> </symbol>
<symbol id="icon-facebook" viewBox="0 0 16 16"> <symbol id="icon-facebook" viewBox="0 0 16 16">
<path d="M15.3 0H.7C.3 0 0 .3 0 .7v14.7c0 .3.3.6.7.6H8v-5H6V8h2V6c0-2.1 1.2-3 3-3h2v3h-1c-.6 0-1 .4-1 1v1h2.6l-.6 3h-2v5h4.3c.4 0 .7-.3.7-.7V.7c0-.4-.3-.7-.7-.7z" <path d="M15.3 0H.7C.3 0 0 .3 0 .7v14.7c0 .3.3.6.7.6H8v-5H6V8h2V6c0-2.1 1.2-3 3-3h2v3h-1c-.6 0-1 .4-1 1v1h2.6l-.6 3h-2v5h4.3c.4 0 .7-.3.7-.7V.7c0-.4-.3-.7-.7-.7z" />
/>
</symbol> </symbol>
<symbol id="icon-file-word" viewBox="0 0 32 32"> <symbol id="icon-file-word" viewBox="0 0 32 32">
<g> <g>
@@ -122,93 +105,65 @@
</g> </g>
</symbol> </symbol>
<symbol id="icon-file-audio" viewBox="0 0 32 32"> <symbol id="icon-file-audio" viewBox="0 0 32 32">
<g>
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" /> <path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<polygon points="12,20.5 10,20.5 10,8 21,8 21,18.5 19,18.5 19,10 12,10" /> <polygon points="12,20.5 10,20.5 10,8 21,8 21,18.5 19,18.5 19,10 12,10" />
<path d="M8.5,24C6.6,24,5,22.4,5,20.5S6.6,17,8.5,17s3.5,1.6,3.5,3.5S10.4,24,8.5,24z M8.5,19C7.7,19,7,19.7,7,20.5 <path d="M8.5,24C6.6,24,5,22.4,5,20.5S6.6,17,8.5,17s3.5,1.6,3.5,3.5S10.4,24,8.5,24z M8.5,19C7.7,19,7,19.7,7,20.5 S7.7,22,8.5,22s1.5-0.7,1.5-1.5S9.3,19,8.5,19z" />
S7.7,22,8.5,22s1.5-0.7,1.5-1.5S9.3,19,8.5,19z" /> <path d="M17.5,22c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5s3.5,1.6,3.5,3.5S19.4,22,17.5,22z M17.5,17 c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S18.3,17,17.5,17z" />
<path d="M17.5,22c-1.9,0-3.5-1.6-3.5-3.5s1.6-3.5,3.5-3.5s3.5,1.6,3.5,3.5S19.4,22,17.5,22z M17.5,17
c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S18.3,17,17.5,17z" />
</g>
</symbol> </symbol>
<symbol id="icon-file-image" viewBox="0 0 32 32"> <symbol id="icon-file-image" viewBox="0 0 32 32">
<g>
<polygon points="13.1,23.4 8.1,19.3 5,22.4 3.6,21 7.9,16.7 12.9,20.6 19,13.4 24.4,20.2 22.8,21.4 19,16.6 " /> <polygon points="13.1,23.4 8.1,19.3 5,22.4 3.6,21 7.9,16.7 12.9,20.6 19,13.4 24.4,20.2 22.8,21.4 19,16.6 " />
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" /> <path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<path d="M12.5,14C10.6,14,9,12.4,9,10.5S10.6,7,12.5,7S16,8.6,16,10.5S14.4,14,12.5,14z M12.5,9 <path d="M12.5,14C10.6,14,9,12.4,9,10.5S10.6,7,12.5,7S16,8.6,16,10.5S14.4,14,12.5,14z M12.5,9 C11.7,9,11,9.7,11,10.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S13.3,9,12.5,9z" />
C11.7,9,11,9.7,11,10.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S13.3,9,12.5,9z" />
</g>
</symbol> </symbol>
<symbol id="icon-file-text" viewBox="0 0 32 32"> <symbol id="icon-file-text" viewBox="0 0 32 32">
<g>
<path d="M32,32H0V0h32V32z M2,30h28V2H2V30z" /> <path d="M32,32H0V0h32V32z M2,30h28V2H2V30z" />
<polygon points="23.1,25.4 16.3,8 15.7,8 8.9,25.4 7.1,24.6 14.3,6 17.7,6 24.9,24.6 " /> <polygon points="23.1,25.4 16.3,8 15.7,8 8.9,25.4 7.1,24.6 14.3,6 17.7,6 24.9,24.6 " />
<rect x="11.1" y="16" width="9.8" height="2" /> <rect x="11.1" y="16" width="9.8" height="2" />
<rect x="5" y="24" width="6" height="2" /> <rect x="5" y="24" width="6" height="2" />
<rect x="21" y="24" width="6" height="2" /> <rect x="21" y="24" width="6" height="2" />
</g>
</symbol> </symbol>
<symbol id="icon-file-video" viewBox="0 0 32 32"> <symbol id="icon-file-video" viewBox="0 0 32 32">
<g>
<path d="M32,32H0V0h32V32z M2,30h28V2H2V30z" /> <path d="M32,32H0V0h32V32z M2,30h28V2H2V30z" />
<path d="M11,18.8V5.2L21.9,12L11,18.8z M13,8.8v6.4l5.1-3.2L13,8.8z" /> <path d="M11,18.8V5.2L21.9,12L11,18.8z M13,8.8v6.4l5.1-3.2L13,8.8z" />
<rect x="24" y="23" width="4" height="2" /> <rect x="24" y="23" width="4" height="2" />
<rect x="4" y="23" width="12" height="2" /> <rect x="4" y="23" width="12" height="2" />
<path d="M18,28c-2.2,0-4-1.8-4-4s1.8-4,4-4c2.2,0,4,1.8,4,4S20.2,28,18,28z M18,22c-1.1,0-2,0.9-2,2s0.9,2,2,2 <path d="M18,28c-2.2,0-4-1.8-4-4s1.8-4,4-4c2.2,0,4,1.8,4,4S20.2,28,18,28z M18,22c-1.1,0-2,0.9-2,2s0.9,2,2,2 c1.1,0,2-0.9,2-2S19.1,22,18,22z" />
c1.1,0,2-0.9,2-2S19.1,22,18,22z" />
</g>
</symbol> </symbol>
<symbol id="icon-file-code" viewBox="0 0 32 32"> <symbol id="icon-file-code" viewBox="0 0 32 32">
<g>
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" /> <path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<polygon points="9,20.4 4.6,16 9,11.6 10.4,13 7.4,16 10.4,19 " /> <polygon points="9,20.4 4.6,16 9,11.6 10.4,13 7.4,16 10.4,19 " />
<polygon points="19,20.4 17.6,19 20.6,16 17.6,13 19,11.6 23.4,16 " /> <polygon points="19,20.4 17.6,19 20.6,16 17.6,13 19,11.6 23.4,16 " />
<rect x="13" y="8.7" transform="matrix(0.9488 0.3159 -0.3159 0.9488 5.7719 -3.6035)" width="2" <rect x="13" y="8.7" transform="matrix(0.9488 0.3159 -0.3159 0.9488 5.7719 -3.6035)" width="2" height="14.6" />
height="14.6" />
</g>
</symbol> </symbol>
<symbol id="icon-file-zip" viewBox="0 0 32 32"> <symbol id="icon-file-zip" viewBox="0 0 32 32">
<g>
<polygon points="28,32 0,32 0,0 15,0 15,8 13,8 13,2 2,2 2,30 26,30 26,2 18,2 18,0 28,0 " /> <polygon points="28,32 0,32 0,0 15,0 15,8 13,8 13,2 2,2 2,30 26,30 26,2 18,2 18,0 28,0 " />
<path d="M18,19h-8v-9h8V19z M12,17h4v-5h-4V17z" /> <path d="M18,19h-8v-9h8V19z M12,17h4v-5h-4V17z" />
<rect x="12" y="25" width="4" height="2" /> <rect x="12" y="25" width="4" height="2" />
<rect x="12" y="21" width="4" height="2" /> <rect x="12" y="21" width="4" height="2" />
</g>
</symbol> </symbol>
<symbol id="icon-file-document" viewBox="0 0 32 32"> <symbol id="icon-file-document" viewBox="0 0 32 32">
<g>
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" /> <path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<rect x="16" y="7" width="6" height="2" /> <rect x="16" y="7" width="6" height="2" />
<rect x="16" y="12" width="6" height="2" /> <rect x="16" y="12" width="6" height="2" />
<rect x="6" y="17" width="16" height="2" /> <rect x="6" y="17" width="16" height="2" />
<rect x="6" y="22" width="16" height="2" /> <rect x="6" y="22" width="16" height="2" />
<path d="M14,14H6V7h8V14z M8,12h4V9H8V12z" /> <path d="M14,14H6V7h8V14z M8,12h4V9H8V12z" />
</g>
</symbol> </symbol>
<symbol id="icon-file-spreadsheet" viewBox="0 0 32 32"> <symbol id="icon-file-spreadsheet" viewBox="0 0 32 32">
<g>
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" /> <path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<rect x="13" y="10" width="2" height="12" /> <rect x="13" y="10" width="2" height="12" />
<rect x="8" y="17" width="2" height="5" /> <rect x="8" y="17" width="2" height="5" />
<rect x="18" y="14" width="2" height="8" /> <rect x="18" y="14" width="2" height="8" />
</g>
</symbol> </symbol>
<symbol id="icon-file" viewBox="0 0 32 32"> <symbol id="icon-file" viewBox="0 0 32 32">
<g>
<path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" /> <path d="M28,32H0V0h28V32z M2,30h24V2H2V30z" />
<path d="M19.5,22h-11C6.6,22,5,20.4,5,18.5c0-1.8,1.3-3.3,3.1-3.5c0.5-2.8,2.9-5,5.9-5s5.5,2.2,5.9,5 <path d="M19.5,22h-11C6.6,22,5,20.4,5,18.5c0-1.8,1.3-3.3,3.1-3.5c0.5-2.8,2.9-5,5.9-5s5.5,2.2,5.9,5 c1.7,0.2,3.1,1.7,3.1,3.5C23,20.4,21.4,22,19.5,22z M8.5,17C7.7,17,7,17.7,7,18.5S7.7,20,8.5,20h11c0.8,0,1.5-0.7,1.5-1.5 S20.3,17,19.5,17c-0.1,0-0.2,0-0.3,0L18,17.3l0-1.3c0-2.2-1.8-3.9-4-3.9c-2.2,0-4,1.8-4,3.9l0,0.1v1.2L8.8,17C8.7,17,8.6,17,8.5,17 z" />
c1.7,0.2,3.1,1.7,3.1,3.5C23,20.4,21.4,22,19.5,22z M8.5,17C7.7,17,7,17.7,7,18.5S7.7,20,8.5,20h11c0.8,0,1.5-0.7,1.5-1.5
S20.3,17,19.5,17c-0.1,0-0.2,0-0.3,0L18,17.3l0-1.3c0-2.2-1.8-3.9-4-3.9c-2.2,0-4,1.8-4,3.9l0,0.1v1.2L8.8,17C8.7,17,8.6,17,8.5,17
z" />
</g>
</symbol> </symbol>
<symbol id="icon-funnel" viewBox="0 0 16 16"> <symbol id="icon-funnel" viewBox="0 0 16 16">
<path d="M9 15H7a1 1 0 0 1 0-2h2a1 1 0 0 1 0 2zM11 11H5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2zM13 7H3a1 1 0 0 1 0-2h10a1 1 0 0 1 0 2zM15 3H1a1 1 0 0 1 0-2h14a1 1 0 0 1 0 2z" <path d="M9 15H7a1 1 0 0 1 0-2h2a1 1 0 0 1 0 2zM11 11H5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2zM13 7H3a1 1 0 0 1 0-2h10a1 1 0 0 1 0 2zM15 3H1a1 1 0 0 1 0-2h14a1 1 0 0 1 0 2z" />
/>
</symbol> </symbol>
<symbol id="icon-globe" viewBox="0 0 16 16"> <symbol id="icon-globe" viewBox="0 0 16 16">
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5.9 7H12c-.1-1.5-.4-2.9-.8-4.1 1.4.9 2.4 2.4 2.7 4.1zM8 14c-.6 0-1.8-1.9-2-5h4c-.2 3.1-1.4 5-2 5zM6 7c.2-3.1 1.3-5 2-5s1.8 1.9 2 5H6zM4.9 2.9C4.4 4.1 4.1 5.5 4 7H2.1c.3-1.7 1.3-3.2 2.8-4.1zM2.1 9H4c.1 1.5.4 2.9.8 4.1-1.4-.9-2.4-2.4-2.7-4.1zm9 4.1c.5-1.2.7-2.6.8-4.1h1.9c-.2 1.7-1.2 3.2-2.7 4.1z" <path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5.9 7H12c-.1-1.5-.4-2.9-.8-4.1 1.4.9 2.4 2.4 2.7 4.1zM8 14c-.6 0-1.8-1.9-2-5h4c-.2 3.1-1.4 5-2 5zM6 7c.2-3.1 1.3-5 2-5s1.8 1.9 2 5H6zM4.9 2.9C4.4 4.1 4.1 5.5 4 7H2.1c.3-1.7 1.3-3.2 2.8-4.1zM2.1 9H4c.1 1.5.4 2.9.8 4.1-1.4-.9-2.4-2.4-2.7-4.1zm9 4.1c.5-1.2.7-2.6.8-4.1h1.9c-.2 1.7-1.2 3.2-2.7 4.1z" />
/>
</symbol> </symbol>
<symbol id="icon-headline" viewBox="0 0 16 16"> <symbol id="icon-headline" viewBox="0 0 16 16">
<path d="M0 0v6h1l2-3h3v10l-3 2v1h10v-1l-3-2V3h3l2 3h1V0z" /> <path d="M0 0v6h1l2-3h3v10l-3 2v1h10v-1l-3-2V3h3l2 3h1V0z" />
@@ -222,46 +177,36 @@
<path d="M9 7V1H7v6H4l4 4 4-4z" /> <path d="M9 7V1H7v6H4l4 4 4-4z" />
</symbol> </symbol>
<symbol id="icon-instagram" viewBox="0 0 16 16"> <symbol id="icon-instagram" viewBox="0 0 16 16">
<path d="M13.105 3.892a.96.96 0 1 1-1.92 0 .96.96 0 0 1 1.92 0zM8 12c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4zm0-6c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2z" <path d="M13.105 3.892a.96.96 0 1 1-1.92 0 .96.96 0 0 1 1.92 0zM8 12c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4zm0-6c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2z" />
/> <path d="M12 16H4c-2.056 0-4-1.944-4-4V4c0-2.056 1.944-4 4-4h8c2.056 0 4 1.944 4 4v8c0 2.056-1.944 4-4 4zM4 2c-.935 0-2 1.065-2 2v8c0 .953 1.047 2 2 2h8c.935 0 2-1.065 2-2V4c0-.935-1.065-2-2-2H4z" />
<path d="M12 16H4c-2.056 0-4-1.944-4-4V4c0-2.056 1.944-4 4-4h8c2.056 0 4 1.944 4 4v8c0 2.056-1.944 4-4 4zM4 2c-.935 0-2 1.065-2 2v8c0 .953 1.047 2 2 2h8c.935 0 2-1.065 2-2V4c0-.935-1.065-2-2-2H4z"
/>
</symbol> </symbol>
<symbol id="icon-italic" viewBox="0 0 16 16"> <symbol id="icon-italic" viewBox="0 0 16 16">
<path d="M12 2V0H6v2h1.271a.5.5 0 0 1 .495.571l-1.51 10.571a1 1 0 0 1-.99.859H4v2h6v-2H8.729a.5.5 0 0 1-.495-.571l1.51-10.571a1 1 0 0 1 .99-.859H12z" <path d="M12 2V0H6v2h1.271a.5.5 0 0 1 .495.571l-1.51 10.571a1 1 0 0 1-.99.859H4v2h6v-2H8.729a.5.5 0 0 1-.495-.571l1.51-10.571a1 1 0 0 1 .99-.859H12z" />
/>
</symbol> </symbol>
<symbol id="icon-key" viewBox="0 0 16 16"> <symbol id="icon-key" viewBox="0 0 16 16">
<path d="M12.7 0L6.5 6.3C6 6.1 5.5 6 5 6c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5c0-.5-.1-1.1-.3-1.6L11 8V6h2V4h2l1-1V0h-3.3zM4.5 12c-.8 0-1.5-.7-1.5-1.5S3.7 9 4.5 9 6 9.7 6 10.5 5.3 12 4.5 12z" <path d="M12.7 0L6.5 6.3C6 6.1 5.5 6 5 6c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5c0-.5-.1-1.1-.3-1.6L11 8V6h2V4h2l1-1V0h-3.3zM4.5 12c-.8 0-1.5-.7-1.5-1.5S3.7 9 4.5 9 6 9.7 6 10.5 5.3 12 4.5 12z" />
/>
</symbol> </symbol>
<symbol id="icon-list-bullet" viewBox="0 0 16 16"> <symbol id="icon-list-bullet" viewBox="0 0 16 16">
<path d="M4 2a2 2 0 1 1-3.999.001A2 2 0 0 1 4 2zM4 8a2 2 0 1 1-3.999.001A2 2 0 0 1 4 8zM4 14a2 2 0 1 1-3.999.001A2 2 0 0 1 4 14zM6 1h10v2H6V1zM6 7h10v2H6V7zM6 13h10v2H6v-2z" <path d="M4 2a2 2 0 1 1-3.999.001A2 2 0 0 1 4 2zM4 8a2 2 0 1 1-3.999.001A2 2 0 0 1 4 8zM4 14a2 2 0 1 1-3.999.001A2 2 0 0 1 4 14zM6 1h10v2H6V1zM6 7h10v2H6V7zM6 13h10v2H6v-2z" />
/>
</symbol> </symbol>
<symbol id="icon-list-numbers" viewBox="0 0 16 16"> <symbol id="icon-list-numbers" viewBox="0 0 16 16">
<path d="M5 1h11v2H5V1zM5 7h11v2H5V7zM5 13h11v2H5v-2zM.368 4v-.549l.597-.049c.097-.007.111-.035.111-.139V.839c0-.083-.021-.125-.09-.146L.382.568l.076-.569h1.667v3.264c0 .111.007.132.111.139l.569.049V4H.367zM.047 10v-.63l.907-.886c.683-.663.975-.934.975-1.32 0-.251-.122-.433-.48-.433-.373 0-.528.122-.528.602l-.92-.081C.008 6.176.827 6 1.537 6c1.049 0 1.421.447 1.421 1.083s-.44 1.056-.934 1.53l-.765.731h.995c.068 0 .095-.014.108-.081l.095-.534h.717v1.272H.047zM2.344 13.682c.566.087.879.426.879 1.026 0 .879-.659 1.292-1.612 1.292-.673 0-1.272-.239-1.612-.613l.533-.586c.253.246.533.439.999.439.373 0 .693-.133.693-.599 0-.406-.253-.573-.666-.573a2.66 2.66 0 0 0-.493.047v-.666l.327-.04c.479-.06.739-.293.739-.719 0-.253-.113-.46-.486-.46-.359 0-.532.12-.532.593l-.912-.08c0-1.052.793-1.232 1.492-1.232 1.026 0 1.419.393 1.419 1.106 0 .56-.346.912-.766 1.039v.027z" <path d="M5 1h11v2H5V1zM5 7h11v2H5V7zM5 13h11v2H5v-2zM.368 4v-.549l.597-.049c.097-.007.111-.035.111-.139V.839c0-.083-.021-.125-.09-.146L.382.568l.076-.569h1.667v3.264c0 .111.007.132.111.139l.569.049V4H.367zM.047 10v-.63l.907-.886c.683-.663.975-.934.975-1.32 0-.251-.122-.433-.48-.433-.373 0-.528.122-.528.602l-.92-.081C.008 6.176.827 6 1.537 6c1.049 0 1.421.447 1.421 1.083s-.44 1.056-.934 1.53l-.765.731h.995c.068 0 .095-.014.108-.081l.095-.534h.717v1.272H.047zM2.344 13.682c.566.087.879.426.879 1.026 0 .879-.659 1.292-1.612 1.292-.673 0-1.272-.239-1.612-.613l.533-.586c.253.246.533.439.999.439.373 0 .693-.133.693-.599 0-.406-.253-.573-.666-.573a2.66 2.66 0 0 0-.493.047v-.666l.327-.04c.479-.06.739-.293.739-.719 0-.253-.113-.46-.486-.46-.359 0-.532.12-.532.593l-.912-.08c0-1.052.793-1.232 1.492-1.232 1.026 0 1.419.393 1.419 1.106 0 .56-.346.912-.766 1.039v.027z" />
/>
</symbol> </symbol>
<symbol id="icon-loader" viewBox="0 0 16 16"> <symbol id="icon-loader" viewBox="0 0 16 16">
<path d="M8 16a7.928 7.928 0 0 1-3.428-.77l.857-1.807A6.006 6.006 0 0 0 14 8c0-3.309-2.691-6-6-6a6.006 6.006 0 0 0-5.422 8.572l-1.806.859A7.929 7.929 0 0 1 0 8c0-4.411 3.589-8 8-8s8 3.589 8 8-3.589 8-8 8z" <path d="M8 16a7.928 7.928 0 0 1-3.428-.77l.857-1.807A6.006 6.006 0 0 0 14 8c0-3.309-2.691-6-6-6a6.006 6.006 0 0 0-5.422 8.572l-1.806.859A7.929 7.929 0 0 1 0 8c0-4.411 3.589-8 8-8s8 3.589 8 8-3.589 8-8 8z" />
/>
</symbol> </symbol>
<symbol id="icon-lock" viewBox="0 0 16 16"> <symbol id="icon-lock" viewBox="0 0 16 16">
<path d="M8 0C5.8 0 4 1.8 4 4v1H2c-.6 0-1 .4-1 1v9c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1h-2V4c0-2.2-1.8-4-4-4zm1 11.7V13H7v-1.3c-.6-.3-1-1-1-1.7 0-1.1.9-2 2-2s2 .9 2 2c0 .7-.4 1.4-1 1.7zM10 5H6V4c0-1.1.9-2 2-2s2 .9 2 2v1z" <path d="M8 0C5.8 0 4 1.8 4 4v1H2c-.6 0-1 .4-1 1v9c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1h-2V4c0-2.2-1.8-4-4-4zm1 11.7V13H7v-1.3c-.6-.3-1-1-1-1.7 0-1.1.9-2 2-2s2 .9 2 2c0 .7-.4 1.4-1 1.7zM10 5H6V4c0-1.1.9-2 2-2s2 .9 2 2v1z" />
/>
</symbol> </symbol>
<symbol id="icon-unlock" viewBox="0 0 16 16"> <symbol id="icon-unlock" viewBox="0 0 16 16">
<path d="M1,15c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V6c0-0.6-0.4-1-1-1h-2H6V4c0-1.1,0.9-2,2-2c0.6,0,1.1,0.2,1.5,0.7 l0.7,0.7l1.5-1.3L11,1.3C10.2,0.5,9.1,0,8,0C5.8,0,4,1.8,4,4v1H2C1.4,5,1,5.4,1,6V15z M8,8c1.1,0,2,0.9,2,2c0,0.7-0.4,1.4-1,1.7V13 H7v-1.3c-0.6-0.3-1-1-1-1.7C6,8.9,6.9,8,8,8z"></path> <path d="M1,15c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V6c0-0.6-0.4-1-1-1h-2H6V4c0-1.1,0.9-2,2-2c0.6,0,1.1,0.2,1.5,0.7 l0.7,0.7l1.5-1.3L11,1.3C10.2,0.5,9.1,0,8,0C5.8,0,4,1.8,4,4v1H2C1.4,5,1,5.4,1,6V15z M8,8c1.1,0,2,0.9,2,2c0,0.7-0.4,1.4-1,1.7V13 H7v-1.3c-0.6-0.3-1-1-1-1.7C6,8.9,6.9,8,8,8z" />
</symbol> </symbol>
<symbol id="icon-logout" viewBox="0 0 16 16"> <symbol id="icon-logout" viewBox="0 0 16 16">
<path d="M3.4 2H8v2h2V1c0-.6-.4-1-1-1H1C.4 0 0 .4 0 1v9c0 .3.1.5.3.7l5 5c.2.2.4.3.7.3.1 0 .3 0 .4-.1.4-.1.6-.5.6-.9V6c0-.3-.1-.5-.3-.7L3.4 2zM5 12.6l-3-3V3.4l3 3v6.2z" <path d="M3.4 2H8v2h2V1c0-.6-.4-1-1-1H1C.4 0 0 .4 0 1v9c0 .3.1.5.3.7l5 5c.2.2.4.3.7.3.1 0 .3 0 .4-.1.4-.1.6-.5.6-.9V6c0-.3-.1-.5-.3-.7L3.4 2zM5 12.6l-3-3V3.4l3 3v6.2z" />
/>
<path d="M15.7 7.3L12 3.6 10.6 5l2 2H8v2h4.6l-2 2 1.4 1.4 3.7-3.7c.4-.4.4-1 0-1.4z" /> <path d="M15.7 7.3L12 3.6 10.6 5l2 2H8v2h4.6l-2 2 1.4 1.4 3.7-3.7c.4-.4.4-1 0-1.4z" />
</symbol> </symbol>
<symbol id="icon-markdown" viewBox="0 0 16 16"> <symbol id="icon-markdown" viewBox="0 0 16 16">
<path d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z" <path d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z" />
/>
</symbol> </symbol>
<symbol id="icon-menu" viewBox="0 0 16 16"> <symbol id="icon-menu" viewBox="0 0 16 16">
<path d="M0 0h16v3H0V0zM0 6h16v3H0V6zM0 12h16v3H0v-3z" /> <path d="M0 0h16v3H0V0zM0 6h16v3H0V6zM0 12h16v3H0v-3z" />
@@ -275,45 +220,36 @@
<path d="M4 3h4v4H4V3zM9 4h3v1H9V4zM9 6h3v1H9V6zM4 8h8v1H4V8zM4 10h8v1H4v-1zM4 12h5v1H4v-1z" /> <path d="M4 3h4v4H4V3zM9 4h3v1H9V4zM9 6h3v1H9V6zM4 8h8v1H4V8zM4 10h8v1H4v-1zM4 12h5v1H4v-1z" />
</symbol> </symbol>
<symbol id="icon-phone" viewBox="0 0 16 16"> <symbol id="icon-phone" viewBox="0 0 16 16">
<path d="M15.285 12.305l-2.578-2.594a1 1 0 0 0-1.416-.002L9 12 4 7l2.294-2.294a1 1 0 0 0 .001-1.414L3.715.708a1 1 0 0 0-1.415 0L.004 3.003 0 3c0 7.18 5.82 13 13 13l2.283-2.283a1 1 0 0 0 .002-1.412z" <path d="M15.285 12.305l-2.578-2.594a1 1 0 0 0-1.416-.002L9 12 4 7l2.294-2.294a1 1 0 0 0 .001-1.414L3.715.708a1 1 0 0 0-1.415 0L.004 3.003 0 3c0 7.18 5.82 13 13 13l2.283-2.283a1 1 0 0 0 .002-1.412z" />
/>
</symbol> </symbol>
<symbol id="icon-pinterest" viewBox="0 0 16 16"> <symbol id="icon-pinterest" viewBox="0 0 16 16">
<path d="M8 0C3.6 0 0 3.6 0 8c0 3.4 2.1 6.3 5.1 7.4-.1-.6-.1-1.6 0-2.3.1-.6.9-4 .9-4s-.2-.4-.2-1.1c0-1.1.7-2 1.5-2 .7 0 1 .5 1 1.1 0 .7-.4 1.7-.7 2.7-.2.8.4 1.4 1.2 1.4 1.4 0 2.5-1.5 2.5-3.7 0-1.9-1.4-3.3-3.3-3.3-2.3 0-3.6 1.7-3.6 3.5 0 .7.3 1.4.6 1.8v.4c-.1.3-.2.8-.2.9s-.1.2-.3.1c-1-.5-1.6-1.9-1.6-3.1C2.9 5.3 4.7 3 8.2 3c2.8 0 4.9 2 4.9 4.6 0 2.8-1.7 5-4.2 5-.8 0-1.6-.4-1.8-.9 0 0-.4 1.5-.5 1.9-.2.7-.7 1.6-1 2.1.8.2 1.6.3 2.4.3 4.4 0 8-3.6 8-8s-3.6-8-8-8z" <path d="M8 0C3.6 0 0 3.6 0 8c0 3.4 2.1 6.3 5.1 7.4-.1-.6-.1-1.6 0-2.3.1-.6.9-4 .9-4s-.2-.4-.2-1.1c0-1.1.7-2 1.5-2 .7 0 1 .5 1 1.1 0 .7-.4 1.7-.7 2.7-.2.8.4 1.4 1.2 1.4 1.4 0 2.5-1.5 2.5-3.7 0-1.9-1.4-3.3-3.3-3.3-2.3 0-3.6 1.7-3.6 3.5 0 .7.3 1.4.6 1.8v.4c-.1.3-.2.8-.2.9s-.1.2-.3.1c-1-.5-1.6-1.9-1.6-3.1C2.9 5.3 4.7 3 8.2 3c2.8 0 4.9 2 4.9 4.6 0 2.8-1.7 5-4.2 5-.8 0-1.6-.4-1.8-.9 0 0-.4 1.5-.5 1.9-.2.7-.7 1.6-1 2.1.8.2 1.6.3 2.4.3 4.4 0 8-3.6 8-8s-3.6-8-8-8z" />
/>
</symbol> </symbol>
<symbol id="icon-preview" viewBox="0 0 16 16"> <symbol id="icon-preview" viewBox="0 0 16 16">
<path d="M8 14c4.707 0 7.744-5.284 7.871-5.508a1 1 0 0 0 .001-.98C15.746 7.287 12.731 2 8 2 3.245 2 .251 7.289.126 7.514a.998.998 0 0 0 .002.975C.254 8.713 3.269 14 8 14zM8 4c2.839 0 5.036 2.835 5.818 4-.784 1.166-2.981 4-5.818 4-2.841 0-5.038-2.838-5.819-4.001C2.958 6.835 5.146 4 8 4z" <path d="M8 14c4.707 0 7.744-5.284 7.871-5.508a1 1 0 0 0 .001-.98C15.746 7.287 12.731 2 8 2 3.245 2 .251 7.289.126 7.514a.998.998 0 0 0 .002.975C.254 8.713 3.269 14 8 14zM8 4c2.839 0 5.036 2.835 5.818 4-.784 1.166-2.981 4-5.818 4-2.841 0-5.038-2.838-5.819-4.001C2.958 6.835 5.146 4 8 4z" />
/>
<path d="M10 8a2 2 0 1 1-3.999.001A2 2 0 0 1 10 8z" /> <path d="M10 8a2 2 0 1 1-3.999.001A2 2 0 0 1 10 8z" />
</symbol> </symbol>
<symbol id="icon-quote" viewBox="0 0 16 16"> <symbol id="icon-quote" viewBox="0 0 16 16">
<path d="M3.024 4.561C1.839 6.042 1.668 7.535 2.016 8.58c1.316-1.045 3.145-.826 4.258.214 1.125 1.051 1.222 2.898.504 4.094a3.293 3.293 0 0 1-2.847 1.613C1.238 14.501 0 12.126 0 9.462c0-1.73.441-3.28 1.323-4.649S3.536 2.34 5.317 1.5l.479.932c-1.075.454-1.999 1.163-2.772 2.129zm8.768 0c-1.185 1.481-1.356 2.974-1.008 4.019.588-.454 1.226-.68 1.915-.68C14.511 7.9 16 9.107 16 11.201c0 1.926-1.478 3.301-3.301 3.301-2.693 0-3.931-2.375-3.931-5.039 0-1.73.441-3.28 1.323-4.649s2.213-2.473 3.994-3.313l.479.932c-1.075.454-1.999 1.163-2.772 2.129z" <path d="M3.024 4.561C1.839 6.042 1.668 7.535 2.016 8.58c1.316-1.045 3.145-.826 4.258.214 1.125 1.051 1.222 2.898.504 4.094a3.293 3.293 0 0 1-2.847 1.613C1.238 14.501 0 12.126 0 9.462c0-1.73.441-3.28 1.323-4.649S3.536 2.34 5.317 1.5l.479.932c-1.075.454-1.999 1.163-2.772 2.129zm8.768 0c-1.185 1.481-1.356 2.974-1.008 4.019.588-.454 1.226-.68 1.915-.68C14.511 7.9 16 9.107 16 11.201c0 1.926-1.478 3.301-3.301 3.301-2.693 0-3.931-2.375-3.931-5.039 0-1.73.441-3.28 1.323-4.649s2.213-2.473 3.994-3.313l.479.932c-1.075.454-1.999 1.163-2.772 2.129z" />
/>
</symbol> </symbol>
<symbol id="icon-refresh" viewBox="0 0 16 16"> <symbol id="icon-refresh" viewBox="0 0 16 16">
<path d="M4.5 4.5c1.9-1.9 5.1-1.9 7 0 .7.7 1.2 1.7 1.4 2.7l2-.3c-.2-1.5-.9-2.8-1.9-3.8C10.3.4 5.9.4 3.1 3.1L.9.9.2 7.3l6.4-.7-2.1-2.1zM15.8 8.7l-6.4.7 2.1 2.1c-1.9 1.9-5.1 1.9-7 0-.7-.7-1.2-1.7-1.4-2.7l-2 .3c.2 1.5.9 2.8 1.9 3.8 1.4 1.4 3.1 2 4.9 2s3.6-.7 4.9-2l2.2 2.2.8-6.4z" <path d="M4.5 4.5c1.9-1.9 5.1-1.9 7 0 .7.7 1.2 1.7 1.4 2.7l2-.3c-.2-1.5-.9-2.8-1.9-3.8C10.3.4 5.9.4 3.1 3.1L.9.9.2 7.3l6.4-.7-2.1-2.1zM15.8 8.7l-6.4.7 2.1 2.1c-1.9 1.9-5.1 1.9-7 0-.7-.7-1.2-1.7-1.4-2.7l-2 .3c.2 1.5.9 2.8 1.9 3.8 1.4 1.4 3.1 2 4.9 2s3.6-.7 4.9-2l2.2 2.2.8-6.4z" />
/>
</symbol> </symbol>
<symbol id="icon-search" viewBox="0 0 16 16"> <symbol id="icon-search" viewBox="0 0 16 16">
<path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5zM15.707 14.293L13.314 11.9a8.019 8.019 0 0 1-1.414 1.414l2.393 2.393a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414z" <path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5zM15.707 14.293L13.314 11.9a8.019 8.019 0 0 1-1.414 1.414l2.393 2.393a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414z" />
/>
</symbol> </symbol>
<symbol id="icon-settings" viewBox="0 0 16 16"> <symbol id="icon-settings" viewBox="0 0 16 16">
<path d="M5 5V1c0-.6-.4-1-1-1S3 .4 3 1v4c0 .6.4 1 1 1s1-.4 1-1zM1 11c0 1.3.9 2.4 2 2.8V15c0 .6.4 1 1 1s1-.4 1-1v-1-.2c1.2-.4 2-1.5 2-2.8 0-1.7-1.3-3-3-3s-3 1.3-3 3zM11 11v4c0 .6.4 1 1 1s1-.4 1-1v-4c0-.6-.4-1-1-1s-1 .4-1 1zM9 5c0 1.7 1.3 3 3 3s3-1.3 3-3c0-1.3-.9-2.4-2-2.8V1c0-.6-.4-1-1-1s-1 .4-1 1v1.2C9.9 2.6 9 3.7 9 5z" <path d="M5 5V1c0-.6-.4-1-1-1S3 .4 3 1v4c0 .6.4 1 1 1s1-.4 1-1zM1 11c0 1.3.9 2.4 2 2.8V15c0 .6.4 1 1 1s1-.4 1-1v-1-.2c1.2-.4 2-1.5 2-2.8 0-1.7-1.3-3-3-3s-3 1.3-3 3zM11 11v4c0 .6.4 1 1 1s1-.4 1-1v-4c0-.6-.4-1-1-1s-1 .4-1 1zM9 5c0 1.7 1.3 3 3 3s3-1.3 3-3c0-1.3-.9-2.4-2-2.8V1c0-.6-.4-1-1-1s-1 .4-1 1v1.2C9.9 2.6 9 3.7 9 5z" />
/>
</symbol> </symbol>
<symbol id="icon-smile" viewBox="0 0 16 16"> <symbol id="icon-smile" viewBox="0 0 16 16">
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z" /> <path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z" />
<path d="M7 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM11 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM8 12c1.7 0 3-1.3 3-3H5c0 1.7 1.3 3 3 3z" <path d="M7 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM11 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0zM8 12c1.7 0 3-1.3 3-3H5c0 1.7 1.3 3 3 3z" />
/>
</symbol> </symbol>
<symbol id="icon-sort" viewBox="0 0 10 16"> <symbol id="icon-sort" viewBox="0 0 10 16">
<path d="M0 0h3v3H0V0zM6 0h3v3H6V0zM0 6h3v3H0V6zM6 6h3v3H6V6zM0 12h3v3H0v-3zM6 12h3v3H6v-3z" /> <path d="M0 0h3v3H0V0zM6 0h3v3H6V0zM0 6h3v3H0V6zM6 6h3v3H6V6zM0 12h3v3H0v-3zM6 12h3v3H6v-3z" />
</symbol> </symbol>
<symbol id="icon-tag" viewBox="0 0 16 16"> <symbol id="icon-tag" viewBox="0 0 16 16">
<path d="M15.7 8.3l-8-8C7.5.1 7.3 0 7 0H1C.4 0 0 .4 0 1v6c0 .3.1.5.3.7l8 8c.2.2.4.3.7.3s.5-.1.7-.3l6-6c.4-.4.4-1 0-1.4zM4 5c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1z" <path d="M15.7 8.3l-8-8C7.5.1 7.3 0 7 0H1C.4 0 0 .4 0 1v6c0 .3.1.5.3.7l8 8c.2.2.4.3.7.3s.5-.1.7-.3l6-6c.4-.4.4-1 0-1.4zM4 5c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1z" />
/>
</symbol> </symbol>
<symbol id="icon-text" viewBox="0 0 16 16"> <symbol id="icon-text" viewBox="0 0 16 16">
<path d="M0 1h16v2H0V1zM0 5h10v2H0V5zM0 9h16v2H0V9zM0 13h10v2H0v-2z" /> <path d="M0 1h16v2H0V1zM0 5h10v2H0V5zM0 9h16v2H0V9zM0 13h10v2H0v-2z" />
@@ -324,49 +260,40 @@
</symbol> </symbol>
<symbol id="icon-toggle-off" viewBox="0 0 16 16"> <symbol id="icon-toggle-off" viewBox="0 0 16 16">
<path d="M8 8a2 2 0 1 1-3.999.001A2 2 0 0 1 8 8z" /> <path d="M8 8a2 2 0 1 1-3.999.001A2 2 0 0 1 8 8z" />
<path d="M10 2H6C2.7 2 0 4.7 0 8s2.7 6 6 6h4c3.3 0 6-2.7 6-6s-2.7-6-6-6zm0 10H6c-2.2 0-4-1.8-4-4s1.8-4 4-4h4c2.2 0 4 1.8 4 4s-1.8 4-4 4z" <path d="M10 2H6C2.7 2 0 4.7 0 8s2.7 6 6 6h4c3.3 0 6-2.7 6-6s-2.7-6-6-6zm0 10H6c-2.2 0-4-1.8-4-4s1.8-4 4-4h4c2.2 0 4 1.8 4 4s-1.8 4-4 4z" />
/>
</symbol> </symbol>
<symbol id="icon-toggle-on" viewBox="0 0 16 16"> <symbol id="icon-toggle-on" viewBox="0 0 16 16">
<path d="M8,8 C8,6.3 9.3,5 11,5 C12.7,5 14,6.3 14,8 C14,9.7 12.7,11 11,11 C9.3,11 8,9.7 8,8 M0,8 C0,10.8 2.2,13 5,13 L11,13 C13.8,13 16,10.8 16,8 C16,5.2 13.8,3 11,3 L5,3 C2.2,3 0,5.2 0,8" /> <path d="M8,8 C8,6.3 9.3,5 11,5 C12.7,5 14,6.3 14,8 C14,9.7 12.7,11 11,11 C9.3,11 8,9.7 8,8 M0,8 C0,10.8 2.2,13 5,13 L11,13 C13.8,13 16,10.8 16,8 C16,5.2 13.8,3 11,3 L5,3 C2.2,3 0,5.2 0,8" />
</symbol> </symbol>
<symbol id="icon-trash" viewBox="0 0 16 16"> <symbol id="icon-trash" viewBox="0 0 16 16">
<path d="M5 7h2v6H5V7zM9 7h2v6H9V7z" /> <path d="M5 7h2v6H5V7zM9 7h2v6H9V7z" />
<path d="M12 1c0-.6-.4-1-1-1H5c-.6 0-1 .4-1 1v2H0v2h1v10c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V5h1V3h-4V1zM6 2h4v1H6V2zm7 3v9H3V5h10z" <path d="M12 1c0-.6-.4-1-1-1H5c-.6 0-1 .4-1 1v2H0v2h1v10c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V5h1V3h-4V1zM6 2h4v1H6V2zm7 3v9H3V5h10z" />
/>
</symbol> </symbol>
<symbol id="icon-twitter" viewBox="0 0 16 16"> <symbol id="icon-twitter" viewBox="0 0 16 16">
<path d="M16 3c-.6.3-1.2.4-1.9.5.7-.4 1.2-1 1.4-1.8-.6.4-1.3.6-2.1.8-.6-.6-1.5-1-2.4-1-1.7 0-3.2 1.5-3.2 3.3 0 .3 0 .5.1.7-2.7-.1-5.2-1.4-6.8-3.4-.3.5-.4 1-.4 1.7 0 1.1.6 2.1 1.5 2.7-.5 0-1-.2-1.5-.4C.7 7.7 1.8 9 3.3 9.3c-.3.1-.6.1-.9.1-.2 0-.4 0-.6-.1.4 1.3 1.6 2.3 3.1 2.3-1.1.9-2.5 1.4-4.1 1.4H0c1.5.9 3.2 1.5 5 1.5 6 0 9.3-5 9.3-9.3v-.4C15 4.3 15.6 3.7 16 3z" <path d="M16 3c-.6.3-1.2.4-1.9.5.7-.4 1.2-1 1.4-1.8-.6.4-1.3.6-2.1.8-.6-.6-1.5-1-2.4-1-1.7 0-3.2 1.5-3.2 3.3 0 .3 0 .5.1.7-2.7-.1-5.2-1.4-6.8-3.4-.3.5-.4 1-.4 1.7 0 1.1.6 2.1 1.5 2.7-.5 0-1-.2-1.5-.4C.7 7.7 1.8 9 3.3 9.3c-.3.1-.6.1-.9.1-.2 0-.4 0-.6-.1.4 1.3 1.6 2.3 3.1 2.3-1.1.9-2.5 1.4-4.1 1.4H0c1.5.9 3.2 1.5 5 1.5 6 0 9.3-5 9.3-9.3v-.4C15 4.3 15.6 3.7 16 3z" />
/>
</symbol> </symbol>
<symbol id="icon-undo" viewBox="0 0 16 16"> <symbol id="icon-undo" viewBox="0 0 16 16">
<path d="M2.502 12.333a6.996 6.996 0 0 1-1.405-3.168l1.973-.331a4.982 4.982 0 0 0 1.003 2.26l-1.571 1.239zM6.834 14.903a7.015 7.015 0 0 1-2.976-1.259l1.186-1.611c.624.459 1.358.77 2.122.898l-.332 1.972zM9.165 14.903l-.33-1.973a4.99 4.99 0 0 0 2.209-.964l1.219 1.586a6.997 6.997 0 0 1-3.098 1.351zM8 1c-1.873 0-3.65.759-4.948 2.052L.9.9.2 7.3l6.4-.7-2.135-2.135A5.023 5.023 0 0 1 8 3c2.757 0 5 2.243 5 5 0 1.06-.327 2.072-.947 2.928l1.621 1.173A6.96 6.96 0 0 0 15 8c0-3.86-3.141-7-7-7z" <path d="M2.502 12.333a6.996 6.996 0 0 1-1.405-3.168l1.973-.331a4.982 4.982 0 0 0 1.003 2.26l-1.571 1.239zM6.834 14.903a7.015 7.015 0 0 1-2.976-1.259l1.186-1.611c.624.459 1.358.77 2.122.898l-.332 1.972zM9.165 14.903l-.33-1.973a4.99 4.99 0 0 0 2.209-.964l1.219 1.586a6.997 6.997 0 0 1-3.098 1.351zM8 1c-1.873 0-3.65.759-4.948 2.052L.9.9.2 7.3l6.4-.7-2.135-2.135A5.023 5.023 0 0 1 8 3c2.757 0 5 2.243 5 5 0 1.06-.327 2.072-.947 2.928l1.621 1.173A6.96 6.96 0 0 0 15 8c0-3.86-3.141-7-7-7z" />
/>
</symbol> </symbol>
<symbol id="icon-upload" viewBox="0 0 16 16"> <symbol id="icon-upload" viewBox="0 0 16 16">
<path d="M7 3.4V12h2V3.4l4 4L14.4 6 8.7.3c-.4-.4-1-.4-1.4 0L1.6 6 3 7.4l4-4z" /> <path d="M7 3.4V12h2V3.4l4 4L14.4 6 8.7.3c-.4-.4-1-.4-1.4 0L1.6 6 3 7.4l4-4z" />
<path d="M14 14H2v-3H0v4c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-4h-2v3z" /> <path d="M14 14H2v-3H0v4c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-4h-2v3z" />
</symbol> </symbol>
<symbol id="icon-url" viewBox="0 0 16 16"> <symbol id="icon-url" viewBox="0 0 16 16">
<path d="M11 0C9.7 0 8.4.5 7.5 1.5L6.3 2.6c-.4.4-.4 1 0 1.4s1 .4 1.4 0l1.2-1.2c1.1-1.1 3.1-1.1 4.2 0 .6.6.9 1.4.9 2.2s-.3 1.6-.9 2.1L12 8.3c-.4.4-.4 1 0 1.4.2.2.5.3.7.3s.5-.1.7-.3l1.2-1.2C15.5 7.6 16 6.3 16 5s-.5-2.6-1.5-3.5C13.6.5 12.3 0 11 0zM8.3 12l-1.2 1.2c-1.1 1.1-3.1 1.1-4.2 0-.6-.6-.9-1.4-.9-2.2s.3-1.6.9-2.1L4 7.7c.4-.4.4-1 0-1.4s-1-.4-1.4 0L1.5 7.5C.5 8.4 0 9.7 0 11s.5 2.6 1.5 3.5c.9 1 2.2 1.5 3.5 1.5s2.6-.5 3.5-1.5l1.2-1.2c.4-.4.4-1 0-1.4s-1-.3-1.4.1z" <path d="M11 0C9.7 0 8.4.5 7.5 1.5L6.3 2.6c-.4.4-.4 1 0 1.4s1 .4 1.4 0l1.2-1.2c1.1-1.1 3.1-1.1 4.2 0 .6.6.9 1.4.9 2.2s-.3 1.6-.9 2.1L12 8.3c-.4.4-.4 1 0 1.4.2.2.5.3.7.3s.5-.1.7-.3l1.2-1.2C15.5 7.6 16 6.3 16 5s-.5-2.6-1.5-3.5C13.6.5 12.3 0 11 0zM8.3 12l-1.2 1.2c-1.1 1.1-3.1 1.1-4.2 0-.6-.6-.9-1.4-.9-2.2s.3-1.6.9-2.1L4 7.7c.4-.4.4-1 0-1.4s-1-.4-1.4 0L1.5 7.5C.5 8.4 0 9.7 0 11s.5 2.6 1.5 3.5c.9 1 2.2 1.5 3.5 1.5s2.6-.5 3.5-1.5l1.2-1.2c.4-.4.4-1 0-1.4s-1-.3-1.4.1z" />
/>
<path d="M9.4 5.2L5.2 9.4c-.4.4-.4 1 0 1.4.2.2.5.3.7.3s.5-.1.7-.3l4.2-4.2c.4-.4.4-1 0-1.4s-1-.4-1.4 0z" /> <path d="M9.4 5.2L5.2 9.4c-.4.4-.4 1 0 1.4.2.2.5.3.7.3s.5-.1.7-.3l4.2-4.2c.4-.4.4-1 0-1.4s-1-.4-1.4 0z" />
</symbol> </symbol>
<symbol id="icon-user" viewBox="0 0 16 16"> <symbol id="icon-user" viewBox="0 0 16 16">
<path d="M8 0C5.794 0 4 1.794 4 4v1c0 2.206 1.794 4 4 4s4-1.794 4-4V4c0-2.206-1.794-4-4-4zM12.036 9.426C10.969 10.4 9.555 11 8 11s-2.969-.6-4.036-1.574C2.203 10 1 11.311 1 13v3h14v-3c0-1.689-1.203-3-2.964-3.574z" <path d="M8 0C5.794 0 4 1.794 4 4v1c0 2.206 1.794 4 4 4s4-1.794 4-4V4c0-2.206-1.794-4-4-4zM12.036 9.426C10.969 10.4 9.555 11 8 11s-2.969-.6-4.036-1.574C2.203 10 1 11.311 1 13v3h14v-3c0-1.689-1.203-3-2.964-3.574z" />
/>
</symbol> </symbol>
<symbol id="icon-users" viewBox="0 0 16 16"> <symbol id="icon-users" viewBox="0 0 16 16">
<path d="M10.2 11.4l-2.7-2C8.4 8.7 9 7.7 9 6.5v-.8C9 3.8 7.6 2.1 5.7 2 3.7 1.9 2 3.5 2 5.5v1c0 1.2.6 2.2 1.5 2.9L.8 11.5c-.5.4-.8 1-.8 1.6V15c0 .6.4 1 1 1h9c.6 0 1-.4 1-1v-2c0-.6-.3-1.2-.8-1.6zM15.1 6.4l-1.8-1.2c.4-.4.7-1 .7-1.7v-.9c0-1.2-.9-2.4-2.1-2.6S9.7.5 9.2 1.4c1.1 1 1.8 2.4 1.8 4v1c0 .9-.2 1.8-.6 2.5 0 0 1.2.9 1.2 1H15c.6 0 1-.4 1-1v-.8c0-.7-.3-1.3-.9-1.7z" <path d="M10.2 11.4l-2.7-2C8.4 8.7 9 7.7 9 6.5v-.8C9 3.8 7.6 2.1 5.7 2 3.7 1.9 2 3.5 2 5.5v1c0 1.2.6 2.2 1.5 2.9L.8 11.5c-.5.4-.8 1-.8 1.6V15c0 .6.4 1 1 1h9c.6 0 1-.4 1-1v-2c0-.6-.3-1.2-.8-1.6zM15.1 6.4l-1.8-1.2c.4-.4.7-1 .7-1.7v-.9c0-1.2-.9-2.4-2.1-2.6S9.7.5 9.2 1.4c1.1 1 1.8 2.4 1.8 4v1c0 .9-.2 1.8-.6 2.5 0 0 1.2.9 1.2 1H15c.6 0 1-.4 1-1v-.8c0-.7-.3-1.3-.9-1.7z" />
/>
</symbol> </symbol>
<symbol id="icon-video" viewBox="0 0 16 16"> <symbol id="icon-video" viewBox="0 0 16 16">
<path d="M11 9V7c0-.6-.4-1-1-1H1c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h9c.6 0 1-.4 1-1v-2l5 2V7l-5 2zM5 2.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zM10 3a2 2 0 1 1-3.999.001A2 2 0 0 1 10 3z" <path d="M11 9V7c0-.6-.4-1-1-1H1c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h9c.6 0 1-.4 1-1v-2l5 2V7l-5 2zM5 2.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0zM10 3a2 2 0 1 1-3.999.001A2 2 0 0 1 10 3z" />
/>
</symbol> </symbol>
<symbol id="icon-wand" viewBox="0 0 16 16"> <symbol id="icon-wand" viewBox="0 0 16 16">
<path d="M8.046 4.985l2.97 2.97-7.99 7.99-2.97-2.97 7.99-7.99zM12.995 1.591l1.414 1.414-2.404 2.404-1.414-1.414 2.404-2.404zM13 7h3v2h-3V7zM12.243 10.834l2.121 2.121-1.414 1.414-2.121-2.121 1.414-1.414zM7 0h2v3H7V0zM3.05 1.631l2.121 2.121-1.414 1.414-2.121-2.121L3.05 1.631z" <path d="M8.046 4.985l2.97 2.97-7.99 7.99-2.97-2.97 7.99-7.99zM12.995 1.591l1.414 1.414-2.404 2.404-1.414-1.414 2.404-2.404zM13 7h3v2h-3V7zM12.243 10.834l2.121 2.121-1.414 1.414-2.121-2.121 1.414-1.414zM7 0h2v3H7V0zM3.05 1.631l2.121 2.121-1.414 1.414-2.121-2.121L3.05 1.631z" />
/>
</symbol> </symbol>
<symbol id="icon-template" viewBox="0 0 16 16"> <symbol id="icon-template" viewBox="0 0 16 16">
<path d="M15 1h-3v2h2v11H2V3h2V1H1c-.6 0-1 .4-1 1v13c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1z" /> <path d="M15 1h-3v2h2v11H2V3h2V1H1c-.6 0-1 .4-1 1v13c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1z" />
@@ -393,19 +320,21 @@
<path d="M10,3c-3.2,0-6,2.5-6,7c1.1-1.7,2.4-3,6-3v3l6-5l-6-5V3z" /> <path d="M10,3c-3.2,0-6,2.5-6,7c1.1-1.7,2.4-3,6-3v3l6-5l-6-5V3z" />
</symbol> </symbol>
<symbol id="icon-remove" viewBox="0 0 16 16"> <symbol id="icon-remove" viewBox="0 0 16 16">
<rect data-color="color-2" x="4" y="7" width="8" height="2"></rect> <path d="M8,0C3.6,0,0,3.6,0,8s3.6,8,8,8s8-3.6,8-8S12.4,0,8,0z M8,14c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6 S11.3,14,8,14z"></path> <rect x="4" y="7" width="8" height="2" />
<path d="M8,0C3.6,0,0,3.6,0,8s3.6,8,8,8s8-3.6,8-8S12.4,0,8,0z M8,14c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6 S11.3,14,8,14z" />
</symbol> </symbol>
<symbol id="icon-cart" viewBox="0 0 16 16"> <symbol id="icon-cart" viewBox="0 0 16 16">
<path d="M15,3H4.5L4,0.8C3.9,0.3,3.5,0,3,0H0v2h2.2L4,10.2C4.1,10.7,4.5,11,5,11h8c0.4,0,0.8-0.3,0.9-0.7l2-6 C16.1,3.8,15.8,3,15,3z"></path> <path d="M15,3H4.5L4,0.8C3.9,0.3,3.5,0,3,0H0v2h2.2L4,10.2C4.1,10.7,4.5,11,5,11h8c0.4,0,0.8-0.3,0.9-0.7l2-6 C16.1,3.8,15.8,3,15,3z" />
<circle data-color="color-2" cx="5" cy="14" r="2"></circle> <circle cx="5" cy="14" r="2" />
<circle data-color="color-2" cx="13" cy="14" r="2"></circle> <circle cx="13" cy="14" r="2" />
</symbol> </symbol>
<symbol id="icon-key" viewBox="0 0 16 16"> <symbol id="icon-key" viewBox="0 0 16 16">
<path d="M12.7,0L6.5,6.3C6,6.1,5.5,6,5,6c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5c0-0.5-0.1-1.1-0.3-1.6L11,8V6h2V4h2 l1-1V0H12.7z M4.5,12C3.7,12,3,11.3,3,10.5S3.7,9,4.5,9S6,9.7,6,10.5S5.3,12,4.5,12z"></path> <path d="M12.7,0L6.5,6.3C6,6.1,5.5,6,5,6c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5c0-0.5-0.1-1.1-0.3-1.6L11,8V6h2V4h2 l1-1V0H12.7z M4.5,12C3.7,12,3,11.3,3,10.5S3.7,9,4.5,9S6,9.7,6,10.5S5.3,12,4.5,12z"
/>
</symbol> </symbol>
<symbol id="icon-copy" viewBox="0 0 16 16"> <symbol id="icon-copy" viewBox="0 0 16 16">
<path d="M10,4H2C1.4,4,1,4.4,1,5v10c0,0.6,0.4,1,1,1h8c0.6,0,1-0.4,1-1V5C11,4.4,10.6,4,10,4z"></path> <path d="M10,4H2C1.4,4,1,4.4,1,5v10c0,0.6,0.4,1,1,1h8c0.6,0,1-0.4,1-1V5C11,4.4,10.6,4,10,4z" />
<path d="M14,0H4v2h9v11h2V1C15,0.4,14.6,0,14,0z"></path> <path d="M14,0H4v2h9v11h2V1C15,0.4,14.6,0,14,0z" />
</symbol> </symbol>
</defs> </defs>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

View File

@@ -4,6 +4,7 @@ window.panel.plugins = {
components: {}, components: {},
created: [], created: [],
fields: {}, fields: {},
icons: {},
sections: {}, sections: {},
routes: [], routes: [],
use: [], use: [],
@@ -21,6 +22,11 @@ window.panel.plugin = function (plugin, parts) {
window.panel.plugins["fields"][`k-${name}-field`] = options; window.panel.plugins["fields"][`k-${name}-field`] = options;
}); });
// Icons
resolve(parts, "icons", function (name, options) {
window.panel.plugins["icons"][name] = options;
});
// Sections // Sections
resolve(parts, "sections", function (name, options) { resolve(parts, "sections", function (name, options) {
window.panel.plugins["sections"][`k-${name}-section`] = options; window.panel.plugins["sections"][`k-${name}-section`] = options;

View File

@@ -4,14 +4,13 @@ namespace Kirby\Api;
use Closure; use Closure;
use Exception; use Exception;
use Throwable;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Http\Router;
use Kirby\Http\Response; use Kirby\Http\Response;
use Kirby\Http\Router;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Properties; use Kirby\Toolkit\Properties;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
use Throwable;
/** /**
* The API class is a generic container * The API class is a generic container
@@ -169,12 +168,41 @@ class Api
$auth = $this->route->attributes()['auth'] ?? true; $auth = $this->route->attributes()['auth'] ?? true;
if ($auth !== false) { if ($auth !== false) {
$this->authenticate(); $user = $this->authenticate();
// set PHP locales based on *user* language
// so that e.g. strftime() gets formatted correctly
if (is_a($user, 'Kirby\Cms\User') === true) {
$locale = $language = $user->language();
// if it's not already a full locale, "fake" one
// and assume that the country equals the language
if (Str::contains($locale, '_') !== true) {
$locale .= '_' . strtoupper($locale);
}
// provide some variants as fallbacks to be
// compatible with as many systems as possible
$locales = [
$locale,
$locale . '.UTF-8',
$locale . '.UTF8',
$locale . '.ISO8859-1',
$language,
setlocale(LC_ALL, 0) // fall back to the previously defined locale
];
// set the locales that are relevant for string formatting
// *don't* set LC_CTYPE to avoid breaking other parts of the system
setlocale(LC_MONETARY, $locales);
setlocale(LC_NUMERIC, $locales);
setlocale(LC_TIME, $locales);
}
} }
$output = $this->route->action()->call($this, ...$this->route->arguments()); $output = $this->route->action()->call($this, ...$this->route->arguments());
if (is_object($output) === true) { if (is_object($output) === true && is_a($output, 'Kirby\\Http\\Response') !== true) {
return $this->resolve($output)->toResponse(); return $this->resolve($output)->toResponse();
} }
@@ -186,7 +214,7 @@ class Api
* *
* @param string $name * @param string $name
* @param array|null $collection * @param array|null $collection
* @return Kirby\Api\Collection * @return \Kirby\Api\Collection
* *
* @throws NotFoundException If no collection for `$name` exists * @throws NotFoundException If no collection for `$name` exists
*/ */
@@ -263,7 +291,7 @@ class Api
* *
* @param string $name * @param string $name
* @param mixed $object * @param mixed $object
* @return Kirby\Api\Model * @return \Kirby\Api\Model
* *
* @throws NotFoundException If no model for `$name` exists * @throws NotFoundException If no model for `$name` exists
*/ */
@@ -375,7 +403,7 @@ class Api
* API model or collection representation * API model or collection representation
* *
* @param mixed $object * @param mixed $object
* @return Kirby\Api\Model|Kirby\Api\Collection * @return \Kirby\Api\Model|\Kirby\Api\Collection
* *
* @throws NotFoundException If `$object` cannot be resolved * @throws NotFoundException If `$object` cannot be resolved
*/ */
@@ -540,50 +568,15 @@ class Api
try { try {
$result = $this->call($path, $method, $requestData); $result = $this->call($path, $method, $requestData);
} catch (Throwable $e) { } catch (Throwable $e) {
if (is_a($e, 'Kirby\Exception\Exception') === true) { $result = $this->responseForException($e);
$result = [
'status' => 'error',
'route' => ($this->route)? $this->route->pattern() : null
] + $e->toArray();
} else {
// remove the document root from the file path
$file = $e->getFile();
if (empty($_SERVER['DOCUMENT_ROOT']) === false) {
$file = ltrim(Str::after($file, $_SERVER['DOCUMENT_ROOT']), '/');
}
$result = [
'status' => 'error',
'exception' => get_class($e),
'message' => $e->getMessage(),
'file' => $file,
'line' => $e->getLine(),
'code' => empty($e->getCode()) === false ? $e->getCode() : 500,
'route' => $this->route ? $this->route->pattern() : null
];
}
} }
if ($result === null) { if ($result === null) {
$result = [ $result = $this->responseFor404();
'status' => 'error', } elseif ($result === false) {
'message' => 'not found', $result = $this->responseFor400();
'code' => 404, } elseif ($result === true) {
]; $result = $this->responseFor200();
}
if ($result === true) {
$result = [
'status' => 'ok',
];
}
if ($result === false) {
$result = [
'status' => 'error',
'message' => 'bad request',
'code' => 400,
];
} }
if (is_array($result) === false) { if (is_array($result) === false) {
@@ -593,17 +586,6 @@ class Api
// pretty print json data // pretty print json data
$pretty = (bool)($requestData['query']['pretty'] ?? false) === true; $pretty = (bool)($requestData['query']['pretty'] ?? false) === true;
// remove critical info from the result set if
// debug mode is switched off
if ($this->debug !== true) {
unset(
$result['file'],
$result['exception'],
$result['line'],
$result['route']
);
}
if (($result['status'] ?? 'ok') === 'error') { if (($result['status'] ?? 'ok') === 'error') {
$code = $result['code'] ?? 400; $code = $result['code'] ?? 400;
@@ -618,6 +600,95 @@ class Api
return Response::json($result, 200, $pretty); return Response::json($result, 200, $pretty);
} }
/**
* Returns a 200 - ok
* response array.
*
* @return array
*/
public function responseFor200(): array
{
return [
'status' => 'ok',
'message' => 'ok',
'code' => 200
];
}
/**
* Returns a 400 - bad request
* response array.
*
* @return array
*/
public function responseFor400(): array
{
return [
'status' => 'error',
'message' => 'bad request',
'code' => 400,
];
}
/**
* Returns a 404 - not found
* response array.
*
* @return array
*/
public function responseFor404(): array
{
return [
'status' => 'error',
'message' => 'not found',
'code' => 404,
];
}
/**
* Creates the response array for
* an exception. Kirby exceptions will
* have more information
*
* @param Exception $e
* @return array
*/
public function responseForException($e): array
{
// prepare the result array for all exception types
$result = [
'status' => 'error',
'message' => $e->getMessage(),
'code' => empty($e->getCode()) === true ? 500 : $e->getCode(),
'exception' => get_class($e),
'key' => null,
'file' => F::relativepath($e->getFile(), $_SERVER['DOCUMENT_ROOT'] ?? null),
'line' => $e->getLine(),
'details' => [],
'route' => $this->route ? $this->route->pattern() : null
];
// extend the information for Kirby Exceptions
if (is_a($e, 'Kirby\Exception\Exception') === true) {
$result['key'] = $e->getKey();
$result['details'] = $e->getDetails();
$result['code'] = $e->getHttpCode();
}
// remove critical info from the result set if
// debug mode is switched off
if ($this->debug !== true) {
unset(
$result['file'],
$result['exception'],
$result['line'],
$result['route']
);
}
return $result;
}
/** /**
* Upload helper method * Upload helper method
* *
@@ -635,8 +706,26 @@ class Api
$errors = []; $errors = [];
$files = $this->requestFiles(); $files = $this->requestFiles();
// get error messages from translation
$errorMessages = [
UPLOAD_ERR_INI_SIZE => t('upload.error.iniSize'),
UPLOAD_ERR_FORM_SIZE => t('upload.error.formSize'),
UPLOAD_ERR_PARTIAL => t('upload.error.partial'),
UPLOAD_ERR_NO_FILE => t('upload.error.noFile'),
UPLOAD_ERR_NO_TMP_DIR => t('upload.error.tmpDir'),
UPLOAD_ERR_CANT_WRITE => t('upload.error.cantWrite'),
UPLOAD_ERR_EXTENSION => t('upload.error.extension')
];
if (empty($files) === true) { if (empty($files) === true) {
throw new Exception('No uploaded files'); $postMaxSize = Str::toBytes(ini_get('post_max_size'));
$uploadMaxFileSize = Str::toBytes(ini_get('upload_max_filesize'));
if ($postMaxSize < $uploadMaxFileSize) {
throw new Exception(t('upload.error.iniPostSize'));
} else {
throw new Exception(t('upload.error.noFiles'));
}
} }
foreach ($files as $upload) { foreach ($files as $upload) {
@@ -648,7 +737,8 @@ class Api
try { try {
if ($upload['error'] !== 0) { if ($upload['error'] !== 0) {
throw new Exception('Upload error'); $errorMessage = $errorMessages[$upload['error']] ?? t('upload.error.default');
throw new Exception($errorMessage);
} }
// get the extension of the uploaded file // get the extension of the uploaded file
@@ -669,7 +759,7 @@ class Api
// move the file to a location including the extension, // move the file to a location including the extension,
// for better mime detection // for better mime detection
if (move_uploaded_file($upload['tmp_name'], $source) === false) { if (move_uploaded_file($upload['tmp_name'], $source) === false) {
throw new Exception('The uploaded file could not be moved'); throw new Exception(t('upload.error.cantMove'));
} }
$data = $callback($source, $filename); $data = $callback($source, $filename);

View File

@@ -15,7 +15,6 @@ use APCUIterator;
*/ */
class ApcuCache extends Cache class ApcuCache extends Cache
{ {
/** /**
* Determines if an item exists in the cache * Determines if an item exists in the cache
* *
@@ -59,7 +58,7 @@ class ApcuCache extends Cache
* needs to return a Value object or null if not found * needs to return a Value object or null if not found
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Value|null * @return \Kirby\Cache\Value|null
*/ */
public function retrieve(string $key) public function retrieve(string $key)
{ {

View File

@@ -16,7 +16,6 @@ namespace Kirby\Cache;
*/ */
abstract class Cache abstract class Cache
{ {
/** /**
* Stores all options for the driver * Stores all options for the driver
* @var array * @var array
@@ -71,7 +70,7 @@ abstract class Cache
* this needs to be defined by the driver * this needs to be defined by the driver
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Value|null * @return \Kirby\Cache\Value|null
*/ */
abstract public function retrieve(string $key); abstract public function retrieve(string $key);
@@ -96,7 +95,7 @@ abstract class Cache
$value = $this->retrieve($key); $value = $this->retrieve($key);
// check for a valid cache value // check for a valid cache value
if (!is_a($value, Value::class)) { if (!is_a($value, 'Kirby\Cache\Value')) {
return $default; return $default;
} }
@@ -141,7 +140,7 @@ abstract class Cache
$value = $this->retrieve($key); $value = $this->retrieve($key);
// check for a valid Value object // check for a valid Value object
if (!is_a($value, Value::class)) { if (!is_a($value, 'Kirby\Cache\Value')) {
return false; return false;
} }
@@ -182,7 +181,7 @@ abstract class Cache
$value = $this->retrieve($key); $value = $this->retrieve($key);
// check for a valid Value object // check for a valid Value object
if (!is_a($value, Value::class)) { if (!is_a($value, 'Kirby\Cache\Value')) {
return false; return false;
} }

View File

@@ -16,7 +16,6 @@ use Kirby\Toolkit\F;
*/ */
class FileCache extends Cache class FileCache extends Cache
{ {
/** /**
* Full root including prefix * Full root including prefix
* @var string * @var string
@@ -93,7 +92,7 @@ class FileCache extends Cache
* needs to return a Value object or null if not found * needs to return a Value object or null if not found
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Value|null * @return \Kirby\Cache\Value|null
*/ */
public function retrieve(string $key) public function retrieve(string $key)
{ {

View File

@@ -13,7 +13,6 @@ namespace Kirby\Cache;
*/ */
class MemCached extends Cache class MemCached extends Cache
{ {
/** /**
* store for the memache connection * store for the memache connection
* @var Memcached * @var Memcached
@@ -65,7 +64,7 @@ class MemCached extends Cache
* needs to return a Value object or null if not found * needs to return a Value object or null if not found
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Value|null * @return \Kirby\Cache\Value|null
*/ */
public function retrieve(string $key) public function retrieve(string $key)
{ {

View File

@@ -13,7 +13,6 @@ namespace Kirby\Cache;
*/ */
class MemoryCache extends Cache class MemoryCache extends Cache
{ {
/** /**
* Cache data * Cache data
* @var array * @var array
@@ -45,7 +44,7 @@ class MemoryCache extends Cache
* needs to return a Value object or null if not found * needs to return a Value object or null if not found
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Value|null * @return \Kirby\Cache\Value|null
*/ */
public function retrieve(string $key) public function retrieve(string $key)
{ {

View File

@@ -13,7 +13,6 @@ namespace Kirby\Cache;
*/ */
class NullCache extends Cache class NullCache extends Cache
{ {
/** /**
* Writes an item to the cache for a given number of minutes and * Writes an item to the cache for a given number of minutes and
* returns whether the operation was successful * returns whether the operation was successful
@@ -38,7 +37,7 @@ class NullCache extends Cache
* needs to return a Value object or null if not found * needs to return a Value object or null if not found
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Value|null * @return \Kirby\Cache\Value|null
*/ */
public function retrieve(string $key) public function retrieve(string $key)
{ {

View File

@@ -17,7 +17,6 @@ use Throwable;
*/ */
class Value class Value
{ {
/** /**
* Cached value * Cached value
* @var mixed * @var mixed

View File

@@ -92,7 +92,7 @@ class Api extends BaseApi
* *
* @param string $path Path to file's parent model * @param string $path Path to file's parent model
* @param string $filename Filename * @param string $filename Filename
* @return Kirby\Cms\File|null * @return \Kirby\Cms\File|null
*/ */
public function file(string $path = null, string $filename) public function file(string $path = null, string $filename)
{ {
@@ -114,7 +114,7 @@ class Api extends BaseApi
* Returns the model's object for the given path * Returns the model's object for the given path
* *
* @param string $path Path to parent model * @param string $path Path to parent model
* @return Kirby\Cms\Model|null * @return \Kirby\Cms\Model|null
*/ */
public function parent(string $path) public function parent(string $path)
{ {
@@ -166,7 +166,7 @@ class Api extends BaseApi
/** /**
* Returns the Kirby instance * Returns the Kirby instance
* *
* @return Kirby\Cms\App * @return \Kirby\Cms\App
*/ */
public function kirby() public function kirby()
{ {
@@ -187,7 +187,7 @@ class Api extends BaseApi
* Returns the page object for the given id * Returns the page object for the given id
* *
* @param string $id Page's id * @param string $id Page's id
* @return Kirby\Cms\Page|null * @return \Kirby\Cms\Page|null
*/ */
public function page(string $id) public function page(string $id)
{ {
@@ -214,7 +214,7 @@ class Api extends BaseApi
} }
/** /**
* @param Kirby\Cms\App $kirby * @param \Kirby\Cms\App $kirby
*/ */
protected function setKirby(App $kirby) protected function setKirby(App $kirby)
{ {
@@ -225,7 +225,7 @@ class Api extends BaseApi
/** /**
* Returns the site object * Returns the site object
* *
* @return Kirby\Cms\Site * @return \Kirby\Cms\Site
*/ */
public function site() public function site()
{ {
@@ -238,7 +238,7 @@ class Api extends BaseApi
* id is passed * id is passed
* *
* @param string $id User's id * @param string $id User's id
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function user(string $id = null) public function user(string $id = null)
{ {
@@ -263,7 +263,7 @@ class Api extends BaseApi
/** /**
* Returns the users collection * Returns the users collection
* *
* @return Kirby\Cms\Users * @return \Kirby\Cms\Users
*/ */
public function users() public function users()
{ {

View File

@@ -6,8 +6,8 @@ use Kirby\Data\Data;
use Kirby\Email\PHPMailer as Emailer; use Kirby\Email\PHPMailer as Emailer;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Http\Router;
use Kirby\Http\Request; use Kirby\Http\Request;
use Kirby\Http\Router;
use Kirby\Http\Server; use Kirby\Http\Server;
use Kirby\Http\Visitor; use Kirby\Http\Visitor;
use Kirby\Session\AutoSession; use Kirby\Session\AutoSession;
@@ -15,8 +15,8 @@ use Kirby\Text\KirbyTag;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\Config; use Kirby\Toolkit\Config;
use Kirby\Toolkit\Controller; use Kirby\Toolkit\Controller;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Dir; use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Properties; use Kirby\Toolkit\Properties;
/** /**
@@ -132,7 +132,7 @@ class App
* *
* @return array * @return array
*/ */
public function __debuginfo(): array public function __debugInfo(): array
{ {
return [ return [
'languages' => $this->languages(), 'languages' => $this->languages(),
@@ -149,7 +149,7 @@ class App
* Returns the Api instance * Returns the Api instance
* *
* @internal * @internal
* @return Kirby\Cms\Api * @return \Kirby\Cms\Api
*/ */
public function api() public function api()
{ {
@@ -181,7 +181,7 @@ class App
* *
* @internal * @internal
* @param string $name Hook name * @param string $name Hook name
* @param mixed $args Arguments to pass to the hooks * @param mixed ...$args Arguments to pass to the hooks
* @return mixed Resulting value as modified by the hooks * @return mixed Resulting value as modified by the hooks
*/ */
public function apply(string $name, ...$args) public function apply(string $name, ...$args)
@@ -294,7 +294,7 @@ class App
* automatically injected * automatically injected
* *
* @param string $name * @param string $name
* @return Kirby\Cms\Collection|null * @return \Kirby\Cms\Collection|null
*/ */
public function collection(string $name) public function collection(string $name)
{ {
@@ -309,11 +309,11 @@ class App
/** /**
* Returns all user-defined collections * Returns all user-defined collections
* *
* @return Kirby\Cms\Collections * @return \Kirby\Cms\Collections
*/ */
public function collections() public function collections()
{ {
return $this->collections = $this->collections ?? new Collections; return $this->collections = $this->collections ?? new Collections();
} }
/** /**
@@ -357,6 +357,7 @@ class App
* @internal * @internal
* @param string $name * @param string $name
* @param array $arguments * @param array $arguments
* @param string $contentType
* @return array * @return array
*/ */
public function controller(string $name, array $arguments = [], string $contentType = 'html'): array public function controller(string $name, array $arguments = [], string $contentType = 'html'): array
@@ -388,7 +389,8 @@ class App
* Try to find a controller by name * Try to find a controller by name
* *
* @param string $name * @param string $name
* @return Kirby\Toolkit\Controller|null * @param string $contentType
* @return \Kirby\Toolkit\Controller|null
*/ */
protected function controllerLookup(string $name, string $contentType = 'html') protected function controllerLookup(string $name, string $contentType = 'html')
{ {
@@ -403,7 +405,7 @@ class App
// registry controller // registry controller
if ($controller = $this->extension('controllers', $name)) { if ($controller = $this->extension('controllers', $name)) {
return is_a($controller, Controller::class) ? $controller : new Controller($controller); return is_a($controller, 'Kirby\Toolkit\Controller') ? $controller : new Controller($controller);
} }
return null; return null;
@@ -412,7 +414,7 @@ class App
/** /**
* Returns the default language object * Returns the default language object
* *
* @return Kirby\Cms\Language|null * @return \Kirby\Cms\Language|null
*/ */
public function defaultLanguage() public function defaultLanguage()
{ {
@@ -434,7 +436,7 @@ class App
/** /**
* Detect the prefered language from the visitor object * Detect the prefered language from the visitor object
* *
* @return Kirby\Cms\Language * @return \Kirby\Cms\Language
*/ */
public function detectedLanguage() public function detectedLanguage()
{ {
@@ -459,7 +461,9 @@ class App
/** /**
* Returns the Email singleton * Returns the Email singleton
* *
* @return Kirby\Email\PHPMailer * @param mixed $preset
* @param array $props
* @return \Kirby\Email\PHPMailer
*/ */
public function email($preset = [], array $props = []) public function email($preset = [], array $props = [])
{ {
@@ -470,8 +474,9 @@ class App
* Finds any file in the content directory * Finds any file in the content directory
* *
* @param string $path * @param string $path
* @param mixed $parent
* @param boolean $drafts * @param boolean $drafts
* @return Kirby\Cms\File|null * @return \Kirby\Cms\File|null
*/ */
public function file(string $path, $parent = null, bool $drafts = true) public function file(string $path, $parent = null, bool $drafts = true)
{ {
@@ -479,11 +484,11 @@ class App
$id = dirname($path); $id = dirname($path);
$filename = basename($path); $filename = basename($path);
if (is_a($parent, User::class) === true) { if (is_a($parent, 'Kirby\Cms\User') === true) {
return $parent->file($filename); return $parent->file($filename);
} }
if (is_a($parent, File::class) === true) { if (is_a($parent, 'Kirby\Cms\File') === true) {
$parent = $parent->parent(); $parent = $parent->parent();
} }
@@ -511,13 +516,13 @@ class App
/** /**
* Returns the current App instance * Returns the current App instance
* *
* @param Kirby\Cms\App $instance * @param \Kirby\Cms\App $instance
* @return self * @return self
*/ */
public static function instance(self $instance = null) public static function instance(self $instance = null)
{ {
if ($instance === null) { if ($instance === null) {
return static::$instance ?? new static; return static::$instance ?? new static();
} }
return static::$instance = $instance; return static::$instance = $instance;
@@ -529,7 +534,7 @@ class App
* *
* @internal * @internal
* @param mixed $input * @param mixed $input
* @return Kirby\Http\Response * @return \Kirby\Http\Response
*/ */
public function io($input) public function io($input)
{ {
@@ -652,6 +657,7 @@ class App
* @internal * @internal
* @param string $text * @param string $text
* @param array $data * @param array $data
* @param bool $inline
* @return string * @return string
*/ */
public function kirbytext(string $text = null, array $data = [], bool $inline = false): string public function kirbytext(string $text = null, array $data = [], bool $inline = false): string
@@ -673,7 +679,7 @@ class App
* Returns the current language * Returns the current language
* *
* @param string|null $code * @param string|null $code
* @return Kirby\Cms\Language|null * @return \Kirby\Cms\Language|null
*/ */
public function language(string $code = null) public function language(string $code = null)
{ {
@@ -696,6 +702,7 @@ class App
* Returns the current language code * Returns the current language code
* *
* @internal * @internal
* @param string|null $languageCode
* @return string|null * @return string|null
*/ */
public function languageCode(string $languageCode = null): ?string public function languageCode(string $languageCode = null): ?string
@@ -710,7 +717,7 @@ class App
/** /**
* Returns all available site languages * Returns all available site languages
* *
* @return Kirby\Cms\Languages * @return \Kirby\Cms\Languages
*/ */
public function languages() public function languages()
{ {
@@ -724,7 +731,7 @@ class App
/** /**
* Returns the app's locks object * Returns the app's locks object
* *
* @return Kirby\Cms\ContentLocks * @return \Kirby\Cms\ContentLocks
*/ */
public function locks(): ContentLocks public function locks(): ContentLocks
{ {
@@ -732,7 +739,7 @@ class App
return $this->locks; return $this->locks;
} }
return $this->locks = new ContentLocks; return $this->locks = new ContentLocks();
} }
/** /**
@@ -787,6 +794,7 @@ class App
/** /**
* Inject options from Kirby instance props * Inject options from Kirby instance props
* *
* @param array $options
* @return array * @return array
*/ */
protected function optionsFromProps(array $options = []): array protected function optionsFromProps(array $options = []): array
@@ -819,9 +827,9 @@ class App
* Returns any page from the content folder * Returns any page from the content folder
* *
* @param string $id * @param string $id
* @param Kirby\Cms\Page|Kirby\Cms\Site|null $parent * @param \Kirby\Cms\Page|\Kirby\Cms\Site|null $parent
* @param bool $drafts * @param bool $drafts
* @return Kirby\Cms\Page|null * @return \Kirby\Cms\Page|null
*/ */
public function page(string $id, $parent = null, bool $drafts = true) public function page(string $id, $parent = null, bool $drafts = true)
{ {
@@ -863,7 +871,9 @@ class App
* Returns the Response object for the * Returns the Response object for the
* current request * current request
* *
* @return Kirby\Http\Response * @param string|null $path
* @param string|null $method
* @return \Kirby\Http\Response
*/ */
public function render(string $path = null, string $method = null) public function render(string $path = null, string $method = null)
{ {
@@ -873,11 +883,11 @@ class App
/** /**
* Returns the Request singleton * Returns the Request singleton
* *
* @return Kirby\Http\Request * @return \Kirby\Http\Request
*/ */
public function request() public function request()
{ {
return $this->request = $this->request ?? new Request; return $this->request = $this->request ?? new Request();
} }
/** /**
@@ -954,17 +964,17 @@ class App
/** /**
* Response configuration * Response configuration
* *
* @return Kirby\Cms\Responder * @return \Kirby\Cms\Responder
*/ */
public function response() public function response()
{ {
return $this->response = $this->response ?? new Responder; return $this->response = $this->response ?? new Responder();
} }
/** /**
* Returns all user roles * Returns all user roles
* *
* @return Kirby\Cms\Roles * @return \Kirby\Cms\Roles
*/ */
public function roles() public function roles()
{ {
@@ -985,7 +995,7 @@ class App
/** /**
* Returns the directory structure * Returns the directory structure
* *
* @return Kirby\Cms\Ingredients * @return \Kirby\Cms\Ingredients
*/ */
public function roots() public function roots()
{ {
@@ -995,7 +1005,7 @@ class App
/** /**
* Returns the currently active route * Returns the currently active route
* *
* @return Kirby\Http\Route|null * @return \Kirby\Http\Route|null
*/ */
public function route() public function route()
{ {
@@ -1006,7 +1016,7 @@ class App
* Returns the Router singleton * Returns the Router singleton
* *
* @internal * @internal
* @return Kirby\Http\Router * @return \Kirby\Http\Router
*/ */
public function router() public function router()
{ {
@@ -1046,7 +1056,7 @@ class App
* Returns the current session object * Returns the current session object
* *
* @param array $options Additional options, see the session component * @param array $options Additional options, see the session component
* @return Kirby\Session\Session * @return \Kirby\Session\Session
*/ */
public function session(array $options = []) public function session(array $options = [])
{ {
@@ -1123,7 +1133,7 @@ class App
/** /**
* Sets a custom Site object * Sets a custom Site object
* *
* @param Kirby\Cms\Site|array $site * @param \Kirby\Cms\Site|array $site
* @return self * @return self
*/ */
protected function setSite($site = null) protected function setSite($site = null)
@@ -1141,17 +1151,17 @@ class App
/** /**
* Returns the Server object * Returns the Server object
* *
* @return Kirby\Http\Server * @return \Kirby\Http\Server
*/ */
public function server() public function server()
{ {
return $this->server = $this->server ?? new Server; return $this->server = $this->server ?? new Server();
} }
/** /**
* Initializes and returns the Site object * Initializes and returns the Site object
* *
* @return Kirby\Cms\Site * @return \Kirby\Cms\Site
*/ */
public function site() public function site()
{ {
@@ -1186,7 +1196,9 @@ class App
* and return a template snippet * and return a template snippet
* *
* @internal * @internal
* @return string * @param mixed $name
* @param array $data
* @return string|null
*/ */
public function snippet($name, array $data = []): ?string public function snippet($name, array $data = []): ?string
{ {
@@ -1196,7 +1208,7 @@ class App
/** /**
* System check class * System check class
* *
* @return Kirby\Cms\System * @return \Kirby\Cms\System
*/ */
public function system() public function system()
{ {
@@ -1208,7 +1220,10 @@ class App
* and return the Template object * and return the Template object
* *
* @internal * @internal
* @return Kirby\Cms\Template * @return \Kirby\Cms\Template
* @param string $name
* @param string $type
* @param string $defaultType
*/ */
public function template(string $name, string $type = 'html', string $defaultType = 'html') public function template(string $name, string $type = 'html', string $defaultType = 'html')
{ {
@@ -1277,7 +1292,7 @@ class App
/** /**
* Returns the url structure * Returns the url structure
* *
* @return Kirby\Cms\Ingredients * @return \Kirby\Cms\Ingredients
*/ */
public function urls() public function urls()
{ {
@@ -1308,7 +1323,7 @@ class App
/** /**
* Returns the visitor object * Returns the visitor object
* *
* @return Kirby\Cms\Visitor * @return \Kirby\Cms\Visitor
*/ */
public function visitor() public function visitor()
{ {

View File

@@ -23,7 +23,7 @@ trait AppCaches
* Returns a cache instance by key * Returns a cache instance by key
* *
* @param string $key * @param string $key
* @return Kirby\Cache\Cache * @return \Kirby\Cache\Cache
*/ */
public function cache(string $key) public function cache(string $key)
{ {
@@ -36,7 +36,7 @@ trait AppCaches
if ($options['active'] === false) { if ($options['active'] === false) {
// use a dummy cache that does nothing // use a dummy cache that does nothing
return $this->caches[$key] = new NullCache; return $this->caches[$key] = new NullCache();
} }
$type = strtolower($options['type']); $type = strtolower($options['type']);
@@ -55,7 +55,7 @@ trait AppCaches
$cache = new $className($options); $cache = new $className($options);
// check if it is a useable cache object // check if it is a useable cache object
if (is_a($cache, Cache::class) !== true) { if (is_a($cache, 'Kirby\Cache\Cache') !== true) {
throw new InvalidArgumentException([ throw new InvalidArgumentException([
'key' => 'app.invalid.cacheType', 'key' => 'app.invalid.cacheType',
'data' => ['type' => $type] 'data' => ['type' => $type]

View File

@@ -3,11 +3,11 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Http\Response; use Kirby\Http\Response;
use Whoops\Run as Whoops;
use Whoops\Handler\Handler;
use Whoops\Handler\PrettyPageHandler;
use Whoops\Handler\PlainTextHandler;
use Whoops\Handler\CallbackHandler; use Whoops\Handler\CallbackHandler;
use Whoops\Handler\Handler;
use Whoops\Handler\PlainTextHandler;
use Whoops\Handler\PrettyPageHandler;
use Whoops\Run as Whoops;
/** /**
* AppErrors * AppErrors
@@ -22,8 +22,8 @@ trait AppErrors
{ {
protected function handleCliErrors(): void protected function handleCliErrors(): void
{ {
$whoops = new Whoops; $whoops = new Whoops();
$whoops->pushHandler(new PlainTextHandler); $whoops->pushHandler(new PlainTextHandler());
$whoops->register(); $whoops->register();
} }
@@ -45,11 +45,11 @@ trait AppErrors
protected function handleHtmlErrors() protected function handleHtmlErrors()
{ {
$whoops = new Whoops; $whoops = new Whoops();
if ($this->option('debug') === true) { if ($this->option('debug') === true) {
if ($this->option('whoops', true) === true) { if ($this->option('whoops', true) === true) {
$handler = new PrettyPageHandler; $handler = new PrettyPageHandler();
$handler->setPageTitle('Kirby CMS Debugger'); $handler->setPageTitle('Kirby CMS Debugger');
if ($editor = $this->option('editor')) { if ($editor = $this->option('editor')) {
@@ -79,7 +79,7 @@ trait AppErrors
protected function handleJsonErrors() protected function handleJsonErrors()
{ {
$whoops = new Whoops; $whoops = new Whoops();
$handler = new CallbackHandler(function ($exception, $inspector, $run) { $handler = new CallbackHandler(function ($exception, $inspector, $run) {
if (is_a($exception, 'Kirby\Exception\Exception') === true) { if (is_a($exception, 'Kirby\Exception\Exception') === true) {
$httpCode = $exception->getHttpCode(); $httpCode = $exception->getHttpCode();

View File

@@ -23,7 +23,6 @@ use Kirby\Toolkit\V;
*/ */
trait AppPlugins trait AppPlugins
{ {
/** /**
* A list of all registered plugins * A list of all registered plugins
* *
@@ -83,7 +82,7 @@ trait AppPlugins
* *
* @internal * @internal
* @param array $extensions * @param array $extensions
* @param Kirby\Cms\Plugin $plugin The plugin which defined those extensions * @param \Kirby\Cms\Plugin $plugin The plugin which defined those extensions
* @return array * @return array
*/ */
public function extend(array $extensions, Plugin $plugin = null): array public function extend(array $extensions, Plugin $plugin = null): array
@@ -106,7 +105,7 @@ trait AppPlugins
protected function extendApi($api): array protected function extendApi($api): array
{ {
if (is_array($api) === true) { if (is_array($api) === true) {
if (is_a($api['routes'] ?? [], Closure::class) === true) { if (is_a($api['routes'] ?? [], 'Closure') === true) {
$api['routes'] = $api['routes']($this); $api['routes'] = $api['routes']($this);
} }
@@ -254,7 +253,7 @@ trait AppPlugins
/** /**
* Registers markdown component * Registers markdown component
* *
* @param Closure $blueprints * @param Closure $markdown
* @return Closure * @return Closure
*/ */
protected function extendMarkdown(Closure $markdown) protected function extendMarkdown(Closure $markdown)
@@ -266,7 +265,7 @@ trait AppPlugins
* Registers additional options * Registers additional options
* *
* @param array $options * @param array $options
* @param Kirby\Cms\Plugin|null $plugin * @param \Kirby\Cms\Plugin|null $plugin
* @return array * @return array
*/ */
protected function extendOptions(array $options, Plugin $plugin = null): array protected function extendOptions(array $options, Plugin $plugin = null): array
@@ -336,7 +335,7 @@ trait AppPlugins
*/ */
protected function extendRoutes($routes): array protected function extendRoutes($routes): array
{ {
if (is_a($routes, Closure::class) === true) { if (is_a($routes, 'Closure') === true) {
$routes = $routes($this); $routes = $routes($this);
} }
@@ -480,7 +479,7 @@ trait AppPlugins
/** /**
* Returns the extensions registry * Returns the extensions registry
*
* @internal * @internal
* @param string|null $type * @param string|null $type
* @return array * @return array
@@ -556,6 +555,7 @@ trait AppPlugins
/** /**
* Apply all passed extensions * Apply all passed extensions
* *
* @param array $props
* @return void * @return void
*/ */
protected function extensionsFromProps(array $props) protected function extensionsFromProps(array $props)
@@ -643,7 +643,7 @@ trait AppPlugins
* *
* @param string $name * @param string $name
* @param array|null $extends If null is passed it will be used as getter. Otherwise as factory. * @param array|null $extends If null is passed it will be used as getter. Otherwise as factory.
* @return Kirby\Cms\Plugin|null * @return \Kirby\Cms\Plugin|null
*/ */
public static function plugin(string $name, array $extends = null) public static function plugin(string $name, array $extends = null)
{ {

View File

@@ -85,7 +85,7 @@ trait AppTranslations
* *
* @internal * @internal
* @param string $languageCode * @param string $languageCode
* @return Kirby\Cms\Language|null * @return \Kirby\Cms\Language|null
*/ */
public function setCurrentLanguage(string $languageCode = null) public function setCurrentLanguage(string $languageCode = null)
{ {
@@ -140,7 +140,7 @@ trait AppTranslations
* Load a specific translation by locale * Load a specific translation by locale
* *
* @param string|null $locale * @param string|null $locale
* @return Kirby\Cms\Translation|null * @return \Kirby\Cms\Translation|null
*/ */
public function translation(string $locale = null) public function translation(string $locale = null)
{ {
@@ -164,7 +164,7 @@ trait AppTranslations
/** /**
* Returns all available translations * Returns all available translations
* *
* @return Kirby\Cms\Translations * @return \Kirby\Cms\Translations
*/ */
public function translations() public function translations()
{ {

View File

@@ -15,7 +15,6 @@ use Throwable;
*/ */
trait AppUsers trait AppUsers
{ {
/** /**
* Cache for the auth auth layer * Cache for the auth auth layer
* *
@@ -27,7 +26,7 @@ trait AppUsers
* Returns the Authentication layer class * Returns the Authentication layer class
* *
* @internal * @internal
* @return Kirby\Cms\Auth * @return \Kirby\Cms\Auth
*/ */
public function auth() public function auth()
{ {
@@ -38,7 +37,7 @@ trait AppUsers
* Become any existing user * Become any existing user
* *
* @param string|null $who * @param string|null $who
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function impersonate(string $who = null) public function impersonate(string $who = null)
{ {
@@ -48,8 +47,8 @@ trait AppUsers
/** /**
* Set the currently active user id * Set the currently active user id
* *
* @param Kirby\Cms\User|string $user * @param \Kirby\Cms\User|string $user
* @return Kirby\Cms\App * @return \Kirby\Cms\App
*/ */
protected function setUser($user = null) protected function setUser($user = null)
{ {
@@ -61,7 +60,7 @@ trait AppUsers
* Create your own set of app users * Create your own set of app users
* *
* @param array $users * @param array $users
* @return Kirby\Cms\App * @return \Kirby\Cms\App
*/ */
protected function setUsers(array $users = null) protected function setUsers(array $users = null)
{ {
@@ -79,7 +78,7 @@ trait AppUsers
* or the current user if no id is given * or the current user if no id is given
* *
* @param string $id * @param string $id
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function user(string $id = null) public function user(string $id = null)
{ {
@@ -101,7 +100,7 @@ trait AppUsers
/** /**
* Returns all users * Returns all users
* *
* @return Kirby\Cms\Users * @return \Kirby\Cms\Users
*/ */
public function users() public function users()
{ {

View File

@@ -31,6 +31,8 @@ class Asset
/** /**
* Creates a new Asset object * Creates a new Asset object
* for the given path. * for the given path.
*
* @param string $path
*/ */
public function __construct(string $path) public function __construct(string $path)
{ {

View File

@@ -3,9 +3,9 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Data\Data; use Kirby\Data\Data;
use Kirby\Exception\PermissionException;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Exception\PermissionException;
use Kirby\Http\Request\Auth\BasicAuth; use Kirby\Http\Request\Auth\BasicAuth;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Throwable; use Throwable;
@@ -27,7 +27,7 @@ class Auth
protected $userException; protected $userException;
/** /**
* @param Kirby\Cms\App $kirby * @param \Kirby\Cms\App $kirby
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
public function __construct(App $kirby) public function __construct(App $kirby)
@@ -61,8 +61,8 @@ class Auth
* for a basic authentication header with * for a basic authentication header with
* valid credentials * valid credentials
* *
* @param Kirby\Http\Request\Auth\BasicAuth|null $auth * @param \Kirby\Http\Request\Auth\BasicAuth|null $auth
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function currentUserFromBasicAuth(BasicAuth $auth = null) public function currentUserFromBasicAuth(BasicAuth $auth = null)
{ {
@@ -90,8 +90,8 @@ class Auth
* the current session and finding a valid * the current session and finding a valid
* valid user id in there * valid user id in there
* *
* @param Kirby\Cms\Session|array|null $session * @param \Kirby\Session\Session|array|null $session
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function currentUserFromSession($session = null) public function currentUserFromSession($session = null)
{ {
@@ -125,7 +125,7 @@ class Auth
* Become any existing user * Become any existing user
* *
* @param string|null $who * @param string|null $who
* @return Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function impersonate(string $who = null) public function impersonate(string $who = null)
{ {
@@ -196,7 +196,7 @@ class Auth
* @param string $email * @param string $email
* @param string $password * @param string $password
* @param boolean $long * @param boolean $long
* @return Kirby\Cms\User * @return \Kirby\Cms\User
* *
* @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off * @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws NotFoundException If the email was invalid * @throws NotFoundException If the email was invalid
@@ -226,7 +226,7 @@ class Auth
* *
* @param string $email * @param string $email
* @param string $password * @param string $password
* @return Kirby\Cms\User * @return \Kirby\Cms\User
* *
* @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off * @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws NotFoundException If the email was invalid * @throws NotFoundException If the email was invalid
@@ -413,8 +413,8 @@ class Auth
/** /**
* Validates the currently logged in user * Validates the currently logged in user
* *
* @param Kirby\Session\Session|array|null $session * @param \Kirby\Session\Session|array|null $session
* @return Kirby\Cms\User * @return \Kirby\Cms\User
* @throws * @throws
*/ */
public function user($session = null) public function user($session = null)

View File

@@ -3,9 +3,9 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Exception; use Exception;
use Kirby\Data\Data;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Data\Data;
use Kirby\Form\Field; use Kirby\Form\Field;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
@@ -90,7 +90,7 @@ class Blueprint
* *
* @return array * @return array
*/ */
public function __debuginfo(): array public function __debugInfo(): array
{ {
return $this->props ?? []; return $this->props ?? [];
} }
@@ -222,7 +222,7 @@ class Blueprint
* *
* @param string $name * @param string $name
* @param string $fallback * @param string $fallback
* @param Kirby\Cms\Model $model * @param \Kirby\Cms\Model $model
* @return self * @return self
*/ */
public static function factory(string $name, string $fallback = null, Model $model) public static function factory(string $name, string $fallback = null, Model $model)
@@ -352,7 +352,7 @@ class Blueprint
/** /**
* Returns the parent model * Returns the parent model
* *
* @return Kirby\Cms\Model * @return \Kirby\Cms\Model
*/ */
public function model() public function model()
{ {
@@ -603,7 +603,14 @@ class Blueprint
'type' => $type = $sectionProps['type'] ?? null 'type' => $type = $sectionProps['type'] ?? null
]); ]);
if (isset(Section::$types[$type]) === false) { if (empty($type) === true || is_string($type) === false) {
$sections[$sectionName] = [
'name' => $sectionName,
'headline' => 'Invalid section type for section "' . $sectionName . '"',
'type' => 'info',
'text' => 'The following section types are available: ' . $this->helpList(array_keys(Section::$types))
];
} elseif (isset(Section::$types[$type]) === false) {
$sections[$sectionName] = [ $sections[$sectionName] = [
'name' => $sectionName, 'name' => $sectionName,
'headline' => 'Invalid section type ("' . $type . '")', 'headline' => 'Invalid section type ("' . $type . '")',
@@ -712,7 +719,7 @@ class Blueprint
* Returns a single section by name * Returns a single section by name
* *
* @param string $name * @param string $name
* @return Kirby\Cms\Section|null * @return \Kirby\Cms\Section|null
*/ */
public function section(string $name) public function section(string $name)
{ {

View File

@@ -101,23 +101,22 @@ class Collection extends BaseCollection
/** /**
* Appends an element to the data array * Appends an element to the data array
* *
* @param mixed $key * @param mixed $key Optional collection key, will be determined from the item if not given
* @param mixed $item * @param mixed $item
* @return Kirby\Cms\Collection * @return \Kirby\Cms\Collection
*/ */
public function append(...$args) public function append(...$args)
{ {
if (count($args) === 1) { if (count($args) === 1) {
if (is_object($args[0]) === true) { // try to determine the key from the provided item
$this->data[$args[0]->id()] = $args[0]; if (is_object($args[0]) === true && is_callable([$args[0], 'id']) === true) {
return parent::append($args[0]->id(), $args[0]);
} else { } else {
$this->data[] = $args[0]; return parent::append($args[0]);
} }
} elseif (count($args) === 2) {
$this->set($args[0], $args[1]);
} }
return $this; return parent::append(...$args);
} }
/** /**
@@ -126,7 +125,7 @@ class Collection extends BaseCollection
* *
* @param string $field * @param string $field
* @param bool $i Ignore upper/lowercase for group names * @param bool $i Ignore upper/lowercase for group names
* @return Kirby\Cms\Collection * @return \Kirby\Cms\Collection
*/ */
public function groupBy($field, bool $i = true) public function groupBy($field, bool $i = true)
{ {
@@ -165,7 +164,7 @@ class Collection extends BaseCollection
* Checks if the given object or id * Checks if the given object or id
* is in the collection * is in the collection
* *
* @param string|object * @param string|object $id
* @return boolean * @return boolean
*/ */
public function has($id): bool public function has($id): bool
@@ -197,8 +196,8 @@ class Collection extends BaseCollection
/** /**
* Returns a Collection without the given element(s) * Returns a Collection without the given element(s)
* *
* @param mixed[] $keys any number of keys, passed as individual arguments * @param mixed ...$keys any number of keys, passed as individual arguments
* @return Kirby\Cms\Collection * @return \Kirby\Cms\Collection
*/ */
public function not(...$keys) public function not(...$keys)
{ {
@@ -217,7 +216,8 @@ class Collection extends BaseCollection
/** /**
* Add pagination and return a sliced set of data. * Add pagination and return a sliced set of data.
* *
* @return Kirby\Cms\Collection * @param mixed ...$arguments
* @return \Kirby\Cms\Collection
*/ */
public function paginate(...$arguments) public function paginate(...$arguments)
{ {
@@ -230,13 +230,34 @@ class Collection extends BaseCollection
/** /**
* Returns the parent model * Returns the parent model
* *
* @return Kirby\Cms\Model * @return \Kirby\Cms\Model
*/ */
public function parent() public function parent()
{ {
return $this->parent; return $this->parent;
} }
/**
* Prepends an element to the data array
*
* @param mixed $key Optional collection key, will be determined from the item if not given
* @param mixed $item
* @return Kirby\Cms\Collection
*/
public function prepend(...$args)
{
if (count($args) === 1) {
// try to determine the key from the provided item
if (is_object($args[0]) === true && is_callable([$args[0], 'id']) === true) {
return parent::prepend($args[0]->id(), $args[0]);
} else {
return parent::prepend($args[0]);
}
}
return parent::prepend(...$args);
}
/** /**
* Runs a combination of filterBy, sortBy, not * Runs a combination of filterBy, sortBy, not
* offset, limit, search and paginate on the collection. * offset, limit, search and paginate on the collection.

View File

@@ -21,7 +21,6 @@ use Kirby\Toolkit\Controller;
*/ */
class Collections class Collections
{ {
/** /**
* Each collection is cached once it * Each collection is cached once it
* has been called, to avoid further * has been called, to avoid further
@@ -45,7 +44,7 @@ class Collections
* *
* @param string $name * @param string $name
* @param array $arguments * @param array $arguments
* @return Kirby\Cms\Collection|null * @return \Kirby\Cms\Collection|null
*/ */
public function __call(string $name, array $arguments = []) public function __call(string $name, array $arguments = [])
{ {
@@ -57,7 +56,7 @@ class Collections
* *
* @param string $name * @param string $name
* @param array $data * @param array $data
* @return Kirby\Cms\Collection|null * @return \Kirby\Cms\Collection|null
*/ */
public function get(string $name, array $data = []) public function get(string $name, array $data = [])
{ {

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