Compare commits

...

1580 Commits

Author SHA1 Message Date
Andy Miller
bd8396ba6e Merge branch 'release/1.6.25' 2020-05-14 15:41:44 -06:00
Andy Miller
859aff590b Prepare for release
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-14 15:41:34 -06:00
Andy Miller
5db395799d Changelog updated
Signed-off-by: Andy Miller <rhuk@mac.com>
2020-05-14 15:17:02 -06:00
Andy Miller
497ca2a5cd Advanced Customization options for HTTP_X_FORWARDED headers 2020-05-14 14:43:52 -06:00
Jesse Donat
58da1cd489 Updates donatj/phpuseragentparser to 1.0.0 2020-05-08 10:18:31 +03:00
Andy Miller
d53a594971 updated to 1.13 2020-04-30 17:33:41 -06:00
Djamil Legato
77bc8029bb Updated reference to github-release go app 2020-04-30 15:21:48 -07:00
Andy Miller
4ddc98b2b6 Merge branch 'release/1.6.24' 2020-04-27 16:08:40 -06:00
Andy Miller
c1f18f5ecf Merge tag '1.6.24' into develop
Release v1.6.24
2020-04-27 16:08:40 -06:00
Andy Miller
d16a88e731 prepare for release 2020-04-27 16:08:28 -06:00
A----
39d0d640e6 Support for the X-Forwarded-Host (#2891) 2020-04-27 10:38:36 -06:00
Andy Miller
586105907d disable XDebug for Travis builds 2020-03-19 14:56:03 -06:00
Andy Miller
15af5bfae7 Merge branch 'release/1.6.23' 2020-03-19 14:27:39 -06:00
Andy Miller
d550a016a9 Merge tag '1.6.23' into develop
Release v1.6.23
2020-03-19 14:27:39 -06:00
Andy Miller
9c8df27bf1 Updated changelog 2020-03-19 14:27:25 -06:00
Andy Miller
1ce0176ab6 created aliases for direct \Parsedown and \ParsedownExtra references 2020-03-19 14:25:08 -06:00
Andy Miller
ccac8a93bc Merge branch 'release/1.6.23' 2020-03-19 12:46:08 -06:00
Andy Miller
bcbfa0e32a Merge tag '1.6.23' into develop
Release v1.6.23
2020-03-19 12:46:08 -06:00
Andy Miller
453cd62a51 prepare for release 2020-03-19 12:45:58 -06:00
Andy Miller
56e1cbc78e updated composer to pickup toolbox 1.4.7 2020-03-19 12:39:36 -06:00
Andy Miller
db92c7b32d Upgraded jQuery to 3.4.1 - fixes #2859 2020-03-19 11:31:10 -06:00
Andy Miller
2eae104c7a Fix for user reported CVE path-based open redirect 2020-03-18 17:32:46 -06:00
Andy Miller
6f2be2a2d2 Updated changelog 2020-03-18 11:50:23 -06:00
Andy Miller
e75960fee3 php 7.4 fixes for ParsedownExtra 2020-03-18 11:44:23 -06:00
Andy Miller
ec71ccdd0d moved parsedown 1.6 and parsedown-extra 0.7 into framework for fixes 2020-03-18 11:39:08 -06:00
Andy Miller
152c987ed4 Merge branch 'release/1.6.22' 2020-03-05 10:39:00 -07:00
Andy Miller
19311c7ec1 Merge tag '1.6.22' into develop
Release v1.6.22
2020-03-05 10:39:00 -07:00
Andy Miller
eec2d122cc prepare for release 2020-03-05 10:38:50 -07:00
Andy Miller
62f39fe39c Negotiation update to fix #2513 2020-03-04 10:57:43 -07:00
Rotzbua
40bc980084 [travis] add php 7.4 to test 2020-02-19 10:46:49 +02:00
Matias Griese
1196e06dd6 Reverted validation: strict fix as it breaks sites, see [#1273] 2020-02-18 13:14:09 +02:00
Andy Miller
64b33d60f4 updated changelog 2020-02-14 08:36:04 -07:00
Andy Miller
8ccbcf0488 set baseRoute with activelang if available 2020-02-14 08:14:57 -07:00
Matias Griese
244c34a536 Page::getCacheKey() method should be public 2020-02-14 13:55:31 +02:00
Matias Griese
52a704e53d Fixed issue with search plugins not being able to switch between page translations 2020-02-14 13:55:06 +02:00
Andy Miller
addecbbb22 Merge branch 'release/1.6.21' 2020-02-11 17:17:29 -07:00
Andy Miller
ec8bf9357a Merge tag '1.6.21' into develop
Release v1.6.21
2020-02-11 17:17:29 -07:00
Andy Miller
432b4b1e68 prepare for release 2020-02-11 17:17:20 -07:00
Andy Miller
ea5935b1d1 vendor updates 2020-02-11 17:15:07 -07:00
Andy Miller
fa3c9095c7 caught silly bug that broke routing 2020-02-11 17:09:54 -07:00
Matias Griese
95442ef0b5 Fixed page initialization in CLI 2020-02-11 20:53:02 +02:00
Matias Griese
f81503dd70 Fixed page initialization in CLI 2020-02-11 20:27:57 +02:00
Matias Griese
48170d2fa0 Fixed bin/plugin CLI calling $themes->init() way too early
Added `ConsoleCommand::setLanguage()` method to set language to be used from CLI
Added `ConsoleCommand::initializeGrav()` method to properly set up Grav instance to be used from CLI
Added `ConsoleCommand::initializePlugins()`method to properly set up all plugins to be used from CLI
Added `ConsoleCommand::initializeThemes()`method to properly set up current theme to be used from CLI
Added `ConsoleCommand::initializePages()` method to properly set up pages to be used from CLI
2020-02-11 19:41:28 +02:00
Matias Griese
ef80e28d1d Fixed regression (#2154) 2020-02-10 17:41:13 +02:00
Matias Griese
e55b239536 Fixed encoding problems when PHP INI setting default_charset is not utf-8 [#2154] 2020-02-10 09:50:39 +02:00
Andreas Amos
c2f374f0db Truncator: encoding problems solves #2154
As I am not a developer somebody should review the change.
2020-02-10 09:28:13 +02:00
Florian Schlittenbauer
29c6a70611 [BUGFIX] .editorconfig not picking up .yml files (#2808) 2020-02-08 13:47:17 -07:00
Andy Miller
e507300134 Merge branch 'release/1.6.20' 2020-02-03 10:04:38 -07:00
Andy Miller
e38c5cac4a Merge tag '1.6.20' into develop
Release v1.6.20
2020-02-03 10:04:38 -07:00
Andy Miller
463a55897c prepare for release 2020-02-03 10:04:26 -07:00
Andy Miller
192cc4eb9b minor symfony updates 2020-02-03 10:00:40 -07:00
Matias Griese
a592f6fe0b Fixed unit test for Uri::currentPage(): it only returns integers now 2020-01-30 09:11:19 +02:00
Matias Griese
6b887a98cd Fixed site.metadata saving issues [#2615] 2020-01-29 18:55:44 +02:00
Matias Griese
18a26b42e2 Fixed Assets::addInlineJs() parameter type mismatch between v1.5 and v1.6 [#2659] 2020-01-29 18:40:58 +02:00
Matias Griese
a47e446b60 Composer update (and lock rockettheme/toolbox to 1.4.x) 2020-01-29 13:23:28 +02:00
Matias Griese
864a938f8d Fixed Data::filter() removing empty fields (such as empty list) by default [#2805] 2020-01-29 11:48:59 +02:00
Matias Griese
53bd1641bb Fixed fatal error with non-integer page param value [#2803] 2020-01-29 11:32:40 +02:00
Matias Griese
7c0dcd6808 Fixed special case [#1273] 2020-01-14 17:54:19 +02:00
Matias Griese
ea8b7b7a3a Oops, changelog update [#1273] 2020-01-14 14:48:02 +02:00
Matias Griese
8714aa9202 Fixed validation: strict not working in blueprints [#1273] 2020-01-14 14:46:19 +02:00
Matias Griese
3731d61b78 Fixed checkbox field not being saved, requires also Form v4.0.2 [#1225] 2020-01-14 11:40:39 +02:00
Matias Griese
7b5d6f7031 Fixed session not restarting if user was invalid (downgrading from Grav 1.7) 2019-12-13 13:13:52 +02:00
Matias Griese
a269d49392 Fixed filesystem iterator calls with non-existing folders 2019-12-10 18:59:58 +02:00
Matias Griese
3a8775f545 Fixed session cookie is being set twice in the HTTP header [#2745] 2019-12-10 16:06:54 +02:00
Matias Griese
842dc0d49e Incorrect routing caused by str_replace() in Uri::init() [#2754] 2019-12-10 14:52:16 +02:00
Andy Miller
1532de8f20 Merge branch 'release/1.6.19' 2019-12-04 16:31:16 -07:00
Andy Miller
95bd217c3c Merge tag '1.6.19' into develop
Release 1.6.18
2019-12-04 16:31:16 -07:00
Andy Miller
f633c921cc prepare for release 2019-12-04 16:31:04 -07:00
Andy Miller
e8c79ffd97 Sync with 1.7 approach 2019-12-04 16:27:47 -07:00
Andy Miller
e842eb9d9e Better fix for #2750 2019-12-04 16:11:08 -07:00
Matias Griese
3e8572dbe9 Merge remote-tracking branch 'origin/develop' into develop 2019-12-03 20:26:50 +02:00
Matias Griese
ad8d0a2ab1 Updated plugins phpstan to work with Gantry5 plugin 2019-12-03 19:29:04 +02:00
Andy Miller
4a1e16449d Updated changelog 2019-12-03 09:03:07 -07:00
Andy Miller
41d31cb5ea PHP 7.4 fix for #2750 2019-12-03 09:00:07 -07:00
Matias Griese
909e2cbf89 Catch PHP 7.4 deprecation messages and report them in debugbar instead of throwing fatal error 2019-12-03 13:06:44 +02:00
Matias Griese
1290503895 Fixed multiple issues when there are no pages in the site 2019-12-03 12:55:24 +02:00
Matias Griese
a204b24d78 Fixed fatal error when calling {{ grav.undefined }} 2019-12-03 12:47:01 +02:00
Matias Griese
86c969998f Merge remote-tracking branch 'origin/develop' into develop 2019-12-02 20:12:59 +02:00
Matias Griese
158874039a Fixed bad str_replace('...', null) parameter in CSVFormatter 2019-12-02 20:11:15 +02:00
Andy Miller
de6c35f4ab Merge branch 'release/1.6.18' 2019-12-02 10:33:06 -07:00
Andy Miller
46816a74e9 Merge tag '1.6.18' into develop
Release v1.6.18
2019-12-02 10:33:06 -07:00
Andy Miller
1111c3d1b1 prepare for release 2019-12-02 10:32:06 -07:00
Andy Miller
e919685ad3 minor vendor update 2019-12-02 10:29:41 -07:00
Andy Miller
238ba9b9b4 PHP 7.4 fix for Pages::buildSort() 2019-12-02 08:53:17 -07:00
Andy Miller
1d966a0c92 Vendor lib updates 2019-12-02 08:41:32 -07:00
Jacob Peck
e3a6436031 Fix rewrite rule for lighttpd config (#2721)
Just plain doesn't work without this!  Was probably omitted in error.
2019-11-18 06:13:51 -07:00
Matias Griese
f59441eb55 Fixed fatal error when $page->id() is null [#2731] 2019-11-14 12:21:28 +02:00
Xaver Maierhofer
fcc0c5e345 Correct download argument annotation (#2727) 2019-11-09 20:49:33 -07:00
Andy Miller
c862b0bc26 Merge branch 'release/1.6.17' 2019-11-06 17:51:32 -07:00
Andy Miller
575a1e4603 Merge tag '1.6.17' into develop
Release v1.6.17
2019-11-06 17:51:32 -07:00
Andy Miller
a74ccad282 fixed changelog date 2019-11-06 17:50:35 -07:00
Andy Miller
ffeb5648c6 Merge branch 'release/1.6.17' 2019-11-06 16:07:07 -07:00
Andy Miller
86c87929ec Merge tag '1.6.17' into develop
Release v1.6.17
2019-11-06 16:07:07 -07:00
Andy Miller
e0e92b843c prepare for release 2019-11-06 16:06:45 -07:00
Keith Bentrup
8678f22f6b do NOT ignore "." dirs OR ignore "." dirs and all children (#2581)
If you ignore any "files" beginning with "." including directories, then the all() method will exclude .somedir, but not .somedir/somefile. Subsequently, when trying to copy all files returned from all(), it will fail when the method tries to copy a file into a directory that has not yet been created because .somedir was omitted from the return array of all().
I found this bug when trying to install the admin plugin and ./tmp was a mount and thus rename() failed and self:copy() was invoked instead (line 365).
2019-10-23 15:39:05 -06:00
Jérôme Nadaud
8322a0cfa3 Make script name more explicit (#2637) 2019-10-17 05:57:25 -06:00
Jérôme Nadaud
ab6b82eaaa Fix cache image generation when using cropresize (#2639) 2019-10-17 05:56:46 -06:00
buzatuAda
b16e8066ca fix exception array_merge() when $this->header->metadata is not array (#2701)
Exception gets thrown when $this->header->metadata is not an array, added extra verification in order to make sure it is and array before doing array_merge()
2019-10-17 05:55:27 -06:00
Matias Griese
bc1dd2a7b4 Added working ETag (304 Not Modified) support based on the final rendered HTML 2019-10-16 23:40:08 +03:00
Djamil Legato
d11772b681 Change of Behavior: Inflector::hyphenize will now automatically trim dashes at beginning and end of a string. 2019-10-16 11:02:44 -07:00
Matias Griese
feeee9ef86 Fixed PHP 7.1 bug in Flex 2019-10-15 19:00:25 +03:00
Jeremy Gonyea
eb1b9567df Updated for latest ddev version (#2676) 2019-10-03 14:54:05 -06:00
Andy Miller
c795ead402 Updated changelog 2019-10-01 17:52:14 -06:00
Andy Miller
91270c9c66 CSVFormatter null char support 2019-10-01 17:51:29 -06:00
Andy Miller
342eac1047 Smarter CSV handling 2019-09-26 18:35:25 -06:00
Andy Miller
f72eb1b002 Merge tag '1.6.16' into develop
Release v1.6.16

# gpg: Signature made Thu Sep 19 16:42:43 2019 MDT
# gpg:                using RSA key 6AA7DB4F23BD1A7280C4CC63E82B8D0EAB94EFB9
# gpg: Good signature from "Andy Miller <rhuk@mac.com>" [ultimate]
2019-09-19 16:42:44 -06:00
Andy Miller
25caa5138a Merge branch 'release/1.6.16' 2019-09-19 16:42:43 -06:00
Andy Miller
dffb227df6 prepare for release 2019-09-19 16:42:21 -06:00
Matias Griese
5c9eb1cdb8 Fixed Badly encoded JSON data warning when uploading files [#2663] 2019-09-17 22:02:21 +03:00
Matias Griese
e30ab9a043 Fixed Flex user creation if file storage is being used [#2444] 2019-09-17 11:37:09 +03:00
Newb I the Newbd
651b354d3e Correct non-published collection filter evaluation (#2668) 2019-09-14 10:10:24 -06:00
Andy Miller
dd8b503aa0 Merge tag '1.6.15' into develop
Release v1.6.15
2019-08-20 17:22:26 -06:00
Andy Miller
dab30673e0 Merge branch 'release/1.6.15' 2019-08-20 17:22:25 -06:00
Andy Miller
13689c2065 prepare for release 2019-08-20 17:22:16 -06:00
Andy Miller
6e23627f26 update changelog 2019-08-20 17:21:32 -06:00
Andy Miller
7db85cc79c Force Symfony 4.2 2019-08-20 17:06:19 -06:00
Matias Griese
e5cedd074b Fixed broken markdown Twig tag [#2635] 2019-08-19 10:46:03 +03:00
Daithí Seán Ó Foghlú
ed87faad92 Update robots.txt (#2632)
I have found that Bing/Yahoo/DuckDuckGo, Yandex and Google report crawl errors when using the default robots.txt. Specifically their bots will not crawl the the path '/' or any sub-paths. I agree that the current robots.txt should work and properly implements the specification. However it still does not work.

In my experience explicitly permitting the path '/' by adding the directive Allow: / resolves the issue.

More details can be found in a blog post about the issue here: https://www.dfoley.ie/blog/starting-with-the-indieweb
2019-08-18 11:22:33 -06:00
Andy Miller
239f34d40c Merge branch 'release/1.6.14' 2019-08-18 09:52:55 -06:00
Andy Miller
20b9ca56fa Merge tag '1.6.14' into develop
Release v1.6.14
2019-08-18 09:52:55 -06:00
Andy Miller
647ae0fda3 prepare for release 2019-08-18 09:52:45 -06:00
Andy Miller
806dbd9ee5 refactor 2019-08-18 09:51:10 -06:00
Andy Miller
1ab8442630 add fix 2019-08-18 09:50:56 -06:00
Andy Miller
505661404b Merge branch 'release/1.6.13' 2019-08-16 09:53:21 -06:00
Andy Miller
a2ea6faf4d Merge tag '1.6.13' into develop
Release v1.6.13
2019-08-16 09:53:21 -06:00
Andy Miller
ce51491b4d prepare for release 2019-08-16 09:53:12 -06:00
Andy Miller
d241223aa3 update changelog 2019-08-16 07:45:40 -06:00
Andy Miller
d16f83fdd8 Merge tag '1.6.12' into develop
Release v1.6.12
2019-08-14 16:19:44 -06:00
Andy Miller
02e10ff8fe Merge branch 'release/1.6.12' 2019-08-14 16:19:43 -06:00
Andy Miller
6a44d8f286 prepare for release 2019-08-14 16:19:21 -06:00
Andy Miller
4b614d871f update changelog 2019-08-14 16:18:38 -06:00
Matias Griese
3286d70092 Lock Grav user class once GRAV_USER_INSTANCE has been defined 2019-08-14 10:12:00 +03:00
Thomas Threadgold
9fc37e46fa check if GRAV_USER_INSTANCE constants are already defined (#2621) 2019-08-13 15:30:20 -06:00
Matias Griese
f304f429c5 Fix bad check in CSV escaping 2019-08-13 18:19:28 +03:00
Andy Miller
65c73f639f Update changelog 2019-08-12 16:06:16 -06:00
Aaron Dalton
d2833a1997 Allow users to override plugin handler priorities (#2165) 2019-08-12 15:22:21 -06:00
ale rimoldi
aa8f764436 run route.php when grav is not at the root of the server (#2541) 2019-08-12 15:11:41 -06:00
Andy Miller
618a59921a make markdown more page context aware 2019-08-09 18:23:05 -06:00
Andy Miller
039f71dc61 fix for var order in Validation.php 2019-08-09 17:16:31 -06:00
Andy Miller
27b8db4c10 Updated vendor libs 2019-08-09 13:33:35 -06:00
Matias Griese
afd53d76c2 Fixed CSV formatter not encoding strings with " and , properly 2019-07-18 16:11:46 +03:00
Matias Griese
57c65ad881 Fixed FlexObject::exists() failing sometimes just after the object has been saved 2019-07-16 09:50:30 +03:00
Matias Griese
a372ae90c2 Fixed an error when trying to delete a file from non-existing Flex Object 2019-07-16 09:11:11 +03:00
Andy Miller
c8739c40a5 Fixed collections using page@.self: should allow modular pages if requested 2019-07-12 12:02:28 -06:00
Andy Miller
00ff9ac42d fix 2019-07-11 08:50:09 -06:00
Andy Miller
e13a8304e6 Added arrayLower() method 2019-07-10 11:01:17 -06:00
Matias Griese
3c2b17853c Fixed non-existing Flex object having a bad media folder 2019-07-10 12:30:59 +03:00
Matias Griese
288b2a1953 Fixed fatal error 'Expiration date must be an integer, a DateInterval or null, "double" given' [#2529] 2019-07-09 13:43:51 +03:00
Matias Griese
86b1f1fbac Workaround bug in flex forms 2019-07-02 22:01:38 +03:00
Matias Griese
b5e26133a7 Fixed new Flex User creation not being possible because of username could not be given 2019-07-02 20:27:12 +03:00
Matias Griese
c97faa0238 ixed Flex User to have permissions to save and delete his own user 2019-07-01 22:25:29 +03:00
Matias Griese
69b39b4b21 Fixed multiple url() issues with streams
* Fixed `url()` returning wrong path if using stream with grav root path in it, eg: `user-data://shop` when Grav is in `/shop`
* Fixed `url()` not returning a path to non-existing file (`user-data://shop` => `/user/data/shop`) if it is set to fail gracefully
* Fixed `url()` returning false on unknown streams, such as `ftp://domain.com`, they should be treated as external URL
2019-06-28 13:36:37 +03:00
Matias Griese
02f544f813 Merge remote-tracking branch 'origin/develop' into develop 2019-06-27 18:08:21 +03:00
Matias Griese
69b5a779e4 Fixed error when calling Media::add($name, null) 2019-06-27 18:08:12 +03:00
Andy Miller
fa5c1e495d Use new Utils::getSupportedPageTypes() to enforce html,htm at the front of the list #2531 2019-06-26 08:59:24 -06:00
Matias Griese
7fdb2c10cb Minor code cleanup 2019-06-26 12:14:57 +03:00
Keith Bentrup
e422eebd3c fixed typos in comments / API docs 2019-06-26 11:46:08 +03:00
Keith Bentrup
3dca7e3539 fixed typos in comments / API docs 2019-06-26 11:46:08 +03:00
Matias Griese
75210b102e Changelog update 2019-06-26 10:48:06 +03:00
Matias Griese
f0e97a7277 Fixed some potential issues when $grav['user'] is not set 2019-06-26 10:38:38 +03:00
Newb I the Newbd
e16c81516e Make yaml_decode only return array, again 2019-06-25 10:02:40 +03:00
Matias Griese
140c9a941f Added support for custom FormFlash save locations 2019-06-24 13:15:27 +03:00
Andy Miller
eb58fe9e97 Merge branch 'release/1.6.11' 2019-06-21 15:19:04 -06:00
Andy Miller
5d4ea87402 Merge tag '1.6.11' into develop
Release v1.6.11
2019-06-21 15:19:04 -06:00
Andy Miller
9f1d7240a9 Prepare for release 2019-06-21 15:18:54 -06:00
Matias Griese
84894274f0 Fixed some FormFlash bugs, cleaned up the code 2019-06-21 22:59:54 +03:00
Matias Griese
ea09002012 Changed FormFlashInterface constructor to take $config array 2019-06-21 13:19:01 +03:00
Matias Griese
601ec5cb7a Added FormFlashInterface 2019-06-21 11:47:21 +03:00
Matias Griese
85ec2ee3a0 Fixed error if user has no form flashes 2019-06-20 21:19:10 +03:00
Matias Griese
965f69f680 Fixed issue with FormFlash objects when there is no session initialized 2019-06-20 21:10:48 +03:00
Matias Griese
13a56dd4da Initialize pages only once 2019-06-20 19:21:52 +03:00
Matias Griese
4cf1b8c400 Better fix for Route class 2019-06-20 19:21:35 +03:00
Matias Griese
9c805a4317 Added created timestamp to FormFlash 2019-06-20 12:18:55 +03:00
Matias Griese
b7b1182e14 Added timestamp to FormFlash objects 2019-06-20 11:47:23 +03:00
Matias Griese
f695aaaea4 Added FormTrait::getAllFlashes() method to get all the available form flash objects for the form 2019-06-20 00:51:20 +03:00
Matias Griese
b398d04d96 Fixed a bug in Route::withParam() method 2019-06-20 00:45:59 +03:00
Matias Griese
ac9ef4da76 Fixed empty form flash name after update 2019-06-19 20:56:23 +03:00
Matias Griese
a10893eaad Fixed error in ImageMedium::url() if the image cache folder does not exist 2019-06-19 11:23:12 +03:00
Andy Miller
0e0d5b23be Merge branch 'release/1.6.10' 2019-06-14 13:59:12 -06:00
Andy Miller
e6c8b30882 Merge tag '1.6.10' into develop
Release v1.6.10
2019-06-14 13:59:12 -06:00
Andy Miller
a222e353ba prepare for release 2019-06-14 13:59:01 -06:00
Tracerneo
30cfe3bdfa Change minimal port number to 0 (unix socket) (#2452) 2019-06-11 08:39:26 -06:00
Andy Miller
d227a82056 Fixed regresssion issue of Utils::Url() not returning false on failure #2524 2019-05-27 11:58:53 +03:00
Matias Griese
9825daa79b Merge remote-tracking branch 'origin/develop' into develop 2019-05-26 16:27:53 +03:00
Matias Griese
10d405112c Fixed Excerpts::processMediaActions() return value 2019-05-26 16:27:43 +03:00
Andy Miller
c4c70d082c Fixes #2510 and #2511 2019-05-26 13:36:12 +03:00
Andy Miller
23a928c5b7 Fixed bitwise operator in TwigExtension::exifFunc() #2518 2019-05-26 13:33:24 +03:00
Andy Miller
8a7f624558 return the found language rather than just ‘true’ 2019-05-26 13:23:08 +03:00
Djamil Legato
92e8dbf4ea Added Funding.yml 2019-05-23 09:44:47 -07:00
y-u-s-s-u-f-i-s-l-a-m
aca04cee6b Create now.json (#2515)
* Create now.json

* Update now.json
2019-05-23 07:43:27 -07:00
Matias Griese
7bc45bd9e0 Minor code cleanup/refactoring on flex caching 2019-05-23 10:04:09 +03:00
Matias Griese
9e5363b4df Merge branch 'develop' of github.com:getgrav/grav into develop 2019-05-22 11:56:00 +03:00
Matias Griese
37f69d89cc Some phpstan level 6 fixes 2019-05-20 10:52:32 +03:00
Andy Miller
30e96aa4ff address deprecated message 2019-05-18 11:12:58 -06:00
Djamil Legato
7e1d3b260e Fixed regression with bin/plugin not listing the plugins available (1c725c0) 2019-05-17 23:01:54 -07:00
Andy Miller
be558ccac9 fixes #2507 2019-05-17 11:10:15 -06:00
Matias Griese
e991056106 Minor constructor change in Parsedown classes 2019-05-17 20:06:49 +03:00
Matias Griese
b795155345 Framework: Fix all phpstan level 5 issues 2019-05-17 15:18:41 +03:00
Matias Griese
99d0c7cb3e Generalized markdown classes so they can be used outside of Page scope with a custom Excerpts class instance 2019-05-17 14:48:12 +03:00
Matias Griese
01b85f19bc Fixed GPM errors from blueprints not being logged [#2505] 2019-05-16 11:51:30 +03:00
Andy Miller
65ba214494 size of summary chars field 2019-05-15 15:48:26 -06:00
Andy Miller
ccff51144e Fixes #2493 2019-05-15 13:45:59 -06:00
Andy Miller
c8f6e7b0e1 Merge branch 'develop' of github.com:getgrav/grav into develop 2019-05-14 15:44:39 -06:00
Andy Miller
7cccf8e237 vendor updates 2019-05-14 15:44:33 -06:00
Ole Vik
e1f646c308 Remove Gitter, Slack (#2502)
Replace with redirecting link to chat.getgrav.org, also link to forum again.
2019-05-14 11:44:27 -06:00
Andy Miller
2a49a2ba7c Added page blueprints to YamlLinter 2019-05-12 11:24:50 -06:00
Andy Miller
e9bbd1e0b0 Optimizations for Plugin/Theme loading 2019-05-10 17:17:06 -06:00
Andy Miller
84e259f0f1 minor optimization 2019-05-10 17:01:52 -06:00
Andy Miller
b3f4461f34 Merge tag '1.6.9' into develop
Release v1.6.9
2019-05-09 10:49:11 -06:00
Andy Miller
1df6b76e25 Merge branch 'release/1.6.9' 2019-05-09 10:49:10 -06:00
Andy Miller
2153e20bc5 prepare for release 2019-05-09 10:49:01 -06:00
Andy Miller
0cbc98ab53 Merge branch 'develop' of github.com:getgrav/grav into develop 2019-05-08 20:57:11 -06:00
Andy Miller
0915a0413d Added composer scripts api-16 and api-15 2019-05-08 20:57:06 -06:00
Andy Miller
f4d3d302f4 thowing api error 2019-05-08 20:54:42 -06:00
Riley Sommerville
5d5e2264c0 Update default.md (#2496)
Correct an error that ignored the "Typography" menu item in the default Grav installation and caused a discrepancy between the install page and the corresponding tutorial on getgrav/grav-learn. Related to PR https://github.com/getgrav/grav-learn/pull/681#issue-270418391 and solves issue https://github.com/getgrav/grav-learn/issues/650#issue-365078790.
2019-05-08 17:39:09 -06:00
Andy Miller
b39fc72bd2 Update languages 2019-05-08 14:22:47 -06:00
Matias Griese
d6d50c4b66 Fixed empty $grav['request']->getAttribute('route')->getExtension() 2019-05-07 19:07:09 +03:00
Matias Griese
791ef8ad88 Changelog update 2019-05-07 17:58:10 +03:00
Matias Griese
e0861e5505 Merge branch 'develop' of github.com:getgrav/grav into develop 2019-05-07 17:55:59 +03:00
Newb I the Newbd
48c9176d90 Make yaml_decode only return array to avoid errors (#2494) 2019-05-07 17:53:42 +03:00
Matias Griese
33cb20561e Fixed backwards compatibility to select field with selectize.create set to true [git-sync#141] 2019-05-07 14:05:55 +03:00
Andy Miller
0acb38f586 Checkbox getting interpreted as string 2019-05-06 16:22:31 -06:00
Andy Miller
1a41e00a4f Merge branch 'develop' of github.com:getgrav/grav into develop 2019-05-03 10:43:17 -06:00
Andy Miller
48ef93e495 more tidy 2019-05-03 10:43:13 -06:00
Matias Griese
3f7da86711 Missed lock file 2019-05-03 08:54:51 +03:00
Matias Griese
11aa2314d5 Fixed typo in composer.json 2019-05-03 08:52:53 +03:00
Andy Miller
179c5065ca minor rounding stuff 2019-05-02 16:06:08 -06:00
Andy Miller
7c60f73942 vendor libs 2019-05-02 15:05:01 -06:00
Andy Miller
7095c665b7 Output correct "Last Updated" in bin/gpm info command 2019-05-02 15:03:01 -06:00
Matias Griese
c6d94885e0 Fixed exception in Flex::getDirectories() if the first parameter is set 2019-05-02 16:37:35 +03:00
Matias Griese
d9ddab8239 Merge remote-tracking branch 'origin/develop' into develop 2019-05-02 14:11:35 +03:00
Matias Griese
a118d45177 Flex collection and object now fall back to the default template if template file doesn't exist 2019-05-02 14:11:22 +03:00
Matias Griese
416c400367 Made UserCollectionInderface to extend Countable to get the count of existing users 2019-05-02 14:10:09 +03:00
Raphaël Droz
e6839530d8 When using Grav behind an HTTPS-endpoint, we would probably have either one of (#2486)
* `HTTPS=on`
* `X-Forwarded-Proto https`
Still, the latest virtualhost would still provide `REQUEST_SCHEME` which,
contrary to HTTPS environment, would not be overriden (eg: Apache only
creates `REDIRECT_REQUEST_SCHEME` with the requested value).

This change gives priority to non-empty `HTTPS` over `REQUEST_SCHEME`.
2019-04-30 12:18:20 -06:00
Matias Griese
fea9e53be3 Flex admin: added default search options for flex objects 2019-04-30 10:49:59 +03:00
Matias Griese
c5b3792a60 Change cache touch parameter to invalidate, added CLI option for it 2019-04-30 10:48:35 +03:00
Andy Miller
4f83b5da5b non-standard lang code length fixes 2019-04-29 17:31:56 -06:00
Andy Miller
504c8faf4c Merge branch 'develop' of github.com:getgrav/grav into develop 2019-04-26 13:11:32 -06:00
Andy Miller
4d6db5b334 Fix for avatar_url provided by 3rd party providers 2019-04-26 13:11:28 -06:00
Matias Griese
ec1fc1f1e3 Change cache touch parameter to invalidate, added CLI option for it 2019-04-26 09:54:14 +03:00
Matias Griese
563cf8900c Merge remote-tracking branch 'origin/develop' into develop 2019-04-25 21:08:16 +03:00
Matias Griese
0850c2f362 Added Cache::clearCache('touch') parameter for just forcing simple cache clear 2019-04-25 21:08:07 +03:00
Andy Miller
f30334d80f Fixed Assets options array mixed with standalone priority #2477 2019-04-25 11:53:11 -06:00
Matias Griese
9057a804a2 Added Pages::setCheckMethod() method to override page configuration in Admin Plugin 2019-04-25 16:07:25 +03:00
Matias Griese
4c5c26033a Added support for configurable actions in Flex 2019-04-24 17:14:44 +03:00
Matias Griese
a4f679adcf Added Route::withoutParams() methods 2019-04-24 14:48:37 +03:00
Matias Griese
e9e12392ac Fixed $grav['route'] from being modified when the route instance gets modified 2019-04-24 14:03:55 +03:00
Andy Miller
6b4663c2ff Merge branch 'release/1.6.8' 2019-04-23 15:02:10 -06:00
Andy Miller
0411c3a98b Merge tag '1.6.8' into develop
Release v1.6.8
2019-04-23 15:02:10 -06:00
Andy Miller
972a758ac9 prepaer for release 2019-04-23 15:01:59 -06:00
Andy Miller
05d72306c6 updated changelog 2019-04-23 14:58:42 -06:00
Andy Miller
18b7c0955d updated clean command 2019-04-23 14:46:51 -06:00
Andy Miller
71cbbf4e1e remove hipchat 2019-04-23 14:46:35 -06:00
Matias Griese
0606e12872 Added FlexCollection::filterBy() method 2019-04-23 13:24:45 +03:00
Matias Griese
afc7cac5ab Improve null result handling in Flex 2019-04-23 11:13:29 +03:00
Matias Griese
471e3d8954 Revert "Use Null Coalesce Operator (#2466)"
This reverts commit be8eb639
2019-04-23 10:54:26 +03:00
Andy Miller
89a92cddc7 Merge branch 'release/1.6.7' 2019-04-22 15:20:18 -06:00
Andy Miller
74988f1254 Merge tag '1.6.7' into develop
Release v1.6.7
2019-04-22 15:20:18 -06:00
Andy Miller
f2f2bc1cf8 prepare for release 2019-04-22 15:20:08 -06:00
Andy Miller
31c5809e4a Better fix for #2470 2019-04-22 14:43:54 -06:00
Andy Miller
b4b8b63e24 Fix for manually set position on external URLs #2470 2019-04-22 14:29:31 -06:00
Andy Miller
9c0de8b0d3 New Yaml linter class 2019-04-20 17:41:17 -06:00
Andy Miller
f4cca777c2 Created a YAML Linter CLI command 2019-04-20 17:41:09 -06:00
Andy Miller
8d7d143d01 Merge branch 'develop' of github.com:getgrav/grav into develop 2019-04-20 12:33:11 -06:00
Andy Miller
d9109e9934 Fix issue when excluding inlineJs and inlineCss from Assets pipeline #2468 2019-04-20 12:33:07 -06:00
Gabriel Caruso
be8eb63944 Use Null Coalesce Operator (#2466) 2019-04-20 10:55:55 -06:00
Andy Miller
9342981d8c updated changelog 2019-04-19 10:43:01 -06:00
Tyler Cosgrove
6e9af3bb29 Add getSubnet util to Grav\Common\Utils (#2465) 2019-04-19 10:29:19 -06:00
Matias Griese
7e39755154 Improve null result handling in Flex 2019-04-18 19:16:01 +03:00
Matias Griese
97af8919fc Remove disabled fields from the form schema 2019-04-18 19:14:55 +03:00
Matias Griese
6cdfaeb8fb Improve FormTrait backwards compatibility with existing forms 2019-04-18 11:43:22 +03:00
Andy Miller
4ea00b0140 Merge branch 'release/1.6.6' 2019-04-17 16:02:05 -06:00
Andy Miller
864c5027c6 Merge tag '1.6.6' into develop
Release v1.6.6
2019-04-17 16:02:05 -06:00
Andy Miller
0bb55faa2d prepare for release 2019-04-17 16:01:54 -06:00
Andy Miller
f757863e1c updated changelog 2019-04-17 15:49:30 -06:00
Matias Griese
3ffd2f5f5e Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	CHANGELOG.md
2019-04-17 22:11:08 +03:00
Matias Griese
6aa135e80a Fixed FlexForm missing getter methods for defining form variables 2019-04-17 22:10:28 +03:00
Andy Miller
07f4bd0699 fixes #2461 2019-04-17 11:44:00 -06:00
Andy Miller
c200a55336 fixes #2460 2019-04-17 11:27:45 -06:00
Andy Miller
14fed2bb75 Merge branch 'develop' of github.com:getgrav/grav into develop
# Conflicts:
#	CHANGELOG.md
2019-04-17 09:00:35 -06:00
Andy Miller
44ecd61489 Roll back redirect_default_route fix as it has issues with multilang #2459 2019-04-17 09:00:03 -06:00
Matias Griese
882212520f Fixed bug in text field filtering: return empty string if value isn't a string or number 2019-04-17 16:25:36 +03:00
Matias Griese
9467939f53 Added new FormInterface::getTask() method which reads the task from form.task in the blueprint 2019-04-16 14:43:44 +03:00
Matias Griese
e3933ebdf6 Minor fix in Flex 2019-04-16 14:41:14 +03:00
Matias Griese
0d99a03c39 Fixed Flex simple storage not being properly initialized if used with caching 2019-04-16 10:58:20 +03:00
Andy Miller
e9117301d4 Merge branch 'release/1.6.5' 2019-04-15 19:22:14 -06:00
Andy Miller
bf199e9394 Merge tag '1.6.5' into develop
Release v1.6.5
2019-04-15 19:22:14 -06:00
Andy Miller
c070b0afbb prepare for release 2019-04-15 19:21:59 -06:00
Andy Miller
d54387b281 Backwards compatiblity with old Uri::__toString() output 2019-04-15 19:21:14 -06:00
Andy Miller
2bc6848464 Merge branch 'release/1.6.4' 2019-04-15 14:48:10 -06:00
Andy Miller
ab7c5d2fc5 Merge tag '1.6.4' into develop
Release v1.6.4
2019-04-15 14:48:10 -06:00
Andy Miller
abefbfc776 prepare for release 2019-04-15 14:48:01 -06:00
Andy Miller
ad173ca129 Improved redirect_default_route logic as well as Uri::toArray() to take into account root_path and extension 2019-04-15 12:44:48 -06:00
Andy Miller
d69ef0e39c Refactored rounded logic in Utils::parseSize() #2394 2019-04-15 11:00:11 -06:00
Matias Griese
436be17881 Fixed Flex simple storage not being properly initialized if used with caching 2019-04-15 14:26:55 +03:00
Andy Miller
9a5fa7e699 Extra forcing of first level arrays in taxonomy 2019-04-14 13:08:57 -06:00
Andy Miller
d502ff08c1 Attempt to resolve issue in form#332 2019-04-13 17:20:45 -06:00
Andy Miller
14eb1281f9 Fix to force all Page::taxonomy to be treated as strings #2446 2019-04-13 13:53:46 -06:00
Andy Miller
8fd7a5aebe Fixes #2445 pipeline excluded assets with cache on 2019-04-13 13:18:13 -06:00
Andy Miller
08423df547 code tidy 2019-04-13 12:27:19 -06:00
Andy Miller
40563ed2f8 Better Utils::normalizePath() logic #2216 2019-04-13 12:21:54 -06:00
Andy Miller
b639f09ca7 Merge branch 'release/1.6.3' 2019-04-12 19:48:13 -06:00
Andy Miller
dd134ad551 Merge tag '1.6.3' into develop
Release v1.6.3
2019-04-12 19:48:13 -06:00
Andy Miller
3d93d50cf0 prepare for release 2019-04-12 19:48:03 -06:00
Andy Miller
f1da7b6063 Fix for vUndefined errors when upgrading 2019-04-12 09:49:20 -06:00
Andy Miller
ef7b33f9b6 Fixed issue with Utils::normalizePath messing with external URLs #2216 2019-04-12 07:55:51 -06:00
Andy Miller
0f0e6ab1c8 Missed this one! #2442 2019-04-12 07:26:44 -06:00
Matias Griese
5362b312d1 Added Blueprint::addDynamicHandler() method to allow custom dynamic handlers, for example custom-options@: getCustomOptions 2019-04-12 12:23:31 +03:00
Andy Miller
ca4d6a398f Merge branch 'release/1.6.2' 2019-04-11 18:25:47 -06:00
Andy Miller
ed00d480f2 Merge tag '1.6.2' into develop
Release v1.6.2
2019-04-11 18:25:47 -06:00
Andy Miller
057bdd546b prepare for release 2019-04-11 18:25:38 -06:00
Andy Miller
7762f0c85e * Revert renaming of ClearCacheCommand to ensure CLI GPM upgrades go smoothly 2019-04-11 18:22:38 -06:00
Andy Miller
1e6c01ea65 Merge branch 'release/1.6.1' 2019-04-11 16:46:51 -06:00
Andy Miller
4b777f508b Merge tag '1.6.1' into develop
Release v1.6.1
2019-04-11 16:46:51 -06:00
Andy Miller
d15f125964 prepare for release 2019-04-11 16:46:43 -06:00
Andy Miller
32b435b7e6 Revert attempted fixes 2019-04-11 16:45:31 -06:00
Andy Miller
31d301911f Merge branch 'release/1.6.1' 2019-04-11 16:33:08 -06:00
Andy Miller
911eec5e68 Merge tag '1.6.1' into develop
Release v1.6.1
2019-04-11 16:33:08 -06:00
Andy Miller
2e4bb25e2e prepare for release 2019-04-11 16:32:59 -06:00
Andy Miller
d99c80eae9 More backwards compatibility 2019-04-11 16:29:55 -06:00
Andy Miller
0e03240d13 Merge branch 'release/1.6.1' 2019-04-11 15:25:47 -06:00
Andy Miller
02064117bc Merge tag '1.6.1' into develop
Release v1.6.1
2019-04-11 15:25:47 -06:00
Andy Miller
a9e0cc7159 prepare for release 2019-04-11 15:25:31 -06:00
Andy Miller
6b4332db72 not sure if needed, but might be same issue as DebuggerAssetsProcessor 2019-04-11 15:24:54 -06:00
Andy Miller
0f591953a0 update changelog 2019-04-11 15:19:55 -06:00
Andy Miller
0a5e78ccc6 Hopefully fix the DebuggerAssetsProcess error on upgrade of older versions 2019-04-11 15:19:43 -06:00
Andy Miller
fbf7c50a12 no longer needed 2019-04-11 15:06:19 -06:00
Andy Miller
09c1255239 fixes #2440 2019-04-11 15:05:50 -06:00
Andy Miller
75650ceba3 Better CSS for DebugBar 2019-04-11 15:04:00 -06:00
Andy Miller
e2a65004f3 Merge tag '1.6.0' into develop
Release v1.6.0
2019-04-11 12:38:38 -06:00
Andy Miller
d4e1bcc660 Merge branch 'release/1.6.0' 2019-04-11 12:38:37 -06:00
Andy Miller
b1b1670c77 prepare for release 2019-04-11 12:38:27 -06:00
Andy Miller
5a3674f6f6 set releases to stable 2019-04-11 12:36:14 -06:00
Andy Miller
e622e204bf update to include PHP 7.3 next time 2019-04-11 12:31:13 -06:00
Andy Miller
c378b06a90 Merge tag '1.6.0' into develop
Release v1.6.0
2019-04-11 12:23:38 -06:00
Andy Miller
c6ce6e6c32 Merge branch 'release/1.6.0' 2019-04-11 12:23:37 -06:00
Andy Miller
355f7ee748 prepare for release (take 2) 2019-04-11 12:23:27 -06:00
Andy Miller
c19fa22a26 update changelog 2019-04-11 12:22:51 -06:00
Matias Griese
5ba4c8ee5b Merge remote-tracking branch 'origin/1.6' into 1.6 2019-04-11 19:43:12 +03:00
Matias Griese
306df5837d Added FlexStorageInterface::hasKeys() 2019-04-11 19:43:01 +03:00
Andy Miller
66bba376db minor fixes and tests for Utils::url 2019-04-11 07:30:12 -06:00
Andy Miller
ec07d37623 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-04-10 16:51:07 -06:00
Andy Miller
cab78d36f3 Missing file 2019-04-10 16:51:02 -06:00
Andy Miller
449682baea Allow reseting of Page::metadtta 2019-04-10 16:50:55 -06:00
Andy Miller
6eb11b9717 Fix for Utils::url and extra base_url 2019-04-10 16:50:30 -06:00
Matias Griese
5a1d138d08 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-04-10 20:59:21 +03:00
Matias Griese
dfd75efbe5 Fixed join() in flex user 2019-04-10 20:59:13 +03:00
Andy Miller
76ed48fc7c escape spaces 2019-04-10 11:27:49 -06:00
Andy Miller
1043b9a189 Added languages.default_lang option to override the default lang 2019-04-09 17:27:35 -06:00
Matias Griese
e401c683f5 Grav 1.6: Fixed bad key in Flex Users if file storage is being used 2019-04-09 12:06:20 +03:00
Matias Griese
9d4fe331fa Fixed error in FlexUserIndex if there are users without an email address 2019-04-09 09:58:55 +03:00
Matias Griese
fbae3fd194 Fixed Flex erroring out with all numeric keys in storage (changelog) 2019-04-08 21:38:25 +03:00
Matias Griese
022f1ce758 Composer update 2019-04-08 21:37:41 +03:00
Andy Miller
b367c664c7 tidy up 2019-04-05 17:42:30 -06:00
Andy Miller
8512968726 this closes #2432 2019-04-05 17:38:45 -06:00
Matias Griese
2ffc110f03 Composer update 2019-04-05 10:21:51 +03:00
Matias Griese
36836c516f Fixed deleting last list item in the form 2019-04-05 10:19:55 +03:00
Andy Miller
1f288c25de typo! 2019-04-04 17:06:12 -06:00
Matias Griese
a4b62d48b2 Fixed minor bugs in Flex 2019-04-04 11:28:30 +03:00
Andy Miller
397f6902f3 Improved Utils::normalizePath() to support non-protocol URLs 2019-04-03 16:52:52 -06:00
Andy Miller
e97bceed56 changelog updated 2019-04-02 12:25:27 -06:00
Andy Miller
7efc0f418e Fixed cached images not being updated when source image is modified 2019-04-02 12:20:38 -06:00
Matias Griese
ac2a4e1c06 Try fixing cache issue with media 2019-04-02 20:28:43 +03:00
Matias Griese
ef43348020 Changelog update 2019-04-01 19:53:14 +03:00
Matias Griese
b6e68bb362 PSR-16, not 15 2019-04-01 19:51:28 +03:00
Matias Griese
8d9ceb5d99 MediaTrait: Use PSR-15 cache 2019-04-01 19:49:15 +03:00
Andy Miller
af47825b76 Merge branch '1.6' of github.com:getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
2019-03-29 11:31:32 -06:00
Andy Miller
a4c88697af set_time_limit(0) for Archiver class 2019-03-29 11:30:55 -06:00
Matias Griese
45fbfb098a Added FlexObjectInterface::getDefaultValue() and FormInterface::getDefaultValue() 2019-03-29 18:19:03 +02:00
Matias Griese
9172e442f2 Blueprint: cache defaults to the object to speed multiple getDefaults() calls up 2019-03-29 18:14:26 +02:00
Matias Griese
3b91f9af8c FlexObjects: Remove null values during save 2019-03-29 13:01:55 +02:00
Matias Griese
d5e9cc4bfe Added RenderInterface 2019-03-28 12:52:34 +02:00
Matias Griese
bb719c5d53 Improve deprecated error logic to better track twig/yaml/markdown issues 2019-03-27 12:06:48 +02:00
Matias Griese
05a6775b08 Minor tweak 2019-03-26 14:07:58 +02:00
Matias Griese
1accbb8edc DebugBar: Fixed some instances where twig template wasn't properly assigned 2019-03-26 14:02:04 +02:00
Matias Griese
a04a7f5714 DebugBar: Resolve twig templates in deprecated backtraces in order to help locating Twig issues 2019-03-26 12:56:53 +02:00
Matias Griese
f31f7f7499 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-26 07:51:04 +02:00
Matias Griese
354d6f307c Added Flex[Name]::getFlexType() to all flex classes to have the interface for all Flex classes 2019-03-26 07:50:54 +02:00
Andy Miller
90aa4083ca improved order of page types - fixes #2337 2019-03-25 17:29:35 -07:00
Matias Griese
5fbd252db9 Merge branch 'develop' of github.com:getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
#	composer.json
#	composer.lock
#	system/defines.php
2019-03-25 18:56:09 +02:00
Matias Griese
04d3237a89 Changelog update 2019-03-25 18:53:04 +02:00
Antoine Goutenoir
55aaaeed47 Add the page to the onMarkdownInitialized event. (#2418)
This will allow plugins hooking this event to mergeConfig #2412
2019-03-25 18:51:06 +02:00
Matias Griese
84d995335e Fixed Undefined method closure::fields() when getting avatar for user, thanks @Romarain [#2422] 2019-03-22 18:01:22 +02:00
Djamil Legato
f7d3299ebb Added Awesome Grav link to the Exploring More 2019-03-21 19:06:12 -07:00
Andy Miller
e762c3add9 Merge branch 'release/1.5.10' 2019-03-21 14:16:21 -06:00
Andy Miller
df6bb065d3 Merge tag '1.5.10' into develop
Release v1.5.10
2019-03-21 14:16:21 -06:00
Andy Miller
2fed02affa Prepare for release 2019-03-21 14:16:10 -06:00
Matias Griese
a739ed6825 Improved Exceptions middleware 2019-03-21 12:17:48 +02:00
Matias Griese
90c708db2b Added Content-Type: application/json body support for PSR-7 ServerRequest 2019-03-21 12:01:05 +02:00
Andy Miller
fcbd819f48 Added deferred twig extension 2019-03-20 16:31:19 -06:00
Andy Miller
a25d18bca7 prepare for RC.4 release 2019-03-20 14:06:51 -06:00
Andy Miller
4480077894 Updated with Toolbox 1.4.6 2019-03-20 14:04:35 -06:00
Andy Miller
e9aa338c1e Merge branch 'develop' into 1.6
# Conflicts:
#	composer.json
#	composer.lock
#	system/defines.php
#	system/src/Grav/Common/Page/Media.php
2019-03-20 14:04:00 -06:00
Andy Miller
88a3e874aa Merge branch 'release/1.5.9' 2019-03-20 14:01:21 -06:00
Andy Miller
87814039bc Merge tag '1.5.9' into develop
Release v1.5.9
2019-03-20 14:01:21 -06:00
Andy Miller
af72951671 prepare for release 2019-03-20 14:01:10 -06:00
Andy Miller
5f2dfc8221 Use toolbox 1.4.2 in develop branch for now 2019-03-20 13:58:00 -06:00
Andy Miller
c706756d19 changelog updated 2019-03-20 13:52:27 -06:00
Andy Miller
a4801ead6a Fix for streams with EXIF 2019-03-20 13:52:04 -06:00
Matias Griese
a57cec8404 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-20 21:12:41 +02:00
Matias Griese
8b171435a7 Fixed File::save() silently ignoring failures with read only streams 2019-03-20 21:12:33 +02:00
Andy Miller
ab23d071a4 Merge branch 'release/1.5.9' 2019-03-20 12:04:51 -06:00
Andy Miller
3e6c4e9c5e Merge tag '1.5.9' into develop
Release 1.5.9
2019-03-20 12:04:51 -06:00
Andy Miller
28db98c95d Prepare for release 2019-03-20 12:04:26 -06:00
Andy Miller
95583dbbcd updated vendor libs 2019-03-20 11:50:00 -06:00
Andy Miller
9d8fc4a065 New onPageContent() event 2019-03-20 11:16:18 -06:00
Andy Miller
b23cd7bb65 New onPageContent() event 2019-03-20 11:14:38 -06:00
Matias Griese
28d5be982c Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-20 16:15:28 +02:00
Matias Griese
3836e4d38a Fixed file saving when temporary file cannot be created to the current folder / stream 2019-03-20 16:15:18 +02:00
Andy Miller
4ebfd51e98 Safer stream check 2019-03-20 07:22:05 -06:00
Andy Miller
25ff1241d4 docblock 2019-03-19 13:14:21 -06:00
Matias Griese
0dc3e5806e Minor fix 2019-03-19 16:42:06 +02:00
Matias Griese
982b12a239 Fixed session_start(): Setting option 'session.name' failed [#2408] 2019-03-19 13:47:35 +02:00
Matias Griese
5995515419 Added detection for deprecated features into phpstan 2019-03-19 13:37:02 +02:00
Matias Griese
8c1c813acd Greatly improved Flex interfaces and docblocks 2019-03-19 13:36:12 +02:00
Matias Griese
0e95d7faf6 Class Grav\Common\Page\Medium\AbstractMedia now use array traits instead of extending Grav\Common\Getters 2019-03-19 12:16:02 +02:00
Matias Griese
47c3d4bf9b Improved docblocks for multiple classes 2019-03-18 11:01:41 +02:00
Matias Griese
33282e043b Added composer test-plugins to test plugin issues with the current version of Grav 2019-03-18 10:58:21 +02:00
Andy Miller
81efef7c60 Hopefully fix auto_metadata_exif error #2248 2019-03-15 19:02:17 -06:00
Andy Miller
2678f56499 remove extra stuff 2019-03-15 18:11:49 -06:00
Andy Miller
cd8f578b39 site crashes if header is invalid #2343 2019-03-15 05:10:19 -06:00
Andy Miller
ab535ec8be Better solution for SEO imagename format 2019-03-14 17:14:19 -06:00
Matias Griese
ada6c3f160 Fixed phpstan level 4 and 5 errors in Grav\Framework 2019-03-14 14:06:53 +02:00
Matias Griese
0917850634 Oops, fix a bug 2019-03-14 13:27:13 +02:00
Matias Griese
c09a8fbbc4 Fixed phpstan level 3 errors in Grav\Framework 2019-03-14 13:20:29 +02:00
Matias Griese
2b392055c1 Fixed few phpstan level 3-7 issues 2019-03-14 11:31:26 +02:00
Matias Griese
45acd237f5 Changelog update (2) 2019-03-14 09:18:32 +02:00
Matias Griese
cbf79e38c4 Changelog update 2019-03-14 09:10:38 +02:00
Matias Griese
ed10ce03e2 Twig nicenumber: do not use 0 + string casting hack 2019-03-14 09:04:41 +02:00
Matias Griese
561abc851f Twig tags: use namespaced classes 2019-03-14 09:03:24 +02:00
Matias Griese
8789fd91ee Fixed/silenced the remaining phpstan level 2 issues 2019-03-14 09:01:16 +02:00
Andy Miller
b835db49f4 Added PHPStan badge 2019-03-13 21:35:49 -06:00
Andy Miller
a5e832b0b0 new option for image.prettyname_prefix 2019-03-13 18:04:52 -06:00
Matias Griese
2b16f813ef Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-13 22:22:14 +02:00
Matias Griese
30b013f5b0 Fixed most phpstan level 2 issues in Grav\Common 2019-03-13 22:22:03 +02:00
Djamil Legato
5eccfaa34b Reverted commit 48816d9 causing issues with GPM cli commands (ref, getgrav/grav-plugin-admin@e3fc4ce) 2019-03-13 13:17:10 -07:00
Matias Griese
fde69ade6b Fixed some phpstan level 2 issues in Grav\Console 2019-03-13 19:46:06 +02:00
Andy Miller
af3d5e9683 phpstan fixes 2019-03-13 11:24:07 -06:00
Andy Miller
c757e00ac9 phpstan fix 2019-03-13 11:16:00 -06:00
Matias Griese
19d61b4013 Merge branch 'develop' of github.com:getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
#	system/src/Grav/Common/User/User.php
2019-03-13 16:13:19 +02:00
Matias Griese
b4a4b60871 Fixed phpdoc generation 2019-03-13 16:00:00 +02:00
Matias Griese
9727f30c61 Fixed broken @inheritdoc in phpdoc blocks 2019-03-13 15:44:53 +02:00
Matias Griese
db8e5b3cbb Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-13 15:21:18 +02:00
Matias Griese
b0b6c1dd17 Fixed some more phpstan level 2 issues 2019-03-13 15:21:09 +02:00
Sébastien Vanvelthem
47bb35e2e9 Preliminary tests for CsvFormatter::encode + minor fix for empty data (#2405) 2019-03-13 15:02:46 +02:00
Matias Griese
2433e0d2cd Fixed phpstan level 2 issues in Grav\Framework 2019-03-13 14:28:16 +02:00
Matias Griese
cdf891478e Fixed some phpstan level 2 issues 2019-03-13 11:05:50 +02:00
Matias Griese
39b1940f94 Fixed phpstan level 1 issues 2019-03-13 10:16:47 +02:00
Matias Griese
8564524984 Fixed some bugs found by phpstan 2019-03-13 09:49:08 +02:00
Matias Griese
2f74f0f587 Composer update 2019-03-13 08:37:33 +02:00
Matias Griese
6e2e533184 Minor fix for FlexUser, changelog update 2019-03-13 08:30:38 +02:00
Sébastien Vanvelthem
ecd39421d6 Some phpstan issues (#2393)
* Fix bug, method init must be protected
* Added phpstan level 0
* Added exclusions
* Fix: incorrect case in Twig_SimpleFunction
* Fix, no abstract properties, if properties used in methods let's set them
* Fixed Psr\SimpleCache\InvalidArgumentException referenced with incorrect case
* added exclusions
* Fixed: Access to an undefined property Grav\Framework\Form\FormFlash::$uploadObjects.
* Fixed: does not call parent constructor from Grav\Common\Iterator.
* Fixed: does not call parent constructor from Grav\Common\Iterator.
* Fixed: does not call parent constructor
* Fixed: does not call parent constructor
* Minor: correct type for inflector
* Moved phpstan.neon out of public directory
* Added exclusion
* set GRAV_USER_INSTANCE to prevent LogiException in User
* Exlude Stream:create
* Minor: Missing storage property
* Minor: Fixed missing properties (phpstan level 1)
* Added type for $data
* Minor: Ensure $langs is initialized
* Fix possible bug in $http_response_header status code retrieval (PHP 7.1 only)
* Added exclusion for $http_response_header (isset is actually not required)
* Strict null check
2019-03-13 08:15:22 +02:00
Andy Miller
68d43a0c88 update vendor libs 2019-03-12 15:58:33 -06:00
Kirsten Roschanski
c80a3f5568 Update User.php (#2403) 2019-03-12 14:15:03 -06:00
Matias Griese
b3d84a05f5 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-12 20:25:35 +02:00
Matias Griese
95495614a8 Simplify grav services and processors 2019-03-12 20:25:17 +02:00
Andy Miller
45d7a164b5 updated changelog 2019-03-12 06:45:39 -06:00
Andy Miller
97b236d117 updated changelog 2019-03-12 06:29:04 -06:00
Andy Miller
8718c5ef31 Remove legacy media.upload_limit references 2019-03-12 06:25:56 -06:00
Andy Miller
7d7418df26 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-03-11 12:14:26 -06:00
Andy Miller
dd9aa5bf78 couple of helpers 2019-03-11 12:14:21 -06:00
Matias Griese
7f86f8eb6f Bug fixes 2019-03-11 14:35:44 +02:00
Matias Griese
8b4cac7ba6 Fixed settion caching in FlexIndex 2019-03-11 14:14:20 +02:00
Matias Griese
b388e91177 Implemented Grav\Framework\Pagination classes 2019-03-11 13:25:47 +02:00
Matias Griese
a2ac3f4c8b FlexForm: Fix unique id for new objects 2019-03-08 20:35:54 +02:00
Matias Griese
1db8b93cfa Request object: Include attribute for request time 2019-03-08 20:34:14 +02:00
Matias Griese
6217ac90e0 Improved Flex::getObjects() logic 2019-03-07 14:43:24 +02:00
Matias Griese
bb385490bc Regression: index not working due to missing method 2019-03-07 11:15:16 +02:00
Matias Griese
a5e48ba160 Fixed typo 2019-03-06 12:35:10 +02:00
Matias Griese
c7a4e8e4bb Added FlexObjectInterface::search() and FlexCollectionInterface::search() methods 2019-03-06 12:34:00 +02:00
Matias Griese
85d5b6e889 Generalized flex index creation 2019-03-06 10:19:47 +02:00
Andy Miller
1c725c02f0 Better error checking in bin/plugin for existence and enabled 2019-03-05 12:46:48 -07:00
Matias Griese
5008672a48 Add missing extend to PageInterface 2019-03-05 15:40:34 +02:00
Matias Griese
4e03f19bac Update all classes to rely on PageInterface instead of Page class 2019-03-05 15:29:39 +02:00
Matias Griese
a03c328ee3 Create set of interfaces for all page methods 2019-03-05 15:16:01 +02:00
Andy Miller
77ac68f2e8 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-03-04 20:05:21 -07:00
Andy Miller
02acc34461 Move last backup logging into the backup command 2019-03-04 20:05:15 -07:00
Matias Griese
a402a8ef84 Fix FlexForm::getBlueprint() for admin 2019-03-05 00:15:30 +02:00
Matias Griese
60573c1d78 Add parameters for FlexForm::getMediaTaskRoute 2019-03-04 22:59:43 +02:00
Matias Griese
56adf40bb4 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-04 18:22:57 +02:00
Matias Griese
d33c45165d Add object.media[filename] support into FlexMediaTrait 2019-03-04 18:22:47 +02:00
Andy Miller
032acedafe Lang updates 2019-03-01 14:32:59 -07:00
Andy Miller
6a48216afb Updated editorconfig to be valid 2019-03-01 14:14:44 -07:00
Matias Griese
85af461eb4 FlexObject: When creating object and key isn't set, use storage key instead 2019-03-01 15:13:21 +02:00
Matias Griese
4b1a129f38 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-03-01 14:48:01 +02:00
Matias Griese
1762ef3d1e Added Medium::size() 2019-03-01 14:47:53 +02:00
Andy Miller
8ffba2d88d fix typo 2019-03-01 05:44:21 -07:00
Andy Miller
f19cb94f89 cleanup 2019-03-01 05:25:29 -07:00
Andy Miller
8fb7caa22a Safer check for admin 2019-02-28 18:44:29 -07:00
Andy Miller
07646860f2 updated toolbox version 2019-02-28 16:11:54 -07:00
Andy Miller
6765c5f594 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-02-28 14:59:39 -07:00
Matias Griese
026f9cb3a0 Fixed potential undefined property in onPageNotFound event handling 2019-02-28 22:35:37 +02:00
Andy Miller
516dfd5c26 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-02-28 11:30:12 -07:00
Andy Miller
1fbd5e0b38 Fix for static admin::tu() call 2019-02-28 11:29:54 -07:00
Matias Griese
b35a892853 Added Flex::getObjects() and Flex::getMixedCollection() methods for co-mingled collections
Added support to use single Flex key parameter in `Flex::getObject()` method
2019-02-28 16:26:39 +02:00
Matias Griese
578f8e4947 Grav\Framework\File\AbstractFile::save(): Fixed missing directory creation 2019-02-28 10:26:41 +02:00
Andy Miller
a934dd4fff Minor backup things 2019-02-27 12:46:32 -07:00
Andy Miller
18625758e5 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-02-26 17:09:15 -07:00
Andy Miller
eb689c417b Updated libs including Toolbox 1.4.3 2019-02-26 17:09:11 -07:00
Matias Griese
df226a1102 Improved File::save() to use a temporary file if file isn't locked 2019-02-26 23:00:43 +02:00
Matias Griese
8947f5ade9 Improved File::save() not to use file lock, but a temporary file, fixed Obtaining write lock failed on file... 2019-02-26 21:21:07 +02:00
Matias Griese
941a5db8de Disable deprecation messages for Page methods for now (used in too many places) 2019-02-26 15:17:03 +02:00
Matias Griese
2fcaaea6ac Fixed mkdir(...) race condition 2019-02-26 15:13:40 +02:00
Matias Griese
5887a396c1 Update changelog by marking fixes/changes between Grav 1.6 beta releases 2019-02-26 12:28:32 +02:00
Matias Griese
f934256e06 Added more deprecation messages 2019-02-26 12:11:51 +02:00
Matias Griese
ccb465e998 Grav 1.6: Renamed $grav['users'] service to $grav['accounts'] 2019-02-26 12:11:15 +02:00
Matias Griese
1b0a6e99f7 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-02-26 11:09:52 +02:00
Andy Miller
2e647be565 this is deprecated... 2019-02-25 16:30:31 -07:00
Matias Griese
863123ac92 Changelog update 2019-02-25 19:11:50 +02:00
Matias Griese
434620dea0 Fixed FlexObject::update() removing fields which aren't allowed by ACL 2019-02-25 15:08:33 +02:00
Matias Griese
212d7d24ef Changelog update, minor cleanup 2019-02-25 11:47:24 +02:00
Matias Griese
61cf416df4 Added B/C layer for FormatterInterface 2019-02-25 11:43:42 +02:00
Matias Griese
ff23f6b015 Renamed Grav\Framework\File\Formatter\FormatterInterface to Grav\Framework\File\Interfaces\FileFormatterInterface 2019-02-25 11:29:48 +02:00
Matias Griese
d59d60647c Fixed FlexUser::find() breaking when nothing is found 2019-02-19 23:06:29 +02:00
Matias Griese
cf088d00ff Fixed FlexUser loosing ACL information (apply only for user) 2019-02-19 22:39:47 +02:00
Matias Griese
dd5a10d0e2 Fixed FlexUser loosing ACL information 2019-02-19 22:33:51 +02:00
Matias Griese
0da39aa397 Added method to return FlexIndex from FlexCollection 2019-02-19 12:16:48 +02:00
Andy Miller
2dff43acba prepare for rc.3 2019-02-18 14:56:57 -07:00
Andy Miller
c97853e1aa updated languages 2019-02-18 14:43:06 -07:00
Andy Miller
c9be74fe39 Updated libs 2019-02-18 13:52:56 -07:00
Andy Miller
e7df9c1dca Merge branch 'develop' into 1.6
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2019-02-18 13:50:22 -07:00
Andy Miller
3c680cd8e8 Added support for a backlink in scheduler 2019-02-18 13:18:01 -07:00
Andy Miller
3545761b92 reformatted the site.yaml a little 2019-02-18 12:59:56 -07:00
Andy Miller
72016d7e7c Fixed purgeJob() and added clearJob() 2019-02-18 12:59:47 -07:00
Andy Miller
6c1701ea5a Fix for email causing infinite ‘call’ recursion 2019-02-16 18:13:24 -07:00
Matias Griese
28372be982 Fixed bug in Flex collection caching 2019-02-15 22:08:02 +02:00
Matias Griese
58f85212db Renamed flex users blueprints to match the class name, move index file [#2378] 2019-02-15 20:15:17 +02:00
Matias Griese
c39bdaf7f2 Added getCache() method to FlexIndex, FlexCollection and FlexObject 2019-02-15 14:17:21 +02:00
Matias Griese
16ab2e59f1 Renamed FlexIndex::getIndex() to getIndexMap() 2019-02-15 13:15:24 +02:00
Matias Griese
29c65c74db Merge remote-tracking branch 'origin/1.6' into 1.6 2019-02-15 11:14:02 +02:00
Matias Griese
fee77d7301 Fixed FlexIndex keys being lost when FlexCollection gets loaded 2019-02-15 11:13:50 +02:00
Andy Miller
21d9fa1e74 display fullname instead of title in list 2019-02-14 16:40:02 -07:00
Matias Griese
b4d973bfd0 Remove var_dump(), oopsie! 2019-02-14 21:12:53 +02:00
Matias Griese
993db32652 Console commands: add method for invalidating cache 2019-02-14 15:32:42 +02:00
Matias Griese
a0f4878c12 Updated version to rc.3 2019-02-14 11:44:32 +02:00
Matias Griese
452df10ea1 Updated UserInterface and FlexObjectInterface by adding missing update() parameter 2019-02-14 11:35:43 +02:00
Matias Griese
a3bf38b182 Change typehints from User to UserInterface 2019-02-14 11:34:41 +02:00
Matias Griese
674ea8ae25 Fixed validation for boolean toggles 2019-02-14 10:39:10 +02:00
Matias Griese
94610f4e61 Fixed missing form_nonce for JS when using FlexForm 2019-02-14 10:06:24 +02:00
Matias Griese
b2df60647d Initialize users before plugins on bin/plugin commands 2019-02-14 09:56:11 +02:00
Matias Griese
e8650a55af Merge remote-tracking branch 'origin/1.6' into 1.6 2019-02-13 23:48:26 +02:00
Matias Griese
09805f7091 Fixed FlexIndex keys being lost when FlexCollection gets loaded 2019-02-13 23:30:35 +02:00
Andy Miller
a63040aa11 Updated built-in composer 2019-02-13 13:18:22 -07:00
Andy Miller
3e97ecab68 Fixes issue with uninitialized users object 2019-02-13 13:17:21 -07:00
Robbert
409b4028d0 fix dead link + add http > https changes to site urls (#2369) 2019-02-12 12:14:28 -07:00
Matias Griese
85b4996dbf Changelog update 2019-02-12 16:16:17 +02:00
Matias Griese
e7041ff48e Change default attribute value of Flex[class]::getType($prefix) to false 2019-02-12 16:14:02 +02:00
Matias Griese
793b56fc8c Fixed validation for select field type with selectize 2019-02-12 14:32:29 +02:00
Matias Griese
ea91601459 Allow onRequestHandlerInit to set Response object 2019-02-11 15:01:23 +02:00
Matias Griese
6e3edb7dfb Some bug fixes for Psr-7 & request handler 2019-02-11 13:59:15 +02:00
Matias Griese
4e38c1fe25 Improve onRequestHandlerInit event 2019-02-11 13:18:32 +02:00
Andy Miller
2adb13ac66 Use array to make ordering easier 2019-02-08 12:34:52 -07:00
Matias Griese
d565c4af16 Improvements for Grav\Framework\Psr7 2019-02-08 21:24:02 +02:00
Matias Griese
877529ae5b Implemented Grav\Framework\Psr7 classes as Nyholm/psr7 decorators 2019-02-08 20:49:05 +02:00
Andy Miller
8b89c2c52e Missing pages.types #1612 2019-02-08 08:47:57 -07:00
Matias Griese
427ba0e420 Fixed FlexUser caching 2019-02-08 13:33:33 +02:00
Matias Griese
4be7aa5665 Changelog update 2019-02-08 12:58:34 +02:00
Matias Griese
9bd66031ab Grav 1.6 code cleanup (#2366)
* Code cleanup
* Define admin menu for Flex Users
2019-02-08 12:56:15 +02:00
Andy Miller
48816d9f2e Fix issue with vUndefined in GPM 2019-02-07 17:56:45 -07:00
Andy Miller
031bfdc1e7 prepare for rc.2 release 2019-02-07 16:23:57 -07:00
Andy Miller
88121aaab4 Merge tag '1.5.8' into develop
Release v1.5.8
2019-02-07 16:04:56 -07:00
Andy Miller
8f588aca99 Merge branch 'release/1.5.8' 2019-02-07 16:04:55 -07:00
Andy Miller
5b34a9bfc4 prepare for release 2019-02-07 16:04:31 -07:00
Andy Miller
ef55d2615f update changelog 2019-02-07 16:03:49 -07:00
Matias Griese
1391dd38a4 Changelog update 2019-02-07 23:40:33 +02:00
Andy Miller
f8f1d5854c Squashed commit of the following:
commit 6522db9beb579ee9ccb4f8b73f22bd0a57af5294
Merge: e047173f a1c8cb9f
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 21:25:18 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit e047173fe0acf79a593db5b2e9db87cdc6f416a1
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 21:09:18 2019 +0200

    Updated FlexCollection to match object isAuthorized() call (fixed oopsie)

commit a937a5834fab908c915d9859479b07088cbe1677
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 21:02:21 2019 +0200

    Updated FlexCollection to match object isAuthorized() call

commit 24ea31364632dddc38057e243075787340c3e86b
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 20:48:13 2019 +0200

    Fixed infinite loop when creating DataUser object

commit 5da9fa8e1a4d213e16d8ca5c64a898c1712a28aa
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 17:34:54 2019 +0200

    Renamed `FlexAuthorizeInterface::authorize()` to `isAuthorized()`

commit 42fcf352a53a89e2082449ff6280804d913cac99
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 10:10:41 2019 +0200

    Added proper security check for user access levels

commit 43f8051305909f4579a65026de020c4ccdb1d15a
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Feb 7 10:07:35 2019 +0200

    Added configuration options for system.accounts fields

commit 9ff8cc6e984744cb1031184721cb3a03d38ca33a
Author: Andy Miller <rhuk@mac.com>
Date:   Wed Feb 6 13:20:02 2019 -0700

    Cleanly handle session corruption due to changing Flex object types

commit 472c7e5367d7e27044e6bf1629800c69178a4b70
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Feb 6 21:50:48 2019 +0200

    Added isValid() method for Data/FlexUser classes

commit 3098479d5e5f0ae370495f77e0615f1a50d9501c
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Feb 6 14:00:06 2019 +0200

    Changelog update

commit 56956e178c93b8eefe055f645693b44f0ce71092
Merge: 84510cdc 466374ba
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Feb 6 13:32:03 2019 +0200

    Merge remote-tracking branch 'origin/1.7' into 1.7

commit 84510cdc24bf445aeb3b4787c6a3198d31789e8c
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Feb 6 13:31:40 2019 +0200

    Restructure Users logic to allow us to switch between old and new classes

commit 466374ba33ba89b396a36cc4fc0bd53f0d974bd0
Merge: 3a84c382 26de0340
Author: Andy Miller <rhuk@mac.com>
Date:   Tue Feb 5 20:37:33 2019 -0700

    Merge branch '1.6' into 1.7

commit 8f9c0e513a48161e97ca8940036c94984b9e814e
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Feb 5 16:23:21 2019 +0200

    Restructure FlexUsers to allow us to switch between old and new classes

commit 3a84c3822b4374dd767fed235003f426a0e48f4b
Merge: 6412498a 34bf8fb5
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Feb 5 14:24:09 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

    # Conflicts:
    #	system/defines.php

commit 6412498acab51bfe96ff2fd071a6875e3f8e435b
Merge: 3467f1d8 b1d43d29
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Feb 4 16:48:04 2019 -0700

    Merge branch '1.6' into 1.7

commit 3467f1d8d0448e588a8902ff70f13e24c4117e33
Merge: 49cf9820 c713625a
Author: Matias Griese <matias@trilbymedia.com>
Date:   Mon Feb 4 22:27:56 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit 49cf9820be70b37ae9ac69e7a35950e5b9fb6c25
Merge: e0aca2f6 24e6b6c8
Author: Matias Griese <matias@trilbymedia.com>
Date:   Mon Feb 4 22:21:37 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit e0aca2f6a0823b7346dc3eeaed698d55d9ae2f4f
Merge: 0bc93fae 632a2d79
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Feb 1 09:06:50 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

    # Conflicts:
    #	system/src/Grav/Common/User/User.php

commit 0bc93faec721e497867bdba224a61bdd397ff8c6
Merge: 91e17b8b e4b1d2ed
Author: Andy Miller <rhuk@mac.com>
Date:   Thu Jan 31 18:42:25 2019 -0700

    Merge branch '1.6' into 1.7

commit 91e17b8b14d4eeeccdd2f297dd27efbc4f515a19
Merge: 959cd21d 9fadb992
Author: Andy Miller <rhuk@mac.com>
Date:   Thu Jan 31 15:41:51 2019 -0700

    Merge branch '1.7' of github.com:getgrav/grav into 1.7

    # Conflicts:
    #	CHANGELOG.md

commit 959cd21da6a3aa3d15e67ad25114b4238fd5eba9
Merge: 22eedbfd a3fea3d0
Author: Andy Miller <rhuk@mac.com>
Date:   Thu Jan 31 15:40:21 2019 -0700

    Merge branch '1.6' into 1.7

    # Conflicts:
    #	CHANGELOG.md
    #	system/defines.php

commit 9fadb992a409473ec047cee329adfd2fc001ec99
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Feb 1 00:11:05 2019 +0200

    Added search() for user collection

commit fb1193e465fa0f6719a43215d0218d9e774519f1
Merge: d633eabf d50e5d95
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 31 21:19:35 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit d633eabf58216f18c3bd2ac179f474f621206d5a
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 31 21:17:35 2019 +0200

    Index username and email in lowercase letters

commit 86db584b0075ef7ad523d97bbe600c83815648e0
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 31 15:21:40 2019 +0200

    Rework FlexUser index

commit 540dbcd24c790114cec122f8bfbdc4d199cd9e2b
Merge: 28e41fb7 7a044c73
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 31 15:08:38 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

    # Conflicts:
    #	CHANGELOG.md

commit 28e41fb7e76bc1e569c0fcb8440c16d228396c73
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 31 11:17:29 2019 +0200

    Remove useless check

commit bd7b91efcba0914a3b4a664319c73b230e0e0755
Merge: 22eedbfd 4f80a156
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 31 10:16:33 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

    # Conflicts:
    #	CHANGELOG.md
    #	system/defines.php

commit 22eedbfd1160a38f24525c50cb4ca61caec4a1f8
Author: Andy Miller <rhuk@mac.com>
Date:   Wed Jan 30 17:18:59 2019 -0700

    Defines update

commit 338d40993e16e5c233c5fd010a259bbb37433de3
Merge: 1ecb6c4c f312c44a
Author: Andy Miller <rhuk@mac.com>
Date:   Wed Jan 30 17:15:38 2019 -0700

    Merge branch '1.6' into 1.7

commit 1ecb6c4c2b42e61785c473348bbeaffd2319344a
Merge: 22fc6ede 60436104
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 30 21:05:13 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit 22fc6edea286a51bb15f23dd8762960b5bb1821f
Merge: 21b9e2cd d45efb48
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 30 20:51:30 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit 21b9e2cd7c06e9f286428f2794ebd7d4e8f0e64d
Merge: 09f9eb22 610c6c34
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 30 11:20:39 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit 09f9eb228f5980a56602b0a82ca73929d1d0336c
Author: Andy Miller <rhuk@mac.com>
Date:   Tue Jan 29 17:16:42 2019 -0700

    updated changelog

commit d2641c89e5a8e25d5a8d20cb10d7d0d302661ac7
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 23:08:04 2019 +0200

    Added support for looking up user by key, flex_key and storage_key

commit 2482ae7b8ca46e9cd6c7759ee5c3a62cb1e58363
Merge: 354bfd95 bbdac0fd
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 22:22:29 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit 354bfd95fccf169357591a7f4c6b603121012f12
Merge: c0299f0d 5f5bfdaa
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 19:32:41 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit c0299f0de81ebc3a0d05e147443a1602e7f86a34
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 19:22:24 2019 +0200

    Log alert if user index file gets corrupted or cannot be read

commit a9bd316868c45ada12ba7756ef6abc46daa3638d
Merge: 318cff10 ad7fdd5c
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 18:15:00 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit 318cff102747c863e785f3bdbf3e538c84884b29
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 18:00:18 2019 +0200

    FlexUser: Do not fail hard if user index is corrupted

commit a402e675e485c2ccaa9e15f0d4f444073efe1fc5
Merge: a6179018 1321e582
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 29 16:09:10 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit a6179018d3e57acf6a0e00ed8cbe65be1b214ae7
Merge: eaeb9d30 f7865873
Author: Matias Griese <matias@trilbymedia.com>
Date:   Mon Jan 28 19:48:39 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit eaeb9d30251e9e31cd72c34c2f0f3a9b8e448f6c
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 25 12:20:16 2019 +0200

    FlexUser: Fixed original avatar image saving if there wasn't any before resize

commit 6e9b880dba19e3e717065e1d6b9adce4eb4fa100
Merge: d02f1c3d 5ad4ffd3
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 25 12:13:03 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

    # Conflicts:
    #	system/src/Grav/Common/Form/FormFlash.php

commit d02f1c3dd6b9e621fd1da5d9fb845faf2efb14d2
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 25 11:42:56 2019 +0200

    Fixed a bug on Form file crop with existing data

commit 17221a2a31fb7153e83e6a949bd004fe6aa73af8
Merge: c1c0467e 0700e4bf
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 25 11:08:14 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into 1.7

commit c1c0467ea1510bf7a7dceadefccb1358a6e74b28
Author: Matias Griese <matias@trilbymedia.com>
Date:   Thu Jan 24 16:20:51 2019 +0200

    Added `FlexCollection::sort()` method

commit a07f36995573646ce08fa8fb70adcb9f6ccbb95b
Merge: 4929c700 6d89108c
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 21:25:35 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit 4929c700065c10c6e047fd46169d121aea8c0fad
Merge: 13aac576 4e31a114
Author: Andy Miller <rhuk@mac.com>
Date:   Wed Jan 23 12:17:23 2019 -0700

    Merge branch '1.6' into feature/1.6-flex-users

commit 13aac576f81c0ef1a6721652c04432512c3bb669
Merge: 81b47c21 18d53079
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 20:54:29 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit 81b47c21ff58d5c6c876857dd9ea24d9cef97880
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 15:43:23 2019 +0200

    Move user search index into user-data://accounts folder

commit c7bf4fc71abd1298d729da08e0770dd94ab4f708
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 15:41:48 2019 +0200

    Fixed fatal error when user has no avatar

commit 586f6252d84c657b58fe84b79955c4542900e56a
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 15:41:18 2019 +0200

    Added configuration option for account storage type, default to old structure

commit 78cd6d05aa06e132ba4090edac5b4a4dab54d13b
Merge: 2d554b55 57de7cc0
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 15:14:17 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit 2d554b5577224bdd160e1319a9ba51b0b0ee6a34
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 12:46:50 2019 +0200

    FlexUser: Added original/cropped image support

commit 3f78f1b82316cf4d8bb2d0109c11ec6bf73c2bc5
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 12:13:54 2019 +0200

    FlexUser: Added original image/crop support

commit f8b7e7922cb036d57345d5587e9ba70271722503
Merge: f6b81fde e6b6e218
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 11:21:16 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit f6b81fde528a2b6ef17b784a5b695bb371b4617c
Merge: d82eeeac 24305528
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 11:11:39 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit d82eeeac9b50290d17b852e2221d9ae97b375fdc
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 10:28:58 2019 +0200

    MediaTrait: Clearing cache should unset media variable

commit ddaa9117ed7e795f95d897b6dd07a604482ca60b
Author: Matias Griese <matias@trilbymedia.com>
Date:   Wed Jan 23 10:11:26 2019 +0200

    FlexUser: Fixed issue on avatar if the field isn't what is expected by default (an array)

commit 8b23a47708106557c41fe497211e4dc3c7c1767e
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 22 22:03:47 2019 +0200

    Added User::getAvatarMedia() method

commit bb175341a5cb556c698481731fe73e9fa4b07643
Merge: bc9d60ca 5b0e2e40
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 22 21:44:18 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

    # Conflicts:
    #	system/src/Grav/Common/User/User.php

commit bc9d60ca79888c1c7eb0087bc841f409a67017b0
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 22 21:25:19 2019 +0200

    FlexUser: Fix extra parameter

commit 93b4b03706e8440e8e7ccad473fc5595ac85b631
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 22 11:10:51 2019 +0200

    FlexUser: Added support for avatar (or images in general)

commit fcd5756d2747cc4126c03fc53c2bd1bd35f0e8dc
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 22 09:29:54 2019 +0200

    Add `FormFlash::clearFiles()` method

commit 9da3c566188fa3f68077292d82a68b793763dc6a
Author: Matias Griese <matias@trilbymedia.com>
Date:   Mon Jan 21 20:57:07 2019 +0200

    Added media support for User

commit bb94022b709cebc73be4b3f010568b6504535aa2
Author: Matias Griese <matias@trilbymedia.com>
Date:   Mon Jan 21 11:44:35 2019 +0200

    Store users with unique ids

commit 6a184c4011ed3ed90cec4d536ead067896a580aa
Merge: 698a291c bd27d6fe
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 18 14:14:23 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

    # Conflicts:
    #	system/src/Grav/Common/User/User.php

commit 698a291cc844605dd8e969784883207308bc3a5f
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 18 14:02:02 2019 +0200

    Make sure that `authenticated` and `authorized` will not be saved into the file

commit 59c7dd59af86c7e0feaf4a9fa3832bad8a85b631
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 18 13:09:43 2019 +0200

    FlexUser: Fixed missing username in the object

commit b139e5daaa67d51baa26222e6155b359ac5a17f5
Merge: 426dae47 254fe990
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 18 12:22:22 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

    # Conflicts:
    #	system/src/Grav/Common/User/User.php

commit 426dae4731383bfd64f7e8e611f3721f58776feb
Merge: f4ff6713 0afe9d4f
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 18 11:00:36 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit f4ff6713ac1c930b3f932b285c762552f99c79b0
Merge: eaab0b0a 751d1da7
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 11 13:04:04 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit eaab0b0ae9c50ca5995ea7aa769720fc647ec4c2
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 11 12:57:15 2019 +0200

    Fixed merge conflict

commit 531dd1a788a6496c228c56103d4512d39c4d7650
Merge: 3bd925d6 f0cf4ed8
Author: Matias Griese <matias@trilbymedia.com>
Date:   Fri Jan 11 12:50:46 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit 3bd925d61b96c12ea77cad19f4a9c01ba9afba8f
Merge: a383fbac a224c8b3
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Jan 8 18:37:22 2019 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-flex-users

commit a383fbac0447d3226ee3a6109b99edca5210c5e5
Merge: 422e1f70 b38a143c
Author: Matias Griese <matias@trilbymedia.com>
Date:   Tue Dec 4 15:32:39 2018 +0200

    Merge branch '1.6' of https://github.com/getgrav/grav into feature/flex-users

    # Conflicts:
    #	system/src/Grav/Common/Grav.php

commit 422e1f7027389fd1727dac4e269309a33187ea69
Author: Matias Griese <matias@trilbymedia.com>
Date:   Mon Nov 26 19:57:28 2018 +0200

    Implement Flex User classes
2019-02-07 14:36:07 -07:00
Matias Griese
a1c8cb9f78 Typo in changelog 2019-02-07 14:42:19 +02:00
Matias Griese
54ce1b570a Regression: $session->getFlashObject('files-upload) did not work with Form 3.0 2019-02-07 11:28:54 +02:00
Matias Griese
f2d66c810a Use standard filename check in FormTrait 2019-02-07 08:35:43 +02:00
Andy Miller
26de0340ec Updated vendor libs including Symfony 4.2.3 2019-02-05 16:47:53 -07:00
Andy Miller
333fbd0db1 Update vendor libraries 2019-02-05 16:47:05 -07:00
Andy Miller
4cf4c09339 limit stack track rows… 50+ is nuts! 2019-02-05 14:18:48 -07:00
Matias Griese
34bf8fb5bb Minor fix when installing full package via direct install 2019-02-05 13:51:07 +02:00
Matias Griese
06eee1e711 Some installer fixes (clear cache, direct install with full package) 2019-02-05 13:23:16 +02:00
Matias Griese
b6ab086bf7 Changelog update 2019-02-05 11:35:11 +02:00
Andy Miller
b1d43d292d Added some useful object twig functions/filters 2019-02-04 16:30:18 -07:00
Matias Griese
19b92f17dd Improved Grav Core installer 2019-02-04 22:34:46 +02:00
Matias Griese
c713625a38 FlexIndex: Fixed undefined index 2019-02-04 22:27:21 +02:00
Matias Griese
24e6b6c8f1 Fixed Flex from indexing hidden folders/files as objects 2019-02-04 22:21:11 +02:00
Andy Miller
cebe28e591 Updated changelog 2019-02-01 19:02:16 -07:00
Andy Miller
b111a2c29d Added standard Yes/No lang strings to Grav 2019-02-01 13:34:23 -07:00
Matias Griese
8743a8080c Changelog update for #2350 2019-02-01 21:31:59 +02:00
Andy Miller
f2155aa04f Merge branch '1.6' of github.com:getgrav/grav into 1.6 2019-02-01 11:26:21 -07:00
Andy Miller
45346b72f2 Fix for trailing slash redirect in multlang 2019-02-01 11:26:16 -07:00
Matias Griese
632a2d79b6 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
2019-02-01 09:05:29 +02:00
Matias Griese
2fa5021a0c Improved User unserialize to not to break the object if serialized data is not what expected 2019-02-01 09:04:01 +02:00
Andy Miller
e4b1d2ed9e Enhancements to logviewer output to support lines in trace 2019-01-31 18:38:31 -07:00
Andy Miller
a3fea3d0fc Added LogViewer class and CLI command 2019-01-31 15:39:46 -07:00
Matias Griese
d50e5d954d Fixed oopsie in Package class 2019-01-31 20:49:12 +02:00
Matias Griese
970af3870e Some code cleanup 2019-01-31 17:57:05 +02:00
Matias Griese
9ba572d788 Fixed non-namespaced exceptions in scheduler 2019-01-31 17:53:11 +02:00
Matias Griese
ba2c37c216 Removed apc and xcache support, made apc alias of apcu 2019-01-31 17:51:04 +02:00
Matias Griese
0e14a325f8 Fixed some static/object calls to match the method 2019-01-31 17:42:18 +02:00
Matias Griese
1141dabbd8 Code cleanup 2019-01-31 17:32:06 +02:00
Matias Griese
7a044c7397 Added index file support for Flex Objects 2019-01-31 15:07:30 +02:00
Matias Griese
d0b3dd1d99 Improved error detection for broken Flex Objects 2019-01-31 15:06:41 +02:00
Matias Griese
4f80a1567d Update PHP file headers and copyrights 2019-01-31 10:04:57 +02:00
Andy Miller
23098a6b02 Revert "Grav 1.6 copyright updates and cleanup (PHP files only) (#2351)"
This reverts commit 0566185c4f.
2019-01-30 17:54:37 -07:00
Andy Miller
5c8a37be64 Updated version 2019-01-30 17:35:30 -07:00
Andy Miller
7b8944e8f2 updated changelog 2019-01-30 17:34:17 -07:00
Andy Miller
37fcb12ad1 Updated languages 2019-01-30 17:33:25 -07:00
Matias Griese
f312c44a46 Changelog update 2019-01-31 00:13:16 +02:00
Andy Miller
999e439d47 Merge branch 'develop' into 1.6 2019-01-30 13:45:19 -07:00
Matias Griese
0566185c4f Grav 1.6 copyright updates and cleanup (PHP files only) (#2351)
* Framework: update copyrights to 2019

* Some code cleanup (Assets, Backup, Config, Session)

* Continue code cleanup, update copyrights

* Fixed exception issues in scheduler, code cleanup

* Remove apc and xcache support, make apc alias of apcu

* Fixed Getters::count() method not returning anything

* More code cleanup, copyright updates

* Copyright updates for Grav\Console
2019-01-30 13:44:19 -07:00
Hamilton Turner
b91574e5c2 Remove unused parameter (#2357) 2019-01-30 13:42:34 -07:00
Matias Griese
604361045b Fixed bad host header in PSR-7 (if using 'php -S localhost:8000 system/router.php') part 2 2019-01-30 21:04:53 +02:00
Matias Griese
d45efb484c Fixed bad host header in PSR-7 (if using 'php -S localhost:8000 system/router.php') 2019-01-30 20:51:09 +02:00
Matias Griese
610c6c341c Fixed ImageMedium constructor warning when file cannot be accessed 2019-01-30 11:20:12 +02:00
Matias Griese
6daf480bfc Fixed FlexMediaTrait::getMedia() trying to include uploaded but already moved media 2019-01-30 11:17:49 +02:00
Matias Griese
bbdac0fd6d Made FormFlashFile more robust against deleted files (over time) 2019-01-29 22:22:00 +02:00
Matias Griese
5f5bfdaa42 Add protected method FormTrait::unsetFlash() 2019-01-29 19:32:19 +02:00
Matias Griese
ad7fdd5c2b Fixed a bug in FormFlashFile::moveTo() not deleting the old file 2019-01-29 18:12:38 +02:00
Matias Griese
1321e582d5 FlexObject: Fixed a bug when updating media 2019-01-29 14:13:14 +02:00
Stefan Bauer
6d6689b431 Update CHANGELOG.md (#2355) 2019-01-29 10:21:39 +02:00
Matias Griese
f78658738a FlexObject: Fixed a bug when updating media 2019-01-28 13:00:51 +02:00
Andy Miller
7c99ece0e1 make sure HTTP_DNT is set before inspecting it 2019-01-25 16:49:23 -07:00
Andy Miller
9058e1166d prepare for release 2019-01-25 14:42:33 -07:00
Andy Miller
ebd94a532c Merge branch 'develop' into 1.6
# Conflicts:
#	CHANGELOG.md
#	composer.lock
#	system/defines.php
2019-01-25 14:41:36 -07:00
Andy Miller
95a4ecb0f1 Merge branch 'release/1.5.7' 2019-01-25 14:38:52 -07:00
Andy Miller
ff8cc83b3a Merge tag '1.5.7' into develop
Release v1.5.7
2019-01-25 14:38:52 -07:00
Andy Miller
fbd3bbdbf9 Prepare for release 2019-01-25 14:38:31 -07:00
Andy Miller
f0e58adfbc Updated vendor libraries 2019-01-25 14:37:43 -07:00
Matias Griese
5ad4ffd3cf FormFlash: Fixed some image cropping issues 2019-01-25 12:12:04 +02:00
Matias Griese
0700e4bfdb Replace array cast in FormTrait::getFiles() 2019-01-25 10:42:21 +02:00
Matias Griese
82e5df960d Merge remote-tracking branch 'origin/1.6' into 1.6 2019-01-25 10:40:36 +02:00
Matias Griese
3ace15d01a Added FlexCollection::sort() method 2019-01-25 10:40:28 +02:00
Andy Miller
d367e6a1fb Fix null -> array issue 2019-01-24 15:08:23 -07:00
Matias Griese
a09940ef6a Added FlexCollection::sort() method 2019-01-24 16:21:26 +02:00
Matias Griese
6d89108cc4 Merge remote-tracking branch 'origin/1.6' into 1.6 2019-01-23 21:24:37 +02:00
Matias Griese
bd01b07b4b Reverted Route::__toString() behavior and added deprecated message for proper use (part 2) 2019-01-23 21:24:31 +02:00
Andy Miller
4e31a114ef Use new toString() 2019-01-23 12:16:48 -07:00
Matias Griese
18d53079dd Reverted Route::__toString() behavior and added deprecated message for proper use 2019-01-23 20:54:10 +02:00
Matias Griese
57de7cc03d Missing docblock parameter 2019-01-23 15:13:52 +02:00
Matias Griese
2d7eeb611d Added missing Flex::getObject() and Flex::getCollection() parameters 2019-01-23 13:02:33 +02:00
Matias Griese
e6b6e218f8 Fixed MediaTrait::getMedia() to return refreshed Media object after calling MediaTrait::clearMediaCache() 2019-01-23 11:20:44 +02:00
Matias Griese
243055289b Add FormFlash::clearFiles() method 2019-01-23 10:59:04 +02:00
Matias Griese
52c7d8dfb7 Fixed Grav\Framework\Route::__toString() returning relative URL, not relative route 2019-01-23 10:55:32 +02:00
Andy Miller
5b0e2e401e vendor udpates 2019-01-22 09:40:09 -07:00
Matias Griese
8381261b7c Do not cache FlexObject::authorize() 2019-01-22 13:33:44 +02:00
Matias Griese
2ada99d314 Make $user->update() to behave like $user->merge() 2019-01-21 21:00:58 +02:00
Matias Griese
bd27d6fe8c Fixed backwards incompatibility: Form::getData($name) 2019-01-18 14:12:28 +02:00
Matias Griese
b94631533d User: Ignore authenticated and authorized on object creation 2019-01-18 14:11:33 +02:00
Matias Griese
fb9baaed8a Make sure that authenticated and authorized will not be saved into the file 2019-01-18 13:33:17 +02:00
Matias Griese
254fe990ba Improved Grav\Common\User class; added $user->update() method 2019-01-18 12:20:57 +02:00
Matias Griese
0afe9d4f93 Undo comment out, code works now 2019-01-17 15:26:22 +02:00
Matias Griese
ccca3170d3 Fixed HTTP codes for non-standard response codes becoming 500 server errors 2019-01-17 12:08:19 +02:00
Andy Miller
00b1f12dda Updated changelog 2019-01-16 17:05:48 -07:00
Andy Miller
9ca411aa24 Fixed issue with redirect_trailing_slash losing query string #2269 2019-01-16 17:05:42 -07:00
Andy Miller
e976aa0f5f Fixed some issues with Medium querystring + timestamps 2019-01-16 14:21:56 -07:00
Matias Griese
02c979bdf6 Fixed FlexForm::getValue() call to return the correct data 2019-01-16 21:53:44 +02:00
Matias Griese
88625c6362 For now, do not save form data in flex submit 2019-01-16 18:09:04 +02:00
Matias Griese
76ff68a594 Added file modification timestamps for media images 2019-01-16 17:59:29 +02:00
Matias Griese
d27a2171ea Route: Added support for file extension (part 2) 2019-01-16 15:10:00 +02:00
Matias Griese
075498d03b Route: Added support for file extension 2019-01-16 12:04:26 +02:00
Matias Griese
f04ae315e4 Filter unknown array fields as arrays, not text 2019-01-16 10:45:19 +02:00
Matias Griese
2e277f3cb3 Make Form::getFlash() public 2019-01-16 10:10:53 +02:00
Andy Miller
29098aa8db Updated changelog 2019-01-15 16:32:00 -07:00
Andy Miller
659cd1bb92 return $this from init() 2019-01-15 16:31:54 -07:00
Andy Miller
3bf7c6943a Added some Util array functions 2019-01-15 16:31:43 -07:00
Andy Miller
189e29b5c6 Add FlexObject::getChanges() method 2019-01-15 16:29:47 -07:00
Matias Griese
0ede252fa3 Fix undefined variable id on FormTrait::getFlash() 2019-01-15 20:18:46 +02:00
Matias Griese
d7d69b2be8 Added support for storing form state by user or session 2019-01-15 12:31:03 +02:00
Matias Griese
d79729f596 Fixed a timer bug in Tasks Processor 2019-01-15 11:31:33 +02:00
Matias Griese
988d4ab047 Fix a bug in FormTrait::validate() 2019-01-15 11:31:08 +02:00
Andy Miller
437866dfcd Merge branch 'develop' into 1.6 2019-01-14 19:00:21 -07:00
Rotzbua
c40dcf020c add do not track header detection (#2334) 2019-01-14 17:49:46 -07:00
Andy Miller
e520bd0eb8 Fixed environment issue #2284 2019-01-14 13:55:29 -07:00
Matias Griese
3a9e57e228 Added form preview support for FlexObject, including a way to render newly uploaded files before saving them 2019-01-14 18:44:37 +02:00
Matias Griese
22ed1286e8 Added support to add extra files to Media object 2019-01-14 18:41:05 +02:00
Matias Griese
1a37c54316 Fixed FlexForm::updateObject() to update array values when they are empty in the form 2019-01-14 14:15:22 +02:00
Andy Miller
b6328944a3 Move processMarkdown() method from TwigExtension to more general Utils class 2019-01-13 16:20:19 -07:00
Matias Griese
751d1da704 Added unset type/filter to the validation 2019-01-11 13:03:04 +02:00
Matias Griese
5cf4eea09e Remove debug backtrace and die when session fails to start 2019-01-11 13:02:37 +02:00
Matias Griese
f0cf4ed8ff Regression: Fix serialize issues with forms 2019-01-11 00:28:57 +02:00
Matias Griese
fa61ed17b1 Added check for bad JSON back (tracked down and fixed the issue in form plugin) 2019-01-10 19:59:11 +02:00
Raphaël Droz
f1363877d8 preserve accents in fields containing Twig expr. using unicode (#2279)
When a fields contain accentuated characters, reduce the risk of messing with it by passing unicode characters unescaped.
Twig will deal with them. And fewer backslash-escaping problems will arise.
2019-01-09 13:05:32 -07:00
Basile Trujillo [L0gIn]
e8825beae5 Added support for AWS Cloudfront forwarded scheme header (#2297)
AWS Cloudfront does not provide HTTP_X_FORWARDED_PROTO header but provide a HTTP_CLOUDFRONT_FORWARDED_PROTO header instead
2019-01-09 13:04:32 -07:00
Matias Griese
830a83e3d1 Symfony library update 2019-01-09 09:28:33 +02:00
Matias Griese
7d249c61c2 Added check for bad JSON back (tracked down and fixed the issue in form plugin) 2019-01-08 19:35:51 +02:00
Matias Griese
a224c8b348 FlexForm: Maintain form state on page reloads 2019-01-08 14:32:18 +02:00
Matias Griese
c04208d5dd FlexForm: Fixed missing inputs after save, reset form after save 2019-01-08 13:52:13 +02:00
ranitham
394dfad566 Small bugfix for responsive images (#2300)
* Replace spaces in image filename with %20 to avoid parse errors with the srcset attribute

* Update system/src/Grav/Common/Page/Medium/ImageMedium.php

Co-Authored-By: ranitham <ranitha.m@gmail.com>
2019-01-07 21:34:00 -07:00
Rotzbua
2c55fe01ac add return types for user/authentication (#2293) 2019-01-07 21:29:30 -07:00
Rotzbua
680bfef2c3 http to https (#2299) 2019-01-07 21:28:56 -07:00
Matias Griese
a23cbd0257 Added Blueprint::processForm() method to filter form inputs in Flex form 2018-12-21 12:37:08 +02:00
Matias Griese
f5b77e8082 Added onPageAction, onPageTask, onPageAction.{$action} and onPageTask.{$action} events 2018-12-20 14:08:40 +02:00
Matias Griese
10378ac5af FlexForm: Added support for custom(ized) blueprint layouts 2018-12-20 11:36:01 +02:00
Matias Griese
4a290e6194 Added Grav\Framework\Form\Interfaces\FormFactoryInterface 2018-12-19 22:44:31 +02:00
Matias Griese
c2c0fb242b Minor bugfix 2018-12-19 21:00:10 +02:00
Matias Griese
9b37e50492 Added Page::forms() method to get normalized list of all forms defined in the page 2018-12-19 20:57:47 +02:00
Matias Griese
6c6e8d2605 Added Flex::getObject() for getting flex object directly 2018-12-19 17:40:09 +02:00
Matias Griese
5a6e6dceda Define FormInterface 2018-12-19 13:35:02 +02:00
Andy Miller
e8631da9f3 parepare for beta release 2018-12-14 15:13:09 -07:00
Andy Miller
5d57713f95 Merge branch 'develop' into 1.6
# Conflicts:
#	system/defines.php
2018-12-14 15:07:51 -07:00
Andy Miller
28bd4027cd Merge branch 'release/1.5.6' 2018-12-14 15:07:22 -07:00
Andy Miller
108541e0d0 Merge tag '1.5.6' into develop
Release v1.5.6
2018-12-14 15:07:22 -07:00
Andy Miller
54a177279f prepare for release 2018-12-14 15:07:12 -07:00
Andy Miller
b3e9974e95 updated changelog 2018-12-14 15:06:39 -07:00
Matias Griese
2ad66102d2 FlexMediaTrait: Cropping existing image without original fails to move the original image to safe place 2018-12-13 23:14:31 +02:00
Matias Griese
6828114e86 Merge remote-tracking branch 'origin/1.6' into 1.6 2018-12-13 22:21:18 +02:00
Matias Griese
f53b43de14 FormFlash: Added support for storing form data 2018-12-13 22:21:10 +02:00
Andy Miller
d53dbdf5ba Updated vendor libs 2018-12-13 13:06:34 -07:00
Matias Griese
8ba00f5967 Flex: Fixed cropping issues on edit 2018-12-13 18:21:39 +02:00
Matias Griese
56c7b8ca5f Flex: Fixed uploading images when creating a new object 2018-12-13 13:49:04 +02:00
Matias Griese
d6115007ab Flex: Clear updated after saving the changes to prevent it being called twice 2018-12-13 11:36:59 +02:00
Matias Griese
ba53d876bc FlexMediaTrait::deleteMediaFile() should check if folder exists 2018-12-13 10:55:45 +02:00
Matias Griese
2d593995ee Flex: Added support to automatically update object media on save 2018-12-13 10:42:23 +02:00
Matias Griese
3808776ddb Merge remote-tracking branch 'origin/1.6' into 1.6 2018-12-12 23:37:58 +02:00
Matias Griese
9a118d0a71 Fixed upload of original images 2018-12-12 23:37:50 +02:00
Andy Miller
684d6d3389 This can get used externally too… 2018-12-12 10:14:28 -07:00
Matias Griese
89a0e960e2 Improve file upload logic on flex objects 2018-12-12 16:14:55 +02:00
Matias Griese
1b21e01938 FlexForm: Disable handling of file uploads on form submit (for now) 2018-12-12 14:09:24 +02:00
Matias Griese
3b692a27b4 Improved Flex save/delete 2018-12-12 12:45:06 +02:00
Matias Griese
3c83f379ee Added onFlexObjectSave and onFlexObjectDelete events 2018-12-12 11:52:50 +02:00
Matias Griese
0c344df07a Fixed Flex indexes with flex_key 2018-12-12 10:38:09 +02:00
Matias Griese
2a20959660 Fixed session throwing error in CLI if initialized 2018-12-12 09:39:13 +02:00
Matias Griese
94a843429d Added {% render object layout: 'default' with { variable: true } %} for Flex objects and collections 2018-12-12 00:02:38 +02:00
Matias Griese
34e6b6652a Make FlexForm more flexible for different tasks 2018-12-11 20:25:31 +02:00
Matias Griese
1ba785f28e ContentBlock: Fixed nested caching detection 2018-12-11 16:08:58 +02:00
Matias Griese
bac24cf520 Flex: Improve FlexAuthorizeTrait 2018-12-11 11:54:59 +02:00
Matias Griese
40b7d53349 Merge remote-tracking branch 'origin/1.6' into 1.6 2018-12-10 15:30:19 +02:00
Matias Griese
96d44b4322 Flex: Allow disabling collection/object caching from template 2018-12-10 15:30:09 +02:00
Andy Miller
bf127fb0bd fix for ini_set 2018-12-07 13:04:35 -07:00
Matias Griese
501bc0133f FormFlash: Allow no field for file uploads 2018-12-07 21:35:28 +02:00
Matias Griese
787bf8beeb FlexForm: Implemented delayed flash uploads 2018-12-07 20:41:37 +02:00
Matias Griese
257396aa06 FormFlash: Added support for removing existing files (null instead of object) 2018-12-05 14:45:29 +02:00
Matias Griese
7eb469f0ae Fixed bug in FlexForm::getFlash() 2018-12-05 12:09:56 +02:00
Matias Griese
156e544ab9 Change FormFlash constructor to be more generic, add method to clear session 2018-12-05 09:37:56 +02:00
Matias Griese
b38a143c66 Added new $grav['filesystem'] service using an instance of the new Filesystem object 2018-12-04 15:30:37 +02:00
Matias Griese
cd21d65400 FlexForm: minor improvement to making method overriding more of copy/paste 2018-12-04 15:03:29 +02:00
Matias Griese
b19cb1215b Fix tests 2018-12-03 13:55:32 +02:00
Matias Griese
48acad3e47 Improve Filesystem class 2018-12-03 13:54:40 +02:00
Matias Griese
009db01ab9 Changelog update 2018-12-03 11:37:51 +02:00
Matias Griese
7d8fff9571 Minor fix, oops 2018-12-03 11:36:42 +02:00
Matias Griese
9d048f5f36 Merge branch 'feature/1.6-cleanup' into 1.6 2018-12-03 11:29:20 +02:00
Matias Griese
cb4ea86310 Improved Grav\Framework\File classes to use better type hints and the new Filesystem class 2018-12-03 11:26:55 +02:00
Matias Griese
2b099c2ed5 Added Grav\Framework\Filesystem\Filesystem class with methods to manipulate stream URLs 2018-12-03 11:11:00 +02:00
Matias Griese
6afb55cc30 Improved Grav\Framework\File\Formatter classes to have abstract parent class and some useful methods 2018-12-03 08:00:14 +02:00
Matias Griese
0937e0ff91 Added return type DI\Container::has(): bool 2018-12-03 07:40:59 +02:00
Matias Griese
d602cb6e9e Fixed Object serialization breaking if overriding jsonSerialize() method 2018-12-03 07:34:59 +02:00
Matias Griese
e02fa1a4e7 Some code cleanup 2018-12-03 07:28:50 +02:00
Andy Miller
9e1661eb8c commited composer lock file 2018-12-02 21:31:53 -07:00
Chris Jung
00c6313102 Update to Symfony 4.2 (#2280) 2018-12-02 21:29:53 -07:00
Matias Griese
f01792ae81 Added FormFlash and FormFlashFile classes, allow custom FlexForm class, improvements 2018-12-01 22:09:44 +02:00
Matias Griese
bc18b9408b Added onAction.{$action} event 2018-12-01 10:04:15 +02:00
Matias Griese
fa948c04ab Typo in changelog 2018-11-30 23:05:51 +02:00
Matias Griese
8fdd34c245 Added support for task:action (like task but works without nonce) 2018-11-30 23:04:34 +02:00
Matias Griese
cd5bda3f9e Improve debug messages (routed page, flex view) 2018-11-30 20:31:32 +02:00
Matias Griese
e14129d278 Implemented object save in FlexForm::submit() 2018-11-30 15:16:22 +02:00
Matias Griese
decb19b92e Further improve FlexObject::update() 2018-11-30 15:06:27 +02:00
Matias Griese
eb770e95d5 Fixed FlexObject::update() call with partial object update 2018-11-30 14:30:50 +02:00
Matias Griese
77f035eb2d FlexForm: Allow custom nonce, fix fatal error on validation failure 2018-11-30 13:15:20 +02:00
Matias Griese
db2738978e Sanitize $grav['task']` 2018-11-30 13:14:10 +02:00
Matias Griese
180f3c2eca FlexDirectory::getObject() should return any existing object 2018-11-30 13:13:13 +02:00
Matias Griese
e84fbc425f FlexMediaTrait: Fix media meta file 2018-11-29 23:19:28 +02:00
Matias Griese
c5e2ed9f22 FlexForm: Added methods for file upload/delete task routes 2018-11-29 22:04:57 +02:00
Matias Griese
a92f0898d8 Fixed Medium::relativePath() for streams 2018-11-29 21:12:37 +02:00
Matias Griese
d968901d98 Flex: store metadata on file uploads (if available) 2018-11-29 19:27:11 +02:00
Matias Griese
c38b761871 Improve Flex index caching by sharing the same cached item even if using a different key 2018-11-29 12:43:32 +02:00
Matias Griese
b49741f8aa Fixed Flex index caching if using non-standard key 2018-11-29 11:51:27 +02:00
Matias Griese
6866c2a39a Merge remote-tracking branch 'origin/1.6' into 1.6 2018-11-29 10:25:56 +02:00
Matias Griese
9598cd13fe Added user-data:// which is a writable stream (user://data is not and should be avoided) 2018-11-29 10:25:48 +02:00
Andy Miller
49c8fef5f5 Made inflector static so it can be used quickly 2018-11-28 21:58:31 -07:00
Matias Griese
13341f8aa8 Tasks: Pass path to the controller as well 2018-11-28 14:55:03 +02:00
Matias Griese
251cb3f9fa FlexForm: Implement HTML id support 2018-11-28 14:20:50 +02:00
Matias Griese
51767a8f36 Improve FlexMediaTrait 2018-11-28 11:36:07 +02:00
Andy Miller
c653fe6e4a multibyte and case insensitivity support in Util string functions 2018-11-27 16:39:30 -07:00
Matias Griese
70688f3e00 Fixed cache test in Flex 2018-11-27 22:22:13 +02:00
Matias Griese
e9c52046fa Fixed timestamp and serialization 2018-11-27 11:39:04 +02:00
Matias Griese
a01b94f80b Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
2018-11-27 10:17:53 +02:00
Matias Griese
708c79cef8 Improved user serialization to use less memory in the session 2018-11-27 10:15:55 +02:00
Matias Griese
f1ce69d4bf Fixed some minor issues in Flex 2018-11-26 14:17:13 +02:00
Matias Griese
5bd417aa39 Minor Flex improvements 2018-11-26 09:49:06 +02:00
Andy Miller
2bf448c587 Merge branch 'develop' into 1.6 2018-11-25 19:08:01 -07:00
Stephan Diehl
b6c582ad3a Update InitializeProcessor.php (#2268)
fix redirect_trailing_slash in a multi language page
2018-11-23 23:01:47 -07:00
Matias Griese
c35c285580 Fixed a bug in flex index caching 2018-11-21 09:45:59 +02:00
Matias Griese
890a61358a Code cleanup on CLI 2018-11-20 20:40:13 +02:00
Matias Griese
7de66cdc53 Improve debugger in CLI 2018-11-20 13:17:19 +02:00
Matias Griese
b353ec12e1 Flex: Fixes for indexing with different keys 2018-11-20 12:01:32 +02:00
Matias Griese
48489ae291 Composer update 2018-11-19 23:26:11 +02:00
Matias Griese
85a3d98d4c Flex: Fixed object keys if using non-standard keys in index 2018-11-19 15:07:36 +02:00
Matias Griese
c9eea7e019 Flex: Fixed some issues with new orderBy() logic 2018-11-19 13:43:02 +02:00
Matias Griese
da483d63f6 Flex: Fixed a bug if there's no entries in the index 2018-11-19 12:43:32 +02:00
Matias Griese
3f89b39b60 Flex: Added support for custom index fields when ordering (major speed up) 2018-11-19 11:11:45 +02:00
Matias Griese
e89b5ce870 Flex: Added support for defining used key field when getting index/collection/build 2018-11-19 10:09:07 +02:00
Matias Griese
88f6d02c03 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	README.md
2018-11-19 09:25:23 +02:00
Matias Griese
cc78fcf31c Some bug fixes in Flex collection / index 2018-11-17 00:34:53 +02:00
Matias Griese
37e880b64a Allow switching to custom keys on FlexIndex 2018-11-17 00:06:46 +02:00
Matias Griese
75b2307d30 Added initial support for Flex keys (unique identifier) 2018-11-16 15:13:12 +02:00
Matias Griese
9e8f700119 Improved Custom FlexIndex logic (breaking old API) 2018-11-16 12:34:17 +02:00
Matias Griese
4bcba0e4f9 Flex: Added support for custom object index classes 2018-11-16 10:26:09 +02:00
Andy Miller
11b661cad5 new Discord reference 2018-11-15 16:30:44 -07:00
Andy Miller
5e1980d770 New Discord reference 2018-11-15 16:30:21 -07:00
Andy Miller
5e7eb6b2f4 Better discord badge 2018-11-15 16:29:08 -07:00
Andy Miller
994a1f89cd Better Badge 2018-11-15 16:28:15 -07:00
Andy Miller
4daa07fd14 Discord Chat button 2018-11-15 16:21:51 -07:00
Andy Miller
d39165f506 discord only 2018-11-15 16:21:03 -07:00
Matias Griese
468db9566b Fixed missing $collection->getStorageKeys() 2018-11-15 22:37:47 +02:00
Matias Griese
33309105d3 Fixed clearing cache having no effect on Doctrine cache 2018-11-15 13:25:53 +02:00
Matias Griese
8cfe6e772d Debug mode: Include HTML comments around the output when rendering flex objects 2018-11-15 13:23:40 +02:00
Matias Griese
bad6e32e18 ObjectIndex: Remove unneeded method which was moved to base class 2018-11-15 12:12:38 +02:00
Matias Griese
02d48693dd Added select() and unselect() methods to CollectionInterface and its base classes
Added `orderBy()` and `limit()` methods to `ObjectCollectionInterface` and its base classes
2018-11-15 10:01:09 +02:00
Andy Miller
7975ec8d09 Merge branch 'develop' into 1.6 2018-11-14 11:21:14 -07:00
Matias Griese
de898b610d Flex: Fixed a bug in new findPrefixedKeysFromFilesystem() method 2018-11-14 16:31:06 +02:00
Matias Griese
0743816822 Flex: Improved object indexing 2018-11-14 16:18:59 +02:00
Matias Griese
bb4958115b Added support for prefixed FolderStorage 2018-11-14 10:59:22 +02:00
Matias Griese
b64404a924 Fixed duplicate key in blueprint YAML 2018-11-14 09:41:03 +02:00
Djamil Legato
9a8b47872e Updated opencollective backers/sponsors list 2018-11-13 23:05:18 -08:00
Andy Miller
76070ddd43 Better handling of append_url_extension inside of Page::templateFormat() #2264 2018-11-13 18:04:53 -07:00
Andy Miller
22066e11b3 more lang stuff 2018-11-13 14:53:39 -07:00
Andy Miller
ef157c7d2b Fixed a broken lang string #2261 2018-11-13 14:08:37 -07:00
Andy Miller
e42e9fdd54 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-11-13 11:29:36 -07:00
Andy Miller
e2594dc72c symlink .editorconfig when using sandbox 2018-11-13 11:29:31 -07:00
Andy Miller
f4e2153291 Updated clean command with vendor udpates 2018-11-13 11:29:16 -07:00
Matias Griese
44db0245a7 Improve new flex object saving and storage 2018-11-13 20:13:32 +02:00
Matias Griese
ff5aa8a0ac Improve Flex storage 2018-11-13 18:00:18 +02:00
Matias Griese
8c0dd6a8d1 Added missing changelog entry from 1.5.5 2018-11-13 08:35:17 +02:00
Andy Miller
1ba21afd30 prepare for release 2018-11-12 15:59:10 -07:00
Andy Miller
e73537f488 Merge branch 'develop' into 1.6
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2018-11-12 15:57:47 -07:00
Andy Miller
9405418572 Merge branch 'release/1.5.5' 2018-11-12 15:56:13 -07:00
Andy Miller
59ccd662c7 Merge tag '1.5.5' into develop
Release v1.5.5
2018-11-12 15:56:13 -07:00
Andy Miller
377751416b Prepare for release 2018-11-12 15:56:04 -07:00
Andy Miller
116c279f01 update changelog 2018-11-12 15:55:29 -07:00
Matias Griese
1d8ef45e9c Added Plugin::isCli() to determine if plugin is running under CLI 2018-11-12 13:48:20 +02:00
Matias Griese
380b3be928 Added $grav->setup() to simplify CLI and custom access points 2018-11-12 12:21:44 +02:00
Matias Griese
c151043c70 Code cleanup in Language class 2018-11-12 11:39:15 +02:00
Andy Miller
64e13c5f87 Updated changelog 2018-11-11 21:37:08 -07:00
Andy Miller
b55d29dfb7 Merge branch 'develop' into 1.6 2018-11-11 21:23:36 -07:00
Aaron Dalton
bf86b5a924 Propagate error code if between 400 and 600 for production sites (errors:display = false or -1) (#2181) 2018-11-11 21:22:47 -07:00
Andy Miller
9f2da67d48 Merge branch 'develop' into 1.6
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2018-11-11 21:20:07 -07:00
Emil Hesslow
d0b34d114d Register theme prefixes as namespaces in twig (#2210) 2018-11-11 21:18:57 -07:00
Andy Miller
d0c9e56aeb Support negotiated language types set via the Request Accept-Language: header 2018-11-11 18:51:20 -07:00
Andy Miller
74cd3ac1e0 Supporting negotiated content types 2018-11-11 18:27:12 -07:00
Andy Miller
ecbc401584 Revert "Set template type based on request headers content-type if set"
This reverts commit 005f626b88.

# Conflicts:
#	CHANGELOG.md
#	system/src/Grav/Common/Page/Page.php
2018-11-11 15:01:44 -07:00
Andy Miller
0c81568df6 Updated changelog 2018-11-11 14:58:36 -07:00
Makara Sok
b9dc2baef1 Remove hardcoded 302 when redirecting trailing slash (#2155)
When `system.pages.redirect_trailing_slash` is enabled, it's always a 302 even though `redirect_default_code` is set to something else. 

By removing it, it works as intended.
2018-11-09 22:30:35 -07:00
Andy Miller
9b43f20159 Use append_url_extension from page header to set template format #2604 2018-11-09 22:28:44 -07:00
Andy Miller
82d3d5edda Fixed Uri::hasStandardPort() to support reverse proxy configurations #1786 2018-11-09 17:22:34 -07:00
Andy Miller
005f626b88 Set template type based on request headers content-type if set 2018-11-09 17:10:03 -07:00
Andy Miller
63005a8280 minor monolog update 2018-11-08 10:40:22 -07:00
Matias Griese
2943294d08 Added CsvFormatter and CvsFile classes 2018-11-08 12:12:37 +02:00
Andy Miller
ed03b02e52 updated changelog 2018-11-06 08:54:48 -07:00
Andy Miller
f43f992125 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-11-06 08:52:51 -07:00
Andy Miller
0b646875d0 cleaned up service id map 2018-11-06 08:52:45 -07:00
Matias Griese
b1b4469d18 Flex form: allow custom form views 2018-11-06 13:54:55 +02:00
Andy Miller
eea70d380c Set default config to testing 2018-11-05 16:10:54 -07:00
Andy Miller
a32880a84d Prepare for 1.6.0-beta.5 release 2018-11-05 15:45:19 -07:00
Andy Miller
72cc5b9d07 Merge tag '1.5.4' into develop
Release v1.5.4
2018-11-05 15:42:04 -07:00
Andy Miller
b9c28c5a7c Merge branch 'release/1.5.4' 2018-11-05 15:42:03 -07:00
Andy Miller
c56d7ac793 prepare for release 2018-11-05 15:41:54 -07:00
Andy Miller
000bac8cfc Updated changelog 2018-11-05 15:41:19 -07:00
Andy Miller
3c2a8510f9 Added new uniqueness option to optionally use security.salt 2018-11-04 15:50:03 -07:00
Andy Miller
64b0fd7e86 minor symfony library version updates 2018-11-03 18:53:43 -06:00
Andy Miller
36432c00ac Merge branch 'develop' into 1.6 2018-11-03 18:52:18 -06:00
Scott Hamper
e7d660149e Fixed markdown parsing for telephone links (#2235)
Telephone links use the `+` character to specify a country code, but Grav was replacing the `+` with a space character.
2018-11-03 14:57:02 -06:00
John Hamrick
829638c143 Update default.md (#2245)
Making documentation consistent between sources:  Issue Typo! #650

In (grav-learn/pages/01.basics/04.basic-tutorial/docs.md) the text under the heading Adding a New Page is 02.mypage 
In (grav/user/pages/01.home/default.md) the text under the heading Adding a New Page is 03.mypage
2018-11-03 14:56:21 -06:00
Andy Miller
601990d59b Set session name based on security.salt rather than GRAV_ROOT #2242 2018-11-03 14:36:51 -06:00
Andy Miller
3469974861 Smarter security.salt checking now we use security.yaml for other options 2018-11-03 14:28:47 -06:00
Andy Miller
167ea6419b Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-11-03 14:09:06 -06:00
Andy Miller
472b575e20 Added option to configure list of xss_invalid_protocols in Security config #2250 2018-11-03 14:09:00 -06:00
Matias Griese
b622ff7f14 Flex form: added support for uniqueid 2018-11-02 21:01:29 +02:00
Djamil Legato
d70d0b889e Fixed count of commands list for bin/plugin 2018-11-01 17:18:48 -07:00
Matias Griese
a84b791ac7 Minor fix for AbstractIndexCollection 2018-11-01 11:45:50 +02:00
Andy Miller
6332e7f518 Updated changelog 2018-10-30 17:45:53 -06:00
Andy Miller
849d3184b3 Added Video::preload() that was missing 2018-10-30 17:45:23 -06:00
Andy Miller
4344148bfa added link 2018-10-30 09:26:35 -06:00
Andy Miller
251971485b Added discord badge 2018-10-30 09:24:33 -06:00
Andy Miller
fa3ce13a87 minor dev vendor updates 2018-10-30 09:06:57 -06:00
Andy Miller
bc70d50ff0 Updated icon in debugger 2018-10-29 15:27:31 -06:00
Matias Griese
64a0dd52e8 Changelog update 2018-10-29 20:28:26 +02:00
Matias Griese
5d1c65c936 Minor collection cleanup 2018-10-29 20:13:34 +02:00
Matias Griese
3537770823 Added Route::withAddedPath() method 2018-10-29 12:22:43 +02:00
Matias Griese
b1090d4286 Added NotHandledException class 2018-10-29 09:55:36 +02:00
Matias Griese
5b097fc038 Merge remote-tracking branch 'origin/feature/1.6-controller' into feature/1.6-controller 2018-10-29 08:27:36 +02:00
Matias Griese
092ecd1417 Make Data class to extend JsonSerializable 2018-10-29 08:27:27 +02:00
Andy Miller
ff54dc82ff Merge branch '1.6' into feature/1.6-controller 2018-10-26 21:15:59 -06:00
Andy Miller
ed105b42a2 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-10-26 17:40:57 -06:00
Andy Miller
9e2a95db73 Minor code tweaks 2018-10-26 17:40:51 -06:00
Matias Griese
acf0854e6a Changelog update 2018-10-26 09:12:58 +03:00
Matias Griese
809c4a1bcf Merge remote-tracking branch 'origin/feature/1.6-controller' into feature/1.6-controller 2018-10-26 09:01:59 +03:00
Matias Griese
42887ca282 Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-controller 2018-10-26 09:01:39 +03:00
Matias Griese
46752e9b10 Merge remote-tracking branch 'origin/1.6' into 1.6 2018-10-26 08:58:11 +03:00
Matias Griese
6be1127cf0 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
2018-10-26 08:58:01 +03:00
Matias Griese
d8a627898e Fixed fatal error if calling $session->invalidate() when there's no active session 2018-10-25 16:29:53 +03:00
Andy Miller
1f87c5069b prepare for release 2018-10-24 16:03:40 -06:00
Andy Miller
222f05fe81 version update 2018-10-24 15:10:20 -06:00
Andy Miller
023221bfab added GRAV. prefix to core language strings 2018-10-24 14:41:54 -06:00
Matias Griese
b4e40a669d Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
#	composer.lock
#	system/defines.php
2018-10-24 13:23:51 +03:00
Andy Miller
f812236180 whoops update 2018-10-23 12:37:01 -06:00
Matias Griese
b8c9f0cc8c Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-controller
# Conflicts:
#	CHANGELOG.md
2018-10-23 21:10:28 +03:00
Matias Griese
072c7929f7 Fixed Folder::doDelete($folder, false) removing symlink when it should not 2018-10-23 20:16:12 +03:00
Matias Griese
4811fa7d49 Allow new task controllers to run 2018-10-23 18:04:21 +03:00
Andy Miller
3d786f78d5 Added new system config option for languages.pages_fallback_only 2018-10-23 06:56:06 -06:00
Andy Miller
0bf62ed39b added pages.hide_empty_folders config option 2018-10-23 06:23:10 -06:00
Andy Miller
a9196c3268 Some lang improvements 2018-10-22 18:11:26 -06:00
Matias Griese
699c72841c Composer update 2018-10-22 13:54:31 +03:00
Matias Griese
9c4a80a25f Changelog update 2018-10-22 11:32:07 +03:00
Matias Griese
beb1b41317 Added Grav\Framework\DI\Container class 2018-10-22 11:27:30 +03:00
Matias Griese
bdc3f41ac2 Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-controller
# Conflicts:
#	CHANGELOG.md
2018-10-22 10:47:59 +03:00
Matias Griese
fc0dfbe8b4 Added request processor 2018-10-22 10:46:37 +03:00
Andy Miller
8590f4fbf5 Use login provider User avatar if set 2018-10-19 06:26:28 -06:00
Matias Griese
f9cc86a6db Changelog update 2018-10-17 15:07:03 +03:00
Matias Griese
dc263c12e9 Updated Grav Processor classes to implement PSR-15 2018-10-17 15:01:52 +03:00
Matias Griese
d6c17132df Added PSR-7 and PSR-15 classes 2018-10-17 14:57:45 +03:00
Matias Griese
3742be10bc Debugger optimizations 2018-10-17 14:51:15 +03:00
MattAppleton
a3caa13c23 fix .webm typo (#2220)
Media type should be 'video' not file!
2018-10-16 20:18:32 -06:00
Andy Miller
27aa5e8e15 vendor updates 2018-10-16 19:24:36 -06:00
Matias Griese
83211acaae Merge branch '1.6' of https://github.com/getgrav/grav into feature/1.6-controller 2018-10-16 13:17:59 +03:00
Matias Griese
eb97964a00 Debugger optimizations 2018-10-16 13:12:26 +03:00
Matias Griese
f43ab0ed59 Added apcu autoloader optimization 2018-10-16 13:02:32 +03:00
Matias Griese
df5f7f4890 Remove old assets class 2018-10-16 13:00:16 +03:00
Andy Miller
08f07e663e Prepare for release 2018-10-15 14:39:40 -06:00
Matias Griese
cc61fb5d0f BlueprintSchema: Added methods to get the type defaults 2018-10-15 13:03:10 +03:00
Matias Griese
049f84a52a Optimize Grav Services stage for speed 2018-10-12 13:57:11 +03:00
Matias Griese
776d1419c1 Built-in PHP Webserver: log requests before handling them 2018-10-12 12:13:59 +03:00
Matias Griese
d848dcde5d Call onFatalException event also on internal PHP errors 2018-10-12 12:06:10 +03:00
Ole Vik
4ff0d34aa2 Fallback for never run and Windows (#2202) 2018-10-11 21:44:07 -06:00
Andy Miller
c6f6677d6e Prepare for release 2018-10-09 11:40:41 -06:00
Andy Miller
9944486c17 Merge branch 'release/1.5.3' 2018-10-08 17:41:28 -06:00
Andy Miller
da5c9e415f Merge tag '1.5.3' into develop
Release v1.5.3
2018-10-08 17:41:28 -06:00
Andy Miller
7b5a1b2c14 Prepare for release 2018-10-08 17:41:18 -06:00
Andy Miller
235a5cc765 vendor updates 2018-10-08 17:33:49 -06:00
Andy Miller
b96e264cc7 Fixed pipeline + remote url rewrites #2216 2018-10-08 13:56:46 -06:00
Andy Miller
1d6cdd45eb minor symfony updates 2018-10-07 21:23:03 -06:00
Andy Miller
0204906454 Improved usability of System configuration blueprint with side-tabs 2018-10-07 16:51:42 -06:00
Andy Miller
a7b184abdb Setup is now in the template… 2018-10-07 15:46:26 -06:00
Andy Miller
fff9c657d4 Support route/path output 2018-10-06 17:52:46 -06:00
Andy Miller
6070bfc46e updated changelog 2018-10-06 16:37:52 -06:00
Andy Miller
073d601b67 Updated changelog 2018-10-06 16:37:11 -06:00
Andy Miller
ad1bbba0b3 Added configurable dangerous upload extensions 2018-10-06 16:35:54 -06:00
Andy Miller
6b46c288a6 Added configurable dangerous file upload extensions 2018-10-06 16:35:15 -06:00
Andy Miller
8dd352c5c4 typo 2018-10-04 21:20:25 -06:00
Matias Griese
8fe3f0c35f FlexMediaTrait: Added checks for bad filenames 2018-10-04 14:53:44 +03:00
Matias Griese
16edb93efb Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
2018-10-04 14:45:33 +03:00
Matias Griese
b6b5e329aa Added Utils::getMimeByFilename(), Utils::getMimeByLocalFile() and Utils::checkFilename() methods 2018-10-04 14:44:04 +03:00
Andy Miller
6e5b173861 updated changelog 2018-10-03 13:50:39 -06:00
Matias Griese
6010b8e1b4 Flex: Added support for custom media tasks 2018-10-03 14:21:35 +03:00
Matias Griese
8d0d26ed9b Update script and style twig tags to use the new Asset classes 2018-10-03 11:31:36 +03:00
Matias Griese
65bb683b4a Merge remote-tracking branch 'origin/1.6' into 1.6
# Conflicts:
#	CHANGELOG.md
2018-10-03 10:54:01 +03:00
Matias Griese
75e8a19363 Regression: Asset methods with default legacy attributes were not working 2018-10-03 10:52:08 +03:00
Andy Miller
1a47b837f5 updated changelog 2018-10-02 17:58:11 -06:00
Andy Miller
50c211fc10 cleanup var names to avoid confusion 2018-10-02 17:57:05 -06:00
Andy Miller
4fb035c512 Don’t add missing assets 2018-10-02 17:56:34 -06:00
Djamil Legato
78992df894 Added support for syslog and syslog facility logging (default: 'file') 2018-10-02 12:36:34 -07:00
Djamil Legato
70c423563f Merge branch '1.6' of https://github.com/getgrav/grav into 1.6 2018-10-02 10:45:39 -07:00
Matias Griese
2503180e73 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	composer.lock
#	system/defines.php
2018-10-02 09:58:31 +03:00
Andy Miller
ed0cb0c8f2 set to testing mode 2018-10-01 21:32:49 -06:00
Djamil Legato
a6449cb8ba Splitted log handler and added support for syslog along side with stream (file) 2018-10-01 16:07:04 -07:00
Andy Miller
9e776df296 Prepare for rlease 2018-10-01 15:58:02 -06:00
Andy Miller
0e973dab07 Merge branch 'release/1.5.2' 2018-10-01 15:33:13 -06:00
Andy Miller
15e371564a Merge tag '1.5.2' into develop
Release v1.5.2
2018-10-01 15:33:13 -06:00
Andy Miller
f0e33dc242 prepare for release 2018-10-01 15:32:29 -06:00
Andy Miller
e67c3c1091 updated changelog 2018-10-01 15:31:39 -06:00
Andy Miller
d5ce0bd93c updated vendor libs 2018-10-01 15:26:44 -06:00
Andy Miller
70b6fb32c4 Revert "Splitted log handler and added support for syslog along side with stream (file)"
This reverts commit ecaeb32675.
2018-10-01 15:11:13 -06:00
Andy Miller
7148e9e136 Merge branch 'develop' into 1.6
# Conflicts:
#	system/src/Grav/Common/Security.php
#	system/src/Grav/Common/Twig/TwigExtension.php
2018-10-01 14:14:23 -06:00
Andy Miller
44dbcdf2b1 Added new XSS Twig function 2018-10-01 14:07:14 -06:00
Djamil Legato
ecaeb32675 Splitted log handler and added support for syslog along side with stream (file) 2018-10-01 11:43:31 -07:00
Andy Miller
3216442946 Merge branch 'develop' of github.com:getgrav/grav into develop 2018-10-01 12:34:14 -06:00
Andy Miller
9d4471b196 Security refactor 2018-10-01 12:34:09 -06:00
Andy Miller
e4f6f8bcf2 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-10-01 12:33:36 -06:00
Andy Miller
91d8a16db2 Refactored security 2018-10-01 12:33:26 -06:00
Matias Griese
920b0fcb2e Register all page types into blueprint://pages stream 2018-10-01 21:26:36 +03:00
Matias Griese
760c3e869f Merge branch 'develop' of https://github.com/getgrav/grav into 1.6 2018-10-01 21:07:28 +03:00
Matias Griese
c48107acd9 Merge remote-tracking branch 'origin/develop' into develop 2018-10-01 21:02:11 +03:00
Matias Griese
4671518409 Fixed missing slug in Page::init() 2018-10-01 21:02:04 +03:00
Andy Miller
41bf943f49 get raw content for all pages 2018-09-30 21:11:46 -06:00
Andy Miller
6488a0f2fb get rawcontent 2018-09-30 21:11:23 -06:00
Andy Miller
efe45f64bc Updated vendor 2018-09-30 19:13:51 -06:00
Andy Miller
d893dd55ff Merge branch 'develop' into 1.6
# Conflicts:
#	.gitignore
#	bin/grav
2018-09-30 18:39:46 -06:00
Andy Miller
f40c6a8617 Changelog updated 2018-09-30 18:37:42 -06:00
Andy Miller
fb98ca7b19 Added a new Security CLI command 2018-09-30 18:34:53 -06:00
Andy Miller
451ec49d9c refactor 2018-09-30 17:45:45 -06:00
Andy Miller
1709eb038c Fix for array method 2018-09-30 15:24:01 -06:00
Andy Miller
e69d6cefee ordering 2018-09-30 00:10:44 -06:00
Andy Miller
7abe01ed8c vertical style 2018-09-30 00:10:04 -06:00
Andy Miller
17a371d86a lang stuff 2018-09-29 21:37:01 -06:00
Andy Miller
5b787d56e6 Add default XSS security config 2018-09-29 21:24:58 -06:00
Andy Miller
33d98114ba XSS enhancements 2018-09-29 21:24:21 -06:00
Matias Griese
ce5f0b7785 Merge remote-tracking branch 'origin/1.6' into 1.6 2018-09-27 22:51:42 +03:00
Matias Griese
9204b87f3a Hide form fields in blueprints by using dynamic property like scope@: object or scope-ignore@: object, right now only Flex sets the scope 2018-09-27 22:51:35 +03:00
Andy Miller
4a83314095 Should fix more legacy issues 2018-09-27 12:27:07 -06:00
Andy Miller
99ea119483 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-09-27 09:52:56 -06:00
Andy Miller
c361f16fcf remove duplicate option 2018-09-27 09:52:51 -06:00
Matias Griese
b4d4fb900e Composer update 2018-09-27 09:43:08 +03:00
Matias Griese
0c3b34e89a Updated Asset classes for PHP 7.1, fixed a bug in \Closure name 2018-09-27 09:36:32 +03:00
Andy Miller
a549615257 Updated changelog 2018-09-26 16:55:36 -06:00
Andy Miller
c796474bce legacy fix 2018-09-26 16:52:10 -06:00
Andy Miller
26aea439c6 Assets Manager Refactoring (#2201)
* initial commit of refactored class structure

* more refactoring

* more progress

* more refactoring…

* Rendering stuff!

* Updates

* filter + sort

* inline stuff now added

* continued compatibility improvements + some test fixes

* more compatibility fixes

* CSS pipeline working!

* pipeline in the house

* Various fixes for testing bugs

* Fix timestamps

* CSS/JS Inline support

* Tidy

* Optimizations…

* fix for tests

* Added a couple of inline tests
2018-09-26 16:34:53 -06:00
Andy Miller
32cfb749af ignore testing templates 2018-09-25 18:15:51 -06:00
Andy Miller
b79cbf8975 Merge branch '1.6' of github.com:getgrav/grav into 1.6 2018-09-25 15:57:46 -06:00
Andy Miller
3ef154949d ignore testing template 2018-09-25 15:57:40 -06:00
Matias Griese
007b17a7ba Fixed partial save for Flex Objects 2018-09-25 11:16:31 +03:00
Matias Griese
8c64434069 Fixed updating empty array (no data, should be ignored) 2018-09-24 15:33:49 +03:00
Matias Griese
ff1d5bc965 Fix extra storageKey, timestamps fields stored into the Flex objects 2018-09-24 15:23:23 +03:00
Matias Griese
346b8683ac Fix extra authorize, forms fields stored into the Flex objects 2018-09-24 15:18:56 +03:00
Matias Griese
7a61b09a85 Added proper support for hiding form fields in blueprints by using dynamic property like security@: admin.foobar to any field 2018-09-24 11:25:51 +03:00
Andy Miller
53f5a6fa57 Updated changelog 2018-09-20 13:33:43 -06:00
Andy Miller
95172ce4c1 wip 2018-09-20 12:53:43 -06:00
Andy Miller
84ecdfee71 Updated changelog 2018-09-20 11:28:08 -06:00
Andy Miller
537c5f4ee8 Merge branch 'feature/cache-refactor' into 1.6 2018-09-20 11:25:35 -06:00
Andy Miller
68ee0f7580 changed text.. need to move to. lang file 2018-09-20 11:24:51 -06:00
Andy Miller
178193ab1a Added a deleteAll() method and also renamed CLI command 2018-09-20 11:07:39 -06:00
Matias Griese
e7ddae713f Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	composer.json
2018-09-20 11:03:02 +03:00
Matias Griese
bd2883d63f Merge branch '1.6' of https://github.com/getgrav/grav into 1.6 2018-09-20 09:43:57 +03:00
Andy Miller
12c3c6c472 tooltip work 2018-09-19 22:02:08 -06:00
Andy Miller
1c08fa2b1a typo 2018-09-19 17:04:44 -06:00
Andy Miller
24991dc17d Updated changelog 2018-09-19 16:57:38 -06:00
Andy Miller
9261f105e3 Squashed commit of the following:
commit 85194f77412fb25c1708d594435a87ded4ccdddc
Author: Andy Miller <rhuk@mac.com>
Date:   Tue Sep 11 16:13:04 2018 -0600

    cleanup

commit 38b35d57ebf3a74c5210487add1a023c93a1c45b
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Sep 10 21:24:12 2018 -0600

    Removed old ZipBackup class

commit 05da0b3eee8a3156776771e89604c89870aad8e2
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Sep 10 21:19:41 2018 -0600

    Fix for empty crontab message

commit a77955a598a6d8e1a4d34a8e61d54dea2ea3a38a
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Sep 10 14:33:33 2018 -0600

    Implemented purge

commit ead22829c0ffe1c08478833e96802d6a7b93da0f
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Sep 10 13:15:29 2018 -0600

    Remove double code logic

commit 44d37ad91017e401fbe58e05af7b9141e35128d4
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Sep 10 13:10:49 2018 -0600

    Optimized loading

commit e8b96d22cfd67f8226e53a54051aff2deb450e66
Author: Andy Miller <rhuk@mac.com>
Date:   Mon Sep 10 12:00:18 2018 -0600

    more progress for events

commit 32579228d3ed351ad883da85917a9b745721611b
Author: Andy Miller <rhuk@mac.com>
Date:   Sun Sep 9 21:55:17 2018 -0600

    validations

commit 39c0eee1c3bf64184bd30483ae629fee7d04f532
Author: Andy Miller <rhuk@mac.com>
Date:   Sun Sep 9 21:37:19 2018 -0600

    require stuff

commit 7a0cf861d45fc5da4a2acc877ee6518d717f0a53
Author: Andy Miller <rhuk@mac.com>
Date:   Sun Sep 9 18:07:38 2018 -0600

    added ability to turn off tense in nicetime

commit 09bffc6cac2123325262b6e3deb75a15a553ea42
Author: Andy Miller <rhuk@mac.com>
Date:   Sun Sep 9 14:35:50 2018 -0600

    title for profiles

commit fa70782c275bb4e37cb55423c73c2f7de63888a3
Author: Andy Miller <rhuk@mac.com>
Date:   Sun Sep 9 14:31:45 2018 -0600

    Improvements

commit 83342bf563a9a2a7b338ad22490052fb4b2c3165
Author: Andy Miller <rhuk@mac.com>
Date:   Sun Sep 9 13:28:31 2018 -0600

    Optimizations

commit a5a2c133d280d7c2d18d39ffb936df019007ca09
Author: Andy Miller <rhuk@mac.com>
Date:   Sat Sep 8 23:36:32 2018 -0600

    Tidyup

commit 1e7585dd6fd0d7cdae4a294229d7813863bbd243
Author: Andy Miller <rhuk@mac.com>
Date:   Sat Sep 8 22:19:25 2018 -0600

    Pick the backup from CLI if more than 1

commit 8e36a3b1063c8feabfe9e2702d78246ad03d87b1
Author: Andy Miller <rhuk@mac.com>
Date:   Sat Sep 8 20:07:02 2018 -0600

    Added downloads button

commit 9d7408a09472ca58f50e46f6a9839bb95b510c07
Author: Andy Miller <rhuk@mac.com>
Date:   Sat Sep 8 16:59:24 2018 -0600

    Integrated with build configuration

commit c22a6de8791522f1b6c622c255e09d94d7288811
Author: Andy Miller <rhuk@mac.com>
Date:   Sat Sep 8 15:05:38 2018 -0600

    init and create backup dir if required

commit 40a28def5df42ab3edd265a5622580c1170d5a33
Author: Andy Miller <rhuk@mac.com>
Date:   Sat Sep 8 08:39:52 2018 -0600

    Made backup a Grav service provider

commit b09f778b8f6d823e6c03e83f3759114fab9a2959
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 18:19:29 2018 -0600

    backups config has begun

commit 69da2948d6374f2a6d428ce2fa6b5f65ca6f4715
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 18:19:02 2018 -0600

    Scheduler tweaks

commit d30d3010d670c4771859947b950ae7984fd3529e
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 15:10:58 2018 -0600

    style integrated

commit d37b250a5d98c3dfd9556bc0491c41debf94720b
Merge: c8823edd be0573f6
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 15:04:05 2018 -0600

    Merge branch '1.6' into feature/backup

commit c8823edd0cef4bfc878c83f1dd7e35fabaa6157d
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 14:35:29 2018 -0600

    Better messages in CLI

commit 6695fb4d512cfe2e48220caf941e41c5dca0293e
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 14:15:40 2018 -0600

    CLI status bar integration

commit bae7047482ef786e5b0012b99eb911a7740f8818
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 07:32:56 2018 -0600

    optimizations

commit 4b8d67a15c3c14297d2bdb8769fbddd0221d13a9
Author: Andy Miller <rhuk@mac.com>
Date:   Fri Sep 7 06:49:49 2018 -0600

    archive class stuff

commit d03722689a1c06098e3db7fd3130d36ee8225ff6
Author: Andy Miller <rhuk@mac.com>
Date:   Thu Sep 6 17:31:21 2018 -0600

    initial commit of some stub classes
2018-09-19 15:44:31 -06:00
Andy Miller
51f29e112a updated composer.json 2018-09-19 13:56:09 -06:00
Matias Griese
ca8805683d Added onHttpPostFilter event to allow plugins to globally clean up XSS in the forms and tasks 2018-09-19 12:09:32 +03:00
Matias Griese
8295bd8243 Added Utils::detectXssFromArray() and Utils::detectXss() methods 2018-09-19 12:06:49 +03:00
Matias Griese
7a4b234c6d Update Config classes for PHP 7.1 2018-09-14 15:36:25 +03:00
Matias Griese
da95d1bb1e Session expires in 30 mins independent from config settings (https://github.com/getgrav/grav-plugin-login/issues/178) 2018-09-13 17:31:11 +03:00
Matias Griese
a1680ddeaa Update Data classes for PHP 7.1 2018-09-13 17:27:04 +03:00
Matias Griese
871333d3a0 Bug fixes for Flex 2018-09-13 15:21:47 +03:00
Matias Griese
5c81d7863c Add Flex class 2018-09-13 10:22:15 +03:00
Matias Griese
354831338c Update more Framework code for PHP 7.1 2018-09-12 21:17:35 +03:00
Matias Griese
593abccedc Added Grav\Framework\Flex classes 2018-09-12 15:52:28 +03:00
Matias Griese
e5c6788243 Minor fixes 2018-09-12 15:37:37 +03:00
Matias Griese
a358f2953a Update Framework classes to use PHP 7.1 syntax 2018-09-12 14:23:13 +03:00
Matias Griese
9444b63f8b Added Grav\Framework\Collection\AbstractIndexCollection, Grav\Framework\Object\ObjectIndex classes 2018-09-12 13:34:48 +03:00
Matias Griese
79df293fc4 Added Grav\Framework\File classes for handling YAML, Markdown, JSON, INI and PHP serialized files 2018-09-12 10:58:39 +03:00
Matias Griese
be0573f6ea Composer update 2018-09-07 14:58:50 +03:00
Matias Griese
4dc6264c64 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	system/src/Grav/Common/Twig/TwigExtension.php
2018-09-07 14:44:14 +03:00
Matias Griese
bbc4fd6c79 Allow twig tags {% script %}, {% style %} and {% switch %} to be placed outside of blocks 2018-09-07 13:13:33 +03:00
Matias Griese
732ff8ecab Fixed nicetime() twig function 2018-09-07 10:36:56 +03:00
Matias Griese
3a0c7168c9 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6 2018-09-06 12:35:21 +03:00
Matias Griese
41b7aadbda Fixed duplicate language strings (Yaml 4.1) 2018-09-06 12:34:50 +03:00
Matias Griese
a0e475b277 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6 2018-09-06 11:04:19 +03:00
Matias Griese
834d6938db Fixed is_safe twig filter option 2018-09-06 10:28:40 +03:00
Matias Griese
a7ad34bd99 Resolve merge conflicts 2018-09-06 09:18:34 +03:00
Andy Miller
dfabceb3d2 Fix for Page::translatedLanguages() #2163 2018-09-05 19:08:42 -06:00
Andy Miller
5499f2edb6 Feature/scheduler (#2170)
* scheduler first commit

* moved jobs to config

* got some args working

* commands and static methods working.. events hooked up

* No longer dependent on `exec()`.. uses Symfony\Process

* More improvements

* support getAt()

* Make inflector available in DI

* Fix for inflector

* store job run states

* more improvements including cron twig function

* Add scheduler to event + cleanup

* improvements to the CLI command

* Added id field

* use proper func

* Added email

* Fix quotes

* Updated built-in composer

* Better command for adding the scheduler cron via terminal

* Fixed typo and added cron language

* Added Cron class to make at -> human readable date possible

* Added some checks when there are no jobs

* Added method to get CronExpression

* Revamped with Symfony 4.1 CLI updates
2018-09-05 19:02:12 -06:00
Matias Griese
935fb98013 Added new {% throw 404 'Not Found' %} twig tag (with custom code/message 2018-09-05 12:03:57 +03:00
Matias Griese
665fa6cc9c Require doctrine/cache 1.8 2018-09-04 09:24:50 +03:00
Matias Griese
772f07e521 Make asset and image stream read/write 2018-09-04 09:24:18 +03:00
Matias Griese
2bbf219dc0 Composer update 2018-08-31 08:29:02 +03:00
Matias Griese
7cc98b8265 Merge branch 'develop' of https://github.com/getgrav/grav into 1.6
# Conflicts:
#	CHANGELOG.md
#	index.php
#	system/defines.php
2018-08-31 08:26:39 +03:00
Matias Griese
1808fd3d6e Allow $page->slug() to be called before $page->init() without breaking the page 2018-08-29 15:46:46 +03:00
Matias Griese
0b5c1dcfa7 Deprecation handling fixes 2018-08-26 11:01:17 +03:00
Matias Griese
1369f941f2 Commented out deprecation error on twig for now 2018-08-25 22:08:59 +03:00
Matias Griese
2101c6d0dc Further improve deprecated notices handling 2018-08-24 19:12:59 +03:00
Matias Griese
1993fc6a2c Better detect deprecation notices 2018-08-24 18:26:50 +03:00
Matias Griese
b9b43d1f05 Fixed notice on new deprecation logic 2018-08-24 18:22:07 +03:00
Matias Griese
8d53cf3c77 Add backtraces to the deprecation messages 2018-08-24 14:51:05 +03:00
Matias Griese
756ddaa97d Added Deprecated tab to DebugBar to catch future incompatibilities with later Grav versions 2018-08-24 11:31:51 +03:00
Djamil Legato
89f64e423d Fixed error message 2018-08-23 15:28:16 -07:00
Djamil Legato
ec5596b1a3 Fixed check for install command with symlinks, erroring out when no symlink available 2018-08-23 15:25:57 -07:00
Andy Miller
2de89e31c0 Merge branch 'release/1.5.1' 2018-08-23 13:02:49 -06:00
Andy Miller
9ca5598b6f Merge tag '1.5.1' into develop
Release v1.5.1
2018-08-23 13:02:49 -06:00
Andy Miller
05863276ef prepare for release 2018-08-23 13:02:37 -06:00
Andy Miller
5ac518f311 cast inline/indent to int 2018-08-22 12:54:45 -06:00
Andy Miller
41f488f8da Switch to Grav YAML wrapper that supports native and fallback YAML libs 2018-08-22 12:42:45 -06:00
Matias Griese
6cc6e51878 Added static Grav\Common\Yaml class which should be used instead of Symfony\Component\Yaml\Yaml 2018-08-22 20:59:00 +03:00
Andy Miller
78bcf84127 Merge branch 'develop' of github.com:getgrav/grav into develop
# Conflicts:
#	CHANGELOG.md
2018-08-21 14:10:02 -06:00
Andy Miller
6b224823f1 typo 2018-08-21 14:09:33 -06:00
Andy Miller
2734b2f605 Broken handling of user folder in Grav URI object #2151 2018-08-21 14:09:25 -06:00
Matias Griese
1ee88d5836 Updated deprecated Twig code so it works in both in Twig 1.34+ and Twig 2.4+ 2018-08-20 10:51:58 +03:00
Matias Griese
2dfd6b76d8 Remove PHP 5.6 and 7.0 from travis 2018-08-18 12:02:56 +03:00
Matias Griese
330b2e6a6b Changelog update 2018-08-18 00:34:35 +03:00
Matias Griese
896c25dc9e Updated Symfony Components to 4.1 2018-08-18 00:32:55 +03:00
Matias Griese
3b04315a38 Grav 1.6.0-dev: updated minimum PHP requirements to 7.1.3
Updated Doctrine Collections and Cache
2018-08-17 23:29:24 +03:00
Andy Miller
33fffa6a50 Merge tag '1.5.0' into develop
Release v1.5.0
2018-08-17 11:24:56 -06:00
Andy Miller
dbd825f0b6 Merge branch 'release/1.5.0' 2018-08-17 11:24:55 -06:00
Andy Miller
8ab0078d5a Prepare for release 2018-08-17 11:24:43 -06:00
Andy Miller
c381bc8304 PHP 7.2 by default now 2018-08-16 14:58:19 -06:00
Andy Miller
fb20b58369 changelog update 2018-08-15 17:12:20 -06:00
Andy Miller
906017e0c1 Added system blueprint for strict_mode settings 2018-08-15 17:12:10 -06:00
Andy Miller
266369ee04 unified 1.5.0 changelog entry for clarity 2018-08-15 16:15:37 -06:00
Andy Miller
308ac14dbe Updated changelog 2018-08-15 16:11:47 -06:00
Andy Miller
2a9da76512 Merge branch 'develop' into 1.5 2018-08-15 16:08:42 -06:00
Andy Miller
8e43550841 Updated changelog 2018-08-15 15:52:31 -06:00
Djamil Legato
75ac0201d8 Added support for multiple repos lookup (as array) in .grav/config
This will allow to keep clones of repositories on different folders and still be able to symlink them.

Example of ~/.grav/config:

```
github_repos:
    - /Users/my_user/Projects/grav/
    - /Users/my_user/Projects/personal/
    - /Users/my_user/Projects/work/
```
2018-08-15 13:38:18 -07:00
Andy Miller
8d9efe4ff7 Extra semicolon 2018-08-14 19:47:16 -06:00
Andy Miller
593400743a Fix for plugin order 2018-08-14 19:46:52 -06:00
Matias Griese
42ff8eaeb0 Make ObjectTrait::serialize() overrides easier 2018-08-13 22:28:12 +03:00
Matias Griese
5c2f9946f8 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5 2018-08-13 09:36:07 +03:00
Jascha Geerds
63161e62a2 Fix broken nounce handling (#2121)
* Remove deprecated "getNonceOldStyle" function

This commit removes the following functions:

- getNonceOldStyle
- generateNonceStringOldStyle

The functions have been replaced in newer versions of
grav. It seems to me that they only existed in order to make a
upgrade to a newer version of grav painless (i.e. accept both types of
nonce tokens). Nowadays, existing old style nonces are expired long
time ago so it should be save to delete the deprecated funtions.

* Fix caching of nonces in static class variable

Currently, the behavior of `getNonce` is broken because it saves the
generated nonce in an array and only use the $action as the
key. However, the generated nonce does not only depend on the $action,
but also on $plusOneTick.

* Fix broken "plusOneTick" for nonces

It looks to me that there is a bug in the current implemention of
verifyNonce. Here is an example:

- 2018-08-01 10:00: We respond to a request and generate a nonce. The
  current tick is at 35489

- 2018-08-01 10:05: We use the previously generated nonce to make
  another request. We compare the given nounce with a new generated
  one (based on the same tick). The result is exactly the same and the
  request succeeds.

- 2018-08-01 14:00: We're now one tick ahead. Remember: A day (24
  hours) is separated into two ticks (each 12 hours). A request comes
  in, we compare the given nounce with a newly generated one based on
  the current tick (now at 35490). They don't match (which is totally
  okay).

  If the comparison fails, we then compare the given nounce with a
  another, newly generated one. This time, we pass "plusOneTick", to
  the function, which increases the current tick by one. Our tick is
  now at 35491. We generate a nonce based on that tick and of course,
  it still does not match the given nonce.

  Instead of increasing the tick, we should rather decreasing it by
  one (i.e. use the previous tick). If the first comparison fails, we
  use the current tick (35490), decrease it by one (35489) and then
  compare it again. 35489 is the same tick as in the very first
  request.

This bug leads to a maximum life time of 12 hours for a nonce and in
worst case only a few seconds (!)

I would like to prove the bug with an unit test but I'm too unexperienced
in PHP. Furthermore it seems that we need some kind of library which
is able to mock builtin functions (like "time"). Maybe
<https://github.com/Codeception/AspectMock> would be a good canditate?
2018-08-09 16:05:24 -06:00
lucaswillering
c84983ad5b Add muted and playsinline attributes (#2124)
Fixes: #2099

To be able to add videos to sites that behave as GIFs, two attributes are needed for the videos to be properly handled on iOS and in Chrome: muted and playsinline.

Muted
Chrome only allows videos to autoplay when the contain the muted attribute. Non-muted videos will not autoplay unless the user has interacted with the site. More details here:  https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#new-behaviors

Playsinline
The playsinline attribute allows developers to specify videos on iPhone should play inline and not automatically enter fullscreen mode when playback begins. More details here: https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#new-behaviors
2018-08-09 15:32:53 -06:00
atyner
3cee53508e Typo 'Subscxripted' on default Typography page (#2136) 2018-08-09 15:32:34 -06:00
Matias Griese
fde75e1ed5 Composer update (toolbox) 2018-08-08 21:09:25 +03:00
Matias Griese
16d2f607c8 Fixed Uri::parseUrl($url) with no path (part 2) 2018-08-07 23:12:38 +03:00
Matias Griese
816a3ebd93 Fixed Uri::parseUrl($url) with no path 2018-08-07 22:46:23 +03:00
Matias Griese
d59fe2fa3c Display better exception message if Grav fails to initialize 2018-08-07 22:32:29 +03:00
Matias Griese
ef55e7d219 Added option to disable SimpleCache key validation 2018-08-07 22:30:45 +03:00
Andy Miller
424da520cf Fix #2134 - inheritance of theme classes that include digits in camelcase 2018-08-06 15:37:59 -06:00
Andy Miller
08cb311e5e Fix truncator tests 2018-08-06 15:36:38 -06:00
Andy Miller
e1b5875c5b Update vendor libs 2018-08-06 15:22:55 -06:00
Andy Miller
7d27206fec Fixed #2133 - uppercase fallback media urls 2018-08-06 14:56:00 -06:00
Andy Miller
18d405d798 Improved Utils::url() to support query strings 2018-08-06 13:09:15 -06:00
Matias Griese
34fa50fcf0 Added FormatterInterface::getDefaultFileExtension() 2018-08-03 13:19:26 +03:00
Matias Griese
ca3cf2ea3c Added FormatterInterface::getSupportedFileExtensions() method, deprecated getFileExtension() 2018-08-03 13:03:51 +03:00
Matias Griese
76fb11366b Added Uri::method() to get current HTTP method (GET/POST etc) 2018-08-02 22:41:54 +03:00
Andy Miller
e4f2808870 prepare for release 2018-07-31 11:27:49 -06:00
Andy Miller
f7496b5341 Merge branch 'develop' into 1.5
# Conflicts:
#	CHANGELOG.md
#	composer.lock
#	system/defines.php
2018-07-31 11:27:08 -06:00
Andy Miller
2f0d600e86 Merge tag '1.4.8' into develop
Release v1.4.8
2018-07-31 11:23:36 -06:00
Andy Miller
fa7e6be95a Merge branch 'release/1.4.8' 2018-07-31 11:23:35 -06:00
Andy Miller
cea43a2d21 Prepare for release 2018-07-31 11:23:24 -06:00
Andy Miller
b7387c8741 vendor updates 2018-07-31 11:23:15 -06:00
Andy Miller
c83852f4e1 update changelog 2018-07-31 11:20:49 -06:00
Andy Miller
ce271cf389 Merge branch 'develop' of github.com:getgrav/grav into develop 2018-07-31 11:17:09 -06:00
Matias Griese
ead125d599 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5 2018-07-30 12:10:24 +03:00
Andy Miller
8ee367e52e Don't allow null to be set as Page content 2018-07-27 15:05:45 -06:00
Jeremy Gonyea
db03091cff Added nginx config for hosting in a ddev project (#2117) 2018-07-27 14:23:35 -06:00
Matias Griese
6b5849b207 Added MediaTrait::getMediaCache() to allow custom caching 2018-07-20 22:54:22 +03:00
Matias Griese
ba0a8c4092 Added MediaTrait::clearMediaCache() to allow cache to be cleared 2018-07-20 22:25:22 +03:00
Matias Griese
c8ab5d34f7 Merge branch 'develop' into 1.5
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2018-07-19 10:05:26 +03:00
Hugh Barnes
c9367ba4f3 Add Grav version to debug bar Messages tab (#2106) 2018-07-18 19:03:25 -06:00
Matias Griese
a754f697d7 Added twig filters for casting values: |string, |int, |bool, |float, |array
Made `|markdown` filter HTML safe
2018-07-14 13:22:35 +03:00
Matias Griese
dd75ce515f Code style fix on Twig tags 2018-07-14 12:12:53 +03:00
Andy Miller
ea83b46bfb Prepare for release 2018-07-13 16:54:32 -06:00
Andy Miller
e7f628233d Update changelog 2018-07-13 16:47:49 -06:00
Andy Miller
24edf15e16 Merge branch 'release/1.4.7' 2018-07-13 16:38:56 -06:00
Andy Miller
70e65129d7 Merge tag '1.4.7' into develop
Release v1.4.7
2018-07-13 16:38:56 -06:00
Andy Miller
a5e97ef846 Prepare for release 2018-07-13 16:38:46 -06:00
Andy Miller
8a1f0d4932 update changelog 2018-07-13 16:38:04 -06:00
Andy Miller
f29997a5cf Minor vendor updates 2018-07-13 16:35:51 -06:00
Matias Griese
4daec6908c Merge branch 'develop' of https://github.com/getgrav/grav into 1.5 2018-07-06 09:17:41 +03:00
Timothy Cyrus
79bff58021 Change getBasename to getFilename where possible (#2087)
* Update Pages.php

* Update Themes.php

* Update Installer.php

* Update Plugins.php

* Update ConfigFileFinder.php
2018-07-05 14:14:57 -06:00
Matias Griese
05028d0d9b Changelog update 2018-07-05 13:14:17 +03:00
Matias Griese
b4148804e1 Criteria: Added support for LENGTH(), LOWER(), UPPER(), LTRIM(), RTRIM() and TRIM() 2018-07-05 13:12:59 +03:00
Matias Griese
07f8dfb1c5 Made ObjectCollection::matching() criteria expressions to behave more like in Twig 2018-07-05 12:27:28 +03:00
Matias Griese
f3c559f1c7 Composer update (Fixes blueprint issues) 2018-07-05 10:13:36 +03:00
Matias Griese
48a3228efd Merge remote-tracking branch 'origin/1.5' into 1.5
# Conflicts:
#	CHANGELOG.md
2018-07-05 10:07:14 +03:00
Matias Griese
be661e8685 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	CHANGELOG.md
2018-07-05 10:06:27 +03:00
Timothy Cyrus
a0918dfc4f Update Media.php (#2083)
Fixes getgrav/grav-plugin-admin#1330
2018-07-02 23:46:44 +01:00
Andy Miller
d214080974 Merge branch 'develop' into 1.5
# Conflicts:
#	CHANGELOG.md
2018-07-02 16:05:56 -06:00
Andy Miller
a09c6b1088 Fix for Page::routeCanonical accpeting string #2069 2018-06-22 11:59:22 +01:00
Andy Miller
dfed333e1b Set html in admin not in here… 2018-06-20 23:38:41 +01:00
Andy Miller
578e12940b Fix for modular page preview #2066 2018-06-20 22:56:27 +01:00
Andy Miller
7d215f95cf Merge tag '1.4.6' into develop
Release v1.4.6
2018-06-20 19:38:40 +01:00
Andy Miller
5435ee60d8 Merge branch 'release/1.4.6' 2018-06-20 19:38:39 +01:00
Andy Miller
761d79272c Prepare for release 2018-06-20 19:37:15 +01:00
Matias Griese
68a9552877 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	composer.json
#	composer.lock
2018-06-20 11:56:55 +03:00
Matias Griese
d72eca7fb5 Force Rockettheme/Toolbox to version 1.3.* in Grav 1.4 series 2018-06-20 11:11:46 +03:00
Matias Griese
ca9dba1372 Move wrongly placed items in changelog to the latest release 2018-06-20 10:57:57 +03:00
Matias Griese
7aa688ecbb Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2018-06-20 10:51:52 +03:00
Andy Miller
794db2e3e5 set version as beta.1 2018-06-19 19:15:22 +01:00
Andy Miller
ba457f7bf3 composer update 2018-06-19 19:11:22 +01:00
Andy Miller
64715573a1 Update changelog 2018-06-19 18:46:42 +01:00
Andy Miller
8288551531 Merge tag '1.4.6' into develop
Release v1.4.6

# Conflicts:
#	system/defines.php
2018-06-19 18:45:32 +01:00
Andy Miller
34cc3781d6 Merge branch 'release/1.4.6' 2018-06-19 18:42:55 +01:00
Andy Miller
4eb986643c Merge tag '1.4.6' into develop
Release v1.4.6
2018-06-19 18:42:55 +01:00
Andy Miller
290e5be534 Prepare for release 2018-06-19 18:42:40 +01:00
Andy Miller
aea26f4db9 Updated changelog 2018-06-19 18:38:48 +01:00
Matias Griese
bf5e742a7f Revert Medium object cloning for now (has unexpected side effects) [#2045] 2018-06-15 09:51:42 +03:00
Matias Griese
9816b538f9 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	composer.lock
2018-06-15 09:22:46 +03:00
Matias Griese
bd21b7f966 Fixed image resource memory deallocation (part 2) [#2045] 2018-06-15 09:17:50 +03:00
Matias Griese
021fbb8ecd Merge remote-tracking branch 'origin/develop' into develop 2018-06-15 09:03:57 +03:00
Matias Griese
6d7e9ba107 Fixed image resource memory deallocation [#2045] 2018-06-15 09:03:51 +03:00
Matias Griese
bbfbdec483 Added setting to disable sessions from the site [#2013] 2018-06-14 19:23:35 +03:00
Andy Miller
62a32ab5c5 vendor updates 2018-06-14 16:00:31 +01:00
Matias Griese
2e3a64fcef Fixed incorrect routing with setup.php based base [#1892] 2018-06-14 14:55:08 +03:00
Matias Griese
ecdbff68d8 Fixed crash on IIS (Windows) with open_basedir in effect [#2053] 2018-06-14 14:31:29 +03:00
Matias Griese
9ca427e369 Composer update (rockettheme/toolbox => 1.4) 2018-06-14 12:46:27 +03:00
Matias Griese
228757a5ba Composer update (rockettheme/toolbox => dev-develop) 2018-06-12 13:06:58 +03:00
Matias Griese
027a760ce2 Added function Session::clear() 2018-06-12 12:06:14 +03:00
Matias Griese
0a3cadc6b2 Composer update 2018-06-12 10:55:38 +03:00
Matias Griese
04ea069280 Fixed routing issues with multisite and multilanguage (Grav 1.5 edition) (#2046)
* Fixed routing issues with multisite and multilanguage (#1501)
2018-06-12 10:48:13 +03:00
Matias Griese
280d54057c Merge branch 'develop' of https://github.com/getgrav/grav into 1.5 2018-06-12 10:40:42 +03:00
Jean-Baptiste Alleaume
036fc2d2af Modular template extension follows the master page extension (#2044) 2018-06-08 22:00:07 +00:00
Hydraner
ab58cca3f7 Add getter methods for original and action to the Page object. (#2005) 2018-06-08 21:37:44 +00:00
Jeremy Bouquain
f883820c6a Handle multibyte strings in truncateLetters (#2007) 2018-06-08 21:37:06 +00:00
Lauri Nurmi
9053f9ab44 Use @example.com in default email addresses. (#2020)
It could be a bad idea to use default email addresses that could really
exist. Instead, use example.com, which RFC2606 defines as one of the
domains reserved for examples.
2018-06-08 21:36:38 +00:00
Felipe Fonseca
bd7706a38e pointing fastcgi_pass path to match php7.0-fpm (on debian stretch) (#2021) 2018-06-08 21:36:11 +00:00
Tuukka Norri
da7a93527d Fix image memory use (#2045)
* Add a method for freeing the image file, free each derivative after it has been created

* Save the scaled derivative on disk before freeing it, store its path
2018-06-08 21:33:40 +00:00
Matias Griese
9f7534153e Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	CHANGELOG.md
2018-06-01 12:37:13 +03:00
Andy Miller
3b4296c7a4 fix for URI’s with no authority // eg mailto:blah@blah.com 2018-05-31 17:48:48 -06:00
Andy Miller
8e065e1109 Fix classes on non-http based protocol links #2034 2018-05-31 14:28:48 -06:00
Andy Miller
93f3fa9685 Updated changelog 2018-05-31 14:08:01 -06:00
Andy Miller
27a9390ec7 Re-added SSL off-loading that was lost with Grav v1.4.0 merge #1888 2018-05-31 14:05:33 -06:00
Matias Griese
62a8d8b203 Add method MediaInterface::getMediaOrder() and implement it 2018-05-31 20:04:16 +03:00
Matias Griese
d7bd0bf1df Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	CHANGELOG.md
2018-05-31 12:28:19 +03:00
Ante Drnasin
9eded2ef39 Update robots.txt (#2043)
When using "Fetch and Render as Google" in Google Search console it will report "partial" rendering due to the blocked images in /user/images directory which is blocked because of the Disallow /user/ rule. Proposing this small change as it improves google rendering of the page.
2018-05-30 11:47:21 -06:00
Andy Miller
636bc97d29 handle errors.display properly admin#1452 2018-05-29 09:26:52 -06:00
Matias Griese
3ccadded97 Fixed blueprint field validation: Allow numeric inputs in text fields 2018-05-22 10:42:30 +03:00
Andy Miller
b82c17ea56 Fixed typo in trucate #1943 2018-05-20 12:01:38 -06:00
Matias Griese
a0946c67b9 Implement SessionInterface 2018-05-17 10:46:13 +03:00
Matias Griese
00376d3118 Session code cleanup, add changelog entries 2018-05-17 10:22:14 +03:00
Matias Griese
e8fd5405a7 Merge branch 'feature/session' of https://github.com/getgrav/grav into 1.5 2018-05-17 10:14:10 +03:00
Matias Griese
eae017a30a Merge branch 'develop' of https://github.com/getgrav/grav into feature/session 2018-05-17 10:10:16 +03:00
Andy Miller
718dfa9b5d Merge branch 'develop' into 1.5
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
#	system/src/Grav/Common/User/User.php
2018-05-15 17:55:50 -06:00
Andy Miller
03a0c42795 Merge branch 'release/1.4.5' 2018-05-15 12:55:39 -06:00
Andy Miller
1976471982 Merge tag '1.4.5' into develop
Release v1.4.5
2018-05-15 12:55:39 -06:00
Andy Miller
1426a7ec95 prepare for release 2018-05-15 12:55:27 -06:00
Andy Miller
2a759eed74 updated changelog 2018-05-15 11:46:54 -06:00
Andy Miller
8980b78220 Revert "Add MIME type to video <source> tag (#1992)"
This reverts commit e60fd82400.
2018-05-15 11:45:36 -06:00
Andy Miller
12b0a839e7 Merge branch 'develop' of github.com:getgrav/grav into develop 2018-05-15 11:43:42 -06:00
Andy Miller
b4d570fd21 updated changelog 2018-05-15 11:43:37 -06:00
Christian Weiske
e60fd82400 Add MIME type to video <source> tag (#1992) 2018-05-15 11:39:50 -06:00
Davide Liessi
a1abcfd067 Move fix for #1114 to Truncator::truncateLetters (#2004)
* Move fix for #1114 to Truncator::truncateLetters

The original fix provided by #1125 in Utils::truncateHtml compared the
summary size with the full HTML string length.
Thus, the string was still being truncated (and the HTML rewritten) even
when only the HTML string length, and not the text length, exceeded the
summary size.

* Add fix for #1114 also to Truncator::truncateWords
2018-05-15 11:38:48 -06:00
Christian Weiske
7f90ad8474 Do not crash when generating URLs with arrays as parameters (#2018)
When using a default image derivatives (#1979) setting like

  images:
    defaults:
      derivatives: [300,600]

then Grav crashes when a video gets embedded.
The following error occurs:

  rawurlencode() expects parameter 1 to be string, array given
  system/src/Grav/Common/Page/Medium/Medium.php:521

This patch encodes array URL parameters correctly.
2018-05-15 11:37:18 -06:00
Andy Miller
e1d52181a3 updated changelog 2018-05-15 11:36:20 -06:00
Matias Griese
d4494cb502 Fixed users getting logged out after Grav upgrade 2018-05-15 16:26:11 +03:00
Andy Miller
11266ce8f8 Revert "Add special handling for User authenticated and authorized properties"
This reverts commit 8e0e3e8718.
2018-05-14 18:25:36 -06:00
Andy Miller
2f17b3fa7d Revert "Add special handling for User authenticated and authorized properties"
This reverts commit 8e0e3e8718.
2018-05-14 18:25:19 -06:00
Matias Griese
dab595f571 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	system/defines.php
2018-05-14 21:25:35 +03:00
Matias Griese
afe72d0783 Merge remote-tracking branch 'origin/develop' into develop 2018-05-14 21:24:03 +03:00
Matias Griese
8e0e3e8718 Add special handling for User authenticated and authorized properties 2018-05-14 21:23:56 +03:00
Matias Griese
5ab956a8ec Fixed Route::withQueryParam() to accept array values 2018-05-14 12:30:30 +03:00
Andy Miller
a17554c951 Merge branch 'release/1.4.4' 2018-05-11 16:07:38 -06:00
Andy Miller
30ff986603 Merge tag '1.4.4' into develop
Releaase v1.4.4
2018-05-11 16:07:38 -06:00
Andy Miller
18f46d902d Prepare for release 2018-05-11 16:07:27 -06:00
Andy Miller
3948ed5618 updated changelog 2018-05-11 16:06:54 -06:00
Matias Griese
e6dd91f698 Added authorized support (2FA)
(cherry picked from commit 2c82e15)
2018-05-10 19:58:39 +03:00
Matias Griese
2c82e15fa1 Added authorized support (2FA) 2018-05-10 19:56:56 +03:00
Andy Miller
2c7d866724 alignment of parens 2018-05-09 22:43:26 -06:00
Andy Miller
a977023e45 minor vendor updates 2018-05-09 14:43:28 -06:00
Djamil Legato
9c7008e225 Enable markdown support for 2FA account field description 2018-05-09 10:41:23 -07:00
Matias Griese
342aa0ff04 Added MediaTrait::getMediaUri() 2018-05-09 14:01:20 +03:00
Matias Griese
d434d51d42 Merge remote-tracking branch 'origin/1.5' into 1.5 2018-05-08 21:00:24 +03:00
Matias Griese
f03eb693e6 Rename object key back to _key 2018-05-08 21:00:16 +03:00
Andy Miller
18928d6962 Revert "fire onPluginsInitialized event"
This reverts commit f7832e78dc.
2018-05-08 09:48:56 -06:00
Andy Miller
f7832e78dc fire onPluginsInitialized event 2018-05-07 21:32:00 -06:00
Matias Griese
68428a714a Change exception type in ContentBlock::fromArray() 2018-05-07 15:24:43 +03:00
Matias Griese
58db31a7d8 Added support for ContentBlock checksums 2018-05-07 14:58:50 +03:00
Matias Griese
2917345b56 Improve ObjectTrait 2018-05-04 21:43:12 +03:00
Matias Griese
1cfd3482bb Added Grav\Common\Media interfaces and trait; use those in Page and Media classes
Added `Grav\Common\Page` interface to allow custom page types in the future
2018-05-04 19:06:37 +03:00
Matias Griese
4d690938a8 Merge branch 'develop' of https://github.com/getgrav/grav into 1.5 2018-04-30 12:37:01 +03:00
Dmitry Yakovlev
40b475ecb9 Fix hardcoded string (#1993)
Fix hard-coded string "Modular Setup" to improve internationalization. Needs new string PLUGIN_ADMIN.MODULAR_SETUP in Admin plugin language file.
2018-04-28 11:29:28 -06:00
Gabriel Caruso
4ab0a601ad Use array_key_exists instead of in_array + array_keys (#1991) 2018-04-28 11:25:41 -06:00
Gabriel Caruso
40ba5e9106 Use dedicated PHPUnit assertions (#1990)
Signed-off-by: Gabriel Caruso <carusogabriel34@gmail.com>
2018-04-28 11:24:43 -06:00
Christian Weiske
d4ec2a25d4 Add default configuration for images (#1979)
This patch allows configuring image processing instructions
for all images.
A use case is generating a fixed set of sizes (derivatives) for
all images, without having to specify them in the content markdown.

Example configuration in user/config/system.yaml:

images:
  defaults:
    derivatives: "[300,600,1200]"
2018-04-28 11:24:14 -06:00
Andy Miller
0b1c18d63e Added Uri::post() and Uri::getConentType() 2018-04-27 16:44:38 -06:00
Andy Miller
f681f1c60b resolve streams earlier 2018-04-27 16:18:16 -06:00
Andy Miller
27df27d1df resolve streams earlier 2018-04-27 16:17:52 -06:00
Andy Miller
027dbcf6fa Added Uri::post() and Uri::getConentType() 2018-04-27 15:40:03 -06:00
Matias Griese
91e98cd32e Added RouteFactory::createFromString() rename MarkdownFormatter configuration option 2018-04-27 20:41:05 +03:00
Matias Griese
1cef2a182a Added Grav\Common\Media interfaces and trait; use those in Page and Media classes
Added `Grav\Common\Page` interface to allow custom page types in the future
2018-04-27 20:38:57 +03:00
Matias Griese
ad8764897a New classes have wrong namespace 2018-04-24 15:47:31 +03:00
Matias Griese
d2e700eea2 Formatters: Better error handling, allow custom file extension 2018-04-24 12:22:06 +03:00
Matias Griese
895e145d82 Added new Grav\Framework\File\Formatter classes for encoding/decoding YAML, MarkDown, JSON, INI and PHP serialized formats 2018-04-24 11:41:55 +03:00
Matias Griese
78ab2aa476 Minor improvement on session check (using PHP 5.4+ way) 2018-04-23 09:40:31 +03:00
Matias Griese
b9a7341e5e Composer update to fix YAML issues 2018-04-22 19:09:05 +03:00
Matias Griese
261ea62472 Added compatibility mode to fall back to Symfony YAML 2.8 when needed 2018-04-20 14:03:49 +03:00
Matias Griese
fae2aa4582 Added compatibility mode to fall back to Symfony YAML 2.8 when needed 2018-04-20 11:18:01 +03:00
Matias Griese
fb7230ec9a Merge branch 'develop' of https://github.com/getgrav/grav into 1.5
# Conflicts:
#	CHANGELOG.md
2018-04-20 10:24:06 +03:00
Andy Miller
692aff3c89 SORT_REGULAR for dates #1910 2018-04-18 18:37:34 -06:00
Andy Miller
3091a14223 Improve support for regex redirects with query and params #1983 2018-04-18 15:02:53 -06:00
Andy Miller
a49f3d460e allow type to be passed 2018-04-18 10:43:27 -06:00
Andy Miller
b6e0f8b75a Added a Medium::thumbnailExists() method 2018-04-17 23:29:23 -06:00
Andy Miller
ac8a1191f8 Fix for custom_base_url not routing properly 2018-04-17 19:04:16 -06:00
Matias Griese
830c9524eb Merge branch 'develop' of https://github.com/getgrav/grav into feature/session 2018-04-16 09:33:07 +03:00
Matias Griese
ce1e635451 Minimum PHP requirement was 5.6.4, not 5.6.0 2018-04-14 17:42:13 +03:00
Matias Griese
8b0c1b7937 Updated Symfony Components to 3.4, causing some compatibility issues with YAML files 2018-04-14 13:23:54 +03:00
Matias Griese
33cfa17899 Fix couple of deprecated extend@s 2018-04-14 13:00:40 +03:00
Matias Griese
87b0d80de0 PHP 5.6.0 minimum, updated to Doctrine Collections 1.4 2018-04-14 12:28:00 +03:00
Matias Griese
b8c61e34c9 Improve session error if it fails to start 2018-04-14 11:50:22 +03:00
Matias Griese
02555ba3f5 Merge branch 'develop' of https://github.com/getgrav/grav into feature/session 2018-04-13 21:04:40 +03:00
Andy Miller
4db2b75699 Merge tag '1.4.3' into develop
Release v1.4.3
2018-04-12 15:54:26 -06:00
Andy Miller
c64590af16 Merge branch 'release/1.4.3' 2018-04-12 15:54:25 -06:00
Andy Miller
3607124e55 Prepare for release 2018-04-12 15:54:16 -06:00
Andy Miller
e7405a13fc Revert "Test fixes for session/parsedown changes, jquery update, quark default theme"
This reverts commit cad10b6095.

# Conflicts:
#	CHANGELOG.md
2018-04-12 15:28:53 -06:00
Andy Miller
46f16ce4db Note about updated vendor libs 2018-04-12 15:26:26 -06:00
Andy Miller
d3a4466d9b Updated changelog 2018-04-12 15:25:29 -06:00
Andy Miller
46d682f889 Revert "Fix for audio/video parsedown #1924"
This reverts commit 33cfa5e104.

# Conflicts:
#	CHANGELOG.md
2018-04-12 15:25:19 -06:00
Matias Griese
2b17bf70de Merge branch 'develop' of https://github.com/getgrav/grav into feature/session 2018-04-10 09:47:59 +03:00
Andy Miller
8e019b7958 Updated changelog 2018-04-09 14:38:46 -06:00
Andy Miller
47037e3f5e moved sortArrayByKey logic into Utils:: 2018-04-09 14:35:44 -06:00
Andy Miller
1ec653268d Parsedown 1.8 breaks things, need to fix when final is released 2018-04-09 12:00:07 -06:00
Andy Miller
3ee140e77f Revert "Temporarily using parsedown dev-master to address HTML encoding issues #1921"
This reverts commit ff2df04a58.
2018-04-09 11:58:52 -06:00
Rex Kelly
cb490a1762 Add overriding of setup.php config file, via constants (#1945)
I'm working on a custom install of Grav, where being able to dynamically swap setup files was required. I've modified the $file assignment to permit overriding it's value via a defined constant, "GRAV_SETUP_PATH".

And I thought that might be useful to others, so I'm submitting a pull request.
2018-04-09 11:35:49 -06:00
Raul E Watson
6d8ba5ed4d Update CHANGELOG.md (#1958)
Fixed small typos in changelog
2018-04-09 11:34:56 -06:00
michielStaes
7020130511 Readme.md was missing info regarding the 'composer test-windows' command (#1970) 2018-04-09 11:34:36 -06:00
Andy Miller
ff2df04a58 Temporarily using parsedown dev-master to address HTML encoding issues #1921 2018-04-02 18:04:40 -06:00
Djamil Legato
3248b97997 Reverted zip changes while adding extra details about unzip failure 2018-03-29 13:07:11 -07:00
Djamil Legato
3c26d831fd Refactored Installer (zip) change to maintain consistency in the errorCode 2018-03-29 12:15:34 -07:00
Andy Miller
f4e584cda1 Fix for bad ZipArchive references 2018-03-24 13:49:56 -06:00
Andy Miller
df7e9b9c1f Merge tag '1.4.2' into develop
Release v1.4.2
2018-03-21 11:49:38 -06:00
Andy Miller
1108d063ef Merge branch 'release/1.4.2' 2018-03-21 11:49:37 -06:00
Andy Miller
a6306aae05 Prepare for release 2018-03-21 11:49:28 -06:00
Andy Miller
fdf79caf71 updated changelog 2018-03-21 11:19:47 -06:00
Matias Griese
f31f7f0962 Added Grav\Framework\Session class to replace RocketTheme\Toolbox\Session\Session
Improved session handling, allow all session configuration options in `system.session.options`
2018-03-21 12:45:57 +02:00
Matias Griese
df185621ad Composer update (Add missing PSR-7 requirements) 2018-03-21 11:29:26 +02:00
Andy Miller
301429d992 Merge branch 'develop' of github.com:getgrav/grav into develop 2018-03-20 10:33:32 -06:00
Andy Miller
07db8a2f9d Updated composer binary 2018-03-20 10:33:26 -06:00
Matias Griese
3a207843c7 Merge branch 'develop' of https://github.com/getgrav/grav into feature/1.4 2018-03-20 09:22:19 +02:00
Andy Miller
8f1639c10b case for case sensitive metadata grav-admin-plugin#1370 2018-03-18 21:37:17 -06:00
Andy Miller
b515a5add0 updated changelog 2018-03-18 12:57:40 -06:00
Andy Miller
33cfa5e104 Fix for audio/video parsedown #1924 2018-03-18 12:55:20 -06:00
Mujib Azizi
83b85e2cac Re-add .gitkeep to keep the backup folder. (#1913) 2018-03-18 11:59:19 -06:00
Mathieu Santostefano
861eb43efa Remove duplicate entry (#1916) 2018-03-18 11:58:40 -06:00
Al-Demon
a20d6d7230 Update LanguageCodes.php (#1917)
Add Bosnian LanguageCode
2018-03-18 11:57:16 -06:00
Andy Miller
40e7ee79b4 Added more detailed error handling (#1922) 2018-03-18 11:56:59 -06:00
Paul Massendari
dce97221c5 Small typo in default page (#1923) 2018-03-16 12:37:08 -07:00
Matias Griese
fea02736c5 Changelog: fixed typo 2018-03-15 10:45:37 +02:00
Andy Miller
d58ad3749d Fixed a test 2018-03-13 16:17:46 -06:00
Andy Miller
727f759b41 Added some twig stuff 2018-03-13 16:10:12 -06:00
Andy Miller
f42d59409b updaetd clean command with some minor changes 2018-03-11 16:28:50 -06:00
Andy Miller
4adaead4ec Merge branch 'release/1.4.1' 2018-03-11 16:13:03 -06:00
Andy Miller
8dbe248df1 Merge tag '1.4.1' into develop
Release v1.4.1
2018-03-11 16:13:03 -06:00
Andy Miller
0e26422613 Prepare for release 2018-03-11 16:12:55 -06:00
Matias Griese
234555b208 Fixed session timing out because of session cookie was not being sent 2018-03-11 21:52:49 +02:00
Andy Miller
3cfc3f1cbe Merge tag '1.4.0' into develop
Release v1.4.0
2018-03-09 13:03:06 -07:00
Andy Miller
9b149307ef Merge branch 'release/1.4.0' 2018-03-09 13:03:05 -07:00
Andy Miller
4c1d1dd5d0 Prepare for release 2018-03-09 13:02:50 -07:00
Andy Miller
cad10b6095 Test fixes for session/parsedown changes, jquery update, quark default theme 2018-03-09 12:45:27 -07:00
Andy Miller
7aa930ca55 Merge branch '1.4' into develop
# Conflicts:
#	system/src/Grav/Common/Twig/TwigExtension.php
#	system/src/Grav/Common/Uri.php
#	tests/unit/Grav/Common/AssetsTest.php
2018-03-09 12:43:08 -07:00
Matias Griese
7e1c6b6137 Do not initialize session in CLI and unit tests 2018-03-09 21:07:44 +02:00
Andy Miller
d008376169 Updated parsedown + toolbox 2018-03-08 17:08:20 -07:00
Andy Miller
eaac77881f Force clearing PHP clearstatcache and opcache-reset on Cache::clear() 2018-03-08 14:52:49 -07:00
Andy Miller
43ca0a2f58 vendor updates 2018-03-07 11:57:55 -07:00
Andy Miller
54cd7f85b8 theme_var() twig function now checks page header var first 2018-03-02 15:39:59 -06:00
Andy Miller
5ffe32ef58 Fix alt tag issue #1883 2018-03-01 15:30:51 -06:00
Andy Miller
b0ad83ebf7 support both alt and alt_text 2018-03-01 15:13:42 -06:00
mahagr
d5060a2012 Framework\Route::getRoute() return relative path only if offset isn't 0 2018-02-25 17:38:55 -06:00
mahagr
bf16e2e854 Framework\Route::getRoute() with parameters should return relative path 2018-02-25 17:37:23 -06:00
mahagr
ec78319993 Add Framework\Route::getRoute() parameters 2018-02-25 17:35:01 -06:00
mahagr
67b5649ee4 Add Framework\Route::getRouteParts() function 2018-02-25 17:29:29 -06:00
CSixtyFour
eca23a918a Fix for #1827 (#1888)
Modified Build scheme and Build port functions to take into account those in SSL offloading situations.
2018-02-24 11:00:26 -07:00
Andy Miller
5b291f8f54 Added Route overrides 2018-02-22 16:14:24 -07:00
Matias Griese
274c701907 Improved Object serialize()/unserialize() 2018-02-22 09:00:41 +02:00
Andy Miller
e533024b2e Added {% switch %} twig tag 2018-02-21 23:00:37 -07:00
Andy Miller
8750602f76 Added new {% markdown %} twig tag 2018-02-21 17:28:43 -07:00
Todd Coleman
51a9b9b7c7 Taxonomy Filtering - space characters (#1880)
Taxonomies with spaces were not recognized because they are encoded in the uri.
2018-02-21 10:43:20 -07:00
Matias Griese
42d8836569 Improved Session initialization (#1879) 2018-02-21 10:42:09 -07:00
Matias Griese
7cfc6fbdb8 Merge remote-tracking branch 'origin/1.4' into 1.4 2018-02-21 12:53:48 +02:00
Matias Griese
01886b6df9 Added better session checks, warn in debugbar if session messages cannot be used 2018-02-21 12:53:40 +02:00
Andy Miller
b7d4697db8 changelog updated 2018-02-20 17:30:17 -07:00
Matias Griese
742c6f9baa Fixed issue with UriFactory::parseQuery() 2018-02-20 12:00:17 +02:00
Matias Griese
c97da77153 Merge branch '1.4' of https://github.com/getgrav/grav into 1.4 2018-02-20 11:07:36 +02:00
Matias Griese
871848dc28 Added Grav\Framework\Route classes to allow route/link manipulation
Added `$grav['uri]->getCurrentRoute()` method to get `Grav\Framework\Route\Route` instance for the current URL
2018-02-20 11:07:28 +02:00
Andy Miller
84a0b5d1e1 cleanup with default value 2018-02-19 21:23:11 -07:00
Andy Miller
8e68317e7c Composer updates 2018-02-19 11:48:38 -07:00
Matias Griese
35f7a2a9de Added $grav['uri]->getCurrentUri() function to get Grav\Framework\Uri instance for the current URL. 2018-02-19 11:10:37 +02:00
Matias Griese
62dfa0e060 Reorder functions in Common\Uri class 2018-02-19 10:30:16 +02:00
Andy Miller
2e28461435 Updated changelog 2018-02-18 14:08:23 -07:00
Andy Miller
4259d01638 Fix bug with remote minimum PHP version determination 2018-02-18 14:07:35 -07:00
Matias Griese
39783df92d Fixed bug with absolute_urls=true 2018-02-17 14:35:02 +02:00
Matias Griese
d39253e36f Moved URI parts filtering functions to Framework\UriPartsFilter class 2018-02-17 14:28:26 +02:00
Matias Griese
82868037ec Some code cleanup on ParsedownGravTrait and Grav classes 2018-02-17 13:03:56 +02:00
Matias Griese
17ba58a5c2 Framework\Uri: Improve query parameter handling 2018-02-17 13:00:40 +02:00
Matias Griese
0a79788582 Improve Uri class by adding useful tests 2018-02-17 12:23:45 +02:00
Andy Miller
ccf0f9c74e Added support for php dependencies in GPM blueprints 2018-02-16 18:16:07 -07:00
Matias Griese
79e580a79d Added Grav\Framework\Uri classes extending PSR-7 HTTP message UriInterface implementation 2018-02-17 00:18:21 +02:00
Andy Miller
5b9a40de5f Prepare for release 2018-02-15 15:53:36 -07:00
Andy Miller
550468aefb Added checkbox-style support for switch field 2018-02-15 14:51:31 -07:00
Andy Miller
84a2a08d22 Fixed YAML blueprint valdiation/filtering 2018-02-14 22:29:41 -07:00
Matias Griese
ee8ea5af57 Clean up Utils class with minor fixes 2018-02-09 10:44:32 +02:00
Andy Miller
2f763809ac fixed twig evaluate function 2018-02-06 09:44:00 -07:00
Andy Miller
f91678df4a Fix for invalid template error in evaluate() 2018-02-06 09:42:13 -07:00
Andy Miller
4c654ef19c Stopped Chrome from auto-completing admin user profile form #1847 2018-02-05 13:07:51 -07:00
Andy Miller
637308d294 Fix for opengraph tags #1849 2018-02-05 11:59:14 -07:00
Andy Miller
e2ce65dc61 cast to array 2018-02-03 14:26:23 -07:00
Andy Miller
f6061e96e8 fix for assets change 2018-02-03 14:19:30 -07:00
Gabriel Caruso
8c0134eb64 Test against PHP 7.2 (#1835) 2018-02-03 14:05:48 -07:00
Mateusz Kutyba
18c6bd6e23 Remove the default type attribute from script tags (#1823) 2018-02-03 14:05:27 -07:00
Andy Miller
08be06c9bc Addd a new Medium:exists() method 2018-01-31 16:07:36 -07:00
Andy Miller
19ae66d0e9 updated changelog 2018-01-31 14:04:56 -07:00
Andy Miller
c3f84d8682 new read_file() twig function 2018-01-31 14:04:50 -07:00
Andy Miller
c721be8787 Added yaml encode/decode filters 2018-01-25 16:40:02 -07:00
Andy Miller
47746d3313 Added new Collection::toExtendedArray() 2018-01-25 16:37:21 -07:00
Andy Miller
103ac4b137 Improve collection filtering 2018-01-24 15:42:27 -07:00
Andy Miller
d2e3ea0f9d Prepare for release 2018-01-22 12:27:03 -07:00
Andy Miller
16ca3daf21 Updated pimple release 2018-01-22 12:25:17 -07:00
Andy Miller
db5f0efaab Fix for bad Uri::filter() call
https://github.com/getgrav/grav-plugin-page-inject/issues/14
2018-01-21 17:01:45 -07:00
Andy Miller
8eb0f87702 Changelog updated 2018-01-19 11:19:29 -07:00
Gabriel Caruso
2c44980b77 Refactoring tests (#1779) 2018-01-19 11:16:25 -07:00
Gabriel Caruso
f261173de2 Refactoring tests (#1779) 2018-01-19 11:15:20 -07:00
Andy Miller
75e293b2d7 Merge branch '1.4' of https://github.com/getgrav/grav into 1.4 2018-01-19 11:13:49 -07:00
Andy Miller
422eb5be5c License date update 2018-01-19 11:13:27 -07:00
Miguel Piedrafita
9d2dea07ad Update license year (#1813) 2018-01-19 11:10:56 -07:00
Matias Griese
821c4f7b4a Clean up Utils class with minor fixes (#1830) 2018-01-19 11:09:51 -07:00
Andy Miller
dcbb5ef90d Merge branch '1.4' of https://github.com/getgrav/grav into 1.4
# Conflicts:
#	CHANGELOG.md
2018-01-19 10:32:37 -07:00
Andy Miller
758ea8f581 Slight change in Whoops colors 2018-01-19 10:31:33 -07:00
Andy Miller
5a27977452 vendor updates 2018-01-19 10:30:53 -07:00
Matias Griese
8d39fdf23c Bug fix on Cache TTL = null 2018-01-19 12:53:33 +02:00
Matias Griese
73bd402551 Framework\Cache: Update all exceptions to be compatible with Psr\SimpleCache 2018-01-19 12:03:32 +02:00
Matias Griese
c473c0baaf Fixes wrong exception in ChainCache 2018-01-19 11:49:01 +02:00
Matias Griese
827b4e5d75 Clean up Utils class with minor fixes 2018-01-19 11:28:47 +02:00
Andy Miller
14af38fb0f Moved url() function into Utils class 2018-01-11 17:52:10 -07:00
Andy Miller
2c4d5307f6 Merge branch '1.4' of https://github.com/getgrav/grav into 1.4 2018-01-09 22:47:15 -07:00
Andy Miller
4677bad9ba Modular blueprint update 2018-01-09 22:47:11 -07:00
Matias Griese
ae245c0674 Misc object fixes (new features only) 2018-01-09 21:24:19 +02:00
Matias Griese
154fa4ed9a Update changelog 2018-01-09 13:02:36 +02:00
Matias Griese
a744b7fc8f Objects: Add protected function getVariable() to get serialized value for a single property
`ObjectPropertyTrait`: Added protected functions `isPropertyLoaded()`, `offsetLoad()`, `offsetPrepare()` and `offsetSerialize()`
2018-01-09 12:08:37 +02:00
Andy Miller
72abab6450 Dates should always be sorted numerically 2018-01-04 11:45:31 -07:00
Andy Miller
0695c29cf5 Bad quotes 2017-12-31 17:07:52 -08:00
Immanuel Bendahan
084a5c7fbe Bug fi (#1808) 2017-12-29 13:42:45 -07:00
Andy Miller
0feeb743ff update defines 2017-12-29 13:24:10 -07:00
Andy Miller
96fd694eae Use quark by default 2017-12-29 13:12:18 -07:00
Andy Miller
b2c883c869 updated changelog 2017-12-29 13:11:12 -07:00
Andy Miller
7941786db9 Setting Quark to default theme 2017-12-28 17:21:52 -07:00
Andy Miller
2ad9b6dc84 Fixes that ‘should’ work. 2017-12-28 14:39:35 -07:00
Andy Miller
59f7f15434 Get current route correctly 2017-12-27 14:58:56 -07:00
Andy Miller
8f522ee11d Merge branch '1.4' of https://github.com/getgrav/grav into 1.4 2017-12-27 13:39:27 -07:00
Andy Miller
f48c0b1700 fix for special chars in base path #1799 2017-12-27 13:39:16 -07:00
Matias Griese
b35b9eaecc Merge remote-tracking branch 'origin/1.4' into 1.4 2017-12-27 21:03:48 +02:00
Matias Griese
e217489d37 Added new configuration option system.session.initialize to delay session initialization if needed by a plugin 2017-12-27 21:03:41 +02:00
Andy Miller
5df6db9ffa Added a new typography page 2017-12-26 15:01:44 -07:00
Andy Miller
bd578070de removed _set method as it breaks GPM 2017-12-18 17:34:49 -07:00
Andy Miller
a8a061d4b2 updated defines for beta.2 2017-12-18 14:28:07 -07:00
Andy Miller
9d41417c26 updated changelog 2017-12-18 14:21:43 -07:00
Andy Miller
3888358dc9 Updated to latest vendor libs 2017-12-18 14:07:55 -07:00
Andy Miller
62302c0420 Merge branch '1.4' of https://github.com/getgrav/grav into 1.4 2017-12-18 12:18:17 -07:00
Andy Miller
2d93c1ace0 title change 2017-12-18 12:18:10 -07:00
Matias Griese
42de0bbb32 Changelog update 2017-12-18 09:16:52 +02:00
Andy Miller
3e15de74f4 Added header_var twig function 2017-12-17 13:45:48 -07:00
Andy Miller
a1c804ed41 Changed title 2017-12-15 16:08:53 -07:00
Andy Miller
559fde4e00 Tweak to default page 2017-12-15 15:54:50 -07:00
Andy Miller
1f1c429fc4 updated changelog 2017-12-15 15:27:23 -07:00
Andy Miller
e9b7c8dad2 Merge branch '1.4' of https://github.com/getgrav/grav into 1.4
# Conflicts:
#	CHANGELOG.md
2017-12-15 15:13:29 -07:00
Andy Miller
b6e5bfa7f3 Fixed BadMethodException in GPM updates #1784 2017-12-15 15:12:26 -07:00
Matias Griese
fb106b1106 Removed constructor from ObjectInterface 2017-12-15 21:31:40 +02:00
Matias Griese
34e3be710f Merge branch 'develop' of https://github.com/getgrav/grav into 1.4
# Conflicts:
#	composer.lock
2017-12-15 21:28:51 +02:00
Andy Miller
21674194e0 Updated changelog 2017-12-13 22:19:43 -07:00
Andy Miller
aadb8bb2ea Added some new theme twig functions 2017-12-13 21:51:06 -07:00
Andy Miller
af1465278d Updated vendor libraries to latest 2017-12-12 11:55:10 -07:00
Andy Miller
a8f5468f6a Updated vendor libs 2017-12-12 11:54:01 -07:00
Andy Miller
592c3ea5e2 Merge branch '1.4' of https://github.com/getgrav/grav into 1.4 2017-12-12 11:29:51 -07:00
Andy Miller
97b088b959 Updated welcome page 2017-12-12 11:29:02 -07:00
Matias Griese
3fec18e5e5 Composer update 2017-12-12 12:47:12 +02:00
Matias Griese
b15c5d7888 Merge branch 'develop' of https://github.com/getgrav/grav into 1.4 2017-12-12 12:45:14 +02:00
Matias Griese
24898de2ba Force composer to use PHP 5.5.9 compatible libraries, add composer security advisories check 2017-12-12 12:44:01 +02:00
Andy Miller
d629391ad9 updated changelog 2017-12-11 15:08:20 -07:00
Andy Miller
7ec66b2bf2 Transferred copyright 2017-12-11 15:08:05 -07:00
Andy Miller
b5f75acf50 Fix array casting with DOM elements 2017-12-11 13:17:03 -07:00
Djamil Legato
255f2f1db6 Changed GPM channel to testing 2017-12-11 11:56:07 -08:00
Djamil Legato
d34fad65b5 Removed Page interfaces 2017-12-11 11:49:19 -08:00
Djamil Legato
8d82fce89f Updated version to 1.4.0-beta.1 2017-12-11 11:46:30 -08:00
Matias Griese
bfd8a087bf Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
#	system/defines.php
2017-12-11 20:54:33 +02:00
Djamil Legato
cc648b885c Updated grav version for 2.0 branch 2017-12-08 18:14:04 -08:00
Andy Miller
6628bbbe2f Fix for illegal offset scheme errors 2017-12-08 11:52:48 -07:00
Andy Miller
f9f8cb8b1f Merge branch 'release/1.3.10' 2017-12-06 06:43:37 -07:00
Andy Miller
70f6529e32 Merge tag '1.3.10' into develop
Release v1.3.10
2017-12-06 06:43:37 -07:00
Andy Miller
671e0d47ea Prepare for release 2017-12-06 06:43:28 -07:00
Andy Miller
e9f493096b Updated changelog 2017-12-06 06:43:03 -07:00
Andy Miller
ee2f5663c4 Revert "Fixed issue #1742 where the creation of GPM object tried to connect to Remote repositories even if only Local package was needed (#1746)"
This reverts commit 2cc34151df.
2017-12-06 06:41:47 -07:00
Andy Miller
d4204f13f8 Merge branch 'release/1.3.9' 2017-12-05 17:16:13 -07:00
Andy Miller
1a477609be Merge tag '1.3.9' into develop
Release v1.3.9
2017-12-05 17:16:13 -07:00
Andy Miller
0554b25c78 Prepare for release 2017-12-05 17:16:05 -07:00
Andy Miller
f4e7cbaa6e updated changelog 2017-12-05 17:15:28 -07:00
Andy Miller
83bfc1fd0f Added support for intl_enabled option 2017-12-05 17:03:05 -07:00
Andy Miller
30439b864d Added a quick type test for #1764 2017-12-05 11:04:59 -07:00
Andy Miller
80999121a9 Potential fix for #1764 2017-12-05 10:51:44 -07:00
Andy Miller
ca0d0bb373 Added a comment 2017-12-05 10:50:39 -07:00
Andy Miller
345578a05d Force field.multiple: true for checkboxes to use min/max rules 2017-12-04 22:32:26 -07:00
Andy Miller
1f0537124a Merge branch 'develop' of https://github.com/getgrav/grav into develop 2017-12-04 18:14:25 -07:00
Andy Miller
2a2b9a12a7 Fix for checkbox validation form#216 2017-12-04 18:14:20 -07:00
Iain Gillis
5a19e05931 Fix typo (#1770) 2017-12-02 22:08:55 -07:00
Matias Griese
acbc85773c Merge remote-tracking branch 'origin/2.0' into 2.0 2017-12-01 20:41:25 +02:00
Djamil Legato
b2fc101078 Merge branch 'develop' into 2.0 2017-12-01 10:41:06 -08:00
Matias Griese
d943c559e2 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-12-01 20:40:36 +02:00
Andy Miller
6ae4680fcb Move system twig templates to last 2017-12-01 11:38:38 -07:00
Matias Griese
0524bd2083 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-12-01 14:49:26 +02:00
Andy Miller
b4cf7899bb cleanup 2017-12-01 00:01:23 -07:00
Andy Miller
eac16911d0 Added new core twig templates 2017-11-30 18:31:13 -07:00
Andy Miller
21bef62b82 Added get and set FlashCookieObject() methods 2017-11-30 18:28:25 -07:00
Matias Griese
66d8269a1b Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-11-29 10:46:46 +02:00
Andy Miller
a1eccfdb61 Updated changelog 2017-11-28 12:58:04 -07:00
Matias Griese
90e05694d3 Merge remote-tracking branch 'origin/develop' into develop 2017-11-28 14:58:07 +02:00
Matias Griese
b97ac503a1 Add filter for item-list type (removes empty items from the list) 2017-11-28 14:57:53 +02:00
Agustin Villalba
2cc34151df Fixed issue #1742 where the creation of GPM object tried to connect to Remote repositories even if only Local package was needed (#1746)
All good, thanks!
2017-11-27 21:15:09 -07:00
Iain Gillis
4c160533c2 Add additional controls to HTML5 audio attributes (#1756)
Adds support for `autoplay`, `controls`, `loop`, and `preload` attributes, with rudimentary validation for preload.

Those for `autoplay`, `controls`, and `loop` are copied directly from pfcloutier-druide/aaa3f82

See also #1442.
2017-11-27 21:12:56 -07:00
Matias Griese
59dd0d1212 Fixed CSS Pipeline failing with Google remote fonts if the file was minified (#1261) (#1763)
* Fixed CSS Pipeline failing with Google remote fonts if the file was minified (#1261)

* Assets: Make tag check ungreedy again -- inline js may have tags in the content
2017-11-27 21:12:33 -07:00
Andy Miller
3bf7e38e52 Updated changelog 2017-11-27 18:30:10 -07:00
Andy Miller
362ee4c9eb Fix for URL encoding with Multibyte folders 2017-11-27 18:27:18 -07:00
Andy Miller
2462331884 Fix for MB Markdown links #1749 2017-11-27 18:21:08 -07:00
Matias Griese
ddd451b94c Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-11-17 08:04:41 +02:00
Matias Griese
cb4147a4bd Fixed token creation issue with Uri params like /id:3 2017-11-17 08:03:58 +02:00
Wensheng Yan
72f3a01abf Update Cache.php (#1745)
make sure find resource return valid path.
2017-11-15 18:35:44 -07:00
Matias Griese
aa2341dfb5 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	system/src/Grav/Common/User/User.php
2017-11-13 09:48:35 +02:00
Matias Griese
31e3c1c295 Remove support for config.user, it was broken and bad practise 2017-11-10 22:07:29 +02:00
Andy Miller
37891a1032 Minor optimizations 2017-11-08 05:34:42 -07:00
Andy Miller
70284e1517 Sort using folder name #1740 2017-11-07 18:38:35 -07:00
Andy Miller
0bca1dcb48 Fix for custom_base_url issues #1736 2017-11-07 17:50:06 -07:00
Andy Miller
36f9865c0b Couple of utility functions 2017-11-07 17:44:40 -07:00
Matias Griese
cd48551630 Fix changelog 2017-11-07 17:00:34 +02:00
Matias Griese
0ff130650f Merge remote-tracking branch 'origin/develop' into develop 2017-11-07 16:57:59 +02:00
Matias Griese
9b445ac5b6 Fixed "Invalid AJAX response" When using Built-in PHP Webserver in Windows (#1258) 2017-11-07 16:57:52 +02:00
Andy Miller
c21248fcc2 Updated changelog 2017-11-06 19:52:05 -07:00
Andy Miller
88aa4c5ec9 Added ability to toggle lowercase urls 2017-11-06 19:50:59 -07:00
Matias Griese
b31490e52d Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-11-06 10:28:10 +02:00
Matias Griese
0fd22ad933 Uri: Encode user and password to prevent issues in browsers 2017-11-06 10:26:17 +02:00
Matias Griese
980b2b67cd Code readability improvements 2017-11-06 10:18:22 +02:00
Andy Miller
00b56da220 Updated changelog 2017-11-02 14:51:13 -06:00
Andy Miller
fef6bdde5f Revert "Added system option to enable case insensitive urls. (#1638)"
This reverts commit 481fe1903e.
2017-11-02 14:48:42 -06:00
Sam
6f7938e939 Update README.md (#1705) 2017-11-01 17:21:14 -06:00
Viktor
2cd469cd7c Update CompiledFile.php (#1693)
const CACHE_DIR already defined with trailing slash

```php
define('CACHE_DIR', ROOT_DIR . 'cache/');
```
2017-11-01 17:20:38 -06:00
Matias Griese
cd15055280 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-11-01 07:48:45 +02:00
Matias Griese
3380577e40 Improved script/style tag parameter handling 2017-11-01 07:45:59 +02:00
Andy Miller
0895b15489 Updated changelog 2017-10-31 16:38:16 -06:00
Andy Miller
d9062b60d6 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2017-10-31 16:36:47 -06:00
Andy Miller
3f4049031d use Event object in Page/Pages events 2017-10-31 16:36:43 -06:00
Andy Miller
c81ce71074 Fix active() + activeChild() to work with UTF-8 #1727 2017-10-31 16:36:13 -06:00
Matias Griese
7c19d1520d Tweaked script/style tag formatting 2017-10-31 20:02:26 +02:00
Matias Griese
84789cbcd4 Added {% script %} and {% style %} tags for Twig templates 2017-10-31 16:50:05 +02:00
cofunin
f84ffd235b Fix ignoring media in modular.yaml (#1725) 2017-10-30 18:15:39 -06:00
Andy Miller
1ca6181856 Added onPageProcessed for dynamic addPage() calls 2017-10-30 16:19:13 -06:00
Andy Miller
f17954a5db Added a copy method to Medium object 2017-10-30 15:36:52 -06:00
Matias Griese
586fcf42ab Added {% try %} ... {% catch %} Error: {{ e.message }} {% endcatch %} tag to allow basic exception handling inside Twig 2017-10-30 13:33:45 +02:00
Matias Griese
18c597b3d2 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-10-27 11:49:43 +03:00
Andy Miller
acea401a3d Merge branch 'release/1.3.8' 2017-10-26 18:37:27 -06:00
Andy Miller
e9e4106d22 Merge tag '1.3.8' into develop
Release v1.3.8
2017-10-26 18:37:27 -06:00
Andy Miller
0ec7158102 Prepare for release 2017-10-26 18:37:17 -06:00
Matias Griese
d00d8cb668 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-10-25 11:07:39 +03:00
Andy Miller
d3695b2faa Fixed missing image file not throwing 404 p#1713 2017-10-23 16:19:08 -06:00
Andy Miller
0668a47758 Fixed GPM update issue with filtered slugs #1711 2017-10-23 16:13:22 -06:00
Andy Miller
ca645ef476 updated changelog 2017-10-19 22:13:36 -04:00
Andy Miller
3ff5f79561 Added manual order capability to Page media 2017-10-19 22:10:12 -04:00
Djamil Legato
b5c8b70163 More media order changes 2017-10-19 18:01:37 -04:00
Djamil Legato
173a70c017 Updated default yaml with media order 2017-10-19 17:39:10 -04:00
Djamil Legato
ae143814fb Updated default with new media order 2017-10-19 17:37:29 -04:00
Benoît Rouleau
eb52f670b9 fix nonsense logic (#1709) 2017-10-19 16:53:31 -04:00
Sam
dd166ce25c Update CONTRIBUTING.md copywriting (#1706) 2017-10-19 09:19:03 -04:00
Andy Miller
85bf4406ed Merge tag '1.3.7' into develop
Release v1.3.7
2017-10-18 16:35:41 -04:00
Matias Griese
98dca95c15 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-10-18 09:16:46 +03:00
Matias Griese
731fe500ee Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-10-13 11:41:10 +03:00
Matias Griese
c7be8ebb22 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-10-12 10:50:08 +03:00
Matias Griese
4e6738cbc5 Composer update 2017-10-04 15:24:45 +03:00
Matias Griese
0d4a5a22c8 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
#	composer.lock
#	system/src/Grav/Common/Twig/TwigExtension.php
2017-10-04 13:09:31 +03:00
Matias Griese
8b3949b7d9 Fixed nested object access by Object::getNestedProperty() 2017-09-27 10:13:26 +03:00
Matias Griese
a535e8547a Fix bug 2017-09-26 19:02:51 +03:00
Matias Griese
0fd6fda4d8 Add method ObjectCollection::collectionGroup() 2017-09-26 18:26:39 +03:00
Matias Griese
71b11366bb Add support to serialize Object properties 2017-09-25 14:17:14 +03:00
Matias Griese
588c509194 Add ArrayCollection::chunk() function 2017-09-15 14:05:21 +03:00
mahagr
37b5818507 Fix bug on Object ArrayAccess 2017-09-14 15:58:16 +03:00
Matias Griese
23592b8a76 Major update on Object classes (backwards incompatible) 2017-09-13 09:50:34 +03:00
Matias Griese
62389975a2 Object code cleanup 2017-09-08 15:50:05 +03:00
Matias Griese
c0e1e155d7 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	composer.json
#	composer.lock
#	system/src/Grav/Common/Twig/TwigExtension.php
2017-09-08 14:54:50 +03:00
Matias Griese
8c3210332e Add ArrayObject and make Object not to implement ArrayAccess interface. Remove Toolbox dependency. 2017-09-08 14:44:37 +03:00
Matias Griese
758ccadb07 Code cleanup 2017-09-08 14:40:16 +03:00
Matias Griese
cd11b14998 Add FileCollectionInterface and AbstractFileCollection classes 2017-09-08 14:39:33 +03:00
Matias Griese
cdb5d591e8 Fix a bug in MemoryCache 2017-08-30 14:08:57 +03:00
Matias Griese
fab81b923b Composer update 2017-08-29 11:17:54 +03:00
Matias Griese
1bae601ad9 Add new FileCache class 2017-08-29 11:17:38 +03:00
Matias Griese
a4795a9df1 Add new SessionCache class 2017-08-29 10:37:14 +03:00
Matias Griese
0644eac7dc Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
#	system/src/Grav/Common/Twig/TwigExtension.php
2017-08-29 08:56:04 +03:00
Matias Griese
96ee41a3dd Follow PSR-2 in Grav\Framework 2017-08-18 12:28:13 +03:00
Matias Griese
d15eb0e6ad Composer update 2017-08-17 10:01:42 +03:00
Matias Griese
c3066cd491 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-08-17 09:59:29 +03:00
Matias Griese
557a3b80dd Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	composer.lock
2017-08-16 09:30:09 +03:00
Djamil Legato
f89fe0ea1b Merge branch 'develop' into 2.0 2017-08-14 15:17:58 -07:00
Matias Griese
ad5cddf222 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-08-14 20:15:43 +03:00
Matias Griese
fb0e086f57 Composer: Force doctrine/cache to use v1.6 (with PHP 5.5 support) 2017-08-10 21:13:14 +03:00
Matias Griese
53611c8627 Composer: Use develop version of rockettheme/toolbox 2017-08-10 21:08:42 +03:00
Matias Griese
dbebd14391 Because of B/C issues, login/logout code needed to be moved into the Login plugin 2017-08-10 11:40:42 +03:00
Matias Griese
6e511d0b20 Improve login/logout logic 2017-08-08 17:50:26 +03:00
Matias Griese
9685ab4a18 Added $grav->login() and $grav->logout() functions with event hooks for plugins
Added events `onUserLoginAuthenticate`, `onUserLoginAuthorize`, `onUserLoginFailure`, `onUserLogin`, `onUserLogout`
2017-08-08 14:31:53 +03:00
mahagr
670f0ce1d9 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-07-19 15:35:05 -06:00
Andy Miller
6fadaa0789 Added nicenumber twig filter 2017-07-19 14:28:57 -06:00
mahagr
039d2286fb Add Object::getKey() function 2017-07-18 15:37:04 -06:00
mahagr
0cde375953 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-07-18 15:34:41 -06:00
Matias Griese
a59fc7b8b8 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-07-04 09:51:44 +03:00
Matias Griese
ee079635bf Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-06-28 10:37:46 +03:00
Matias Griese
ce319de97c Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-06-12 09:30:11 +03:00
Matias Griese
1bd3d2693d Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-06-08 11:29:08 +03:00
Matias Griese
3468f59ac7 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-06-06 12:20:04 +03:00
Matias Griese
c4fac41fe3 Improve CacheTrait::getMultiple() 2017-05-31 13:35:14 +03:00
Matias Griese
512aae350e Fix cloning issues with ObjectCollection 2017-05-31 13:34:04 +03:00
Matias Griese
673131926a Improve caching functions 2017-05-29 14:30:52 +03:00
Matias Griese
668c9801eb Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-05-29 10:12:20 +03:00
Matias Griese
6dbf704a13 Implement memory and chain cache 2017-05-29 10:12:02 +03:00
Matias Griese
83943ce70d Namespace and TTL not needed in MemoryCache adapter 2017-05-26 13:12:18 +03:00
Matias Griese
99eff9587c Implement MemoryCache adapter 2017-05-26 12:27:48 +03:00
Matias Griese
5ec844d883 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-05-26 11:57:00 +03:00
Matias Griese
7f3f634e3e Merge branch 'feature/debug-json' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-05-24 15:18:23 +03:00
Matias Griese
b2070c8ab5 Fix error on missing renderer if using unknown file extension 2017-05-24 15:15:14 +03:00
Matias Griese
6ffc062531 Merge branch 'develop' of https://github.com/getgrav/grav into feature/debug-json
# Conflicts:
#	CHANGELOG.md
2017-05-24 15:13:11 +03:00
Matias Griese
4cc502c477 Merge branch 'feature/debug-json' of https://github.com/getgrav/grav into 2.0 2017-05-22 15:10:41 +03:00
Matias Griese
7ca0f8711c Make it possible to include debug bar also into non-HTML responses 2017-05-22 14:55:26 +03:00
Matias Griese
78cb767172 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-05-22 09:09:32 +03:00
Matias Griese
9d918ad111 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-05-19 08:09:43 +03:00
Matias Griese
cb29d81529 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-05-18 17:45:34 +03:00
Matias Griese
dd2384622c Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-05-18 13:09:52 +03:00
Matias Griese
4b14a0db7a Merge branch 'develop' of https://github.com/getgrav/grav into 2.0 2017-05-18 09:52:06 +03:00
Matias Griese
bf687e6fa6 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-05-18 09:45:03 +03:00
Matias Griese
012841617a Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	CHANGELOG.md
2017-05-17 09:27:02 +03:00
Matias Griese
0269ec579b Object collections: Allow property get, set and grouping for nested arrays 2017-05-16 19:04:24 +03:00
Matias Griese
91a6224156 Rename Object::offsetLoad_*() functions, nested array access 2017-05-16 19:03:23 +03:00
Matias Griese
b4801560be Update docblocks 2017-05-16 12:24:41 +03:00
Matias Griese
c7bcbeabd9 Add support for loading properties in Object class 2017-05-16 12:00:49 +03:00
Matias Griese
41c130cd43 Merge branch 'develop' of https://github.com/getgrav/grav into 2.0
# Conflicts:
#	composer.lock
2017-05-16 10:54:16 +03:00
Djamil Legato
4f27ff1100 Merge branch 'develop' into 2.0
# Conflicts:
#	composer.json
#	composer.lock
2017-05-12 14:08:47 -07:00
Matias Griese
d1654a3e32 Added Grav\Framework\Cache classes providing PSR-16 Simple Cache implementation 2017-05-11 13:34:43 +03:00
Matias Griese
77c2e47b95 Greatly simplify Object classes 2017-05-11 13:20:01 +03:00
Matias Griese
ec4d451d7f Fix for PHP 5.5 support in ObjectCollectionTrait 2017-05-10 11:34:23 +03:00
Matias Griese
65c0c4438f Use older version of doctrine/collections (PHP 5.5 support) 2017-05-10 11:02:51 +03:00
Matias Griese
6685dadddf Oops, accidentally merged local 2.0 branch into develop, revert GravTrait deprecation and add back new Framework classes 2017-05-10 10:21:01 +03:00
453 changed files with 50930 additions and 10695 deletions

View File

@@ -11,9 +11,9 @@ git:
url: https://github.com/getgrav/grav-plugin-markdown-notices
path: user/plugins/markdown-notices
branch: master
antimatter:
url: https://github.com/getgrav/grav-theme-antimatter
path: user/themes/antimatter
quark:
url: https://github.com/getgrav/grav-theme-quark
path: user/themes/quark
branch: master
links:
problems:
@@ -28,7 +28,7 @@ links:
src: grav-plugin-markdown-notices
path: user/plugins/markdown-notices
scm: github
antimatter:
src: grav-theme-antimatter
path: user/themes/antimatter
quark:
src: grav-theme-quark
path: user/themes/quark
scm: github

View File

@@ -13,6 +13,5 @@ indent_style = space
indent_size = 4
# 2 space indentation
[*.yaml, *.yml]
indent_style = space
[*.{yaml,yml}]
indent_size = 2

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

3
.gitignore vendored
View File

@@ -37,9 +37,10 @@ Thumbs.db
# phpstorm
.idea/*
user/config/security.yaml
# testing stuff
tests/_output/*
tests/_support/_generated/*
tests/cache/*
tests/error.log
system/templates/testing/*

View File

@@ -1,9 +1,9 @@
language: php
php:
- '5.5'
- '5.6'
- '7.0.21'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
branches:
only:
- develop
@@ -13,13 +13,6 @@ notifications:
email:
on_success: never
on_failure: always
hipchat:
# hipchat_api@grav
rooms:
- secure: "bqO0wM1B7bJnQw2fuhquSXEqI9gw6WmFytIh9sEWXzbYTzTUP5t0PcKOd3FT2BNMRaDxPJLVl+vG/oqmqDUBkEmOGcG504IQjeNzZqnMz0tXQMIcCc22Las9tFfc4Jf6RVi/qGomFtHGE9Wgii+TAN4zqZaufbNjwd8SyjO0+W8="
template:
- '%{repository}#%{build_number} (%{branch}): Travis Job Finished [%{duration}] (<a href="%{build_url}">Details</a>)'
format: html
slack:
secure: dowksPsxxCxGKT6nis5hUgkp6+ZDAhoqzQHF9rJnx4hx0iEygPhVBs7pKl9yL2jubYJoLs+EXwE7z1dYgDAEJh4BnfrCokCMLpFGcxVxQC/HeAUdSQ2/RtdBYR5PRT75ScaFpqM/SfXXZVtnwVXAw9Z+JC6BjQ9vmn23m51Jw4k=
env:
@@ -53,10 +46,10 @@ before_install:
- if [ $TRAVIS_BRANCH == 'develop' ] || [ $TRAVIS_PULL_REQUEST != 'false' ]; then
composer install --dev --prefer-dist;
fi
- if [ $TRAVIS_BRANCH != 'develop' ] && [ $TRAVIS_PHP_VERSION == "5.6" ] && [ $TRAVIS_PULL_REQUEST == "false" ]; then
- if [ $TRAVIS_BRANCH != 'develop' ] && [ $TRAVIS_PHP_VERSION == "7.1" ] && [ $TRAVIS_PULL_REQUEST == "false" ]; then
export TRAVIS_TAG=$(curl --fail --user "${GH_API_USER}" -s https://api.github.com/repos/getgrav/grav/releases/latest | grep tag_name | head -n 1 | cut -d '"' -f 4);
eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.8 bash)";
go get github.com/aktau/github-release;
eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.13 bash)";
go get github.com/github-release/github-release;
git clone --quiet --depth=50 --branch=master https://${BB_TOKEN}bitbucket.org/rockettheme/grav-devtools.git $RT_DEVTOOLS &>/dev/null;
if [ ! -z "$TRAVIS_TAG" ]; then
cd ${RT_DEVTOOLS};
@@ -64,13 +57,13 @@ before_install:
fi;
fi
before_script:
- if [ $TRAVIS_PHP_VERSION != 'hhvm' ]; then phpenv config-rm xdebug.ini; fi
- phpenv config-rm xdebug.ini
script:
- if [ $TRAVIS_BRANCH == 'develop' ] || [ $TRAVIS_PULL_REQUEST != 'false' ]; then
vendor/bin/codecept run;
fi
- echo "Latest Release Tag - ${TRAVIS_TAG}"
- if [ ! -z "$TRAVIS_TAG" ] && [ $TRAVIS_BRANCH != 'develop' ] && [ $TRAVIS_PHP_VERSION == "5.6" ] && [ $TRAVIS_PULL_REQUEST == "false" ]; then
- if [ ! -z "$TRAVIS_TAG" ] && [ $TRAVIS_BRANCH != 'develop' ] && [ $TRAVIS_PHP_VERSION == "7.1" ] && [ $TRAVIS_PULL_REQUEST == "false" ]; then
FILES="$RT_DEVTOOLS/grav-dist/*.zip";
for file in ${FILES[@]}; do
NAME=${file##*/};

View File

@@ -1,3 +1,804 @@
# v1.6.25
## 05/14/2020
1. [](#improved)
* Added system configuration support for `HTTP_X_Forwarded` headers (host disabled by default)
* Updated `PHPUserAgentParser` to 1.0.0
* Bump `Go` to version 1.13 in `travis.yaml`
# v1.6.24
## 04/27/2020
1. [](#improved)
* Added support for `X-Forwarded-Host` [#2891](https://github.com/getgrav/grav/pull/2891)
* Disable XDebug in Travis builds
# v1.6.23
## 03/19/2020
1. [](#new)
* Moved `Parsedown` 1.6 and `ParsedownExtra` 0.7 into `Grav\Framework\Parsedown` to allow fixes
* Added `aliases.php` with references to direct `\Parsedown` and `\ParsedownExtra` references
1. [](#improved)
* Upgraded `jQuery` to latest 3.4.1 version [#2859](https://github.com/getgrav/grav/issues/2859)
1. [](#bugfix)
* Fixed PHP 7.4 issue in ParsedownExtra [#2832](https://github.com/getgrav/grav/issues/2832)
* Fix for [user reported](https://twitter.com/OriginalSicksec) CVE path-based open redirect
* Fix for `stream_set_option` error with PHP 7.4 via Toolbox#28 [#2850](https://github.com/getgrav/grav/issues/2850)
# v1.6.22
## 03/05/2020
1. [](#new)
* Added `Pages::reset()` method
1. [](#improved)
* Updated Negotiation library to address issues [#2513](https://github.com/getgrav/grav/issues/2513)
1. [](#bugfix)
* Fixed issue with search plugins not being able to switch between page translations
* Fixed issues with `Pages::baseRoute()` not picking up active language reliably
* Reverted `validation: strict` fix as it breaks sites, see [#1273](https://github.com/getgrav/grav/issues/1273)
# v1.6.21
## 02/11/2020
1. [](#new)
* Added `ConsoleCommand::setLanguage()` method to set language to be used from CLI
* Added `ConsoleCommand::initializeGrav()` method to properly set up Grav instance to be used from CLI
* Added `ConsoleCommand::initializePlugins()`method to properly set up all plugins to be used from CLI
* Added `ConsoleCommand::initializeThemes()`method to properly set up current theme to be used from CLI
* Added `ConsoleCommand::initializePages()` method to properly set up pages to be used from CLI
1. [](#improved)
* Vendor updates
1. [](#bugfix)
* Fixed `bin/plugin` CLI calling `$themes->init()` way too early (removed it, use above methods instead)
* Fixed call to `$grav['page']` crashing CLI
* Fixed encoding problems when PHP INI setting `default_charset` is not `utf-8` [#2154](https://github.com/getgrav/grav/issues/2154)
# v1.6.20
## 02/03/2020
1. [](#bugfix)
* Fixed incorrect routing caused by `str_replace()` in `Uri::init()` [#2754](https://github.com/getgrav/grav/issues/2754)
* Fixed session cookie is being set twice in the HTTP header [#2745](https://github.com/getgrav/grav/issues/2745)
* Fixed session not restarting if user was invalid (downgrading from Grav 1.7)
* Fixed filesystem iterator calls with non-existing folders
* Fixed `checkbox` field not being saved, requires also Form v4.0.2 [#1225](https://github.com/getgrav/grav/issues/1225)
* Fixed `validation: strict` not working in blueprints [#1273](https://github.com/getgrav/grav/issues/1273)
* Fixed `Data::filter()` removing empty fields (such as empty list) by default [#2805](https://github.com/getgrav/grav/issues/2805)
* Fixed fatal error with non-integer page param value [#2803](https://github.com/getgrav/grav/issues/2803)
* Fixed `Assets::addInlineJs()` parameter type mismatch between v1.5 and v1.6 [#2659](https://github.com/getgrav/grav/issues/2659)
* Fixed `site.metadata` saving issues [#2615](https://github.com/getgrav/grav/issues/2615)
# v1.6.19
## 12/04/2019
1. [](#new)
* Catch PHP 7.4 deprecation messages and report them in debugbar instead of throwing fatal error
1. [](#bugfix)
* Fixed fatal error when calling `{{ grav.undefined }}`
* Fixed multiple issues when there are no pages in the site
* PHP 7.4 fix for [#2750](https://github.com/getgrav/grav/issues/2750)
# v1.6.18
## 12/02/2019
1. [](#bugfix)
* PHP 7.4 fix in `Pages::buildSort()`
* Updated vendor libraries for PHP 7.4 fixes in Twig and other libraries
* Fixed fatal error when `$page->id()` is null [#2731](https://github.com/getgrav/grav/pull/2731)
* Fixed cache conflicts on pages with no set id
* Fix rewrite rule for for `lighttpd` default config [#721](https://github.com/getgrav/grav/pull/2721)
# v1.6.17
## 11/06/2019
1. [](#new)
* Added working ETag (304 Not Modified) support based on the final rendered HTML
1. [](#improved)
* Safer file handling + customizable null char replacement in `CsvFormatter::decode()`
* Change of Behavior: `Inflector::hyphenize` will now automatically trim dashes at beginning and end of a string.
* Change in Behavior for `Folder::all()` so no longer fails if trying to copy non-existent dot file [#2581](https://github.com/getgrav/grav/pull/2581)
* renamed composer `test-plugins` script to `phpstan-plugins` to be more explicit [#2637](https://github.com/getgrav/grav/pull/2637)
1. [](#bugfix)
* Fixed PHP 7.1 bug in FlexMedia
* Fix cache image generation when using cropResize [#2639](https://github.com/getgrav/grav/pull/2639)
* Fix `array_merge()` exception with non-array page header metadata [#2701](https://github.com/getgrav/grav/pull/2701)
# v1.6.16
## 09/19/2019
1. [](#bugfix)
* Fixed Flex user creation if file storage is being used [#2444](https://github.com/getgrav/grav/issues/2444)
* Fixed `Badly encoded JSON data` warning when uploading files [#2663](https://github.com/getgrav/grav/issues/2663)
# v1.6.15
## 08/20/2019
1. [](#improved)
* Improved robots.txt [#2632](https://github.com/getgrav/grav/issues/2632)
1. [](#bugfix)
* Fixed broken markdown Twig tag [#2635](https://github.com/getgrav/grav/issues/2635)
* Force Symfony 4.2 in Grav 1.6 to remove a bunch of deprecated messages
# v1.6.14
## 08/18/2019
1. [](#bugfix)
* Actually include fix for `system\router.php` [#2627](https://github.com/getgrav/grav/issues/2627)
# v1.6.13
## 08/16/2019
1. [](#bugfix)
* Regression fix for `system\router.php` [#2627](https://github.com/getgrav/grav/issues/2627)
# v1.6.12
## 08/14/2019
1. [](#new)
* Added support for custom `FormFlash` save locations
* Added a new `Utils::arrayLower()` method for lowercasing arrays
* Support new GRAV_BASEDIR environment variable [#2541](https://github.com/getgrav/grav/pull/2541)
* Allow users to override plugin handler priorities [#2165](https://github.com/getgrav/grav/pull/2165)
1. [](#improved)
* Use new `Utils::getSupportedPageTypes()` to enforce `html,htm` at the front of the list [#2531](https://github.com/getgrav/grav/issues/2531)
* Updated vendor libraries
* Markdown filter is now page-aware so that it works with modular references [admin#1731](https://github.com/getgrav/grav-plugin-admin/issues/1731)
* Check of `GRAV_USER_INSTANCE` constant is already defined [#2621](https://github.com/getgrav/grav/pull/2621)
1. [](#bugfix)
* Fixed some potential issues when `$grav['user']` is not set
* Fixed error when calling `Media::add($name, null)`
* Fixed `url()` returning wrong path if using stream with grav root path in it, eg: `user-data://shop` when Grav is in `/shop`
* Fixed `url()` not returning a path to non-existing file (`user-data://shop` => `/user/data/shop`) if it is set to fail gracefully
* Fixed `url()` returning false on unknown streams, such as `ftp://domain.com`, they should be treated as external URL
* Fixed Flex User to have permissions to save and delete his own user
* Fixed new Flex User creation not being possible because of username could not be given
* Fixed fatal error 'Expiration date must be an integer, a DateInterval or null, "double" given' [#2529](https://github.com/getgrav/grav/issues/2529)
* Fixed non-existing Flex object having a bad media folder
* Fixed collections using `page@.self:` should allow modular pages if requested
* Fixed an error when trying to delete a file from non-existing Flex Object
* Fixed `FlexObject::exists()` failing sometimes just after the object has been saved
* Fixed CSV formatter not encoding strings with `"` and `,` properly
* Fixed var order in `Validation.php` [#2610](https://github.com/getgrav/grav/issues/2610)
# v1.6.11
## 06/21/2019
1. [](#new)
* Added `FormTrait::getAllFlashes()` method to get all the available form flash objects for the form
* Added creation and update timestamps to `FormFlash` objects
1. [](#improved)
* Added `FormFlashInterface`, changed constructor to take `$config` array
1. [](#bugfix)
* Fixed error in `ImageMedium::url()` if the image cache folder does not exist
* Fixed empty form flash name after file upload or form state update
* Fixed a bug in `Route::withParam()` method
* Fixed issue with `FormFlash` objects when there is no session initialized
# v1.6.10
## 06/14/2019
1. [](#improved)
* Added **page blueprints** to `YamlLinter` CLI and Admin reports
* Removed `Gitter` and `Slack` [#2502](https://github.com/getgrav/grav/issues/2502)
* Optimizations for Plugin/Theme loading
* Generalized markdown classes so they can be used outside of `Page` scope with a custom `Excerpts` class instance
* Change minimal port number to 0 (unix socket) [#2452](https://github.com/getgrav/grav/issues/2452)
1. [](#bugfix)
* Force question to install demo content in theme update [#2493](https://github.com/getgrav/grav/issues/2493)
* Fixed GPM errors from blueprints not being logged [#2505](https://github.com/getgrav/grav/issues/2505)
* Don't error when IP is invalid [#2507](https://github.com/getgrav/grav/issues/2507)
* Fixed regression with `bin/plugin` not listing the plugins available (1c725c0)
* Fixed bitwise operator in `TwigExtension::exifFunc()` [#2518](https://github.com/getgrav/grav/issues/2518)
* Fixed issue with lang prefix incorrectly identifying as admin [#2511](https://github.com/getgrav/grav/issues/2511)
* Fixed issue with `U0ils::pathPrefixedBYLanguageCode()` and trailing slash [#2510](https://github.com/getgrav/grav/issues/2511)
* Fixed regresssion issue of `Utils::Url()` not returning `false` on failure. Added new optional `fail_gracefully` 3rd attribute to return string that caused failure [#2524](https://github.com/getgrav/grav/issues/2524)
# v1.6.9
## 05/09/2019
1. [](#new)
* Added `Route::withoutParams()` methods
* Added `Pages::setCheckMethod()` method to override page configuration in Admin Plugin
* Added `Cache::clearCache('invalidate')` parameter for just invalidating the cache without deleting any cached files
* Made `UserCollectionInderface` to extend `Countable` to get the count of existing users
1. [](#improved)
* Flex admin: added default search options for flex objects
* Flex collection and object now fall back to the default template if template file doesn't exist
* Updated Vendor libraries including Twig 1.40.1
* Updated language files from `https://crowdin.com/project/grav-core`
1. [](#bugfix)
* Fixed `$grav['route']` from being modified when the route instance gets modified
* Fixed Assets options array mixed with standalone priority [#2477](https://github.com/getgrav/grav/issues/2477)
* Fix for `avatar_url` provided by 3rd party providers
* Fixed non standard `lang` code lengths in `Utils` and `Session` detection
* Fixed saving a new object in Flex `SimpleStorage`
* Fixed exception in `Flex::getDirectories()` if the first parameter is set
* Output correct "Last Updated" in `bin/gpm info` command
* Checkbox getting interpreted as string, so created new `Validation::filterCheckbox()`
* Fixed backwards compatibility to `select` field with `selectize.create` set to true [git-sync#141](https://github.com/trilbymedia/grav-plugin-git-sync/issues/141)
* Fixed `YamlFormatter::decode()` to always return array [#2494](https://github.com/getgrav/grav/pull/2494)
* Fixed empty `$grav['request']->getAttribute('route')->getExtension()`
# v1.6.8
## 04/23/2019
1. [](#new)
* Added `FlexCollection::filterBy()` method
1. [](#bugfix)
* Revert `Use Null Coalesce Operator` [#2466](https://github.com/getgrav/grav/pull/2466)
* Fixed `FormTrait::render()` not providing config variable
* Updated `bin/grav clean` to clear `cache/compiled` and `user/config/security.yaml`
# v1.6.7
## 04/22/2019
1. [](#new)
* Added a new `bin/grav yamllinter` CLI command to find YAML Linting issues [#2468](https://github.com/getgrav/grav/issues/2468#issuecomment-485151681)
1. [](#improved)
* Improve `FormTrait` backwards compatibility with existing forms
* Added a new `Utils::getSubnet()` function for IPv4/IPv6 parsing [#2465](https://github.com/getgrav/grav/pull/2465)
1. [](#bugfix)
* Remove disabled fields from the form schema
* Fix issue when excluding `inlineJs` and `inlineCss` from Assets pipeline [#2468](https://github.com/getgrav/grav/issues/2468)
* Fix for manually set position on external URLs [#2470](https://github.com/getgrav/grav/issues/2470)
# v1.6.6
## 04/17/2019
1. [](#new)
* `FormInterface` now implements `RenderInterface`
* Added new `FormInterface::getTask()` method which reads the task from `form.task` in the blueprint
1. [](#improved)
* Updated vendor libraries to latest
1. [](#bugfix)
* Rollback `redirect_default_route` logic as it has issues with multi-lang [#2459](https://github.com/getgrav/grav/issues/2459)
* Fix potential issue with `|contains` Twig filter on PHP 7.3
* Fixed bug in text field filtering: return empty string if value isn't a string or number [#2460](https://github.com/getgrav/grav/issues/2460)
* Force Asset `priority` to be an integer and not throw error if invalid string passed [#2461](https://github.com/getgrav/grav/issues/2461)
* Fixed bug in text field filtering: return empty string if value isn't a string or number
* Fixed `FlexForm` missing getter methods for defining form variables
# v1.6.5
## 04/15/2019
1. [](#bugfix)
* Backwards compatiblity with old `Uri::__toString()` output
# v1.6.4
## 04/15/2019
1. [](#bugfix)
* Improved `redirect_default_route` logic as well as `Uri::toArray()` to take into account `root_path` and `extension`
* Rework logic to pull out excluded files from pipeline more reliably [#2445](https://github.com/getgrav/grav/issues/2445)
* Better logic in `Utils::normalizePath` to handle externals properly [#2216](https://github.com/getgrav/grav/issues/2216)
* Fixed to force all `Page::taxonomy` to be treated as strings [#2446](https://github.com/getgrav/grav/issues/2446)
* Fixed issue with `Grav['user']` not being available [form#332](https://github.com/getgrav/grav-plugin-form/issues/332)
* Updated rounding logic for `Utils::parseSize()` [#2394](https://github.com/getgrav/grav/issues/2394)
* Fixed Flex simple storage not being properly initialized if used with caching
# v1.6.3
## 04/12/2019
1. [](#new)
* Added `Blueprint::addDynamicHandler()` method to allow custom dynamic handlers, for example `custom-options@: getCustomOptions`
1. [](#bugfix)
* Missed a `CacheCommand` reference in `bin/grav` [#2442](https://github.com/getgrav/grav/issues/2442)
* Fixed issue with `Utils::normalizePath` messing with external URLs [#2216](https://github.com/getgrav/grav/issues/2216)
* Fix for `vUndefined` versions when upgrading
# v1.6.2
## 04/11/2019
1. [](#bugfix)
* Revert renaming of `ClearCacheCommand` to ensure CLI GPM upgrades go smoothly
# v1.6.1
## 04/11/2019
1. [](#improved)
* Improved CSS for the bottom filter bar of DebugBar
1. [](#bugfix)
* Fixed issue with `@import` not being added to top of pipelined css [#2440](https://github.com/getgrav/grav/issues/2440)
# v1.6.0
## 04/11/2019
1. [](#new)
* Set minimum requirements to [PHP 7.1.3](https://getgrav.org/blog/raising-php-requirements-2018)
* New `Scheduler` functionality for periodic jobs
* New `Backup` functionality with multiple backup profiles and scheduler integration
* Refactored `Assets Manager` to be more powerful and flexible
* Updated Doctrine Collections to 1.6
* Updated Doctrine Cache to 1.8
* Updated Symfony Components to 4.2
* Added new Cache purge functionality old cache manually via CLI/Admin as well as scheduler integration
* Added new `{% throw 404 'Not Found' %}` twig tag (with custom code/message)
* Added `Grav\Framework\File` classes for handling YAML, Markdown, JSON, INI and PHP serialized files
* Added `Grav\Framework\Collection\AbstractIndexCollection` class
* Added `Grav\Framework\Object\ObjectIndex` class
* Added `Grav\Framework\Flex` classes
* Added support for hiding form fields in blueprints by using dynamic property like `security@: admin.foobar`, `scope@: object` or `scope-ignore@: object` to any field
* New experimental **FlexObjects** powered `Users` for increased performance and capability (**disabled** by default)
* Added PSR-7 and PSR-15 classes
* Added `Grav\Framework\DI\Container` class
* Added `Grav\Framework\RequestHandler\RequestHandler` class
* Added `Page::httpResponseCode()` and `Page::httpHeaders()` methods
* Added `Grav\Framework\Form\Interfaces\FormInterface`
* Added `Grav\Framework\Form\Interfaces\FormFactoryInterface`
* Added `Grav\Framework\Form\FormTrait`
* Added `Page::forms()` method to get normalized list of all form headers defined in the page
* Added `onPageAction`, `onPageTask`, `onPageAction.{$action}` and `onPageTask.{$task}` events
* Added `Blueprint::processForm()` method to filter form inputs
* Move `processMarkdown()` method from `TwigExtension` to more general `Utils` class
* Added support to include extra files into `Media` (such as uploaded files)
* Added form preview support for `FlexObject`, including a way to render newly uploaded files before saving them
* Added `FlexObject::getChanges()` to determine what fields change during an update
* Added `arrayDiffMultidimensional`, `arrayIsAssociative`, `arrayCombine` Util functions
* New `$grav['users']` service to allow custom user classes implementing `UserInterface`
* Added `LogViewer` helper class and CLI command: `bin/grav logviewer`
* Added `select()` and `unselect()` methods to `CollectionInterface` and its base classes
* Added `orderBy()` and `limit()` methods to `ObjectCollectionInterface` and its base classes
* Added `user-data://` which is a writable stream (`user://data` is not and should be avoided)
* Added support for `/action:{$action}` (like task but used without nonce when only receiving data)
* Added `onAction.{$action}` event
* Added `Grav\Framework\Form\FormFlash` class to contain AJAX uploaded files in more reliable way
* Added `Grav\Framework\Form\FormFlashFile` class which implements `UploadedFileInterface` from PSR-7
* Added `Grav\Framework\Filesystem\Filesystem` class with methods to manipulate stream URLs
* Added new `$grav['filesystem']` service using an instance of the new `Filesystem` object
* Added `{% render object layout: 'default' with { variable: true } %}` for Flex objects and collections
* Added `$grav->setup()` to simplify CLI and custom access points
* Added `CsvFormatter` and `CsvFile` classes
* Added new system config option to `pages.hide_empty_folders` if a folder has no valid `.md` file available. Default behavior is `false` for compatibility.
* Added new system config option for `languages.pages_fallback_only` forcing only 'fallback' to find page content through supported languages, default behavior is to display any language found if active language is missing
* Added `Utils::arrayFlattenDotNotation()` and `Utils::arrayUnflattenDotNotation()` helper methods
1. [](#improved)
* Add the page to onMarkdownInitialized event [#2412](https://github.com/getgrav/grav/issues/2412)
* Doctrine filecache is now namespaced with prefix to support purging
* Register all page types into `blueprint://pages` stream
* Removed `apc` and `xcache` support, made `apc` alias of `apcu`
* Support admin and regular translations via the `|t` twig filter and `t()` twig function
* Improved Grav Core installer/updater to run installer script
* Updated vendor libraries including Symfony `4.2.3`
* Renamed old `User` class to `Grav\Common\User\DataUser\User` with multiple improvements and small fixes
* `User` class now acts as a compatibility layer to older versions of Grav
* Deprecated `new User()`, `User::load()`, `User::find()` and `User::delete()` in favor of `$grav['users']` service
* `Media` constructor has now support to not to initialize the media objects
* Cleanly handle session corruption due to changing Flex object types
* Added `FlexObjectInterface::getDefaultValue()` and `FormInterface::getDefaultValue()`
* Added new `onPageContent()` event for every call to `Page::content()`
* Added phpstan: PHP Static Analysis Tool [#2393](https://github.com/getgrav/grav/pull/2393)
* Added `composer test-plugins` to test plugin issues with the current version of Grav
* Added `Flex::getObjects()` and `Flex::getMixedCollection()` methods for co-mingled collections
* Added support to use single Flex key parameter in `Flex::getObject()` method
* Added `FlexObjectInterface::search()` and `FlexCollectionInterface::search()` methods
* Override `system.media.upload_limit` with PHP's `post_max_size` or `upload_max_filesize`
* Class `Grav\Common\Page\Medium\AbstractMedia` now use array traits instead of extending `Grav\Common\Getters`
* Implemented `Grav\Framework\Psr7` classes as `Nyholm/psr7` decorators
* Added a new `cache-clear` scheduled job to go along with `cache-purge`
* Renamed `Grav\Framework\File\Formatter\FormatterInterface` to `Grav\Framework\File\Interfaces\FileFormatterInterface`
* Improved `File::save()` to use a temporary file if file isn't locked
* Improved `|t` filter to better support admin `|tu` style filter if in admin
* Update all classes to rely on `PageInterface` instead of `Page` class
* Better error checking in `bin/plugin` for existence and enabled
* Removed `media.upload_limit` references
* Twig `nicenumber`: do not use 0 + string casting hack
* Converted Twig tags to use namespaced Twig classes
* Site shows error on page rather than hard-crash when page has invalid frontmatter [#2343](https://github.com/getgrav/grav/issues/2343)
* Added `languages.default_lang` option to override the default lang (usually first supported language)
* Added `Content-Type: application/json` body support for PSR-7 `ServerRequest`
* Remove PHP time limit in `ZipArchive`
* DebugBar: Resolve twig templates in deprecated backtraces in order to help locating Twig issues
* Added `$grav['cache']->getSimpleCache()` method for getting PSR-16 compatible cache
* MediaTrait: Use PSR-16 cache
* Improved `Utils::normalizePath()` to support non-protocol URLs
* Added ability to reset `Page::metadata` to allow rebuilding from automatically generated values
* Added back missing `page.types` field in system content configuration [admin#1612](https://github.com/getgrav/grav-plugin-admin/issues/1612)
* Console commands: add method for invalidating cache
* Updated languages
* Improved `$page->forms()` call, added `$page->addForms()`
* Updated languages from crowdin
* Fixed `ImageMedium` constructor warning when file does not exist
* Improved `Grav\Common\User` class; added `$user->update()` method
* Added trim support for text input fields `validate: trim: true`
* Improved `Grav\Framework\File\Formatter` classes to have abstract parent class and some useful methods
* Support negotiated content types set via the Request `Accept:` header
* Support negotiated language types set via the Request `Accept-Language:` header
* Cleaned up and sorted the Service `idMap`
* Updated `Grav` container object to implement PSR-11 `ContainerInterface`
* Updated Grav `Processor` classes to implement PSR-15 `MiddlewareInterface`
* Make `Data` class to extend `JsonSerializable`
* Modified debugger icon to use retina space-dude version
* Added missing `Video::preload()` method
* Set session name based on `security.salt` rather than `GRAV_ROOT` [#2242](https://github.com/getgrav/grav/issues/2242)
* Added option to configure list of `xss_invalid_protocols` in `Security` config [#2250](https://github.com/getgrav/grav/issues/2250)
* Smarter `security.salt` checking now we use `security.yaml` for other options
* Added apcu autoloader optimization
* Additional helper methods in `Language`, `Languages`, and `LanguageCodes` classes
* Call `onFatalException` event also on internal PHP errors
* Built-in PHP Webserver: log requests before handling them
* Added support for syslog and syslog facility logging (default: 'file')
* Improved usability of `System` configuration blueprint with side-tabs
1. [](#bugfix)
* Fixed issue with `Truncator::truncateWords` and `Truncator::truncateLetters` when string not wrapped in tags [#2432](https://github.com/getgrav/grav/issues/2432)
* Fixed `Undefined method closure::fields()` when getting avatar for user, thanks @Romarain [#2422](https://github.com/getgrav/grav/issues/2422)
* Fixed cached images not being updated when source image is modified
* Fixed deleting last list item in the form
* Fixed issue with `Utils::url()` method would append extra `base_url` if URL already included it
* Fixed `mkdir(...)` race condition
* Fixed `Obtaining write lock failed on file...`
* Fixed potential undefined property in `onPageNotFound` event handling
* Fixed some potential issues/bugs found by phpstan
* Fixed regression in GPM packages casted to Array (ref, getgrav/grav-plugin-admin@e3fc4ce)
* Fixed session_start(): Setting option 'session.name' failed [#2408](https://github.com/getgrav/grav/issues/2408)
* Fixed validation for select field type with selectize
* Fixed validation for boolean toggles
* Fixed non-namespaced exceptions in scheduler
* Fixed trailing slash redirect in multlang environment [#2350](https://github.com/getgrav/grav/issues/2350)
* Fixed some issues related to Medium objects losing query string attributes
* Broke out Medium timestamp so it's not cleared on `reset()`s
* Fixed issue with `redirect_trailing_slash` losing query string [#2269](https://github.com/getgrav/grav/issues/2269)
* Fixed failed login if user attempts to log in with upper case non-english letters
* Removed extra authenticated/authorized fields when saving existing user from a form
* Fixed `Grav\Framework\Route::__toString()` returning relative URL, not relative route
* Fixed handling of `append_url_extension` inside of `Page::templateFormat()` [#2264](https://github.com/getgrav/grav/issues/2264)
* Fixed a broken language string [#2261](https://github.com/getgrav/grav/issues/2261)
* Fixed clearing cache having no effect on Doctrine cache
* Fixed `Medium::relativePath()` for streams
* Fixed `Object` serialization breaking if overriding `jsonSerialize()` method
* Fixed `YamlFormatter::decode()` when calling `init_set()` with integer
* Fixed session throwing error in CLI if initialized
* Fixed `Uri::hasStandardPort()` to support reverse proxy configurations [#1786](https://github.com/getgrav/grav/issues/1786)
* Use `append_url_extension` from page header to set template format if set [#2604](https://github.com/getgrav/grav/pull/2064)
* Fixed some bugs in Grav environment selection logic
* Use login provider User avatar if set
* Fixed `Folder::doDelete($folder, false)` removing symlink when it should not
* Fixed asset manager to not add empty assets when they don't exist in the filesystem
* Update `script` and `style` Twig tags to use the new `Assets` classes
* Fixed asset pipeline to rewrite remote URLs as well as local [#2216](https://github.com/getgrav/grav/issues/2216)
# v1.5.10
## 03/21/2019
1. [](#new)
* Added new `deferred` Twig extension
# v1.5.9
## 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
1. [](#improved)
* Improved `User` unserialize to not to break the object if serialized data is not what expected
* Removed unused parameter [#2357](https://github.com/getgrav/grav/pull/2357)
# v1.5.7
## 01/25/2019
1. [](#new)
* Support for AWS Cloudfront forwarded scheme header [#2297](https://github.com/getgrav/grav/pull/2297)
1. [](#improved)
* Set homepage with `https://` protocol [#2299](https://github.com/getgrav/grav/pull/2299)
* Preserve accents in fields containing Twig expr. using unicode [#2279](https://github.com/getgrav/grav/pull/2279)
* Updated vendor libraries
1. [](#bugfix)
* Support spaces with filenames in responsive images [#2300](https://github.com/getgrav/grav/pull/2300)
# v1.5.6
## 12/14/2018
1. [](#improved)
* Updated InitializeProcessor.php to use lang-safe redirect [#2268](https://github.com/getgrav/grav/pull/2268)
* Improved user serialization to use less memory in the session
# v1.5.5
## 11/12/2018
1. [](#new)
* Register theme prefixes as namespaces in Twig [#2210](https://github.com/getgrav/grav/pull/2210)
1. [](#improved)
* Propogate error code between 400 and 600 for production sites [#2181](https://github.com/getgrav/grav/pull/2181)
1. [](#bugfix)
* Remove hardcoded `302` when redirecting trailing slash [#2155](https://github.com/getgrav/grav/pull/2155)
# v1.5.4
## 11/05/2018
1. [](#improved)
* Updated default page `index.md` with some consistency fixes [#2245](https://github.com/getgrav/grav/pull/2245)
1. [](#bugfix)
* Fixed fatal error if calling `$session->invalidate()` when there's no active session
* Fixed typo in media.yaml for `webm` extension [#2220](https://github.com/getgrav/grav/pull/2220)
* Fixed markdown processing for telephone links [#2235](https://github.com/getgrav/grav/pull/2235)
# v1.5.3
## 10/08/2018
1. [](#new)
* Added `Utils::getMimeByFilename()`, `Utils::getMimeByLocalFile()` and `Utils::checkFilename()` methods
* Added configurable dangerous upload extensions in `security.yaml`
1. [](#improved)
* Updated vendor libraries to latest
# v1.5.2
## 10/01/2018
1. [](#new)
* Added new `Security` class for Grav security functionality including XSS checks
* Added new `bin/grav security` command to scan for security issues
* Added new `xss()` Twig function to allow for XSS checks on strings and arrays
* Added `onHttpPostFilter` event to allow plugins to globally clean up XSS in the forms and tasks
* Added `Deprecated` tab to DebugBar to catch future incompatibilities with later Grav versions
* Added deprecation notices for features which will be removed in Grav 2.0
1. [](#improved)
* Updated vendor libraries to latest
1. [](#bugfix)
* Allow `$page->slug()` to be called before `$page->init()` without breaking the page
* Fix for `Page::translatedLanguages()` to use routes always [#2163](https://github.com/getgrav/grav/issues/2163)
* Fixed `nicetime()` twig function
* Allow twig tags `{% script %}`, `{% style %}` and `{% switch %}` to be placed outside of blocks
* Session expires in 30 mins independent from config settings [login#178](https://github.com/getgrav/grav-plugin-login/issues/178)
# v1.5.1
## 08/23/2018
1. [](#new)
* Added static `Grav\Common\Yaml` class which should be used instead of `Symfony\Component\Yaml\Yaml`
1. [](#improved)
* Updated deprecated Twig code so it works in both in Twig 1.34+ and Twig 2.4+
* Switched to new Grav Yaml class to support Native + Fallback YAML libraries
1. [](#bugfix)
* Broken handling of user folder in Grav URI object [#2151](https://github.com/getgrav/grav/issues/2151)
# v1.5.0
## 08/17/2018
1. [](#new)
* Set minimum requirements to [PHP 5.6.4](https://getgrav.org/blog/raising-php-requirements-2018)
* Updated Doctrine Collections to 1.4
* Updated Symfony Components to 3.4 (with compatibility mode to fall back to Symfony YAML 2.8)
* Added `Uri::method()` to get current HTTP method (GET/POST etc)
* `FormatterInterface`: Added `getSupportedFileExtensions()` and `getDefaultFileExtension()` methods
* Added option to disable `SimpleCache` key validation
* Added support for multiple repo locations for `bin/grav install` command
* Added twig filters for casting values: `|string`, `|int`, `|bool`, `|float`, `|array`
* Made `ObjectCollection::matching()` criteria expressions to behave more like in Twig
* Criteria: Added support for `LENGTH()`, `LOWER()`, `UPPER()`, `LTRIM()`, `RTRIM()` and `TRIM()`
* Added `Grav\Framework\File\Formatter` classes for encoding/decoding YAML, Markdown, JSON, INI and PHP serialized strings
* Added `Grav\Framework\Session` class to replace `RocketTheme\Toolbox\Session\Session`
* Added `Grav\Common\Media` interfaces and trait; use those in `Page` and `Media` classes
* Added `Grav\Common\Page` interface to allow custom page types in the future
* Added setting to disable sessions from the site [#2013](https://github.com/getgrav/grav/issues/2013)
* Added new `strict_mode` settings in `system.yaml` for compatibility
1. [](#improved)
* Improved `Utils::url()` to support query strings
* Display better exception message if Grav fails to initialize
* Added `muted` and `playsinline` support to videos [#2124](https://github.com/getgrav/grav/pull/2124)
* Added `MediaTrait::clearMediaCache()` to allow cache to be cleared
* Added `MediaTrait::getMediaCache()` to allow custom caching
* Improved session handling, allow all session configuration options in `system.session.options`
1. [](#bugfix)
* Fix broken form nonce logic [#2121](https://github.com/getgrav/grav/pull/2121)
* Fixed issue with uppercase extensions and fallback media URLs [#2133](https://github.com/getgrav/grav/issues/2133)
* Fixed theme inheritance issue with `camel-case` that includes numbers [#2134](https://github.com/getgrav/grav/issues/2134)
* Typo in demo typography page [#2136](https://github.com/getgrav/grav/pull/2136)
* Fix for incorrect plugin order in debugger panel
* Made `|markdown` filter HTML safe
* Fixed bug in `ContentBlock` serialization
* Fixed `Route::withQueryParam()` to accept array values
* Fixed typo in truncate function [#1943](https://github.com/getgrav/grav/issues/1943)
* Fixed blueprint field validation: Allow numeric inputs in text fields
# v1.4.8
## 07/31/2018
1. [](#improved)
* Add Grav version to debug bar messages tab [#2106](https://github.com/getgrav/grav/pull/2106)
* Add Nginx config for ddev project to `webserver-configs` [#2117](https://github.com/getgrav/grav/pull/2117)
* Vendor library updates
1. [](#bugfix)
* Don't allow `null` to be set as Page content
# v1.4.7
## 07/13/2018
1. [](#improved)
* Use `getFilename` instead of `getBasename` [#2087](https://github.com/getgrav/grav/issues/2087)
1. [](#bugfix)
* Fix for modular page preview [#2066](https://github.com/getgrav/grav/issues/2066)
* `Page::routeCanonical()` should be string not array [#2069](https://github.com/getgrav/grav/issues/2069)
# v1.4.6
## 06/20/2018
1. [](#improved)
* Manually re-added the improved SSL off-loading that was lost with Grav v1.4.0 merge [#1888](https://github.com/getgrav/grav/pull/1888)
* Handle multibyte strings in `truncateLetters()` [#2007](https://github.com/getgrav/grav/pull/2007)
* Updated robots.txt to include `/user/images/` folder [#2043](https://github.com/getgrav/grav/pull/2043)
* Add getter methods for original and action to the Page object [#2005](https://github.com/getgrav/grav/pull/2005)
* Modular template extension follows the master page extension [#2044](https://github.com/getgrav/grav/pull/2044)
* Vendor library updates
1. [](#bugfix)
* Handle `errors.display` system property better in admin plugin [admin#1452](https://github.com/getgrav/grav-plugin-admin/issues/1452)
* Fix classes on non-http based protocol links [#2034](https://github.com/getgrav/grav/issues/2034)
* Fixed crash on IIS (Windows) with open_basedir in effect [#2053](https://github.com/getgrav/grav/issues/2053)
* Fixed incorrect routing with setup.php based base [#1892](https://github.com/getgrav/grav/issues/1892)
* Fixed image resource memory deallocation [#2045](https://github.com/getgrav/grav/pull/2045)
* Fixed issue with Errors `display:` option not handling integers properly [admin#1452](https://github.com/getgrav/grav-plugin-admin/issues/1452)
# v1.4.5
## 05/15/2018
1. [](#bugfix)
* Fixed an issue with some users getting **2FA** prompt after upgrade [admin#1442](https://github.com/getgrav/grav-plugin-admin/issues/1442)
* Do not crash when generating URLs with arrays as parameters [#2018](https://github.com/getgrav/grav/pull/2018)
* Utils::truncateHTML removes whitespace when generating summaries [#2004](https://github.com/getgrav/grav/pull/2004)
# v1.4.4
## 05/11/2018
1. [](#new)
* Added support for `Uri::post()` and `Uri::getConentType()`
* Added a new `Medium:thumbnailExists()` function [#1966](https://github.com/getgrav/grav/issues/1966)
* Added `authorized` support for 2FA
1. [](#improved)
* Added default configuration for images [#1979](https://github.com/getgrav/grav/pull/1979)
* Added dedicated PHPUnit assertions [#1990](https://github.com/getgrav/grav/pull/1990)
1. [](#bugfix)
* Use `array_key_exists` instead of `in_array + array_keys` [#1991](https://github.com/getgrav/grav/pull/1991)
* Fixed an issue with `custom_base_url` always causing 404 errors
* Improve support for regex redirects with query and params [#1983](https://github.com/getgrav/grav/issues/1983)
* Changed collection-based date sorting to `SORT_REGULAR` for better server compatibility [#1910](https://github.com/getgrav/grav/issues/1910)
* Fix hardcoded string in modular blueprint [#1933](https://github.com/getgrav/grav/pull/1993)
# v1.4.3
## 04/12/2018
1. [](#new)
* moved Twig `sortArrayByKey` logic into `Utils::` class
1. [](#improved)
* Rolled back Parsedown library to stable `1.6.4` until a better solution for `1.8.0` compatibility can fe found
* Updated vendor libraries to latest versions
1. [](#bugfix)
* Fix for bad reference to `ZipArchive` in `GPM::Installer`
# v1.4.2
## 03/21/2018
1. [](#new)
* Added new `|nicefilesize` Twig filter for pretty file (auto converts to bytes, kB, MB, GB, etc)
* Added new `regex_filter()` Twig function to values in arrays
1. [](#improved)
* Added bosnian to lang codes [#1917](https://github.com/getgrav/grav/issues/1917)
* Improved Zip extraction error codes [#1922](https://github.com/getgrav/grav/issues/1922)
1. [](#bugfix)
* Fixed an issue with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates [#1924](https://github.com/getgrav/grav/issues/1924)
* Fix for case-sensitive page metadata [admin#1370](https://github.com/getgrav/grav-plugin-admin/issues/1370)
* Fixed missing composer requirements for the new `Grav\Framework\Uri` classes
* Added missing PSR-7 vendor library required for URI additions in Grav 1.4.0
# v1.4.1
## 03/11/2018
1. [](#bugfix)
* Fixed session timing out because of session cookie was not being sent
# v1.4.0
## 03/09/2018
1. [](#new)
* Added `Grav\Framework\Uri` classes extending PSR-7 `HTTP message UriInterface` implementation
* Added `Grav\Framework\Route` classes to allow route/link manipulation
* Added `$grav['uri]->getCurrentUri()` method to get `Grav\Framework\Uri\Uri` instance for the current URL
* Added `$grav['uri]->getCurrentRoute()` method to get `Grav\Framework\Route\Route` instance for the current URL
* Added ability to have `php` version dependencies in GPM assets
* Added new `{% switch %}` twig tag for more elegant if statements
* Added new `{% markdown %}` twig tag
* Added **Route Overrides** to the default page blueprint
* Added new `Collection::toExtendedArray()` method that's particularly useful for Json output of data
* Added new `|yaml_encode` and `|yaml_decode` Twig filter to convert to and from YAML
* Added new `read_file()` Twig function to allow you to load and display a file in Twig (Supports streams and regular paths)
* Added a new `Medium::exists()` method to check for file existence
* Moved Twig `urlFunc()` to `Utils::url()` as its so darn handy
* Transferred overall copyright from RocketTheme, LLC, to Trilby Media LLC
* Added `theme_var`, `header_var` and `body_class` Twig functions for themes
* Added `Grav\Framework\Cache` classes providing PSR-16 `Simple Cache` implementation
* Added `Grav\Framework\ContentBlock` classes for nested HTML blocks with CSS/JS assets
* Added `Grav\Framework\Object` classes for creating collections of objects
* Added `|nicenumber` Twig filter
* Added `{% try %} ... {% catch %} Error: {{ e.message }} {% endcatch %}` tag to allow basic exception handling inside Twig
* Added `{% script %}` and `{% style %}` tags for Twig templates
* Deprecated GravTrait
1. [](#improved)
* Improved `Session` initialization
* Added ability to set a `theme_var()` option in page frontmatter
* Force clearing PHP `clearstatcache` and `opcache-reset` on `Cache::clear()`
* Better `Page.collection()` filtering support including ability to have non-published pages in collections
* Stopped Chrome from auto-completing admin user profile form [#1847](https://github.com/getgrav/grav/issues/1847)
* Support for empty `switch` field like a `checkbox`
* Made `modular` blueprint more flexible
* Code optimizations to `Utils` class [#1830](https://github.com/getgrav/grav/pull/1830)
* Objects: Add protected function `getElement()` to get serialized value for a single property
* `ObjectPropertyTrait`: Added protected functions `isPropertyLoaded()`, `offsetLoad()`, `offsetPrepare()` and `offsetSerialize()`
* `Grav\Framework\Cache`: Allow unlimited TTL
* Optimizations & refactoring to the test suite [#1779](https://github.com/getgrav/grav/pull/1779)
* Slight modification of Whoops error colors
* Added new configuration option `system.session.initialize` to delay session initialization if needed by a plugin
* Updated vendor libraries to latest versions
* Removed constructor from `ObjectInterface`
* Make it possible to include debug bar also into non-HTML responses
* Updated built-in JQuery to latest 3.3.1
1. [](#bugfix)
* Fixed issue with image alt tag always getting empted out unless set in markdown
* Fixed issue with remote PHP version determination for Grav updates [#1883](https://github.com/getgrav/grav/issues/1883)
* Fixed issue with _illegal scheme offset_ in `Uri::convertUrl()` [page-inject#8](https://github.com/getgrav/grav-plugin-page-inject/issues/8)
* Properly validate YAML blueprint fields so admin can save as proper YAML now [addresses many issues]
* Fixed OpenGraph metatags so only Twitter uses `name=`, and all others use `property=` [#1849](https://github.com/getgrav/grav/issues/1849)
* Fixed an issue with `evaluate()` and `evaluate_twig()` Twig functions that throws invalid template error
* Fixed issue with `|sort_by_key` twig filter if the input was null or not an array
* Date ordering should always be numeric [#1810](https://github.com/getgrav/grav/issues/1810)
* Fix for base paths containing special characters [#1799](https://github.com/getgrav/grav/issues/1799)
* Fix for session cookies in paths containing special characters
* Fix for `vundefined` error for version numbers in GPM [form#222](https://github.com/getgrav/grav-plugin-form/issues/222)
* Fixed `BadMethodCallException` thrown in GPM updates [#1784](https://github.com/getgrav/grav/issues/1784)
* NOTE: Parsedown security release now escapes `&` to `&amp;` in Markdown links
# v1.3.10
## 12/06/2017
1. [](#bugfix)
* Reverted GPM Local pull request as it broken admin [#1742](https://github.com/getgrav/grav/issues/1742)
# v1.3.9
## 12/05/2017
1. [](#new)
* Added new core Twig templates for `partials/metadata.html.twig` and `partials/messages.html.twig`
* Added ability to work with GPM locally [#1742](https://github.com/getgrav/grav/issues/1742)
* Added new HTML5 audio controls [#1756](https://github.com/getgrav/grav/issues/1756)
* Added `Medium::copy()` method to create a copy of a medium object
* Added new `force_lowercase_urls` functionality on routes and slugs
* Added new `item-list` filter type to remove empty items
* Added new `setFlashCookieObject()` and `getFlashCookieObject()` methods to `Session` object
* Added new `intl_enabled` option to disable PHP intl module collation when not needed
1. [](#bugfix)
* Fixed an issue with checkbox field validation [form#216](https://github.com/getgrav/grav-plugin-form/issues/216)
* Fixed issue with multibyte Markdown link URLs [#1749](https://github.com/getgrav/grav/issues/1749)
* Fixed issue with multibyte folder names [#1751](https://github.com/getgrav/grav/issues/1751)
* Fixed several issues related to `system.custom_base_url` that were broken [#1736](https://github.com/getgrav/grav/issues/1736)
* Dynamically added pages via `Pages::addPage()` were not firing `onPageProcessed()` event causing forms not to be processed
* Fixed `Page::active()` and `Page::activeChild()` to work with UTF-8 characters in the URL [#1727](https://github.com/getgrav/grav/issues/1727)
* Fixed typo in `modular.yaml` causing media to be ignored [#1725](https://github.com/getgrav/grav/issues/1725)
* Reverted `case_insensitive_urls` option as it was causing issues with taxonomy [#1733](https://github.com/getgrav/grav/pull/1733)
* Removed an extra `/` in `CompileFile.php` [#1693](https://github.com/getgrav/grav/pull/1693)
* Uri::Encode user and password to prevent issues in browsers
* Fixed "Invalid AJAX response" When using Built-in PHP Webserver in Windows [#1258](https://github.com/getgrav/grav-plugin-admin/issues/1258)
* Remove support for `config.user`, it was broken and bad practise
* Make sure that `clean cache` uses valid path [#1745](https://github.com/getgrav/grav/pull/1745)
* Fixed token creation issue with `Uri` params like `/id:3`
* Fixed CSS Pipeline failing with Google remote fonts if the file was minified [#1261](https://github.com/getgrav/grav-plugin-admin/issues/1261)
* Forced `field.multiple: true` to allow use of min/max options in `checkboxes.validate`
# v1.3.8
## 10/26/2017
1. [](#new)
* Added Page `media_order` capability to manually order page media via a page header
1. [](#bugfix)
* Fixed GPM update issue with filtered slugs [#1711](https://github.com/getgrav/grav/issues/1711)
* Fixed issue with missing image file not throwing 404 properly [#1713](https://github.com/getgrav/grav/issues/1713)
# v1.3.7
## 10/18/2017
@@ -12,20 +813,20 @@
1. [](#bugfix)
* Regression: Ajax error in Nginx [admin#1244](https://github.com/getgrav/grav-plugin-admin/issues/1244)
* Remove the `_url=$uri` portion of the the Nginx `try_files` command [admin#1244](https://github.com/getgrav/grav-plugin-admin/issues/1244)
# v1.3.5
## 10/11/2017
1. [](#improved)
* Refactored `URI` class with numerous bug fixes, and optimizations
* Override `system.media.upload_limit` with PHP's `post_max_size` or `upload_max_filesize`
* Updated `bin/grav clean` command to remove unnecessary vendor files (save some bytes)
* Updated `bin/grav clean` command to remove unnecessary vendor files (save some bytes)
* Added a `http_status_code` Twig function to allow setting HTTP status codes from Twig directly.
* Deter XSS attacks via URI path/uri methods (credit:newbthenewbd)
* Added support for `$uri->toArray()` and `(string)$uri`
* Added support for `type` on `Asstes::addInlineJs()` [#1683](https://github.com/getgrav/grav/pull/1683)
1. [](#bugfix)
* Fixed method signature error with `GPM\InstallCommand::processPackage()` [#1682](https://github.com/getgrav/grav/pull/1682)
* Fixed method signature error with `GPM\InstallCommand::processPackage()` [#1682](https://github.com/getgrav/grav/pull/1682)
# v1.3.4
## 09/29/2017
@@ -39,7 +840,7 @@
* Improved support for Assets with query strings [#1451](https://github.com/getgrav/grav/issues/1451)
* Twig extension cleanup
1. [](#bugfix)
* Fixed an issue where fallback was not supporting dynamic page generation
* Fixed an issue where fallback was not supporting dynamic page generation
* Fixed issue with Image query string not being fully URL encoded [#1622](https://github.com/getgrav/grav/issues/1622)
* Fixed `Page::summary()` when using delimiter and multibyte UTF8 Characters [#1644](https://github.com/getgrav/grav/issues/1644)
* Fixed missing `.json` thumbnail throwing error when adding media [grav-plugin-admin#1156](https://github.com/getgrav/grav-plugin-admin/issues/1156)
@@ -82,7 +883,7 @@
* Allow `session.timeout` field to be set to `0` via blueprints [#1598](https://github.com/getgrav/grav/issues/1598)
* Fixed `Data::exists()` and `Data::raw()` functions breaking if `Data::file()` hasn't been called with non-null value
* Fixed parent theme auto-loading in child themes of Gantry 5
# v1.3.1
## 07/19/2017

View File

@@ -12,7 +12,7 @@ patches and features.
## Grav, Plugins, Themes and Skeletons
Grav is a large open source projectit's made up of over 100 repositories. When you initially consider contributing to Grav, you might be unsure about which of those 200 repositories implements the functionality you want to change or report a bug for.
Grav is a large open source projectit's made up of over 100 repositories. When you initially consider contributing to Grav, you might be unsure about which of those 200 repositories implements the functionality you want to change or report a bug for.
[https://github.com/getgrav/grav](https://github.com/getgrav/grav) is the main Grav repository. The core of Grav is provided by this repo.
@@ -29,7 +29,7 @@ The issue tracker is the preferred channel for [bug reports](#bugs),
requests](#pull-requests), but please respect the following restrictions:
* 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>
@@ -60,20 +60,20 @@ Guidelines for bug reports:
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report.
What is your environment? Is it localhost, OSX, Linux, on a remote server? Same happening locally and or the server, or just locally or just on Linux?
- What is your environment? Is it localhost, OSX, Linux, on a remote server? Same happening locally and or the server, or just locally or just on Linux?
What steps will reproduce the issue? What browser(s) and OS experience the problem?
- What steps will reproduce the issue? What browser(s) and OS experience the problem?
What would you expect to be the outcome?
- What would you expect to be the outcome?
Did the problem start happening recently (e.g. after updating to a new version of Grav) or was this always a problem?
- Did the problem start happening recently (e.g. after updating to a new version of Grav) or was this always a problem?
If the problem started happening recently, can you reproduce the problem in an older version of Grav? What's the most recent version in which the problem doesn't happen? You can download older versions of Grav from the releases page on Github.
- If the problem started happening recently, can you reproduce the problem in an older version of Grav? What's the most recent version in which the problem doesn't happen? You can download older versions of Grav from the releases page on Github.
Can you reliably reproduce the issue? If not, provide details about how often the problem happens and under which conditions it normally happens.
- Can you reliably reproduce the issue? If not, provide details about how often the problem happens and under which conditions it normally happens.
All these details will help people to fix any potential bugs.
All these details will help contributors to fix any potential bugs.
Important: [include Code Samples in triple backticks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks) so that Github will provide a proper indentation. [Add the language name after the backticks](https://help.github.com/articles/github-flavored-markdown/#syntax-highlighting) to add syntax highlighting to the code snippets.
@@ -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
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..),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project.

View File

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

View File

@@ -1,24 +1,27 @@
# ![](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) [![Slack](https://grav-chat.now.sh/badge.svg)](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)
[![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)
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.
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:
* [Twig Templating](http://twig.sensiolabs.org/): for powerful control of the user interface
* [Markdown](http://en.wikipedia.org/wiki/Markdown): for easy content creation
* [YAML](http://yaml.org): for simple configuration
* [Parsedown](http://parsedown.org/): for fast Markdown and Markdown Extra support
* [Doctrine Cache](http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/caching.html): layer for performance
* [Pimple Dependency Injection Container](http://pimple.sensiolabs.org/): for extensibility and maintainability
* [Symfony Event Dispatcher](http://symfony.com/doc/current/components/event_dispatcher/introduction.html): for plugin event handling
* [Symfony Console](http://symfony.com/doc/current/components/console/introduction.html): for CLI interface
* [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
# Requirements
- PHP 5.5.9 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements)
- PHP 7.1.3 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
# QuickStart
@@ -86,7 +89,7 @@ $ bin/gpm update
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 send an email to the core team at contact@getgrav.org and we'll address it as soon as possible.
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.
# Getting Started
@@ -94,82 +97,26 @@ If you discover a possible security issue related to Grav or one of its plugins,
* [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 [Slack Room](https://getgrav.org/slack)!
* If you have questions, jump on our [Discord Chat Server](https://chat.getgrav.org)!
* Have fun!
# Exploring More
* 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)
* More [Awesome Grav Stuff](https://github.com/getgrav/awesome-grav)
# Backers
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/grav#backer)]
<a href="https://opencollective.com/grav/backer/0/website" target="_blank"><img src="https://opencollective.com/grav/backer/0/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/1/website" target="_blank"><img src="https://opencollective.com/grav/backer/1/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/2/website" target="_blank"><img src="https://opencollective.com/grav/backer/2/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/3/website" target="_blank"><img src="https://opencollective.com/grav/backer/3/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/4/website" target="_blank"><img src="https://opencollective.com/grav/backer/4/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/5/website" target="_blank"><img src="https://opencollective.com/grav/backer/5/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/6/website" target="_blank"><img src="https://opencollective.com/grav/backer/6/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/7/website" target="_blank"><img src="https://opencollective.com/grav/backer/7/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/8/website" target="_blank"><img src="https://opencollective.com/grav/backer/8/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/9/website" target="_blank"><img src="https://opencollective.com/grav/backer/9/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/10/website" target="_blank"><img src="https://opencollective.com/grav/backer/10/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/11/website" target="_blank"><img src="https://opencollective.com/grav/backer/11/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/12/website" target="_blank"><img src="https://opencollective.com/grav/backer/12/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/13/website" target="_blank"><img src="https://opencollective.com/grav/backer/13/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/14/website" target="_blank"><img src="https://opencollective.com/grav/backer/14/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/15/website" target="_blank"><img src="https://opencollective.com/grav/backer/15/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/16/website" target="_blank"><img src="https://opencollective.com/grav/backer/16/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/17/website" target="_blank"><img src="https://opencollective.com/grav/backer/17/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/18/website" target="_blank"><img src="https://opencollective.com/grav/backer/18/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/19/website" target="_blank"><img src="https://opencollective.com/grav/backer/19/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/20/website" target="_blank"><img src="https://opencollective.com/grav/backer/20/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/21/website" target="_blank"><img src="https://opencollective.com/grav/backer/21/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/22/website" target="_blank"><img src="https://opencollective.com/grav/backer/22/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/23/website" target="_blank"><img src="https://opencollective.com/grav/backer/23/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/24/website" target="_blank"><img src="https://opencollective.com/grav/backer/24/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/25/website" target="_blank"><img src="https://opencollective.com/grav/backer/25/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/26/website" target="_blank"><img src="https://opencollective.com/grav/backer/26/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/27/website" target="_blank"><img src="https://opencollective.com/grav/backer/27/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/28/website" target="_blank"><img src="https://opencollective.com/grav/backer/28/avatar.svg"></a>
<a href="https://opencollective.com/grav/backer/29/website" target="_blank"><img src="https://opencollective.com/grav/backer/29/avatar.svg"></a>
Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)]
<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)]
<a href="https://opencollective.com/grav/sponsor/0/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/1/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/2/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/3/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/4/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/5/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/6/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/7/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/8/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/9/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/9/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/10/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/10/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/11/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/11/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/12/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/12/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/13/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/13/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/14/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/14/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/15/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/15/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/16/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/16/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/17/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/17/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/18/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/18/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/19/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/19/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/20/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/20/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/21/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/21/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/22/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/22/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/23/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/23/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/24/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/24/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/25/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/25/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/26/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/26/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/27/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/27/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/28/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/28/avatar.svg"></a>
<a href="https://opencollective.com/grav/sponsor/29/website" target="_blank"><img src="https://opencollective.com/grav/sponsor/29/avatar.svg"></a>
<img src="https://opencollective.com/grav/tiers/sponsors.svg?avatarHeight=36&width=600" />
# License
@@ -183,5 +130,5 @@ See [LICENSE](LICENSE.txt)
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`

Binary file not shown.

38
bin/gpm
View File

@@ -1,26 +1,24 @@
#!/usr/bin/env php
<?php
define('GRAV_CLI', true);
if (!file_exists(__DIR__ . '/../vendor')){
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
}
use Grav\Common\Composer;
use Grav\Common\Config\Setup;
use Symfony\Component\Console\Application;
use Grav\Common\Grav;
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
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
$composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n";
echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n";
}
use Symfony\Component\Console\Application;
use Grav\Common\Grav;
$autoload = require_once(__DIR__ . '/../vendor/autoload.php');
$autoload = require __DIR__ . '/../vendor/autoload.php';
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));
@@ -30,7 +28,14 @@ if (!ini_get('date.timezone')) {
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!');
}
@@ -48,15 +53,16 @@ $climate->arguments->add([
]
]);
$climate->arguments->parse();
$environment = $climate->arguments->get('environment');
// Set up environment based on params.
Setup::$environment = $environment;
$environment = $climate->arguments->get('environment');
$grav = Grav::instance(array('loader' => $autoload));
$grav['uri']->init();
$grav->setup($environment);
$grav['config']->init();
$grav['streams'];
$grav['uri']->init();
$grav['accounts'];
$app = new Application('Grav Package Manager', GRAV_VERSION);
$app->addCommands(array(

View File

@@ -1,24 +1,25 @@
#!/usr/bin/env php
<?php
define('GRAV_CLI', true);
if (!file_exists(__DIR__ . '/../vendor')){
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
}
use Grav\Common\Composer;
use Grav\Common\Grav;
use League\CLImate\CLImate;
use Symfony\Component\Console\Application;
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
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
$composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n";
echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n";
}
use Symfony\Component\Console\Application;
require_once __DIR__ . '/../vendor/autoload.php';
$autoload = require __DIR__ . '/../vendor/autoload.php';
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));
@@ -28,7 +29,31 @@ if (!ini_get('date.timezone')) {
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');
$climate = new League\CLImate\CLImate;
$climate->arguments->add([
'environment' => [
'prefix' => 'e',
'longPrefix' => 'env',
'description' => 'Configuration Environment',
'defaultValue' => 'localhost'
]
]);
$climate->arguments->parse();
// Set up environment based on params.
$environment = $climate->arguments->get('environment');
$grav = Grav::instance(array('loader' => $autoload));
$grav->setup($environment);
if (!file_exists(GRAV_ROOT . '/index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!');
}
@@ -41,5 +66,9 @@ $app->addCommands(array(
new \Grav\Console\Cli\ClearCacheCommand(),
new \Grav\Console\Cli\BackupCommand(),
new \Grav\Console\Cli\NewProjectCommand(),
new \Grav\Console\Cli\SchedulerCommand(),
new \Grav\Console\Cli\SecurityCommand(),
new \Grav\Console\Cli\LogViewerCommand(),
new \Grav\Console\Cli\YamlLinterCommand(),
));
$app->run();

View File

@@ -1,30 +1,28 @@
#!/usr/bin/env php
<?php
define('GRAV_CLI', true);
if (!file_exists(__DIR__ . '/../vendor')) {
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
}
use Grav\Common\Composer;
if (!file_exists(__DIR__ . '/../vendor')) {
// Before we can even start, we need to run composer first
$composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n";
echo system($composer . ' --working-dir="' . __DIR__ . '/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n";
}
use Symfony\Component\Console\Application;
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');
\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
require_once __DIR__ . '/../system/src/Grav/Common/Composer.php';
$composer = Composer::getComposerExecutor();
echo "Preparing to install vendor dependencies...\n\n";
echo system($composer.' --working-dir="'.__DIR__.'/../" --no-interaction --no-dev --prefer-dist -o install');
echo "\n\n";
}
$autoload = require __DIR__ . '/../vendor/autoload.php';
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));
@@ -34,7 +32,14 @@ if (!ini_get('date.timezone')) {
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!');
}
@@ -48,18 +53,12 @@ $climate->arguments->add([
]
]);
$climate->arguments->parse();
$environment = $climate->arguments->get('environment');
// Set up environment based on params.
Setup::$environment = $environment;
$grav = Grav::instance(array('loader' => $autoload));
$grav['uri']->init();
$grav['config']->init();
$grav['streams'];
$grav['plugins']->init();
$grav['themes']->init();
$grav->setup($environment);
$grav->initializeCli();
$app = new Application('Grav Plugins Commands', GRAV_VERSION);
$pattern = '([A-Z]\w+Command\.php)';
@@ -75,6 +74,7 @@ $argv = array_merge([$bin], $argv);
$input = new ArgvInput($argv);
/** @var \Grav\Common\Data\Data $plugin */
$plugin = $grav['plugins']->get($name);
$output = new ConsoleOutput();
@@ -83,13 +83,14 @@ $output->getFormatter()->setStyle('white', new OutputFormatterStyle('white', nul
if (!$name) {
$output->writeln('');
$output->writeln("<red>Usage:</red>");
$output->writeln('<red>Usage:</red>');
$output->writeln(" {$bin} [slug] [command] [arguments]");
$output->writeln('');
$output->writeln("<red>Example:</red>");
$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]);
$total = 0;
if (count($list)) {
$available = [];
$output->writeln('');
@@ -98,17 +99,31 @@ if (!$name) {
$split = explode('/', $entry);
$entry = array_shift($split);
$index = str_pad($index++ + 1, 2, '0', STR_PAD_LEFT);
if (in_array($entry, $available)) {
$total = str_pad($total++ + 1, 2, '0', STR_PAD_LEFT);
if (\in_array($entry, $available, true)) {
$total--;
continue;
}
$available[] = $entry;
$output->writeln(' ' . $index . ". <red>" . str_pad($entry, 15) . "</red> <white>${bin} ${entry} list</white>");
$commands_count = $index - $total + 1;
$output->writeln(' ' . $total . '. <red>' . str_pad($entry, 15) . "</red> <white>{$bin} {$entry} list</white>");
}
}
exit;
} else {
if (is_null($plugin)) {
$output->writeln('');
$output->writeln("<red>$name plugin not found</red>");
die;
}
if (!$plugin->enabled) {
$output->writeln('');
$output->writeln("<red>$name not enabled</red>");
die;
}
}
if ($plugin === null) {

View File

@@ -2,44 +2,77 @@
"name": "getgrav/grav",
"type": "project",
"description": "Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS",
"keywords": ["cms","flat-file cms","flat cms","flatfile cms","php"],
"homepage": "http://getgrav.org",
"keywords": [
"cms",
"flat-file cms",
"flat cms",
"flatfile cms",
"php"
],
"homepage": "https://getgrav.org",
"license": "MIT",
"require": {
"php": ">=5.5.9",
"twig/twig": "~1.24",
"erusev/parsedown": "~1.6",
"erusev/parsedown-extra": "~0.7",
"symfony/yaml": "~2.8",
"symfony/console": "~2.8",
"symfony/event-dispatcher": "~2.8",
"symfony/var-dumper": "~2.8",
"symfony/polyfill-iconv": "~1.0",
"doctrine/cache": "1.6.*",
"doctrine/collections": "1.3",
"filp/whoops": "~2.0",
"matthiasmullie/minify": "^1.3",
"monolog/monolog": "~1.0",
"gregwar/image": "2.*",
"donatj/phpuseragentparser": "~0.3",
"pimple/pimple": "~3.0",
"rockettheme/toolbox": "~1.0",
"maximebf/debugbar": "~1.10",
"php": ">=7.1.3",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-curl": "*",
"ext-zip": "*",
"league/climate": "^3.2",
"ext-dom": "*",
"symfony/polyfill-iconv": "^1.9",
"symfony/polyfill-php72": "^1.9",
"symfony/polyfill-php73": "^1.9",
"psr/simple-cache": "^1.0",
"psr/http-message": "^1.0",
"psr/http-server-middleware": "^1.0",
"kodus/psr7-server": "*",
"nyholm/psr7": "^1.0",
"twig/twig": "~1.40",
"symfony/yaml": "~4.2.0",
"symfony/console": "~4.2.0",
"symfony/event-dispatcher": "~4.2.0",
"symfony/var-dumper": "~4.2.0",
"symfony/process": "~4.2.0",
"doctrine/cache": "^1.8",
"doctrine/collections": "^1.5",
"guzzlehttp/psr7": "^1.4",
"filp/whoops": "~2.2",
"matthiasmullie/minify": "^1.3",
"monolog/monolog": "~1.0",
"gregwar/image": "2.*",
"donatj/phpuseragentparser": "~1.0",
"pimple/pimple": "~3.2",
"rockettheme/toolbox": "~1.4.0",
"maximebf/debugbar": "~1.15",
"league/climate": "^3.4",
"antoligy/dom-string-iterators": "^1.0",
"miljar/php-exif": "^0.6.3",
"composer/ca-bundle": "^1.0"
"miljar/php-exif": "^0.6.4",
"composer/ca-bundle": "^1.0",
"dragonmantank/cron-expression": "^1.2",
"phive/twig-extensions-deferred": "^1.0",
"willdurand/negotiation": "2.x-dev"
},
"require-dev": {
"codeception/codeception": "^2.1",
"phpunit/php-code-coverage": "~2.0",
"fzaninotto/faker": "^1.5",
"codeception/codeception": "^2.4",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-deprecation-rules": "^0.11.0",
"phpunit/php-code-coverage": "~6.0",
"fzaninotto/faker": "^1.8",
"victorjonsson/markdowndocs": "dev-master"
},
"suggest": {
"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": {
"apcu-autoloader": true,
"platform": {
"php": "7.1.3"
}
},
"repositories": [
{
"type": "vcs",
@@ -50,13 +83,23 @@
"psr-4": {
"Grav\\": "system/src/Grav"
},
"files": ["system/defines.php"]
"files": [
"system/defines.php",
"system/aliases.php"
]
},
"archive": {
"exclude": ["VERSION"]
"exclude": [
"VERSION"
]
},
"scripts": {
"api-16": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.16.md",
"api-15": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.md",
"post-create-project-cmd": "bin/grav install",
"phpstan": "vendor/bin/phpstan analyse -l 2 -c ./tests/phpstan/phpstan.neon system/src --memory-limit=256M",
"phpstan-framework": "vendor/bin/phpstan analyse -l 5 -c ./tests/phpstan/phpstan.neon system/src/Grav/Framework --memory-limit=256M",
"phpstan-plugins": "vendor/bin/phpstan analyse -l 0 -c ./tests/phpstan/plugins.neon user/plugins --memory-limit=256M",
"test": "vendor/bin/codecept run unit",
"test-windows": "vendor\\bin\\codecept run unit"
},

3718
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,45 +1,47 @@
<?php
/**
* @package Grav.Core
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav;
define('GRAV_PHP_MIN', '5.5.9');
// 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;
\define('GRAV_REQUEST_TIME', microtime(true));
\define('GRAV_PHP_MIN', '7.1.3');
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));
}
// Register the auto-loader.
$loader = require_once $autoload;
if (PHP_SAPI === 'cli-server' && !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>");
}
// Set timezone to default, falls back to system if php.ini not set
date_default_timezone_set(@date_default_timezone_get());
// Set internal encoding if mbstring loaded
if (!extension_loaded('mbstring')) {
// 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');
// 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
$grav = Grav::instance(
array(
@@ -50,6 +52,9 @@ $grav = Grav::instance(
// Process the page
try {
$grav->process();
} catch (\Error $e) {
$grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
throw $e;
} catch (\Exception $e) {
$grav->fireEvent('onFatalException', new Event(array('exception' => $e)));
throw $e;

4
now.json Normal file
View File

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

View File

@@ -9,3 +9,5 @@ Disallow: /vendor/
Disallow: /user/
Allow: /user/pages/
Allow: /user/themes/
Allow: /user/images/
Allow: /

5
system/aliases.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
/** Moved from non-namespaced classes to Grav Framework */
class_alias(Grav\Framework\Parsedown\Parsedown::class, '\Parsedown');
class_alias(Grav\Framework\Parsedown\ParsedownExtra::class, '\ParsedownExtra');

View File

@@ -30,9 +30,25 @@ div.phpdebugbar {
}
.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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 4.1 KiB

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
body header {
background: #8552A2;
background: #3085EE;
}
body .left-panel {

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,76 @@
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: 'cd ~;ls -lah;'
validate:
required: true
.args:
type: text
label: PLUGIN_ADMIN.EXTRA_ARGUMENTS
.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

@@ -0,0 +1,107 @@
title: PLUGIN_ADMIN.SECURITY
form:
validation: loose
fields:
xss_section:
type: section
title: PLUGIN_ADMIN.XSS_SECURITY
underline: true
xss_whitelist:
type: selectize
size: large
label: PLUGIN_ADMIN.XSS_WHITELIST_PERMISSIONS
help: PLUGIN_ADMIN.XSS_WHITELIST_PERMISSIONS_HELP
placeholder: 'admin.super'
classes: fancy
validate:
type: commalist
xss_enabled.on_events:
type: toggle
label: PLUGIN_ADMIN.XSS_ON_EVENTS
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool
xss_enabled.invalid_protocols:
type: toggle
label: PLUGIN_ADMIN.XSS_INVALID_PROTOCOLS
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
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:
type: toggle
label: PLUGIN_ADMIN.XSS_MOZ_BINDINGS
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool
xss_enabled.html_inline_styles:
type: toggle
label: PLUGIN_ADMIN.XSS_HTML_INLINE_STYLES
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool
xss_enabled.dangerous_tags:
type: toggle
label: PLUGIN_ADMIN.XSS_DANGEROUS_TAGS
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool
xss_dangerous_tags:
type: selectize
size: large
label: PLUGIN_ADMIN.XSS_DANGEROUS_TAGS_LIST
classes: fancy
validate:
type: commalist
uploads_section:
type: section
title: PLUGIN_ADMIN.UPLOADS_SECURITY
underline: true
uploads_dangerous_extensions:
type: selectize
size: large
label: PLUGIN_ADMIN.UPLOADS_DANGEROUS_EXTENSIONS
help: PLUGIN_ADMIN.UPLOADS_DANGEROUS_EXTENSIONS_HELP
classes: fancy
validate:
type: commalist

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -21,6 +21,9 @@ form:
title: PLUGIN_ADMIN.CONTENT
fields:
xss_check:
type: xss
header.title:
type: text
autofocus: true
@@ -32,7 +35,7 @@ form:
validate:
type: textarea
uploads:
header.media_order:
type: pagemedia
label: PLUGIN_ADMIN.PAGE_MEDIA
@@ -310,6 +313,31 @@ form:
toggleable: true
help: PLUGIN_ADMIN.APPEND_URL_EXT_HELP
routes_only:
type: section
title: PLUGIN_ADMIN.ROUTE_OVERRIDES
underline: true
fields:
header.routes.default:
type: text
toggleable: true
label: PLUGIN_ADMIN.ROUTE_DEFAULT
header.routes.canonical:
type: text
toggleable: true
label: PLUGIN_ADMIN.ROUTE_CANONICAL
header.routes.aliases:
type: array
toggleable: true
value_only: true
size: large
label: PLUGIN_ADMIN.ROUTE_ALIASES
admin_only:
type: section
title: PLUGIN_ADMIN.ADMIN_SPECIFIC_OVERRIDES

View File

@@ -1,5 +1,5 @@
title: PLUGIN_ADMIN:EXTERNAL
@extends:
extends@:
type: default
context: blueprints://pages
@@ -25,7 +25,7 @@ form:
content:
unset@: true
uploads:
header.media_order:
unset@: true
header.external_url:

View File

@@ -1,7 +1,5 @@
title: PLUGIN_ADMIN.MODULAR
@extends:
type: default
context: blueprints://pages
extends@: default
form:
fields:
@@ -13,35 +11,28 @@ form:
content:
fields:
modular_title:
type: spacer
title: PLUGIN_ADMIN.MODULAR_SETUP
header.content.items:
type: select
type: text
label: PLUGIN_ADMIN.ITEMS
default: '@self.modular'
options:
'@self.modular': Modular Children
size: medium
header.content.order.by:
type: select
type: text
label: PLUGIN_ADMIN.ORDER_BY
default: date
options:
folder: PLUGIN_ADMIN.FOLDER
title: PLUGIN_ADMIN.TITLE
date: PLUGIN_ADMIN.DATE
default: PLUGIN_ADMIN.DEFAULT
placeholder: date
help:
size: small
header.content.order.dir:
type: select
type: text
label: PLUGIN_ADMIN.ORDER
default: desc
options:
asc: PLUGIN_ADMIN.ASCENDING
desc: PLUGIN_ADMIN.DESCENDING
help: '"desc" or "asc" are valid values'
placeholder: desc
size: small
header.process:
type: ignore
content:
type: ignore
uploads:
type: ignore

View File

@@ -4,120 +4,124 @@ form:
fields:
info:
type: userinfo
size: large
info:
type: userinfo
size: large
avatar:
type: file
size: large
destination: 'user://accounts/avatars'
multiple: false
random_name: true
avatar:
type: file
size: large
destination: 'user://accounts/avatars'
multiple: false
random_name: true
content:
type: section
title: PLUGIN_ADMIN.ACCOUNT
underline: true
content:
type: section
title: PLUGIN_ADMIN.ACCOUNT
underline: true
username:
type: text
size: large
label: PLUGIN_ADMIN.USERNAME
disabled: true
readonly: true
username:
type: text
size: large
label: PLUGIN_ADMIN.USERNAME
disabled: true
readonly: true
email:
type: email
size: large
label: PLUGIN_ADMIN.EMAIL
validate:
type: email
message: PLUGIN_ADMIN.EMAIL_VALIDATION_MESSAGE
required: true
email:
type: email
size: large
label: PLUGIN_ADMIN.EMAIL
validate:
type: email
message: PLUGIN_ADMIN.EMAIL_VALIDATION_MESSAGE
required: true
password:
type: password
size: large
label: PLUGIN_ADMIN.PASSWORD
validate:
required: false
message: PLUGIN_ADMIN.PASSWORD_VALIDATION_MESSAGE
config-pattern@: system.pwd_regex
password:
type: password
size: large
label: PLUGIN_ADMIN.PASSWORD
autocomplete: new-password
validate:
required: false
message: PLUGIN_ADMIN.PASSWORD_VALIDATION_MESSAGE
config-pattern@: system.pwd_regex
fullname:
type: text
size: large
label: PLUGIN_ADMIN.FULL_NAME
validate:
required: true
fullname:
type: text
size: large
label: PLUGIN_ADMIN.FULL_NAME
validate:
required: true
title:
type: text
size: large
label: PLUGIN_ADMIN.TITLE
title:
type: text
size: large
label: PLUGIN_ADMIN.TITLE
language:
type: select
label: PLUGIN_ADMIN.LANGUAGE
size: medium
classes: fancy
data-options@: '\Grav\Plugin\Admin\Admin::adminLanguages'
default: 'en'
help: PLUGIN_ADMIN.LANGUAGE_HELP
language:
type: select
label: PLUGIN_ADMIN.LANGUAGE
size: medium
classes: fancy
data-options@: '\Grav\Plugin\Admin\Admin::adminLanguages'
default: 'en'
help: PLUGIN_ADMIN.LANGUAGE_HELP
twofa_check:
type: conditional
condition: config.plugins.admin.twofa_enabled
twofa_check:
type: conditional
condition: config.plugins.admin.twofa_enabled
fields:
fields:
twofa:
title: PLUGIN_ADMIN.2FA_TITLE
type: section
underline: true
twofa:
title: PLUGIN_ADMIN.2FA_TITLE
type: section
underline: true
twofa_enabled:
type: toggle
label: PLUGIN_ADMIN.2FA_ENABLED
classes: twofa-toggle
highlight: 1
default: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twofa_enabled:
type: toggle
label: PLUGIN_ADMIN.2FA_ENABLED
classes: twofa-toggle
highlight: 1
default: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twofa_secret:
type: 2fa_secret
outerclasses: 'twofa-secret'
label: PLUGIN_ADMIN.2FA_SECRET
sublabel: PLUGIN_ADMIN.2FA_SECRET_HELP
twofa_secret:
type: 2fa_secret
outerclasses: 'twofa-secret'
markdown: true
label: PLUGIN_ADMIN.2FA_SECRET
sublabel: PLUGIN_ADMIN.2FA_SECRET_HELP
security:
title: PLUGIN_ADMIN.ACCESS_LEVELS
type: section
security: admin.super
underline: true
security:
security@: admin.super
title: PLUGIN_ADMIN.ACCESS_LEVELS
type: section
underline: true
fields:
groups:
type: select
multiple: true
size: large
label: PLUGIN_ADMIN.GROUPS
data-options@: '\Grav\Common\User\Group::groupNames'
classes: fancy
help: PLUGIN_ADMIN.GROUPS_HELP
validate:
type: commalist
fields:
groups:
security@: admin.super
type: select
multiple: true
size: large
label: PLUGIN_ADMIN.GROUPS
data-options@: '\Grav\Common\User\Group::groupNames'
classes: fancy
help: PLUGIN_ADMIN.GROUPS_HELP
validate:
type: commalist
access:
type: permissions
label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true
validate:
type: array
access:
security@: admin.super
type: permissions
label: PLUGIN_ADMIN.PERMISSIONS
ignore_empty: true
validate:
type: array

View File

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

View File

@@ -0,0 +1,39 @@
title: User Accounts
description: User Accounts
type: flex-objects
extends@: 'user/account'
config:
admin:
list:
fields:
username:
link: edit
search: true
email:
search: true
fullname:
search: true
options:
per_page: 20
order:
by: username
dir: asc
menu:
list:
route: '/accounts'
title: Accounts
icon: fa-users
authorize: ['admin.users', 'admin.accounts', 'admin.super']
form:
fields:
username:
flex-disabled@: exists
disabled: false
flex-readonly@: exists
readonly: false
validate:
required: true

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

@@ -53,7 +53,7 @@ types:
thumb: media/thumb-flv.png
mime: video/x-flv
webm:
type: file
type: video
thumb: media/thumb-webm.png
mime: video/webm
ogv:

View File

@@ -0,0 +1,38 @@
xss_whitelist: [admin.super] # Whitelist of user access that should 'skip' XSS checking
xss_enabled:
on_events: true
invalid_protocols: true
moz_binding: true
html_inline_styles: true
dangerous_tags: true
xss_invalid_protocols:
- javascript
- livescript
- vbscript
- mocha
- feed
- data
xss_dangerous_tags:
- applet
- meta
- xml
- blink
- link
- style
- script
- embed
- object
- iframe
- frame
- frameset
- ilayer
- layer
- bgsound
- title
- base
uploads_dangerous_extensions:
- php
- html
- htm
- js
- exe

View File

@@ -3,7 +3,7 @@ default_lang: en # Default language for site (potenti
author:
name: John Appleseed # Default author name
email: 'john@email.com' # Default author email
email: 'john@example.com' # Default author email
taxonomies: [category,tag] # Arbitrary list of taxonomy types
@@ -17,17 +17,17 @@ summary:
delimiter: === # The summary delimiter
redirects:
# '/redirect-test': '/' # Redirect test goes to home page
# '/old/(.*)': '/new/$1' # Would redirect /old/my-page to /new/my-page
# '/redirect-test': '/' # Redirect test goes to home page
# '/old/(.*)': '/new/$1' # Would redirect /old/my-page to /new/my-page
routes:
# '/something/else': '/blog/sample-3' # Alias for /blog/sample-3
# '/new/(.*)': '/blog/$1' # Regex any /new/my-page URL to /blog/my-page Route
# '/something/else': '/blog/sample-3' # Alias for /blog/sample-3
# '/new/(.*)': '/blog/$1' # Regex any /new/my-page URL to /blog/my-page Route
blog:
route: '/blog' # Custom value added (accessible via system.blog.route)
#menu: # Sample Menu Example
#menu: # Menu Example
# - text: Source
# icon: github
# url: https://github.com/getgrav/grav

View File

@@ -1,6 +1,6 @@
schemes:
image:
type: ReadOnlyStream
type: Stream
paths:
- user://images
- system://images

View File

@@ -5,13 +5,22 @@ param_sep: ':' # Parameter separator, use ';'
wrapped_site: false # For themes/plugins to know if Grav is wrapped by another platform
reverse_proxy_setup: false # Running in a reverse proxy scenario with different webserver ports than proxy
force_ssl: false # If enabled, Grav forces to be accessed via HTTPS (NOTE: Not an ideal solution)
force_lowercase_urls: true # If you want to support mixed cased URLs set this to false
custom_base_url: '' # Set the base_url manually, e.g. http://yoursite.com/yourpath
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
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:
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
pages_fallback_only: false # Only fallback to find page content through supported languages
translations: true # Enable translations by default
translations_fallback: true # Fallback through supported translations if active lang doesn't exist
session_store_active: false # Store active language in session
@@ -23,7 +32,7 @@ home:
hide_in_urls: false # Hide the home route in URLs
pages:
theme: antimatter # Default theme (defaults to "antimatter" theme)
theme: quark # Default theme (defaults to "quark" theme)
order:
by: default # Order pages by "default", "alpha" or "date"
dir: asc # Default ordering direction, "asc" or "desc"
@@ -50,7 +59,7 @@ pages:
special_chars: # List of special characters to automatically convert to entities
'>': 'gt'
'<': 'lt'
types: [txt,xml,html,htm,json,rss,atom] # list of valid page types
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)
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
@@ -63,6 +72,7 @@ pages:
ignore_files: [.DS_Store] # Files to ignore in Pages
ignore_folders: [.git, .idea] # Folders to ignore in Pages
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
frontmatter:
process_twig: false # Should the frontmatter be processed to replace Twig variables?
@@ -72,8 +82,11 @@ cache:
enabled: true # Set to true to enable caching
check:
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)
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
cli_compatibility: false # Ensures only non-volatile drivers are used (file, redis, memcache, etc.)
lifetime: 604800 # Lifetime of cached data in seconds (0 = infinite)
@@ -86,7 +99,7 @@ twig:
cache: true # Set to true to enable Twig caching
debug: true # Enable Twig debug
auto_reload: true # Refresh cache on changes
autoescape: false # Autoescape Twig vars
autoescape: false # Autoescape Twig vars (DEPRECATED, always enabled in strict mode)
undefined_functions: true # Allow undefined functions
undefined_filters: true # Allow undefined filters
umask_fix: false # By default Twig creates cached files as 755, fix switches this to 775
@@ -110,6 +123,11 @@ errors:
display: 0 # Display either (1) Full backtrace | (0) Simple Error | (-1) System Error
log: true # Log errors to /logs folder
log:
handler: file # Log handler. Currently supported: file | syslog
syslog:
facility: local6 # Syslog facilities output
debugger:
enabled: false # Enable Grav debugger and following settings
shutdown:
@@ -121,6 +139,7 @@ images:
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
auto_fix_orientation: false # Automatically fix the image orientation based on the Exif data
seofriendly: false # SEO-friendly processed image names
media:
enable_media_timestamp: false # Enable media timestamps
@@ -130,8 +149,10 @@ media:
session:
enabled: true # Enable Session support
initialize: true # Initialize session from Grav (if false, plugin needs to start the session)
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
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
httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed.
split: true # Sessions should be independent between site and plugins (such as admin)
@@ -143,3 +164,11 @@ gpm:
method: 'auto' # Either 'curl', 'fopen' or 'auto'. 'auto' will try fopen first and if not available cURL
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
accounts:
type: data # Account type: data or flex
storage: file # Flex storage type: file or folder
strict_mode:
yaml_compat: true # Grav 1.5+: Enables YAML backwards compatibility
twig_compat: true # Grav 1.5+: Enables deprecated Twig autoescape setting (autoescape: false)

View File

@@ -1,19 +1,19 @@
<?php
/**
* @package Grav.Core
* @package Grav\Core
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
// Some standard defines
define('GRAV', true);
define('GRAV_VERSION', '1.3.7');
//define('GRAV_TESTING', true);
define('GRAV_VERSION', '1.6.25');
define('GRAV_TESTING', false);
define('DS', '/');
if (!defined('GRAV_PHP_MIN')) {
define('GRAV_PHP_MIN', '5.5.9');
define('GRAV_PHP_MIN', '7.1.3');
}
// Directories and Paths

17
system/install.php Normal file
View File

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

View File

@@ -1,75 +1,63 @@
---
FRONTMATTER_ERROR_PAGE: |
---
العنوان: %1$s
---
# خطأ: مادة أمامية غير صحيحة
مسار: '%2$s'
**%3$s**
, , ,
%4$s
, , ,
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:
- الاثنين
- الثلاثاء
- الأربعاء
- الخميس
- الجمعة
- السبت
- الأحد
GRAV:
FRONTMATTER_ERROR_PAGE: "---\nالعنوان: %1$s\n---\n# خطأ: مادة أمامية غير صحيحة\n\nمسار: '%2$s'\n\n**%3$s**\n\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:
- 'الاثنين'
- 'الثلاثاء'
- 'الأربعاء'
- 'الخميس'
- 'الجمعة'
- 'السبت'
- 'الأحد'

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,75 +1,62 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# S'ha produït un error: Frontmatter invàlid
Ruta: `%2$s`
**%3$s**
```
%4$s
```
NICETIME:
NO_DATE_PROVIDED: "No s'ha proporcionat data"
BAD_DATE: Data invàlida
AGO: abans
FROM_NOW: "des d'ara"
SECOND: segon
MINUTE: minut
HOUR: hora
DAY: dia
WEEK: setmana
MONTH: mes
YEAR: any
DECADE: dècada
SEC: s
MIN: min
HR: h
WK: setm.
MO: m.
YR: a.
DEC: dèc.
SECOND_PLURAL: segons
MINUTE_PLURAL: minuts
HOUR_PLURAL: hores
DAY_PLURAL: dies
WEEK_PLURAL: setmanes
MONTH_PLURAL: mesos
YEAR_PLURAL: anys
DECADE_PLURAL: dècades
SEC_PLURAL: s
MIN_PLURAL: min
HR_PLURAL: h
WK_PLURAL: setm.
MO_PLURAL: mesos
YR_PLURAL: anys
DEC_PLURAL: dèc.
FORM:
VALIDATION_FAIL: '<b>Ha fallat la validació:</b>'
INVALID_INPUT: Entrada no vàlida a
MISSING_REQUIRED_FIELD: 'Falta camp obligatori:'
MONTHS_OF_THE_YEAR:
- Gener
- Febrer
- Març
- Abril
- Maig
- Juny
- Juliol
- Agost
- Setembre
- Octubre
- Novembre
- Desembre
DAYS_OF_THE_WEEK:
- Dilluns
- Dimarts
- Dimecres
- Dijous
- Divendres
- Dissabte
- Diumenge
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```"
NICETIME:
NO_DATE_PROVIDED: No s'ha proporcionat data
BAD_DATE: Data invàlida
AGO: abans
FROM_NOW: des d'ara
SECOND: segon
MINUTE: minut
HOUR: hora
DAY: dia
WEEK: setmana
MONTH: mes
YEAR: any
DECADE: dècada
SEC: s
HR: h
WK: setm.
MO: m.
YR: a.
DEC: dèc.
SECOND_PLURAL: segons
MINUTE_PLURAL: minuts
HOUR_PLURAL: hores
DAY_PLURAL: dies
WEEK_PLURAL: setmanes
MONTH_PLURAL: mesos
YEAR_PLURAL: anys
DECADE_PLURAL: dècades
SEC_PLURAL: s
MIN_PLURAL: min
HR_PLURAL: h
WK_PLURAL: setm.
MO_PLURAL: mesos
YR_PLURAL: anys
DEC_PLURAL: dèc.
FORM:
VALIDATION_FAIL: <b>Ha fallat la validació:</b>
INVALID_INPUT: Entrada no vàlida a
MISSING_REQUIRED_FIELD: 'Falta camp obligatori:'
MONTHS_OF_THE_YEAR:
- 'Gener'
- 'Febrer'
- 'Març'
- 'Abril'
- 'Maig'
- 'Juny'
- 'Juliol'
- 'Agost'
- 'Setembre'
- 'Octubre'
- 'Novembre'
- 'Desembre'
DAYS_OF_THE_WEEK:
- 'Dilluns'
- 'Dimarts'
- 'Dimecres'
- 'Dijous'
- 'Divendres'
- 'Dissabte'
- 'Diumenge'

View File

@@ -1,81 +1,144 @@
---
INFLECTOR_UNCOUNTABLE:
- vybavení
- informace
- rýže
- peníze
- druhy
- série
- ryba
- ovce
INFLECTOR_IRREGULAR:
person: lidé
man: muži
child: děti
sex: pohlaví
move: pohyby
INFLECTOR_ORDINALS:
default: '.'
first: '.'
second: '.'
third: '.'
NICETIME:
NO_DATE_PROVIDED: Datum nebylo vloženo
BAD_DATE: Chybné datum
AGO: zpět
FROM_NOW: od teď
SECOND: sekunda
MINUTE: minuta
HOUR: hodina
DAY: den
WEEK: týden
MONTH: měsíc
YEAR: rok
DECADE: dekáda
SEC: sek
MIN: min
HR: hod
WK: t
MO: m
YR: r
DEC: dek
SECOND_PLURAL: sekundy
MINUTE_PLURAL: minuty
HOUR_PLURAL: hodiny
DAY_PLURAL: dny
WEEK_PLURAL: týdny
MONTH_PLURAL: měsíce
YEAR_PLURAL: roky
DECADE_PLURAL: dekády
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: hod
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: r
DEC_PLURAL: dek
FORM:
VALIDATION_FAIL: '<b>Ověření se nezdařilo:</b>'
INVALID_INPUT: Neplatný vstup v
MISSING_REQUIRED_FIELD: 'Chybí požadované pole:'
MONTHS_OF_THE_YEAR:
- ledna
- února
- března
- dubna
- května
- června
- července
- srpna
- září
- října
- listopadu
- prosince
DAYS_OF_THE_WEEK:
- Pondělí
- Úterý
- Středa
- Čtvrtek
- Pátek
- Sobota
- Neděle
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:
- 'vybavení'
- 'informace'
- 'rýže'
- 'peníze'
- 'druhy'
- 'série'
- 'ryba'
- 'ovce'
INFLECTOR_IRREGULAR:
'person': 'lidé'
'man': 'muži'
'child': 'děti'
'sex': 'pohlaví'
'move': 'pohyby'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME:
NO_DATE_PROVIDED: Datum nebylo vloženo
BAD_DATE: Chybné datum
AGO: zpět
FROM_NOW: od teď
JUST_NOW: právě teď
SECOND: sekunda
MINUTE: minuta
HOUR: hodina
DAY: den
WEEK: týden
MONTH: měsíc
YEAR: rok
DECADE: dekáda
SEC: sek
MIN: min
HR: hod
WK: t
MO: m
YR: r
DEC: dek
SECOND_PLURAL: sekundy
MINUTE_PLURAL: minuty
HOUR_PLURAL: hodiny
DAY_PLURAL: dny
WEEK_PLURAL: týdny
MONTH_PLURAL: měsíce
YEAR_PLURAL: roky
DECADE_PLURAL: dekády
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: hod
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: r
DEC_PLURAL: dek
FORM:
VALIDATION_FAIL: <b>Ověření se nezdařilo:</b>
INVALID_INPUT: Neplatný vstup v
MISSING_REQUIRED_FIELD: 'Chybí požadované pole:'
MONTHS_OF_THE_YEAR:
- 'leden'
- 'únor'
- 'březen'
- 'duben'
- 'květen'
- 'červen'
- 'červenec'
- 'srpen'
- 'září'
- 'říjen'
- 'listopad'
- 'prosinec'
DAYS_OF_THE_WEEK:
- 'pondělí'
- 'úterý'
- 'středa'
- 'čtvrtek'
- 'pátek'
- 'sobota'
- 'neděle'
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,75 +1,62 @@
---
FRONTMATTER_ERROR_PAGE: |
---
Titel: %1$s
---
# Fejl: Ugyldigt frontmatter
Sti: `%2$s`
**%3$s**
```
%4$s
```
NICETIME:
NO_DATE_PROVIDED: Ingen dato angivet
BAD_DATE: Ugyldig dato
AGO: siden
FROM_NOW: fra nu
SECOND: sekund
MINUTE: minut
HOUR: time
DAY: dag
WEEK: uge
MONTH: måned
YEAR: år
DECADE: årti
SEC: sek
MIN: min
HR: t
WK: u
MO: md
YR: år
DEC: årti
SECOND_PLURAL: sekunder
MINUTE_PLURAL: minutter
HOUR_PLURAL: timer
DAY_PLURAL: dage
WEEK_PLURAL: uger
MONTH_PLURAL: måneder
YEAR_PLURAL: år
DECADE_PLURAL: årtier
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: timer
WK_PLURAL: uger
MO_PLURAL: mdr
YR_PLURAL: år
DEC_PLURAL: årtier
FORM:
VALIDATION_FAIL: '<b>Validering mislykkedes:</b>'
INVALID_INPUT: Ugyldigt input i
MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:'
MONTHS_OF_THE_YEAR:
- Januar
- Februar
- Marts
- April
- Maj
- Juni
- Juli
- August
- September
- Oktober
- November
- December
DAYS_OF_THE_WEEK:
- Mandag
- Tirsdag
- Onsdag
- Torsdag
- Fredag
- Lørdag
- Søndag
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```"
NICETIME:
NO_DATE_PROVIDED: Ingen dato angivet
BAD_DATE: Ugyldig dato
AGO: siden
FROM_NOW: fra nu
SECOND: sekund
MINUTE: minut
HOUR: time
DAY: dag
WEEK: uge
MONTH: måned
YEAR: år
DECADE: årti
SEC: sek
HR: t
WK: u
MO: md
YR: år
DEC: årti
SECOND_PLURAL: sekunder
MINUTE_PLURAL: minutter
HOUR_PLURAL: timer
DAY_PLURAL: dage
WEEK_PLURAL: uger
MONTH_PLURAL: måneder
YEAR_PLURAL: år
DECADE_PLURAL: årtier
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: timer
WK_PLURAL: uger
MO_PLURAL: mdr
YR_PLURAL: år
DEC_PLURAL: årtier
FORM:
VALIDATION_FAIL: <b>Validering mislykkedes:</b>
INVALID_INPUT: Ugyldigt input i
MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:'
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'

View File

@@ -1,89 +1,144 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Fehler: Frontmatter enthält Fehler
Pfad: `%2$s`
**%3$s **
```
%4$s
```
INFLECTOR_UNCOUNTABLE:
1: Informationen
2: Reis
3: Geld
INFLECTOR_IRREGULAR:
person: Personen
man: Menschen
child: Kinder
sex: Geschlecht
move: Züge
INFLECTOR_ORDINALS:
default: '.'
first: '.'
second: '.'
third: '.'
NICETIME:
NO_DATE_PROVIDED: Kein Datum angegeben
BAD_DATE: Falsches Datum
AGO: her
FROM_NOW: ab jetzt
SECOND: Sekunde
MINUTE: Minute
HOUR: Stunde
DAY: Tag
WEEK: Woche
MONTH: Monat
YEAR: Jahr
DECADE: Jahrzehnt
SEC: Sek.
MIN: Min.
HR: Std.
WK: Wo.
MO: Mo.
YR: J.
DEC: Dek.
SECOND_PLURAL: Sekunden
MINUTE_PLURAL: Minuten
HOUR_PLURAL: Stunden
DAY_PLURAL: Tage
WEEK_PLURAL: Wochen
MONTH_PLURAL: Monate
YEAR_PLURAL: Jahre
DECADE_PLURAL: Jahrzehnte
SEC_PLURAL: Sekunden
MIN_PLURAL: Minuten
HR_PLURAL: Stunden
WK_PLURAL: Wochen
MO_PLURAL: Monate
YR_PLURAL: Jahre
DEC_PLURAL: Jahrzehnten
FORM:
VALIDATION_FAIL: '<b>Überprüfung fehlgeschlagen:</b>'
INVALID_INPUT: Ungültige Eingabe in
MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:'
MONTHS_OF_THE_YEAR:
- Januar
- Februar
- März
- April
- Mai
- Juni
- Juli
- August
- September
- Oktober
- November
- Dezember
DAYS_OF_THE_WEEK:
- Montag
- Dienstag
- Mittwoch
- Donnerstag
- Freitag
- Samstag
- Sonntag
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```"
INFLECTOR_PLURALS:
'/(quiz)$/i': '\1zes'
'/^(ox)$/i': '\1en'
'/([m|l])ouse$/i': '\1ice'
'/(matr|vert|ind)ix|ex$/i': '\1ice'
'/(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': '\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:
- 'Ausstattung'
- 'Informationen'
- 'Reis'
- 'Geld'
- 'Arten'
- 'Serie'
- 'Fisch'
- 'Schaf'
INFLECTOR_IRREGULAR:
'person': 'Personen'
'man': 'Menschen'
'child': 'Kinder'
'sex': 'Geschlecht'
'move': 'Züge'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME:
NO_DATE_PROVIDED: Kein Datum angegeben
BAD_DATE: Falsches Datum
AGO: her
FROM_NOW: ab jetzt
JUST_NOW: jetzt gerade
SECOND: Sekunde
MINUTE: Minute
HOUR: Stunde
DAY: Tag
WEEK: Woche
MONTH: Monat
YEAR: Jahr
DECADE: Jahrzehnt
SEC: Sek.
MIN: Min.
HR: Std.
WK: Wo.
MO: Mo.
YR: J.
DEC: Dez
SECOND_PLURAL: Sekunden
MINUTE_PLURAL: Minuten
HOUR_PLURAL: Stunden
DAY_PLURAL: Tage
WEEK_PLURAL: Wochen
MONTH_PLURAL: Monate
YEAR_PLURAL: Jahre
DECADE_PLURAL: Jahrzehnte
SEC_PLURAL: Sekunden
MIN_PLURAL: Minuten
HR_PLURAL: Stunden
WK_PLURAL: Wochen
MO_PLURAL: Monate
YR_PLURAL: Jahre
DEC_PLURAL: Jahrzehnten
FORM:
VALIDATION_FAIL: <b>Überprüfung fehlgeschlagen:</b>
INVALID_INPUT: Ungültige Eingabe in
MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:'
MONTHS_OF_THE_YEAR:
- 'Januar'
- 'Februar'
- 'März'
- 'April'
- 'Mai'
- 'Juni'
- 'Juli'
- 'August'
- 'September'
- 'Oktober'
- 'November'
- 'Dezember'
DAYS_OF_THE_WEEK:
- 'Montag'
- 'Dienstag'
- 'Mittwoch'
- 'Donnerstag'
- 'Freitag'
- 'Samstag'
- 'Sonntag'
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,63 @@
---
MONTHS_OF_THE_YEAR:
- Ιανουάριος
- Φεβρουάριος
- Μάρτιος
- Απρίλιος
- Μάιος
- Ιούνιος
- Ιούλιος
- Αύγουστος
- Σεπτέμβριος
- Οκτώβριος
- Νοέμβριος
- Δεκέμβριος
DAYS_OF_THE_WEEK:
- Δευτέρα
- Τρίτη
- Τετάρτη
- Πέμπτη
- Παρασκευή
- Σάββατο
- Κυριακή
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: εβδομάδες
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,101 +1,120 @@
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:
'/(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'
'/s$/i': ''
INFLECTOR_UNCOUNTABLE: ['equipment', 'information', 'rice', 'money', 'species', 'series', 'fish', 'sheep']
INFLECTOR_IRREGULAR:
'person': 'people'
'man': 'men'
'child': 'children'
'sex': 'sexes'
'move': 'moves'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: No date provided
BAD_DATE: Bad date
AGO: ago
FROM_NOW: from now
JUST_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
DAY: day
WK: wk
MO: mo
YR: yr
DEC: dec
SECOND_PLURAL: seconds
MINUTE_PLURAL: minutes
HOUR_PLURAL: hours
DAY_PLURAL: days
WEEK_PLURAL: weeks
MONTH_PLURAL: months
YEAR_PLURAL: years
DECADE_PLURAL: decades
SEC_PLURAL: secs
MIN_PLURAL: mins
HR_PLURAL: hrs
DAY_PLURAL: days
WK_PLURAL: wks
MO_PLURAL: mos
YR_PLURAL: yrs
DEC_PLURAL: decs
FORM:
VALIDATION_FAIL: <b>Validation failed:</b>
INVALID_INPUT: Invalid input in
MISSING_REQUIRED_FIELD: Missing required field:
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']
---
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```"
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'
'/s$/i': ''
INFLECTOR_UNCOUNTABLE: ['equipment', 'information', 'rice', 'money', 'species', 'series', 'fish', 'sheep']
INFLECTOR_IRREGULAR:
'person': 'people'
'man': 'men'
'child': 'children'
'sex': 'sexes'
'move': 'moves'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: No date provided
BAD_DATE: Bad date
AGO: ago
FROM_NOW: from now
JUST_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: seconds
MINUTE_PLURAL: minutes
HOUR_PLURAL: hours
DAY_PLURAL: days
WEEK_PLURAL: weeks
MONTH_PLURAL: months
YEAR_PLURAL: years
DECADE_PLURAL: decades
SEC_PLURAL: secs
MIN_PLURAL: mins
HR_PLURAL: hrs
WK_PLURAL: wks
MO_PLURAL: mos
YR_PLURAL: yrs
DEC_PLURAL: decs
FORM:
VALIDATION_FAIL: <b>Validation failed:</b>
INVALID_INPUT: Invalid input in
MISSING_REQUIRED_FIELD: Missing required field:
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']
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,90 +1,95 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Error: Frontmatter Inválido
Ruta: `%2$s`
**%3$s**
```
%4$s
```
INFLECTOR_UNCOUNTABLE:
0: equipo
1: información
3: dinero
5: series
6: pescado
7: oveja
INFLECTOR_IRREGULAR:
man: hombres
child: niños
sex: sexos
INFLECTOR_ORDINALS:
first: ro
second: do
third: ro
NICETIME:
NO_DATE_PROVIDED: No se proporcionó fecha
BAD_DATE: Fecha erronea
AGO: antes
FROM_NOW: desde ahora
SECOND: segundo
MINUTE: minuto
HOUR: hora
DAY: día
WEEK: semana
MONTH: mes
YEAR: año
DECADE: década
SEC: seg
MIN: min
HR: h
WK: sem
MO: mes
YR: año
DEC: dec
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
DAY_PLURAL: días
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: años
DECADE_PLURAL: décadas
SEC_PLURAL: segs
MIN_PLURAL: mins
HR_PLURAL: hs
WK_PLURAL: sem
MO_PLURAL: mes
YR_PLURAL: años
DEC_PLURAL: décadas
FORM:
VALIDATION_FAIL: '<b>Falló la validación. </b>'
INVALID_INPUT: 'Dato inválido en: '
MISSING_REQUIRED_FIELD: 'Falta el campo requerido: '
MONTHS_OF_THE_YEAR:
- Enero
- Febrero
- Marzo
- Abril
- Mayo
- Junio
- Julio
- Agosto
- Septiembre
- Octubre
- Noviembre
- Diciembre
DAYS_OF_THE_WEEK:
- Lunes
- Martes
- Miércoles
- Jueves
- Viernes
- Sábado
- Domingo
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Frontmatter no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```"
INFLECTOR_UNCOUNTABLE:
- 'equipo'
- 'información'
- 'rice'
- 'dinero'
- 'species'
- 'series'
- 'pescado'
- 'oveja'
INFLECTOR_IRREGULAR:
'man': 'hombres'
'child': 'niños'
'sex': 'sexos'
INFLECTOR_ORDINALS:
'first': 'ro'
'second': 'do'
'third': 'ro'
NICETIME:
NO_DATE_PROVIDED: No se proporcionó fecha
BAD_DATE: Fecha errónea
AGO: antes
FROM_NOW: desde ahora
JUST_NOW: hace un momento
SECOND: segundo
MINUTE: minuto
HOUR: hora
DAY: día
WEEK: semana
MONTH: mes
YEAR: año
DECADE: década
SEC: seg
HR: h
WK: sem
MO: mes
YR: año
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
DAY_PLURAL: días
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: años
DECADE_PLURAL: décadas
SEC_PLURAL: segs
HR_PLURAL: hs
WK_PLURAL: sem
MO_PLURAL: mes
YR_PLURAL: os
DEC_PLURAL: décadas
FORM:
VALIDATION_FAIL: '<b>Falló la validación: </b>'
INVALID_INPUT: 'Dato inválido en: '
MISSING_REQUIRED_FIELD: 'Falta el campo requerido: '
MONTHS_OF_THE_YEAR:
- 'Enero'
- 'Febrero'
- 'Marzo'
- 'Abril'
- 'Mayo'
- 'Junio'
- 'Julio'
- 'Agosto'
- 'Septiembre'
- 'Octubre'
- 'Noviembre'
- 'Diciembre'
DAYS_OF_THE_WEEK:
- 'Lunes'
- 'Martes'
- 'Miércoles'
- 'Jueves'
- 'Viernes'
- 'Sábado'
- 'Domingo'
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

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

@@ -0,0 +1,85 @@
---
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_UNCOUNTABLE:
- 'equipment'
- 'informatsioon'
- 'rice'
- 'money'
- '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
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_MONTH: iga kuu
TEXT_PERIOD: Iga <b />

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,60 +1,134 @@
---
NICETIME:
NO_DATE_PROVIDED: Päivämäärää ei annettu
BAD_DATE: Virheellinen päivämäärä
AGO: sitten
FROM_NOW: tästä lähtien
SECOND: sekunti
MINUTE: minuutti
HOUR: tunti
DAY: päivä
WEEK: viikko
MONTH: kuukausi
YEAR: vuosi
DECADE: vuosikymmen
SEC: sek
MIN: min
HR: h
WK: vk
MO: kk
YR: v
DEC: vuosikymmen
SECOND_PLURAL: sekuntia
MINUTE_PLURAL: minuuttia
HOUR_PLURAL: tuntia
DAY_PLURAL: päivää
WEEK_PLURAL: viikkoa
MONTH_PLURAL: kuukautta
YEAR_PLURAL: vuotta
DECADE_PLURAL: vuosikymmentä
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: h
WK_PLURAL: v
MO_PLURAL: kk
YR_PLURAL: v
DEC_PLURAL: vuosikymmentä
FORM:
VALIDATION_FAIL: '<b>Vahvistus epäonnistui:</b>'
MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:'
MONTHS_OF_THE_YEAR:
- Tammikuu
- Helmikuu
- Maaliskuu
- Huhtikuu
- Toukokuu
- Kesäkuuta
- Heinäkuu
- Elokuu
- Syyskuu
- Lokakuu
- Marraskuu
- Joulukuu
DAYS_OF_THE_WEEK:
- Maanantai
- Tiistai
- Keskiviikko
- Torstai
- Perjantai
- Lauantai
- Sunnuntai
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:
NO_DATE_PROVIDED: Päivämäärää ei annettu
BAD_DATE: Virheellinen päivämäärä
AGO: sitten
FROM_NOW: tästä lähtien
JUST_NOW: juuri nyt
SECOND: sekuntti
MINUTE: minuutti
HOUR: tunti
DAY: päivä
WEEK: viikko
MONTH: kuukausi
YEAR: vuosi
DECADE: vuosikymmen
SEC: sek
MIN: min
HR: h
WK: vk
MO: kk
YR: v
DEC: vuosikymmen
SECOND_PLURAL: sekuntia
MINUTE_PLURAL: minuuttia
HOUR_PLURAL: tuntia
DAY_PLURAL: päivää
WEEK_PLURAL: viikkoa
MONTH_PLURAL: kuukautta
YEAR_PLURAL: vuotta
DECADE_PLURAL: vuosikymmentä
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: h
WK_PLURAL: v
MO_PLURAL: kk
YR_PLURAL: v
DEC_PLURAL: vuosikymmentä
FORM:
VALIDATION_FAIL: <b>Vahvistus epäonnistui:</b>
INVALID_INPUT: Syöte ei kelpaa
MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:'
MONTHS_OF_THE_YEAR:
- 'Tammikuu'
- 'Helmikuu'
- 'Maaliskuu'
- 'Huhtikuu'
- 'Toukokuu'
- 'Kesäkuuta'
- 'Heinäkuu'
- 'Elokuu'
- 'Syyskuu'
- 'Lokakuu'
- 'Marraskuu'
- 'Joulukuu'
DAYS_OF_THE_WEEK:
- 'Maanantai'
- 'Tiistai'
- 'Keskiviikko'
- 'Torstai'
- 'Perjantai'
- 'Lauantai'
- '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,138 +1,123 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Erreur : Frontmatter invalide
Path: `%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:
- équipement
- informations
- riz
- argent
- espèces
- séries
- poisson
- mouton
INFLECTOR_IRREGULAR:
person: personnes
man: hommes
child: enfants
sex: sexes
move: déplacements
INFLECTOR_ORDINALS:
default: ème
first: er
second: ème
third: ème
NICETIME:
NO_DATE_PROVIDED: Aucune date fournie
BAD_DATE: Date erronée
AGO: plus tôt
FROM_NOW: à partir de maintenant
SECOND: seconde
MINUTE: minute
HOUR: heure
DAY: jour
WEEK: semaine
MONTH: mois
YEAR: année
DECADE: décennie
SEC: s
MIN: m
HR: h
WK: sem
MO: m
YR: an
DEC: déc
SECOND_PLURAL: secondes
MINUTE_PLURAL: minutes
HOUR_PLURAL: heures
DAY_PLURAL: jours
WEEK_PLURAL: semaines
MONTH_PLURAL: mois
YEAR_PLURAL: années
DECADE_PLURAL: décennies
SEC_PLURAL: s
MIN_PLURAL: m
HR_PLURAL: h
WK_PLURAL: sem
MO_PLURAL: mois
YR_PLURAL: a
DEC_PLURAL: décs
FORM:
VALIDATION_FAIL: '<b>La validation a échoué :</b>'
INVALID_INPUT: Saisie non valide
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
DAYS_OF_THE_WEEK:
- Lundi
- Mardi
- Mercredi
- Jeudi
- Vendredi
- Samedi
- Dimanche
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```"
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': '\1es'
'/(bu)s$/i': 'Bus'
'/(alias|status)/i': 'alias|status'
'/(ax|test)is$/i': '\1s'
'/s$/i': 's'
'/$/': 's'
INFLECTOR_SINGULAR:
'/(quiz)zes$/i': '\1'
'/(alias|status)es$/i': '\1'
'/([octop|vir])i$/i': '\1us'
INFLECTOR_UNCOUNTABLE:
- 'équipement'
- 'information'
- 'riz'
- 'argent'
- 'espèces'
- 'séries'
- 'poisson'
- 'mouton'
INFLECTOR_IRREGULAR:
'person': 'personnes'
'man': 'hommes'
'child': 'enfants'
'sex': 'sexes'
'move': 'déplacements'
INFLECTOR_ORDINALS:
'default': 'ème'
'first': 'er'
'second': 'ème'
'third': 'ème'
NICETIME:
NO_DATE_PROVIDED: Aucune date fournie
BAD_DATE: Date erronée
AGO: plus tôt
FROM_NOW: à partir de maintenant
JUST_NOW: à l'instant
SECOND: seconde
MINUTE: minute
HOUR: heure
DAY: jour
WEEK: semaine
MONTH: mois
YEAR: année
DECADE: décennie
SEC: s
MIN: m
HR: h
WK: sem
MO: m
YR: an
DEC: déc
SECOND_PLURAL: secondes
MINUTE_PLURAL: minutes
HOUR_PLURAL: heures
DAY_PLURAL: jours
WEEK_PLURAL: semaines
MONTH_PLURAL: mois
YEAR_PLURAL: années
DECADE_PLURAL: décennies
SEC_PLURAL: s
MIN_PLURAL: m
HR_PLURAL: h
WK_PLURAL: sem
MO_PLURAL: mois
YR_PLURAL: a
DEC_PLURAL: décs
FORM:
VALIDATION_FAIL: <b>La validation a échoué :</b>
INVALID_INPUT: Saisie non valide
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'
DAYS_OF_THE_WEEK:
- 'Lundi'
- 'Mardi'
- 'Mercredi'
- 'Jeudi'
- 'Vendredi'
- 'Samedi'
- '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

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,75 +1,76 @@
---
INFLECTOR_UNCOUNTABLE:
- oprema
- informacije
- riža
- novac
- vrsta
- serija
- riba
- ovca
INFLECTOR_IRREGULAR:
person: osobe
man: ljudi
child: djeca
sex: spolovi
move: Pomakni
NICETIME:
NO_DATE_PROVIDED: Datum nije upisan
BAD_DATE: Pogrešan datum
AGO: prije
FROM_NOW: od sada
SECOND: sekunda
MINUTE: minuta
HOUR: sat
DAY: dan
WEEK: tjedan
MONTH: mjesec
YEAR: godina
DECADE: desetljeće
SEC: sek
HR: sat
WK: t
MO: m
YR: g
DEC: des
SECOND_PLURAL: sekundi
MINUTE_PLURAL: minuta
HOUR_PLURAL: sati
DAY_PLURAL: dan
WEEK_PLURAL: tjedana
MONTH_PLURAL: mjeseci
YEAR_PLURAL: godina
DECADE_PLURAL: desetljeća
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: sat
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: g
DEC_PLURAL: des
FORM:
VALIDATION_FAIL: '<b>Validacija nije uspjela:</b>'
INVALID_INPUT: Pogrešan unos u
MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:'
MONTHS_OF_THE_YEAR:
- Siječanj
- Veljača
- Ožujak
- Travanj
- Svibanj
- Lipanj
- Srpanj
- Kolovoz
- Rujan
- Listopad
- Studeni
- Prosinac
DAYS_OF_THE_WEEK:
- Ponedjeljak
- Utorak
- Srijeda
- Četvrtak
- Petak
- Subota
- Nedjelja
GRAV:
INFLECTOR_UNCOUNTABLE:
- 'oprema'
- 'informacije'
- 'riža'
- 'novac'
- 'vrsta'
- 'serija'
- 'riba'
- 'ovca'
INFLECTOR_IRREGULAR:
'person': 'osobe'
'man': 'ljudi'
'child': 'djeca'
'sex': 'spolovi'
'move': 'Pomakni'
NICETIME:
NO_DATE_PROVIDED: Datum nije upisan
BAD_DATE: Pogrešan datum
AGO: prije
FROM_NOW: od sada
SECOND: sekunda
MINUTE: minuta
HOUR: sat
DAY: dan
WEEK: tjedan
MONTH: mjesec
YEAR: godina
DECADE: desetljeće
SEC: sek
HR: sat
WK: t
MO: m
YR: g
DEC: des
SECOND_PLURAL: sekundi
MINUTE_PLURAL: minuta
HOUR_PLURAL: sati
DAY_PLURAL: dan
WEEK_PLURAL: tjedana
MONTH_PLURAL: mjeseci
YEAR_PLURAL: godina
DECADE_PLURAL: desetljeća
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: sat
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: g
DEC_PLURAL: des
FORM:
VALIDATION_FAIL: <b>Validacija nije uspjela:</b>
INVALID_INPUT: Pogrešan unos u
MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:'
MONTHS_OF_THE_YEAR:
- 'Siječanj'
- 'Veljača'
- 'Ožujak'
- 'Travanj'
- 'Svibanj'
- 'Lipanj'
- 'Srpanj'
- 'Kolovoz'
- 'Rujan'
- 'Listopad'
- 'Studeni'
- 'Prosinac'
DAYS_OF_THE_WEEK:
- 'Ponedjeljak'
- 'Utorak'
- 'Srijeda'
- 'Četvrtak'
- 'Petak'
- 'Subota'
- 'Nedjelja'

View File

@@ -1,138 +1,97 @@
---
FRONTMATTER_ERROR_PAGE: |
---
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:
- felszerelés
- információ
- rizs
- pénz
- fajok
- sorozat
- hal
- juh
INFLECTOR_IRREGULAR:
person: személyek
man: férfiak
child: gyerekek
sex: nemek
move: lépések
INFLECTOR_ORDINALS:
default: '.'
first: '.'
second: '.'
third: '.'
NICETIME:
NO_DATE_PROVIDED: Nincs dátum megadva
BAD_DATE: Hibás dátum
AGO: elteltével
FROM_NOW: mostantól
SECOND: másodperc
MINUTE: perc
HOUR: óra
DAY: nap
WEEK: t
MONTH: hónap
YEAR: év
DECADE: évtized
SEC: mp
MIN: p
HR: ó
WK: hét
MO:
YR: év
DEC: évt
SECOND_PLURAL: másodperc
MINUTE_PLURAL: perc
HOUR_PLURAL: óra
DAY_PLURAL: nap
WEEK_PLURAL: hét
MONTH_PLURAL: hónap
YEAR_PLURAL: év
DECADE_PLURAL: évtized
SEC_PLURAL: mp
MIN_PLURAL: perc
HR_PLURAL: ó
WK_PLURAL: hét
MO_PLURAL:
YR_PLURAL: év
DEC_PLURAL: évt
FORM:
VALIDATION_FAIL: '<b>A validáció hibát talált:</b>'
INVALID_INPUT: 'Az itt megadott érték érvénytelen:'
MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:'
MONTHS_OF_THE_YEAR:
- január
- február
- március
- április
- május
- június
- július
- augusztus
- szeptember
- október
- november
- december
DAYS_OF_THE_WEEK:
- hétfő
- kedd
- szerda
- csütörtök
- péntek
- szombat
- vasárnap
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```"
INFLECTOR_UNCOUNTABLE:
- 'felszerelés'
- 'információ'
- 'rizs'
- 'pénz'
- 'fajok'
- 'sorozat'
- 'hal'
- 'juh'
INFLECTOR_IRREGULAR:
'person': 'személyek'
'man': 'férfiak'
'child': 'gyerekek'
'sex': 'nemek'
'move': 'lépések'
INFLECTOR_ORDINALS:
'default': '.'
'first': '.'
'second': '.'
'third': '.'
NICETIME:
NO_DATE_PROVIDED: Nincs dátum megadva
BAD_DATE: Hibás dátum
AGO: elteltével
FROM_NOW: mostantól
JUST_NOW: épp most
SECOND: másodperc
MINUTE: perc
HOUR: óra
DAY: nap
WEEK: hét
MONTH: hónap
YEAR: év
DECADE: évtized
SEC: mp
MIN: p
HR: ó
WK: hét
MO:
YR: év
DEC: évt
SECOND_PLURAL: másodperc
MINUTE_PLURAL: perc
HOUR_PLURAL: óra
DAY_PLURAL: nap
WEEK_PLURAL: hét
MONTH_PLURAL: hónap
YEAR_PLURAL: év
DECADE_PLURAL: évtized
SEC_PLURAL: mp
MIN_PLURAL: perc
HR_PLURAL: ó
WK_PLURAL: hét
MO_PLURAL:
YR_PLURAL: év
DEC_PLURAL: évt
FORM:
VALIDATION_FAIL: <b>Érvényesítés nem sikerült:</b>
INVALID_INPUT: 'A megadott érték érvénytelen:'
MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:'
MONTHS_OF_THE_YEAR:
- 'január'
- 'február'
- 'március'
- 'április'
- 'május'
- 'június'
- 'július'
- 'augusztus'
- 'szeptember'
- 'október'
- 'november'
- 'december'
DAYS_OF_THE_WEEK:
- 'hétfő'
- 'kedd'
- 'szerda'
- 'csütörtök'
- 'péntek'
- 'szombat'
- '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

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

@@ -0,0 +1,95 @@
---
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_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,62 +1,101 @@
---
FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '"
NICETIME:
NO_DATE_PROVIDED: Nessuna data fornita
BAD_DATE: Data non valida
AGO: fa
FROM_NOW: da adesso
SECOND: secondo
MINUTE: minuto
HOUR: ora
DAY: giorno
WEEK: settimana
MONTH: mese
YEAR: anno
DECADE: decennio
SEC: sec
MIN: min
HR: ora
WK: settimana
MO: mese
YR: anno
DEC: decennio
SECOND_PLURAL: secondi
MINUTE_PLURAL: minuti
HOUR_PLURAL: ore
DAY_PLURAL: giorni
WEEK_PLURAL: settimane
MONTH_PLURAL: mesi
YEAR_PLURAL: anni
DECADE_PLURAL: decadi
SEC_PLURAL: secondi
MIN_PLURAL: minuti
HR_PLURAL: ore
WK_PLURAL: settimane
MO_PLURAL: mesi
YR_PLURAL: anni
DEC_PLURAL: decenni
FORM:
VALIDATION_FAIL: '<b>Validazione fallita:</b>'
INVALID_INPUT: Input non valido in
MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:'
MONTHS_OF_THE_YEAR:
- Gennaio
- Febbraio
- Marzo
- Aprile
- Maggio
- Giugno
- Luglio
- Agosto
- Settembre
- Ottobre
- Novembre
- Dicembre
DAYS_OF_THE_WEEK:
- Lunedì
- Martedì
- Mercoledì
- Giovedì
- Venerdì
- Sabato
- Domenica
GRAV:
FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '"
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:
NO_DATE_PROVIDED: Nessuna data fornita
BAD_DATE: Data non valida
AGO: fa
FROM_NOW: da adesso
JUST_NOW: ora
SECOND: secondo
MINUTE: minuto
HOUR: ora
DAY: giorno
WEEK: settimana
MONTH: mese
YEAR: anno
DECADE: decennio
SEC: sec
MIN: min
HR: ora
WK: settimana
MO: mese
YR: anno
DEC: decennio
SECOND_PLURAL: secondi
MINUTE_PLURAL: minuti
HOUR_PLURAL: ore
DAY_PLURAL: giorni
WEEK_PLURAL: settimane
MONTH_PLURAL: mesi
YEAR_PLURAL: anni
DECADE_PLURAL: decadi
SEC_PLURAL: secondi
MIN_PLURAL: minuti
HR_PLURAL: ore
WK_PLURAL: settimane
MO_PLURAL: mesi
YR_PLURAL: anni
DEC_PLURAL: decenni
FORM:
VALIDATION_FAIL: <b>Validazione fallita:</b>
INVALID_INPUT: Input non valido in
MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:'
MONTHS_OF_THE_YEAR:
- 'Gennaio'
- 'Febbraio'
- 'Marzo'
- 'Aprile'
- 'Maggio'
- 'Giugno'
- 'Luglio'
- 'Agosto'
- 'Settembre'
- 'Ottobre'
- 'Novembre'
- 'Dicembre'
DAYS_OF_THE_WEEK:
- 'Lunedì'
- 'Martedì'
- 'Mercoledì'
- 'Giovedì'
- 'Venerdì'
- 'Sabato'
- 'Domenica'
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,15 @@
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_SINGULAR: []
INFLECTOR_UNCOUNTABLE: []
INFLECTOR_IRREGULAR:
---
GRAV:
INFLECTOR_IRREGULAR:
'person': 'みんな'
'man': '人'
'child': '子供'
'sex': '性別'
'move': '移動'
INFLECTOR_ORDINALS: []
NICETIME:
NICETIME:
NO_DATE_PROVIDED: 日付が設定されていません
BAD_DATE: 不正な日付
AGO:
FROM_NOW: from now
SECOND:
MINUTE:
HOUR:
@@ -30,11 +21,9 @@ NICETIME:
SEC:
MIN:
HR:
DAY:
WK:
MO:
YR:
DEC: dec
SECOND_PLURAL:
MINUTE_PLURAL:
HOUR_PLURAL:
@@ -46,14 +35,32 @@ NICETIME:
SEC_PLURAL:
MIN_PLURAL:
HR_PLURAL:
DAY_PLURAL:
WK_PLURAL:
MO_PLURAL:
YR_PLURAL:
DEC_PLURAL: 10年
FORM:
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: ['月', '火', '水', '木', '金', '土', '日']
MISSING_REQUIRED_FIELD: '必須項目が入力されていません:'
MONTHS_OF_THE_YEAR:
- '1月'
- '2月'
- '3月'
- '4月'
- '5月'
- '6月'
- '7月'
- '8月'
- '9月'
- '10月'
- '11月'
- '12月'
DAYS_OF_THE_WEEK:
- '月'
- '火'
- '水'
- '木'
- '金'
- '土'
- '日'

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,69 +1,78 @@
---
INFLECTOR_UNCOUNTABLE:
2: ryžiai
3: pinigai
4: prieskoniai
5: serijos
6: žuvis
7: avis
INFLECTOR_IRREGULAR:
person: žmonės
man: žmogus
child: vaikai
sex: lytys
move: juda
NICETIME:
NO_DATE_PROVIDED: Nenurodyta data
BAD_DATE: Neteisinga data
AGO: prieš
FROM_NOW: nuo dabar
SECOND: sekundė
MINUTE: minutė
HOUR: valanda
DAY: diena
WEEK: savaitė
MONTH: mėnuo
YEAR: metai
DECADE: dešimtmetis
SEC: sek
MIN: min
HR: val
WK: sav
MO: mėn
YR: m
MINUTE_PLURAL: minutės
HOUR_PLURAL: valandos
DAY_PLURAL: dienos
WEEK_PLURAL: savaitės
MONTH_PLURAL: mėnesiai
YEAR_PLURAL: metai
DECADE_PLURAL: dešimtmečiai
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: val
WK_PLURAL: sav
MO_PLURAL: mėn
YR_PLURAL: m
FORM:
MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:'
MONTHS_OF_THE_YEAR:
- Sausis
- Vasaris
- Kovas
- Balandis
- Gegužė
- Birželis
- Liepa
- Rugpjūtis
- Rugsėjis
- Spalis
- Lakpritis
- Gruodis
DAYS_OF_THE_WEEK:
- Pirmadienis
- Antradienis
- Trečiadienis
- Ketvirtadienis
- Penktadienis
- Šeštadienis
- Sekmadienis
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:
- 'equipment'
- 'information'
- 'ryžiai'
- 'pinigai'
- 'prieskoniai'
- 'serijos'
- 'žuvis'
- 'avis'
INFLECTOR_IRREGULAR:
'person': 'žmonės'
'man': 'žmogus'
'child': 'vaikai'
'sex': 'lytys'
'move': 'juda'
NICETIME:
NO_DATE_PROVIDED: Nenurodyta data
BAD_DATE: Neteisinga data
AGO: prieš
FROM_NOW: nuo dabar
SECOND: sekundė
MINUTE: minu
HOUR: valanda
DAY: diena
WEEK: savaitė
MONTH: mėnuo
YEAR: metai
DECADE: dešimtmetis
SEC: sek.
MIN: min.
HR: val.
WK: sav.
MO: mėn.
YR: m.
DEC: dešimtmetis
SECOND_PLURAL: sekundės
MINUTE_PLURAL: minutės
HOUR_PLURAL: valandos
DAY_PLURAL: dienos
WEEK_PLURAL: savaitės
MONTH_PLURAL: mėnesiai
YEAR_PLURAL: metai
DECADE_PLURAL: dešimtmečiai
SEC_PLURAL: sek.
MIN_PLURAL: min.
HR_PLURAL: val.
WK_PLURAL: sav.
MO_PLURAL: mėn.
YR_PLURAL: m.
DEC_PLURAL: dešimtmečiai
FORM:
VALIDATION_FAIL: <b>Patvirtinimas nepavyko:</b>
INVALID_INPUT: Neteisingai įvesta į
MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:'
MONTHS_OF_THE_YEAR:
- 'Sausis'
- 'Vasaris'
- 'Kovas'
- 'Balandis'
- 'Gegužė'
- 'Birželis'
- 'Liepa'
- 'Rugpjūtis'
- 'Rugsėjis'
- 'Spalis'
- 'Lakpritis'
- 'Gruodis'
DAYS_OF_THE_WEEK:
- 'Pirmadienis'
- 'Antradienis'
- 'Trečiadienis'
- 'Ketvirtadienis'
- 'Penktadienis'
- 'Šeštadienis'
- 'Sekmadienis'

View File

@@ -1,2 +1,4 @@
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']
---
GRAV:
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']

View File

@@ -1,64 +1,144 @@
---
INFLECTOR_IRREGULAR:
person: personen
man: mensen
child: kinderen
sex: geslacht
move: verplaatsen
NICETIME:
NO_DATE_PROVIDED: geen datum opgegeven
BAD_DATE: Datumformaat onjuist
AGO: geleden
FROM_NOW: vanaf nu
SECOND: seconde
MINUTE: minuut
HOUR: uur
DAY: dag
WEEK: week
MONTH: maand
YEAR: jaar
DECADE: decenium
SEC: s
MIN: min
HR: u
MO: ma
YR: j
SECOND_PLURAL: seconden
MINUTE_PLURAL: minuten
HOUR_PLURAL: uren
DAY_PLURAL: dagen
WEEK_PLURAL: weken
MONTH_PLURAL: maanden
YEAR_PLURAL: jaren
DECADE_PLURAL: decennia
SEC_PLURAL: seconden
MIN_PLURAL: minuten
HR_PLURAL: uren
WK_PLURAL: weken
MO_PLURAL: maanden
YR_PLURAL: jaren
FORM:
VALIDATION_FAIL: '<b>Validatie mislukt:</b>'
INVALID_INPUT: Ongeldige invoer in
MISSING_REQUIRED_FIELD: 'Verplicht veld ontbreekt:'
MONTHS_OF_THE_YEAR:
- Januari
- Februari
- Maart
- april
- Mei
- Juni
- Juli
- Augustus
- september
- Oktober
- november
- december
DAYS_OF_THE_WEEK:
- Maandag
- Dinsdag
- Woensdag
- Donderdag
- Vrijdag
- Zaterdag
- Zondag
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:
'person': 'personen'
'man': 'mensen'
'child': 'kinderen'
'sex': 'geslacht'
'move': 'verplaatsen'
INFLECTOR_ORDINALS:
'default': 'th'
'first': 'st'
'second': 'nd'
'third': 'rd'
NICETIME:
NO_DATE_PROVIDED: geen datum opgegeven
BAD_DATE: Datumformaat onjuist
AGO: geleden
FROM_NOW: vanaf nu
JUST_NOW: zojuist
SECOND: seconde
MINUTE: minuut
HOUR: uur
DAY: dag
WEEK: week
MONTH: maand
YEAR: jaar
DECADE: decennium
SEC: s
MIN: min
HR: u
WK: week
MO: ma
YR: j
DEC: decennia
SECOND_PLURAL: seconden
MINUTE_PLURAL: minuten
HOUR_PLURAL: uren
DAY_PLURAL: dagen
WEEK_PLURAL: weken
MONTH_PLURAL: maanden
YEAR_PLURAL: jaren
DECADE_PLURAL: decennia
SEC_PLURAL: seconden
MIN_PLURAL: minuten
HR_PLURAL: uren
WK_PLURAL: weken
MO_PLURAL: maanden
YR_PLURAL: jaren
DEC_PLURAL: decennia
FORM:
VALIDATION_FAIL: <b>Validatie mislukt:</b>
INVALID_INPUT: Ongeldige invoer in
MISSING_REQUIRED_FIELD: 'Ontbrekend verplicht veld:'
MONTHS_OF_THE_YEAR:
- 'Januari'
- 'Februari'
- 'Maart'
- 'April'
- 'Mei'
- 'Juni'
- 'Juli'
- 'Augustus'
- 'September'
- 'Oktober'
- 'November'
- 'December'
DAYS_OF_THE_WEEK:
- 'Maandag'
- 'Dinsdag'
- 'Woensdag'
- 'Donderdag'
- 'Vrijdag'
- 'Zaterdag'
- '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,93 +1,77 @@
---
FRONTMATTER_ERROR_PAGE: |
---
Tittel: %1$s
---
# Feilmelding: Ugyldig Frontmatter
Pane: '%2$s'
**%3$s **
```
%4$s
```
INFLECTOR_PLURALS:
/(quiz)$/i: '\1zes'
/^(ox)$/i: '\1en'
INFLECTOR_UNCOUNTABLE:
- utstyr
- informasjon
- ris
- penger
- arter
- serier
- fisk
- sau
INFLECTOR_IRREGULAR:
person: folk
man: menn
child: barn
sex: kjønn
move: trekk
NICETIME:
NO_DATE_PROVIDED: Ingen dato gitt
BAD_DATE: Dårlig dato
AGO: siden
FROM_NOW: fra nå
SECOND: sekund
MINUTE: minutt
HOUR: time
DAY: dag
WEEK: uke
MONTH: måned
YEAR: år
DECADE: tiår
SEC: sek
MIN: min
HR: t
WK: uke
MO: må
YR: år
DEC: des
SECOND_PLURAL: sekunder
MINUTE_PLURAL: minutter
HOUR_PLURAL: timer
DAY_PLURAL: dager
WEEK_PLURAL: uker
MONTH_PLURAL: måneder
YEAR_PLURAL: år
DECADE_PLURAL: tiår
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: timer
WK_PLURAL: uker
MO_PLURAL: mdr
YR_PLURAL: år
DEC_PLURAL: årtier
FORM:
VALIDATION_FAIL: '<b>Validering mislyktes:</b>'
INVALID_INPUT: Ugyldig innhold i
MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:'
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
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```"
INFLECTOR_UNCOUNTABLE:
- 'utstyr'
- 'informasjon'
- 'ris'
- 'penger'
- 'arter'
- 'serier'
- 'fisk'
- 'sau'
INFLECTOR_IRREGULAR:
'person': 'folk'
'man': 'menn'
'child': 'barn'
'sex': 'kjønn'
'move': 'trekk'
NICETIME:
NO_DATE_PROVIDED: Ingen dato gitt
BAD_DATE: Ugyldig dato
AGO: siden
FROM_NOW: fra nå
SECOND: sekund
MINUTE: minutt
HOUR: time
DAY: dag
WEEK: uke
MONTH: måned
YEAR: år
DECADE: tiår
SEC: sek
HR: t
WK: uke
MO:
YR: år
DEC: tiår
SECOND_PLURAL: sekunder
MINUTE_PLURAL: minutter
HOUR_PLURAL: timer
DAY_PLURAL: dager
WEEK_PLURAL: uker
MONTH_PLURAL: måneder
YEAR_PLURAL: år
DECADE_PLURAL: tiår
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: timer
WK_PLURAL: uker
MO_PLURAL: md
YR_PLURAL: år
DEC_PLURAL: årtier
FORM:
VALIDATION_FAIL: <b>Godkjenning mislyktes:</b>
INVALID_INPUT: Ugyldig innhold i
MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:'
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'

View File

@@ -1,75 +1,62 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Error: Nieprawidłowy Frontmatter
Path: `%2$s`
**%3$s**
```
%4$s
```
NICETIME:
NO_DATE_PROVIDED: Nie podano daty
BAD_DATE: Zła data
AGO: temu
FROM_NOW: od teraz
SECOND: sekunda
MINUTE: minuta
HOUR: godzina
DAY: dzień
WEEK: tydzi
MONTH: miesiąc
YEAR: rok
DECADE: dekada
SEC: sek
MIN: min
HR: godz
WK: tydz
MO: m-c
YR: rok
DEC: dekada
SECOND_PLURAL: sekund
MINUTE_PLURAL: minut
HOUR_PLURAL: godzin
DAY_PLURAL: dni
WEEK_PLURAL: tygodnie
MONTH_PLURAL: miesięcy
YEAR_PLURAL: lat
DECADE_PLURAL: dekad
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: godz
WK_PLURAL: tyg
MO_PLURAL: m-ce
YR_PLURAL: lat
DEC_PLURAL: dekad
FORM:
VALIDATION_FAIL: '<b>Weryfikacja nie powiodła się:</b>'
INVALID_INPUT: Nieprawidłowe dane wejściowe
MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:'
MONTHS_OF_THE_YEAR:
- Styczeń
- Luty
- Marzec
- Kwiecień
- Maj
- Czerwiec
- Lipiec
- Sierpień
- Wrzesień
- Październik
- Listopad
- Grudzień
DAYS_OF_THE_WEEK:
- Poniedziałek
- Wtorek
- Środa
- Czwartek
- Piątek
- Sobota
- Niedziela
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```"
NICETIME:
NO_DATE_PROVIDED: Nie podano daty
BAD_DATE: Zła data
AGO: temu
FROM_NOW: od teraz
SECOND: sekunda
MINUTE: minuta
HOUR: godzina
DAY: dzień
WEEK: tydzień
MONTH: miesiąc
YEAR: rok
DECADE: dekada
SEC: sek
HR: godz
WK: tydz
MO: m-c
YR: rok
DEC: dekada
SECOND_PLURAL: sekund
MINUTE_PLURAL: minut
HOUR_PLURAL: godzin
DAY_PLURAL: dni
WEEK_PLURAL: tygodnie
MONTH_PLURAL: miesięcy
YEAR_PLURAL: lat
DECADE_PLURAL: dekad
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: godz
WK_PLURAL: tyg
MO_PLURAL: m-ce
YR_PLURAL: lat
DEC_PLURAL: dekad
FORM:
VALIDATION_FAIL: <b>Weryfikacja nie powiodła się:</b>
INVALID_INPUT: Nieprawidłowe dane wejściowe
MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:'
MONTHS_OF_THE_YEAR:
- 'Styczeń'
- 'Luty'
- 'Marzec'
- 'Kwiecień'
- 'Maj'
- 'Czerwiec'
- 'Lipiec'
- 'Sierpień'
- 'Wrzesień'
- 'Październik'
- 'Listopad'
- 'Grudzień'
DAYS_OF_THE_WEEK:
- 'Poniedziałek'
- 'Wtorek'
- 'Środa'
- 'Czwartek'
- 'Piątek'
- 'Sobota'
- 'Niedziela'

View File

@@ -1,79 +1,46 @@
---
FRONTMATTER_ERROR_PAGE: |
---
título: %1$s
---
# Erro: Frontmatter inválida
Caminho: `%2$s`
**%3$s**
```
%4$s
```
INFLECTOR_UNCOUNTABLE:
1: informação
2: arroz
3: dinheiro
INFLECTOR_IRREGULAR:
man: homens
sex: sexos
NICETIME:
NO_DATE_PROVIDED: Não foi fornecida data
BAD_DATE: Data inválida
AGO: atrás
FROM_NOW: a partir de agora
SECOND: segundo
MINUTE: minuto
HOUR: hora
DAY: dia
WEEK: semana
MONTH: mês
YEAR: ano
DECADE: década
SEC: seg
MIN: mín
HR: h
WK: sem
MO: m
YR: a
DEC: dec
SECOND_PLURAL: segundos
MINUTE_PLURAL: minutos
HOUR_PLURAL: horas
DAY_PLURAL: dias
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: anos
DECADE_PLURAL: décadas
SEC_PLURAL: seg
MIN_PLURAL: mins
HR_PLURAL: hrs
WK_PLURAL: sems
YR_PLURAL: anos
FORM:
VALIDATION_FAIL: '<b>Validação falhada: </b>'
MISSING_REQUIRED_FIELD: 'Campo obrigatório ausente:'
MONTHS_OF_THE_YEAR:
- Janeiro
- Fevereiro
- Março
- Abril
- Maio
- Junho
- Julho
- Agosto
- Setembro
- Outubro
- Novembro
- Dezembro
DAYS_OF_THE_WEEK:
- Segunda
- Terça
- Quarta
- Quinta
- Sexta
- Sábado
- Domingo
GRAV:
NICETIME:
NO_DATE_PROVIDED: Nenhuma data fornecida
AGO: atrás
SECOND: segundo
MINUTE: minuto
HOUR: hora
DAY: dia
WEEK: semana
MONTH: mês
YEAR: ano
DECADE: década
SEC: segundos
MIN: minutos
MINUTE_PLURAL: minutos
DAY_PLURAL: dias
WEEK_PLURAL: semanas
MONTH_PLURAL: meses
YEAR_PLURAL: anos
DECADE_PLURAL: decadas
FORM:
VALIDATION_FAIL: <b>Falha na validação!</b>
MISSING_REQUIRED_FIELD: 'Campo obrigatório requerido:'
MONTHS_OF_THE_YEAR:
- 'Janeiro'
- 'Fevereiro'
- 'Março'
- 'Abril'
- 'Maio'
- 'Junho'
- 'Julho'
- 'Agosto'
- 'Setembro'
- 'Outubro'
- 'Novembro'
- 'Dezembro'
INFLECTOR_UNCOUNTABLE:
- 'equipment'
- 'information'
- 'arroz'
- 'money'
- 'species'
- 'series'
- 'fish'
- 'sheep'

View File

@@ -1,101 +1,96 @@
---
FRONTMATTER_ERROR_PAGE: |
---
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:
- echipament
- informaţie
- orez
- bani
- specii
- serii
- peşte
- oaie
INFLECTOR_IRREGULAR:
person: persoane
man: bărbați
child: copii
sex: sexe
move: mutări
NICETIME:
NO_DATE_PROVIDED: Nu există o dată prevăzută
BAD_DATE: Dată incorectă
AGO: în urmă
FROM_NOW: de acum
SECOND: secundă
MINUTE: minut
HOUR: oră
DAY: zi
WEEK: săptămână
MONTH: lună
YEAR: an
DECADE: decadă
SEC: sec
MIN: min
HR: oră
WK: săpt
MO: lună
YR: an
DEC: decadă
SECOND_PLURAL: secunde
MINUTE_PLURAL: minute
HOUR_PLURAL: ore
DAY_PLURAL: zile
WEEK_PLURAL: săptămâni
MONTH_PLURAL: luni
YEAR_PLURAL: ani
DECADE_PLURAL: decade
SEC_PLURAL: sec
MIN_PLURAL: min
HR_PLURAL: ore
WK_PLURAL: săpt
MO_PLURAL: luni
YR_PLURAL: ani
DEC_PLURAL: decenii
FORM:
VALIDATION_FAIL: '<b>Validare nereușită</b>'
INVALID_INPUT: Date incorecte în
MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:'
MONTHS_OF_THE_YEAR:
- Ianuarie
- Februarie
- Martie
- Aprilie
- Mai
- Iunie
- Iulie
- August
- Septembrie
- Octombrie
- Noiembrie
- Decembrie
DAYS_OF_THE_WEEK:
- Luni
- Marți
- Miercuri
- Joi
- Vineri
- Sâmbătă
- Duminică
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"
INFLECTOR_UNCOUNTABLE:
- 'echipament'
- 'informaţie'
- 'orez'
- 'bani'
- 'specii'
- 'serii'
- 'peşte'
- 'oaie'
INFLECTOR_IRREGULAR:
'person': 'persoane'
'man': 'bărbați'
'child': 'copii'
'sex': 'sexe'
'move': 'mutări'
NICETIME:
NO_DATE_PROVIDED: Nu există o dată prevăzută
BAD_DATE: Dată incorectă
AGO: în urmă
FROM_NOW: de acum
JUST_NOW: chiar acum
SECOND: secundă
MINUTE: minut
HOUR: oră
DAY: zi
WEEK: săptămână
MONTH: lună
YEAR: an
DECADE: decadă
SEC: secunde
MIN: minute
HR: oră
WK: săpt
MO: lună
YR: an
DEC: decadă
SECOND_PLURAL: secunde
MINUTE_PLURAL: minute
HOUR_PLURAL: ore
DAY_PLURAL: zile
WEEK_PLURAL: săptămâni
MONTH_PLURAL: luni
YEAR_PLURAL: ani
DECADE_PLURAL: decade
SEC_PLURAL: sec
MIN_PLURAL: min
HR_PLURAL: ore
WK_PLURAL: săpt
MO_PLURAL: luni
YR_PLURAL: ani
DEC_PLURAL: decenii
FORM:
VALIDATION_FAIL: <b>Validare nereușită</b>
INVALID_INPUT: Date incorecte în
MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:'
MONTHS_OF_THE_YEAR:
- 'Ianuarie'
- 'Februarie'
- 'Martie'
- 'Aprilie'
- 'Mai'
- 'Iunie'
- 'Iulie'
- 'August'
- 'Septembrie'
- 'Octombrie'
- 'Noiembrie'
- 'Decembrie'
DAYS_OF_THE_WEEK:
- 'Luni'
- 'Marți'
- 'Miercuri'
- 'Joi'
- 'Vineri'
- 'Sâmbătă'
- '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,101 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Ошибка: Недопустимое содержимое
Path: `%2$s`
**%3$s**
```
%4$s
```
INFLECTOR_IRREGULAR:
person: люди
man: человек
child: ребенок
sex: пол
move: движется
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:
- Понедельник
- Вторник
- Среда
- Четверг
- Пятница
- Суббота
- Воскресенье
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```"
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: jquery_element должен быть установлен в настройки jqCron
ERROR4: Выражение не распознано

View File

@@ -1,42 +1,144 @@
---
NICETIME:
NO_DATE_PROVIDED: Neposkytnutý žiaden dátum
BAD_DATE: Nesprávny dátum
AGO: pred
FROM_NOW: odteraz
SECOND: sekunda
MINUTE: minúta
HOUR: hodina
DAY: deň
WEEK: týždeň
MONTH: mesiac
YEAR: rok
DECADE: desaťročie
SEC: sek
MIN: min
HR: hod
FORM:
VALIDATION_FAIL: '<b>Overenie zlyhalo:</b>'
INVALID_INPUT: Neplatný vstup v
MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:'
MONTHS_OF_THE_YEAR:
- Január
- Február
- Marec
- Apríl
- Máj
- Jún
- Júl
- August
- September
- Október
- November
- December
DAYS_OF_THE_WEEK:
- Pondelok
- Utorok
- Streda
- Štvrtok
- Piatok
- Sobota
- Nedeľa
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:
NO_DATE_PROVIDED: Neposkytnutý žiaden dátum
BAD_DATE: Nesprávny dátum
AGO: pred
FROM_NOW: odteraz
JUST_NOW: práve teraz
SECOND: sekunda
MINUTE: minúta
HOUR: hodina
DAY: deň
WEEK: týždeň
MONTH: mesiac
YEAR: rok
DECADE: desaťročie
SEC: sek
MIN: min
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:
VALIDATION_FAIL: <b>Overenie zlyhalo:</b>
INVALID_INPUT: Neplatný vstup v
MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:'
MONTHS_OF_THE_YEAR:
- 'Január'
- 'Február'
- 'Marec'
- 'Apríl'
- 'Máj'
- 'Jún'
- 'Júl'
- 'August'
- 'September'
- 'Október'
- 'November'
- 'December'
DAYS_OF_THE_WEEK:
- 'Pondelok'
- 'Utorok'
- 'Streda'
- 'Štvrtok'
- 'Piatok'
- 'Sobota'
- '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'

View File

@@ -1,62 +1,72 @@
---
FRONTMATTER_ERROR_PAGE: '--- titel: %1$s --- # Fel: Ogiltig Frontmatter-sökväg: `%2$s` **%3$s** ``` %4$s ```'
NICETIME:
NO_DATE_PROVIDED: Inget datum har angivits
BAD_DATE: Ogiltigt datum
AGO: sedan
FROM_NOW: från nu
SECOND: sekund
MINUTE: minut
HOUR: timme
DAY: dag
WEEK: vecka
MONTH: månad
YEAR: år
DECADE: årtionde
SEC: sek
MIN: min
HR: t
WK: v
MO: m
YR: år
DEC: dec
SECOND_PLURAL: sekunder
MINUTE_PLURAL: minuter
HOUR_PLURAL: timmar
DAY_PLURAL: dagar
WEEK_PLURAL: veckor
MONTH_PLURAL: månader
YEAR_PLURAL: år
DECADE_PLURAL: årtionden
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: t
WK_PLURAL: v
MO_PLURAL:
YR_PLURAL: år
DEC_PLURAL: dec
FORM:
VALIDATION_FAIL: '<b>Kontrollen misslyckades:</b>'
INVALID_INPUT: Ogiltig indata i
MISSING_REQUIRED_FIELD: 'Obligatoriskt fält måste fyllas i:'
MONTHS_OF_THE_YEAR:
- Januari
- Februrari
- Mars
- April
- Maj
- Juni
- Juli
- Augusti
- September
- Oktober
- November
- December
DAYS_OF_THE_WEEK:
- Måndag
- Tisdag
- Onsdag
- Torsdag
- Fredag
- Lördag
- Söndag
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'
NICETIME:
NO_DATE_PROVIDED: Inget datum har angivits
BAD_DATE: Ogiltigt datum
AGO: sedan
FROM_NOW: fr.o.m nu
SECOND: sekund
MINUTE: minut
HOUR: timme
DAY: dag
WEEK: vecka
MONTH: månad
YEAR: år
DECADE: årtionde
SEC: sek
HR: t
WK: v
MO: m
YR: år
SECOND_PLURAL: sekunder
MINUTE_PLURAL: minuter
HOUR_PLURAL: timmar
DAY_PLURAL: dagar
WEEK_PLURAL: veckor
MONTH_PLURAL: månader
YEAR_PLURAL: år
DECADE_PLURAL: årtionden
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: t
WK_PLURAL: v
MO_PLURAL:
YR_PLURAL: år
DEC_PLURAL: dec
FORM:
VALIDATION_FAIL: <b>Kontrollen misslyckades:</b>
INVALID_INPUT: Ogiltig indata i
MISSING_REQUIRED_FIELD: 'Obligatoriskt fält måste fyllas i:'
MONTHS_OF_THE_YEAR:
- 'Januari'
- 'Februari'
- 'Mars'
- 'April'
- 'Maj'
- 'Juni'
- 'Juli'
- 'Augusti'
- 'September'
- 'Oktober'
- 'November'
- 'December'
DAYS_OF_THE_WEEK:
- 'Måndag'
- 'Tisdag'
- 'Onsdag'
- 'Torsdag'
- 'Fredag'
- 'Lördag'
- 'Söndag'

View File

@@ -1,75 +1,56 @@
---
FRONTMATTER_ERROR_PAGE: |
---
ชื่อเรื่อง: %1$s
---
# ข้อผิดพลาด: Invalid Frontmatter
Path: `%2$s`
**%3$s**
```
%4$s
```
NICETIME:
NO_DATE_PROVIDED: ไม่มีวันที่ให้
BAD_DATE: รูปแบบวันที่ผิด
AGO: ที่ผ่านมา
FROM_NOW: จากตอนนี้
SECOND: วินาที
MINUTE: นาที
HOUR: ชั่วโมง
DAY: วัน
WEEK: สัปดาห์
MONTH: เดือน
YEAR: ปี
DECADE: ทศวรรษที่ผ่านมา
SEC: วิ
MIN: นาที
HR: ชม.
WK: wk
MO: mo
YR: yr
DEC: 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: wks
MO_PLURAL: mos
YR_PLURAL: ปี
DEC_PLURAL: decs
FORM:
VALIDATION_FAIL: '<b>ตรวจสอบล้มเหลว: </b>'
INVALID_INPUT: ป้อนข้อมูลไม่ถูกต้องใน
MISSING_REQUIRED_FIELD: 'ขาดข้อมูลที่จำเป็น:'
MONTHS_OF_THE_YEAR:
- มกราคม
- กุมภาพันธ์
- มีนาคม
- เมษายน
- พฤษภาคม
- มิถุนายน
- กรกฏาคม
- สิงหาคม
- กันยายน
- ตุลาคม
- พฤศจิกายน
- ธันวาคม
DAYS_OF_THE_WEEK:
- จันทร์
- อังคาร
- พุธ
- พฤหัสบดี
- ศุกร์
- เสาร์
- อาทิตย์
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```"
NICETIME:
NO_DATE_PROVIDED: ไม่มีวันที่ให้
BAD_DATE: รูปแบบวันที่ผิด
AGO: ที่ผ่านมา
FROM_NOW: จากตอนนี้
SECOND: วินาที
MINUTE: นาที
HOUR: ชั่วโมง
DAY: วัน
WEEK: สัปดาห์
MONTH: เดือน
YEAR: ปี
DECADE: ทศวรรษที่ผ่านมา
SEC: วิ
MIN: นาที
HR: ชม.
SECOND_PLURAL: วินาที
MINUTE_PLURAL: นาที
HOUR_PLURAL: ชั่วโมง
DAY_PLURAL: วัน
WEEK_PLURAL: สัปดาห์
MONTH_PLURAL: เดือน
YEAR_PLURAL: ปี
DECADE_PLURAL: ทศวรรษที่ผ่านมา
SEC_PLURAL: วินาที
MIN_PLURAL: นาที
HR_PLURAL: ชั่วโมง
YR_PLURAL: ปี
FORM:
VALIDATION_FAIL: '<b>ตรวจสอบล้มเหลว: </b>'
INVALID_INPUT: ป้อนข้อมูลไม่ถูกต้องใน
MISSING_REQUIRED_FIELD: 'ขาดข้อมูลที่จำเป็น:'
MONTHS_OF_THE_YEAR:
- 'มกราคม'
- 'กุมภาพันธ์'
- 'มีนาคม'
- 'เมษายน'
- 'พฤษภาคม'
- 'มิถุนายน'
- 'กรกฏาคม'
- 'สิงหาคม'
- 'กันยายน'
- 'ตุลาคม'
- 'พฤศจิกายน'
- 'ธันวาคม'
DAYS_OF_THE_WEEK:
- 'จันทร์'
- 'อังคาร'
- 'พุธ'
- 'พฤหัสบดี'
- 'ศุกร์'
- 'เสาร์'
- 'อาทิตย์'

View File

@@ -1,59 +1,63 @@
---
NICETIME:
NO_DATE_PROVIDED: Tarih yok
BAD_DATE: Yanlış tarih
AGO: önce
FROM_NOW: (şimdiden)
SECOND: saniye
MINUTE: dakika
HOUR: saat
DAY: gün
WEEK: hafta
MONTH: ay
YEAR: yıl
DECADE: onyıl
SEC: sn
MIN: dk
HR: sa
WK: hft
MO: ay
YR: yl
DEC: onyl
SECOND_PLURAL: saniye
MINUTE_PLURAL: dakika
HOUR_PLURAL: saat
DAY_PLURAL: gün
WEEK_PLURAL: hafta
MONTH_PLURAL: ay
YEAR_PLURAL: yıl
DECADE_PLURAL: onyıl
SEC_PLURAL: sn
MIN_PLURAL: dk
HR_PLURAL: sa
WK_PLURAL: hft
MO_PLURAL: ay
YR_PLURAL: yl
DEC_PLURAL: onyl
FORM:
VALIDATION_FAIL: '<b>Doğrulama başarısız:</b>'
MONTHS_OF_THE_YEAR:
- Ocak
- Şubat
- Mart
- Nisan
- Mayıs
- Haziran
- Temmuz
- Ağustos
- Eylül
- Ekim
- Kasım
- Aralık
DAYS_OF_THE_WEEK:
- Pazartesi
- Salı
- Çarşamba
- Perşembe
- Cuma
- Cumartesi
- Pazar
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```"
NICETIME:
NO_DATE_PROVIDED: Sağlanan tarih yok
BAD_DATE: Yanlış tarih
AGO: önce
FROM_NOW: şu andan itibaren
SECOND: saniye
MINUTE: dakika
HOUR: saat
DAY: gün
WEEK: hafta
MONTH: ay
YEAR: yıl
DECADE: onyıl
SEC: sn
MIN: dk
HR: sa
WK: hft
MO: ay
YR: yl
DEC: onyl
SECOND_PLURAL: saniye
MINUTE_PLURAL: dakika
HOUR_PLURAL: saat
DAY_PLURAL: gün
WEEK_PLURAL: hafta
MONTH_PLURAL: ay
YEAR_PLURAL: yıl
DECADE_PLURAL: onyıl
SEC_PLURAL: sn
MIN_PLURAL: dk
HR_PLURAL: sa
WK_PLURAL: hft
MO_PLURAL: ay
YR_PLURAL: yıl
DEC_PLURAL: onyl
FORM:
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:
- 'Ocak'
- 'Şubat'
- 'Mart'
- 'Nisan'
- 'Mayıs'
- 'Haziran'
- 'Temmuz'
- 'Ağustos'
- 'Eylül'
- 'Ekim'
- 'Kasım'
- 'Aralık'
DAYS_OF_THE_WEEK:
- 'Pazartesi'
- 'Salı'
- 'Çarşamba'
- 'Perşembe'
- 'Cuma'
- 'Cumartesi'
- 'Pazar'

View File

@@ -1,75 +1,63 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Помилка: Недопустимий вміст
Path: `%2$s`
**%3$s**
```
%4$s
```
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:
- Понеділок
- Вівторок
- Середа
- Четвер
- "П'ятниця"
- Субота
- Неділя
GRAV:
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Помилка: Недопустимий вміст\n\nPath: `%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,75 +1,63 @@
---
FRONTMATTER_ERROR_PAGE: |
---
title: %1$s
---
# Error: Invalid Frontmatter
Path: `%2$s`
**%3$s**
```
%4$s
```
NICETIME:
NO_DATE_PROVIDED: Không có ngày được cung cấp
BAD_DATE: Ngày không hợp lệ
AGO: cách đây
FROM_NOW: từ bây giờ
SECOND: giây
MINUTE: phút
HOUR: giờ
DAY: ngày
WEEK: tuần
MONTH: tháng
YEAR: năm
DECADE: thập kỷ
SEC: giây
MIN: phút
HR: giờ
WK: tuần
MO: tháng
YR: năm
DEC: thập kỷ
SECOND_PLURAL: giây
MINUTE_PLURAL: phút
HOUR_PLURAL: giờ
DAY_PLURAL: ngày
WEEK_PLURAL: tuần
MONTH_PLURAL: tháng
YEAR_PLURAL: năm
DECADE_PLURAL: thập kỷ
SEC_PLURAL: giây
MIN_PLURAL: phút
HR_PLURAL: giờ
WK_PLURAL: tuần
MO_PLURAL: tháng
YR_PLURAL: năm
DEC_PLURAL: thập kỷ
FORM:
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
MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc:'
MONTHS_OF_THE_YEAR:
- Tháng 1
- Tháng 2
- Tháng 3
- Tháng 4
- Tháng 5
- Tháng 6
- Tháng 7
- Tháng 8
- Tháng 9
- Tháng 10
- Tháng Mười 11
- Tháng 12
DAYS_OF_THE_WEEK:
- Thứ 2
- Thứ 3
- Thứ 4
- Thứ 5
- Thứ 6
- Thứ 7
- Chủ Nhật
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```"
NICETIME:
NO_DATE_PROVIDED: Không có ngày được cung cấp
BAD_DATE: Ngày không hợp lệ
AGO: cách đây
FROM_NOW: từ bây giờ
SECOND: giây
MINUTE: phút
HOUR: giờ
DAY: ngày
WEEK: tuần
MONTH: tháng
YEAR: năm
DECADE: thập kỷ
SEC: giây
MIN: phút
HR: giờ
WK: tuần
MO: tháng
YR: năm
DEC: thập kỷ
SECOND_PLURAL: giây
MINUTE_PLURAL: phút
HOUR_PLURAL: giờ
DAY_PLURAL: ngày
WEEK_PLURAL: tuần
MONTH_PLURAL: tháng
YEAR_PLURAL: năm
DECADE_PLURAL: thập kỷ
SEC_PLURAL: giây
MIN_PLURAL: phút
HR_PLURAL: giờ
WK_PLURAL: tuần
MO_PLURAL: tháng
YR_PLURAL: năm
DEC_PLURAL: thập kỷ
FORM:
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
MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc:'
MONTHS_OF_THE_YEAR:
- 'Tháng 1'
- 'Tháng 2'
- 'Tháng 3'
- 'Tháng 4'
- 'Tháng 5'
- 'Tháng 6'
- 'Tháng 7'
- 'Tháng 8'
- 'Tháng 9'
- 'Tháng 10'
- 'Tháng 11'
- 'Tháng 12'
DAYS_OF_THE_WEEK:
- 'Thứ 2'
- 'Thứ 3'
- 'Thứ 4'
- 'Thứ 5'
- 'Thứ 6'
- 'Thứ 7'
- 'Chủ Nhật'

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

@@ -1,13 +1,14 @@
<?php
/**
* @package Grav.Core
* @package Grav\Core
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
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;
@@ -16,11 +17,21 @@ if (is_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $_SERVER['SCRIPT_N
return false;
}
$_SERVER = array_merge($_SERVER, $_ENV);
$_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'index.php';
$_SERVER['SCRIPT_NAME'] = DIRECTORY_SEPARATOR . 'index.php';
$_SERVER['PHP_SELF'] = DIRECTORY_SEPARATOR . 'index.php';
$grav_index = '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);
require $grav_index;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,198 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (C) 2015 - 2019 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\Grav;
use Grav\Common\Uri;
use Grav\Common\Utils;
use Grav\Framework\Object\PropertyObject;
abstract class BaseAsset extends PropertyObject
{
use AssetUtilsTrait;
protected const CSS_ASSET = true;
protected const JS_ASSET = false;
/** @const Regex to match CSS import content */
protected const CSS_IMPORT_REGEX = '{@import(.*?);}';
protected $asset;
protected $asset_type;
protected $order;
protected $group;
protected $position;
protected $priority;
protected $attributes = [];
protected $timestamp;
protected $modified;
protected $remote;
protected $query = '';
// Private Bits
private $base_url;
private $fetch_command;
private $css_rewrite = false;
private $css_minify = false;
abstract function render();
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);
}
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_ROOT . $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;
}
public function getAsset()
{
return $this->asset;
}
public function getRemote()
{
return $this->remote;
}
public function setPosition($position)
{
$this->position = $position;
return $this;
}
/**
*
* 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_ROOT . $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 the final link url to the asset
*/
protected function buildLocalLink($asset)
{
if ($asset) {
return $this->base_url . ltrim(Utils::replaceFirstOccurrence(GRAV_ROOT, '', $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
*/
protected function cssRewrite($file, $dir, $local)
{
return;
}
}

View File

@@ -0,0 +1,40 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets;
use Grav\Common\Utils;
class Css extends BaseAsset
{
public function __construct(array $elements = [], $key = null)
{
$base_options = [
'asset_type' => 'css',
'attributes' => [
'type' => 'text/css',
'rel' => 'stylesheet'
]
];
$merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements);
parent::__construct($merged_attributes, $key);
}
public function render()
{
if (isset($this->attributes['loading']) && $this->attributes['loading'] === 'inline') {
$buffer = $this->gatherLinks( [$this], self::CSS_ASSET);
return "<style>\n" . trim($buffer) . "\n</style>\n";
}
return '<link href="' . trim($this->asset) . $this->renderQueryString() . '"' . $this->renderAttributes() . ">\n";
}
}

View File

@@ -0,0 +1,32 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets;
use Grav\Common\Utils;
class InlineCss extends BaseAsset
{
public function __construct(array $elements = [], $key = null)
{
$base_options = [
'asset_type' => 'css',
'position' => 'after'
];
$merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements);
parent::__construct($merged_attributes, $key);
}
public function render()
{
return '<style' . $this->renderAttributes(). ">\n" . trim($this->asset) . "\n</style>\n";
}
}

View File

@@ -0,0 +1,32 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets;
use Grav\Common\Utils;
class InlineJs extends BaseAsset
{
public function __construct(array $elements = [], $key = null)
{
$base_options = [
'asset_type' => 'js',
'position' => 'after'
];
$merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements);
parent::__construct($merged_attributes, $key);
}
public function render()
{
return '<script' . $this->renderAttributes(). ">\n" . trim($this->asset) . "\n</script>\n";
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets;
use Grav\Common\Utils;
class Js extends BaseAsset
{
public function __construct(array $elements = [], $key = null)
{
$base_options = [
'asset_type' => 'js',
];
$merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements);
parent::__construct($merged_attributes, $key);
}
public function render()
{
if (isset($this->attributes['loading']) && $this->attributes['loading'] === 'inline') {
$buffer = $this->gatherLinks( [$this], self::JS_ASSET);
return '<script' . $this->renderAttributes() . ">\n" . trim($buffer) . "\n</script>\n";
}
return '<script src="' . trim($this->asset) . $this->renderQueryString() . '"' . $this->renderAttributes() . "></script>\n";
}
}

View File

@@ -0,0 +1,273 @@
<?php
/**
* @package Grav\Common\Assets
*
* @copyright Copyright (C) 2015 - 2019 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 RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
class Pipeline extends PropertyObject
{
use AssetUtilsTrait;
protected const CSS_ASSET = true;
protected const JS_ASSET = false;
/** @const Regex to match CSS urls */
protected const CSS_URL_REGEX = '{url\(([\'\"]?)(.*?)\1\)}';
/** @const Regex to match CSS sourcemap comments */
protected const CSS_SOURCEMAP_REGEX = '{\/\*# (.*?) \*\/}';
/** @const Regex to match CSS import content */
protected const CSS_IMPORT_REGEX = '{@import(.*?);}';
protected const FIRST_FORWARDSLASH_REGEX = '{^\/{1}\w}';
protected $css_minify;
protected $css_minify_windows;
protected $css_rewrite;
protected $js_minify;
protected $js_minify_windows;
protected $base_url;
protected $assets_dir;
protected $assets_url;
protected $timestamp;
protected $attributes;
protected $query;
protected $asset;
/**
* Closure used by the pipeline to fetch assets.
*
* Useful when file_get_contents() function is not available in your PHP
* installation or when you want to apply any kind of preprocessing to
* your assets before they get pipelined.
*
* The closure will receive as the only parameter a string with the path/URL of the asset and
* it should return the content of the asset file as a string.
*
* @var \Closure
*/
protected $fetch_command;
public function __construct(array $elements = [], ?string $key = null)
{
parent::__construct($elements, $key);
/** @var UniformResourceLocator $locator */
$locator = Grav::instance()['locator'];
/** @var Config $config */
$config = Grav::instance()['config'];
/** @var Uri $uri */
$uri = Grav::instance()['uri'];
$this->base_url = rtrim($uri->rootUrl($config->get('system.absolute_urls')), '/') . '/';
$this->assets_dir = $locator->findResource('asset://') . DS;
$this->assets_url = $locator->findResource('asset://', false);
}
/**
* Minify and concatenate CSS
*
* @param array $assets
* @param string $group
* @param array $attributes
*
* @return bool|string URL or generated content if available, else false
*/
public function renderCss($assets, $group, $attributes = [])
{
// temporary list of assets to pipeline
$inline_group = false;
if (array_key_exists('loading', $attributes) && $attributes['loading'] === 'inline') {
$inline_group = true;
unset($attributes['loading']);
}
// Store Attributes
$this->attributes = array_merge(['type' => 'text/css', 'rel' => 'stylesheet'], $attributes);
// Compute uid based on assets and timestamp
$json_assets = json_encode($assets);
$uid = md5($json_assets . $this->css_minify . $this->css_rewrite . $group);
$file = $uid . '.css';
$relative_path = "{$this->base_url}{$this->assets_url}/{$file}";
$buffer = null;
if (file_exists($this->assets_dir . $file)) {
$buffer = file_get_contents($this->assets_dir . $file) . "\n";
} else {
//if nothing found get out of here!
if (empty($assets)) {
return false;
}
// Concatenate files
$buffer = $this->gatherLinks($assets, self::CSS_ASSET);
// Minify if required
if ($this->shouldMinify('css')) {
$minifier = new \MatthiasMullie\Minify\CSS();
$minifier->add($buffer);
$buffer = $minifier->minify();
}
// Write file
if (trim($buffer) !== '') {
file_put_contents($this->assets_dir . $file, $buffer);
}
}
if ($inline_group) {
$output = "<style>\n" . $buffer . "\n</style>\n";
} else {
$this->asset = $relative_path;
$output = '<link href="' . $relative_path . $this->renderQueryString() . '"' . $this->renderAttributes() . ">\n";
}
return $output;
}
/**
* Minify and concatenate JS files.
*
* @param array $assets
* @param string $group
* @param array $attributes
*
* @return bool|string URL or generated content if available, else false
*/
public function renderJs($assets, $group, $attributes = [])
{
// temporary list of assets to pipeline
$inline_group = false;
if (array_key_exists('loading', $attributes) && $attributes['loading'] === 'inline') {
$inline_group = true;
unset($attributes['loading']);
}
// Store Attributes
$this->attributes = $attributes;
// Compute uid based on assets and timestamp
$json_assets = json_encode($assets);
$uid = md5($json_assets . $this->js_minify . $group);
$file = $uid . '.js';
$relative_path = "{$this->base_url}{$this->assets_url}/{$file}";
$buffer = null;
if (file_exists($this->assets_dir . $file)) {
$buffer = file_get_contents($this->assets_dir . $file) . "\n";
} else {
//if nothing found get out of here!
if (empty($assets)) {
return false;
}
// Concatenate files
$buffer = $this->gatherLinks($assets, self::JS_ASSET);
// Minify if required
if ($this->shouldMinify('js')) {
$minifier = new \MatthiasMullie\Minify\JS();
$minifier->add($buffer);
$buffer = $minifier->minify();
}
// Write file
if (trim($buffer) !== '') {
file_put_contents($this->assets_dir . $file, $buffer);
}
}
if ($inline_group) {
$output = '<script' . $this->renderAttributes(). ">\n" . $buffer . "\n</script>\n";
} else {
$this->asset = $relative_path;
$output = '<script src="' . $relative_path . $this->renderQueryString() . '"' . $this->renderAttributes() . "></script>\n";
}
return $output;
}
/**
* Finds relative CSS urls() and rewrites the URL with an absolute one
*
* @param string $file the css source file
* @param string $dir , $local relative path to the css file
* @param bool $local is this a local or remote asset
*
* @return mixed
*/
protected function cssRewrite($file, $dir, $local)
{
// Strip any sourcemap comments
$file = preg_replace(self::CSS_SOURCEMAP_REGEX, '', $file);
// Find any css url() elements, grab the URLs and calculate an absolute path
// Then replace the old url with the new one
$file = (string)preg_replace_callback(self::CSS_URL_REGEX, function ($matches) use ($dir, $local) {
$old_url = $matches[2];
// Ensure link is not rooted to web server, a data URL, or to a remote host
if (preg_match(self::FIRST_FORWARDSLASH_REGEX, $old_url) || Utils::startsWith($old_url, 'data:') || $this->isRemoteLink($old_url)) {
return $matches[0];
}
// clean leading /
$old_url = Utils::normalizePath($dir . '/' . $old_url);
if (preg_match(self::FIRST_FORWARDSLASH_REGEX, $old_url)) {
$old_url = ltrim($old_url, '/');
}
$new_url = ($local ? $this->base_url: '') . $old_url;
$fixed = str_replace($matches[2], $new_url, $matches[0]);
return $fixed;
}, $file);
return $file;
}
private function shouldMinify($type = 'css')
{
$check = $type . '_minify';
$win_check = $type . '_minify_windows';
$minify = (bool) $this->$check;
// If this is a Windows server, and minify_windows is false (default value) skip the
// minification process because it will cause Apache to die/crash due to insufficient
// ThreadStackSize in httpd.conf - See: https://bugs.php.net/bug.php?id=47689
if (stripos(php_uname('s'), 'WIN') === 0 && !$this->{$win_check}) {
$minify = false;
}
return $minify;
}
}

View File

@@ -0,0 +1,182 @@
<?php
/**
* @package Grav\Common\Assets\Traits
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets\Traits;
use Grav\Common\Grav;
use Grav\Common\Utils;
trait AssetUtilsTrait
{
/**
* Determine whether a link is local or remote.
* Understands both "http://" and "https://" as well as protocol agnostic links "//"
*
* @param string $link
* @return bool
*/
public static function isRemoteLink($link)
{
$base = Grav::instance()['uri']->rootUrl(true);
// Sanity check for local URLs with absolute URL's enabled
if (Utils::startsWith($link, $base)) {
return false;
}
return (0 === strpos($link, 'http://') || 0 === strpos($link, 'https://') || 0 === strpos($link, '//'));
}
/**
* Download and concatenate the content of several links.
*
* @param array $assets
* @param bool $css
*
* @return string
*/
protected function gatherLinks(array $assets, $css = true)
{
$buffer = '';
foreach ($assets as $id => $asset) {
$local = true;
$link = $asset->getAsset();
$relative_path = $link;
if (static::isRemoteLink($link)) {
$local = false;
if (0 === strpos($link, '//')) {
$link = 'http:' . $link;
}
$relative_dir = \dirname($relative_path);
} else {
// Fix to remove relative dir if grav is in one
if (($this->base_url !== '/') && Utils::startsWith($relative_path, $this->base_url)) {
$base_url = '#' . preg_quote($this->base_url, '#') . '#';
$relative_path = ltrim(preg_replace($base_url, '/', $link, 1), '/');
}
$relative_dir = \dirname($relative_path);
$link = ROOT_DIR . $relative_path;
}
$file = ($this->fetch_command instanceof \Closure) ? @$this->fetch_command->__invoke($link) : @file_get_contents($link);
// No file found, skip it...
if ($file === false) {
continue;
}
// Double check last character being
if (!$css) {
$file = rtrim($file, ' ;') . ';';
}
// If this is CSS + the file is local + rewrite enabled
if ($css && $this->css_rewrite) {
$file = $this->cssRewrite($file, $relative_dir, $local);
}
$file = rtrim($file) . PHP_EOL;
$buffer .= $file;
}
// Pull out @imports and move to top
if ($css) {
$buffer = $this->moveImports($buffer);
}
return $buffer;
}
/**
* Moves @import statements to the top of the file per the CSS specification
*
* @param string $file the file containing the combined CSS files
*
* @return string the modified file with any @imports at the top of the file
*/
protected function moveImports($file)
{
$imports = [];
$file = (string)preg_replace_callback(self::CSS_IMPORT_REGEX, function ($matches) use (&$imports) {
$imports[] = $matches[0];
return '';
}, $file);
return implode("\n", $imports) . "\n\n" . $file;
}
/**
*
* Build an HTML attribute string from an array.
*
* @return string
*/
protected function renderAttributes()
{
$html = '';
$no_key = ['loading'];
foreach ($this->attributes as $key => $value) {
if (is_numeric($key)) {
$key = $value;
}
if (\is_array($value)) {
$value = implode(' ', $value);
}
if (\in_array($key, $no_key, true)) {
$element = htmlentities($value, ENT_QUOTES, 'UTF-8', false);
} else {
$element = $key . '="' . htmlentities($value, ENT_QUOTES, 'UTF-8', false) . '"';
}
$html .= ' ' . $element;
}
return $html;
}
/**
* Render Querystring
*
* @param string $asset
* @return string
*/
protected function renderQueryString($asset = null)
{
$querystring = '';
$asset = $asset ?? $this->asset;
if (!empty($this->query)) {
if (Utils::contains($asset, '?')) {
$querystring .= '&' . $this->query;
} else {
$querystring .= '?' . $this->query;
}
}
if ($this->timestamp) {
if (Utils::contains($asset, '?') || $querystring) {
$querystring .= '&' . $this->timestamp;
} else {
$querystring .= '?' . $this->timestamp;
}
}
return $querystring;
}
}

View File

@@ -0,0 +1,129 @@
<?php
/**
* @package Grav\Common\Assets\Traits
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets\Traits;
use Grav\Common\Assets;
trait LegacyAssetsTrait
{
/**
* @param array $args
* @param string $type
* @return array
*/
protected function unifyLegacyArguments($args, $type = Assets::CSS_TYPE)
{
// First argument is always the asset
array_shift($args);
if (count($args) === 0) {
return [];
}
// New options array format
if (count($args) === 1 && is_array($args[0])) {
return $args[0];
}
// Handle obscure case where options array is mixed with a priority
if (count($args) === 2 && is_array($args[0]) && is_int($args[1])) {
$arguments = $args[0];
$arguments['priority'] = $args[1];
return $arguments;
}
switch ($type) {
case(Assets::JS_TYPE):
$defaults = ['priority' => null, 'pipeline' => true, 'loading' => null, 'group' => null];
$arguments = $this->createArgumentsFromLegacy($args, $defaults);
break;
case(Assets::INLINE_JS_TYPE):
$defaults = ['priority' => null, 'group' => null, 'attributes' => null];
$arguments = $this->createArgumentsFromLegacy($args, $defaults);
// special case to handle old attributes being passed in
if (isset($arguments['attributes'])) {
$old_attributes = $arguments['attributes'];
if (is_array($old_attributes)) {
$arguments = array_merge($arguments, $old_attributes);
} else {
$arguments['type'] = $old_attributes;
}
}
unset($arguments['attributes']);
break;
case(Assets::INLINE_CSS_TYPE):
$defaults = ['priority' => null, 'group' => null];
$arguments = $this->createArgumentsFromLegacy($args, $defaults);
break;
default:
case(Assets::CSS_TYPE):
$defaults = ['priority' => null, 'pipeline' => true, 'group' => null, 'loading' => null];
$arguments = $this->createArgumentsFromLegacy($args, $defaults);
}
return $arguments;
}
protected function createArgumentsFromLegacy(array $args, array $defaults)
{
// Remove arguments with old default values.
$arguments = [];
foreach ($args as $arg) {
$default = current($defaults);
if ($arg !== $default) {
$arguments[key($defaults)] = $arg;
}
next($defaults);
}
return $arguments;
}
/**
* Convenience wrapper for async loading of JavaScript
*
* @param string|array $asset
* @param int $priority
* @param bool $pipeline
* @param string $group name of the group
*
* @return \Grav\Common\Assets
* @deprecated Please use dynamic method with ['loading' => 'async'].
*/
public function addAsyncJs($asset, $priority = 10, $pipeline = true, $group = 'head')
{
user_error(__CLASS__ . '::' . __FUNCTION__ . '() is deprecated since Grav 1.6, use dynamic method with [\'loading\' => \'async\']', E_USER_DEPRECATED);
return $this->addJs($asset, $priority, $pipeline, 'async', $group);
}
/**
* Convenience wrapper for deferred loading of JavaScript
*
* @param string|array $asset
* @param int $priority
* @param bool $pipeline
* @param string $group name of the group
*
* @return \Grav\Common\Assets
* @deprecated Please use dynamic method with ['loading' => 'defer'].
*/
public function addDeferJs($asset, $priority = 10, $pipeline = true, $group = 'head')
{
user_error(__CLASS__ . '::' . __FUNCTION__ . '() is deprecated since Grav 1.6, use dynamic method with [\'loading\' => \'defer\']', E_USER_DEPRECATED);
return $this->addJs($asset, $priority, $pipeline, 'defer', $group);
}
}

View File

@@ -0,0 +1,343 @@
<?php
/**
* @package Grav\Common\Assets\Traits
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Assets\Traits;
use Grav\Common\Grav;
trait TestingAssetsTrait
{
/**
* Determines if an asset exists as a collection, CSS or JS reference
*
* @param string $asset
*
* @return bool
*/
public function exists($asset)
{
return isset($this->collections[$asset]) || isset($this->assets_css[$asset]) || isset($this->assets_js[$asset]);
}
/**
* Return the array of all the registered collections
*
* @return array
*/
public function getCollections()
{
return $this->collections;
}
/**
* Set the array of collections explicitly
*
* @param array $collections
*
* @return $this
*/
public function setCollection($collections)
{
$this->collections = $collections;
return $this;
}
/**
* Return the array of all the registered CSS assets
* If a $key is provided, it will try to return only that asset
* else it will return null
*
* @param null|string $key the asset key
* @return array
*/
public function getCss($key = null)
{
if (null !== $key) {
$asset_key = md5($key);
return $this->assets_css[$asset_key] ?? null;
}
return $this->assets_css;
}
/**
* Return the array of all the registered JS assets
* If a $key is provided, it will try to return only that asset
* else it will return null
*
* @param null|string $key the asset key
* @return array
*/
public function getJs($key = null)
{
if (null !== $key) {
$asset_key = md5($key);
return $this->assets_js[$asset_key] ?? null;
}
return $this->assets_js;
}
/**
* Set the whole array of CSS assets
*
* @param array $css
*
* @return $this
*/
public function setCss($css)
{
$this->assets_css = $css;
return $this;
}
/**
* Set the whole array of JS assets
*
* @param array $js
*
* @return $this
*/
public function setJs($js)
{
$this->assets_js = $js;
return $this;
}
/**
* Removes an item from the CSS array if set
*
* @param string $key The asset key
*
* @return $this
*/
public function removeCss($key)
{
$asset_key = md5($key);
if (isset($this->assets_css[$asset_key])) {
unset($this->assets_css[$asset_key]);
}
return $this;
}
/**
* Removes an item from the JS array if set
*
* @param string $key The asset key
*
* @return $this
*/
public function removeJs($key)
{
$asset_key = md5($key);
if (isset($this->assets_js[$asset_key])) {
unset($this->assets_js[$asset_key]);
}
return $this;
}
/**
* Sets the state of CSS Pipeline
*
* @param bool $value
*
* @return $this
*/
public function setCssPipeline($value)
{
$this->css_pipeline = (bool)$value;
return $this;
}
/**
* Sets the state of JS Pipeline
*
* @param bool $value
*
* @return $this
*/
public function setJsPipeline($value)
{
$this->js_pipeline = (bool)$value;
return $this;
}
/**
* Reset all assets.
*
* @return $this
*/
public function reset()
{
$this->resetCss();
$this->resetJs();
$this->setCssPipeline(false);
$this->setJsPipeline(false);
return $this;
}
/**
* Reset JavaScript assets.
*
* @return $this
*/
public function resetJs()
{
$this->assets_js = [];
return $this;
}
/**
* Reset CSS assets.
*
* @return $this
*/
public function resetCss()
{
$this->assets_css = [];
return $this;
}
/**
* Explicitly set's a timestamp for assets
*
* @param string|int $value
*/
public function setTimestamp($value)
{
$this->timestamp = $value;
}
/**
* Get the timestamp for assets
*
* @param bool $include_join
* @return string
*/
public function getTimestamp($include_join = true)
{
if ($this->timestamp) {
return $include_join ? '?' . $this->timestamp : $this->timestamp;
}
return null;
}
/**
* Add all assets matching $pattern within $directory.
*
* @param string $directory Relative to the Grav root path, or a stream identifier
* @param string $pattern (regex)
*
* @return $this
*/
public function addDir($directory, $pattern = self::DEFAULT_REGEX)
{
$root_dir = rtrim(ROOT_DIR, '/');
// Check if $directory is a stream.
if (strpos($directory, '://')) {
$directory = Grav::instance()['locator']->findResource($directory, null);
}
// Get files
$files = $this->rglob($root_dir . DIRECTORY_SEPARATOR . $directory, $pattern, $root_dir . '/');
// No luck? Nothing to do
if (!$files) {
return $this;
}
// Add CSS files
if ($pattern === self::CSS_REGEX) {
foreach ($files as $file) {
$this->addCss($file);
}
return $this;
}
// Add JavaScript files
if ($pattern === self::JS_REGEX) {
foreach ($files as $file) {
$this->addJs($file);
}
return $this;
}
// Unknown pattern.
foreach ($files as $asset) {
$this->add($asset);
}
return $this;
}
/**
* Add all JavaScript assets within $directory
*
* @param string $directory Relative to the Grav root path, or a stream identifier
*
* @return $this
*/
public function addDirJs($directory)
{
return $this->addDir($directory, self::JS_REGEX);
}
/**
* Add all CSS assets within $directory
*
* @param string $directory Relative to the Grav root path, or a stream identifier
*
* @return $this
*/
public function addDirCss($directory)
{
return $this->addDir($directory, self::CSS_REGEX);
}
/**
* Recursively get files matching $pattern within $directory.
*
* @param string $directory
* @param string $pattern (regex)
* @param string $ltrim Will be trimmed from the left of the file path
*
* @return array
*/
protected function rglob($directory, $pattern, $ltrim = null)
{
$iterator = new \RegexIterator(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($directory,
\FilesystemIterator::SKIP_DOTS)), $pattern);
$offset = \strlen($ltrim);
$files = [];
foreach ($iterator as $file) {
$files[] = substr($file->getPathname(), $offset);
}
return $files;
}
}

View File

@@ -0,0 +1,261 @@
<?php
/**
* @package Grav\Common\Backup
*
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Backup;
use Grav\Common\Filesystem\Archiver;
use Grav\Common\Filesystem\Folder;
use Grav\Common\Inflector;
use Grav\Common\Scheduler\Job;
use Grav\Common\Scheduler\Scheduler;
use Grav\Common\Utils;
use Grav\Common\Grav;
use RocketTheme\Toolbox\Event\Event;
use RocketTheme\Toolbox\Event\EventDispatcher;
use RocketTheme\Toolbox\File\JsonFile;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
class Backups
{
protected const BACKUP_FILENAME_REGEXZ = "#(.*)--(\d*).zip#";
protected const BACKUP_DATE_FORMAT = 'YmdHis';
protected static $backup_dir;
protected static $backups = null;
public function init()
{
/** @var EventDispatcher $dispatcher */
$dispatcher = Grav::instance()['events'];
$dispatcher->addListener('onSchedulerInitialized', [$this, 'onSchedulerInitialized']);
Grav::instance()->fireEvent('onBackupsInitialized', new Event(['backups' => $this]));
}
public function setup()
{
if (null === static::$backup_dir) {
static::$backup_dir = Grav::instance()['locator']->findResource('backup://', true, true);
Folder::create(static::$backup_dir);
}
}
public function onSchedulerInitialized(Event $event)
{
/** @var Scheduler $scheduler */
$scheduler = $event['scheduler'];
/** @var Inflector $inflector */
$inflector = Grav::instance()['inflector'];
foreach (static::getBackupProfiles() as $id => $profile) {
$at = $profile['schedule_at'];
$name = $inflector::hyphenize($profile['name']);
$logs = 'logs/backup-' . $name . '.out';
/** @var Job $job */
$job = $scheduler->addFunction('Grav\Common\Backup\Backups::backup', [$id], $name );
$job->at($at);
$job->output($logs);
$job->backlink('/tools/backups');
}
}
public function getBackupDownloadUrl($backup, $base_url)
{
$param_sep = $param_sep = Grav::instance()['config']->get('system.param_sep', ':');
$download = urlencode(base64_encode($backup));
$url = rtrim(Grav::instance()['uri']->rootUrl(true), '/') . '/' . trim($base_url,
'/') . '/task' . $param_sep . 'backup/download' . $param_sep . $download . '/admin-nonce' . $param_sep . Utils::getNonce('admin-form');
return $url;
}
public static function getBackupProfiles()
{
return Grav::instance()['config']->get('backups.profiles');
}
public static function getPurgeConfig()
{
return Grav::instance()['config']->get('backups.purge');
}
public function getBackupNames()
{
return array_column(static::getBackupProfiles(), 'name');
}
public static function getTotalBackupsSize()
{
$backups = static::getAvailableBackups();
$size = array_sum(array_column($backups, 'size'));
return $size ?? 0;
}
public static function getAvailableBackups($force = false)
{
if ($force || null === static::$backups) {
static::$backups = [];
$backups_itr = new \GlobIterator(static::$backup_dir . '/*.zip', \FilesystemIterator::KEY_AS_FILENAME);
$inflector = Grav::instance()['inflector'];
$long_date_format = DATE_RFC2822;
/**
* @var string $name
* @var \SplFileInfo $file
*/
foreach ($backups_itr as $name => $file) {
if (preg_match(static::BACKUP_FILENAME_REGEXZ, $name, $matches)) {
$date = \DateTime::createFromFormat(static::BACKUP_DATE_FORMAT, $matches[2]);
$timestamp = $date->getTimestamp();
$backup = new \stdClass();
$backup->title = $inflector->titleize($matches[1]);
$backup->time = $date;
$backup->date = $date->format($long_date_format);
$backup->filename = $name;
$backup->path = $file->getPathname();
$backup->size = $file->getSize();
static::$backups[$timestamp] = $backup;
}
}
// Reverse Key Sort to get in reverse date order
krsort(static::$backups);
}
return static::$backups;
}
/**
* Backup
*
* @param int $id
* @param callable|null $status
*
* @return null|string
*/
public static function backup($id = 0, callable $status = null)
{
$profiles = static::getBackupProfiles();
/** @var UniformResourceLocator $locator */
$locator = Grav::instance()['locator'];
if (isset($profiles[$id])) {
$backup = (object) $profiles[$id];
} else {
throw new \RuntimeException('No backups defined...');
}
$name = Grav::instance()['inflector']->underscorize($backup->name);
$date = date(static::BACKUP_DATE_FORMAT, time());
$filename = trim($name, '_') . '--' . $date . '.zip';
$destination = static::$backup_dir . DS . $filename;
$max_execution_time = ini_set('max_execution_time', 600);
$backup_root = $backup->root;
if ($locator->isStream($backup_root)) {
$backup_root = $locator->findResource($backup_root);
} else {
$backup_root = rtrim(GRAV_ROOT . $backup_root, '/');
}
if (!file_exists($backup_root)) {
throw new \RuntimeException("Backup location: {$backup_root} does not exist...");
}
$options = [
'exclude_files' => static::convertExclude($backup->exclude_files ?? ''),
'exclude_paths' => static::convertExclude($backup->exclude_paths ?? ''),
];
/** @var Archiver $archiver */
$archiver = Archiver::create('zip');
$archiver->setArchive($destination)->setOptions($options)->compress($backup_root, $status)->addEmptyFolders($options['exclude_paths'], $status);
$status && $status([
'type' => 'message',
'message' => 'Done...',
]);
$status && $status([
'type' => 'progress',
'complete' => true
]);
if ($max_execution_time !== false) {
ini_set('max_execution_time', $max_execution_time);
}
// Log the backup
Grav::instance()['log']->notice('Backup Created: ' . $destination);
// Fire Finished event
Grav::instance()->fireEvent('onBackupFinished', new Event(['backup' => $destination]));
// Purge anything required
static::purge();
// Log
$log = JsonFile::instance(Grav::instance()['locator']->findResource("log://backup.log", true, true));
$log->content([
'time' => time(),
'location' => $destination
]);
$log->save();
return $destination;
}
public static function purge()
{
$purge_config = static::getPurgeConfig();
$trigger = $purge_config['trigger'];
$backups = static::getAvailableBackups(true);
switch ($trigger)
{
case 'number':
$backups_count = count($backups);
if ($backups_count > $purge_config['max_backups_count']) {
$last = end($backups);
unlink ($last->path);
static::purge();
}
break;
case 'time':
$last = end($backups);
$now = new \DateTime();
$interval = $now->diff($last->time);
if ($interval->days > $purge_config['max_backups_time']) {
unlink($last->path);
static::purge();
}
break;
default:
$used_space = static::getTotalBackupsSize();
$max_space = $purge_config['max_backups_space'] * 1024 * 1024 * 1024;
if ($used_space > $max_space) {
$last = end($backups);
unlink($last->path);
static::purge();
}
break;
}
}
protected static function convertExclude($exclude)
{
$lines = preg_split("/[\s,]+/", $exclude);
return array_map('trim', $lines, array_fill(0, \count($lines), '/'));
}
}

View File

@@ -1,143 +0,0 @@
<?php
/**
* @package Grav.Common.Backup
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Backup;
use Grav\Common\Grav;
use Grav\Common\Inflector;
class ZipBackup
{
protected static $ignorePaths = [
'backup',
'cache',
'images',
'logs',
'tmp'
];
protected static $ignoreFolders = [
'.git',
'.svn',
'.hg',
'.idea',
'node_modules'
];
/**
* Backup
*
* @param null $destination
* @param callable|null $messager
*
* @return null|string
*/
public static function backup($destination = null, callable $messager = null)
{
if (!$destination) {
$destination = Grav::instance()['locator']->findResource('backup://', true);
if (!$destination) {
throw new \RuntimeException('The backup folder is missing.');
}
}
$name = substr(strip_tags(Grav::instance()['config']->get('site.title', basename(GRAV_ROOT))), 0, 20);
$inflector = new Inflector();
if (is_dir($destination)) {
$date = date('YmdHis', time());
$filename = trim($inflector->hyphenize($name), '-') . '-' . $date . '.zip';
$destination = rtrim($destination, DS) . DS . $filename;
}
$messager && $messager([
'type' => 'message',
'level' => 'info',
'message' => 'Creating new Backup "' . $destination . '"'
]);
$messager && $messager([
'type' => 'message',
'level' => 'info',
'message' => ''
]);
$zip = new \ZipArchive();
$zip->open($destination, \ZipArchive::CREATE);
$max_execution_time = ini_set('max_execution_time', 600);
static::folderToZip(GRAV_ROOT, $zip, strlen(rtrim(GRAV_ROOT, DS) . DS), $messager);
$messager && $messager([
'type' => 'progress',
'percentage' => false,
'complete' => true
]);
$messager && $messager([
'type' => 'message',
'level' => 'info',
'message' => ''
]);
$messager && $messager([
'type' => 'message',
'level' => 'info',
'message' => 'Saving and compressing archive...'
]);
$zip->close();
if ($max_execution_time !== false) {
ini_set('max_execution_time', $max_execution_time);
}
return $destination;
}
/**
* @param $folder
* @param $zipFile
* @param $exclusiveLength
* @param $messager
*/
private static function folderToZip($folder, \ZipArchive &$zipFile, $exclusiveLength, callable $messager = null)
{
$handle = opendir($folder);
while (false !== $f = readdir($handle)) {
if ($f != '.' && $f != '..') {
$filePath = "$folder/$f";
// Remove prefix from file path before add to zip.
$localPath = substr($filePath, $exclusiveLength);
if (in_array($f, static::$ignoreFolders)) {
continue;
} elseif (in_array($localPath, static::$ignorePaths)) {
$zipFile->addEmptyDir($f);
continue;
}
if (is_file($filePath)) {
$zipFile->addFile($filePath, $localPath);
$messager && $messager([
'type' => 'progress',
'percentage' => false,
'complete' => false
]);
} elseif (is_dir($filePath)) {
// Add sub-directory.
$zipFile->addEmptyDir($localPath);
static::folderToZip($filePath, $zipFile, $exclusiveLength, $messager);
}
}
}
closedir($handle);
}
}

View File

@@ -1,13 +1,16 @@
<?php
/**
* @package Grav.Common
* @package Grav\Common
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common;
use function donatj\UserAgent\parse_user_agent;
/**
* Internally uses the PhpUserAgent package https://github.com/donatj/PhpUserAgent
*/
@@ -113,7 +116,7 @@ class Browser
{
$version = explode('.', $this->getLongVersion());
return intval($version[0]);
return (int)$version[0];
}
/**
@@ -134,4 +137,15 @@ class Browser
return true;
}
/**
* Determine if “Do Not Track” is set by browser
* @see https://www.w3.org/TR/tracking-dnt/
*
* @return bool
*/
public function isTrackable(): bool
{
return !(isset($_SERVER['HTTP_DNT']) && $_SERVER['HTTP_DNT'] === '1');
}
}

View File

@@ -1,8 +1,9 @@
<?php
/**
* @package Grav.Common
* @package Grav\Common
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
@@ -11,15 +12,16 @@ namespace Grav\Common;
use \Doctrine\Common\Cache as DoctrineCache;
use Grav\Common\Config\Config;
use Grav\Common\Filesystem\Folder;
use Grav\Common\Scheduler\Scheduler;
use Psr\SimpleCache\CacheInterface;
use RocketTheme\Toolbox\Event\Event;
use RocketTheme\Toolbox\Event\EventDispatcher;
/**
* The GravCache object is used throughout Grav to store and retrieve cached data.
* It uses DoctrineCache library and supports a variety of caching mechanisms. Those include:
*
* APCu
* APC
* XCache
* RedisCache
* MemCache
* MemCacheD
@@ -43,6 +45,11 @@ class Cache extends Getters
*/
protected $driver;
/**
* @var CacheInterface
*/
protected $simpleCache;
protected $driver_name;
protected $driver_setting;
@@ -117,37 +124,77 @@ class Cache extends Getters
$this->config = $grav['config'];
$this->now = time();
$this->cache_dir = $grav['locator']->findResource('cache://doctrine', true, true);
if (null === $this->enabled) {
$this->enabled = (bool)$this->config->get('system.cache.enabled');
}
/** @var Uri $uri */
$uri = $grav['uri'];
$prefix = $this->config->get('system.cache.prefix');
if (is_null($this->enabled)) {
$this->enabled = (bool)$this->config->get('system.cache.enabled');
}
$uniqueness = substr(md5($uri->rootUrl(true) . $this->config->key() . GRAV_VERSION), 2, 8);
// Cache key allows us to invalidate all cache on configuration changes.
$this->key = ($prefix ? $prefix : 'g') . '-' . substr(md5($uri->rootUrl(true) . $this->config->key() . GRAV_VERSION),
2, 8);
$this->key = ($prefix ? $prefix : 'g') . '-' . $uniqueness;
$this->cache_dir = $grav['locator']->findResource('cache://doctrine/' . $uniqueness, true, true);
$this->driver_setting = $this->config->get('system.cache.driver');
$this->driver = $this->getCacheDriver();
// Set the cache namespace to our unique key
$this->driver->setNamespace($this->key);
/** @var EventDispatcher $dispatcher */
$dispatcher = Grav::instance()['events'];
$dispatcher->addListener('onSchedulerInitialized', [$this, 'onSchedulerInitialized']);
}
/**
* @return CacheInterface
*/
public function getSimpleCache()
{
if (null === $this->simpleCache) {
$cache = new \Grav\Framework\Cache\Adapter\DoctrineCache($this->driver, '', $this->getLifetime());
// Disable cache key validation.
$cache->setValidation(false);
$this->simpleCache = $cache;
}
return $this->simpleCache;
}
/**
* Deletes the old out of date file-based caches
*
* @return int
*/
public function purgeOldCache()
{
$cache_dir = dirname($this->cache_dir);
$current = basename($this->cache_dir);
$count = 0;
foreach (new \DirectoryIterator($cache_dir) as $file) {
$dir = $file->getBasename();
if ($dir === $current || $file->isDot() || $file->isFile()) {
continue;
}
Folder::delete($file->getPathname());
$count++;
}
return $count;
}
/**
* Public accessor to set the enabled state of the cache
*
* @param $enabled
* @param bool|int $enabled
*/
public function setEnabled($enabled)
{
$this->enabled = (bool) $enabled;
$this->enabled = (bool)$enabled;
}
/**
@@ -184,19 +231,15 @@ class Cache extends Getters
// CLI compatibility requires a non-volatile cache driver
if ($this->config->get('system.cache.cli_compatibility') && (
$setting == 'auto' || $this->isVolatileDriver($setting))) {
$setting === 'auto' || $this->isVolatileDriver($setting))) {
$setting = $driver_name;
}
if (!$setting || $setting == 'auto') {
if (!$setting || $setting === 'auto') {
if (extension_loaded('apcu')) {
$driver_name = 'apcu';
} elseif (extension_loaded('apc')) {
$driver_name = 'apc';
} elseif (extension_loaded('wincache')) {
$driver_name = 'wincache';
} elseif (extension_loaded('xcache')) {
$driver_name = 'xcache';
}
} else {
$driver_name = $setting;
@@ -206,9 +249,6 @@ class Cache extends Getters
switch ($driver_name) {
case 'apc':
$driver = new DoctrineCache\ApcCache();
break;
case 'apcu':
$driver = new DoctrineCache\ApcuCache();
break;
@@ -217,45 +257,53 @@ class Cache extends Getters
$driver = new DoctrineCache\WinCacheCache();
break;
case 'xcache':
$driver = new DoctrineCache\XcacheCache();
break;
case 'memcache':
$memcache = new \Memcache();
$memcache->connect($this->config->get('system.cache.memcache.server', 'localhost'),
$this->config->get('system.cache.memcache.port', 11211));
$driver = new DoctrineCache\MemcacheCache();
$driver->setMemcache($memcache);
if (extension_loaded('memcache')) {
$memcache = new \Memcache();
$memcache->connect($this->config->get('system.cache.memcache.server', 'localhost'),
$this->config->get('system.cache.memcache.port', 11211));
$driver = new DoctrineCache\MemcacheCache();
$driver->setMemcache($memcache);
} else {
throw new \LogicException('Memcache PHP extension has not been installed');
}
break;
case 'memcached':
$memcached = new \Memcached();
$memcached->addServer($this->config->get('system.cache.memcached.server', 'localhost'),
$this->config->get('system.cache.memcached.port', 11211));
$driver = new DoctrineCache\MemcachedCache();
$driver->setMemcached($memcached);
if (extension_loaded('memcached')) {
$memcached = new \Memcached();
$memcached->addServer($this->config->get('system.cache.memcached.server', 'localhost'),
$this->config->get('system.cache.memcached.port', 11211));
$driver = new DoctrineCache\MemcachedCache();
$driver->setMemcached($memcached);
} else {
throw new \LogicException('Memcached PHP extension has not been installed');
}
break;
case 'redis':
$redis = new \Redis();
$socket = $this->config->get('system.cache.redis.socket', false);
$password = $this->config->get('system.cache.redis.password', false);
if (extension_loaded('redis')) {
$redis = new \Redis();
$socket = $this->config->get('system.cache.redis.socket', false);
$password = $this->config->get('system.cache.redis.password', false);
if ($socket) {
$redis->connect($socket);
if ($socket) {
$redis->connect($socket);
} else {
$redis->connect($this->config->get('system.cache.redis.server', 'localhost'),
$this->config->get('system.cache.redis.port', 6379));
}
// Authenticate with password if set
if ($password && !$redis->auth($password)) {
throw new \RedisException('Redis authentication failed');
}
$driver = new DoctrineCache\RedisCache();
$driver->setRedis($redis);
} else {
$redis->connect($this->config->get('system.cache.redis.server', 'localhost'),
$this->config->get('system.cache.redis.port', 6379));
throw new \LogicException('Redis PHP extension has not been installed');
}
// Authenticate with password if set
if ($password && !$redis->auth($password)) {
throw new \RedisException('Redis authentication failed');
}
$driver = new DoctrineCache\RedisCache();
$driver->setRedis($redis);
break;
default:
@@ -277,9 +325,9 @@ class Cache extends Getters
{
if ($this->enabled) {
return $this->driver->fetch($id);
} else {
return false;
}
return false;
}
/**
@@ -310,6 +358,21 @@ class Cache extends Getters
if ($this->enabled) {
return $this->driver->delete($id);
}
return false;
}
/**
* Deletes all cache
*
* @return bool
*/
public function deleteAll()
{
if ($this->enabled) {
return $this->driver->deleteAll();
}
return false;
}
@@ -324,6 +387,7 @@ class Cache extends Getters
if ($this->enabled) {
return $this->driver->contains(($id));
}
return false;
}
@@ -373,6 +437,9 @@ class Cache extends Getters
case 'tmp-only':
$remove_paths = self::$tmp_remove;
break;
case 'invalidate':
$remove_paths = [];
break;
default:
if (Grav::instance()['config']->get('system.cache.clear_images_by_default')) {
$remove_paths = self::$standard_remove;
@@ -382,6 +449,12 @@ class Cache extends Getters
}
// Delete entries in the doctrine cache if required
if (in_array($remove, ['all', 'standard'])) {
$cache = Grav::instance()['cache'];
$cache->driver->deleteAll();
}
// Clearing cache event to add paths to clear
Grav::instance()->fireEvent('onBeforeCacheClear', new Event(['remove' => $remove, 'paths' => &$remove_paths]));
@@ -390,6 +463,7 @@ class Cache extends Getters
// Convert stream to a real path
try {
$path = $locator->findResource($stream, true, true);
if($path === false) continue;
$anything = false;
$files = glob($path . '/*');
@@ -421,16 +495,41 @@ class Cache extends Getters
$output[] = '';
if (($remove == 'all' || $remove == 'standard') && file_exists($user_config)) {
if (($remove === 'all' || $remove === 'standard') && file_exists($user_config)) {
touch($user_config);
$output[] = '<red>Touched: </red>' . $user_config;
$output[] = '';
}
// Clear stat cache
@clearstatcache();
// Clear opcache
if (function_exists('opcache_reset')) {
@opcache_reset();
}
return $output;
}
public static function invalidateCache()
{
$user_config = USER_DIR . 'config/system.yaml';
if (file_exists($user_config)) {
touch($user_config);
}
// Clear stat cache
@clearstatcache();
// Clear opcache
if (function_exists('opcache_reset')) {
@opcache_reset();
}
}
/**
* Set the cache lifetime programmatically
@@ -443,7 +542,7 @@ class Cache extends Getters
return;
}
$interval = $future - $this->now;
$interval = (int)($future - $this->now);
if ($interval > 0 && $interval < $this->getLifetime()) {
$this->lifetime = $interval;
}
@@ -458,7 +557,7 @@ class Cache extends Getters
public function getLifetime()
{
if ($this->lifetime === null) {
$this->lifetime = $this->config->get('system.cache.lifetime') ?: 604800; // 1 week default
$this->lifetime = (int)($this->config->get('system.cache.lifetime') ?: 604800); // 1 week default
}
return $this->lifetime;
@@ -487,15 +586,71 @@ class Cache extends Getters
/**
* is this driver a volatile driver in that it resides in PHP process memory
*
* @param $setting
* @param string $setting
* @return bool
*/
public function isVolatileDriver($setting)
{
if (in_array($setting, ['apc', 'apcu', 'xcache', 'wincache'])) {
return true;
} else {
return false;
}
return false;
}
/**
* Static function to call as a scheduled Job to purge old Doctrine files
*/
public static function purgeJob()
{
/** @var Cache $cache */
$cache = Grav::instance()['cache'];
$deleted_folders = $cache->purgeOldCache();
echo 'Purged ' . $deleted_folders . ' old cache folders...';
}
/**
* Static function to call as a scheduled Job to clear Grav cache
*
* @param string $type
*/
public static function clearJob($type)
{
$result = static::clearCache($type);
static::invalidateCache();
echo strip_tags(implode("\n", $result));
}
public function onSchedulerInitialized(Event $event)
{
/** @var Scheduler $scheduler */
$scheduler = $event['scheduler'];
$config = Grav::instance()['config'];
// File Cache Purge
$at = $config->get('system.cache.purge_at');
$name = 'cache-purge';
$logs = 'logs/' . $name . '.out';
$job = $scheduler->addFunction('Grav\Common\Cache::purgeJob', [], $name );
$job->at($at);
$job->output($logs);
$job->backlink('/config/system#caching');
// Cache Clear
$at = $config->get('system.cache.clear_at');
$clear_type = $config->get('system.cache.clear_job_type');
$name = 'cache-clear';
$logs = 'logs/' . $name . '.out';
$job = $scheduler->addFunction('Grav\Common\Cache::clearJob', [$clear_type], $name );
$job->at($at);
$job->output($logs);
$job->backlink('/config/system#caching');
}
}

View File

@@ -1,8 +1,9 @@
<?php
/**
* @package Grav.Common
* @package Grav\Common
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
@@ -11,7 +12,7 @@ namespace Grav\Common;
class Composer
{
/** @const Default composer location */
const DEFAULT_PATH = "bin/composer.phar";
const DEFAULT_PATH = 'bin/composer.phar';
/**
* Returns the location of composer.
@@ -20,12 +21,12 @@ class Composer
*/
public static function getComposerLocation()
{
if (!function_exists('shell_exec') || strtolower(substr(PHP_OS, 0, 3)) === 'win') {
if (!\function_exists('shell_exec') || stripos(PHP_OS, 'win') === 0) {
return self::DEFAULT_PATH;
}
// check for global composer install
$path = trim(shell_exec("command -v composer"));
$path = trim(shell_exec('command -v composer'));
// fall back to grav bundled composer
if (!$path || !preg_match('/(composer|composer\.phar)$/', $path)) {
@@ -46,7 +47,7 @@ class Composer
$composer = static::getComposerLocation();
if ($composer !== static::DEFAULT_PATH && is_executable($composer)) {
$file = fopen($composer, 'r');
$file = fopen($composer, 'rb');
$firstLine = fgets($file);
fclose($file);

View File

@@ -1,8 +1,9 @@
<?php
/**
* @package Grav.Common.Config
* @package Grav\Common\Config
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
@@ -128,7 +129,7 @@ abstract class CompiledBase
*/
public function checksum()
{
if (!isset($this->checksum)) {
if (null === $this->checksum) {
$this->checksum = md5(json_encode($this->files) . $this->version);
}
@@ -197,11 +198,9 @@ abstract class CompiledBase
$cache = include $filename;
if (
!is_array($cache)
|| !isset($cache['checksum'])
|| !isset($cache['data'])
|| !isset($cache['@class'])
|| $cache['@class'] != get_class($this)
!\is_array($cache)
|| !isset($cache['checksum'], $cache['data'], $cache['@class'])
|| $cache['@class'] !== \get_class($this)
) {
return false;
}
@@ -212,7 +211,7 @@ abstract class CompiledBase
}
$this->createObject($cache['data']);
$this->timestamp = isset($cache['timestamp']) ? $cache['timestamp'] : 0;
$this->timestamp = $cache['timestamp'] ?? 0;
$this->finalizeObject();
@@ -243,7 +242,7 @@ abstract class CompiledBase
}
$cache = [
'@class' => get_class($this),
'@class' => \get_class($this),
'timestamp' => time(),
'checksum' => $this->checksum(),
'files' => $this->files,

View File

@@ -1,27 +1,30 @@
<?php
/**
* @package Grav.Common.Config
* @package Grav\Common\Config
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Common\Config;
use Grav\Common\Data\Blueprint;
use Grav\Common\Data\BlueprintSchema;
use Grav\Common\Grav;
/**
* Class CompiledBlueprints
* @package Grav\Common\Config
*/
class CompiledBlueprints extends CompiledBase
{
/**
* @var int Version number for the compiled file.
*/
public $version = 2;
public function __construct($cacheFolder, array $files, $path)
{
parent::__construct($cacheFolder, $files, $path);
/**
* @var BlueprintSchema Blueprints object.
*/
protected $object;
$this->version = 2;
}
/**
* Returns checksum from the configuration files.
@@ -32,7 +35,7 @@ class CompiledBlueprints extends CompiledBase
*/
public function checksum()
{
if (!isset($this->checksum)) {
if (null === $this->checksum) {
$this->checksum = md5(json_encode($this->files) . json_encode($this->getTypes()) . $this->version);
}
@@ -92,6 +95,7 @@ class CompiledBlueprints extends CompiledBase
// Convert file list into parent list.
$list = [];
/** @var array $files */
foreach ($this->files as $files) {
foreach ($files as $name => $item) {
$list[$name][] = $this->path . $item['file'];

View File

@@ -1,8 +1,9 @@
<?php
/**
* @package Grav.Common.Config
* @package Grav\Common\Config
*
* @copyright Copyright (C) 2014 - 2017 RocketTheme, LLC. All rights reserved.
* @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
@@ -12,16 +13,6 @@ use Grav\Common\File\CompiledYamlFile;
class CompiledConfig extends CompiledBase
{
/**
* @var int Version number for the compiled file.
*/
public $version = 1;
/**
* @var Config Configuration object.
*/
protected $object;
/**
* @var callable Blueprints loader.
*/
@@ -32,6 +23,13 @@ class CompiledConfig extends CompiledBase
*/
protected $withDefaults;
public function __construct($cacheFolder, array $files, $path)
{
parent::__construct($cacheFolder, $files, $path);
$this->version = 1;
}
/**
* Set blueprints for the configuration.
*
@@ -63,7 +61,7 @@ class CompiledConfig extends CompiledBase
*/
protected function createObject(array $data = [])
{
if ($this->withDefaults && empty($data) && is_callable($this->callable)) {
if ($this->withDefaults && empty($data) && \is_callable($this->callable)) {
$blueprints = $this->callable;
$data = $blueprints()->getDefaults();
}

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