updated core to 1.7.15

This commit is contained in:
Bachir Soussi Chiadmi 2021-05-27 18:17:50 +02:00
parent dc1fdf21c9
commit 19ecb285ab
552 changed files with 80743 additions and 16675 deletions

8
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,8 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: grav
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: # Replace with a single custom sponsorship URL

44
.phan/config.php Normal file
View File

@ -0,0 +1,44 @@
<?php
return [
"target_php_version" => null,
'pretend_newer_core_functions_exist' => true,
'allow_missing_properties' => false,
'null_casts_as_any_type' => false,
'null_casts_as_array' => false,
'array_casts_as_null' => false,
'strict_method_checking' => true,
'quick_mode' => false,
'simplify_ast' => false,
'directory_list' => [
'.',
],
"exclude_analysis_directory_list" => [
'vendor/'
],
'exclude_file_list' => [
'system/src/Grav/Common/Errors/Resources/layout.html.php',
'tests/_support/AcceptanceTester.php',
'tests/_support/FunctionalTester.php',
'tests/_support/UnitTester.php',
],
'autoload_internal_extension_signatures' => [
'memcached' => '.phan/internal_stubs/memcached.phan_php',
'memcache' => '.phan/internal_stubs/memcache.phan_php',
'redis' => '.phan/internal_stubs/Redis.phan_php',
],
'plugins' => [
'AlwaysReturnPlugin',
'UnreachableCodePlugin',
'DuplicateArrayKeyPlugin',
'PregRegexCheckerPlugin',
'PrintfCheckerPlugin',
],
'suppress_issue_types' => [
'PhanUnreferencedUseNormal',
'PhanTypeObjectUnsetDeclaredProperty',
'PhanTraitParentReference',
'PhanTypeInvalidThrowsIsInterface',
'PhanRequiredTraitNotAdded',
'PhanDeprecatedFunction', // Uncomment this to see all the deprecated calls
]
];

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,460 @@
<?php
// Start of memcache v.3.0.8
class MemcachePool {
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Open memcached server connection
* @link https://php.net/manual/en/memcache.connect.php
* @param string $host <p>
* Point to the host where memcached is listening for connections. This parameter
* may also specify other transports like <em>unix:///path/to/memcached.sock</em>
* to use UNIX domain sockets, in this case <b>port</b> must also
* be set to <em>0</em>.
* </p>
* @param int $port [optional] <p>
* Point to the port where memcached is listening for connections. Set this
* parameter to <em>0</em> when using UNIX domain sockets.
* </p>
* <p>
* Please note: <b>port</b> defaults to
* {@link https://php.net/manual/ru/memcache.ini.php#ini.memcache.default-port memcache.default_port}
* if not specified. For this reason it is wise to specify the port
* explicitly in this method call.
* </p>
* @param int $timeout [optional] <p>Value in seconds which will be used for connecting to the daemon. Think twice before changing the default value of 1 second - you can lose all the advantages of caching if your connection is too slow.</p>
* @return bool <p>Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.</p>
*/
public function connect ($host, $port, $timeout = 1) {}
/**
* (PECL memcache &gt;= 2.0.0)<br/>
* Add a memcached server to connection pool
* @link https://php.net/manual/en/memcache.addserver.php
* @param string $host <p>
* Point to the host where memcached is listening for connections. This parameter
* may also specify other transports like unix:///path/to/memcached.sock
* to use UNIX domain sockets, in this case <i>port</i> must also
* be set to 0.
* </p>
* @param int $port [optional] <p>
* Point to the port where memcached is listening for connections.
* Set this
* parameter to 0 when using UNIX domain sockets.
* </p>
* <p>
* Please note: <i>port</i> defaults to
* memcache.default_port
* if not specified. For this reason it is wise to specify the port
* explicitly in this method call.
* </p>
* @param bool $persistent [optional] <p>
* Controls the use of a persistent connection. Default to <b>TRUE</b>.
* </p>
* @param int $weight [optional] <p>
* Number of buckets to create for this server which in turn control its
* probability of it being selected. The probability is relative to the
* total weight of all servers.
* </p>
* @param int $timeout [optional] <p>
* Value in seconds which will be used for connecting to the daemon. Think
* twice before changing the default value of 1 second - you can lose all
* the advantages of caching if your connection is too slow.
* </p>
* @param int $retry_interval [optional] <p>
* Controls how often a failed server will be retried, the default value
* is 15 seconds. Setting this parameter to -1 disables automatic retry.
* Neither this nor the <i>persistent</i> parameter has any
* effect when the extension is loaded dynamically via <b>dl</b>.
* </p>
* <p>
* Each failed connection struct has its own timeout and before it has expired
* the struct will be skipped when selecting backends to serve a request. Once
* expired the connection will be successfully reconnected or marked as failed
* for another <i>retry_interval</i> seconds. The typical
* effect is that each web server child will retry the connection about every
* <i>retry_interval</i> seconds when serving a page.
* </p>
* @param bool $status [optional] <p>
* Controls if the server should be flagged as online. Setting this parameter
* to <b>FALSE</b> and <i>retry_interval</i> to -1 allows a failed
* server to be kept in the pool so as not to affect the key distribution
* algorithm. Requests for this server will then failover or fail immediately
* depending on the <i>memcache.allow_failover</i> setting.
* Default to <b>TRUE</b>, meaning the server should be considered online.
* </p>
* @param callable $failure_callback [optional] <p>
* Allows the user to specify a callback function to run upon encountering an
* error. The callback is run before failover is attempted. The function takes
* two parameters, the hostname and port of the failed server.
* </p>
* @param int $timeoutms [optional] <p>
* </p>
* @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
public function addServer ($host, $port = 11211, $persistent = true, $weight = null, $timeout = 1, $retry_interval = 15, $status = true, callable $failure_callback = null, $timeoutms = null) {}
/**
* (PECL memcache &gt;= 2.1.0)<br/>
* Changes server parameters and status at runtime
* @link https://secure.php.net/manual/en/memcache.setserverparams.php
* @param string $host <p>Point to the host where memcached is listening for connections.</p.
* @param int $port [optional] <p>
* Point to the port where memcached is listening for connections.
* </p>
* @param int $timeout [optional] <p>
* Value in seconds which will be used for connecting to the daemon. Think twice before changing the default value of 1 second - you can lose all the advantages of caching if your connection is too slow.
* </p>
* @param int $retry_interval [optional] <p>
* Controls how often a failed server will be retried, the default value
* is 15 seconds. Setting this parameter to -1 disables automatic retry.
* Neither this nor the <b>persistent</b> parameter has any
* effect when the extension is loaded dynamically via {@link https://secure.php.net/manual/en/function.dl.php dl()}.
* </p>
* @param bool $status [optional] <p>
* Controls if the server should be flagged as online. Setting this parameter
* to <b>FALSE</b> and <b>retry_interval</b> to -1 allows a failed
* server to be kept in the pool so as not to affect the key distribution
* algorithm. Requests for this server will then failover or fail immediately
* depending on the <b>memcache.allow_failover</b> setting.
* Default to <b>TRUE</b>, meaning the server should be considered online.
* </p>
* @param callable $failure_callback [optional] <p>
* Allows the user to specify a callback function to run upon encountering an error. The callback is run before failover is attempted.
* The function takes two parameters, the hostname and port of the failed server.
* </p>
* @return bool <p>Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.</p>
*/
public function setServerParams ($host, $port = 11211, $timeout = 1, $retry_interval = 15, $status = true, callable $failure_callback = null) {}
/**
*
*/
public function setFailureCallback () {}
/**
* (PECL memcache &gt;= 2.1.0)<br/>
* Returns server status
* @link https://php.net/manual/en/memcache.getserverstatus.php
* @param string $host Point to the host where memcached is listening for connections.
* @param int $port Point to the port where memcached is listening for connections.
* @return int Returns a the servers status. 0 if server is failed, non-zero otherwise
*/
public function getServerStatus ($host, $port = 11211) {}
/**
*
*/
public function findServer () {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Return version of the server
* @link https://php.net/manual/en/memcache.getversion.php
* @return string|false Returns a string of server version number or <b>FALSE</b> on failure.
*/
public function getVersion () {}
/**
* (PECL memcache &gt;= 2.0.0)<br/>
* Add an item to the server. If the key already exists, the value will not be added and <b>FALSE</b> will be returned.
* @link https://php.net/manual/en/memcache.add.php
* @param string $key The key that will be associated with the item.
* @param mixed $var The variable to store. Strings and integers are stored as is, other types are stored serialized.
* @param int $flag [optional] <p>
* Use <b>MEMCACHE_COMPRESSED</b> to store the item
* compressed (uses zlib).
* </p>
* @param int $expire [optional] <p>Expiration time of the item.
* If it's equal to zero, the item will never expire.
* You can also use Unix timestamp or a number of seconds starting from current time, but in the latter case the number of seconds may not exceed 2592000 (30 days).</p>
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure. Returns <b>FALSE</b> if such key already exist. For the rest Memcache::add() behaves similarly to Memcache::set().
*/
public function add ($key , $var, $flag = null, $expire = null) {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Stores an item var with key on the memcached server. Parameter expire is expiration time in seconds.
* If it's 0, the item never expires (but memcached server doesn't guarantee this item to be stored all the time,
* it could be deleted from the cache to make place for other items).
* You can use MEMCACHE_COMPRESSED constant as flag value if you want to use on-the-fly compression (uses zlib).
* @link https://php.net/manual/en/memcache.set.php
* @param string $key The key that will be associated with the item.
* @param mixed $var The variable to store. Strings and integers are stored as is, other types are stored serialized.
* @param int $flag [optional] Use MEMCACHE_COMPRESSED to store the item compressed (uses zlib).
* @param int $expire [optional] Expiration time of the item. If it's equal to zero, the item will never expire. You can also use Unix timestamp or a number of seconds starting from current time, but in the latter case the number of seconds may not exceed 2592000 (30 days).
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
public function set ($key, $var, $flag = null, $expire = null) {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Replace value of the existing item
* @link https://php.net/manual/en/memcache.replace.php
* @param string $key <p>The key that will be associated with the item.</p>
* @param mixed $var <p>The variable to store. Strings and integers are stored as is, other types are stored serialized.</p>
* @param int $flag [optional] <p>Use <b>MEMCACHE_COMPRESSED</b> to store the item compressed (uses zlib).</p>
* @param int $expire [optional] <p>Expiration time of the item. If it's equal to zero, the item will never expire. You can also use Unix timestamp or a number of seconds starting from current time, but in the latter case the number of seconds may not exceed 2592000 (30 days).</p>
* @return bool Returns TRUE on success or FALSE on failure.
*/
public function replace ($key, $var, $flag = null, $expire = null) {}
public function cas () {}
public function append () {}
/**
* @return string
*/
public function prepend () {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Retrieve item from the server
* @link https://php.net/manual/en/memcache.get.php
* @param string|array $key <p>
* The key or array of keys to fetch.
* </p>
* @param int|array $flags [optional] <p>
* If present, flags fetched along with the values will be written to this parameter. These
* flags are the same as the ones given to for example {@link https://php.net/manual/en/memcache.set.php Memcache::set()}.
* The lowest byte of the int is reserved for pecl/memcache internal usage (e.g. to indicate
* compression and serialization status).
* </p>
* @return string|array|false <p>
* Returns the string associated with the <b>key</b> or
* an array of found key-value pairs when <b>key</b> is an {@link https://php.net/manual/en/language.types.array.php array}.
* Returns <b>FALSE</b> on failure, <b>key</b> is not found or
* <b>key</b> is an empty {@link https://php.net/manual/en/language.types.array.php array}.
* </p>
*/
public function get ($key, &$flags = null) {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Delete item from the server
* https://secure.php.net/manual/ru/memcache.delete.php
* @param $key string The key associated with the item to delete.
* @param $timeout int [optional] This deprecated parameter is not supported, and defaults to 0 seconds. Do not use this parameter.
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
public function delete ($key, $timeout = 0 ) {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Get statistics of the server
* @link https://php.net/manual/ru/memcache.getstats.php
* @param string $type [optional] <p>
* The type of statistics to fetch.
* Valid values are {reset, malloc, maps, cachedump, slabs, items, sizes}.
* According to the memcached protocol spec these additional arguments "are subject to change for the convenience of memcache developers".</p>
* @param int $slabid [optional] <p>
* Used in conjunction with <b>type</b> set to
* cachedump to identify the slab to dump from. The cachedump
* command ties up the server and is strictly to be used for
* debugging purposes.
* </p>
* @param int $limit [optional] <p>
* Used in conjunction with <b>type</b> set to cachedump to limit the number of entries to dump.
* </p>
* @return array|false Returns an associative array of server statistics or <b>FALSE</b> on failure.
*/
public function getStats ($type = null, $slabid = null, $limit = 100) {}
/**
* (PECL memcache &gt;= 2.0.0)<br/>
* Get statistics from all servers in pool
* @link https://php.net/manual/en/memcache.getextendedstats.php
* @param string $type [optional] <p>The type of statistics to fetch. Valid values are {reset, malloc, maps, cachedump, slabs, items, sizes}. According to the memcached protocol spec these additional arguments "are subject to change for the convenience of memcache developers".</p>
* @param int $slabid [optional] <p>
* Used in conjunction with <b>type</b> set to
* cachedump to identify the slab to dump from. The cachedump
* command ties up the server and is strictly to be used for
* debugging purposes.
* </p>
* @param int $limit Used in conjunction with type set to cachedump to limit the number of entries to dump.
* @return array|false Returns a two-dimensional associative array of server statistics or <b>FALSE</b>
* Returns a two-dimensional associative array of server statistics or <b>FALSE</b>
* on failure.
*/
public function getExtendedStats ($type = null, $slabid = null, $limit = 100) {}
/**
* (PECL memcache &gt;= 2.0.0)<br/>
* Enable automatic compression of large values
* @link https://php.net/manual/en/memcache.setcompressthreshold.php
* @param int $thresold <p>Controls the minimum value length before attempting to compress automatically.</p>
* @param float $min_saving [optional] <p>Specifies the minimum amount of savings to actually store the value compressed. The supplied value must be between 0 and 1. Default value is 0.2 giving a minimum 20% compression savings.</p>
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
public function setCompressThreshold ($thresold, $min_saving = 0.2) {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Increment item's value
* @link https://php.net/manual/en/memcache.increment.php
* @param $key string Key of the item to increment.
* @param $value int [optional] increment the item by <b>value</b>
* @return int|false Returns new items value on success or <b>FALSE</b> on failure.
*/
public function increment ($key, $value = 1) {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Decrement item's value
* @link https://php.net/manual/en/memcache.decrement.php
* @param $key string Key of the item do decrement.
* @param $value int Decrement the item by <b>value</b>.
* @return int|false Returns item's new value on success or <b>FALSE</b> on failure.
*/
public function decrement ($key, $value = 1) {}
/**
* (PECL memcache &gt;= 0.4.0)<br/>
* Close memcached server connection
* @link https://php.net/manual/en/memcache.close.php
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
public function close () {}
/**
* (PECL memcache &gt;= 1.0.0)<br/>
* Flush all existing items at the server
* @link https://php.net/manual/en/memcache.flush.php
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
public function flush () {}
}
/**
* Represents a connection to a set of memcache servers.
* @link https://php.net/manual/en/class.memcache.php
*/
class Memcache extends MemcachePool {
/**
* (PECL memcache &gt;= 0.4.0)<br/>
* Open memcached server persistent connection
* @link https://php.net/manual/en/memcache.pconnect.php
* @param string $host <p>
* Point to the host where memcached is listening for connections. This parameter
* may also specify other transports like unix:///path/to/memcached.sock
* to use UNIX domain sockets, in this case <i>port</i> must also
* be set to 0.
* </p>
* @param int $port [optional] <p>
* Point to the port where memcached is listening for connections. Set this
* parameter to 0 when using UNIX domain sockets.
* </p>
* @param int $timeout [optional] <p>
* Value in seconds which will be used for connecting to the daemon. Think
* twice before changing the default value of 1 second - you can lose all
* the advantages of caching if your connection is too slow.
* </p>
* @return mixed a Memcache object or <b>FALSE</b> on failure.
*/
public function pconnect ($host, $port, $timeout = 1) {}
}
// string $host [, int $port [, int $timeout ]]
/**
* (PECL memcache >= 0.2.0)</br>
* Memcache::connect — Open memcached server connection
* @link https://php.net/manual/en/memcache.connect.php
* @param string $host <p>
* Point to the host where memcached is listening for connections.
* This parameter may also specify other transports like
* unix:///path/to/memcached.sock to use UNIX domain sockets,
* in this case port must also be set to 0.
* </p>
* @param int $port [optional] <p>
* Point to the port where memcached is listening for connections.
* Set this parameter to 0 when using UNIX domain sockets.
* Note: port defaults to memcache.default_port if not specified.
* For this reason it is wise to specify the port explicitly in this method call.
* </p>
* @param int $timeout [optional] <p>
* Value in seconds which will be used for connecting to the daemon.
* </p>
* @return bool Returns <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
function memcache_connect ($host, $port, $timeout = 1) {}
/**
* (PECL memcache >= 0.4.0)
* Memcache::pconnect — Open memcached server persistent connection
*
* @link https://php.net/manual/en/memcache.pconnect.php#example-5242
* @param $host
* @param null $port
* @param int $timeout
* @return Memcache
*/
function memcache_pconnect ($host, $port=null, $timeout=1) {}
function memcache_add_server () {}
function memcache_set_server_params () {}
function memcache_set_failure_callback () {}
function memcache_get_server_status () {}
function memcache_get_version () {}
function memcache_add () {}
function memcache_set () {}
function memcache_replace () {}
function memcache_cas () {}
function memcache_append () {}
function memcache_prepend () {}
function memcache_get () {}
function memcache_delete () {}
/**
* (PECL memcache &gt;= 0.2.0)<br/>
* Turn debug output on/off
* @link https://php.net/manual/en/function.memcache-debug.php
* @param bool $on_off <p>
* Turns debug output on if equals to <b>TRUE</b>.
* Turns debug output off if equals to <b>FALSE</b>.
* </p>
* @return bool <b>TRUE</b> if PHP was built with --enable-debug option, otherwise
* returns <b>FALSE</b>.
*/
function memcache_debug ($on_off) {}
function memcache_get_stats () {}
function memcache_get_extended_stats () {}
function memcache_set_compress_threshold () {}
function memcache_increment () {}
function memcache_decrement () {}
function memcache_close () {}
function memcache_flush () {}
define ('MEMCACHE_COMPRESSED', 2);
define ('MEMCACHE_USER1', 65536);
define ('MEMCACHE_USER2', 131072);
define ('MEMCACHE_USER3', 262144);
define ('MEMCACHE_USER4', 524288);
define ('MEMCACHE_HAVE_SESSION', 1);
// End of memcache v.3.0.8
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,46 +1,133 @@
# Contributor Covenant Code of Conduct # Contributor Covenant Code of Conduct
## Our Pledge ## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards ## Our Standards
Examples of behavior that contributes to creating a positive environment include: Examples of behavior that contributes to a positive environment for our
community include:
* Using welcoming and inclusive language * Demonstrating empathy and kindness toward other people
* Being respectful of differing viewpoints and experiences * Being respectful of differing opinions, viewpoints, and experiences
* Gracefully accepting constructive criticism * Giving and gracefully accepting constructive feedback
* Focusing on what is best for the community * Accepting responsibility and apologizing to those affected by our mistakes,
* Showing empathy towards other community members and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior by participants include: Examples of unacceptable behavior include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances * The use of sexualized language or imagery, and sexual attention or
* Trolling, insulting/derogatory comments, and personal or political attacks advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment * Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission * Publishing others' private information, such as a physical or email
* Other conduct which could reasonably be considered inappropriate in a professional setting address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities ## Enforcement Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope ## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@getgrav.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution ## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
[homepage]: http://contributor-covenant.org Community Impact Guidelines were inspired by
[version]: http://contributor-covenant.org/version/1/4/ [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
at [https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@ -29,7 +29,7 @@ The issue tracker is the preferred channel for [bug reports](#bugs),
requests](#pull-requests), but please respect the following restrictions: requests](#pull-requests), but please respect the following restrictions:
* Please **do not** use the issue tracker for support requests. Use * Please **do not** use the issue tracker for support requests. Use
[the Forum](http://getgrav.org/forum) or [the Gitter chat](https://gitter.im/getgrav/grav). [the Forum](http://getgrav.org/forum) or [the Chat](https://chat.getgrav.org/).
<a name="bugs"></a> <a name="bugs"></a>
@ -110,7 +110,8 @@ Good pull requests - patches, improvements, new features - are a fantastic
help. They should remain focused in scope and avoid containing unrelated help. They should remain focused in scope and avoid containing unrelated
commits. commits.
**Please ask first** in [Slack](https://getgrav.org/slack) or in the Forum before embarking on any significant pull request (e.g. **Please ask first** in [the Forum](http://getgrav.org/forum) or [the Chat](https://chat.getgrav.org/)
before embarking on any significant pull request (e.g.
implementing features, refactoring code..), implementing features, refactoring code..),
otherwise you risk spending a lot of time working on something that the otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project. project's developers might not want to merge into the project.

View File

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2018 Grav Copyright (c) 2021 Grav
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,6 +1,9 @@
# ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav # ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad/mini.png)](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad) [![Discord](https://img.shields.io/discord/501836936584101899.svg?logo=discord&colorB=728ADA&label=Discord%20Chat)](https://chat.getgrav.org) [![Build Status](https://travis-ci.org/getgrav/grav.svg?branch=develop)](https://travis-ci.org/getgrav/grav) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors) [![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan)
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad/mini.png)](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad)
[![Discord](https://img.shields.io/discord/501836936584101899.svg?logo=discord&colorB=728ADA&label=Discord%20Chat)](https://chat.getgrav.org)
[![PHP Tests](https://github.com/getgrav/grav/workflows/PHP%20Tests/badge.svg?branch=develop)](https://github.com/getgrav/grav/actions?query=workflow%3A%22PHP+Tests%22) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors)
Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. There is **Zero** installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself. Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. There is **Zero** installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.
@ -18,9 +21,13 @@ The underlying architecture of Grav is designed to use well-established and _bes
# Requirements # Requirements
- PHP 5.6.4 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements) - PHP 7.3.6 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements)
- Check the [Apache](https://learn.getgrav.org/basics/requirements#apache-requirements) or [IIS](https://learn.getgrav.org/basics/requirements#iis-requirements) requirements - Check the [Apache](https://learn.getgrav.org/basics/requirements#apache-requirements) or [IIS](https://learn.getgrav.org/basics/requirements#iis-requirements) requirements
# Documentation
The full documentation can be found from [learn.getgrav.org](https://learn.getgrav.org).
# QuickStart # QuickStart
These are the options to get Grav: These are the options to get Grav:
@ -81,6 +88,11 @@ To update plugins and themes:
$ bin/gpm update $ bin/gpm update
``` ```
## Upgrading from older version
* [Upgrading to Grav 1.7](https://learn.getgrav.org/16/advanced/grav-development/grav-17-upgrade-guide)
* [Upgrading to Grav 1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-16-upgrade-guide)
* [Upgrading from Grav <1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-15-upgrade-guide)
# Contributing # Contributing
We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the [Contributing guide](CONTRIBUTING.md) for more guidance on this topic. We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the [Contributing guide](CONTRIBUTING.md) for more guidance on this topic.
@ -103,6 +115,7 @@ If you discover a possible security issue related to Grav or one of its plugins,
* Dive into more [advanced](https://learn.getgrav.org/advanced) functions * Dive into more [advanced](https://learn.getgrav.org/advanced) functions
* Learn about the [Grav CLI](https://learn.getgrav.org/cli-console/grav-cli) * Learn about the [Grav CLI](https://learn.getgrav.org/cli-console/grav-cli)
* Review examples in the [Grav Cookbook](https://learn.getgrav.org/cookbook) * Review examples in the [Grav Cookbook](https://learn.getgrav.org/cookbook)
* More [Awesome Grav Stuff](https://github.com/getgrav/awesome-grav)
# Backers # Backers
Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)] Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)]
@ -124,7 +137,14 @@ See [LICENSE](LICENSE.txt)
# Running Tests # Running Tests
First install the dev dependencies by running `composer update` from the Grav root. First install the dev dependencies by running `composer install` from the Grav root.
Then `composer test` will run the Unit Tests, which should be always executed successfully on any site. Then `composer test` will run the Unit Tests, which should be always executed successfully on any site.
Windows users should use the `composer test-windows` command. Windows users should use the `composer test-windows` command.
You can also run a single unit test file, e.g. `composer test tests/unit/Grav/Common/AssetsTest.php` You can also run a single unit test file, e.g. `composer test tests/unit/Grav/Common/AssetsTest.php`
To run phpstan tests, you should run:
* `composer phpstan` for global tests
* `composer phpstan-framework` for more strict tests
* `composer phpstan-plugins` to test all installed plugins

21
SECURITY.md Normal file
View File

@ -0,0 +1,21 @@
# Security Policy
## Supported Versions
We are focusing our security updates on the following versions
| Version | Supported |
| ------- | ------------------ |
| 1.7.x | :white_check_mark: |
| 1.6.x | :warning: |
| < 1.6 | :x: |
## :warning: Versions
Versions with :warning: will be supported for security issues, however you won't be able to update to them, you will need to manually update through the [`direct-install` command](https://learn.getgrav.org/17/admin-panel/tools).
If you cannot update to the latest stable version available because, for example, your server does not meet the minimum PHP requirements, you can manually install a previous version by downloading the package from our Releases directory (https://github.com/getgrav/grav/releases).
## Reporting a Vulnerability
Please contact security@getgrav.org with a detailed explaination of the security issue found and we will work with you to get it resolved as fast as possible.

View File

@ -0,0 +1 @@
/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */

Binary file not shown.

63
bin/gpm
View File

@ -1,26 +1,29 @@
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
define('GRAV_CLI', true);
if (!file_exists(__DIR__ . '/../vendor')){ /**
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php'; * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
} * @license MIT License; see LICENSE file for details.
*/
use Grav\Common\Composer; use Grav\Common\Composer;
use Grav\Common\Config\Setup; use Grav\Common\Grav;
use Grav\Console\Application\GpmApplication;
if (!file_exists(__DIR__ . '/../vendor')){ \define('GRAV_CLI', true);
\define('GRAV_REQUEST_TIME', microtime(true));
if (!file_exists(__DIR__ . '/../vendor/autoload.php')){
// Before we can even start, we need to run composer first // Before we can even start, we need to run composer first
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
$composer = Composer::getComposerExecutor(); $composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n"; echo "Preparing to install vendor dependencies...\n\n";
echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install'); echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n"; echo "\n\n";
} }
use Symfony\Component\Console\Application; $autoload = require __DIR__ . '/../vendor/autoload.php';
use Grav\Common\Grav;
$autoload = require_once(__DIR__ . '/../vendor/autoload.php');
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
@ -30,7 +33,14 @@ if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
} }
if (!file_exists(ROOT_DIR . 'index.php')) { // Set internal encoding.
if (!\extension_loaded('mbstring')) {
die("'mbstring' extension is not loaded. This is required for Grav to run correctly");
}
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!'); exit('FATAL: Must be run from ROOT directory of Grav!');
} }
@ -38,36 +48,7 @@ if (!function_exists('curl_version')) {
exit('FATAL: GPM requires PHP Curl module to be installed'); exit('FATAL: GPM requires PHP Curl module to be installed');
} }
$climate = new League\CLImate\CLImate;
$climate->arguments->add([
'environment' => [
'prefix' => 'e',
'longPrefix' => 'env',
'description' => 'Configuration Environment',
'defaultValue' => 'localhost'
]
]);
$climate->arguments->parse();
$environment = $climate->arguments->get('environment');
// Set up environment based on params.
Setup::$environment = $environment;
$grav = Grav::instance(array('loader' => $autoload)); $grav = Grav::instance(array('loader' => $autoload));
$grav['uri']->init();
$grav['config']->init();
$grav['streams'];
$app = new Application('Grav Package Manager', GRAV_VERSION);
$app->addCommands(array(
new \Grav\Console\Gpm\IndexCommand(),
new \Grav\Console\Gpm\VersionCommand(),
new \Grav\Console\Gpm\InfoCommand(),
new \Grav\Console\Gpm\InstallCommand(),
new \Grav\Console\Gpm\UninstallCommand(),
new \Grav\Console\Gpm\UpdateCommand(),
new \Grav\Console\Gpm\SelfupgradeCommand(),
new \Grav\Console\Gpm\DirectInstallCommand(),
));
$app = new GpmApplication('Grav Package Manager', GRAV_VERSION);
$app->run(); $app->run();

View File

@ -1,24 +1,29 @@
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
define('GRAV_CLI', true);
if (!file_exists(__DIR__ . '/../vendor')){ /**
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php'; * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
} * @license MIT License; see LICENSE file for details.
*/
use Grav\Common\Composer; use Grav\Common\Composer;
use Grav\Common\Grav;
use Grav\Console\Application\GravApplication;
if (!file_exists(__DIR__ . '/../vendor')){ \define('GRAV_CLI', true);
\define('GRAV_REQUEST_TIME', microtime(true));
if (!file_exists(__DIR__ . '/../vendor/autoload.php')){
// Before we can even start, we need to run composer first // Before we can even start, we need to run composer first
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
$composer = Composer::getComposerExecutor(); $composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n"; echo "Preparing to install vendor dependencies...\n\n";
echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install'); echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n"; echo "\n\n";
} }
use Symfony\Component\Console\Application; $autoload = require __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../vendor/autoload.php';
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
@ -28,19 +33,18 @@ if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
} }
if (!file_exists(ROOT_DIR . 'index.php')) { // Set internal encoding.
if (!\extension_loaded('mbstring')) {
die("'mbstring' extension is not loaded. This is required for Grav to run correctly");
}
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
$grav = Grav::instance(array('loader' => $autoload));
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!'); exit('FATAL: Must be run from ROOT directory of Grav!');
} }
$app = new Application('Grav CLI Application', GRAV_VERSION); $app = new GravApplication('Grav CLI Application', GRAV_VERSION);
$app->addCommands(array(
new \Grav\Console\Cli\InstallCommand(),
new \Grav\Console\Cli\ComposerCommand(),
new \Grav\Console\Cli\SandboxCommand(),
new \Grav\Console\Cli\CleanCommand(),
new \Grav\Console\Cli\ClearCacheCommand(),
new \Grav\Console\Cli\BackupCommand(),
new \Grav\Console\Cli\NewProjectCommand(),
new \Grav\Console\Cli\SecurityCommand(),
));
$app->run(); $app->run();

View File

@ -1,30 +1,29 @@
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
define('GRAV_CLI', true);
if (!file_exists(__DIR__ . '/../vendor')) { /**
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php'; * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
} * @license MIT License; see LICENSE file for details.
*/
use Grav\Common\Composer; use Grav\Common\Composer;
use Grav\Common\Grav;
use Grav\Console\Application\PluginApplication;
if (!file_exists(__DIR__ . '/../vendor')) { \define('GRAV_CLI', true);
\define('GRAV_REQUEST_TIME', microtime(true));
if (!file_exists(__DIR__ . '/../vendor/autoload.php')){
// Before we can even start, we need to run composer first // Before we can even start, we need to run composer first
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
$composer = Composer::getComposerExecutor(); $composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n"; echo "Preparing to install vendor dependencies...\n\n";
echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install'); echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n"; echo "\n\n";
} }
use Symfony\Component\Console\Application; $autoload = require __DIR__ . '/../vendor/autoload.php';
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
use Grav\Common\Grav;
use Grav\Common\Config\Setup;
use Grav\Common\Filesystem\Folder;
$autoload = require_once(__DIR__ . '/../vendor/autoload.php');
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
@ -34,104 +33,19 @@ if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
} }
if (!file_exists(ROOT_DIR . 'index.php')) { // Set internal encoding.
if (!\extension_loaded('mbstring')) {
die("'mbstring' extension is not loaded. This is required for Grav to run correctly");
}
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!'); exit('FATAL: Must be run from ROOT directory of Grav!');
} }
$climate = new League\CLImate\CLImate; // Bootstrap Grav container.
$climate->arguments->add([
'environment' => [
'prefix' => 'e',
'longPrefix' => 'env',
'description' => 'Configuration Environment',
'defaultValue' => 'localhost'
]
]);
$climate->arguments->parse();
$environment = $climate->arguments->get('environment');
// Set up environment based on params.
Setup::$environment = $environment;
$grav = Grav::instance(array('loader' => $autoload)); $grav = Grav::instance(array('loader' => $autoload));
$grav['uri']->init();
$grav['config']->init();
$grav['streams'];
$grav['plugins']->init();
$grav['themes']->init();
$app = new PluginApplication('Grav Plugins Commands', GRAV_VERSION);
$app = new Application('Grav Plugins Commands', GRAV_VERSION); $app->run();
$pattern = '([A-Z]\w+Command\.php)';
// get arguments and strip the application name
if (null === $argv) {
$argv = $_SERVER['argv'];
}
$bin = array_shift($argv);
$name = array_shift($argv);
$argv = array_merge([$bin], $argv);
$input = new ArgvInput($argv);
$plugin = $grav['plugins']->get($name);
$output = new ConsoleOutput();
$output->getFormatter()->setStyle('red', new OutputFormatterStyle('red', null, array('bold')));
$output->getFormatter()->setStyle('white', new OutputFormatterStyle('white', null, array('bold')));
if (!$name) {
$output->writeln('');
$output->writeln("<red>Usage:</red>");
$output->writeln(" {$bin} [slug] [command] [arguments]");
$output->writeln('');
$output->writeln("<red>Example:</red>");
$output->writeln(" {$bin} error log -l 1 --trace");
$list = Folder::all('plugins://', ['compare' => 'Pathname', 'pattern' => '/\/cli\/' . $pattern . '$/usm', 'levels' => 2]);
if (count($list)) {
$available = [];
$output->writeln('');
$output->writeln('<red>Plugins with CLI available:</red>');
foreach ($list as $index => $entry) {
$split = explode('/', $entry);
$entry = array_shift($split);
$index = str_pad($index++ + 1, 2, '0', STR_PAD_LEFT);
if (in_array($entry, $available)) {
continue;
}
$available[] = $entry;
$output->writeln(' ' . $index . ". <red>" . str_pad($entry, 15) . "</red> <white>${bin} ${entry} list</white>");
}
}
exit;
}
if ($plugin === null) {
$output->writeln("<red>Grav Plugin <white>'{$name}'</white> is not installed</red>");
exit;
}
$path = 'plugins://' . $name . '/cli';
try {
$commands = Folder::all($path, ['compare' => 'Filename', 'pattern' => '/' . $pattern . '$/usm', 'levels' => 1]);
} catch (\RuntimeException $e) {
$output->writeln("<red>No Console Commands for <white>'{$name}'</white> where found in <white>'{$path}'</white></red>");
exit;
}
foreach ($commands as $command_path) {
$full_path = $grav['locator']->findResource("plugins://{$name}/cli/{$command_path}");
require_once $full_path;
$command_class = 'Grav\Plugin\Console\\' . preg_replace('/.php$/', '', $command_path);
$command = new $command_class();
$app->add($command);
}
$app->run($input);

View File

@ -2,71 +2,114 @@
"name": "getgrav/grav", "name": "getgrav/grav",
"type": "project", "type": "project",
"description": "Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS", "description": "Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS",
"keywords": ["cms","flat-file cms","flat cms","flatfile cms","php"], "keywords": [
"cms",
"flat-file cms",
"flat cms",
"flatfile cms",
"php"
],
"homepage": "https://getgrav.org", "homepage": "https://getgrav.org",
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": ">=5.6.4", "php": "^7.3.6 || ^8.0",
"twig/twig": "~1.24", "ext-json": "*",
"erusev/parsedown": "1.6.4",
"erusev/parsedown-extra": "~0.7",
"symfony/yaml": "~3.4",
"symfony/console": "~3.4",
"symfony/event-dispatcher": "~3.4",
"symfony/var-dumper": "~3.4",
"symfony/polyfill-iconv": "~1.0",
"doctrine/cache": "^1.6",
"doctrine/collections": "^1.4",
"psr/simple-cache": "^1.0",
"psr/http-message": "^1.0",
"guzzlehttp/psr7": "^1.4",
"filp/whoops": "~2.0",
"matthiasmullie/minify": "^1.3",
"monolog/monolog": "~1.0",
"gregwar/image": "2.*",
"donatj/phpuseragentparser": "~0.3",
"pimple/pimple": "~3.2",
"rockettheme/toolbox": "1.4.2",
"maximebf/debugbar": "~1.10",
"ext-mbstring": "*",
"ext-openssl": "*", "ext-openssl": "*",
"ext-curl": "*", "ext-curl": "*",
"ext-zip": "*", "ext-zip": "*",
"ext-json": "*", "ext-dom": "*",
"league/climate": "^3.2", "ext-libxml": "*",
"symfony/polyfill-mbstring": "~1.20",
"symfony/polyfill-iconv": "^1.20",
"symfony/polyfill-php74": "^1.20",
"symfony/polyfill-php80": "^1.20",
"psr/simple-cache": "^1.0",
"psr/http-message": "^1.0",
"psr/http-server-middleware": "^1.0",
"psr/container": "~1.0.0",
"nyholm/psr7-server": "^1.0",
"nyholm/psr7": "^1.3",
"twig/twig": "~1.44",
"erusev/parsedown": "^1.7",
"erusev/parsedown-extra": "~0.8",
"symfony/contracts": "~1.1",
"symfony/yaml": "~4.4",
"symfony/console": "~4.4",
"symfony/event-dispatcher": "~4.4",
"symfony/var-dumper": "~4.4",
"symfony/process": "~4.4",
"doctrine/cache": "^1.10",
"doctrine/collections": "^1.6",
"guzzlehttp/psr7": "^1.7",
"filp/whoops": "~2.9",
"matthiasmullie/minify": "^1.3",
"monolog/monolog": "~1.25",
"getgrav/image": "^3.0",
"getgrav/cache": "^2.0",
"donatj/phpuseragentparser": "~1.1",
"pimple/pimple": "~3.3.0",
"rockettheme/toolbox": "~1.5",
"maximebf/debugbar": "~1.16",
"league/climate": "^3.6",
"antoligy/dom-string-iterators": "^1.0", "antoligy/dom-string-iterators": "^1.0",
"miljar/php-exif": "^0.6.3", "miljar/php-exif": "^0.6",
"composer/ca-bundle": "^1.0", "composer/ca-bundle": "^1.2",
"phive/twig-extensions-deferred": "^1.0" "dragonmantank/cron-expression": "^1.2",
"phive/twig-extensions-deferred": "^1.0",
"willdurand/negotiation": "^3.0",
"itsgoingd/clockwork": "^5.0",
"enshrined/svg-sanitize": "~0.13",
"symfony/http-client": "^4.4",
"composer/semver": "^1.4"
}, },
"require-dev": { "require-dev": {
"codeception/codeception": "^2.1", "codeception/codeception": "^4.1",
"phpunit/php-code-coverage": "~2.0", "phpstan/phpstan": "^0.12",
"fzaninotto/faker": "^1.5", "phpstan/phpstan-deprecation-rules": "^0.12",
"victorjonsson/markdowndocs": "dev-master" "phpunit/php-code-coverage": "~9.2",
"getgrav/markdowndocs": "^2.0",
"codeception/module-asserts": "^1.3",
"codeception/module-phpbrowser": "^1.0",
"symfony/service-contracts": "*"
},
"replace": {
"symfony/polyfill-php72": "*",
"symfony/polyfill-php73": "*"
},
"suggest": {
"ext-mbstring": "Recommended for better performance",
"ext-iconv": "Recommended for better performance",
"ext-zend-opcache": "Recommended for better performance",
"ext-intl": "Recommended for multi-language sites",
"ext-memcache": "Needed to support Memcache servers",
"ext-memcached": "Needed to support Memcached servers",
"ext-redis": "Needed to support Redis servers"
}, },
"config": { "config": {
"apcu-autoloader": true,
"platform": { "platform": {
"php": "5.6.4" "php": "7.3.6"
} }
}, },
"repositories": [
{
"type": "vcs",
"url": "https://github.com/trilbymedia/PHP-Markdown-Documentation-Generator"
}
],
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Grav\\": "system/src/Grav" "Grav\\": "system/src/Grav"
}, },
"files": ["system/defines.php"] "files": [
"system/defines.php"
]
}, },
"archive": { "archive": {
"exclude": ["VERSION"] "exclude": [
"VERSION"
]
}, },
"scripts": { "scripts": {
"api-17": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.17.md",
"post-create-project-cmd": "bin/grav install", "post-create-project-cmd": "bin/grav install",
"phpstan": "vendor/bin/phpstan analyse -l 1 -c ./tests/phpstan/phpstan.neon --memory-limit=480M system/src",
"phpstan-framework": "vendor/bin/phpstan analyse -l 1 -c ./tests/phpstan/phpstan.neon --memory-limit=480M system/src/Grav/Framework system/src/Grav/Events system/src/Grav/Installer",
"phpstan-plugins": "vendor/bin/phpstan analyse -l 1 -c ./tests/phpstan/plugins.neon --memory-limit=400M user/plugins",
"test": "vendor/bin/codecept run unit", "test": "vendor/bin/codecept run unit",
"test-windows": "vendor\\bin\\codecept run unit" "test-windows": "vendor\\bin\\codecept run unit"
}, },

4601
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -3,45 +3,49 @@
/** /**
* @package Grav.Core * @package Grav.Core
* *
* @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details. * @license MIT License; see LICENSE file for details.
*/ */
namespace Grav; namespace Grav;
define('GRAV_PHP_MIN', '5.6.4'); \define('GRAV_REQUEST_TIME', microtime(true));
\define('GRAV_PHP_MIN', '7.3.6');
// Ensure vendor libraries exist
$autoload = __DIR__ . '/vendor/autoload.php';
if (!is_file($autoload)) {
die("Please run: <i>bin/grav install</i>");
}
if (PHP_SAPI === 'cli-server') {
if (!isset($_SERVER['PHP_CLI_ROUTER'])) {
die("PHP webserver requires a router to run Grav, please use: <pre>php -S {$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']} system/router.php</pre>");
}
}
use Grav\Common\Grav;
use RocketTheme\Toolbox\Event\Event;
if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) {
die(sprintf('You are running PHP %s, but Grav needs at least <strong>PHP %s</strong> to run.', $ver, $req)); die(sprintf('You are running PHP %s, but Grav needs at least <strong>PHP %s</strong> to run.', $ver, $req));
} }
// Register the auto-loader. if (PHP_SAPI === 'cli-server') {
$loader = require $autoload; $symfony_server = stripos(getenv('_'), 'symfony') !== false || stripos($_SERVER['SERVER_SOFTWARE'], 'symfony
') !== false;
if (!isset($_SERVER['PHP_CLI_ROUTER']) && !$symfony_server) {
die("PHP webserver requires a router to run Grav, please use: <pre>php -S {$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']} system/router.php</pre>");
}
}
// Set timezone to default, falls back to system if php.ini not set // Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get()); date_default_timezone_set(@date_default_timezone_get());
// Set internal encoding if mbstring loaded // Set internal encoding.
if (!extension_loaded('mbstring')) { if (!\extension_loaded('mbstring')) {
die("'mbstring' extension is not loaded. This is required for Grav to run correctly"); die("'mbstring' extension is not loaded. This is required for Grav to run correctly");
} }
@ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8'); mb_internal_encoding('UTF-8');
// Ensure vendor libraries exist
$autoload = __DIR__ . '/vendor/autoload.php';
if (!is_file($autoload)) {
die('Please run: <i>bin/grav install</i>');
}
// Register the auto-loader.
$loader = require $autoload;
use Grav\Common\Grav;
use RocketTheme\Toolbox\Event\Event;
// Get the Grav instance // Get the Grav instance
$grav = Grav::instance( $grav = Grav::instance(
array( array(
@ -52,6 +56,9 @@ $grav = Grav::instance(
// Process the page // Process the page
try { try {
$grav->process(); $grav->process();
} catch (\Error $e) {
$grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
throw $e;
} catch (\Exception $e) { } catch (\Exception $e) {
$grav->fireEvent('onFatalException', new Event(array('exception' => $e))); $grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
throw $e; throw $e;

4
now.json Normal file
View File

@ -0,0 +1,4 @@
{
"version": 2,
"builds": [{ "src": "*.php", "use": "@now/php" }]
}

View File

@ -1,54 +0,0 @@
div.phpdebugbar {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.phpdebugbar pre {
padding: 1rem;
}
.phpdebugbar div.phpdebugbar-header > div > * {
padding: 5px 15px;
}
.phpdebugbar div.phpdebugbar-header > div.phpdebugbar-header-right > * {
padding: 5px 8px;
}
.phpdebugbar div.phpdebugbar-header, .phpdebugbar a.phpdebugbar-restore-btn {
background-image: url(grav.png);
}
.phpdebugbar a.phpdebugbar-restore-btn {
width: 13px;
}
.phpdebugbar a.phpdebugbar-tab.phpdebugbar-active {
background: #3DB9EC;
color: #fff;
margin-top: -1px;
padding-top: 6px;
}
.phpdebugbar .phpdebugbar-widgets-toolbar {
padding-left: 5px;
}
.phpdebugbar input[type=text] {
padding: 0;
display: inline;
}
.phpdebugbar dl.phpdebugbar-widgets-varlist, ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-label {
font-family: "DejaVu Sans Mono", Menlo, Monaco, Consolas, Courier, monospace;
font-size: 12px;
}
ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-label {
text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff;
top: 0;
}
.phpdebugbar pre, .phpdebugbar code {
margin: 0;
font-size: 14px;
}

View File

@ -0,0 +1,2 @@
/** Clockwork Debugger CSS **/
.clockwork-badge{position:fixed;z-index:10;bottom:0;left:0;padding:2px 4px;background-color:#eee;border:1px solid #ccc;border-bottom:0;border-left:0;display:flex;align-items:center}.clockwork-badge:hover{width:auto}.clockwork-badge:hover:after{content:'Grav Clockwork debugger enabled. Install Clockwork Browser extension (Chrome or Firefox), open your Developer tools and then select the Clockwork tab.'}.clockwork-badge:after{margin-left:10px;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:12px;line-height:1.5;color:#666}.clockwork-badge i{display:block;float:left;height:22px;width:22px;min-width:22px;background-size:contain;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA/1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAD///8EBAT7+/sLCwv29vYVFRUvLy/t7e3m5ubCwsKxsbE/Pz+mpqZMTEwcHBzy8vLp6emfn5+AgIA2Njbi4uLf39+rq6tzc3NWVlYhISHa2trW1tbS0tLMzMy7u7uZmZmUlJSMjIxvb29kZGRHR0c7Ozt5eXkqKiq1tbWQkJBqampbW1tSUlLHx8eHh4ckJCRDQ0M3wD42AAAAI3RSTlMA/PibTbQ0x76TVAlw4LhZLOuEYCAN9Hjx0a2ppGZEGYw97djhXHwAAATZSURBVFjDlVcHW+MwDO1eFCjj2McNOzvdpXTTXVbL/P+/5SQ7QSSX5Di1X1onfi/Sk+Q4sTDbKqWK+YuznZ2zi3wxVdqK/Zf92M1nT9gnO8rmd398GX6Z3xaoOFoiAQcx3E5efgmeSuN8F6Xg1x3G06l/wjNpMR1B0uif4EhnIuFb+0diIoFXk3IVfokisR+h52GO4JKgyjmfaMhAFNlSaPR7DpwI+lzn/E4QKIqmKIJirxCMP4izBPPZPXhgXwMBYgULw0nfg/BF5scDbslb7QeJ08yqqTEmGYoB95d4H8ETL8+n9wBqrLu6ao3bBsMwAnxISf/9BHcqxNB8Y7cWl3Zz7TAUfPrvAT6AoNEFFXvsjutL01yOuMrtBxnFXsmT/1wQHmdWAFNnI3uI48Yj0FUcHbKf62GfUfr8eeQt7Uk3mQZpZNoVRPEui5vtEz5zFEpgWnyqVBZMc6oaGNriH2hGVZ0OxEvInPeMaZWJBA7vmPbCr5jjws5HBnAUxvDMH40aCIf4G5BjRQSs8E8HFFYf8bGxgDvD55bzGhwWkoBcuIyHR/AMdaCagxXDhtL6tSqoWpd4BMnlIR+Or+rYTK/a3EAGcc6e4AWHISnWv20iCCojsHoVlQdjrMexFF2C7UMg2A2WEGWbQhXN6l3eXC6XGp4b9qxbuEB2EBGBwtocrK90cVG5mbRXm6vmx/0phq1sIAGKDgLOBiN1MrO5a9aDl+D0W6x0Ar9BCTRuIIANa90Y7LrLVRXzwVtDInCqMRWcf2bUOEAsa4wJqFowQALL9EiAtVRk8QC4OW+1pOM9jIaVASwYagyNXDj+W0NcfuZNzjtXOiL0Zzg30Llj+ptfxQs4+vBPNiL5PawFCBkgXpUaVtqGl+A8dgZHL34BcBUQrwPptToW+o37Ku+UH9eYByJIx3YkAeFnMFuGO7S5gEp7YhXxa5OOAM39RXDPXb0qmpROsswZe+twXdU55oUIZAiEv3bD1UFwIYKkmGqytPCDCwKFQCKK0yL7qtSAPX54UAbtsLuBHkb9zyLmPQSNjsSgmQwKUOIfEY8F8t4B34DvndJY9BA8tNBJq1Nev9axmaStFcQLhgYoCTo0salkIaW8OUDdWjMTR2sHPhrAFZqx6cqcKE4pl2BJJ4K6hfwvqNgAnXfKX/HU6X3Zrhnu0k7tLNZtTBRv1hkwTDBY1NzFU6doDYjJbWdQkQhWwuU7/LvhTh3SDoco4ECL4i5dwURbc8NdDZz2IwKicE8d0KIqWetLE3+lL4hvUuGSeRfVWNLfj/gpOw4smBJBkKQHCzlHGwvAj4woB1gq5NGGLSXtORBPnUQPV5/MPVkDMxbpwG7w4x0xL6Ltxka0A/4NBvV09UVk4DoSn/jl2+JQS9q9KYawisAD4CfhsZ4TH3htylsdEHARIQBusqCKyUpymycgbbkkXEXjT3z7/oKQFTFVuZD2FMJHZIDsO5x2d4aAr2jR+GLwZhtAb028/0yJ9J8dE87jQyKObcjtTXT8dH+fDuKF4/eiPwzH44wTf/yUi6wrpRIOZ9lM1EtXAifFI+CJn9+iX/t2xMQwOMth/UZbASi8btAwR9FHWSpJr75g9Oqbin3VDg+SpwlP6k6TB4ex/7JvmcJx8jydy6XPk8eFTKhyfwCgX71MSvaBHgAAAABJRU5ErkJggg==)}

View File

@ -0,0 +1,3 @@
/** Clockwork Debugger JS **/
document.addEventListener("DOMContentLoaded",function () {
var e=document.createElement("div");e.appendChild(document.createElement("i")),e.className="clockwork-badge",document.body.appendChild(e)});

View File

@ -0,0 +1,70 @@
div.phpdebugbar {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.phpdebugbar pre {
padding: 1rem;
}
.phpdebugbar div.phpdebugbar-header > div > * {
padding: 5px 15px;
}
.phpdebugbar div.phpdebugbar-header > div.phpdebugbar-header-right > * {
padding: 5px 8px;
}
.phpdebugbar div.phpdebugbar-header, .phpdebugbar a.phpdebugbar-restore-btn {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA/1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4AAAD///8EBAT7+/sLCwv29vYVFRUvLy/t7e3m5ubCwsKxsbE/Pz+mpqZMTEwcHBzy8vLp6emfn5+AgIA2Njbi4uLf39+rq6tzc3NWVlYhISHa2trW1tbS0tLMzMy7u7uZmZmUlJSMjIxvb29kZGRHR0c7Ozt5eXkqKiq1tbWQkJBqampbW1tSUlLHx8eHh4ckJCRDQ0M3wD42AAAAI3RSTlMA/PibTbQ0x76TVAlw4LhZLOuEYCAN9Hjx0a2ppGZEGYw97djhXHwAAATZSURBVFjDlVcHW+MwDO1eFCjj2McNOzvdpXTTXVbL/P+/5SQ7QSSX5Di1X1onfi/Sk+Q4sTDbKqWK+YuznZ2zi3wxVdqK/Zf92M1nT9gnO8rmd398GX6Z3xaoOFoiAQcx3E5efgmeSuN8F6Xg1x3G06l/wjNpMR1B0uif4EhnIuFb+0diIoFXk3IVfokisR+h52GO4JKgyjmfaMhAFNlSaPR7DpwI+lzn/E4QKIqmKIJirxCMP4izBPPZPXhgXwMBYgULw0nfg/BF5scDbslb7QeJ08yqqTEmGYoB95d4H8ETL8+n9wBqrLu6ao3bBsMwAnxISf/9BHcqxNB8Y7cWl3Zz7TAUfPrvAT6AoNEFFXvsjutL01yOuMrtBxnFXsmT/1wQHmdWAFNnI3uI48Yj0FUcHbKf62GfUfr8eeQt7Uk3mQZpZNoVRPEui5vtEz5zFEpgWnyqVBZMc6oaGNriH2hGVZ0OxEvInPeMaZWJBA7vmPbCr5jjws5HBnAUxvDMH40aCIf4G5BjRQSs8E8HFFYf8bGxgDvD55bzGhwWkoBcuIyHR/AMdaCagxXDhtL6tSqoWpd4BMnlIR+Or+rYTK/a3EAGcc6e4AWHISnWv20iCCojsHoVlQdjrMexFF2C7UMg2A2WEGWbQhXN6l3eXC6XGp4b9qxbuEB2EBGBwtocrK90cVG5mbRXm6vmx/0phq1sIAGKDgLOBiN1MrO5a9aDl+D0W6x0Ar9BCTRuIIANa90Y7LrLVRXzwVtDInCqMRWcf2bUOEAsa4wJqFowQALL9EiAtVRk8QC4OW+1pOM9jIaVASwYagyNXDj+W0NcfuZNzjtXOiL0Zzg30Llj+ptfxQs4+vBPNiL5PawFCBkgXpUaVtqGl+A8dgZHL34BcBUQrwPptToW+o37Ku+UH9eYByJIx3YkAeFnMFuGO7S5gEp7YhXxa5OOAM39RXDPXb0qmpROsswZe+twXdU55oUIZAiEv3bD1UFwIYKkmGqytPCDCwKFQCKK0yL7qtSAPX54UAbtsLuBHkb9zyLmPQSNjsSgmQwKUOIfEY8F8t4B34DvndJY9BA8tNBJq1Nev9axmaStFcQLhgYoCTo0salkIaW8OUDdWjMTR2sHPhrAFZqx6cqcKE4pl2BJJ4K6hfwvqNgAnXfKX/HU6X3Zrhnu0k7tLNZtTBRv1hkwTDBY1NzFU6doDYjJbWdQkQhWwuU7/LvhTh3SDoco4ECL4i5dwURbc8NdDZz2IwKicE8d0KIqWetLE3+lL4hvUuGSeRfVWNLfj/gpOw4smBJBkKQHCzlHGwvAj4woB1gq5NGGLSXtORBPnUQPV5/MPVkDMxbpwG7w4x0xL6Ltxka0A/4NBvV09UVk4DoSn/jl2+JQS9q9KYawisAD4CfhsZ4TH3htylsdEHARIQBusqCKyUpymycgbbkkXEXjT3z7/oKQFTFVuZD2FMJHZIDsO5x2d4aAr2jR+GLwZhtAb028/0yJ9J8dE87jQyKObcjtTXT8dH+fDuKF4/eiPwzH44wTf/yUi6wrpRIOZ9lM1EtXAifFI+CJn9+iX/t2xMQwOMth/UZbASi8btAwR9FHWSpJr75g9Oqbin3VDg+SpwlP6k6TB4ex/7JvmcJx8jydy6XPk8eFTKhyfwCgX71MSvaBHgAAAABJRU5ErkJggg==);
}
.phpdebugbar a.phpdebugbar-restore-btn {
width: 13px;
}
.phpdebugbar a.phpdebugbar-tab.phpdebugbar-active {
background: #3DB9EC;
color: #fff;
margin-top: -1px;
padding-top: 6px;
}
.phpdebugbar .phpdebugbar-widgets-toolbar {
border-top: 1px solid #ddd;
padding-left: 5px;
padding-right: 2px;
padding-top: 2px;
background-color: #fafafa !important;
width: auto !important;
left: 0;
right: 0;
}
.phpdebugbar .phpdebugbar-widgets-toolbar input {
background: transparent !important;
}
.phpdebugbar .phpdebugbar-widgets-toolbar .phpdebugbar-widgets-filter {
}
.phpdebugbar input[type=text] {
padding: 0;
display: inline;
}
.phpdebugbar dl.phpdebugbar-widgets-varlist, ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-label {
font-family: "DejaVu Sans Mono", Menlo, Monaco, Consolas, Courier, monospace;
font-size: 12px;
}
ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-label {
text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff;
top: 0;
}
.phpdebugbar pre, .phpdebugbar code {
margin: 0;
font-size: 14px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,125 @@
title: PLUGIN_ADMIN.BACKUPS
form:
validation: loose
fields:
history_title:
type: section
title: PLUGIN_ADMIN.BACKUPS_HISTORY
underline: true
history:
type: backupshistory
config_title:
type: section
title: PLUGIN_ADMIN.BACKUPS_PURGE_CONFIG
underline: true
purge.trigger:
type: select
label: PLUGIN_ADMIN.BACKUPS_STORAGE_PURGE_TRIGGER
size: medium
default: space
options:
space: Maximum Backup Space
number: Maximum Number of Backups
time: maximum Retention Time
validate:
required: true
purge.max_backups_count:
type: number
label: PLUGIN_ADMIN.BACKUPS_MAX_COUNT
default: 25
size: x-small
help: PLUGIN_ADMIN.BACKUPS_MAX_COUNT
validate:
min: 0
type: number
required: true
message: Must be a number 0 or greater
purge.max_backups_space:
type: number
label: PLUGIN_ADMIN.BACKUPS_MAX_SPACE
append: in GB
size: x-small
default: 5
validate:
min: 1
type: number
required: true
message: Space must be 1GB or greater
purge.max_backups_time:
type: number
label: PLUGIN_ADMIN.BACKUPS_MAX_RETENTION_TIME
append: PLUGIN_ADMIN.BACKUPS_MAX_RETENTION_TIME_APPEND
size: x-small
default: 365
validate:
min: 7
type: number
required: true
message: Rentenion days must be 7 or greater
profiles_title:
type: section
title: PLUGIN_ADMIN.BACKUPS_PROFILES
underline: true
profiles:
type: list
style: vertical
label:
classes: backups-list compact
sort: false
fields:
.name:
type: text
label: PLUGIN_ADMIN.NAME
placeholder: PLUGIN_ADMIN.BACKUPS_PROFILE_NAME
validate:
max: 20
message: 'Name must be less than 20 characters'
required: true
.root:
type: text
label: PLUGIN_ADMIN.BACKUPS_PROFILE_ROOT_FOLDER
help: PLUGIN_ADMIN.BACKUPS_PROFILE_ROOT_FOLDER_HELP
placeholder: '/'
default: '/'
validate:
required: true
.exclude_paths:
type: textarea
label: PLUGIN_ADMIN.BACKUPS_PROFILE_EXCLUDE_PATHS
rows: 5
placeholder: "/backup\r/cache\r/images\r/logs\r/tmp"
help: PLUGIN_ADMIN.BACKUPS_PROFILE_EXCLUDE_PATHS_HELP
.exclude_files:
type: textarea
label: PLUGIN_ADMIN.BACKUPS_PROFILE_EXCLUDE_FILES
rows: 5
placeholder: ".DS_Store\r.git\r.svn\r.hg\r.idea\r.vscode\rnode_modules"
help: PLUGIN_ADMIN.BACKUPS_PROFILE_EXCLUDE_FILES_HELP
.schedule:
type: toggle
label: PLUGIN_ADMIN.BACKUPS_PROFILE_SCHEDULE
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
.schedule_at:
type: cron
label: PLUGIN_ADMIN.BACKUPS_PROFILE_SCHEDULE_AT
default: '* 3 * * *'
validate:
required: true

View File

@ -0,0 +1,77 @@
title: PLUGIN_ADMIN.SCHEDULER
form:
validation: loose
fields:
status_title:
type: section
title: PLUGIN_ADMIN.SCHEDULER_STATUS
underline: true
status:
type: cronstatus
validate:
type: commalist
jobs_title:
type: section
title: PLUGIN_ADMIN.SCHEDULER_JOBS
underline: true
custom_jobs:
type: list
style: vertical
label:
classes: cron-job-list compact
key: id
fields:
.id:
type: key
label: ID
placeholder: 'process-name'
validate:
required: true
pattern: '[a-zа-я0-9_\-]+'
max: 20
message: 'ID must be lowercase with dashes/underscores only and less than 20 characters'
.command:
type: text
label: PLUGIN_ADMIN.COMMAND
placeholder: 'ls'
validate:
required: true
.args:
type: text
label: PLUGIN_ADMIN.EXTRA_ARGUMENTS
placeholder: '-lah'
.at:
type: cron
label: PLUGIN_ADMIN.SCHEDULER_RUNAT
help: PLUGIN_ADMIN.SCHEDULER_RUNAT_HELP
placeholder: '* * * * *'
validate:
required: true
.output:
type: text
label: PLUGIN_ADMIN.SCHEDULER_OUTPUT
help: PLUGIN_ADMIN.SCHEDULER_OUTPUT_HELP
placeholder: 'logs/ls-cron.out'
.output_mode:
type: select
label: PLUGIN_ADMIN.SCHEDULER_OUTPUT_TYPE
help: PLUGIN_ADMIN.SCHEDULER_OUTPUT_TYPE_HELP
default: append
options:
append: Append
overwrite: Overwrite
.email:
type: text
label: PLUGIN_ADMIN.SCHEDULER_EMAIL
help: PLUGIN_ADMIN.SCHEDULER_EMAIL_HELP
placeholder: 'notifications@yoursite.com'

View File

@ -41,6 +41,14 @@ form:
validate: validate:
type: bool type: bool
xss_invalid_protocols:
type: selectize
size: large
label: PLUGIN_ADMIN.XSS_INVALID_PROTOCOLS_LIST
classes: fancy
validate:
type: commalist
xss_enabled.moz_binding: xss_enabled.moz_binding:
type: toggle type: toggle
label: PLUGIN_ADMIN.XSS_MOZ_BINDINGS label: PLUGIN_ADMIN.XSS_MOZ_BINDINGS
@ -97,3 +105,15 @@ form:
validate: validate:
type: commalist type: commalist
sanitize_svg:
type: toggle
label: PLUGIN_ADMIN.SANITIZE_SVG
help: PLUGIN_ADMIN.SANITIZE_SVG_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool

View File

@ -65,7 +65,7 @@ form:
summary.size: summary.size:
type: text type: text
size: x-small size: small
append: PLUGIN_ADMIN.CHARACTERS append: PLUGIN_ADMIN.CHARACTERS
label: PLUGIN_ADMIN.SUMMARY_SIZE label: PLUGIN_ADMIN.SUMMARY_SIZE
help: PLUGIN_ADMIN.SUMMARY_SIZE_HELP help: PLUGIN_ADMIN.SUMMARY_SIZE_HELP

View File

@ -4,12 +4,21 @@ form:
validation: loose validation: loose
fields: fields:
system_tabs:
type: tabs
classes: side-tabs
fields:
content: content:
type: tab
title: PLUGIN_ADMIN.CONTENT
fields:
content_section:
type: section type: section
title: PLUGIN_ADMIN.CONTENT title: PLUGIN_ADMIN.CONTENT
underline: true underline: true
fields:
home.alias: home.alias:
type: pages type: pages
size: large size: large
@ -32,7 +41,6 @@ form:
validate: validate:
type: bool type: bool
pages.theme: pages.theme:
type: themeselect type: themeselect
classes: fancy classes: fancy
@ -51,6 +59,14 @@ form:
twig: Twig twig: Twig
use: keys use: keys
pages.types:
type: array
label: PLUGIN_ADMIN.PAGE_TYPES
help: PLUGIN_ADMIN.PAGE_TYPES_HELP
size: small
default: ['html','htm','json','xml','txt','rss','atom']
value_only: true
timezone: timezone:
type: select type: select
label: PLUGIN_ADMIN.TIMEZONE label: PLUGIN_ADMIN.TIMEZONE
@ -161,39 +177,47 @@ form:
label: PLUGIN_ADMIN.APPEND_URL_EXT label: PLUGIN_ADMIN.APPEND_URL_EXT
help: PLUGIN_ADMIN.APPEND_URL_EXT_HELP help: PLUGIN_ADMIN.APPEND_URL_EXT_HELP
pages.redirect_default_route:
type: toggle
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.redirect_default_code: pages.redirect_default_code:
type: select type: select
size: medium size: medium
classes: fancy classes: fancy
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE label: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE_HELP help: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE_HELP
default: 302
options: options:
301: 301 - Permanent 301: PLUGIN_ADMIN.REDIRECT_OPTION_301
302: 302 - Found 302: PLUGIN_ADMIN.REDIRECT_OPTION_302
303: 303 - Other 303: PLUGIN_ADMIN.REDIRECT_OPTION_303
304: 304 - Not Modified
pages.redirect_default_route:
type: select
size: medium
classes: fancy
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP
default: 0
options:
0: PLUGIN_ADMIN.REDIRECT_OPTION_NO_REDIRECT
1: PLUGIN_ADMIN.REDIRECT_OPTION_DEFAULT_REDIRECT
301: PLUGIN_ADMIN.REDIRECT_OPTION_301
302: PLUGIN_ADMIN.REDIRECT_OPTION_302
validate:
type: int
pages.redirect_trailing_slash: pages.redirect_trailing_slash:
type: toggle type: select
size: medium
classes: fancy
label: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH label: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH
help: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH_HELP help: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH_HELP
highlight: 1 default: 1
options: options:
1: PLUGIN_ADMIN.YES 0: PLUGIN_ADMIN.REDIRECT_OPTION_NO_REDIRECT
0: PLUGIN_ADMIN.NO 1: PLUGIN_ADMIN.REDIRECT_OPTION_DEFAULT_REDIRECT
301: PLUGIN_ADMIN.REDIRECT_OPTION_301
302: PLUGIN_ADMIN.REDIRECT_OPTION_302
validate: validate:
type: bool type: int
pages.ignore_hidden: pages.ignore_hidden:
type: toggle type: toggle
@ -224,6 +248,17 @@ form:
validate: validate:
type: commalist type: commalist
pages.hide_empty_folders:
type: toggle
label: PLUGIN_ADMIN.HIDE_EMPTY_FOLDERS
help: PLUGIN_ADMIN.HIDE_EMPTY_FOLDERS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.url_taxonomy_filters: pages.url_taxonomy_filters:
type: toggle type: toggle
label: PLUGIN_ADMIN.ALLOW_URL_TAXONOMY_FILTERS label: PLUGIN_ADMIN.ALLOW_URL_TAXONOMY_FILTERS
@ -279,12 +314,15 @@ form:
type: commalist type: commalist
languages: languages:
type: tab
title: PLUGIN_ADMIN.LANGUAGES
fields:
languages-section:
type: section type: section
title: PLUGIN_ADMIN.LANGUAGES title: PLUGIN_ADMIN.LANGUAGES
underline: true underline: true
fields:
languages.supported: languages.supported:
type: selectize type: selectize
size: large size: large
@ -295,6 +333,12 @@ form:
validate: validate:
type: commalist type: commalist
languages.default_lang:
type: text
size: x-small
label: PLUGIN_ADMIN.DEFAULT_LANG
help: PLUGIN_ADMIN.DEFAULT_LANG_HELP
languages.include_default_lang: languages.include_default_lang:
type: toggle type: toggle
label: PLUGIN_ADMIN.INCLUDE_DEFAULT_LANG label: PLUGIN_ADMIN.INCLUDE_DEFAULT_LANG
@ -306,11 +350,53 @@ form:
validate: validate:
type: bool type: bool
languages.include_default_lang_file_extension:
type: toggle
label: PLUGIN_ADMIN.INCLUDE_DEFAULT_LANG_FILE_EXTENSION
help: PLUGIN_ADMIN.INCLUDE_DEFAULT_LANG_HELP_FILE_EXTENSION
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.content_fallback:
type: list
label: PLUGIN_ADMIN.CONTENT_LANGUAGE_FALLBACKS
help: PLUGIN_ADMIN.CONTENT_LANGUAGE_FALLBACKS_HELP
fields:
key:
type: key
label: PLUGIN_ADMIN.LANGUAGE
help: PLUGIN_ADMIN.CONTENT_FALLBACK_LANGUAGE_HELP
placeholder: fr-ca
value:
type: selectize
size: large
placeholder: "fr, en"
label: PLUGIN_ADMIN.CONTENT_LANGUAGE_FALLBACK
help: PLUGIN_ADMIN.CONTENT_LANGUAGE_FALLBACK_HELP
classes: fancy
# TODO: does not work.
# validate:
# type: commalist
languages.pages_fallback_only:
type: toggle
label: PLUGIN_ADMIN.PAGES_FALLBACK_ONLY
help: PLUGIN_ADMIN.PAGES_FALLBACK_ONLY_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.translations: languages.translations:
type: toggle type: toggle
label: PLUGIN_ADMIN.TRANSLATIONS_ENABLED label: PLUGIN_ADMIN.LANGUAGE_TRANSLATIONS
help: PLUGIN_ADMIN.TRANSLATIONS_ENABLED_HELP help: PLUGIN_ADMIN.LANGUAGE_TRANSLATIONS_HELP
highlight: 1 highlight: 1
options: options:
1: PLUGIN_ADMIN.YES 1: PLUGIN_ADMIN.YES
@ -363,15 +449,19 @@ form:
type: bool type: bool
http_headers: http_headers:
type: tab
title: PLUGIN_ADMIN.HTTP_HEADERS
fields:
http_headers_section:
type: section type: section
title: PLUGIN_ADMIN.HTTP_HEADERS title: PLUGIN_ADMIN.HTTP_HEADERS
underline: true underline: true
fields:
pages.expires: pages.expires:
type: text type: text
size: small size: x-small
append: NICETIME.SECOND_PLURAL append: GRAV.NICETIME.SECOND_PLURAL
label: PLUGIN_ADMIN.EXPIRES label: PLUGIN_ADMIN.EXPIRES
help: PLUGIN_ADMIN.EXPIRES_HELP help: PLUGIN_ADMIN.EXPIRES_HELP
validate: validate:
@ -415,11 +505,15 @@ form:
type: bool type: bool
markdown: markdown:
type: section type: tab
title: Markdown title: PLUGIN_ADMIN.MARKDOWN
underline: true
fields: fields:
markdow_section:
type: section
title: PLUGIN_ADMIN.MARKDOWN
underline: true
pages.markdown.extra: pages.markdown.extra:
type: toggle type: toggle
label: Markdown extra label: Markdown extra
@ -460,13 +554,26 @@ form:
0: PLUGIN_ADMIN.NO 0: PLUGIN_ADMIN.NO
validate: validate:
type: bool type: bool
pages.markdown.valid_link_attributes:
type: selectize
size: large
label: PLUGIN_ADMIN.VALID_LINK_ATTRIBUTES
help: PLUGIN_ADMIN.VALID_LINK_ATTRIBUTES_HELP
placeholder: "rel, target, id, class, classes"
classes: fancy
validate:
type: commalist
caching: caching:
type: tab
title: PLUGIN_ADMIN.CACHING
fields:
caching_section:
type: section type: section
title: PLUGIN_ADMIN.CACHING title: PLUGIN_ADMIN.CACHING
underline: true underline: true
fields:
cache.enabled: cache.enabled:
type: toggle type: toggle
label: PLUGIN_ADMIN.CACHING label: PLUGIN_ADMIN.CACHING
@ -514,6 +621,27 @@ form:
help: PLUGIN_ADMIN.CACHE_PREFIX_HELP help: PLUGIN_ADMIN.CACHE_PREFIX_HELP
placeholder: PLUGIN_ADMIN.CACHE_PREFIX_PLACEHOLDER placeholder: PLUGIN_ADMIN.CACHE_PREFIX_PLACEHOLDER
cache.purge_at:
type: cron
label: PLUGIN_ADMIN.CACHE_PURGE_JOB
help: PLUGIN_ADMIN.CACHE_PURGE_JOB_HELP
default: '* 4 * * *'
cache.clear_at:
type: cron
label: PLUGIN_ADMIN.CACHE_CLEAR_JOB
help: PLUGIN_ADMIN.CACHE_CLEAR_JOB_HELP
default: '* 3 * * *'
cache.clear_job_type:
type: select
size: medium
label: PLUGIN_ADMIN.CACHE_JOB_TYPE
help: PLUGIN_ADMIN.CACHE_JOB_TYPE_HELP
options:
standard: Standard Cache Folders
all: All Cache Folders
cache.clear_images_by_default: cache.clear_images_by_default:
type: toggle type: toggle
label: PLUGIN_ADMIN.CLEAR_IMAGES_BY_DEFAULT label: PLUGIN_ADMIN.CLEAR_IMAGES_BY_DEFAULT
@ -539,7 +667,7 @@ form:
cache.lifetime: cache.lifetime:
type: text type: text
size: small size: small
append: NICETIME.SECOND_PLURAL append: GRAV.NICETIME.SECOND_PLURAL
label: PLUGIN_ADMIN.LIFETIME label: PLUGIN_ADMIN.LIFETIME
help: PLUGIN_ADMIN.LIFETIME_HELP help: PLUGIN_ADMIN.LIFETIME_HELP
validate: validate:
@ -621,14 +749,84 @@ form:
size: small size: small
label: PLUGIN_ADMIN.REDIS_PASSWORD label: PLUGIN_ADMIN.REDIS_PASSWORD
cache.redis.database:
type: text
size: medium
label: PLUGIN_ADMIN.REDIS_DATABASE
help: PLUGIN_ADMIN.REDIS_DATABASE_HELP
placeholder: "0"
validate:
type: number
min: 0
flex_caching:
type: section
title: PLUGIN_ADMIN.FLEX_CACHING
flex.cache.index.enabled:
type: toggle
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
flex.cache.index.lifetime:
type: text
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_LIFETIME
default: 60
validate:
type: int
flex.cache.object.enabled:
type: toggle
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
flex.cache.object.lifetime:
type: text
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_LIFETIME
default: 600
validate:
type: int
flex.cache.render.enabled:
type: toggle
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
flex.cache.render.lifetime:
type: text
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_LIFETIME
default: 600
validate:
type: int
twig: twig:
type: tab
title: PLUGIN_ADMIN.TWIG_TEMPLATING
fields:
twig_section:
type: section type: section
title: PLUGIN_ADMIN.TWIG_TEMPLATING title: PLUGIN_ADMIN.TWIG_TEMPLATING
underline: true underline: true
fields:
twig.cache: twig.cache:
type: toggle type: toggle
label: PLUGIN_ADMIN.TWIG_CACHING label: PLUGIN_ADMIN.TWIG_CACHING
@ -666,7 +864,8 @@ form:
type: toggle type: toggle
label: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES label: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES
help: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES_HELP help: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES_HELP
highlight: 0 highlight: 1
default: 1
options: options:
1: PLUGIN_ADMIN.YES 1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO 0: PLUGIN_ADMIN.NO
@ -685,11 +884,15 @@ form:
type: bool type: bool
assets: assets:
type: tab
title: PLUGIN_ADMIN.ASSETS
fields:
assets_section:
type: section type: section
title: PLUGIN_ADMIN.ASSETS title: PLUGIN_ADMIN.ASSETS
underline: true underline: true
fields:
assets.css_pipeline: assets.css_pipeline:
type: toggle type: toggle
label: PLUGIN_ADMIN.CSS_PIPELINE label: PLUGIN_ADMIN.CSS_PIPELINE
@ -811,6 +1014,17 @@ form:
validate: validate:
type: bool type: bool
assets.enable_asset_sri:
type: toggle
label: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS
help: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.collections: assets.collections:
type: multilevel type: multilevel
label: PLUGIN_ADMIN.COLLECTIONS label: PLUGIN_ADMIN.COLLECTIONS
@ -820,11 +1034,15 @@ form:
type: array type: array
errors: errors:
type: tab
title: PLUGIN_ADMIN.ERROR_HANDLER
fields:
errors_section:
type: section type: section
title: PLUGIN_ADMIN.ERROR_HANDLER title: PLUGIN_ADMIN.ERROR_HANDLER
underline: true underline: true
fields:
errors.display: errors.display:
type: select type: select
label: PLUGIN_ADMIN.DISPLAY_ERRORS label: PLUGIN_ADMIN.DISPLAY_ERRORS
@ -850,12 +1068,53 @@ form:
validate: validate:
type: bool type: bool
log.handler:
type: select
size: small
label: PLUGIN_ADMIN.LOG_HANDLER
help: PLUGIN_ADMIN.LOG_HANDLER_HELP
default: 'file'
options:
'file': 'File'
'syslog': 'Syslog'
log.syslog.facility:
type: select
size: small
label: PLUGIN_ADMIN.SYSLOG_FACILITY
help: PLUGIN_ADMIN.SYSLOG_FACILITY_HELP
default: local6
options:
auth: auth
authpriv: authpriv
cron: cron
daemon: daemon
kern: kern
lpr: lpr
mail: mail
news: news
syslog: syslog
user: user
uucp: uucp
local0: local0
local1: local1
local2: local2
local3: local3
local4: local4
local5: local5
local6: local6
local7: local7
debugger: debugger:
type: tab
title: PLUGIN_ADMIN.DEBUGGER
fields:
debugger_section:
type: section type: section
title: PLUGIN_ADMIN.DEBUGGER title: PLUGIN_ADMIN.DEBUGGER
underline: true underline: true
fields:
debugger.enabled: debugger.enabled:
type: toggle type: toggle
label: PLUGIN_ADMIN.DEBUGGER label: PLUGIN_ADMIN.DEBUGGER
@ -867,6 +1126,27 @@ form:
validate: validate:
type: bool type: bool
debugger.provider:
type: select
label: PLUGIN_ADMIN.DEBUGGER_PROVIDER
help: PLUGIN_ADMIN.DEBUGGER_PROVIDER_HELP
size: medium
default: debugbar
options:
debugbar: PLUGIN_ADMIN.DEBUGGER_DEBUGBAR
clockwork: PLUGIN_ADMIN.DEBUGGER_CLOCKWORK
debugger.censored:
type: toggle
label: PLUGIN_ADMIN.DEBUGGER_CENSORED
help: PLUGIN_ADMIN.DEBUGGER_CENSORED_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
debugger.shutdown.close_connection: debugger.shutdown.close_connection:
type: toggle type: toggle
label: PLUGIN_ADMIN.SHUTDOWN_CLOSE_CONNECTION label: PLUGIN_ADMIN.SHUTDOWN_CLOSE_CONNECTION
@ -879,11 +1159,15 @@ form:
type: bool type: bool
media: media:
type: tab
title: PLUGIN_ADMIN.MEDIA
fields:
media_section:
type: section type: section
title: PLUGIN_ADMIN.MEDIA title: PLUGIN_ADMIN.MEDIA
underline: true underline: true
fields:
images.default_image_quality: images.default_image_quality:
type: range type: range
append: '%' append: '%'
@ -929,6 +1213,28 @@ form:
type: toggle type: toggle
label: PLUGIN_ADMIN.IMAGES_AUTO_FIX_ORIENTATION label: PLUGIN_ADMIN.IMAGES_AUTO_FIX_ORIENTATION
help: PLUGIN_ADMIN.IMAGES_AUTO_FIX_ORIENTATION_HELP help: PLUGIN_ADMIN.IMAGES_AUTO_FIX_ORIENTATION_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.defaults.loading:
type: select
size: small
label: PLUGIN_ADMIN.IMAGES_LOADING
help: PLUGIN_ADMIN.IMAGES_LOADING_HELP
highlight: auto
options:
auto: Auto
lazy: Lazy
eager: Eager
images.seofriendly:
type: toggle
label: PLUGIN_ADMIN.IMAGES_SEOFRIENDLY
help: PLUGIN_ADMIN.IMAGES_SEOFRIENDLY_HELP
highlight: 0 highlight: 0
options: options:
1: PLUGIN_ADMIN.YES 1: PLUGIN_ADMIN.YES
@ -958,8 +1264,6 @@ form:
validate: validate:
type: bool type: bool
media.allowed_fallback_types: media.allowed_fallback_types:
type: selectize type: selectize
size: large size: large
@ -978,12 +1282,55 @@ form:
validate: validate:
type: commalist type: commalist
section_images_cls:
type: section
title: PLUGIN_ADMIN.IMAGES_CLS_TITLE
underline: true
images.cls.auto_sizes:
type: toggle
label: PLUGIN_ADMIN.IMAGES_CLS_AUTO_SIZES
help: PLUGIN_ADMIN.IMAGES_CLS_AUTO_SIZES_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.cls.aspect_ratio:
type: toggle
label: PLUGIN_ADMIN.IMAGES_CLS_ASPECT_RATIO
help: PLUGIN_ADMIN.IMAGES_CLS_ASPECT_RATIO_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.cls.retina_scale:
type: select
label: PLUGIN_ADMIN.IMAGES_CLS_RETINA_SCALE
help: PLUGIN_ADMIN.IMAGES_CLS_RETINA_SCALE_HELP
size: small
highlight: 1
options:
1: 1X
2: 2X
3: 3X
4: 4X
session: session:
type: tab
title: PLUGIN_ADMIN.SESSION
fields:
session_section:
type: section type: section
title: PLUGIN_ADMIN.SESSION title: PLUGIN_ADMIN.SESSION
underline: true underline: true
fields:
session.enabled: session.enabled:
type: hidden type: hidden
label: PLUGIN_ADMIN.ENABLED label: PLUGIN_ADMIN.ENABLED
@ -1011,7 +1358,7 @@ form:
session.timeout: session.timeout:
type: text type: text
size: small size: small
append: NICETIME.SECOND_PLURAL append: GRAV.NICETIME.SECOND_PLURAL
label: PLUGIN_ADMIN.TIMEOUT label: PLUGIN_ADMIN.TIMEOUT
help: PLUGIN_ADMIN.TIMEOUT_HELP help: PLUGIN_ADMIN.TIMEOUT_HELP
validate: validate:
@ -1024,6 +1371,17 @@ form:
label: PLUGIN_ADMIN.NAME label: PLUGIN_ADMIN.NAME
help: PLUGIN_ADMIN.SESSION_NAME_HELP help: PLUGIN_ADMIN.SESSION_NAME_HELP
session.uniqueness:
type: select
size: medium
label: PLUGIN_ADMIN.SESSION_UNIQUENESS
help: PLUGIN_ADMIN.SESSION_UNIQUENESS_HELP
highlight: path
default: path
options:
path: Grav's root file path
salt: Grav's random security salt
session.secure: session.secure:
type: toggle type: toggle
label: PLUGIN_ADMIN.SESSION_SECURE label: PLUGIN_ADMIN.SESSION_SECURE
@ -1048,12 +1406,24 @@ form:
validate: validate:
type: bool type: bool
session.domain:
type: text
size: small
label: PLUGIN_ADMIN.SESSION_DOMAIN
help: PLUGIN_ADMIN.SESSION_DOMAIN_HELP
session.path: session.path:
type: text type: text
size: small size: small
label: PLUGIN_ADMIN.SESSION_PATH label: PLUGIN_ADMIN.SESSION_PATH
help: PLUGIN_ADMIN.SESSION_PATH_HELP help: PLUGIN_ADMIN.SESSION_PATH_HELP
session.samesite:
type: text
size: small
label: PLUGIN_ADMIN.SESSION_SAMESITE
help: PLUGIN_ADMIN.SESSION_SAMESITE_HELP
session.split: session.split:
type: toggle type: toggle
label: PLUGIN_ADMIN.SESSION_SPLIT label: PLUGIN_ADMIN.SESSION_SPLIT
@ -1067,11 +1437,15 @@ form:
type: bool type: bool
advanced: advanced:
type: tab
title: PLUGIN_ADMIN.ADVANCED
fields:
advanced_section:
type: section type: section
title: PLUGIN_ADMIN.ADVANCED title: PLUGIN_ADMIN.ADVANCED
underline: true underline: true
fields:
gpm.releases: gpm.releases:
type: toggle type: toggle
label: PLUGIN_ADMIN.GPM_RELEASES label: PLUGIN_ADMIN.GPM_RELEASES
@ -1101,9 +1475,8 @@ form:
gpm.official_gpm_only: gpm.official_gpm_only:
type: toggle type: toggle
label: PLUGIN_ADMIN.GPM_OFFICIAL_ONLY label: PLUGIN_ADMIN.GPM_OFFICIAL_ONLY
highlight: auto
help: PLUGIN_ADMIN.GPM_OFFICIAL_ONLY_HELP
highlight: 1 highlight: 1
help: PLUGIN_ADMIN.GPM_OFFICIAL_ONLY_HELP
options: options:
1: PLUGIN_ADMIN.YES 1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO 0: PLUGIN_ADMIN.NO
@ -1219,11 +1592,68 @@ form:
label: PLUGIN_ADMIN.CUSTOM_BASE_URL label: PLUGIN_ADMIN.CUSTOM_BASE_URL
help: PLUGIN_ADMIN.CUSTOM_BASE_URL_HELP help: PLUGIN_ADMIN.CUSTOM_BASE_URL_HELP
http_x_forwarded.protocol:
type: toggle
label: HTTP_X_FORWARDED_PROTO Enabled
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_x_forwarded.host:
type: toggle
label: HTTP_X_FORWARDED_HOST Enabled
highlight: 0
default: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_x_forwarded.port:
type: toggle
label: HTTP_X_FORWARDED_PORT Enabled
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_x_forwarded.ip:
type: toggle
label: HTTP_X_FORWARDED IP Enabled
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
strict_mode.blueprint_compat:
type: toggle
label: PLUGIN_ADMIN.STRICT_BLUEPRINT_COMPAT
highlight: 0
default: 0
help: PLUGIN_ADMIN.STRICT_BLUEPRINT_COMPAT_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
strict_mode.yaml_compat: strict_mode.yaml_compat:
type: toggle type: toggle
label: PLUGIN_ADMIN.STRICT_YAML_COMPAT label: PLUGIN_ADMIN.STRICT_YAML_COMPAT
highlight: 1 highlight: 0
default: 1 default: 0
help: PLUGIN_ADMIN.STRICT_YAML_COMPAT_HELP help: PLUGIN_ADMIN.STRICT_YAML_COMPAT_HELP
options: options:
1: PLUGIN_ADMIN.YES 1: PLUGIN_ADMIN.YES
@ -1234,11 +1664,59 @@ form:
strict_mode.twig_compat: strict_mode.twig_compat:
type: toggle type: toggle
label: PLUGIN_ADMIN.STRICT_TWIG_COMPAT label: PLUGIN_ADMIN.STRICT_TWIG_COMPAT
highlight: 1 highlight: 0
default: 1 default: 0
help: PLUGIN_ADMIN.STRICT_TWIG_COMPAT_HELP help: PLUGIN_ADMIN.STRICT_TWIG_COMPAT_HELP
options: options:
1: PLUGIN_ADMIN.YES 1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO 0: PLUGIN_ADMIN.NO
validate: validate:
type: bool type: bool
experimental:
type: tab
title: PLUGIN_ADMIN.EXPERIMENTAL
fields:
experimental_section:
type: section
title: PLUGIN_ADMIN.EXPERIMENTAL
underline: true
# flex_pages:
# type: section
# title: Flex Pages
#
# pages.type:
# type: select
# label: PLUGIN_ADMIN.PAGES_TYPE
# highlight: regular
# help: PLUGIN_ADMIN.PAGES_TYPE_HELP
# options:
# regular: PLUGIN_ADMIN.REGULAR
# flex: PLUGIN_ADMIN.FLEX
pages.type:
type: hidden
flex_accounts:
type: section
title: Flex Accounts
accounts.type:
type: select
label: PLUGIN_ADMIN.ACCOUNTS_TYPE
highlight: stable
help: PLUGIN_ADMIN.ACCOUNTS_TYPE_HELP
options:
regular: PLUGIN_ADMIN.REGULAR
flex: PLUGIN_ADMIN.FLEX
accounts.storage:
type: select
label: PLUGIN_ADMIN.ACCOUNTS_STORAGE
highlight: stable
help: PLUGIN_ADMIN.ACCOUNTS_STORAGE_HELP
options:
file: PLUGIN_ADMIN.FILE
folder: PLUGIN_ADMIN.FOLDER

View File

@ -0,0 +1,8 @@
title: Flex User Accounts
description: Manage your User Accounts in Flex.
type: flex-objects
# Deprecated in Grav 1.7.0-rc.4: file was renamed to user-accounts.yaml
extends@:
type: user-accounts
context: blueprints://flex

View File

@ -0,0 +1,17 @@
form:
compatibility:
type: tab
title: Compatibility
fields:
object.compat.events:
type: toggle
toggleable: true
label: Admin event compatibility
help: Enables onAdminSave and onAdminAfterSave events for plugins
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool

View File

@ -0,0 +1,212 @@
title: Pages
description: Manage your Grav Pages in Flex.
type: flex-objects
# Extends a page (blueprint gets overridden inside the object)
extends@:
type: default
context: blueprints://pages
#
# HIGHLY SPECIALIZED FLEX TYPE, AVOID USING PAGES AS BASE FOR YOUR OWN TYPE.
#
# Flex configuration
config:
# Administration Configuration (needs Flex Objects plugin)
admin:
# Admin router
router:
path: '/pages'
# Permissions
permissions:
# Primary permissions
admin.pages:
type: crudl
label: Pages
admin.configuration.pages:
type: default
label: Pages Configuration
# Admin menu
menu:
list:
route: '/pages'
title: PLUGIN_ADMIN.PAGES
icon: fa-file-text
authorize: ['admin.pages.list', 'admin.super']
priority: 5
# Admin template type (folder)
template: pages
# Allowed admin actions
actions:
list: true
create: true
read: true
update: true
delete: true
# List view
list:
# Fields shown in the list view
fields:
published:
width: 8
alias: header.published
visible:
width: 8
field:
label: Visible
type: toggle
menu:
link: edit
alias: header.menu
full_route:
field:
label: Route
type: text
link: edit
sort:
field: key
name:
width: 8
field:
label: Type
type: text
translations:
width: 8
field:
label: Translations
type: text
# updated_date:
# alias: header.update_date
# Extra options
options:
# Default number of records for pagination
per_page: 20
# Default ordering
order:
by: key
dir: asc
# TODO: not used yet
buttons:
back:
icon: reply
title: PLUGIN_ADMIN.BACK
add:
icon: plus
label: PLUGIN_ADMIN.ADD
edit:
title:
template: "{% if object.root %}Root <small>( &lt;root&gt; ){% else %}{{ (form.value('header.title') ?? form.value('folder'))|e }} <small>( {{ (object.getRoute().toString(false) ?: '/')|e }} )</small>{% endif %}"
# TODO: not used yet
buttons:
back:
icon: reply
title: PLUGIN_ADMIN.BACK
preview:
icon: eye
title: PLUGIN_ADMIN.PREVIEW
add:
icon: plus
label: PLUGIN_ADMIN.ADD
copy:
icon: copy
label: PLUGIN_ADMIN.COPY
move:
icon: arrows
label: PLUGIN_ADMIN.MOVE
delete:
icon: close
label: PLUGIN_ADMIN.DELETE
save:
icon: check
label: PLUGIN_ADMIN.SAVE
# Preview View
preview:
enabled: true
# Configure view
configure:
authorize: 'admin.configuration.pages'
# Site Configuration
site:
# Hide from flex types
hidden: true
templates:
collection:
# Lookup for the template layout files for collections of objects
paths:
- 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
object:
# Lookup for the template layout files for objects
paths:
- 'flex/{TYPE}/object/{LAYOUT}{EXT}'
defaults:
# Default template {TYPE}; overridden by filename of this blueprint if template folder exists
type: pages
# Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
layout: default
# Default filters for frontend.
filter:
- withPublished
# Data Configuration
data:
object: 'Grav\Common\Flex\Types\Pages\PageObject'
collection: 'Grav\Common\Flex\Types\Pages\PageCollection'
index: 'Grav\Common\Flex\Types\Pages\PageIndex'
storage:
class: 'Grav\Common\Flex\Types\Pages\Storage\PageStorage'
options:
formatter:
class: 'Grav\Framework\File\Formatter\MarkdownFormatter'
folder: 'page://'
# Keep index file in filesystem to speed up lookups
indexed: true
# Set default ordering of the pages
ordering:
storage_key: ASC
search:
# Search options
options:
contains: 1
# Fields to be searched
fields:
- key
- menu
- title
- name
blueprints:
configure:
fields:
import@:
type: configure/compat
context: blueprints://flex
# Regular form definition
form:
fields:
lang:
type: hidden
value: ''
tabs:
fields:
security:
type: tab
title: PLUGIN_ADMIN.SECURITY
import@:
type: partials/security
context: blueprints://pages

View File

@ -0,0 +1,70 @@
form:
validation: loose
fields:
tabs:
type: tabs
fields:
cache:
type: tab
title: Caching
fields:
object.cache.index.enabled:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_ENABLED
highlight: 1
config-default@: system.flex.cache.index.enabled
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
object.cache.index.lifetime:
type: text
toggleable: true
label: PLUGIN_ADMIN.FLEX_INDEX_CACHE_LIFETIME
config-default@: system.flex.cache.index.lifetime
validate:
type: int
object.cache.object.enabled:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_ENABLED
highlight: 1
config-default@: system.flex.cache.object.enabled
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
object.cache.object.lifetime:
type: text
toggleable: true
label: PLUGIN_ADMIN.FLEX_OBJECT_CACHE_LIFETIME
config-default@: system.flex.cache.object.lifetime
validate:
type: int
object.cache.render.enabled:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_ENABLED
highlight: 1
config-default@: system.flex.cache.render.enabled
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
object.cache.render.lifetime:
type: text
toggleable: true
label: PLUGIN_ADMIN.FLEX_RENDER_CACHE_LIFETIME
config-default@: system.flex.cache.render.lifetime
validate:
type: int

View File

@ -0,0 +1,142 @@
title: User Accounts
description: Manage your User Accounts in Flex.
type: flex-objects
# Extends user account
extends@:
type: account
context: blueprints://user
#
# HIGHLY SPECIALIZED FLEX TYPE, AVOID USING USER ACCOUNTS AS BASE FOR YOUR OWN TYPE.
#
# Flex configuration
config:
# Administration Configuration (needs Flex Objects plugin)
admin:
# Admin router
router:
path: '/accounts/users'
actions:
configure:
path: '/accounts/configure'
redirects:
'/user': '/accounts/users'
'/accounts': '/accounts/users'
# Permissions
permissions:
# Primary permissions
admin.users:
type: crudl
label: User Accounts
admin.configuration.users:
type: default
label: Accounts Configuration
# Admin menu
menu:
base:
location: '/accounts'
route: '/accounts/users'
index: 0
title: PLUGIN_ADMIN.ACCOUNTS
icon: fa-users
authorize: ['admin.users.list', 'admin.super']
priority: 6
# Admin template type (folder)
template: user-accounts
# List view
list:
# Fields shown in the list view
fields:
username:
link: edit
search: true
field:
label: PLUGIN_ADMIN.USERNAME
email:
search: true
fullname:
search: true
# Extra options
options:
per_page: 20
order:
by: username
dir: asc
# Edit view
edit:
title:
template: "{{ form.value('fullname') ?? form.value('username') }} &lt;{{ form.value('email') }}&gt;"
# Configure view
configure:
hidden: true
authorize: 'admin.configuration.users'
form: 'accounts'
title:
template: "{{ 'PLUGIN_ADMIN.ACCOUNTS'|tu }} {{ 'PLUGIN_ADMIN.CONFIGURATION'|tu }}"
# Site Configuration
site:
# Hide from flex types
hidden: true
templates:
collection:
# Lookup for the template layout files for collections of objects
paths:
- 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
object:
# Lookup for the template layout files for objects
paths:
- 'flex/{TYPE}/object/{LAYOUT}{EXT}'
defaults:
# Default template {TYPE}; overridden by filename of this blueprint if template folder exists
type: user-accounts
# Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
layout: default
# Data Configuration
data:
object: 'Grav\Common\Flex\Types\Users\UserObject'
collection: 'Grav\Common\Flex\Types\Users\UserCollection'
index: 'Grav\Common\Flex\Types\Users\UserIndex'
storage:
class: 'Grav\Common\Flex\Types\Users\Storage\UserFileStorage'
options:
formatter:
class: 'Grav\Framework\File\Formatter\YamlFormatter'
folder: 'account://'
pattern: '{FOLDER}/{KEY}{EXT}'
indexed: true
key: username
case_sensitive: false
search:
options:
contains: 1
fields:
- key
- email
blueprints:
configure:
fields:
import@:
type: configure/compat
context: blueprints://flex
# Regular form definition
form:
fields:
username:
flex-disabled@: exists
disabled: false
flex-readonly@: exists
readonly: false
validate:
required: true

View File

@ -0,0 +1,123 @@
title: User Groups
description: Manage your User Groups in Flex.
type: flex-objects
# Extends user group
extends@:
type: group
context: blueprints://user
# Flex configuration
config:
# Administration Configuration (needs Flex Objects plugin)
admin:
# Admin router
router:
path: '/accounts/groups'
actions:
configure:
path: '/accounts/configure'
redirects:
'/groups': '/accounts/groups'
'/accounts': '/accounts/groups'
# Permissions
permissions:
# Primary permissions
admin.users:
type: crudl
label: User Accounts
admin.configuration.users:
type: default
label: Accounts Configuration
# Admin menu
menu:
base:
location: '/accounts'
route: '/accounts/groups'
index: 1
title: PLUGIN_ADMIN.ACCOUNTS
icon: fa-users
authorize: ['admin.users.list', 'admin.super']
priority: 6
# Admin template type (folder)
template: user-groups
# List view
list:
# Fields shown in the list view
fields:
groupname:
link: edit
search: true
readableName:
search: true
description:
search: true
# Extra options
options:
per_page: 20
order:
by: groupname
dir: asc
# Edit view
edit:
title:
template: "{{ form.value('readableName') ?? form.value('groupname') }}"
# Configure view
configure:
hidden: true
authorize: 'admin.configuration.users'
form: 'accounts'
title:
template: "{{ 'PLUGIN_ADMIN.ACCOUNTS'|tu }} {{ 'PLUGIN_ADMIN.CONFIGURATION'|tu }}"
# Site Configuration
site:
# Hide from flex types
hidden: true
templates:
collection:
# Lookup for the template layout files for collections of objects
paths:
- 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
object:
# Lookup for the template layout files for objects
paths:
- 'flex/{TYPE}/object/{LAYOUT}{EXT}'
defaults:
# Default template {TYPE}; overridden by filename of this blueprint if template folder exists
type: user-groups
# Default template {LAYOUT}; can be overridden in render calls (usually Twig in templates)
layout: default
# Data Configuration
data:
object: 'Grav\Common\Flex\Types\UserGroups\UserGroupObject'
collection: 'Grav\Common\Flex\Types\UserGroups\UserGroupCollection'
index: 'Grav\Common\Flex\Types\UserGroups\UserGroupIndex'
storage:
class: 'Grav\Framework\Flex\Storage\SimpleStorage'
options:
formatter:
class: 'Grav\Framework\File\Formatter\YamlFormatter'
folder: 'user://config/groups.yaml'
key: groupname
search:
options:
contains: 1
fields:
- key
- groupname
- description
blueprints:
configure:
fields:
import@:
type: configure/compat
context: blueprints://flex

View File

@ -121,7 +121,7 @@ form:
underline: true underline: true
folder: folder:
type: text type: folder-slug
label: PLUGIN_ADMIN.FOLDER_NAME label: PLUGIN_ADMIN.FOLDER_NAME
validate: validate:
rule: slug rule: slug

View File

@ -1,4 +1,4 @@
title: PLUGIN_ADMIN.MODULAR title: PLUGIN_ADMIN.MODULE
extends@: default extends@: default
form: form:
@ -13,7 +13,7 @@ form:
modular_title: modular_title:
type: spacer type: spacer
title: PLUGIN_ADMIN.MODULAR_SETUP title: PLUGIN_ADMIN.MODULE_SETUP
header.content.items: header.content.items:
type: text type: text
@ -34,5 +34,3 @@ form:
help: '"desc" or "asc" are valid values' help: '"desc" or "asc" are valid values'
placeholder: desc placeholder: desc
size: small size: small

View File

@ -0,0 +1,71 @@
form:
fields:
_site:
type: section
title: PLUGIN_ADMIN.PAGE_ACCESS
underline: true
fields:
header.login.visibility_requires_access:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.PAGE_VISIBILITY_REQUIRES_ACCESS
help: PLUGIN_ADMIN.PAGE_VISIBILITY_REQUIRES_ACCESS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.access:
type: acl_picker
label: PLUGIN_ADMIN.PAGE_ACCESS
help: PLUGIN_ADMIN.PAGE_ACCESS_HELP
ignore_empty: true
data_type: access
validate:
type: array
value_type: bool
_admin:
security@: {or: [admin.super, admin.configuration.pages]}
type: section
title: PLUGIN_ADMIN.PAGE PERMISSIONS
underline: true
fields:
header.permissions.inherit:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.PAGE_INHERIT_PERMISSIONS
help: PLUGIN_ADMIN.PAGE_INHERIT_PERMISSIONS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.permissions.authors:
type: list
toggleable: true
label: PLUGIN_ADMIN.PAGE_AUTHORS
help: PLUGIN_ADMIN.PAGE_AUTHORS_HELP
fields:
value:
type: text
placeholder: PLUGIN_ADMIN.USERNAME
style: vertical
header.permissions.groups:
ignore@: true
type: acl_picker
label: PLUGIN_ADMIN.PAGE_GROUPS
help: PLUGIN_ADMIN.PAGE_GROUPS_HELP
ignore_empty: true
data_type: permissions

View File

@ -0,0 +1,16 @@
title: PLUGIN_ADMIN.ROOT
rules:
slug:
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
min: 1
max: 200
form:
validation: loose
fields:
tabs:
type: tabs
active: 1

View File

@ -67,6 +67,15 @@ form:
default: 'en' default: 'en'
help: PLUGIN_ADMIN.LANGUAGE_HELP help: PLUGIN_ADMIN.LANGUAGE_HELP
content_editor:
type: select
label: PLUGIN_ADMIN.CONTENT_EDITOR
size: medium
classes: fancy
data-options@: 'Grav\Plugin\Admin\Admin::contentEditor'
default: 'default'
help: PLUGIN_ADMIN.CONTENT_EDITOR_HELP
twofa_check: twofa_check:
type: conditional type: conditional
condition: config.plugins.admin.twofa_enabled condition: config.plugins.admin.twofa_enabled
@ -99,14 +108,17 @@ form:
sublabel: PLUGIN_ADMIN.2FA_SECRET_HELP sublabel: PLUGIN_ADMIN.2FA_SECRET_HELP
security: security:
security@: admin.super
title: PLUGIN_ADMIN.ACCESS_LEVELS title: PLUGIN_ADMIN.ACCESS_LEVELS
type: section type: section
security: admin.super
underline: true underline: true
fields: fields:
groups: groups:
security@: admin.super
type: select type: select
multiple: true multiple: true
size: large size: large
@ -118,8 +130,11 @@ form:
type: commalist type: commalist
access: access:
security@: admin.super
type: permissions type: permissions
check_authorize: true
label: PLUGIN_ADMIN.PERMISSIONS label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true ignore_empty: true
validate: validate:
type: array type: array
value_type: bool

View File

@ -12,5 +12,7 @@ form:
type: text type: text
label: PLUGIN_ADMIN.USERNAME label: PLUGIN_ADMIN.USERNAME
help: PLUGIN_ADMIN.USERNAME_HELP help: PLUGIN_ADMIN.USERNAME_HELP
unset-disabled@: true
unset-readonly@: true
validate: validate:
required: true required: true

View File

@ -1,23 +1,28 @@
title: Group title: Group
rules:
slug:
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
min: 1
max: 200
form: form:
validation: loose validation: loose
fields: fields:
spacer:
type: spacer
text: '<br>'
groupname: groupname:
type: text type: text
size: large size: large
label: PLUGIN_ADMIN.NAME label: PLUGIN_ADMIN.GROUP_NAME
disabled: true flex-disabled@: exists
readonly: true flex-readonly@: exists
validate:
required: true
rule: slug
readableName: readableName:
type: text type: text
size: large size: large
label: PLUGIN_ADMIN_PRO.READABLE_NAME label: PLUGIN_ADMIN.DISPLAY_NAME
description: description:
type: text type: text
@ -27,11 +32,24 @@ form:
icon: icon:
type: text type: text
size: small size: small
label: PLUGIN_ADMIN_PRO.ICON label: PLUGIN_ADMIN.ICON
enabled:
type: toggle
label: PLUGIN_ADMIN.ENABLED
highlight: 1
default: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
access: access:
type: permissions type: permissions
check_authorize: false
label: PLUGIN_ADMIN.PERMISSIONS label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true ignore_empty: true
validate: validate:
type: array type: array
value_type: bool

View File

@ -1,5 +1,11 @@
title: PLUGIN_ADMIN_PRO.ADD_GROUP title: PLUGIN_ADMIN_PRO.ADD_GROUP
rules:
slug:
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
min: 1
max: 200
form: form:
validation: loose validation: loose
fields: fields:
@ -14,3 +20,4 @@ form:
help: PLUGIN_ADMIN_PRO.GROUP_NAME_HELP help: PLUGIN_ADMIN_PRO.GROUP_NAME_HELP
validate: validate:
required: true required: true
rule: slug

View File

@ -0,0 +1,15 @@
purge:
trigger: space
max_backups_count: 25
max_backups_space: 5
max_backups_time: 365
profiles:
-
name: 'Default Site Backup'
root: '/'
schedule: false
schedule_at: '0 3 * * *'
exclude_paths: "/backup\r\n/cache\r\n/images\r\n/logs\r\n/tmp"
exclude_files: ".DS_Store\r\n.git\r\n.svn\r\n.hg\r\n.idea\r\n.vscode\r\nnode_modules"

View File

@ -24,6 +24,10 @@ types:
type: image type: image
thumb: media/thumb-png.png thumb: media/thumb-png.png
mime: image/png mime: image/png
webp:
type: image
thumb: media/thumb-webp.png
mime: image/webp
gif: gif:
type: animated type: animated
thumb: media/thumb-gif.png thumb: media/thumb-gif.png
@ -103,7 +107,7 @@ types:
docx: docx:
type: file type: file
thumb: media/thumb-docx.png thumb: media/thumb-docx.png
mime: application/msword mime: application/vnd.openxmlformats-officedocument.wordprocessingml.document
xls: xls:
type: file type: file
thumb: media/thumb-xls.png thumb: media/thumb-xls.png
@ -111,7 +115,7 @@ types:
xlsx: xlsx:
type: file type: file
thumb: media/thumb-xlsx.png thumb: media/thumb-xlsx.png
mime: application/vnd.ms-excel mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
ppt: ppt:
type: file type: file
thumb: media/thumb-ppt.png thumb: media/thumb-ppt.png
@ -119,7 +123,7 @@ types:
pptx: pptx:
type: file type: file
thumb: media/thumb-pptx.png thumb: media/thumb-pptx.png
mime: application/vnd.ms-powerpoint mime: application/vnd.openxmlformats-officedocument.presentationml.presentation
pps: pps:
type: file type: file
thumb: media/thumb-pps.png thumb: media/thumb-pps.png

View File

@ -0,0 +1,53 @@
actions:
site:
type: access
label: Site
admin:
type: access
label: Admin
admin.pages:
type: access
label: Pages
admin.users:
type: access
label: User Accounts
types:
default:
type: access
crud:
type: compact
letters:
c:
action: create
label: PLUGIN_ADMIN.CREATE
r:
action: read
label: PLUGIN_ADMIN.READ
u:
action: update
label: PLUGIN_ADMIN.UPDATE
d:
action: delete
label: PLUGIN_ADMIN.DELETE
crudp:
type: crud
letters:
p:
action: publish
label: PLUGIN_ADMIN.PUBLISH
crudl:
type: crud
letters:
l:
action: list
label: PLUGIN_ADMIN.LIST
crudpl:
type: crud
use:
- crudp
- crudl

View File

@ -5,6 +5,13 @@ xss_enabled:
moz_binding: true moz_binding: true
html_inline_styles: true html_inline_styles: true
dangerous_tags: true dangerous_tags: true
xss_invalid_protocols:
- javascript
- livescript
- vbscript
- mocha
- feed
- data
xss_dangerous_tags: xss_dangerous_tags:
- applet - applet
- meta - meta
@ -29,3 +36,4 @@ uploads_dangerous_extensions:
- htm - htm
- js - js
- exe - exe
sanitize_svg: true

View File

@ -27,7 +27,7 @@ routes:
blog: blog:
route: '/blog' # Custom value added (accessible via system.blog.route) route: '/blog' # Custom value added (accessible via system.blog.route)
#menu: # Sample Menu Example #menu: # Menu Example
# - text: Source # - text: Source
# icon: github # icon: github
# url: https://github.com/getgrav/grav # url: https://github.com/getgrav/grav

View File

@ -1,16 +0,0 @@
schemes:
image:
type: ReadOnlyStream
paths:
- user://images
- system://images
page:
type: ReadOnlyStream
paths:
- user://pages
account:
type: ReadOnlyStream
paths:
- user://accounts

View File

@ -10,21 +10,31 @@ custom_base_url: '' # Set the base_url manually, e.
username_regex: '^[a-z0-9_-]{3,16}$' # Only lowercase chars, digits, dashes, underscores. 3 - 16 chars username_regex: '^[a-z0-9_-]{3,16}$' # Only lowercase chars, digits, dashes, underscores. 3 - 16 chars
pwd_regex: '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}' # At least one number, one uppercase and lowercase letter, and be at least 8+ chars pwd_regex: '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}' # At least one number, one uppercase and lowercase letter, and be at least 8+ chars
intl_enabled: true # Special logic for PHP International Extension (mod_intl) intl_enabled: true # Special logic for PHP International Extension (mod_intl)
http_x_forwarded: # Configuration options for the various HTTP_X_FORWARD headers
protocol: true
host: false
port: true
ip: true
languages: languages:
supported: [] # List of languages supported. eg: [en, fr, de] supported: [] # List of languages supported. eg: [en, fr, de]
default_lang: # Default is the first supported language. Must be one of the supported languages
include_default_lang: true # Include the default lang prefix in all URLs include_default_lang: true # Include the default lang prefix in all URLs
translations: true # Enable translations by default include_default_lang_file_extension: true # If true, include language code for the default language in file extension: default.en.md
translations: true # If false, translation keys are used instead of translated strings
translations_fallback: true # Fallback through supported translations if active lang doesn't exist translations_fallback: true # Fallback through supported translations if active lang doesn't exist
session_store_active: false # Store active language in session session_store_active: false # Store active language in session
http_accept_language: false # Attempt to set the language based on http_accept_language header in the browser http_accept_language: false # Attempt to set the language based on http_accept_language header in the browser
override_locale: false # Override the default or system locale with language specific one override_locale: false # Override the default or system locale with language specific one
content_fallback: {} # Custom language fallbacks. eg: {fr: ['fr', 'en']}
pages_fallback_only: false # DEPRECATED: Use `content_fallback` instead
home: home:
alias: '/home' # Default path for home, ie / alias: '/home' # Default path for home, ie /
hide_in_urls: false # Hide the home route in URLs hide_in_urls: false # Hide the home route in URLs
pages: pages:
type: regular # EXPERIMENTAL: Page type: regular or flex
theme: quark # Default theme (defaults to "quark" theme) theme: quark # Default theme (defaults to "quark" theme)
order: order:
by: default # Order pages by "default", "alpha" or "date" by: default # Order pages by "default", "alpha" or "date"
@ -52,19 +62,26 @@ pages:
special_chars: # List of special characters to automatically convert to entities special_chars: # List of special characters to automatically convert to entities
'>': 'gt' '>': 'gt'
'<': 'lt' '<': 'lt'
types: [txt,xml,html,htm,json,rss,atom] # list of valid page types valid_link_attributes: # Valid attributes to pass through via markdown links
- rel
- target
- id
- class
- classes
types: [html,htm,xml,txt,json,rss,atom] # list of valid page types
append_url_extension: '' # Append page's extension in Page urls (e.g. '.html' results in /path/page.html) append_url_extension: '' # Append page's extension in Page urls (e.g. '.html' results in /path/page.html)
expires: 604800 # Page expires time in seconds (604800 seconds = 7 days) expires: 604800 # Page expires time in seconds (604800 seconds = 7 days)
cache_control: # Can be blank for no setting, or a valid `cache-control` text value cache_control: # Can be blank for no setting, or a valid `cache-control` text value
last_modified: false # Set the last modified date header based on file modification timestamp last_modified: false # Set the last modified date header based on file modification timestamp
etag: false # Set the etag header tag etag: true # Set the etag header tag
vary_accept_encoding: false # Add `Vary: Accept-Encoding` header vary_accept_encoding: false # Add `Vary: Accept-Encoding` header
redirect_default_route: false # Automatically redirect to a page's default route redirect_default_code: 302 # Default code to use for redirects: 301|302|303
redirect_default_code: 302 # Default code to use for redirects redirect_trailing_slash: 1 # Always redirect trailing slash with redirect code 0|1|301|302 (0: no redirect, 1: use default code)
redirect_trailing_slash: true # Handle automatically or 302 redirect a trailing / URL redirect_default_route: 0 # Always redirect to page's default route using code 0|1|301|302, also removes .htm and .html extensions
ignore_files: [.DS_Store] # Files to ignore in Pages ignore_files: [.DS_Store] # Files to ignore in Pages
ignore_folders: [.git, .idea] # Folders to ignore in Pages ignore_folders: [.git, .idea] # Folders to ignore in Pages
ignore_hidden: true # Ignore all Hidden files and folders ignore_hidden: true # Ignore all Hidden files and folders
hide_empty_folders: false # If folder has no .md file, should it be hidden
url_taxonomy_filters: true # Enable auto-magic URL-based taxonomy filters for page collections url_taxonomy_filters: true # Enable auto-magic URL-based taxonomy filters for page collections
frontmatter: frontmatter:
process_twig: false # Should the frontmatter be processed to replace Twig variables? process_twig: false # Should the frontmatter be processed to replace Twig variables?
@ -74,8 +91,11 @@ cache:
enabled: true # Set to true to enable caching enabled: true # Set to true to enable caching
check: check:
method: file # Method to check for updates in pages: file|folder|hash|none method: file # Method to check for updates in pages: file|folder|hash|none
driver: auto # One of: auto|file|apc|xcache|memcache|wincache driver: auto # One of: auto|file|apcu|memcache|wincache
prefix: 'g' # Cache prefix string (prevents cache conflicts) prefix: 'g' # Cache prefix string (prevents cache conflicts)
purge_at: '0 4 * * *' # How often to purge old file cache (using new scheduler)
clear_at: '0 3 * * *' # How often to clear cache (using new scheduler)
clear_job_type: 'standard' # Type to clear when processing the scheduled clear job `standard`|`all`
clear_images_by_default: true # By default grav will include processed images in cache clear, this can be disabled clear_images_by_default: true # By default grav will include processed images in cache clear, this can be disabled
cli_compatibility: false # Ensures only non-volatile drivers are used (file, redis, memcache, etc.) cli_compatibility: false # Ensures only non-volatile drivers are used (file, redis, memcache, etc.)
lifetime: 604800 # Lifetime of cached data in seconds (0 = infinite) lifetime: 604800 # Lifetime of cached data in seconds (0 = infinite)
@ -83,14 +103,18 @@ cache:
allow_webserver_gzip: false # If true, `content-encoding: identity` but connection isn't closed before `onShutDown()` event allow_webserver_gzip: false # If true, `content-encoding: identity` but connection isn't closed before `onShutDown()` event
redis: redis:
socket: false # Path to redis unix socket (e.g. /var/run/redis/redis.sock), false = use server and port to connect socket: false # Path to redis unix socket (e.g. /var/run/redis/redis.sock), false = use server and port to connect
password: # Optional password
database: # Optional database ID
twig: twig:
cache: true # Set to true to enable Twig caching cache: true # Set to true to enable Twig caching
debug: true # Enable Twig debug debug: true # Enable Twig debug
auto_reload: true # Refresh cache on changes auto_reload: true # Refresh cache on changes
autoescape: false # Autoescape Twig vars (DEPRECATED, always enabled in strict mode) autoescape: true # Autoescape Twig vars (DEPRECATED, always enabled in strict mode)
undefined_functions: true # Allow undefined functions undefined_functions: true # Allow undefined functions
undefined_filters: true # Allow undefined filters undefined_filters: true # Allow undefined filters
safe_functions: [] # List of PHP functions which are allowed to be used as Twig functions
safe_filters: [] # List of PHP functions which are allowed to be used as Twig filters
umask_fix: false # By default Twig creates cached files as 755, fix switches this to 775 umask_fix: false # By default Twig creates cached files as 755, fix switches this to 775
assets: # Configuration for Assets Manager (JS, CSS) assets: # Configuration for Assets Manager (JS, CSS)
@ -105,6 +129,7 @@ assets: # Configuration for Assets Mana
js_pipeline_before_excludes: true # Render the pipeline before any excluded files js_pipeline_before_excludes: true # Render the pipeline before any excluded files
js_minify: true # Minify the JS during pipelining js_minify: true # Minify the JS during pipelining
enable_asset_timestamp: false # Enable asset timestamps enable_asset_timestamp: false # Enable asset timestamps
enable_asset_sri: false # Enable asset SRI
collections: collections:
jquery: system://assets/jquery/jquery-2.x.min.js jquery: system://assets/jquery/jquery-2.x.min.js
@ -112,8 +137,15 @@ errors:
display: 0 # Display either (1) Full backtrace | (0) Simple Error | (-1) System Error display: 0 # Display either (1) Full backtrace | (0) Simple Error | (-1) System Error
log: true # Log errors to /logs folder log: true # Log errors to /logs folder
log:
handler: file # Log handler. Currently supported: file | syslog
syslog:
facility: local6 # Syslog facilities output
debugger: debugger:
enabled: false # Enable Grav debugger and following settings enabled: false # Enable Grav debugger and following settings
provider: clockwork # Debugger provider: debugbar | clockwork
censored: false # Censor potentially sensitive information (POST parameters, cookies, files, configuration and most array/object data in log messages)
shutdown: shutdown:
close_connection: true # Close the connection before calling onShutdown(). false for debugging close_connection: true # Close the connection before calling onShutdown(). false for debugging
@ -122,7 +154,14 @@ images:
cache_all: false # Cache all image by default cache_all: false # Cache all image by default
cache_perms: '0755' # MUST BE IN QUOTES!! Default cache folder perms. Usually '0755' or '0775' cache_perms: '0755' # MUST BE IN QUOTES!! Default cache folder perms. Usually '0755' or '0775'
debug: false # Show an overlay over images indicating the pixel depth of the image when working with retina for example debug: false # Show an overlay over images indicating the pixel depth of the image when working with retina for example
auto_fix_orientation: false # Automatically fix the image orientation based on the Exif data auto_fix_orientation: true # Automatically fix the image orientation based on the Exif data
seofriendly: false # SEO-friendly processed image names
cls: # Cumulative Layout Shift: See https://web.dev/optimize-cls/
auto_sizes: false # Automatically add height/width to image
aspect_ratio: false # Reserve space with aspect ratio style
retina_scale: 1 # scale to adjust auto-sizes for better handling of HiDPI resolutions
defaults:
loading: auto # Let browser pick [auto|lazy|eager]
media: media:
enable_media_timestamp: false # Enable media timestamps enable_media_timestamp: false # Enable media timestamps
@ -135,10 +174,13 @@ session:
initialize: true # Initialize session from Grav (if false, plugin needs to start the session) initialize: true # Initialize session from Grav (if false, plugin needs to start the session)
timeout: 1800 # Timeout in seconds timeout: 1800 # Timeout in seconds
name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name
uniqueness: path # Should sessions be `path` based or `security.salt` based
secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS
httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed. httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed.
samesite: Lax # Set session SameSite. Possible values are Lax, Strict and None. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
split: true # Sessions should be independent between site and plugins (such as admin) split: true # Sessions should be independent between site and plugins (such as admin)
path: domain: # Domain used by sessions.
path: # Path used by sessions.
gpm: gpm:
releases: stable # Set to either 'stable' or 'testing' releases: stable # Set to either 'stable' or 'testing'
@ -147,6 +189,23 @@ gpm:
verify_peer: true # Sometimes on some systems (Windows most commonly) GPM is unable to connect because the SSL certificate cannot be verified. Disabling this setting might help. verify_peer: true # Sometimes on some systems (Windows most commonly) GPM is unable to connect because the SSL certificate cannot be verified. Disabling this setting might help.
official_gpm_only: true # By default GPM direct-install will only allow URLs via the official GPM proxy to ensure security official_gpm_only: true # By default GPM direct-install will only allow URLs via the official GPM proxy to ensure security
accounts:
type: regular # EXPERIMENTAL: Account type: regular or flex
storage: file # EXPERIMENTAL: Flex storage type: file or folder
flex:
cache:
index:
enabled: true # Set to true to enable Flex index caching. Is used to cache timestamps in files
lifetime: 60 # Lifetime of cached index in seconds (0 = infinite)
object:
enabled: true # Set to true to enable Flex object caching. Is used to cache object data
lifetime: 600 # Lifetime of cached objects in seconds (0 = infinite)
render:
enabled: true # Set to true to enable Flex render caching. Is used to cache rendered output
lifetime: 600 # Lifetime of cached HTML in seconds (0 = infinite)
strict_mode: strict_mode:
yaml_compat: true # Grav 1.5+: Enables YAML backwards compatibility yaml_compat: false # Set to true to enable YAML backwards compatibility
twig_compat: true # Grav 1.5+: Enables deprecated Twig autoescape setting (autoescape: false) twig_compat: false # Set to true to enable deprecated Twig settings (autoescape: false)
blueprint_compat: false # Set to true to enable backward compatible strict support for blueprints

View File

@ -1,42 +1,90 @@
<?php <?php
/** /**
* @package Grav.Core * @package Grav\Core
* *
* @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details. * @license MIT License; see LICENSE file for details.
*/ */
// Some standard defines // Some standard defines
define('GRAV', true); define('GRAV', true);
define('GRAV_VERSION', '1.5.10'); define('GRAV_VERSION', '1.7.15');
define('GRAV_SCHEMA', '1.7.0_2020-11-20_1');
define('GRAV_TESTING', false); define('GRAV_TESTING', false);
define('DS', '/');
// PHP minimum requirement
if (!defined('GRAV_PHP_MIN')) { if (!defined('GRAV_PHP_MIN')) {
define('GRAV_PHP_MIN', '5.6.4'); define('GRAV_PHP_MIN', '7.3.6');
} }
// Directories and Paths // Directory separator
if (!defined('GRAV_ROOT')) { if (!defined('DS')) {
define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, DS, getcwd())); define('DS', '/');
} }
define('ROOT_DIR', GRAV_ROOT . '/');
define('USER_PATH', 'user/'); // Absolute path to Grav root. This is where Grav is installed into.
define('USER_DIR', ROOT_DIR . USER_PATH); if (!defined('GRAV_ROOT')) {
define('CACHE_DIR', ROOT_DIR . 'cache/'); $path = rtrim(str_replace(DIRECTORY_SEPARATOR, DS, getenv('GRAV_ROOT') ?: getcwd()), DS);
define('GRAV_ROOT', $path);
}
// Absolute path to Grav webroot. This is the path where your site is located in.
if (!defined('GRAV_WEBROOT')) {
$path = rtrim(getenv('GRAV_WEBROOT') ?: GRAV_ROOT, DS);
define('GRAV_WEBROOT', $path);
}
// Relative path to user folder. This path needs to be located under GRAV_WEBROOT.
if (!defined('GRAV_USER_PATH')) {
$path = rtrim(getenv('GRAV_USER_PATH') ?: 'user', DS);
define('GRAV_USER_PATH', $path);
}
// Absolute or relative path to system folder. Defaults to GRAV_ROOT/system
// If system folder is outside of webroot, see https://github.com/getgrav/grav/issues/3297#issuecomment-810294972
if (!defined('GRAV_SYSTEM_PATH')) {
$path = rtrim(getenv('GRAV_SYSTEM_PATH') ?: 'system', DS);
define('GRAV_SYSTEM_PATH', $path);
}
// Absolute or relative path to cache folder. Defaults to GRAV_ROOT/cache
if (!defined('GRAV_CACHE_PATH')) {
$path = rtrim(getenv('GRAV_CACHE_PATH') ?: 'cache', DS);
define('GRAV_CACHE_PATH', $path);
}
// Absolute or relative path to logs folder. Defaults to GRAV_ROOT/logs
if (!defined('GRAV_LOG_PATH')) {
$path = rtrim(getenv('GRAV_LOG_PATH') ?: 'logs', DS);
define('GRAV_LOG_PATH', $path);
}
// Absolute or relative path to tmp folder. Defaults to GRAV_ROOT/tmp
if (!defined('GRAV_TMP_PATH')) {
$path = rtrim(getenv('GRAV_TMP_PATH') ?: 'tmp', DS);
define('GRAV_TMP_PATH', $path);
}
// Absolute or relative path to backup folder. Defaults to GRAV_ROOT/backup
if (!defined('GRAV_BACKUP_PATH')) {
$path = rtrim(getenv('GRAV_BACKUP_PATH') ?: 'backup', DS);
define('GRAV_BACKUP_PATH', $path);
}
unset($path);
// INTERNAL: Do not use!
define('USER_DIR', GRAV_WEBROOT . '/' . GRAV_USER_PATH . '/');
define('CACHE_DIR', (!preg_match('`^(/|[a-z]:[\\\/])`ui', GRAV_CACHE_PATH) ? GRAV_ROOT . '/' : '') . GRAV_CACHE_PATH . '/');
// DEPRECATED: Do not use! // DEPRECATED: Do not use!
define('ASSETS_DIR', ROOT_DIR . 'assets/'); define('CACHE_PATH', GRAV_CACHE_PATH . DS);
define('IMAGES_DIR', ROOT_DIR . 'images/'); define('USER_PATH', GRAV_USER_PATH . DS);
define('ROOT_DIR', GRAV_ROOT . DS);
define('ASSETS_DIR', GRAV_WEBROOT . '/assets/');
define('IMAGES_DIR', GRAV_WEBROOT . '/images/');
define('ACCOUNTS_DIR', USER_DIR . 'accounts/'); define('ACCOUNTS_DIR', USER_DIR . 'accounts/');
define('PAGES_DIR', USER_DIR . 'pages/'); define('PAGES_DIR', USER_DIR . 'pages/');
define('DATA_DIR', USER_DIR . 'data/'); define('DATA_DIR', USER_DIR . 'data/');
define('SYSTEM_DIR', ROOT_DIR .'system/');
define('LIB_DIR', SYSTEM_DIR .'src/');
define('PLUGINS_DIR', USER_DIR . 'plugins/'); define('PLUGINS_DIR', USER_DIR . 'plugins/');
define('THEMES_DIR', USER_DIR . 'themes/'); define('THEMES_DIR', USER_DIR . 'themes/');
define('VENDOR_DIR', ROOT_DIR .'vendor/'); define('SYSTEM_DIR', (!preg_match('`^(/|[a-z]:[\\\/])`ui', GRAV_SYSTEM_PATH) ? GRAV_ROOT . '/' : '') . GRAV_SYSTEM_PATH . '/');
define('LOG_DIR', ROOT_DIR .'logs/'); define('LIB_DIR', SYSTEM_DIR . 'src/');
define('VENDOR_DIR', GRAV_ROOT . '/vendor/');
define('LOG_DIR', (!preg_match('`^(/|[a-z]:[\\\/])`ui', GRAV_LOG_PATH) ? GRAV_ROOT . '/' : '') . GRAV_LOG_PATH . '/');
// END DEPRECATED // END DEPRECATED
// Some extensions // Some extensions

15
system/install.php Normal file
View File

@ -0,0 +1,15 @@
<?php
/**
* @package Grav\Core
*
* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
if (!defined('GRAV_ROOT')) {
die();
}
require_once __DIR__ . '/src/Grav/Installer/Install.php';
return Grav\Installer\Install::instance();

View File

@ -1,18 +1,17 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\nالعنوان: %1$s\n---\n# خطأ: مادة أمامية غير صحيحة\n\nمسار: '%2$s'\n\n**%3$s**\n\n, , ,\n\n%4$s\n, , ,"
العنوان: %1$s INFLECTOR_UNCOUNTABLE:
--- - 'معدّات'
# خطأ: مادة أمامية غير صحيحة - 'معلومات'
- 'أرز'
مسار: '%2$s' - 'مال'
- 'نوع'
**%3$s** - 'سلسلة'
- 'سمك'
, , , - 'خروف'
INFLECTOR_IRREGULAR:
%4$s 'person': 'أشخاص'
, , ,
NICETIME: NICETIME:
NO_DATE_PROVIDED: لم يتم تقديم التاريخ NO_DATE_PROVIDED: لم يتم تقديم التاريخ
BAD_DATE: تاريخ خاطئ BAD_DATE: تاريخ خاطئ
@ -34,7 +33,7 @@ NICETIME:
YR: سنة YR: سنة
DEC: عقد DEC: عقد
SECOND_PLURAL: ثواني SECOND_PLURAL: ثواني
MINUTE_PLURAL: ‮دقائق MINUTE_PLURAL: '‮دقائق'
HOUR_PLURAL: ساعات HOUR_PLURAL: ساعات
DAY_PLURAL: أيام DAY_PLURAL: أيام
WEEK_PLURAL: أسابيع WEEK_PLURAL: أسابيع
@ -50,26 +49,34 @@ NICETIME:
DEC_PLURAL: عقود DEC_PLURAL: عقود
FORM: FORM:
VALIDATION_FAIL: '<b>فشل التحقق من صحة:</b>' VALIDATION_FAIL: '<b>فشل التحقق من صحة:</b>'
INVALID_INPUT: إدخال غير صحيح في INVALID_INPUT: 'إدخال غير صحيح في'
MISSING_REQUIRED_FIELD: 'حقل مطلوب مفقود:' MISSING_REQUIRED_FIELD: 'حقل مطلوب مفقود:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- كانون الثاني - 'كانون الثاني'
- شباط - 'شباط'
- آذار/ مارس - 'آذار/ مارس'
- نيسان - 'نيسان'
- أيار - 'أيار'
- حزيران - 'حزيران'
- تموز - 'تموز'
- آب - 'آب'
- أيلول - 'أيلول'
- تشرين الأول - 'تشرين الأول'
- تشرين الثاني - 'تشرين الثاني'
- كانون الأول - 'كانون الأول'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- الاثنين - 'الاثنين'
- الثلاثاء - 'الثلاثاء'
- الأربعاء - 'الأربعاء'
- الخميس - 'الخميس'
- الجمعة - 'الجمعة'
- السبت - 'السبت'
- الأحد - 'الأحد'
CRON:
EVERY: كل
EVERY_HOUR: كل ساعة
EVERY_MINUTE: كل دقيقة
EVERY_DAY_OF_WEEK: كل يوم في الأسبوع
EVERY_DAY_OF_MONTH: كل يوم في الشهر
EVERY_MONTH: ' كل شهر'
TEXT_PERIOD: كل <b />

62
system/languages/bg.yaml Normal file
View File

@ -0,0 +1,62 @@
---
GRAV:
NICETIME:
NO_DATE_PROVIDED: Не е въведена дата
BAD_DATE: Невалидна дата
AGO: преди
FROM_NOW: от сега
SECOND: секунда
MINUTE: минута
HOUR: час
DAY: ден
WEEK: седмица
MONTH: месец
YEAR: година
DECADE: десетилетие
SEC: сек
MIN: мин
HR: ч
WK: седм
MO: мес
YR: г
DEC: дстлт
SECOND_PLURAL: секунди
MINUTE_PLURAL: минути
HOUR_PLURAL: часа
DAY_PLURAL: дена
WEEK_PLURAL: седмици
MONTH_PLURAL: месеца
YEAR_PLURAL: години
DECADE_PLURAL: десетилетия
SEC_PLURAL: сек
MIN_PLURAL: мин
HR_PLURAL: ч
WK_PLURAL: седм
MO_PLURAL: мес
YR_PLURAL: г
DEC_PLURAL: дстлт
FORM:
VALIDATION_FAIL: '<b>Неуспешна проверка:</b>'
INVALID_INPUT: 'Невалидно въвеждане в'
MISSING_REQUIRED_FIELD: 'Липсва задължително поле:'
MONTHS_OF_THE_YEAR:
- 'януари'
- 'февруари'
- 'март'
- 'април'
- 'май'
- 'юни'
- 'юли'
- 'август'
- 'септември'
- 'октомври'
- 'ноември'
- 'декември'
DAYS_OF_THE_WEEK:
- 'понеделник'
- 'вторник'
- 'сряда'
- 'четвъртък'
- 'петък'
- 'събота'
- 'неделя'

View File

@ -1,23 +1,20 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# S'ha produït un error: Frontmatter invàlid\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s INFLECTOR_UNCOUNTABLE:
--- - 'equipment'
- 'informació'
# S'ha produït un error: Frontmatter invàlid - 'rice'
- 'money'
Ruta: `%2$s` - 'species'
- 'series'
**%3$s** - 'fish'
- 'sheep'
```
%4$s
```
NICETIME: NICETIME:
NO_DATE_PROVIDED: "No s'ha proporcionat data" NO_DATE_PROVIDED: No s'ha proporcionat data
BAD_DATE: Data invàlida BAD_DATE: Data invàlida
AGO: abans AGO: abans
FROM_NOW: "des d'ara" FROM_NOW: des d'ara
SECOND: segon SECOND: segon
MINUTE: minut MINUTE: minut
HOUR: hora HOUR: hora
@ -27,7 +24,6 @@ NICETIME:
YEAR: any YEAR: any
DECADE: dècada DECADE: dècada
SEC: s SEC: s
MIN: min
HR: h HR: h
WK: setm. WK: setm.
MO: m. MO: m.
@ -50,26 +46,26 @@ NICETIME:
DEC_PLURAL: dèc. DEC_PLURAL: dèc.
FORM: FORM:
VALIDATION_FAIL: '<b>Ha fallat la validació:</b>' VALIDATION_FAIL: '<b>Ha fallat la validació:</b>'
INVALID_INPUT: Entrada no vàlida a INVALID_INPUT: 'Entrada no vàlida a'
MISSING_REQUIRED_FIELD: 'Falta camp obligatori:' MISSING_REQUIRED_FIELD: 'Falta camp obligatori:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Gener - 'Gener'
- Febrer - 'Febrer'
- Març - 'Març'
- Abril - 'Abril'
- Maig - 'Maig'
- Juny - 'Juny'
- Juliol - 'Juliol'
- Agost - 'Agost'
- Setembre - 'Setembre'
- Octubre - 'Octubre'
- Novembre - 'Novembre'
- Desembre - 'Desembre'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Dilluns - 'Dilluns'
- Dimarts - 'Dimarts'
- Dimecres - 'Dimecres'
- Dijous - 'Dijous'
- Divendres - 'Divendres'
- Dissabte - 'Dissabte'
- Diumenge - 'Diumenge'

View File

@ -1,29 +1,75 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Chyba: Chybný frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
- vybavení - 'vybavení'
- informace - 'informace'
- rýže - 'rýže'
- peníze - 'peníze'
- druhy - 'druhy'
- série - 'série'
- ryba - 'ryba'
- ovce - 'ovce'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: lidé 'person': 'lidé'
man: muži 'man': 'muži'
child: děti 'child': 'děti'
sex: pohlaví 'sex': 'pohlaví'
move: pohyby 'move': 'pohyby'
INFLECTOR_ORDINALS: INFLECTOR_ORDINALS:
default: '.' 'default': '.'
first: '.' 'first': '.'
second: '.' 'second': '.'
third: '.' 'third': '.'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Datum nebylo vloženo NO_DATE_PROVIDED: Datum nebylo vloženo
BAD_DATE: Chybné datum BAD_DATE: Chybné datum
AGO: zpět AGO: zpět
FROM_NOW: od teď FROM_NOW: od teď
JUST_NOW: právě teď
SECOND: sekunda SECOND: sekunda
MINUTE: minuta MINUTE: minuta
HOUR: hodina HOUR: hodina
@ -56,26 +102,46 @@ NICETIME:
DEC_PLURAL: dek DEC_PLURAL: dek
FORM: FORM:
VALIDATION_FAIL: '<b>Ověření se nezdařilo:</b>' VALIDATION_FAIL: '<b>Ověření se nezdařilo:</b>'
INVALID_INPUT: Neplatný vstup v INVALID_INPUT: 'Neplatný vstup v'
MISSING_REQUIRED_FIELD: 'Chybí požadované pole:' MISSING_REQUIRED_FIELD: 'Chybí požadované pole:'
XSS_ISSUES: "Byly zjištěny možné problémy XSS v poli '%s'"
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- ledna - 'leden'
- února - 'únor'
- března - 'březen'
- dubna - 'duben'
- května - 'květen'
- června - 'červen'
- července - 'červenec'
- srpna - 'srpen'
- září - 'září'
- října - 'říjen'
- listopadu - 'listopad'
- prosince - 'prosinec'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Pondělí - 'pondělí'
- Úterý - 'úterý'
- Středa - 'středa'
- Čtvrtek - 'čtvrtek'
- Pátek - 'pátek'
- Sobota - 'sobota'
- Neděle - 'neděle'
YES: "Ano"
NO: "Ne"
CRON:
EVERY: každý
EVERY_HOUR: každou hodinu
EVERY_MINUTE: každou minutu
EVERY_DAY_OF_WEEK: každý den v týdnu
EVERY_DAY_OF_MONTH: každý den v měsíci
EVERY_MONTH: každý měsíc
TEXT_PERIOD: Every <b />
TEXT_MINS: ' at <b /> minute(s) past the hour'
TEXT_TIME: ' at <b />:<b />'
TEXT_DOW: ' on <b />'
TEXT_MONTH: ' of <b />'
TEXT_DOM: ' on <b />'
ERROR1: Tag %s není podporován!
ERROR2: Chybný počet prvků
ERROR3: jquery_element musí být nastaven v nastaveních pro jqCron
ERROR4: Nerozpoznaný výraz

View File

@ -1,23 +1,27 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\nTitel: %1$s\n---\n\n# Fejl: Ugyldigt frontmatter\n\nSti: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
Titel: %1$s INFLECTOR_UNCOUNTABLE:
--- - 'udstyr'
- 'information'
# Fejl: Ugyldigt frontmatter - 'ris'
- 'penge'
Sti: `%2$s` - 'arter'
- 'Serier'
**%3$s** - 'fisk'
- 'får'
``` INFLECTOR_IRREGULAR:
%4$s 'person': 'personer'
``` 'man': 'mænd'
'child': 'børn'
'sex': 'køn'
'move': 'flyt'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Ingen dato angivet NO_DATE_PROVIDED: Ingen dato angivet
BAD_DATE: Ugyldig dato BAD_DATE: Ugyldig dato
AGO: siden AGO: siden
FROM_NOW: fra nu FROM_NOW: fra nu
JUST_NOW: lige nu
SECOND: sekund SECOND: sekund
MINUTE: minut MINUTE: minut
HOUR: time HOUR: time
@ -27,7 +31,7 @@ NICETIME:
YEAR: år YEAR: år
DECADE: årti DECADE: årti
SEC: sek SEC: sek
MIN: min MIN: min.
HR: t HR: t
WK: u WK: u
MO: md MO: md
@ -50,26 +54,37 @@ NICETIME:
DEC_PLURAL: årtier DEC_PLURAL: årtier
FORM: FORM:
VALIDATION_FAIL: '<b>Validering mislykkedes:</b>' VALIDATION_FAIL: '<b>Validering mislykkedes:</b>'
INVALID_INPUT: Ugyldigt input i INVALID_INPUT: 'Ugyldigt input i'
MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:' MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Januar - 'januar'
- Februar - 'februar'
- Marts - 'mars'
- April - 'april'
- Maj - 'mai'
- Juni - 'juni'
- Juli - 'juli'
- August - 'august'
- September - 'september'
- Oktober - 'oktober'
- November - 'november'
- December - 'desember'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Mandag - 'mandag'
- Tirsdag - 'tirsdag'
- Onsdag - 'onsdag'
- Torsdag - 'torsdag'
- Fredag - 'fredag'
- Lørdag - 'lørdag'
- Søndag - 'søndag'
CRON:
EVERY: hver
EVERY_HOUR: hver time
EVERY_MINUTE: hvert minut
EVERY_DAY_OF_WEEK: alle ugens dage
EVERY_DAY_OF_MONTH: alle dage i måneden
EVERY_MONTH: hver måned
TEXT_PERIOD: Hver <b />
TEXT_MINS: ' ved <b /> minut(ter) over timen'
ERROR1: Tagget %s understøttes ikke!
ERROR2: Ugyldigt antal elementer

View File

@ -1,37 +1,75 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n# Fehler: Frontmatter enthält Fehler\n\nPfad: `%2$s`\n\n**%3$s ** \n\n```\n%4$s\n```"
title: %1$s INFLECTOR_PLURALS:
--- '/(quiz)$/i': '\1zes'
# Fehler: Frontmatter enthält Fehler '/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
Pfad: `%2$s` '/(matr|vert|ind)ix|ex$/i': '\1ice'
'/(x|ch|ss|sh)$/i': '\1es'
**%3$s ** '/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
``` '/(hive)$/i': '\1s'
%4$s '/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
``` '/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1ies'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2ves'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
1: Informationen - 'Ausstattung'
2: Reis - 'Informationen'
3: Geld - 'Reis'
- 'Geld'
- 'Arten'
- 'Serie'
- 'Fisch'
- 'Schaf'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: Personen 'person': 'Personen'
man: Menschen 'man': 'Menschen'
child: Kinder 'child': 'Kinder'
sex: Geschlecht 'sex': 'Geschlecht'
move: Züge 'move': 'Züge'
INFLECTOR_ORDINALS: INFLECTOR_ORDINALS:
default: '.' 'default': '.'
first: '.' 'first': '.'
second: '.' 'second': '.'
third: '.' 'third': '.'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Kein Datum angegeben NO_DATE_PROVIDED: Kein Datum angegeben
BAD_DATE: Falsches Datum BAD_DATE: Falsches Datum
AGO: her AGO: her
FROM_NOW: ab jetzt FROM_NOW: ab jetzt
JUST_NOW: jetzt gerade
SECOND: Sekunde SECOND: Sekunde
MINUTE: Minute MINUTE: Minute
HOUR: Stunde HOUR: Stunde
@ -46,7 +84,7 @@ NICETIME:
WK: Wo. WK: Wo.
MO: Mo. MO: Mo.
YR: J. YR: J.
DEC: Dek. DEC: Dez
SECOND_PLURAL: Sekunden SECOND_PLURAL: Sekunden
MINUTE_PLURAL: Minuten MINUTE_PLURAL: Minuten
HOUR_PLURAL: Stunden HOUR_PLURAL: Stunden
@ -64,26 +102,46 @@ NICETIME:
DEC_PLURAL: Jahrzehnten DEC_PLURAL: Jahrzehnten
FORM: FORM:
VALIDATION_FAIL: '<b>Überprüfung fehlgeschlagen:</b>' VALIDATION_FAIL: '<b>Überprüfung fehlgeschlagen:</b>'
INVALID_INPUT: Ungültige Eingabe in INVALID_INPUT: 'Ungültige Eingabe in'
MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:' MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:'
XSS_ISSUES: "Potenzielle XSS-Probleme im Feld '%s' erkannt"
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Januar - 'Januar'
- Februar - 'Februar'
- März - 'März'
- April - 'April'
- Mai - 'Mai'
- Juni - 'Juni'
- Juli - 'Juli'
- August - 'August'
- September - 'September'
- Oktober - 'Oktober'
- November - 'November'
- Dezember - 'Dezember'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Montag - 'Montag'
- Dienstag - 'Dienstag'
- Mittwoch - 'Mittwoch'
- Donnerstag - 'Donnerstag'
- Freitag - 'Freitag'
- Samstag - 'Samstag'
- Sonntag - 'Sonntag'
YES: "Ja"
NO: "Nein"
CRON:
EVERY: jede
EVERY_HOUR: jede Stunde
EVERY_MINUTE: Jede Minute
EVERY_DAY_OF_WEEK: jeden Tag der Woche
EVERY_DAY_OF_MONTH: jeden Tag des Monats
EVERY_MONTH: jeden Monat
TEXT_PERIOD: Alle <b />
TEXT_MINS: ' bei <b /> Minuten nach der vollen Stunde (n)'
TEXT_TIME: ' bei <b />:<b />'
TEXT_DOW: ' auf <b />'
TEXT_MONTH: ' von <b />'
TEXT_DOM: ' auf <b />'
ERROR1: Der Tag %s wird nicht unterstützt!
ERROR2: Ungültige Anzahl von Elementen
ERROR3: jquery_element sollte in den jqCron Einstellungen gesetzt werden
ERROR4: Unbekannter Ausdruck

View File

@ -1,22 +1,144 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nΤίτλος: %1$s\n---\n\n# Σφάλμα: Μη έγκυρη διαδρομή Frontmatter\n\nΔιαδρομή: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'εξοπλισμός'
- 'πληροφοριες'
- 'rice'
- 'χρήματα'
- 'είδη'
- 'σειρές'
- 'ψάρι'
- 'πρόβατο'
INFLECTOR_IRREGULAR:
'person': 'άνθρωποι'
'man': 'άνδρες'
'child': 'παιδιά'
'sex': 'φύλο'
'move': 'κινήσεις'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: Δεν δόθηκε καμία ημερομηνία
BAD_DATE: Εσφαλμένη ημερομηνία
AGO: πρίν
FROM_NOW: από τώρα
JUST_NOW: μόλις τώρα
SECOND: δευτερόλεπτο
MINUTE: λεπτό
HOUR: ώρα
DAY: ημέρα
WEEK: εβδομάδα
MONTH: μήνας
YEAR: έτος
DECADE: δεκαετία
SEC: δευτερόλεπτο
MIN: λεπτό
HR: ώρα
WK: εβδ
MO: μην
YR: έτος
DEC: δεκαετία
SECOND_PLURAL: δευτερόλεπτα
MINUTE_PLURAL: λεπτά
HOUR_PLURAL: ώρες
DAY_PLURAL: ημέρες
WEEK_PLURAL: εβδομάδες
MONTH_PLURAL: μήνες
YEAR_PLURAL: έτη
DECADE_PLURAL: δεκαετίες
SEC_PLURAL: δευτ.
MIN_PLURAL: λεπτά
HR_PLURAL: ώρες
WK_PLURAL: εβδομάδες
MO_PLURAL: μήνες
YR_PLURAL: έτη
DEC_PLURAL: δεκαετίες
FORM:
VALIDATION_FAIL: '<b>Η επικύρωση απέτυχε:</b>'
INVALID_INPUT: 'Μη έγκυρα δεδομένα σε'
MISSING_REQUIRED_FIELD: 'Λείπει το απαιτούμενο πεδίο:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Ιανουάριος - 'Ιανουάριος'
- Φεβρουάριος - 'Φεβρουάριος'
- Μάρτιος - 'Μάρτιος'
- Απρίλιος - 'Απρίλιος'
- Μάιος - 'Μάιος'
- Ιούνιος - 'Ιούνιος'
- Ιούλιος - 'Ιούλιος'
- Αύγουστος - 'Αύγουστος'
- Σεπτέμβριος - 'Σεπτέμβριος'
- Οκτώβριος - 'Οκτώβριος'
- Νοέμβριος - 'Νοέμβριος'
- Δεκέμβριος - 'Δεκέμβριος'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Δευτέρα - 'Δευτέρα'
- Τρίτη - 'Τρίτη'
- Τετάρτη - 'Τετάρτη'
- Πέμπτη - 'Πέμπτη'
- Παρασκευή - 'Παρασκευή'
- Σάββατο - 'Σάββατο'
- Κυριακή - 'Κυριακή'
CRON:
EVERY: κάθε
EVERY_HOUR: κάθε ώρα
EVERY_MINUTE: κάθε λεπτό
EVERY_DAY_OF_WEEK: κάθε μέρα της εβδομάδος
EVERY_DAY_OF_MONTH: κάθε μέρα του μήνα
EVERY_MONTH: κάθε μήνα
TEXT_PERIOD: Κάθε <b />
TEXT_MINS: ' κατά <b /> λεπτό(ά) μετά την ώρα'
TEXT_TIME: ' στο <b />:<b />'
TEXT_DOW: ' στις <b />'
TEXT_MONTH: ' από <b />'
TEXT_DOM: ' στις <b />'
ERROR1: Η ετικέτα %s δεν υποστηρίζεται!
ERROR2: Μη έγκυρος αριθμός στοιχείων
ERROR3: Το jquery_element θα έπρεπε να οριστεί στις ρυθμίσεις του jqCron
ERROR4: Μη αναγνωρισμένη έκφραση

View File

@ -1,3 +1,5 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Invalid Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Invalid Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS: INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes' '/(quiz)$/i': '\1zes'
@ -92,8 +94,28 @@ NICETIME:
YR_PLURAL: yrs YR_PLURAL: yrs
DEC_PLURAL: decs DEC_PLURAL: decs
FORM: FORM:
VALIDATION_FAIL: <b>Validation failed:</b> VALIDATION_FAIL: '<b>Validation failed:</b>'
INVALID_INPUT: Invalid input in INVALID_INPUT: 'Invalid input in'
MISSING_REQUIRED_FIELD: Missing required field: MISSING_REQUIRED_FIELD: 'Missing required field:'
XSS_ISSUES: "Potential XSS issues detected in '%s' field"
MONTHS_OF_THE_YEAR: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] MONTHS_OF_THE_YEAR: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
DAYS_OF_THE_WEEK: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] DAYS_OF_THE_WEEK: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
YES: "Yes"
NO: "No"
CRON:
EVERY: every
EVERY_HOUR: every hour
EVERY_MINUTE: every minute
EVERY_DAY_OF_WEEK: every day of the week
EVERY_DAY_OF_MONTH: every day of the month
EVERY_MONTH: every month
TEXT_PERIOD: Every <b />
TEXT_MINS: ' at <b /> minute(s) past the hour'
TEXT_TIME: ' at <b />:<b />'
TEXT_DOW: ' on <b />'
TEXT_MONTH: ' of <b />'
TEXT_DOM: ' on <b />'
ERROR1: The tag %s is not supported!
ERROR2: Bad number of elements
ERROR3: The jquery_element should be set into jqCron settings
ERROR4: Unrecognized expression

View File

@ -1,38 +1,35 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Prefacio no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s INFLECTOR_PLURALS:
--- '/(quiz)$/i': '\1ios'
'/s$/i': 's'
# Error: Frontmatter Inválido '/$/': 's'
Ruta: `%2$s`
**%3$s**
```
%4$s
```
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
0: equipo - 'equipamiento'
1: información - 'información'
3: dinero - 'arroz'
5: series - 'dinero'
6: pescado - 'especies'
7: oveja - 'series'
- 'pescado'
- 'oveja'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
man: hombres 'person': 'personas'
child: niños 'man': 'hombres'
sex: sexos 'child': 'niños'
'sex': 'sexos'
'move': 'movido'
INFLECTOR_ORDINALS: INFLECTOR_ORDINALS:
first: ro 'first': 'ro'
second: do 'second': 'do'
third: ro 'third': 'ro'
NICETIME: NICETIME:
NO_DATE_PROVIDED: No se proporcionó fecha NO_DATE_PROVIDED: No se proporcionó fecha
BAD_DATE: Fecha erronea BAD_DATE: Fecha errónea
AGO: antes AGO: antes
FROM_NOW: desde ahora FROM_NOW: desde ahora
JUST_NOW: hace un momento
SECOND: segundo SECOND: segundo
MINUTE: minuto MINUTE: minuto
HOUR: hora HOUR: hora
@ -47,7 +44,7 @@ NICETIME:
WK: sem WK: sem
MO: mes MO: mes
YR: año YR: año
DEC: dec DEC: dic
SECOND_PLURAL: segundos SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos MINUTE_PLURAL: minutos
HOUR_PLURAL: horas HOUR_PLURAL: horas
@ -64,27 +61,47 @@ NICETIME:
YR_PLURAL: años YR_PLURAL: años
DEC_PLURAL: décadas DEC_PLURAL: décadas
FORM: FORM:
VALIDATION_FAIL: '<b>Falló la validación. </b>' VALIDATION_FAIL: '<b>Falló la validación: </b>'
INVALID_INPUT: 'Dato inválido en: ' INVALID_INPUT: 'Dato inválido en: '
MISSING_REQUIRED_FIELD: 'Falta el campo requerido: ' MISSING_REQUIRED_FIELD: 'Falta el campo requerido: '
XSS_ISSUES: "Se detectaron problemas XSS potenciales en el campo '%s'"
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Enero - 'Enero'
- Febrero - 'Febrero'
- Marzo - 'Marzo'
- Abril - 'Abril'
- Mayo - 'Mayo'
- Junio - 'Junio'
- Julio - 'Julio'
- Agosto - 'Agosto'
- Septiembre - 'Septiembre'
- Octubre - 'Octubre'
- Noviembre - 'Noviembre'
- Diciembre - 'Diciembre'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Lunes - 'Lunes'
- Martes - 'Martes'
- Miércoles - 'Miércoles'
- Jueves - 'Jueves'
- Viernes - 'Viernes'
- Sábado - 'Sábado'
- Domingo - 'Domingo'
YES: "Si"
NO: "No"
CRON:
EVERY: cada
EVERY_HOUR: cada hora
EVERY_MINUTE: cada minuto
EVERY_DAY_OF_WEEK: cada día de la semana
EVERY_DAY_OF_MONTH: cada día del mes
EVERY_MONTH: cada mes
TEXT_PERIOD: Cada <b />
TEXT_MINS: ' a <b /> minuto(s) despues de la hora'
TEXT_TIME: ' a <b />:<b />'
TEXT_DOW: ' en <b />'
TEXT_MONTH: ' de<b />'
TEXT_DOM: ' en<b />'
ERROR1: La etiqueta %s no está soportada!
ERROR2: El número de elementos es erroneo
ERROR3: El jquery_element debería establecerse en la configuración del jqCron
ERROR4: Expresión no reconocida

104
system/languages/et.yaml Normal file
View File

@ -0,0 +1,104 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\npealkiri: %1$s\n---\n\n# Viga: vigane Frontmatter'i\n\nasukoht: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(octop|vir)us$/i': '\1i'
INFLECTOR_SINGULAR:
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/(x|ch|ss|sh)es$/i': '\1'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'informatsioon'
- 'riis'
- 'raha'
- 'species'
- 'series'
- 'kala'
- 'lammas'
INFLECTOR_IRREGULAR:
'person': 'inimesed'
'man': 'mees'
'child': 'lapsed'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME:
NO_DATE_PROVIDED: Kuupäev määramata
BAD_DATE: Vigane kuupäev
AGO: tagasi
FROM_NOW: praegusest
JUST_NOW: just nüüd
SECOND: sekund
MINUTE: minut
HOUR: tundi
DAY: päev
WEEK: nädal
MONTH: kuu
YEAR: aasta
DECADE: 10 aastat
SEC: sek
MIN: min
HR: t
WK: näd
MO: k.
YR: a.
DEC: dekaad
SECOND_PLURAL: sekundit
MINUTE_PLURAL: minutit
HOUR_PLURAL: tundi
DAY_PLURAL: päeva
WEEK_PLURAL: nädalat
MONTH_PLURAL: kuud
YEAR_PLURAL: aastat
DECADE_PLURAL: dekaadi
SEC_PLURAL: sekundit
MIN_PLURAL: min
HR_PLURAL: t
WK_PLURAL: näd
MO_PLURAL: kuud
YR_PLURAL: aastat
DEC_PLURAL: dek.
FORM:
VALIDATION_FAIL: '<b>Kinnitamine nurjus:</b>'
INVALID_INPUT: 'Vigane sisend:'
MISSING_REQUIRED_FIELD: 'Nõutud väli puudub:'
MONTHS_OF_THE_YEAR:
- 'jaanuar'
- 'veebruar'
- 'märts'
- 'aprill'
- 'mai'
- 'juuni'
- 'juuli'
- 'august'
- 'september'
- 'oktoober'
- 'november'
- 'detsember'
DAYS_OF_THE_WEEK:
- 'esmaspäev'
- 'teisipäev'
- 'kolmapäev'
- 'neljapäev'
- 'reede'
- 'laupäev'
- 'pühapäev'
CRON:
EVERY: iga
EVERY_HOUR: iga tund
EVERY_MINUTE: iga minut
EVERY_DAY_OF_WEEK: iga nädala päev
EVERY_MONTH: iga kuu
TEXT_PERIOD: Iga <b />
ERROR1: Silt %s pole toetatud!
ERROR2: Vale elementide arv
ERROR3: jqCron seadetes peaks olema määratud jquery_element
ERROR4: Tundmatu väljend

62
system/languages/eu.yaml Normal file
View File

@ -0,0 +1,62 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "--- title: %1$s --- # Errorea: Baliogabeko Frontmatter Bidea: `%2$s` **%3$s** ``` %4$s ```"
NICETIME:
NO_DATE_PROVIDED: Ez da datarik ezarri
BAD_DATE: Okerreko data
AGO: ' duela'
FROM_NOW: oraindik aurrera
SECOND: segundo
MINUTE: minutu
HOUR: ordua
DAY: egun
WEEK: astea
MONTH: hilabetea
YEAR: urtea
DECADE: hamarkada
SEC: seg
HR: h
WK: ast
MO: hil
YR: urt
DEC: ham
SECOND_PLURAL: segundo
MINUTE_PLURAL: minutu
HOUR_PLURAL: ordu
DAY_PLURAL: egun
WEEK_PLURAL: aste
MONTH_PLURAL: hilabete
YEAR_PLURAL: urte
DECADE_PLURAL: hamarkada
SEC_PLURAL: segundo
MIN_PLURAL: minutu
HR_PLURAL: h
WK_PLURAL: ast
MO_PLURAL: hil
YR_PLURAL: urt
DEC_PLURAL: ham
FORM:
VALIDATION_FAIL: '<b>Balidazioak huts egin du</b>'
INVALID_INPUT: 'Baliogabeko sarrera'
MISSING_REQUIRED_FIELD: 'Derrigorrezko eremua bete gabe:'
MONTHS_OF_THE_YEAR:
- 'Urtarrila'
- 'Otsaila'
- 'Martxoa'
- 'Apirila'
- 'Maiatza'
- 'Ekaina'
- 'Uztaila'
- 'Abuztua'
- 'Iraila'
- 'Urria'
- 'Azaroa'
- 'Abendua'
DAYS_OF_THE_WEEK:
- 'Astelehena'
- 'Asteartea'
- 'Azteazkena'
- 'Osteguna'
- 'Ostirala'
- 'Larunbata'
- 'Igandea'

62
system/languages/fa.yaml Normal file
View File

@ -0,0 +1,62 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nعنوان: %1$s\n---\n\n# خطا: Frontmatter غلط\n\nمسیر: %2$s\n\n**%3$s**\n\n```\n%4$s\n```"
NICETIME:
NO_DATE_PROVIDED: تاریخی ارائه نشده
BAD_DATE: تاریخ اشتباه
AGO: قبل
FROM_NOW: از حالا
SECOND: ثانیه
MINUTE: دقیقه
HOUR: ساعت
DAY: روز
WEEK: هفته
MONTH: ماه
YEAR: سال
DECADE: دهه
SEC: ثانیه
MIN: دقیقه
HR: ساعت
WK: هفته
MO: ماه
YR: سال
DEC: دهه
SECOND_PLURAL: ثانیه
MINUTE_PLURAL: دقیقه
HOUR_PLURAL: ساعت
DAY_PLURAL: روز
WEEK_PLURAL: هفته
MONTH_PLURAL: ماه
YEAR_PLURAL: سال
DECADE_PLURAL: دهه
SEC_PLURAL: ثانیه
MIN_PLURAL: دقیقه
HR_PLURAL: ساعت
WK_PLURAL: هفته
YR_PLURAL: سال
DEC_PLURAL: دهه
FORM:
VALIDATION_FAIL: '<b>سنجش اعتبار ناموفق بود</b>'
INVALID_INPUT: 'ورودی نامعتبر در'
MISSING_REQUIRED_FIELD: 'قسمت ضروری جا افتاده:'
MONTHS_OF_THE_YEAR:
- 'ژانویه'
- 'فوریه'
- 'مارس'
- 'آوریل'
- 'می'
- 'ژوئن'
- 'ژوئیه'
- 'اوت'
- 'سپتامبر'
- 'اکتبر'
- 'نوامبر'
- 'دسامبر'
DAYS_OF_THE_WEEK:
- 'دوشنبه'
- 'سه‌ شنبه'
- 'چهارشنبه'
- 'پنج شنبه'
- 'جمعه'
- 'شنبه'
- 'یک‌شنبه'

View File

@ -1,10 +1,75 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\notsikko: %1$s\n---\n\n# Virhe: Virheellinen Frontmatter\n\nPolku: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'information'
- 'riisi'
- 'raha'
- 'lajit'
- 'series'
- 'kala'
- 'lammas'
INFLECTOR_IRREGULAR:
'person': 'ihmiset'
'man': 'miehet'
'child': 'lapset'
'sex': 'sukupuoli'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Päivämäärää ei annettu NO_DATE_PROVIDED: Päivämäärää ei annettu
BAD_DATE: Virheellinen päivämäärä BAD_DATE: Virheellinen päivämäärä
AGO: sitten AGO: sitten
FROM_NOW: tästä lähtien FROM_NOW: tästä lähtien
SECOND: sekunti JUST_NOW: juuri nyt
SECOND: sekuntti
MINUTE: minuutti MINUTE: minuutti
HOUR: tunti HOUR: tunti
DAY: päivä DAY: päivä
@ -36,25 +101,34 @@ NICETIME:
DEC_PLURAL: vuosikymmentä DEC_PLURAL: vuosikymmentä
FORM: FORM:
VALIDATION_FAIL: '<b>Vahvistus epäonnistui:</b>' VALIDATION_FAIL: '<b>Vahvistus epäonnistui:</b>'
INVALID_INPUT: 'Syöte ei kelpaa'
MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:' MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Tammikuu - 'Tammikuu'
- Helmikuu - 'Helmikuu'
- Maaliskuu - 'Maaliskuu'
- Huhtikuu - 'Huhtikuu'
- Toukokuu - 'Toukokuu'
- Kesäkuuta - 'Kesäkuuta'
- Heinäkuu - 'Heinäkuu'
- Elokuu - 'Elokuu'
- Syyskuu - 'Syyskuu'
- Lokakuu - 'Lokakuu'
- Marraskuu - 'Marraskuu'
- Joulukuu - 'Joulukuu'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Maanantai - 'Maanantai'
- Tiistai - 'Tiistai'
- Keskiviikko - 'Keskiviikko'
- Torstai - 'Torstai'
- Perjantai - 'Perjantai'
- Lauantai - 'Lauantai'
- Sunnuntai - 'Sunnuntai'
CRON:
EVERY: joka
EVERY_HOUR: joka tunti
EVERY_MINUTE: joka minuutti
EVERY_DAY_OF_WEEK: viikon jokaisena päivänä
EVERY_DAY_OF_MONTH: kuukauden jokaisena päivänä
EVERY_MONTH: joka kuukausi
TEXT_PERIOD: Joka <b />

View File

@ -1,86 +1,55 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitre: %1$s\n---\n\n# Erreur : Frontmatter invalide\n\nChemin: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s
---
# Erreur : Frontmatter invalide
Path: `%2$s`
**%3$s**
```
%4$s
```
INFLECTOR_PLURALS: INFLECTOR_PLURALS:
/(quiz)$/i: '\1zes' '/(quiz)$/i': '\1zes'
/^(ox)$/i: '\1en' '/^(ox)$/i': '\1en'
"/([m|l])ouse$/i": '\1ice' '/([m|l])ouse$/i': '\1ice'
/(matr|vert|ind)ix|ex$/i: '\1ices' '/(matr|vert|ind)ix|ex$/i': '\1ices'
/(x|ch|ss|sh)$/i: '\1es' '/(x|ch|ss|sh)$/i': '\1es'
"/([^aeiouy]|qu)ies$/i": '\1y' '/([^aeiouy]|qu)ies$/i': '\1y'
"/([^aeiouy]|qu)y$/i": '\1ies' '/([^aeiouy]|qu)y$/i': '\1ies'
/(hive)$/i: '\1s' '/(hive)$/i': '\1s'
"/(?:([^f])fe|([lr])f)$/i": '\1\2ves' '/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
/sis$/i: ses '/sis$/i': 'ses'
"/([ti])um$/i": '\1a' '/([ti])um$/i': '\1a'
/(buffal|tomat)o$/i: '\1oes' '/(buffal|tomat)o$/i': '\1es'
/(bu)s$/i: '\1ses' '/(bu)s$/i': 'Bus'
/(alias|status)/i: '\1es' '/(alias|status)/i': 'alias|status'
/(octop|vir)us$/i: '\1i' '/(octop|vir)us$/i': 'virus'
/(ax|test)is$/i: '\1es' '/(ax|test)is$/i': '\1s'
/s$/i: s '/s$/i': 's'
/$/: s '/$/': 's'
INFLECTOR_SINGULAR: INFLECTOR_SINGULAR:
/(quiz)zes$/i: '\1' '/(quiz)zes$/i': '\1'
/(matr)ices$/i: '\1ix' '/(alias|status)es$/i': '\1'
/(vert|ind)ices$/i: '\1ex' '/([octop|vir])i$/i': '\1us'
/^(ox)en/i: '\1'
/(alias|status)es$/i: '\1'
"/([octop|vir])i$/i": '\1us'
/(cris|ax|test)es$/i: '\1is'
/(shoe)s$/i: '\1'
/(o)es$/i: '\1'
/(bus)es$/i: '\1'
"/([m|l])ice$/i": '\1ouse'
/(x|ch|ss|sh)es$/i: '\1'
/(m)ovies$/i: '\1ovie'
/(s)eries$/i: '\1eries'
"/([^aeiouy]|qu)ies$/i": '\1y'
"/([lr])ves$/i": '\1f'
/(tive)s$/i: '\1'
/(hive)s$/i: '\1'
"/([^f])ves$/i": '\1fe'
/(^analy)ses$/i: '\1sis'
/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i: '\1\2sis'
"/([ti])a$/i": '\1um'
/(n)ews$/i: '\1ews'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
- équipement - 'équipement'
- informations - 'information'
- riz - 'riz'
- argent - 'argent'
- espèces - 'espèces'
- séries - 'séries'
- poisson - 'poisson'
- mouton - 'mouton'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: personnes 'person': 'personnes'
man: hommes 'man': 'hommes'
child: enfants 'child': 'enfants'
sex: sexes 'sex': 'sexes'
move: déplacements 'move': 'déplacements'
INFLECTOR_ORDINALS: INFLECTOR_ORDINALS:
default: ème 'default': 'ème'
first: er 'first': 'er'
second: ème 'second': 'ème'
third: ème 'third': 'ème'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Aucune date fournie NO_DATE_PROVIDED: Aucune date fournie
BAD_DATE: Date erronée BAD_DATE: Date erronée
AGO: plus tôt AGO: plus tôt
FROM_NOW: à partir de maintenant FROM_NOW: à partir de maintenant
JUST_NOW: à l'instant
SECOND: seconde SECOND: seconde
MINUTE: minute MINUTE: minute
HOUR: heure HOUR: heure
@ -113,14 +82,43 @@ NICETIME:
DEC_PLURAL: décs DEC_PLURAL: décs
FORM: FORM:
VALIDATION_FAIL: '<b>La validation a échoué :</b>' VALIDATION_FAIL: '<b>La validation a échoué :</b>'
INVALID_INPUT: Saisie non valide INVALID_INPUT: 'Saisie non valide'
MISSING_REQUIRED_FIELD: 'Champ obligatoire manquant :' MISSING_REQUIRED_FIELD: 'Champ obligatoire manquant :'
MONTHS_OF_THE_YEAR: [Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre] MONTHS_OF_THE_YEAR:
- 'janvier'
- 'février'
- 'mars'
- 'avril'
- 'mai'
- 'juin'
- 'juillet'
- 'août'
- 'septembre'
- 'octobre'
- 'novembre'
- 'décembre'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Lundi - 'lundi'
- Mardi - 'mardi'
- Mercredi - 'mercredi'
- Jeudi - 'jeudi'
- Vendredi - 'vendredi'
- Samedi - 'samedi'
- Dimanche - 'dimanche'
CRON:
EVERY: chaque
EVERY_HOUR: toutes les heures
EVERY_MINUTE: chaque minute
EVERY_DAY_OF_WEEK: tous les jours de la semaine
EVERY_DAY_OF_MONTH: tous les jours du mois
EVERY_MONTH: chaque mois
TEXT_PERIOD: Chaque<b/>
TEXT_MINS: ' à <b /> minute(s) après l''heure'
TEXT_TIME: ' à<b/>:<b/>'
TEXT_DOW: ' sur <b/>'
TEXT_MONTH: ' de <b />'
TEXT_DOM: ' sur <b/>'
ERROR1: La balise %s n'est pas supportée!
ERROR2: Nombre invalide d'éléments
ERROR3: L'élément jquery_element doit être défini dans les paramètres jqCron
ERROR4: Expression non reconnue

144
system/languages/gl.yaml Normal file
View File

@ -0,0 +1,144 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Erro: Limiar incorrecto\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1'
'/(octop|vir)us$/i': '\1'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1ces'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1'
'/(cris|ax|test)es$/i': '\1es'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1se'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2se'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'equipo'
- 'información'
- 'arroz'
- 'diñeiro'
- 'especies'
- 'series'
- 'peixe'
- 'ovella'
INFLECTOR_IRREGULAR:
'person': 'xente'
'man': 'home'
'child': 'neno'
'sex': 'sexos'
'move': 'move'
INFLECTOR_ORDINALS:
'default': 'º'
'first': 'º'
'second': 'º'
'third': 'º'
NICETIME:
NO_DATE_PROVIDED: Non fornece unha data
BAD_DATE: Data errada
AGO: hai
FROM_NOW: dende agora
JUST_NOW: xusto agora
SECOND: segundo
MINUTE: minuto
HOUR: hora
DAY: día
WEEK: semana
MONTH: mes
YEAR: ano
DECADE: década
SEC: seg
MIN: min
HR: hr
WK: Sem
MO: m
YR: a
DEC: dec
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
DAY_PLURAL: días
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: anos
DECADE_PLURAL: décadas
SEC_PLURAL: segs
MIN_PLURAL: mins
HR_PLURAL: hrs
WK_PLURAL: sem
MO_PLURAL: mes
YR_PLURAL: a
DEC_PLURAL: deca
FORM:
VALIDATION_FAIL: '<b>Fallou a validación:</b>'
INVALID_INPUT: 'Entrada incorrecta en'
MISSING_REQUIRED_FIELD: 'Falta un campo requirido:'
MONTHS_OF_THE_YEAR:
- 'xaneiro'
- 'febreiro'
- 'marzo'
- 'abril'
- 'maio'
- 'xuño'
- 'xullo'
- 'agosto'
- 'setembro'
- 'outubro'
- 'novembro'
- 'decembro'
DAYS_OF_THE_WEEK:
- 'luns'
- 'martes'
- 'mércores'
- 'xoves'
- 'venres'
- 'sábado'
- 'domingo'
CRON:
EVERY: cada
EVERY_HOUR: Cada hora
EVERY_MINUTE: Cada minuto
EVERY_DAY_OF_WEEK: cada día da semana
EVERY_DAY_OF_MONTH: cada día do mes
EVERY_MONTH: cada mes
TEXT_PERIOD: Cada <b />
TEXT_MINS: ' dentro de <b /> minuto(s) despois da hora'
TEXT_TIME: ' dentro <b />:<b />'
TEXT_DOW: ' o <b />'
TEXT_MONTH: ' de <b />'
TEXT_DOM: ' o <b />'
ERROR1: A etiqueta %s non é compatíbel!
ERROR2: Mal número de elementos
ERROR3: O jquery_element debería estar determinado na configuración de jqCron
ERROR4: Expresión non recoñecida

63
system/languages/he.yaml Normal file
View File

@ -0,0 +1,63 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nכותרת: %1$s\n---\n# שגיאה: Fronmatter לא חוקי\nנתיב: `%2$s`\n**%3$s**\n```\n%4$s\n```"
NICETIME:
NO_DATE_PROVIDED: לא סופק תאריך
BAD_DATE: תאריך פגום
AGO: לפני
FROM_NOW: כרגע
SECOND: שנייה
MINUTE: דקה
HOUR: שעה
DAY: יום
WEEK: שבוע
MONTH: חודש
YEAR: שנה
DECADE: עשור
SEC: שנ'
MIN: דק'
HR: ש'
WK: שב'
MO: חו'
YR: שני'
DEC: עש'
SECOND_PLURAL: שניות
MINUTE_PLURAL: דקות
HOUR_PLURAL: שעות
DAY_PLURAL: ימים
WEEK_PLURAL: שבועות
MONTH_PLURAL: חודשים
YEAR_PLURAL: שנים
DECADE_PLURAL: עשורים
SEC_PLURAL: שנ'
MIN_PLURAL: דק'
HR_PLURAL: ש'
WK_PLURAL: שב'
MO_PLURAL: חו'
YR_PLURAL: שני'
DEC_PLURAL: עש'
FORM:
VALIDATION_FAIL: '<b>האימות נכשל:</b>'
INVALID_INPUT: 'קלט לא חוקי'
MISSING_REQUIRED_FIELD: 'שדות חובה חסרים:'
MONTHS_OF_THE_YEAR:
- 'ינואר'
- 'פברואר'
- 'מרץ'
- 'אפריל'
- 'מאי'
- 'יוני'
- 'יולי'
- 'אוגוסט'
- 'ספטמבר'
- 'אוקטובר'
- 'נובמבר'
- 'דצמבר'
DAYS_OF_THE_WEEK:
- 'שני'
- 'שלישי'
- 'רביעי'
- 'חמישי'
- 'שישי'
- 'שבת'
- 'ראשון'

View File

@ -1,19 +1,20 @@
--- ---
GRAV:
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
- oprema - 'oprema'
- informacije - 'informacije'
- riža - 'riža'
- novac - 'novac'
- vrsta - 'vrsta'
- serija - 'serija'
- riba - 'riba'
- ovca - 'ovca'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: osobe 'person': 'osobe'
man: ljudi 'man': 'ljudi'
child: djeca 'child': 'djeca'
sex: spolovi 'sex': 'spolovi'
move: Pomakni 'move': 'Pomakni'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Datum nije upisan NO_DATE_PROVIDED: Datum nije upisan
BAD_DATE: Pogrešan datum BAD_DATE: Pogrešan datum
@ -50,26 +51,26 @@ NICETIME:
DEC_PLURAL: des DEC_PLURAL: des
FORM: FORM:
VALIDATION_FAIL: '<b>Validacija nije uspjela:</b>' VALIDATION_FAIL: '<b>Validacija nije uspjela:</b>'
INVALID_INPUT: Pogrešan unos u INVALID_INPUT: 'Pogrešan unos u'
MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:' MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Siječanj - 'Siječanj'
- Veljača - 'Veljača'
- Ožujak - 'Ožujak'
- Travanj - 'Travanj'
- Svibanj - 'Svibanj'
- Lipanj - 'Lipanj'
- Srpanj - 'Srpanj'
- Kolovoz - 'Kolovoz'
- Rujan - 'Rujan'
- Listopad - 'Listopad'
- Studeni - 'Studeni'
- Prosinac - 'Prosinac'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Ponedjeljak - 'Ponedjeljak'
- Utorak - 'Utorak'
- Srijeda - 'Srijeda'
- Četvrtak - 'Četvrtak'
- Petak - 'Petak'
- Subota - 'Subota'
- Nedjelja - 'Nedjelja'

View File

@ -1,86 +1,32 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ncím: %1$s\n---\n\n# Hiba: Érvénytelen Frontmatter\n\nElérési út: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
cím: %1$s
---
# Hiba: Érvénytelen Frontmatter
Elérési út: `%2$s`
**%3$s**
```
%4$s
```
INFLECTOR_PLURALS:
/(quiz)$/i: '\1zes'
/^(ox)$/i: '\1en'
"/([m|l])ouse$/i": '\1ice'
/(matr|vert|ind)ix|ex$/i: '\1ices'
/(x|ch|ss|sh)$/i: '\1es'
"/([^aeiouy]|qu)ies$/i": '\1y'
"/([^aeiouy]|qu)y$/i": '\1ies'
/(hive)$/i: '\1s'
"/(?:([^f])fe|([lr])f)$/i": '\1\2ves'
/sis$/i: ses
"/([ti])um$/i": '\1a'
/(buffal|tomat)o$/i: '\1oes'
/(bu)s$/i: '\1ses'
/(alias|status)/i: '\1es'
/(octop|vir)us$/i: '\1i'
/(ax|test)is$/i: '\1es'
/s$/i: s
/$/: s
INFLECTOR_SINGULAR:
/(quiz)zes$/i: '\1'
/(matr)ices$/i: '\1ix'
/(vert|ind)ices$/i: '\1ex'
/^(ox)en/i: '\1'
/(alias|status)es$/i: '\1'
"/([octop|vir])i$/i": '\1us'
/(cris|ax|test)es$/i: '\1is'
/(shoe)s$/i: '\1'
/(o)es$/i: '\1'
/(bus)es$/i: '\1'
"/([m|l])ice$/i": '\1ouse'
/(x|ch|ss|sh)es$/i: '\1'
/(m)ovies$/i: '\1ovie'
/(s)eries$/i: '\1eries'
"/([^aeiouy]|qu)ies$/i": '\1y'
"/([lr])ves$/i": '\1f'
/(tive)s$/i: '\1'
/(hive)s$/i: '\1'
"/([^f])ves$/i": '\1fe'
/(^analy)ses$/i: '\1sis'
/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i: '\1\2sis'
"/([ti])a$/i": '\1um'
/(n)ews$/i: '\1ews'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
- felszerelés - 'felszerelés'
- információ - 'információ'
- rizs - 'rizs'
- pénz - 'pénz'
- fajok - 'fajok'
- sorozat - 'sorozat'
- hal - 'hal'
- juh - 'juh'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: személyek 'person': 'személyek'
man: férfiak 'man': 'férfiak'
child: gyerekek 'child': 'gyerekek'
sex: nemek 'sex': 'nemek'
move: lépések 'move': 'lépések'
INFLECTOR_ORDINALS: INFLECTOR_ORDINALS:
default: '.' 'default': '.'
first: '.' 'first': '.'
second: '.' 'second': '.'
third: '.' 'third': '.'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Nincs dátum megadva NO_DATE_PROVIDED: Nincs dátum megadva
BAD_DATE: Hibás dátum BAD_DATE: Hibás dátum
AGO: elteltével AGO: elteltével
FROM_NOW: mostantól FROM_NOW: mostantól
JUST_NOW: épp most
SECOND: másodperc SECOND: másodperc
MINUTE: perc MINUTE: perc
HOUR: óra HOUR: óra
@ -112,27 +58,40 @@ NICETIME:
YR_PLURAL: év YR_PLURAL: év
DEC_PLURAL: évt DEC_PLURAL: évt
FORM: FORM:
VALIDATION_FAIL: '<b>A validáció hibát talált:</b>' VALIDATION_FAIL: '<b>Érvényesítés nem sikerült:</b>'
INVALID_INPUT: 'Az itt megadott érték érvénytelen:' INVALID_INPUT: 'A megadott érték érvénytelen:'
MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:' MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- január - 'január'
- február - 'február'
- március - 'március'
- április - 'április'
- május - 'május'
- június - 'június'
- július - 'július'
- augusztus - 'augusztus'
- szeptember - 'szeptember'
- október - 'október'
- november - 'november'
- december - 'december'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- hétfő - 'hétfő'
- kedd - 'kedd'
- szerda - 'szerda'
- csütörtök - 'csütörtök'
- péntek - 'péntek'
- szombat - 'szombat'
- vasárnap - 'vasárnap'
CRON:
EVERY: minden
EVERY_HOUR: óránként
EVERY_MINUTE: percenként
EVERY_DAY_OF_WEEK: a hét minden napján
EVERY_DAY_OF_MONTH: a hónap minden napján
EVERY_MONTH: minden hónapban
TEXT_PERIOD: Minden <b />
TEXT_MINS: '<b /> perccel az óra elteltével'
ERROR1: A %s címke nem engedélyezett!
ERROR2: Hibás elemszám
ERROR3: A jquery_element-et a jqCron beállítsokban kell meghatározni
ERROR4: Ismeretlen kifejezés

97
system/languages/id.yaml Normal file
View File

@ -0,0 +1,97 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Frontmatter tidak valid\n\nLokasi: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
INFLECTOR_UNCOUNTABLE:
- 'peralatan'
- 'informasi'
- 'nasi'
- 'uang'
- 'spesies'
- 'rangkaian'
- 'ikan'
- 'domba'
INFLECTOR_IRREGULAR:
'person': 'orang-orang'
'man': 'laki-laki'
'child': 'anak-anak'
'sex': 'jenis kelamin'
'move': 'pindahkan'
NICETIME:
NO_DATE_PROVIDED: Tanggal tidak tersedia
BAD_DATE: Format tanggal salah
AGO: yang lalu
FROM_NOW: dari saat ini
JUST_NOW: baru saja
SECOND: detik
MINUTE: menit
HOUR: jam
DAY: hari
WEEK: pekan
MONTH: bulan
YEAR: tahun
DECADE: dekade
SEC: dtk
MIN: mnt
HR: j
WK: mng
MO: bln
YR: thn
DEC: desimal
SECOND_PLURAL: detik
MINUTE_PLURAL: menit
HOUR_PLURAL: jam
DAY_PLURAL: hari
WEEK_PLURAL: pekan
MONTH_PLURAL: bulan
YEAR_PLURAL: tahun
DECADE_PLURAL: dekade
SEC_PLURAL: dtk
MIN_PLURAL: mnt
HR_PLURAL: j
WK_PLURAL: mgg
MO_PLURAL: bln
YR_PLURAL: thn
DEC_PLURAL: dekade
FORM:
VALIDATION_FAIL: '<b>Validasi gagal:</b>'
INVALID_INPUT: 'Input tidak valid di'
MISSING_REQUIRED_FIELD: 'Data yang diperlukan belum terisi:'
MONTHS_OF_THE_YEAR:
- 'Januari'
- 'Februari'
- 'Maret'
- 'April'
- 'Mei'
- 'Juni'
- 'Juli'
- 'Agustus'
- 'September'
- 'Oktober'
- 'November'
- 'Desember'
DAYS_OF_THE_WEEK:
- 'Senin'
- 'Selasa'
- 'Rabu'
- 'Kamis'
- 'Jumat'
- 'Sabtu'
- 'Minggu'
CRON:
EVERY: Setiap
EVERY_HOUR: Setiap jam
EVERY_MINUTE: Setiap menit
EVERY_DAY_OF_WEEK: Setiap hari selama seminggu
EVERY_DAY_OF_MONTH: pada tanggal setiap bulannya
EVERY_MONTH: setiap bulan
TEXT_PERIOD: Setiap <b />
TEXT_TIME: ' pada <b />:<b />'
TEXT_DOW: ' pada <b />'
TEXT_MONTH: ' pada <b />'
TEXT_DOM: ' pada <b />'
ERROR1: Tag %s tidak didukung!
ERROR2: Jumlah elemen tidak valid
ERROR3: jquery_element harus ditetapkan ke pengaturan jqCron
ERROR4: Ekspresi tidak dikenali

80
system/languages/is.yaml Normal file
View File

@ -0,0 +1,80 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitill: %1$s\n---\n\n# Villa: Ógilt efni á forsíðu\n\nSlóð: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'upplýsingar'
- 'rice'
- 'money'
- 'species'
- 'series'
- 'fish'
- 'sheep'
NICETIME:
NO_DATE_PROVIDED: Engin dagsetning gefin
BAD_DATE: Röng dagsetning
AGO: síðan
JUST_NOW: í þessu
SECOND: sekúndu
MINUTE: mínútu
HOUR: klukkustund
DAY: degi
WEEK: viku
MONTH: mánuði
YEAR: ári
DECADE: áratug
SEC: sek
MIN: mín
HR: klst
WK: vk
MO: mán
YR: ár
DEC: árat
SECOND_PLURAL: sekúndum
MINUTE_PLURAL: mínútum
HOUR_PLURAL: klukkustundum
DAY_PLURAL: dögum
WEEK_PLURAL: vikum
MONTH_PLURAL: mánuðum
YEAR_PLURAL: árum
DECADE_PLURAL: áratugum
SEC_PLURAL: sek
MIN_PLURAL: mín
HR_PLURAL: klst
WK_PLURAL: vik
MO_PLURAL: mán
YR_PLURAL: árum
DEC_PLURAL: árat
FORM:
VALIDATION_FAIL: '<b>Sannvottun mistókst:</b>'
INVALID_INPUT: 'Ógilt inntak í'
MISSING_REQUIRED_FIELD: 'Vantar nauðsynlegan reit:'
MONTHS_OF_THE_YEAR:
- 'janúar'
- 'Febrúar'
- 'Mars'
- 'Apríl'
- 'Maí'
- 'Júní'
- 'Júlí'
- 'Ágúst'
- 'September'
- 'Október'
- 'Nóvember'
- 'Desember'
DAYS_OF_THE_WEEK:
- 'Mánudagur'
- 'Þriðjudagur'
- 'Miðvikudagur'
- 'Fimmtudagur'
- 'Föstudagur'
- 'Laugardagur'
- 'Sunnudagur'
CRON:
TEXT_TIME: ' á <b />:<b />'
TEXT_DOW: ' á <b />'
TEXT_MONTH: ' af <b />'
TEXT_DOM: ' á <b />'
ERROR1: Merkið %s er ekki stutt!
ERROR3: Það ætti að setja jquery_element inn í stillingar jqCron
ERROR4: Óþekkt segð

View File

@ -1,10 +1,75 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '" FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'dotazione'
- 'informazione'
- 'riso'
- 'denaro'
- 'specie'
- 'serie'
- 'pesce'
- 'pecora'
INFLECTOR_IRREGULAR:
'person': 'persone'
'man': 'uomini'
'child': 'bambino'
'sex': 'sessi'
'move': 'sposta'
INFLECTOR_ORDINALS:
'default': '°'
'first': '°'
'second': 'o'
'third': 'o'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Nessuna data fornita NO_DATE_PROVIDED: Nessuna data fornita
BAD_DATE: Data non valida BAD_DATE: Data non valida
AGO: fa AGO: fa
FROM_NOW: da adesso FROM_NOW: da adesso
JUST_NOW: ora
SECOND: secondo SECOND: secondo
MINUTE: minuto MINUTE: minuto
HOUR: ora HOUR: ora
@ -37,26 +102,46 @@ NICETIME:
DEC_PLURAL: decenni DEC_PLURAL: decenni
FORM: FORM:
VALIDATION_FAIL: '<b>Validazione fallita:</b>' VALIDATION_FAIL: '<b>Validazione fallita:</b>'
INVALID_INPUT: Input non valido in INVALID_INPUT: 'Input non valido in'
MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:' MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:'
XSS_ISSUES: "Rilevati potenziali problemi di XSS nel campo '%s'"
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Gennaio - 'Gennaio'
- Febbraio - 'Febbraio'
- Marzo - 'Marzo'
- Aprile - 'Aprile'
- Maggio - 'Maggio'
- Giugno - 'Giugno'
- Luglio - 'Luglio'
- Agosto - 'Agosto'
- Settembre - 'Settembre'
- Ottobre - 'Ottobre'
- Novembre - 'Novembre'
- Dicembre - 'Dicembre'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Lunedì - 'Lunedì'
- Martedì - 'Martedì'
- Mercoledì - 'Mercoledì'
- Giovedì - 'Giovedì'
- Venerdì - 'Venerdì'
- Sabato - 'Sabato'
- Domenica - 'Domenica'
YES: "Sì"
NO: "No"
CRON:
EVERY: ogni
EVERY_HOUR: ogni ora
EVERY_MINUTE: ogni minuto
EVERY_DAY_OF_WEEK: ogni giorno della settimana
EVERY_DAY_OF_MONTH: ogni giorno del mese
EVERY_MONTH: ogni mese
TEXT_PERIOD: Ogni <b />
TEXT_MINS: ' a <b /> minuto(i) dall''inizio dell''ora'
TEXT_TIME: ' alle <b />:<b />'
TEXT_DOW: ' su <b />'
TEXT_MONTH: ' di <b />'
TEXT_DOM: ' di <b />'
ERROR1: Il tag %s non è supportato!
ERROR2: Numero di elementi non valido
ERROR3: Il jquery_element deve essere impostato nelle impostazioni di jqCron
ERROR4: Espressione non riconosciuta

View File

@ -1,24 +1,26 @@
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Invalid Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" ---
INFLECTOR_PLURALS: [] GRAV:
INFLECTOR_UNCOUNTABLE:
INFLECTOR_SINGULAR: [] - 'equipment'
- '情報'
INFLECTOR_UNCOUNTABLE: [] - 'rice'
- 'お金'
- 'species'
- 'series'
- '魚'
- 'ヒツジ'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
'person': 'みんな' 'person': 'みんな'
'man': '人' 'man': '人'
'child': '子供' 'child': '子供'
'sex': '性別' 'sex': '性別'
'move': '移動' 'move': '移動'
INFLECTOR_ORDINALS:
INFLECTOR_ORDINALS: [] 'first': '番目'
NICETIME: NICETIME:
NO_DATE_PROVIDED: 日付が設定されていません NO_DATE_PROVIDED: 日付が設定されていません
BAD_DATE: 不正な日付 BAD_DATE: 不正な日付
AGO: AGO:
FROM_NOW: from now
SECOND: SECOND:
MINUTE: MINUTE:
HOUR: HOUR:
@ -33,7 +35,6 @@ NICETIME:
WK: WK:
MO: MO:
YR: YR:
DEC: dec
SECOND_PLURAL: SECOND_PLURAL:
MINUTE_PLURAL: MINUTE_PLURAL:
HOUR_PLURAL: HOUR_PLURAL:
@ -50,8 +51,31 @@ NICETIME:
YR_PLURAL: YR_PLURAL:
DEC_PLURAL: 10年 DEC_PLURAL: 10年
FORM: FORM:
VALIDATION_FAIL: <b>バリデーション失敗 :</b> VALIDATION_FAIL: '<b>バリデーション失敗 :</b>'
INVALID_INPUT: 不正な入力: INVALID_INPUT: '不正な入力:'
MISSING_REQUIRED_FIELD: 必須項目が入力されていません: MISSING_REQUIRED_FIELD: '必須項目が入力されていません:'
MONTHS_OF_THE_YEAR: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] MONTHS_OF_THE_YEAR:
DAYS_OF_THE_WEEK: ['月', '火', '水', '木', '金', '土', '日'] - '1月'
- '2月'
- '3月'
- '4月'
- '5月'
- '6月'
- '7月'
- '8月'
- '9月'
- '10月'
- '11月'
- '12月'
DAYS_OF_THE_WEEK:
- '月'
- '火'
- '水'
- '木'
- '金'
- '土'
- '日'
CRON:
EVERY:
EVERY_MONTH: 毎月
ERROR1: 共有タイプ %s はサポートされていません

63
system/languages/ko.yaml Normal file
View File

@ -0,0 +1,63 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# 오류: 무효의 Frontmatter\n\n경로: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
NICETIME:
NO_DATE_PROVIDED: 제공된 날짜가 없습니다
BAD_DATE: 잘못된 날짜
AGO:
FROM_NOW:
SECOND:
MINUTE:
HOUR: 시간
DAY:
WEEK:
MONTH: 개월
YEAR:
DECADE: 년간
SEC:
MIN:
HR: 시간
WK:
MO: 개월
YR:
DEC: 년간
SECOND_PLURAL:
MINUTE_PLURAL:
HOUR_PLURAL: 시간
DAY_PLURAL:
WEEK_PLURAL:
MONTH_PLURAL: 개월
YEAR_PLURAL:
DECADE_PLURAL: 년간
SEC_PLURAL:
MIN_PLURAL:
HR_PLURAL: 시간
WK_PLURAL:
MO_PLURAL: 개월
YR_PLURAL:
DEC_PLURAL: 년간
FORM:
VALIDATION_FAIL: '<b>유효성 검사 실패:</b>'
INVALID_INPUT: '잘못된 입력'
MISSING_REQUIRED_FIELD: '누락 된 필수 필드:'
MONTHS_OF_THE_YEAR:
- '일월'
- '이월'
- '삼월'
- '사월'
- '오월'
- '유월'
- '칠월'
- '팔월'
- '구월'
- '시월'
- '십일월'
- '십이월'
DAYS_OF_THE_WEEK:
- '월요일'
- '화요일'
- '수요일'
- '목요일'
- '금요일'
- '토요일'
- '일요일'

View File

@ -1,17 +1,21 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Klaida: klaidinga įžanginė konfigūracija\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n %4$s\n```"
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
2: ryžiai - 'equipment'
3: pinigai - 'information'
4: prieskoniai - 'ryžiai'
5: serijos - 'pinigai'
6: žuvis - 'prieskoniai'
7: avis - 'serijos'
- 'žuvis'
- 'avis'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: žmonės 'person': 'žmonės'
man: žmogus 'man': 'žmogus'
child: vaikai 'child': 'vaikai'
sex: lytys 'sex': 'lytys'
move: juda 'move': 'juda'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Nenurodyta data NO_DATE_PROVIDED: Nenurodyta data
BAD_DATE: Neteisinga data BAD_DATE: Neteisinga data
@ -25,12 +29,14 @@ NICETIME:
MONTH: mėnuo MONTH: mėnuo
YEAR: metai YEAR: metai
DECADE: dešimtmetis DECADE: dešimtmetis
SEC: sek SEC: sek.
MIN: min MIN: min.
HR: val HR: val.
WK: sav WK: sav.
MO: mėn MO: mėn.
YR: m YR: m.
DEC: dešimtmetis
SECOND_PLURAL: sekundės
MINUTE_PLURAL: minutės MINUTE_PLURAL: minutės
HOUR_PLURAL: valandos HOUR_PLURAL: valandos
DAY_PLURAL: dienos DAY_PLURAL: dienos
@ -38,32 +44,35 @@ NICETIME:
MONTH_PLURAL: mėnesiai MONTH_PLURAL: mėnesiai
YEAR_PLURAL: metai YEAR_PLURAL: metai
DECADE_PLURAL: dešimtmečiai DECADE_PLURAL: dešimtmečiai
SEC_PLURAL: sek SEC_PLURAL: sek.
MIN_PLURAL: min MIN_PLURAL: min.
HR_PLURAL: val HR_PLURAL: val.
WK_PLURAL: sav WK_PLURAL: sav.
MO_PLURAL: mėn MO_PLURAL: mėn.
YR_PLURAL: m YR_PLURAL: m.
DEC_PLURAL: dešimtmečiai
FORM: FORM:
VALIDATION_FAIL: '<b>Patvirtinimas nepavyko:</b>'
INVALID_INPUT: 'Neteisingai įvesta į'
MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:' MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Sausis - 'Sausis'
- Vasaris - 'Vasaris'
- Kovas - 'Kovas'
- Balandis - 'Balandis'
- Gegužė - 'Gegužė'
- Birželis - 'Birželis'
- Liepa - 'Liepa'
- Rugpjūtis - 'Rugpjūtis'
- Rugsėjis - 'Rugsėjis'
- Spalis - 'Spalis'
- Lakpritis - 'Lakpritis'
- Gruodis - 'Gruodis'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Pirmadienis - 'Pirmadienis'
- Antradienis - 'Antradienis'
- Trečiadienis - 'Trečiadienis'
- Ketvirtadienis - 'Ketvirtadienis'
- Penktadienis - 'Penktadienis'
- Šeštadienis - 'Šeštadienis'
- Sekmadienis - 'Sekmadienis'

View File

@ -1,2 +1,4 @@
---
GRAV:
MONTHS_OF_THE_YEAR: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'] MONTHS_OF_THE_YEAR: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']
DAYS_OF_THE_WEEK: ['mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag'] DAYS_OF_THE_WEEK: ['mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag']

View File

@ -1,15 +1,75 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitel: %1$s\n---\n\n# Fout: ongeldige frontmatter\n\nPad: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'uitrusting'
- 'informatie'
- 'rijst'
- 'geld'
- 'soorten'
- 'reeks'
- 'vis'
- 'schaap'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: personen 'person': 'personen'
man: mensen 'man': 'mensen'
child: kinderen 'child': 'kinderen'
sex: geslacht 'sex': 'geslacht'
move: verplaatsen 'move': 'verplaatsen'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME: NICETIME:
NO_DATE_PROVIDED: geen datum opgegeven NO_DATE_PROVIDED: geen datum opgegeven
BAD_DATE: Datumformaat onjuist BAD_DATE: Datumformaat onjuist
AGO: geleden AGO: geleden
FROM_NOW: vanaf nu FROM_NOW: vanaf nu
JUST_NOW: zojuist
SECOND: seconde SECOND: seconde
MINUTE: minuut MINUTE: minuut
HOUR: uur HOUR: uur
@ -17,12 +77,14 @@ NICETIME:
WEEK: week WEEK: week
MONTH: maand MONTH: maand
YEAR: jaar YEAR: jaar
DECADE: decenium DECADE: decennium
SEC: s SEC: s
MIN: min MIN: min
HR: u HR: u
WK: week
MO: ma MO: ma
YR: j YR: j
DEC: decennia
SECOND_PLURAL: seconden SECOND_PLURAL: seconden
MINUTE_PLURAL: minuten MINUTE_PLURAL: minuten
HOUR_PLURAL: uren HOUR_PLURAL: uren
@ -37,28 +99,46 @@ NICETIME:
WK_PLURAL: weken WK_PLURAL: weken
MO_PLURAL: maanden MO_PLURAL: maanden
YR_PLURAL: jaren YR_PLURAL: jaren
DEC_PLURAL: decennia
FORM: FORM:
VALIDATION_FAIL: '<b>Validatie mislukt:</b>' VALIDATION_FAIL: '<b>Validatie mislukt:</b>'
INVALID_INPUT: Ongeldige invoer in INVALID_INPUT: 'Ongeldige invoer in'
MISSING_REQUIRED_FIELD: 'Verplicht veld ontbreekt:' MISSING_REQUIRED_FIELD: 'Ontbrekend verplicht veld:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Januari - 'Januari'
- Februari - 'Februari'
- Maart - 'Maart'
- april - 'April'
- Mei - 'Mei'
- Juni - 'Juni'
- Juli - 'Juli'
- Augustus - 'Augustus'
- september - 'September'
- Oktober - 'Oktober'
- november - 'November'
- december - 'December'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Maandag - 'Maandag'
- Dinsdag - 'Dinsdag'
- Woensdag - 'Woensdag'
- Donderdag - 'Donderdag'
- Vrijdag - 'Vrijdag'
- Zaterdag - 'Zaterdag'
- Zondag - 'Zondag'
CRON:
EVERY: elke
EVERY_HOUR: elk uur
EVERY_MINUTE: elke minuut
EVERY_DAY_OF_WEEK: elke dag van de week
EVERY_DAY_OF_MONTH: elke dag van de maand
EVERY_MONTH: elke maand
TEXT_PERIOD: Elke <b />
TEXT_MINS: ' <b /> minuten te laat'
TEXT_TIME: ' op <b />:<b />'
TEXT_DOW: ' op <b />'
TEXT_MONTH: ' van <b />'
TEXT_DOM: ' op <b />'
ERROR1: De tag %s wordt niet ondersteund!
ERROR2: Slecht aantal elementen
ERROR3: Het jquery_element moet ingesteld worden in de jqCron instellingen
ERROR4: Onbekende expressie

View File

@ -1,41 +1,27 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\nTittel: %1$s\n---\n\n# Feilmelding: Ugyldig Frontmatter\n\nSti: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
Tittel: %1$s
---
# Feilmelding: Ugyldig Frontmatter
Pane: '%2$s'
**%3$s **
```
%4$s
```
INFLECTOR_PLURALS:
/(quiz)$/i: '\1zes'
/^(ox)$/i: '\1en'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
- utstyr - 'utstyr'
- informasjon - 'informasjon'
- ris - 'ris'
- penger - 'penger'
- arter - 'arter'
- serier - 'serier'
- fisk - 'fisk'
- sau - 'sau'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: folk 'person': 'folk'
man: menn 'man': 'menn'
child: barn 'child': 'barn'
sex: kjønn 'sex': 'kjønn'
move: trekk 'move': 'trekk'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Ingen dato gitt NO_DATE_PROVIDED: Ingen dato gitt
BAD_DATE: Dårlig dato BAD_DATE: Ugyldig dato
AGO: siden AGO: siden
FROM_NOW: fra nå FROM_NOW: fra nå
JUST_NOW: akkurat nå
SECOND: sekund SECOND: sekund
MINUTE: minutt MINUTE: minutt
HOUR: time HOUR: time
@ -45,12 +31,11 @@ NICETIME:
YEAR: år YEAR: år
DECADE: tiår DECADE: tiår
SEC: sek SEC: sek
MIN: min
HR: t HR: t
WK: uke WK: uke
MO: MO:
YR: år YR: år
DEC: des DEC: tiår
SECOND_PLURAL: sekunder SECOND_PLURAL: sekunder
MINUTE_PLURAL: minutter MINUTE_PLURAL: minutter
HOUR_PLURAL: timer HOUR_PLURAL: timer
@ -63,31 +48,35 @@ NICETIME:
MIN_PLURAL: min MIN_PLURAL: min
HR_PLURAL: timer HR_PLURAL: timer
WK_PLURAL: uker WK_PLURAL: uker
MO_PLURAL: mdr MO_PLURAL: md
YR_PLURAL: år YR_PLURAL: år
DEC_PLURAL: årtier DEC_PLURAL: årtier
FORM: FORM:
VALIDATION_FAIL: '<b>Validering mislyktes:</b>' VALIDATION_FAIL: '<b>Godkjenning mislyktes:</b>'
INVALID_INPUT: Ugyldig innhold i INVALID_INPUT: 'Ugyldig innhold i'
MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:' MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- januar - 'januar'
- februar - 'februar'
- mars - 'mars'
- april - 'april'
- mai - 'mai'
- juni - 'juni'
- juli - 'juli'
- august - 'august'
- september - 'september'
- oktober - 'oktober'
- november - 'november'
- desember - 'desember'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- mandag - 'mandag'
- tirsdag - 'tirsdag'
- onsdag - 'onsdag'
- torsdag - 'torsdag'
- fredag - 'fredag'
- lørdag - 'lørdag'
- søndag - 'søndag'
CRON:
EVERY: hver
EVERY_HOUR: hver time
EVERY_MINUTE: hvert minutt

View File

@ -1,23 +1,32 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Nieprawidłowy Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s INFLECTOR_SINGULAR:
--- '/(alias|status)es$/i': '\1'
INFLECTOR_UNCOUNTABLE:
# Error: Nieprawidłowy Frontmatter - 'wyposażenie'
- 'informacja'
Path: `%2$s` - 'rice'
- 'pieniądze'
**%3$s** - 'species'
- 'series'
``` - 'ryba'
%4$s - 'owca'
``` INFLECTOR_IRREGULAR:
'person': 'człowiek'
'man': 'mężczyźni'
'child': 'dzieci'
'sex': 'płci'
INFLECTOR_ORDINALS:
'first': 'pierwszy'
'second': 'drugi'
'third': 'trzeci'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Nie podano daty NO_DATE_PROVIDED: Nie podano daty
BAD_DATE: Zła data BAD_DATE: Zła data
AGO: temu AGO: temu
FROM_NOW: od teraz FROM_NOW: od teraz
JUST_NOW: właśnie teraz
SECOND: sekunda SECOND: sekunda
MINUTE: minuta MINUTE: minuta
HOUR: godzina HOUR: godzina
@ -27,7 +36,7 @@ NICETIME:
YEAR: rok YEAR: rok
DECADE: dekada DECADE: dekada
SEC: sek SEC: sek
MIN: min MIN: minuta
HR: godz HR: godz
WK: tydz WK: tydz
MO: m-c MO: m-c
@ -50,26 +59,42 @@ NICETIME:
DEC_PLURAL: dekad DEC_PLURAL: dekad
FORM: FORM:
VALIDATION_FAIL: '<b>Weryfikacja nie powiodła się:</b>' VALIDATION_FAIL: '<b>Weryfikacja nie powiodła się:</b>'
INVALID_INPUT: Nieprawidłowe dane wejściowe INVALID_INPUT: 'Nieprawidłowe dane wejściowe'
MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:' MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:'
XSS_ISSUES: "Potencjalne problemy XSS wykryte w polu '%s'"
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Styczeń - 'Styczeń'
- Luty - 'Luty'
- Marzec - 'Marzec'
- Kwiecień - 'Kwiecień'
- Maj - 'Maj'
- Czerwiec - 'Czerwiec'
- Lipiec - 'Lipiec'
- Sierpień - 'Sierpień'
- Wrzesień - 'Wrzesień'
- Październik - 'Październik'
- Listopad - 'Listopad'
- Grudzień - 'Grudzień'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Poniedziałek - 'Poniedziałek'
- Wtorek - 'Wtorek'
- Środa - 'Środa'
- Czwartek - 'Czwartek'
- Piątek - 'Piątek'
- Sobota - 'Sobota'
- Niedziela - 'Niedziela'
YES: "Tak"
NO: "Nie"
CRON:
EVERY: każdy
EVERY_HOUR: każdą godzinę
EVERY_MINUTE: każdą minutę
EVERY_DAY_OF_WEEK: każdego dnia tygodnia
EVERY_DAY_OF_MONTH: każdego dnia miesiące
EVERY_MONTH: każdego miesiąca
TEXT_PERIOD: Każdego <b />
TEXT_MINS: 'o <b /> minut po godzinie'
TEXT_TIME: 'o <b />:<b />'
ERROR1: Znacznik %s nie jest wspierany!
ERROR2: Nieprawidłowa liczba elementów
ERROR4: Wyrażenie nierozpoznane

View File

@ -1,30 +1,75 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Erro: Frontmatter Inválido\n\nLocalização: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
título: %1$s INFLECTOR_PLURALS:
--- '/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
# Erro: Frontmatter inválida '/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
Caminho: `%2$s` '/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
**%3$s** '/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
``` '/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
%4$s '/sis$/i': 'ses'
``` '/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
1: informação - 'equipamento'
2: arroz - 'informação'
3: dinheiro - 'arroz'
- 'dinheiro'
- 'espécie'
- 'série'
- 'peixe'
- 'ovelha'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
man: homens 'person': 'pessoas'
sex: sexos 'man': 'homens'
'child': 'crianças'
'sex': 'sexos'
'move': 'movimentos'
INFLECTOR_ORDINALS:
'default': 'º'
'first': 'º'
'second': 'º'
'third': 'º'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Não foi fornecida data NO_DATE_PROVIDED: Nenhuma data fornecida
BAD_DATE: Data inválida BAD_DATE: Data inválida
AGO: atrás AGO: atrás
FROM_NOW: a partir de agora FROM_NOW: a partir de agora
JUST_NOW: mesmo agora
SECOND: segundo SECOND: segundo
MINUTE: minuto MINUTE: minuto
HOUR: hora HOUR: hora
@ -34,12 +79,12 @@ NICETIME:
YEAR: ano YEAR: ano
DECADE: década DECADE: década
SEC: seg SEC: seg
MIN: n MIN: min
HR: h HR: hora
WK: sem WK: semana
MO: m MO: mês
YR: a YR: ano
DEC: dec DEC: década
SECOND_PLURAL: segundos SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos MINUTE_PLURAL: minutos
HOUR_PLURAL: horas HOUR_PLURAL: horas
@ -48,32 +93,52 @@ NICETIME:
MONTH_PLURAL: meses MONTH_PLURAL: meses
YEAR_PLURAL: anos YEAR_PLURAL: anos
DECADE_PLURAL: décadas DECADE_PLURAL: décadas
SEC_PLURAL: seg SEC_PLURAL: segs
MIN_PLURAL: mins MIN_PLURAL: mins
HR_PLURAL: hrs HR_PLURAL: hrs
WK_PLURAL: sems WK_PLURAL: sems
MO_PLURAL: meses
YR_PLURAL: anos YR_PLURAL: anos
DEC_PLURAL: décadas
FORM: FORM:
VALIDATION_FAIL: '<b>Validação falhada: </b>' VALIDATION_FAIL: '<b>Falha na validação:</b>'
MISSING_REQUIRED_FIELD: 'Campo obrigatório ausente:' INVALID_INPUT: 'Dados inseridos são inválidos em'
MISSING_REQUIRED_FIELD: 'Campo obrigatório em falta:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Janeiro - 'Janeiro'
- Fevereiro - 'Fevereiro'
- Março - 'Março'
- Abril - 'Abril'
- Maio - 'Maio'
- Junho - 'Junho'
- Julho - 'Julho'
- Agosto - 'Agosto'
- Setembro - 'Setembro'
- Outubro - 'Outubro'
- Novembro - 'Novembro'
- Dezembro - 'Dezembro'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Segunda - 'Segunda-feira'
- Terça - 'Terça-feira'
- Quarta - 'Quarta-feira'
- Quinta - 'Quinta-feira'
- Sexta - 'Sexta-feira'
- Sábado - 'Sábado'
- Domingo - 'Domingo'
CRON:
EVERY: cada
EVERY_HOUR: cada hora
EVERY_MINUTE: cada minuto
EVERY_DAY_OF_WEEK: todos os dias da semana
EVERY_DAY_OF_MONTH: todos os dias do mês
EVERY_MONTH: todos os meses
TEXT_PERIOD: Cada <b />
TEXT_MINS: ' em <b /> minuto(s) após a hora'
TEXT_TIME: ' em <b />:<b />'
TEXT_DOW: ' em <b />'
TEXT_MONTH: ' de <b />'
TEXT_DOM: ' em <b />'
ERROR1: A tag %s não é suportada!
ERROR2: Número de elementos inválido
ERROR3: O jquery_element deve ser definido nas configurações do jqCron
ERROR4: Expressão não reconhecida

View File

@ -1,49 +1,27 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\nTitlu: %1$s\n---\n# Eroare: Frontmatter este invalid\n\nCalea: `%2$s`\n\n**%3$s**\n\n```\n%4$s"
Titlu: %1$s
---
# Eroare: Frontmatter este invalid
Calea: `%2$s`
**%3$s**
```
%4$s
INFLECTOR_PLURALS:
/(quiz)$/i: '\1zes'
/^(ox)$/i: '\1en'
"/([m|l])ouse$/i": '\1ice'
/(matr|vert|ind)ix|ex$/i: '\1ices'
/(x|ch|ss|sh)$/i: '\1es'
"/([^aeiouy]|qu)ies$/i": '\1y'
"/([^aeiouy]|qu)y$/i": '\1ies'
/(hive)$/i: '\1s'
"/(?:([^f])fe|([lr])f)$/i": '\1\2ves'
/sis$/i: ses
"/([ti])um$/i": '\1a'
/(buffal|tomat)o$/i: '\1oes'
INFLECTOR_UNCOUNTABLE: INFLECTOR_UNCOUNTABLE:
- echipament - 'echipament'
- informaţie - 'informaţie'
- orez - 'orez'
- bani - 'bani'
- specii - 'specii'
- serii - 'serii'
- peşte - 'peşte'
- oaie - 'oaie'
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: persoane 'person': 'persoane'
man: bărbați 'man': 'bărbați'
child: copii 'child': 'copii'
sex: sexe 'sex': 'sexe'
move: mutări 'move': 'mutări'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Nu există o dată prevăzută NO_DATE_PROVIDED: Nu există o dată prevăzută
BAD_DATE: Dată incorectă BAD_DATE: Dată incorectă
AGO: în urmă AGO: în urmă
FROM_NOW: de acum FROM_NOW: de acum
JUST_NOW: chiar acum
SECOND: secundă SECOND: secundă
MINUTE: minut MINUTE: minut
HOUR: oră HOUR: oră
@ -52,8 +30,8 @@ NICETIME:
MONTH: lună MONTH: lună
YEAR: an YEAR: an
DECADE: decadă DECADE: decadă
SEC: sec SEC: secunde
MIN: min MIN: minute
HR: oră HR: oră
WK: săpt WK: săpt
MO: lună MO: lună
@ -76,26 +54,43 @@ NICETIME:
DEC_PLURAL: decenii DEC_PLURAL: decenii
FORM: FORM:
VALIDATION_FAIL: '<b>Validare nereușită</b>' VALIDATION_FAIL: '<b>Validare nereușită</b>'
INVALID_INPUT: Date incorecte în INVALID_INPUT: 'Date incorecte în'
MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:' MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Ianuarie - 'Ianuarie'
- Februarie - 'Februarie'
- Martie - 'Martie'
- Aprilie - 'Aprilie'
- Mai - 'Mai'
- Iunie - 'Iunie'
- Iulie - 'Iulie'
- August - 'August'
- Septembrie - 'Septembrie'
- Octombrie - 'Octombrie'
- Noiembrie - 'Noiembrie'
- Decembrie - 'Decembrie'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Luni - 'Luni'
- Marți - 'Marți'
- Miercuri - 'Miercuri'
- Joi - 'Joi'
- Vineri - 'Vineri'
- Sâmbătă - 'Sâmbătă'
- Duminică - 'Duminică'
CRON:
EVERY: la fiecare
EVERY_HOUR: la fiecare oră
EVERY_MINUTE: la fiecare minut
EVERY_DAY_OF_WEEK: fiecare zi a săptămânii
EVERY_DAY_OF_MONTH: fiecare zi a lunii
EVERY_MONTH: fiecare lună
TEXT_PERIOD: Fiecare <b />
TEXT_MINS: ' la <b /> minut(e) ale fiecărei ore'
TEXT_TIME: ' la <b />:<b />'
TEXT_DOW: ' pe <b />'
TEXT_MONTH: 'al(e) <b />'
TEXT_DOM: ' pe <b />'
ERROR1: Eticheta %s nu este acceptată!
ERROR2: Număr nevalid de elemente
ERROR3: jquery_element ar trebui setat în opțiunile jqCron
ERROR4: Expresie necunoscută

View File

@ -1,81 +1,104 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Ошибка: недопустимое содержимое Frontmatter\n\nПуть: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s INFLECTOR_UNCOUNTABLE:
--- - 'экипировка'
- 'информация'
# Ошибка: Недопустимое содержимое - 'рис'
- 'деньги'
Path: `%2$s` - 'виды'
- 'серии'
**%3$s** - 'рыба'
- 'овца'
```
%4$s
```
INFLECTOR_IRREGULAR: INFLECTOR_IRREGULAR:
person: люди 'person': 'люди'
man: человек 'man': 'человек'
child: ребенок 'child': 'дети'
sex: пол 'sex': 'пол'
move: движется 'move': 'движется'
INFLECTOR_ORDINALS:
'default': 'й'
'first': 'й'
'second': 'й'
'third': 'й'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Дата не указана NO_DATE_PROVIDED: Дата не указана
BAD_DATE: Неверная дата BAD_DATE: Неверная дата
AGO: назад AGO: назад
FROM_NOW: теперь FROM_NOW: теперь
JUST_NOW: только что
SECOND: секунда SECOND: секунда
MINUTE: минута MINUTE: минута
HOUR: час HOUR: час
DAY: д DAY: день
WEEK: неделя WEEK: неделя
MONTH: месяц MONTH: месяц
YEAR: год YEAR: год
DECADE: десятилетие DECADE: десятилетие
SEC: с SEC: сек
MIN: мин MIN: мин
HR: ч HR: ч
WK: нед. WK: нед
MO: мес. MO: мес
YR: г. YR: г
DEC: гг. DEC: дстлт
SECOND_PLURAL: секунды SECOND_PLURAL: сек
MINUTE_PLURAL: минуты MINUTE_PLURAL: мин
HOUR_PLURAL: часы HOUR_PLURAL: ч
DAY_PLURAL: д DAY_PLURAL: д
WEEK_PLURAL: недели WEEK_PLURAL: нед
MONTH_PLURAL: месяцы MONTH_PLURAL: мес
YEAR_PLURAL: годы YEAR_PLURAL: г
DECADE_PLURAL: десятилетия DECADE_PLURAL: дстлт
SEC_PLURAL: с SEC_PLURAL: сек
MIN_PLURAL: мин MIN_PLURAL: мин
HR_PLURAL: ч HR_PLURAL: ч
WK_PLURAL: нед WK_PLURAL: нед
MO_PLURAL: мес MO_PLURAL: мес
YR_PLURAL: г. YR_PLURAL: г
DEC_PLURAL: гг. DEC_PLURAL: дстлт
FORM: FORM:
VALIDATION_FAIL: '<b>Проверка не удалась:</b>' VALIDATION_FAIL: '<b>Проверка не удалась:</b>'
INVALID_INPUT: Неверный ввод в INVALID_INPUT: 'Неверный ввод в'
MISSING_REQUIRED_FIELD: 'Отсутствует необходимое поле:' MISSING_REQUIRED_FIELD: 'Отсутствует необходимое поле:'
XSS_ISSUES: "Обнаружены потенциальные XSS проблемы в поле '%s'"
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Январь - 'январь'
- Февраль - 'февраль'
- Март - 'март'
- Апрель - 'апрель'
- Май - 'май'
- Июнь - 'июнь'
- Июль - 'июль'
- Август - 'август'
- Сентябрь - 'сентябрь'
- Октябрь - 'октябрь'
- Ноябрь - 'ноябрь'
- Декабрь - 'декабрь'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Понедельник - 'понедельник'
- Вторник - 'вторник'
- Среда - 'среда'
- Четверг - 'четверг'
- Пятница - 'пятница'
- Суббота - 'суббота'
- Воскресенье - 'воскресенье'
YES: "Да"
NO: "Нет"
CRON:
EVERY: раз в
EVERY_HOUR: раз в час
EVERY_MINUTE: раз в минуту
EVERY_DAY_OF_WEEK: каждый день недели
EVERY_DAY_OF_MONTH: каждый день недели
EVERY_MONTH: раз в месяц
TEXT_PERIOD: Каждый <b />
TEXT_MINS: ' в <b /> минуте(ах) за час'
TEXT_TIME: ' в <b />:<b />'
TEXT_DOW: ' на <b />'
TEXT_MONTH: ' из <b />'
TEXT_DOM: ' на <b />'
ERROR1: Тег %s не поддерживается!
ERROR2: Неверное количество элементов
ERROR3: jquery_element должен быть установлен в настройки jqCron
ERROR4: Выражение не распознано

View File

@ -1,9 +1,75 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Chyba: Chybný frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'vybavenie'
- 'informácie'
- 'ryža'
- 'peniaze'
- 'druhy'
- 'séria'
- 'ryba'
- 'ovce'
INFLECTOR_IRREGULAR:
'person': 'ľudia'
'man': 'muži'
'child': 'deti'
'sex': 'pohlavia'
'move': 'pohyby'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Neposkytnutý žiaden dátum NO_DATE_PROVIDED: Neposkytnutý žiaden dátum
BAD_DATE: Nesprávny dátum BAD_DATE: Nesprávny dátum
AGO: pred AGO: pred
FROM_NOW: odteraz FROM_NOW: odteraz
JUST_NOW: práve teraz
SECOND: sekunda SECOND: sekunda
MINUTE: minúta MINUTE: minúta
HOUR: hodina HOUR: hodina
@ -15,28 +81,64 @@ NICETIME:
SEC: sek SEC: sek
MIN: min MIN: min
HR: hod HR: hod
WK: t
MO: m
YR: r
DEC: dec
SECOND_PLURAL: sekúnd
MINUTE_PLURAL: minút
HOUR_PLURAL: hodín
DAY_PLURAL: dní
WEEK_PLURAL: týždňov
MONTH_PLURAL: mesiacov
YEAR_PLURAL: rokov
DECADE_PLURAL: dekád
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: hod
WK_PLURAL: t
MO_PLURAL: mes.
YR_PLURAL: rokov
DEC_PLURAL: dekád
FORM: FORM:
VALIDATION_FAIL: '<b>Overenie zlyhalo:</b>' VALIDATION_FAIL: '<b>Overenie zlyhalo:</b>'
INVALID_INPUT: Neplatný vstup v INVALID_INPUT: 'Neplatný vstup v'
MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:' MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Január - 'Január'
- Február - 'Február'
- Marec - 'Marec'
- Apríl - 'Apríl'
- Máj - 'Máj'
- Jún - 'Jún'
- Júl - 'Júl'
- August - 'August'
- September - 'September'
- Október - 'Október'
- November - 'November'
- December - 'December'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Pondelok - 'Pondelok'
- Utorok - 'Utorok'
- Streda - 'Streda'
- Štvrtok - 'Štvrtok'
- Piatok - 'Piatok'
- Sobota - 'Sobota'
- Nedeľa - 'Nedeľa'
CRON:
EVERY: každý
EVERY_HOUR: každú hodinu
EVERY_MINUTE: každú minútu
EVERY_DAY_OF_WEEK: každý deň v týždni
EVERY_DAY_OF_MONTH: každý deň v mesiaci
EVERY_MONTH: každý mesiac
TEXT_PERIOD: Každý <b />
TEXT_MINS: ' at <b /> minute(s) past the hour'
TEXT_TIME: ' at <b />:<b />'
TEXT_DOW: ' on <b />'
TEXT_MONTH: ' of <b />'
TEXT_DOM: ' on <b />'
ERROR1: Tag %s nieje podporovaný!
ERROR2: Chybný počet položiek
ERROR3: jquery_element musí byť nastavený v nastaveniach pre jqCron
ERROR4: Neznámy výraz

62
system/languages/sl.yaml Normal file
View File

@ -0,0 +1,62 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Napaka: Neveljavna Frontmatter\n\nPath: `%2$s`\n\n**%3$s ** \n\n```\n%4$s \n```"
NICETIME:
NO_DATE_PROVIDED: Datum ni na voljo
BAD_DATE: Neveljaven datum
AGO: pred
FROM_NOW: od zdaj
SECOND: sekunda
MINUTE: minuta
HOUR: ura
DAY: dan
WEEK: teden
MONTH: mesec
YEAR: leto
DECADE: desetletje
SEC: sek
HR: ur
WK: T.
MO: m
YR: l
DEC: des
SECOND_PLURAL: sekund
MINUTE_PLURAL: minut
HOUR_PLURAL: ure
DAY_PLURAL: dnevi
WEEK_PLURAL: tednov
MONTH_PLURAL: mesecev
YEAR_PLURAL: leta
DECADE_PLURAL: desetletja
SEC_PLURAL: s
MIN_PLURAL: min
HR_PLURAL: ur
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: l
DEC_PLURAL: des
FORM:
VALIDATION_FAIL: '<b>Preverjanje veljavnosti ni uspelo:</b>'
INVALID_INPUT: 'Neveljaven vnos v'
MISSING_REQUIRED_FIELD: 'Manjka obvezno polje:'
MONTHS_OF_THE_YEAR:
- 'Januar'
- 'Februar'
- 'Marec'
- 'April'
- 'Maj'
- 'Junij'
- 'Julij'
- 'Avgust'
- 'September'
- 'Oktober'
- 'November'
- 'December'
DAYS_OF_THE_WEEK:
- 'Ponedeljek'
- 'Torek'
- 'Sreda'
- 'Četrtek'
- 'Petek'
- 'Sobota'
- 'Nedelja'

144
system/languages/sr.yaml Normal file
View File

@ -0,0 +1,144 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nнаслов: %1$s\n---\n\n# Грешка: неисправан Frontmatter\n\nПутања: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- 'опрема'
- 'информација'
- 'пиринач'
- 'новац'
- 'врсте'
- 'серије'
- 'риба'
- 'овца'
INFLECTOR_IRREGULAR:
'person': 'особе'
'man': 'људи'
'child': 'деца'
'sex': 'полови'
'move': 'помери'
INFLECTOR_ORDINALS:
'default': 'ти'
'first': 'први'
'second': 'други'
'third': 'трећи'
NICETIME:
NO_DATE_PROVIDED: Нема датума
BAD_DATE: Погрешан датум
AGO: од пре
FROM_NOW: од сада
JUST_NOW: управо сада
SECOND: секунда
MINUTE: минута
HOUR: сат
DAY: дан
WEEK: недеља
MONTH: месец
YEAR: година
DECADE: декада
SEC: сек
MIN: мин
HR: сат
WK: нед
MO: мес
YR: год
DEC: дек
SECOND_PLURAL: секунди
MINUTE_PLURAL: минута
HOUR_PLURAL: сати
DAY_PLURAL: дана
WEEK_PLURAL: недеља
MONTH_PLURAL: месеци
YEAR_PLURAL: године(а)
DECADE_PLURAL: декаде(а)
SEC_PLURAL: сек
MIN_PLURAL: мин
HR_PLURAL: сати
WK_PLURAL: недеља
MO_PLURAL: месеци
YR_PLURAL: година
DEC_PLURAL: декада
FORM:
VALIDATION_FAIL: '<b>Провера неуспела:</b>'
INVALID_INPUT: 'Неисправан унос у'
MISSING_REQUIRED_FIELD: 'Недостаје обавезн поље:'
MONTHS_OF_THE_YEAR:
- 'Јануар'
- 'Фебруар'
- 'Март'
- 'Април'
- 'Мај'
- 'Јуни'
- 'Јули'
- 'Август'
- 'Септембар'
- 'Октобар'
- 'Новембар'
- 'Децембар'
DAYS_OF_THE_WEEK:
- 'Понедељак'
- 'Уторак'
- 'Среда'
- 'Четвртак'
- 'Петак'
- 'Субота'
- 'Недеља'
CRON:
EVERY: сваки
EVERY_HOUR: сваки сат
EVERY_MINUTE: сваки минут
EVERY_DAY_OF_WEEK: сваки дан у недељи
EVERY_DAY_OF_MONTH: сваки дан у месецу
EVERY_MONTH: сваки месец
TEXT_PERIOD: Сваки <b />
TEXT_MINS: ' у <b /> минути(а) прошлог сата'
TEXT_TIME: ' у <b />:<b />'
TEXT_DOW: ' на <b />'
TEXT_MONTH: ' од <b />'
TEXT_DOM: ' на <b />'
ERROR1: Таг %s није подржан!
ERROR2: Погрешан број елемената
ERROR3: јquery_element би требао да буде постављен у jqCron подешавању
ERROR4: Непрепознат израз

View File

@ -1,10 +1,32 @@
--- ---
FRONTMATTER_ERROR_PAGE: '--- titel: %1$s --- # Fel: Ogiltig Frontmatter-sökväg: `%2$s` **%3$s** ``` %4$s ```' GRAV:
FRONTMATTER_ERROR_PAGE: "--- titel: %1$s --- # Fel: Ogiltig Frontmatter-sökväg: `%2$s` **%3$s** ``` %4$s ```"
INFLECTOR_UNCOUNTABLE:
- 'utrustning'
- 'information'
- 'ris'
- 'pengar'
- 'arter'
- 'serier'
- 'fisk'
- 'får'
INFLECTOR_IRREGULAR:
'person': 'personer'
'man': 'män'
'child': 'barn'
'sex': 'kön'
'move': 'flytta'
INFLECTOR_ORDINALS:
'default': ':e'
'first': ':a'
'second': ':a'
'third': ':e'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Inget datum har angivits NO_DATE_PROVIDED: Inget datum har angivits
BAD_DATE: Ogiltigt datum BAD_DATE: Ogiltigt datum
AGO: sedan AGO: sedan
FROM_NOW: från nu FROM_NOW: fr.o.m nu
JUST_NOW: just nu
SECOND: sekund SECOND: sekund
MINUTE: minut MINUTE: minut
HOUR: timme HOUR: timme
@ -37,26 +59,42 @@ NICETIME:
DEC_PLURAL: dec DEC_PLURAL: dec
FORM: FORM:
VALIDATION_FAIL: '<b>Kontrollen misslyckades:</b>' VALIDATION_FAIL: '<b>Kontrollen misslyckades:</b>'
INVALID_INPUT: Ogiltig indata i INVALID_INPUT: 'Ogiltig indata i'
MISSING_REQUIRED_FIELD: 'Obligatoriskt fält måste fyllas i:' MISSING_REQUIRED_FIELD: 'Obligatoriskt fält måste fyllas i:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Januari - 'Januari'
- Februrari - 'Februari'
- Mars - 'Mars'
- April - 'April'
- Maj - 'Maj'
- Juni - 'Juni'
- Juli - 'Juli'
- Augusti - 'Augusti'
- September - 'September'
- Oktober - 'Oktober'
- November - 'November'
- December - 'December'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Måndag - 'Måndag'
- Tisdag - 'Tisdag'
- Onsdag - 'Onsdag'
- Torsdag - 'Torsdag'
- Fredag - 'Fredag'
- Lördag - 'Lördag'
- Söndag - 'Söndag'
CRON:
EVERY: varje
EVERY_HOUR: varje timme
EVERY_MINUTE: varje minut
EVERY_DAY_OF_WEEK: varje veckodag
EVERY_DAY_OF_MONTH: alla månadens dagar
EVERY_MONTH: varje månad
TEXT_PERIOD: Varje <b />
TEXT_MINS: ' timmens <b />:e minut'
TEXT_TIME: ' kl <b />:<b />'
TEXT_DOW: ' <b />'
TEXT_MONTH: ' <b />'
TEXT_DOM: ' <b />'
ERROR1: Taggen %s stöds inte!
ERROR2: Ogiltigt antal element
ERROR4: Uttrycket känns inte igen

View File

@ -1,18 +1,6 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\nชื่อเรื่อง: %1$s\n---\n\n# ข้อผิดพลาด: Invalid Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
ชื่อเรื่อง: %1$s
---
# ข้อผิดพลาด: Invalid Frontmatter
Path: `%2$s`
**%3$s**
```
%4$s
```
NICETIME: NICETIME:
NO_DATE_PROVIDED: ไม่มีวันที่ให้ NO_DATE_PROVIDED: ไม่มีวันที่ให้
BAD_DATE: รูปแบบวันที่ผิด BAD_DATE: รูปแบบวันที่ผิด
@ -29,10 +17,6 @@ NICETIME:
SEC: วิ SEC: วิ
MIN: นาที MIN: นาที
HR: ชม. HR: ชม.
WK: wk
MO: mo
YR: yr
DEC: dec
SECOND_PLURAL: วินาที SECOND_PLURAL: วินาที
MINUTE_PLURAL: นาที MINUTE_PLURAL: นาที
HOUR_PLURAL: ชั่วโมง HOUR_PLURAL: ชั่วโมง
@ -44,32 +28,29 @@ NICETIME:
SEC_PLURAL: วินาที SEC_PLURAL: วินาที
MIN_PLURAL: นาที MIN_PLURAL: นาที
HR_PLURAL: ชั่วโมง HR_PLURAL: ชั่วโมง
WK_PLURAL: wks
MO_PLURAL: mos
YR_PLURAL: ปี YR_PLURAL: ปี
DEC_PLURAL: decs
FORM: FORM:
VALIDATION_FAIL: '<b>ตรวจสอบล้มเหลว: </b>' VALIDATION_FAIL: '<b>ตรวจสอบล้มเหลว: </b>'
INVALID_INPUT: ป้อนข้อมูลไม่ถูกต้องใน INVALID_INPUT: 'ป้อนข้อมูลไม่ถูกต้องใน'
MISSING_REQUIRED_FIELD: 'ขาดข้อมูลที่จำเป็น:' MISSING_REQUIRED_FIELD: 'ขาดข้อมูลที่จำเป็น:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- มกราคม - 'มกราคม'
- กุมภาพันธ์ - 'กุมภาพันธ์'
- มีนาคม - 'มีนาคม'
- เมษายน - 'เมษายน'
- พฤษภาคม - 'พฤษภาคม'
- มิถุนายน - 'มิถุนายน'
- กรกฏาคม - 'กรกฏาคม'
- สิงหาคม - 'สิงหาคม'
- กันยายน - 'กันยายน'
- ตุลาคม - 'ตุลาคม'
- พฤศจิกายน - 'พฤศจิกายน'
- ธันวาคม - 'ธันวาคม'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- จันทร์ - 'จันทร์'
- อังคาร - 'อังคาร'
- พุธ - 'พุธ'
- พฤหัสบดี - 'พฤหัสบดี'
- ศุกร์ - 'ศุกร์'
- เสาร์ - 'เสาร์'
- อาทิตย์ - 'อาทิตย์'

View File

@ -1,9 +1,32 @@
--- ---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nBaşlık: %1$s\n---\n\n# Hata: Geçersiz Önbölüm\n\nYol: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'ekipman'
- 'bilgi'
- 'pirinç'
- 'para'
- 'türler'
- 'seriler'
- 'balık'
- 'koyun'
INFLECTOR_IRREGULAR:
'person': 'kişi'
'man': 'erkek'
'child': 'çocuklar'
'sex': 'cinsiyet'
'move': 'taşınmış'
INFLECTOR_ORDINALS:
'default': '#F'
'first': ' 1.'
'second': ' 2.'
'third': ' 3.'
NICETIME: NICETIME:
NO_DATE_PROVIDED: Tarih yok NO_DATE_PROVIDED: Sağlanan tarih yok
BAD_DATE: Yanlış tarih BAD_DATE: Yanlış tarih
AGO: önce AGO: önce
FROM_NOW: (şimdiden) FROM_NOW: şu andan itibaren
JUST_NOW: şimdi
SECOND: saniye SECOND: saniye
MINUTE: dakika MINUTE: dakika
HOUR: saat HOUR: saat
@ -32,28 +55,44 @@ NICETIME:
HR_PLURAL: sa HR_PLURAL: sa
WK_PLURAL: hft WK_PLURAL: hft
MO_PLURAL: ay MO_PLURAL: ay
YR_PLURAL: yl YR_PLURAL: yıl
DEC_PLURAL: onyl DEC_PLURAL: onyl
FORM: FORM:
VALIDATION_FAIL: '<b>Doğrulama başarısız:</b>' VALIDATION_FAIL: '<b>Doğrulama başarısız:</b>'
INVALID_INPUT: 'Geçersiz bilgi girişi'
MISSING_REQUIRED_FIELD: 'Gerekli alan eksik:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Ocak - 'Ocak'
- Şubat - 'Şubat'
- Mart - 'Mart'
- Nisan - 'Nisan'
- Mayıs - 'Mayıs'
- Haziran - 'Haziran'
- Temmuz - 'Temmuz'
- Ağustos - 'Ağustos'
- Eylül - 'Eylül'
- Ekim - 'Ekim'
- Kasım - 'Kasım'
- Aralık - 'Aralık'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Pazartesi - 'Pazartesi'
- Salı - 'Salı'
- Çarşamba - 'Çarşamba'
- Perşembe - 'Perşembe'
- Cuma - 'Cuma'
- Cumartesi - 'Cumartesi'
- Pazar - 'Pazar'
CRON:
EVERY: her
EVERY_HOUR: saatte bir
EVERY_MINUTE: dakikada bir
EVERY_DAY_OF_WEEK: haftanın her günü
EVERY_DAY_OF_MONTH: ayın her günü
EVERY_MONTH: her ay
TEXT_PERIOD: Her <b />
TEXT_MINS: ' saatin <b /> dakikasında'
TEXT_TIME: ' da'
ERROR1: Etiket %s desteklenmiyor!
ERROR2: Kötü eleman sayısı
ERROR3: jquery_element jqCron ayarları içinde tanımlanmalı
ERROR4: Tanınmayan ifade

View File

@ -1,18 +1,6 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Помилка: Недопустимий вміст\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s
---
# Помилка: Недопустимий вміст
Path: `%2$s`
**%3$s**
```
%4$s
```
NICETIME: NICETIME:
NO_DATE_PROVIDED: Не вказана дата NO_DATE_PROVIDED: Не вказана дата
BAD_DATE: Невірна дата BAD_DATE: Невірна дата
@ -50,26 +38,26 @@ NICETIME:
DEC_PLURAL: рр. DEC_PLURAL: рр.
FORM: FORM:
VALIDATION_FAIL: '<b>Перевірка не вдалася:</b>' VALIDATION_FAIL: '<b>Перевірка не вдалася:</b>'
INVALID_INPUT: Невірне введення в INVALID_INPUT: 'Невірне введення в'
MISSING_REQUIRED_FIELD: 'Відсутнє необхідне поле:' MISSING_REQUIRED_FIELD: 'Відсутнє обов''язкове поле:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Січень - 'Січень'
- Лютий - 'Лютий'
- Березень - 'Березень'
- Квітень - 'Квітень'
- Травень - 'Травень'
- Червень - 'Червень'
- Липень - 'Липень'
- Серпень - 'Серпень'
- Вересень - 'Вересень'
- Жовтень - 'Жовтень'
- Листопад - 'Листопад'
- Грудень - 'Грудень'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Понеділок - 'Понеділок'
- Вівторок - 'Вівторок'
- Середа - 'Середа'
- Четвер - 'Четвер'
- "П'ятниця" - 'П''ятниця'
- Субота - 'Субота'
- Неділя - 'Неділя'

View File

@ -1,18 +1,6 @@
--- ---
FRONTMATTER_ERROR_PAGE: | GRAV:
--- FRONTMATTER_ERROR_PAGE: "---\ntiêu đề: %1$s\n---\n\n# Error: Trang không hợp lệ\n\nĐường dẫn: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
title: %1$s
---
# Error: Invalid Frontmatter
Path: `%2$s`
**%3$s**
```
%4$s
```
NICETIME: NICETIME:
NO_DATE_PROVIDED: Không có ngày được cung cấp NO_DATE_PROVIDED: Không có ngày được cung cấp
BAD_DATE: Ngày không hợp lệ BAD_DATE: Ngày không hợp lệ
@ -50,26 +38,26 @@ NICETIME:
DEC_PLURAL: thập kỷ DEC_PLURAL: thập kỷ
FORM: FORM:
VALIDATION_FAIL: '<b>Xác nhận thất bại:</b>' VALIDATION_FAIL: '<b>Xác nhận thất bại:</b>'
INVALID_INPUT: Dữ liệu nhập không hợp lệ cho INVALID_INPUT: 'Dữ liệu nhập không hợp lệ cho'
MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc:' MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc:'
MONTHS_OF_THE_YEAR: MONTHS_OF_THE_YEAR:
- Tháng 1 - 'Tháng 1'
- Tháng 2 - 'Tháng 2'
- Tháng 3 - 'Tháng 3'
- Tháng 4 - 'Tháng 4'
- Tháng 5 - 'Tháng 5'
- Tháng 6 - 'Tháng 6'
- Tháng 7 - 'Tháng 7'
- Tháng 8 - 'Tháng 8'
- Tháng 9 - 'Tháng 9'
- Tháng 10 - 'Tháng 10'
- Tháng Mười 11 - 'Tháng 11'
- Tháng 12 - 'Tháng 12'
DAYS_OF_THE_WEEK: DAYS_OF_THE_WEEK:
- Thứ 2 - 'Thứ 2'
- Thứ 3 - 'Thứ 3'
- Thứ 4 - 'Thứ 4'
- Thứ 5 - 'Thứ 5'
- Thứ 6 - 'Thứ 6'
- Thứ 7 - 'Thứ 7'
- Chủ Nhật - 'Chủ Nhật'

144
system/languages/zh-cn.yaml Normal file
View File

@ -0,0 +1,144 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\n标题: %1$s\n---\n\n# 错误:无效参数\n\n位置 `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- '装备'
- '信息'
- '大米'
- '钱'
- '物种'
- '系列'
- '鱼'
- '羊'
INFLECTOR_IRREGULAR:
'person': '人员'
'man': '男人'
'child': '儿童'
'sex': '性别'
'move': '移动'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'md'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: 无日期信息
BAD_DATE: 无效日期
AGO:
FROM_NOW: 距今
JUST_NOW: 刚刚
SECOND:
MINUTE: 分钟
HOUR: 小时
DAY:
WEEK:
MONTH:
YEAR:
DECADE: 十年
SEC:
MIN: 分钟
HR: 小时
WK:
MO:
YR:
DEC: 年代
SECOND_PLURAL:
MINUTE_PLURAL:
HOUR_PLURAL: 小时
DAY_PLURAL:
WEEK_PLURAL:
MONTH_PLURAL:
YEAR_PLURAL:
DECADE_PLURAL: 十年
SEC_PLURAL:
MIN_PLURAL:
HR_PLURAL:
WK_PLURAL:
MO_PLURAL:
YR_PLURAL:
DEC_PLURAL: 年代
FORM:
VALIDATION_FAIL: '<b>验证失败:</b>'
INVALID_INPUT: '无效输入'
MISSING_REQUIRED_FIELD: '必填字段缺失:'
MONTHS_OF_THE_YEAR:
- '1月'
- '2月'
- '3月'
- '4月'
- '5月'
- '6月'
- '7月'
- '8月'
- '9月'
- '10月'
- '11月'
- '12月'
DAYS_OF_THE_WEEK:
- '星期一'
- '星期二'
- '星期三'
- '星期四'
- '星期五'
- '星期六'
- '星期日'
CRON:
EVERY: 每隔
EVERY_HOUR: 每小时
EVERY_MINUTE: 每分钟
EVERY_DAY_OF_WEEK: 一周中的每一天
EVERY_DAY_OF_MONTH: 月份中的每一天
EVERY_MONTH: 每月
TEXT_PERIOD: 所有 <b />
TEXT_MINS: ' 在 <b /> 小时过后的分钟'
TEXT_TIME: ' 在 <b />:<b />'
TEXT_DOW: ' on <b />'
TEXT_MONTH: ' of <b />'
TEXT_DOM: ' on <b />'
ERROR1: 不支持分享类型 %s
ERROR2: 无效数字
ERROR3: 请在 jqCron 设置中设定 jquery_element
ERROR4: 无法识别表达式

View File

@ -0,0 +1,62 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# 錯誤: 不正確的 Frontmatter\n\n路徑 `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
NICETIME:
NO_DATE_PROVIDED: 沒有提供日期
BAD_DATE: 錯誤日期
AGO: 之前
FROM_NOW: 之後
JUST_NOW: 剛剛
SECOND:
MINUTE:
HOUR: 小時
DAY:
WEEK:
MONTH:
YEAR:
DECADE: 十年
SEC:
MIN:
HR: 小時
WK:
MO:
YR:
DEC: 十年
SECOND_PLURAL:
MINUTE_PLURAL:
HOUR_PLURAL: 小時
DAY_PLURAL:
WEEK_PLURAL:
MONTH_PLURAL:
YEAR_PLURAL:
DECADE_PLURAL: 十年
SEC_PLURAL:
MIN_PLURAL:
HR_PLURAL:
WK_PLURAL:
MO_PLURAL:
YR_PLURAL:
DEC_PLURAL: 十年
FORM:
MISSING_REQUIRED_FIELD: 遺漏必填欄位:
MONTHS_OF_THE_YEAR:
- '一月'
- '二月'
- '三月'
- '四月'
- '五月'
- '六月'
- '七月'
- '八月'
- '九月'
- '十月'
- '十一月'
- '十二月'
DAYS_OF_THE_WEEK:
- '星期一'
- '星期二'
- '星期三'
- '星期四'
- '星期五'
- '星期六'
- '星期日'

144
system/languages/zh.yaml Normal file
View File

@ -0,0 +1,144 @@
---
GRAV:
FRONTMATTER_ERROR_PAGE: "---\n标题: %1$s\n---\n\n# 错误:无效参数\n\n位置 `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ices'
'/(x|ch|ss|sh)$/i': '\1es'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([^aeiouy]|qu)y$/i': '\1ies'
'/(hive)$/i': '\1s'
'/(?:([^f])fe|([lr])f)$/i': '\1\2ves'
'/sis$/i': 'ses'
'/([ti])um$/i': '\1a'
'/(buffal|tomat)o$/i': '\1oes'
'/(bu)s$/i': '\1ses'
'/(alias|status)/i': '\1es'
'/(octop|vir)us$/i': '\1i'
'/(ax|test)is$/i': '\1es'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(matr)ices$/i': '\1ix'
'/(vert|ind)ices$/i': '\1ex'
'/^(ox)en/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
'/(cris|ax|test)es$/i': '\1is'
'/(shoe)s$/i': '\1'
'/(o)es$/i': '\1'
'/(bus)es$/i': '\1'
'/([m|l])ice$/i': '\1ouse'
'/(x|ch|ss|sh)es$/i': '\1'
'/(m)ovies$/i': '\1ovie'
'/(s)eries$/i': '\1eries'
'/([^aeiouy]|qu)ies$/i': '\1y'
'/([lr])ves$/i': '\1f'
'/(tive)s$/i': '\1'
'/(hive)s$/i': '\1'
'/([^f])ves$/i': '\1fe'
'/(^analy)ses$/i': '\1sis'
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis'
'/([ti])a$/i': '\1um'
'/(n)ews$/i': '\1ews'
INFLECTOR_UNCOUNTABLE:
- '装备'
- '信息'
- '大米'
- '钱'
- '物种'
- '系列'
- '鱼'
- '羊'
INFLECTOR_IRREGULAR:
'person': '人员'
'man': '男人'
'child': '儿童'
'sex': '性别'
'move': '移动'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'md'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: 无日期信息
BAD_DATE: 无效日期
AGO:
FROM_NOW: 距今
JUST_NOW: 刚刚
SECOND:
MINUTE: 分钟
HOUR: 小时
DAY:
WEEK:
MONTH:
YEAR:
DECADE: 十年
SEC:
MIN: 分钟
HR: 小时
WK:
MO:
YR:
DEC: 年代
SECOND_PLURAL:
MINUTE_PLURAL:
HOUR_PLURAL: 小时
DAY_PLURAL:
WEEK_PLURAL:
MONTH_PLURAL:
YEAR_PLURAL:
DECADE_PLURAL: 十年
SEC_PLURAL:
MIN_PLURAL:
HR_PLURAL:
WK_PLURAL:
MO_PLURAL:
YR_PLURAL:
DEC_PLURAL: 年代
FORM:
VALIDATION_FAIL: '<b>验证失败:</b>'
INVALID_INPUT: '无效输入'
MISSING_REQUIRED_FIELD: '必填字段缺失:'
MONTHS_OF_THE_YEAR:
- '1月'
- '2月'
- '3月'
- '4月'
- '5月'
- '6月'
- '7月'
- '8月'
- '9月'
- '10月'
- '11月'
- '12月'
DAYS_OF_THE_WEEK:
- '星期一'
- '星期二'
- '星期三'
- '星期四'
- '星期五'
- '星期六'
- '星期日'
CRON:
EVERY: 每隔
EVERY_HOUR: 每小时
EVERY_MINUTE: 每分钟
EVERY_DAY_OF_WEEK: 一周中的每一天
EVERY_DAY_OF_MONTH: 月份中的每一天
EVERY_MONTH: 每月
TEXT_PERIOD: 所有 <b />
TEXT_MINS: ' 在 <b /> 小时过后的分钟'
TEXT_TIME: ' 在 <b />:<b />'
TEXT_DOW: ' on <b />'
TEXT_MONTH: ' of <b />'
TEXT_DOM: ' on <b />'
ERROR1: 不支持分享类型 %s
ERROR2: 无效数字
ERROR3: 请在 jqCron 设置中设定 jquery_element
ERROR4: 无法识别表达式

View File

@ -2,4 +2,5 @@
title: Not Found title: Not Found
routable: false routable: false
notfound: true notfound: true
expires: 0
--- ---

View File

@ -1,13 +1,14 @@
<?php <?php
/** /**
* @package Grav.Core * @package Grav\Core
* *
* @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details. * @license MIT License; see LICENSE file for details.
*/ */
if (PHP_SAPI !== 'cli-server') { if (PHP_SAPI !== 'cli-server') {
exit('This script cannot be run from browser. Run it from a CLI.'); die('This script cannot be run from browser. Run it from a CLI.');
} }
$_SERVER['PHP_CLI_ROUTER'] = true; $_SERVER['PHP_CLI_ROUTER'] = true;
@ -16,11 +17,22 @@ if (is_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SERVER['SCRIPT_N
return false; return false;
} }
$_SERVER = array_merge($_SERVER, $_ENV); $grav_index = 'index.php';
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'index.php';
$_SERVER['SCRIPT_NAME'] = DIRECTORY_SEPARATOR . 'index.php';
$_SERVER['PHP_SELF'] = DIRECTORY_SEPARATOR . 'index.php';
require 'index.php'; /* Check the GRAV_BASEDIR environment variable and use if set */
$grav_basedir = getenv('GRAV_BASEDIR') ?: '';
if ($grav_basedir) {
$grav_index = ltrim($grav_basedir, '/') . DIRECTORY_SEPARATOR . $grav_index;
$grav_basedir = DIRECTORY_SEPARATOR . trim($grav_basedir, DIRECTORY_SEPARATOR);
define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()) . $grav_basedir);
}
$_SERVER = array_merge($_SERVER, $_ENV);
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . $grav_basedir .DIRECTORY_SEPARATOR . 'index.php';
$_SERVER['SCRIPT_NAME'] = $grav_basedir . DIRECTORY_SEPARATOR . 'index.php';
$_SERVER['PHP_SELF'] = $grav_basedir . DIRECTORY_SEPARATOR . 'index.php';
error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4); error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4);
require $grav_index;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,258 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets;
use Grav\Common\Assets\Traits\AssetUtilsTrait;
use Grav\Common\Config\Config;
use Grav\Common\Grav;
use Grav\Common\Uri;
use Grav\Common\Utils;
use Grav\Framework\Object\PropertyObject;
use SplFileInfo;
/**
* Class BaseAsset
* @package Grav\Common\Assets
*/
abstract class BaseAsset extends PropertyObject
{
use AssetUtilsTrait;
protected const CSS_ASSET = true;
protected const JS_ASSET = false;
/** @var string|false */
protected $asset;
/** @var string */
protected $asset_type;
/** @var int */
protected $order;
/** @var string */
protected $group;
/** @var string */
protected $position;
/** @var int */
protected $priority;
/** @var array */
protected $attributes = [];
/** @var string */
protected $timestamp;
/** @var int|false */
protected $modified;
/** @var bool */
protected $remote;
/** @var string */
protected $query = '';
// Private Bits
/** @var bool */
private $css_rewrite = false;
/** @var bool */
private $css_minify = false;
/**
* @return string
*/
abstract function render();
/**
* BaseAsset constructor.
* @param array $elements
* @param string|null $key
*/
public function __construct(array $elements = [], $key = null)
{
$base_config = [
'group' => 'head',
'position' => 'pipeline',
'priority' => 10,
'modified' => null,
'asset' => null
];
// Merge base defaults
$elements = array_merge($base_config, $elements);
parent::__construct($elements, $key);
}
/**
* @param string|false $asset
* @param array $options
* @return $this|false
*/
public function init($asset, $options)
{
$config = Grav::instance()['config'];
$uri = Grav::instance()['uri'];
// set attributes
foreach ($options as $key => $value) {
if ($this->hasProperty($key)) {
$this->setProperty($key, $value);
} else {
$this->attributes[$key] = $value;
}
}
// Force priority to be an int
$this->priority = (int) $this->priority;
// Do some special stuff for CSS/JS (not inline)
if (!Utils::startsWith($this->getType(), 'inline')) {
$this->base_url = rtrim($uri->rootUrl($config->get('system.absolute_urls')), '/') . '/';
$this->remote = static::isRemoteLink($asset);
// Move this to render?
if (!$this->remote) {
$asset_parts = parse_url($asset);
if (isset($asset_parts['query'])) {
$this->query = $asset_parts['query'];
unset($asset_parts['query']);
$asset = Uri::buildUrl($asset_parts);
}
$locator = Grav::instance()['locator'];
if ($locator->isStream($asset)) {
$path = $locator->findResource($asset, true);
} else {
$path = GRAV_WEBROOT . $asset;
}
// If local file is missing return
if ($path === false) {
return false;
}
$file = new SplFileInfo($path);
$asset = $this->buildLocalLink($file->getPathname());
$this->modified = $file->isFile() ? $file->getMTime() : false;
}
}
$this->asset = $asset;
return $this;
}
/**
* @return string|false
*/
public function getAsset()
{
return $this->asset;
}
/**
* @return bool
*/
public function getRemote()
{
return $this->remote;
}
/**
* @param string $position
* @return $this
*/
public function setPosition($position)
{
$this->position = $position;
return $this;
}
/**
* Receive asset location and return the SRI integrity hash
*
* @param string $input
* @return string
*/
public static function integrityHash($input)
{
$grav = Grav::instance();
$assetsConfig = $grav['config']->get('system.assets');
if ( !empty($assetsConfig['enable_asset_sri']) && $assetsConfig['enable_asset_sri'] )
{
$dataToHash = file_get_contents( GRAV_WEBROOT . $input);
$hash = hash('sha256', $dataToHash, true);
$hash_base64 = base64_encode($hash);
return ' integrity="sha256-' . $hash_base64 . '"';
}
return '';
}
/**
*
* Get the last modification time of asset
*
* @param string $asset the asset string reference
*
* @return string the last modifcation time or false on error
*/
// protected function getLastModificationTime($asset)
// {
// $file = GRAV_WEBROOT . $asset;
// if (Grav::instance()['locator']->isStream($asset)) {
// $file = $this->buildLocalLink($asset, true);
// }
//
// return file_exists($file) ? filemtime($file) : false;
// }
/**
*
* Build local links including grav asset shortcodes
*
* @param string $asset the asset string reference
*
* @return string|false the final link url to the asset
*/
protected function buildLocalLink($asset)
{
if ($asset) {
return $this->base_url . ltrim(Utils::replaceFirstOccurrence(GRAV_WEBROOT, '', $asset), '/');
}
return false;
}
/**
* Implements JsonSerializable interface.
*
* @return array
*/
public function jsonSerialize()
{
return ['type' => $this->getType(), 'elements' => $this->getElements()];
}
/**
* Placeholder for AssetUtilsTrait method
*
* @param string $file
* @param string $dir
* @param bool $local
* @return string
*/
protected function cssRewrite($file, $dir, $local)
{
return;
}
}

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