Commit 203dc39a authored by Administrator's avatar Administrator 💬

Update Grav to 1.5.10 (and plugins)

parent 08fa68f2
# M3P2
# v1.5.10
## 03/21/2019
- configure
- add plugins
- add theme textbook
-
---
Forked from here.
---
1. [](#new)
* Added new `deferred` Twig extension
# v1.5.9
## mm/dd/2019
## 03/20/2019
1. [](#new)
* Added new `onPageContent()` event for every call to `Page::content()`
1. [](#improved)
* Fixed phpdoc generation
* Updated vendor libraries
* Force Toolbox v1.4.2
1. [](#bugfix)
* EXIF fix for streams
* Fix for User avatar not working due to uppercase or spaces in email [#2403](https://github.com/getgrav/grav/pull/2403)
# v1.5.8
## 02/07/2019
......
# M3P2
# ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav
These are the sources of an instance of Grav tailored for the courses of M3P2.
[![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)
The plugins and themes are included.
Only the php vendors are not included.
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.
composer install
The underlying architecture of Grav is designed to use well-established and _best-in-class_ technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:
http://getcomposer.org/
* [Twig Templating](https://twig.sensiolabs.org/): for powerful control of the user interface
* [Markdown](https://en.wikipedia.org/wiki/Markdown): for easy content creation
* [YAML](https://yaml.org): for simple configuration
* [Parsedown](https://parsedown.org/): for fast Markdown and Markdown Extra support
* [Doctrine Cache](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html): layer for performance
* [Pimple Dependency Injection Container](https://pimple.sensiolabs.org/): for extensibility and maintainability
* [Symfony Event Dispatcher](https://symfony.com/doc/current/components/event_dispatcher/introduction.html): for plugin event handling
* [Symfony Console](https://symfony.com/doc/current/components/console/introduction.html): for CLI interface
* [Gregwar Image Library](https://github.com/Gregwar/Image): for dynamic image manipulation
Then try out
# Requirements
bin/grav
- PHP 5.6.4 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
to troubleshoot.
# QuickStart
Perhaps
These are the options to get Grav:
bin/grav install
### Downloading a Grav Package
You can download a **ready-built** package from the [Downloads page on https://getgrav.org](https://getgrav.org/downloads)
Add the courses from the other repository
### With Composer
bin/clone_courses.sh
You can create a new project with the latest **stable** Grav release with the following command:
```
$ composer create-project getgrav/grav ~/webroot/grav
```
And run locally
### From GitHub
php -S localhost:8000 system/router.php
1. Clone the Grav repository from [https://github.com/getgrav/grav]() to a folder in the webroot of your server, e.g. `~/webroot/grav`. Launch a **terminal** or **console** and navigate to the webroot folder:
```
$ cd ~/webroot
$ git clone https://github.com/getgrav/grav.git
```
2. Install the **plugin** and **theme dependencies** by using the [Grav CLI application](https://learn.getgrav.org/advanced/grav-cli) `bin/grav`:
```
$ cd ~/webroot/grav
$ bin/grav install
```
## Upgrading vendors
Check out the [install procedures](https://learn.getgrav.org/basics/installation) for more information.
Since our plugins and themes are in this repository, they are frozen.
# Adding Functionality
So far, Grav itself is safe to update, as well as all plugins **but mathjax** (until they merge our MR).
You can download [plugins](https://getgrav.org/downloads/plugins) or [themes](https://getgrav.org/downloads/themes) manually from the appropriate tab on the [Downloads page on https://getgrav.org](https://getgrav.org/downloads), but the preferred solution is to use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
Todo: look up .dependencies and perhaps we'll remove the plugins dir altogether from this repository.
```
$ bin/gpm index
```
The theme `textbook` is tailored for M3P2 courses.
The plugin `gitlab-markdown-adapter` was expressly made for this Grav instance.
This will display all the available plugins and then you can install one or more with:
```
$ bin/gpm install <plugin/theme>
```
# Updating
To update Grav you should use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
......@@ -53,40 +81,50 @@ To update plugins and themes:
$ bin/gpm update
```
---
---
# 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.
---
## Security issues
If you discover a possible security issue related to Grav or one of its plugins, please email the core team at contact@getgrav.org and we'll address it as soon as possible.
# ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav
# Getting Started
Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform.
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.
* [What is Grav?](https://learn.getgrav.org/basics/what-is-grav)
* [Install](https://learn.getgrav.org/basics/installation) Grav in few seconds
* Understand the [Configuration](https://learn.getgrav.org/basics/grav-configuration)
* Take a peek at our available free [Skeletons](https://getgrav.org/downloads/skeletons)
* If you have questions, jump on our [Discord Chat Server](https://chat.getgrav.org)!
* Have fun!
The underlying architecture of Grav is designed to use well-established and _best-in-class_ technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:
# Exploring More
* [Twig Templating](https://twig.sensiolabs.org/): for powerful control of the user interface
* [Markdown](https://en.wikipedia.org/wiki/Markdown): for easy content creation
* [YAML](https://yaml.org): for simple configuration
* [Parsedown](https://parsedown.org/): for fast Markdown and Markdown Extra support
* [Doctrine Cache](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html): layer for performance
* [Pimple Dependency Injection Container](https://pimple.sensiolabs.org/): for extensibility and maintainability
* [Symfony Event Dispatcher](https://symfony.com/doc/current/components/event_dispatcher/introduction.html): for plugin event handling
* [Symfony Console](https://symfony.com/doc/current/components/console/introduction.html): for CLI interface
* [Gregwar Image Library](https://github.com/Gregwar/Image): for dynamic image manipulation
* Have a look at our [Basic Tutorial](https://learn.getgrav.org/basics/basic-tutorial)
* Dive into more [advanced](https://learn.getgrav.org/advanced) functions
* Learn about the [Grav CLI](https://learn.getgrav.org/cli-console/grav-cli)
* Review examples in the [Grav Cookbook](https://learn.getgrav.org/cookbook)
# Requirements
# Backers
Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)]
- PHP 5.6.4 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
<img src="https://opencollective.com/grav/tiers/backers.svg?avatarHeight=36&width=600" />
# Sponsors
Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/grav#sponsor)]
<img src="https://opencollective.com/grav/tiers/sponsors.svg?avatarHeight=36&width=600" />
# License
See [LICENSE](LICENSE.txt)
[gitflow-model]: http://nvie.com/posts/a-successful-git-branching-model/
[gitflow-extensions]: https://github.com/nvie/gitflow
# Running Tests
First install the dev dependencies by running `composer update` from the Grav root.
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.
You can also run a single unit test file, e.g. `composer test tests/unit/Grav/Common/AssetsTest.php`
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "544658e69ae737e742e014c6c674cc70",
"content-hash": "655f3e16c1c33d89e1baf6383b2efb26",
"packages": [
{
"name": "antoligy/dom-string-iterators",
......@@ -52,16 +52,16 @@
},
{
"name": "composer/ca-bundle",
"version": "1.1.3",
"version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660"
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660",
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"shasum": ""
},
"require": {
......@@ -104,7 +104,7 @@
"ssl",
"tls"
],
"time": "2018-10-18T06:09:13+00:00"
"time": "2019-01-28T09:30:10+00:00"
},
{
"name": "doctrine/cache",
......@@ -245,16 +245,16 @@
},
{
"name": "donatj/phpuseragentparser",
"version": "v0.11.1",
"version": "v0.13.0",
"source": {
"type": "git",
"url": "https://github.com/donatj/PhpUserAgent.git",
"reference": "0eab93a89a1a73a087e795abc96d5777c3d48b64"
"reference": "5f2da266d2a386f9b231d4344ae37baf7a467c2d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/donatj/PhpUserAgent/zipball/0eab93a89a1a73a087e795abc96d5777c3d48b64",
"reference": "0eab93a89a1a73a087e795abc96d5777c3d48b64",
"url": "https://api.github.com/repos/donatj/PhpUserAgent/zipball/5f2da266d2a386f9b231d4344ae37baf7a467c2d",
"reference": "5f2da266d2a386f9b231d4344ae37baf7a467c2d",
"shasum": ""
},
"require": {
......@@ -268,7 +268,7 @@
"type": "library",
"autoload": {
"files": [
"Source/UserAgentParser.php"
"src/UserAgentParser.php"
]
},
"notification-url": "https://packagist.org/downloads/",
......@@ -292,7 +292,7 @@
"user agent",
"useragent"
],
"time": "2018-10-25T20:22:53+00:00"
"time": "2019-03-08T20:52:23+00:00"
},
{
"name": "erusev/parsedown",
......@@ -489,17 +489,17 @@
},
{
"name": "gregwar/image",
"version": "v2.0.23",
"version": "v2.0.24",
"target-dir": "Gregwar/Image",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/Image.git",
"reference": "25fbb91a95d41d44587ee7ca8923745b66221a7d"
"reference": "52145816255dd20cb4bb115d0f9e1030c6287994"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/Image/zipball/25fbb91a95d41d44587ee7ca8923745b66221a7d",
"reference": "25fbb91a95d41d44587ee7ca8923745b66221a7d",
"url": "https://api.github.com/repos/Gregwar/Image/zipball/52145816255dd20cb4bb115d0f9e1030c6287994",
"reference": "52145816255dd20cb4bb115d0f9e1030c6287994",
"shasum": ""
},
"require": {
......@@ -537,7 +537,7 @@
"gd",
"image"
],
"time": "2018-10-25T17:12:13+00:00"
"time": "2019-01-27T15:10:06+00:00"
},
{
"name": "guzzlehttp/psr7",
......@@ -970,6 +970,49 @@
],
"time": "2018-11-05T09:00:11+00:00"
},
{
"name": "phive/twig-extensions-deferred",
"version": "v1.0.2",
"source": {
"type": "git",
"url": "https://github.com/rybakit/twig-deferred-extension.git",
"reference": "5a2426d622afa74034e754ca5ea1d1ff7887627f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rybakit/twig-deferred-extension/zipball/5a2426d622afa74034e754ca5ea1d1ff7887627f",
"reference": "5a2426d622afa74034e754ca5ea1d1ff7887627f",
"shasum": ""
},
"require": {
"twig/twig": "~1.18"
},
"type": "library",
"autoload": {
"psr-4": {
"Phive\\Twig\\Extensions\\Deferred\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eugene Leonovich",
"email": "gen.work@gmail.com"
}
],
"description": "An extension for Twig that allows to defer block rendering",
"homepage": "https://github.com/rybakit/twig-extensions-deferred",
"keywords": [
"defer",
"extension",
"lazy",
"twig"
],
"time": "2017-03-17T21:39:21+00:00"
},
{
"name": "pimple/pimple",
"version": "v3.2.3",
......@@ -1353,16 +1396,16 @@
},
{
"name": "symfony/console",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a"
"reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/a700b874d3692bc8342199adfb6d3b99f62cc61a",
"reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a",
"url": "https://api.github.com/repos/symfony/console/zipball/71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
"reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
"shasum": ""
},
"require": {
......@@ -1374,6 +1417,9 @@
"symfony/dependency-injection": "<3.4",
"symfony/process": "<3.3"
},
"provide": {
"psr/log-implementation": "1.0"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~3.3|~4.0",
......@@ -1383,7 +1429,7 @@
"symfony/process": "~3.3|~4.0"
},
"suggest": {
"psr/log-implementation": "For using the console logger",
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
"symfony/lock": "",
"symfony/process": ""
......@@ -1418,20 +1464,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2019-01-04T04:42:43+00:00"
"time": "2019-02-23T15:06:07+00:00"
},
{
"name": "symfony/debug",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186"
"reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
"reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
"url": "https://api.github.com/repos/symfony/debug/zipball/8d8a9e877b3fcdc50ddecf8dcea146059753f782",
"reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782",
"shasum": ""
},
"require": {
......@@ -1474,20 +1520,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2019-01-01T13:45:19+00:00"
"time": "2019-02-24T15:45:11+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2"
"reference": "ec625e2fff7f584eeb91754821807317b2e79236"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2",
"reference": "d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ec625e2fff7f584eeb91754821807317b2e79236",
"reference": "ec625e2fff7f584eeb91754821807317b2e79236",
"shasum": ""
},
"require": {
......@@ -1537,7 +1583,7 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2019-01-01T18:08:36+00:00"
"time": "2019-02-23T15:06:07+00:00"
},
{
"name": "symfony/polyfill-ctype",
......@@ -1584,7 +1630,7 @@
},
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
"email": "backendtea@gmail.com"
}
],
"description": "Symfony polyfill for ctype functions",
......@@ -1717,16 +1763,16 @@
},
{
"name": "symfony/var-dumper",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "a5f39641bb62e8b74e343467b145331273f615a2"
"reference": "d34d10236300876d14291e9df85c6ef3d3bb9066"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/a5f39641bb62e8b74e343467b145331273f615a2",
"reference": "a5f39641bb62e8b74e343467b145331273f615a2",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/d34d10236300876d14291e9df85c6ef3d3bb9066",
"reference": "d34d10236300876d14291e9df85c6ef3d3bb9066",
"shasum": ""
},
"require": {
......@@ -1782,20 +1828,20 @@
"debug",
"dump"
],
"time": "2019-01-01T13:45:19+00:00"
"time": "2019-02-23T15:06:07+00:00"
},
{
"name": "symfony/yaml",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea"
"reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
"reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
"url": "https://api.github.com/repos/symfony/yaml/zipball/57f1ce82c997f5a8701b89ef970e36bb657fd09c",
"reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c",
"shasum": ""
},
"require": {
......@@ -1841,20 +1887,20 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2019-01-01T13:45:19+00:00"
"time": "2019-02-23T15:06:07+00:00"
},
{
"name": "twig/twig",
"version": "v1.37.1",
"version": "v1.38.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "66be9366c76cbf23e82e7171d47cbfa54a057a62"
"reference": "874adbd9222f928f6998732b25b01b41dff15b0c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/66be9366c76cbf23e82e7171d47cbfa54a057a62",
"reference": "66be9366c76cbf23e82e7171d47cbfa54a057a62",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/874adbd9222f928f6998732b25b01b41dff15b0c",
"reference": "874adbd9222f928f6998732b25b01b41dff15b0c",
"shasum": ""
},
"require": {
......@@ -1869,7 +1915,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.37-dev"
"dev-master": "1.38-dev"
}
},
"autoload": {
......@@ -1907,7 +1953,7 @@
"keywords": [
"templating"
],
"time": "2019-01-14T14:59:29+00:00"
"time": "2019-03-12T18:45:24+00:00"
}
],
"packages-dev": [
......@@ -1972,16 +2018,16 @@
},
{
"name": "codeception/codeception",
"version": "2.5.2",
"version": "2.5.4",
"source": {
"type": "git",
"url": "https://github.com/Codeception/Codeception.git",
"reference": "4f89de32929fef53ca6d83b159fe329b6d484c1c"
"reference": "a2ecfe2f3ad36cc29904d2d566b0d7280854e6c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/Codeception/zipball/4f89de32929fef53ca6d83b159fe329b6d484c1c",
"reference": "4f89de32929fef53ca6d83b159fe329b6d484c1c",
"url": "https://api.github.com/repos/Codeception/Codeception/zipball/a2ecfe2f3ad36cc29904d2d566b0d7280854e6c9",
"reference": "a2ecfe2f3ad36cc29904d2d566b0d7280854e6c9",
"shasum": ""
},
"require": {
......@@ -2013,7 +2059,7 @@
"predis/predis": "^1.0",
"squizlabs/php_codesniffer": "~2.0",
"symfony/process": ">=2.7 <5.0",
"vlucas/phpdotenv": "^2.4.0"
"vlucas/phpdotenv": "^3.0"
},
"suggest": {
"aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module",
......@@ -2060,7 +2106,7 @@
"functional testing",
"unit testing"
],
"time": "2019-01-02T10:28:51+00:00"
"time": "2019-02-20T20:45:25+00:00"
},
{
"name": "codeception/phpunit-wrapper",
......@@ -3001,6 +3047,7 @@
"mock",
"xunit"
],
"abandoned": true,
"time": "2015-10-02T06:51:40+00:00"
},
{
......@@ -3377,16 +3424,16 @@
},
{
"name": "symfony/browser-kit",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
"reference": "6d98fb221a263c66b1311203fe4eed154035f508"
"reference": "c0fadd368c1031109e996316e53ffeb886d37ea1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/browser-kit/zipball/6d98fb221a263c66b1311203fe4eed154035f508",
"reference": "6d98fb221a263c66b1311203fe4eed154035f508",
"url": "https://api.github.com/repos/symfony/browser-kit/zipball/c0fadd368c1031109e996316e53ffeb886d37ea1",
"reference": "c0fadd368c1031109e996316e53ffeb886d37ea1",
"shasum": ""
},
"require": {
......@@ -3430,20 +3477,20 @@
],
"description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
"time": "2019-01-01T13:45:19+00:00"
"time": "2019-02-23T15:06:07+00:00"
},
{
"name": "symfony/css-selector",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "12f86295c46c36af9896cf21db6b6b8a1465315d"
"reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/12f86295c46c36af9896cf21db6b6b8a1465315d",
"reference": "12f86295c46c36af9896cf21db6b6b8a1465315d",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf",
"reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf",
"shasum": ""
},
"require": {
......@@ -3483,20 +3530,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"time": "2019-01-02T09:30:52+00:00"
"time": "2019-01-16T09:39:14+00:00"
},
{
"name": "symfony/dom-crawler",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
"reference": "311f666d85d1075b0a294ba1f3de4ae9307d8180"
"reference": "d40023c057393fb25f7ca80af2a56ed948c45a09"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/311f666d85d1075b0a294ba1f3de4ae9307d8180",
"reference": "311f666d85d1075b0a294ba1f3de4ae9307d8180",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d40023c057393fb25f7ca80af2a56ed948c45a09",
"reference": "d40023c057393fb25f7ca80af2a56ed948c45a09",
"shasum": ""
},
"require": {
......@@ -3540,20 +3587,20 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
"time": "2019-01-01T13:45:19+00:00"
"time": "2019-02-23T15:06:07+00:00"
},
{
"name": "symfony/finder",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e"
"reference": "fcdde4aa38f48190ce70d782c166f23930084f9b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
"reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
"url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b",
"reference": "fcdde4aa38f48190ce70d782c166f23930084f9b",
"shasum": ""
},
"require": {
......@@ -3589,20 +3636,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2019-01-01T13:45:19+00:00"
"time": "2019-02-22T14:44:53+00:00"
},
{
"name": "symfony/process",
"version": "v3.4.21",
"version": "v3.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c"
"reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c",
"reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c",
"url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e",
"reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e",
"shasum": ""
},
"require": {
......@@ -3638,7 +3685,7 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2019-01-02T21:24:08+00:00"
"time": "2019-01-16T13:27:11+00:00"
},
{
"name": "victorjonsson/markdowndocs",
......
......@@ -8,7 +8,7 @@
// Some standard defines
define('GRAV', true);
define('GRAV_VERSION', '1.5.8');
define('GRAV_VERSION', '1.5.10');
define('GRAV_TESTING', false);
define('DS', '/');
......
......@@ -73,6 +73,7 @@ class Media extends AbstractMedia
protected function init()
{
$config = Grav::instance()['config'];
$locator = Grav::instance()['locator'];
$exif_reader = isset(Grav::instance()['exif']) ? Grav::instance()['exif']->getReader() : false;
$media_types = array_keys(Grav::instance()['config']->get('media.types'));
......@@ -155,7 +156,11 @@ class Media extends AbstractMedia
$meta_data = $meta->getData();
$meta_trimmed = array_diff_key($meta_data, array_flip($this->standard_exif));
if ($meta_trimmed) {
$file = File::instance($meta_path);
if ($locator->isStream($meta_path)) {
$file = File::instance($locator->findResource($meta_path, true, true));
} else {
$file = File::instance($meta_path);
}
$file->save(Yaml::dump($meta_trimmed));
$types['meta']['file'] = $meta_path;
}
......
......@@ -687,6 +687,8 @@ class Page implements PageInterface
$this->content = str_replace("<p>{$delimiter}</p>", '', $this->content);
}
// Fire event when Page::content() is called
Grav::instance()->fireEvent('onPageContent', new Event(['page' => $this]));
}
return $this->content;
......
......@@ -16,6 +16,7 @@ use Grav\Common\Page\Page;
use Grav\Common\Page\Pages;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
use RocketTheme\Toolbox\Event\Event;
use Phive\Twig\Extensions\Deferred\DeferredExtension;
class Twig
{
......@@ -181,6 +182,7 @@ class Twig
$this->twig->addExtension(new \Twig_Extension_Debug());
}
$this->twig->addExtension(new TwigExtension());
$this->twig->addExtension(new DeferredExtension());
$this->grav->fireEvent('onTwigExtensions');
......
enabled: true
route: /admin
cache_enabled: false
theme: grav
logo_text: M3P2
content_padding: true
twofa_enabled: false
sidebar:
activate: tab
hover_delay: 100
size: auto
dashboard:
days_of_stats: 7
widgets:
dashboard-maintenance: true
dashboard-statistics: true
dashboard-notifications: true
dashboard-feed: true
dashboard-pages: true
pages:
show_parents: both
show_modular: true
session:
timeout: 1800
warnings:
delete_page: true
edit_mode: normal
frontend_preview_target: inline
show_github_msg: true
pages_list_display_field: title
google_fonts: false
admin_icons: line-awesome
enable_auto_updates_check: true
notifications:
feed: true
dashboard: true
plugins: true
themes: true
popularity:
enabled: true
ignore:
- '/test*'
- /modular
history:
daily: '30'
monthly: '12'
visitors: '20'
pagemedia:
resize_width: 0
resize_height: 0
res_min_width: 0
res_min_height: 0
res_max_width: 0
res_max_height: 0
resize_quality: 0.8
# v1.8.20
## 03/20/2019
1. [](#improved)
* Added security field to column [#1622](https://github.com/getgrav/grav-plugin-admin/pull/1622)
# v1.8.19
## 02/13/2019
......
name: Admin Panel
version: 1.8.19
version: 1.8.20
description: Adds an advanced administration panel to manage your site
icon: empire
author:
......
{% if field.fields %}
<div class="form-column block pure-u-1-{{ cols }}">
{% for field in field.fields %}
{% if field.type %}
{% set value = field.name ? data.value(field.name) : data.toArray %}
{% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %}
{% endif %}
{% endfor %}
</div>
{% if field.security is empty or authorize(array(field.security)) %}
{% if field.fields %}
<div class="form-column block pure-u-1-{{ cols }}">
{% for field in field.fields %}
{% if field.type %}
{% set value = field.name ? data.value(field.name) : data.toArray %}
{% include ["forms/fields/#{field.type}/#{field.type}.html.twig", 'forms/fields/text/text.html.twig'] %}
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endif %}
# v2.8.4
## 03/20/2019
1. [](#improved)
* Enable "brute force" protection by default [#195](https://github.com/getgrav/grav-plugin-login/pulls/195)
* UPdated various language translations
1. [](#bugfix)
* Set security timeouts in blueprints to use `minutes` rather than `seconds` [#194](https://github.com/getgrav/grav-plugin-login/issues/194)
* Send "notification" email to `to` address rather than `from` [#188](https://github.com/getgrav/grav-plugin-login/pulls/188)
# v2.8.3
## 01/25/2018
## 01/25/2019
1. [](#new)
* Wrap data in `onUserLoginRegisterData` event in object to allow reference
......
......@@ -161,10 +161,10 @@ rememberme:
timeout: 604800 # Timeout in seconds. Defaults to 1 week
name: grav-rememberme # Name prefix of the session cookie
max_pw_resets_count: 0 # Number of password resets in a specific time frame (0 = unlimited)
max_pw_resets_count: 2 # Number of password resets in a specific time frame (0 = unlimited)
max_pw_resets_interval: 60 # Time in minutes to track password resets
max_login_count: 0 # Number of failed login attempts in a specific time frame (0 = unlimited)
max_login_interval: 2 # Time in minutes to track login attempts
max_login_count: 5 # Number of failed login attempts in a specific time frame (0 = unlimited)
max_login_interval: 10 # Time in minutes to track login attempts
user_registration:
enabled: false # Enable User Registration Process
......
name: Login
version: 2.8.3
version: 2.8.4
description: Enables user authentication and login screen.
icon: sign-in
author:
......@@ -372,7 +372,7 @@ form:
size: x-small
label: PLUGIN_LOGIN.MAX_RESETS_INTERVAL
help: PLUGIN_LOGIN.MAX_RESETS_INTERVAL_HELP
append: PLUGIN_LOGIN.SECONDS
append: PLUGIN_LOGIN.MINUTES
validate:
type: number
min: 1
......@@ -392,7 +392,7 @@ form:
size: x-small
label: PLUGIN_LOGIN.MAX_LOGINS_INTERVAL
help: PLUGIN_LOGIN.MAX_LOGINS_INTERVAL_HELP
append: PLUGIN_LOGIN.SECONDS
append: PLUGIN_LOGIN.MINUTES
validate:
type: number
min: 1
......@@ -338,7 +338,7 @@ class Login
$user->email,
$this->grav['base_url_absolute'],
]);
$to = $this->config->get('plugins.email.from');
$to = $this->config->get('plugins.email.to');
if (empty($to)) {
throw new \RuntimeException($this->language->translate('PLUGIN_LOGIN.EMAIL_NOT_CONFIGURED'));
......@@ -508,8 +508,8 @@ class Login
$interval = $this->grav['config']->get('plugins.login.max_login_interval', 10);
break;
case 'pw_resets':
$maxCount = $this->grav['config']->get('plugins.login.max_pw_resets_count', 0);
$interval = $this->grav['config']->get('plugins.login.max_pw_resets_interval', 2);
$maxCount = $this->grav['config']->get('plugins.login.max_pw_resets_count', 2);
$interval = $this->grav['config']->get('plugins.login.max_pw_resets_interval', 60);
break;
}
$this->rateLimiters[$context] = new RateLimiter($context, $maxCount, $interval);
......
......@@ -106,6 +106,7 @@ PLUGIN_LOGIN:
MAX_LOGINS_INTERVAL_HELP: "The time interval for the login count value"
TOO_MANY_LOGIN_ATTEMPTS: "Too many failed login attempted in the configured time (%s minutes)"
SECONDS: "seconds"
MINUTES: "minutes"
RESETS: "resets"
ATTEMPTS: "attempts"
ROUTES: "Routes"
......
......@@ -51,6 +51,7 @@ PLUGIN_LOGIN:
EMAIL_FOOTER: "GetGrav.org"
ACTIVATION_LINK_EXPIRED: "Время ссылки для активации истекло"
USER_ACTIVATED_SUCCESSFULLY: "Пользователь успешно активирован"
USER_ACTIVATED_SUCCESSFULLY_NOT_ENABLED: "Аккаунт пользователя активирован, но учетная запись просматривается"
INVALID_REQUEST: "Неверный запрос"
USER_REGISTRATION: "Регистрация пользователя"
USER_REGISTRATION_ENABLED_HELP: "Включить регистрацию пользователя"
......@@ -127,3 +128,5 @@ PLUGIN_LOGIN:
2FA_SECRET_HELP: "Сканируйте этот QR-код в свое [Приложение аутентификации](https://learn.getgrav.org/admin-panel/2fa#apps). Также рекомендуется сохранить секрет в безопасном месте, если вам прийдется переустановить приложение. Проверьте [Grav docs](https://learn.getgrav.org/admin-panel/2fa) для дополнительной информации "
2FA_REGENERATE: "Сгенерировать повторно"
BTN_CANCEL: "Отмена"
MANUALLY_ENABLE: "Вручную включить"
MANUALLY_ENABLE_HELP: "При использовании «активации по электронной почте» и «уведомление по электронной почте» вы можете убедиться, что пользователь может самостоятельно активироваться, но пользователь требует ручного включения для входа в систему"
PLUGIN_LOGIN:
USERNAME: "Логін"
EMAIL: "Email"
USERNAME_EMAIL: "Логін/Email"
PASSWORD: "Пароль"
ACCESS_DENIED: "Доступ заборонено..."
LOGIN_FAILED: "Помилка входу..."
LOGIN_SUCCESSFUL: "Ви успішно увійшли в систему."
BTN_LOGIN: "Увійти"
BTN_LOGOUT: "Вийти"
BTN_FORGOT: "Забув"
BTN_REGISTER: "Реєстрація"
BTN_RESET: "Скидання пароля"
BTN_SEND_INSTRUCTIONS: "Надіслати інструкції по скиданню"
RESET_LINK_EXPIRED: "Час посилання для скидання минув, спробуйте ще раз"
RESET_PASSWORD_RESET: "Пароль був скинутий"
RESET_INVALID_LINK: "Невірне посилання скидання, спробуйте ще раз"
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Інструкції щодо скидання пароля були надіслані по електронній пошті"
FORGOT_FAILED_TO_EMAIL: "Не вдалося надіслати інструкції електронною поштою, повторіть спробу пізніше"
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Не вдається скинути пароль для %s, адреса електронної пошти не встановлена"
FORGOT_CANNOT_RESET_EMAIL_NO_PASSWORD: "Неможливо скинути пароль для %s, цей email пов'язаний з віддаленим обліковим записом"
FORGOT_USERNAME_DOES_NOT_EXIST: "Користувач з ім'ям <b>%s </b> не існує"
FORGOT_EMAIL_NOT_CONFIGURED: "Неможливо скинути пароль. Цей сайт не налаштований для надіслання листів"
FORGOT_EMAIL_SUBJECT: "%s Запит на скидання пароля"
FORGOT_EMAIL_BODY: "<h1>Відновлення паролю</h1><p>Шановний %1$s,</p><p>Був зроблений запит для скидання пароля від <b>%4$s</b>.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Нажмите, чтобы сбросить пароль</a><br /><br /></p><p>Или скопируйте следующий URL-адрес в адресную строку браузера:</p> <p class=\"word-break\"><a href=\"%2$s\">%2$s</a></p> <p><br />С уважением,<br /><br />%3$s</p>"
SESSION: "&ldquo;Запам'ятати мене&rdquo;-Сесія"
REMEMBER_ME: "Запам'ятати мене"
REMEMBER_ME_HELP: "Встановлює постійний файл cookie у вашому браузері, щоб дозволити постійну аутентифікацію входу між сеансами."
REMEMBER_ME_STOLEN_COOKIE: "Хтось ще використовував вашу реєстраційну інформацію для доступу до цієї сторінки! Всі сеанси були відключені. Увійдіть до свого облікового запису та перевірте свої дані."
BUILTIN_CSS: "Використовувати вбудований CSS"
BUILTIN_CSS_HELP: "Використовувати CSS, наданий плагіном адміністратора."
ROUTE: "Шлях сторінки входу"
ROUTE_HELP: "Шлях до користувальницької сторінці входу, яку надає ваша тема"
ROUTE_REGISTER: "Шлях реєстрації"
ROUTE_REGISTER_HELP: "Шлях до користувальницької сторінці реєстрації. Заповніть, якщо ви хочете використовувати вбудовану сторінку реєстрації. Залиште його порожнім, якщо у вас є власна реєстраційна форма"
USERNAME_NOT_VALID: "Ім'я користувача має бути від 3 до 16 символів, включаючи малі літери, цифри, символи підкреслення та дефіси. Великі літери, пробіли та спеціальні символи не допускаються"
USERNAME_NOT_AVAILABLE: "Ім'я користувача %s вже існує, виберіть інше ім'я користувача"
EMAIL_NOT_AVAILABLE: "Адреса електронної пошти %s вже існує, виберіть іншу адресу електронної пошти"
PASSWORD_NOT_VALID: "Пароль повинен містити як мінімум одне число, одну прописну і малу літеру, і бути не менше 8 символів"
PASSWORDS_DO_NOT_MATCH: "Паролі не співпадають. Двічі перевірте, що ви двічі ввели той же пароль"
USER_NEEDS_EMAIL_FIELD: "Користувачеві потрібно поле електронної пошти"
EMAIL_SENDING_FAILURE: "Помилка під час надіслання листа"
ACTIVATION_EMAIL_SUBJECT: "Активуйте свій обліковий запис %s"
ACTIVATION_EMAIL_BODY: "Привіт %s, перейдіть <a href=\"%s\">сюди</a> для активації вашого облікового запису %s"
ACTIVATION_NOTICE_MSG: "Привіт %s, ваш обліковий запис створено, будь ласка перевірте електронну пошту, щоб повністю його активувати"
WELCOME_EMAIL_SUBJECT: "Ласкаво просимо в %s"
WELCOME_EMAIL_BODY: "Привіт %s, ласкаво просимо в %s!"
WELCOME_NOTICE_MSG: "Привіт %s, ваш обліковий запис був успішно створений"
NOTIFICATION_EMAIL_SUBJECT: "Новий користувач %s"
NOTIFICATION_EMAIL_BODY: "Привіт, новий користувач, зареєстрований на %s. Ім'я користувача: %s, email: %s"
EMAIL_FOOTER: "GetGrav.org"
ACTIVATION_LINK_EXPIRED: "Час посилання для активації минув"
USER_ACTIVATED_SUCCESSFULLY: "Користувач успішно активований"
USER_ACTIVATED_SUCCESSFULLY_NOT_ENABLED: "Аккаунт користувача активований, але обліковий запис проглядається"
INVALID_REQUEST: "Невірний запит"
USER_REGISTRATION: "Реєстрація користувача"
USER_REGISTRATION_ENABLED_HELP: "Включити реєстрацію користувача"
VALIDATE_PASSWORD1_AND_PASSWORD2: "Подвійна перевірка введеного пароля"
VALIDATE_PASSWORD1_AND_PASSWORD2_HELP: "Підтвердити і порівняти два різних поля для паролів з іменами `password1` і` password2`. Увімкніть це, якщо у вас є два поля пароля в реєстраційній формі"
SET_USER_DISABLED: "Встановити користувача як відключений"
SET_USER_DISABLED_HELP: "Найкраще використовувати електронну пошту «Надіслати електронну пошту активації». Додає користувача в Grav, але встановлює його як відключений"
LOGIN_AFTER_REGISTRATION: "Вхід в систему після реєстрації"
LOGIN_AFTER_REGISTRATION_HELP: "Автоматичний вхід в систему після реєстрації. Якщо потрібна активація електронної пошти, користувач буде входити в систему відразу після активації облікового запису"
SEND_ACTIVATION_EMAIL: "Надіслати лист активації"
SEND_ACTIVATION_EMAIL_HELP: "Надіслати електронного листа користувачу для активації облікового запису. Увімкніть параметр «Встановити користувача як відключений» при використанні цієї функції, щоб користувач був відключений, і для активації облікового запису буде надіслано повідомлення електронної пошти"
SEND_NOTIFICATION_EMAIL: "Надіслати повідомлення по електронній пошті"
SEND_NOTIFICATION_EMAIL_HELP: "Повідомляє адміністратору сайту про реєстрацію нового користувача. Електронна пошта буде відправлена в поле «Кому» в конфігурації плагіна електронної пошти"
SEND_WELCOME_EMAIL: "Надіслати вітальний лист"
SEND_WELCOME_EMAIL_HELP: "Надсилає електронного листа знову зареєстрованому користувачу"
DEFAULT_VALUES: "Значення за замовчуванням"
DEFAULT_VALUES_HELP: "Список назв полів і пов'язаних значень, які будуть додані в профіль користувача (файл yaml) за замовчуванням, без налаштування користувачем. Розділіть декілька значень комою, без пробілів між значеннями"
ADDITIONAL_PARAM_KEY: "Параметр"
ADDITIONAL_PARAM_VALUE: "Значення"
REGISTRATION_FIELDS: "Реєстраційні поля"
REGISTRATION_FIELDS_HELP: "Додайте поля, які будуть додані в файл yaml користувача. Поля, не перераховані тут, не будуть додані, навіть якщо вони присутні в реєстраційній формі"
REGISTRATION_FIELD_KEY: "Ім'я поля"
REDIRECT_AFTER_LOGIN: "Перенаправлення після входу в систему"
REDIRECT_AFTER_LOGIN_HELP: "Призначений для користувача маршрут для перенаправлення після входу в систему"
REDIRECT_AFTER_LOGOUT: "Перенаправлення після виходу з системи"
REDIRECT_AFTER_LOGOUT_HELP: "Призначений для користувача маршрут для перенаправлення після виходу з системи"
REDIRECT_AFTER_REGISTRATION: "Перенаправлення після реєстрації"
REDIRECT_AFTER_REGISTRATION_HELP: "Призначений для користувача маршрут для перенаправлення після реєстрації"
OPTIONS: "Опції"
EMAIL_VALIDATION_MESSAGE: "Адреса ел. пошти повинна бути дійсною"
PASSWORD_VALIDATION_MESSAGE: "Пароль повинен містити як мінімум одне число, одну прописну і малу літеру і бути не менше 8 символів"
TIMEOUT_HELP: "Встановлює тайм-аут сеансу в секундах, коли функція «Запам'ятати мене» включена і встановлена користувачем. Мінімум 604800, що означає 1 тиждень"
GROUPS_HELP: "Список груп, в які увійде новий зареєстрований користувач"
SITE_ACCESS_HELP: "Список рівнів доступу до сайту, зареєстрованих користувачів. Приклад: `login` ->` true`"
WELCOME: "Ласкаво просимо"
REDIRECT_AFTER_ACTIVATION: "Перенаправлення після активації користувача"
REDIRECT_AFTER_ACTIVATION_HELP: "Використовується, якщо користувачеві потрібно активувати обліковий запис по електронній пошті. Після активації цей маршрут буде показаний"
REGISTRATION_DISABLED: "Реєстрація відключена"
USE_PARENT_ACL_LABEL: "Використовувати батьківські правила доступу"
USE_PARENT_ACL_HELP: "Перевірте правила доступу до батьків, якщо правила не визначені"
PROTECT_PROTECTED_PAGE_MEDIA_LABEL: "Захист захищених сторінок."
PROTECT_PROTECTED_PAGE_MEDIA_HELP: "Якщо цей параметр включений, то доступ до захищеної сторінці для входу в систему також захищений паролем, і його не можна побачити, якщо він не зареєстрований"
SECURITY_TAB: "Безпека"
MAX_RESETS_COUNT: "Максимальна кількість скидання пароля"
MAX_RESETS_COUNT_HELP: "Налаштування захисту пароля від флуду (0 - не обмежена)"
MAX_RESETS_INTERVAL: "Максимальний інтервал скидання пароля"
MAX_RESETS_INTERVAL_HELP: "Інтервал часу для максимальної кількості скидання пароля"
FORGOT_CANNOT_RESET_IT_IS_BLOCKED: "Неможливо скинути пароль для %s, функція скидання пароля тимчасово відключена, спробуйте пізніше (максимум %s хвилин)"
MAX_LOGINS_COUNT: "Максимальна кількість входів"
MAX_LOGINS_COUNT_HELP: "Налаштування захисту від флуду (0 - не обмежена)"
MAX_LOGINS_INTERVAL: "Максимальний інтервал входу"
MAX_LOGINS_INTERVAL_HELP: "Часовий інтервал для значення лічильника входу"
TOO_MANY_LOGIN_ATTEMPTS: "Занадто багато невдалих спроб входу в налаштований час (%s хвилин)"
SECONDS: "секунд"
RESETS: "скидань"
ATTEMPTS: "спроб"
ROUTES: "Маршрути"
ROUTE_FORGOT: "Забули пароль"
ROUTE_RESET: "Скидання пароля"
ROUTE_PROFILE: "Профілю користувача"
ROUTE_ACTIVATE: "Активації користувача"
LOGGED_OUT: "Ви успішно вийшли з системи..."
PAGE_RESTRICTED: "Доступ обмежений, увійдіть в систему..."
DYNAMIC_VISIBILITY: "Динамічна видимість сторінки"
DYNAMIC_VISIBILITY_HELP: "Дозволяє динамічно обробляти видимість сторінки на основі правил доступу, якщо для параметра login.visibility_requires_access встановлено значення true на сторінці"
USER_IS_REMOTE_ONLY: "Цей користувач аутентифікований за допомогою віддаленого сервісу, тому профіль не може бути збережений"
2FA_TITLE: "2-факторна аутентифікація"
2FA_INSTRUCTIONS: "##### 2-факторна аутентифікація\nУ вашому обліковому запису включена **2FA**. Будь ласка, використовуйте свою **2FA** програму для введення цього **6-значного коду** для завершення процесу входу в систему."
2FA_REGEN_HINT: "Щоб відновити секрет, вам буде потрібно оновити програму для аутентифікації"
2FA_FAILED: "Неприпустимий код перевірки справжності 2-факторної аутентифікації, спробуйте ще раз...."
2FA_ENABLED: "2FA Включена"
2FA_CODE_INPUT: "000000"
2FA_SECRET: "2FA Секрет"
2FA_SECRET_HELP: "Відскануйте цей QR-код у свою [Програму аутентифікації](https://learn.getgrav.org/admin-panel/2fa#apps). Також рекомендується зберегти секрет в безпечному місці, якщо вам доведеться перевстановити програму. Перевірте [Grav docs](https://learn.getgrav.org/admin-panel/2fa) для додаткової інформації "
2FA_REGENERATE: "Згенерувати повторно"
BTN_CANCEL: "Скасування"
MANUALLY_ENABLE: "Вручну включити"
MANUALLY_ENABLE_HELP: "При використанні «активації по електронній пошті» і «повідомлення по електронній пошті» ви можете переконатися, що користувач може самостійно активуватися, але користувач вимагає ручного включення для входу в систему"
......@@ -20,10 +20,10 @@ rememberme:
timeout: 604800 # Timeout in seconds. Defaults to 1 week
name: grav-rememberme # Name prefix of the session cookie
max_pw_resets_count: 0 # Number of password resets in a specific time frame (0 = unlimited)
max_pw_resets_count: 2 # Number of password resets in a specific time frame (0 = unlimited)
max_pw_resets_interval: 60 # Time in minutes to track password resets
max_login_count: 0 # Number of failed login attempts in a specific time frame (0 = unlimited)
max_login_interval: 2 # Time in minutes to track login attempts
max_login_count: 5 # Number of failed login attempts in a specific time frame (0 = unlimited)
max_login_interval: 10 # Time in minutes to track login attempts
user_registration:
enabled: false # Enable User Registration Process
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment