Compare commits

..

1971 Commits
0.9.0 ... 1.0.5

Author SHA1 Message Date
Andy Miller
08cbd9553f Merge branch 'release/1.0.5' 2015-12-18 16:50:33 -07:00
Andy Miller
dcaa9a35c3 Missed changeling entry 2015-12-18 16:50:19 -07:00
Andy Miller
4a80691e07 version update 2015-12-18 16:49:03 -07:00
Andy Miller
425831a7ae Fix for empty file when writing cache 2015-12-18 15:09:21 -07:00
Djamil Legato
984e0455b1 'informations' is not a thing 😞 2015-12-18 13:44:59 -08:00
Djamil Legato
00ecfb30f3 Ensuring gpm selfupgrades doesn't continue if PHP min version requirement isn't met. Gracefully abort with error and details. 2015-12-18 13:38:28 -08:00
Djamil Legato
c18f20e483 Added GRAV_PHP_MIN 2015-12-18 13:37:19 -08:00
Djamil Legato
71c5ff8c51 Added new Upgrader::meetsRequirements method
Ensures the PHP version meets the Grav's mininum required one.
2015-12-18 13:35:31 -08:00
Djamil Legato
1996dd7de8 Allowing Installer to set errors as string 2015-12-18 13:33:57 -08:00
Andy Miller
e87daa2361 Added support to get plugin languages from individual language files in languages folder of plugin 2015-12-18 12:29:45 -07:00
Flavio Copes
987feb1385 Make saveConfig static so it's more easily accessible 2015-12-18 15:42:33 +01:00
Flavio Copes
8d048c689f Persists to disk the plugin parameters currently stored in the Grav Config object 2015-12-18 14:44:03 +01:00
Flavio Copes
139ef04e0a Handle non-array values in file validation 2015-12-18 10:38:10 +01:00
Flavio Copes
4c01e6c93e Merge pull request #530 from mufac/mufac-patch-1
Prevent error if no collections present
2015-12-18 10:04:11 +01:00
Andy Miller
27744ba747 Merge branch 'feature/markdown_extendability' into develop 2015-12-17 18:09:28 -07:00
Andy Miller
3d3c6f4eba missing doc blocks 2015-12-17 18:09:11 -07:00
Andy Miller
fb4abc5f5f Use Grav's version of Parsedown until PR is accepted (crossing fingers) 2015-12-17 17:52:20 -07:00
mufac
f29b141d69 Prevent error if no collections present
If there are no collections you can get a "Invalid argument supplied for foreach()" without an empty default.
2015-12-17 16:14:48 -06:00
Andy Miller
1cecd09423 requires changes in parsedown 2015-12-17 10:35:22 -07:00
Andy Miller
0142e76270 cleanup 2015-12-16 21:51:38 -07:00
Andy Miller
5f8c7f41ec Add ability to extend markdown 2015-12-16 19:50:10 -07:00
Flavio Copes
451baff26e filterFile if the file field allows multiple items returns an array, otherwise a string 2015-12-16 15:16:14 +01:00
Flavio Copes
0e8e27877e Fix https://github.com/getgrav/grav-plugin-admin/issues/335, when looping the fields param in a list field, first check it exists 2015-12-15 11:52:27 +01:00
Andy Miller
d8a993bc86 Properly convert comma to spaces for multiple attributes #518 2015-12-14 18:30:55 -07:00
Andy Miller
ec7dbbdc8b Added 7z format to standard file types #521 2015-12-14 18:13:14 -07:00
Djamil Legato
e152cfd10f Forcing travis VM to western most date and echo a Travis date to catch it on log 2015-12-12 17:47:19 -08:00
Andy Miller
747daa46f1 Merge branch 'release/1.0.4' 2015-12-12 13:03:34 -07:00
Andy Miller
17a0590ee4 Merge branch 'release/1.0.4' into develop 2015-12-12 13:03:34 -07:00
Andy Miller
653edb064b version update 2015-12-12 13:03:22 -07:00
Andy Miller
40f5d57737 Default value not in quotes. Needs to be a string for Admin compatibility - https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html#integers-are-parsed-as-integers 2015-12-12 08:43:41 -07:00
Flavio Copes
566c5cb38f Revert "Fix issue in images cache permissions"
This reverts commit 7e3058e3f0.
2015-12-12 10:18:32 +01:00
Flavio Copes
7e3058e3f0 Fix issue in images cache permissions
the leading '0' in the default 0755 was omitted as interpreted as an
integer, leading to errors in setting the images cache folder
permissions (not readable by Grav)
2015-12-12 10:13:21 +01:00
Djamil Legato
053d8a3fd5 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-12-11 21:17:30 -08:00
Djamil Legato
0e810c15e2 Keep going if files are not found while creating a new project 2015-12-11 21:17:19 -08:00
Andy Miller
6b9154d1f3 Fix for cleaning build on linux 2015-12-11 22:08:59 -07:00
Andy Miller
4a5a400b89 Merge branch 'release/1.0.3' 2015-12-11 21:52:41 -07:00
Andy Miller
2d7a3232cc Merge branch 'release/1.0.3' into develop 2015-12-11 21:52:41 -07:00
Andy Miller
96d7c4790f version update 2015-12-11 21:52:14 -07:00
Andy Miller
c0b9ada21c fix for Image perms on admin save 2015-12-11 21:43:32 -07:00
Djamil Legato
7b116b41ae Not meant to be checked in 2015-12-11 20:42:30 -08:00
Djamil Legato
fcdd0bc0e9 Reverted CleanCommand to pure Command 2015-12-11 20:19:57 -07:00
Djamil Legato
0619f7c656 Reverted CleanCommand to pure Command 2015-12-11 18:44:52 -08:00
Andy Miller
f7696b61d3 Merge branch 'release/1.0.2' 2015-12-11 18:51:36 -07:00
Andy Miller
48083b203a Merge branch 'release/1.0.2' into develop 2015-12-11 18:51:36 -07:00
Andy Miller
f8aa9fed91 version update 2015-12-11 18:51:26 -07:00
Andy Miller
c55521ac4a fixed timing calculation 2015-12-11 17:16:10 -07:00
Andy Miller
2bb23efa7c Merge branch 'release/1.0.1' 2015-12-11 15:38:45 -07:00
Andy Miller
cdcb76cc55 Merge branch 'release/1.0.1' into develop 2015-12-11 15:38:45 -07:00
Andy Miller
def726a012 version update 2015-12-11 15:38:08 -07:00
Andy Miller
7d1291e2b9 Fixed cleanup to take into account symfony folder changes 2015-12-11 15:17:01 -07:00
Andy Miller
a0297e9d65 Fix error that can results from enabling debugger from admin 2015-12-11 15:00:54 -07:00
Andy Miller
e4e0c06ea8 Merge branch 'release/1.0.0' 2015-12-11 14:00:21 -07:00
Andy Miller
f46ad2d032 Merge branch 'release/1.0.0' into develop 2015-12-11 14:00:21 -07:00
Andy Miller
0c807b6108 version update 2015-12-11 13:59:52 -07:00
Andy Miller
3a47d6a580 force lowercase of username 2015-12-11 10:34:59 -07:00
Andy Miller
52947b3a2c Added Image cache perms option 2015-12-10 20:51:40 -07:00
Andy Miller
eacfc798f4 wrap security section of account blueprints in an authorize check 2015-12-10 16:05:22 -07:00
Andy Miller
5c0e5f3c01 updated debugbar 2015-12-10 16:04:46 -07:00
Andy Miller
985141b842 Merge pull request #515 from lennerd/fix/medium-url
Escape graph root in page medium to work with special characters.
2015-12-10 13:27:02 -07:00
Andy Miller
1aac2ab95d Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-12-10 12:13:01 -07:00
Andy Miller
aa7d5ddf59 translate validation messages 2015-12-10 12:12:56 -07:00
Flavio Copes
e87505378d Fix a parentheses issue that changes the logic and throw an error if $value['error'] is not set 2015-12-10 19:19:32 +01:00
Matias Griese
53f097c2b3 Fix wrong ordering when moving bulk of pages 2015-12-10 11:25:14 +02:00
Matias Griese
6ea7fe9dba Fix moving page if its just placeholder 2015-12-10 11:19:56 +02:00
Matias Griese
0206f1b0c7 Fix Page::copy() and Page::move() to support multiple moves at once 2015-12-10 10:46:09 +02:00
Matias Griese
ef9f2c77dd Minor fix in Page class 2015-12-10 10:24:21 +02:00
Andy Miller
822292f541 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-12-09 10:13:53 -07:00
Andy Miller
ec08cd9374 Better fix for GPM issues 2015-12-09 10:13:44 -07:00
Flavio Copes
8fb4063cf2 Merge pull request #511 from getgrav/feature/fix-multisite-subfolder
Make $container available in setup.php
2015-12-09 17:25:31 +01:00
Lennart Hildebrandt
8a2b444c48 Escape graph root in page medium to work with special characters. 2015-12-09 12:30:08 +01:00
Andy Miller
9c6f243902 Fix for GPM problems "Call to a member function set() on null" 2015-12-08 21:20:41 -07:00
Andy Miller
d5bd99b363 Fix for individual asset pipeline value not functioning + optimizations #513 2015-12-08 11:42:39 -07:00
Matias Griese
5554c07cbf Merge pull request #508 from getgrav/feature/gantry
Add support to manually initialize theme
2015-12-08 10:12:00 +02:00
Andy Miller
acd95aac6f Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-12-07 16:46:37 -07:00
Andy Miller
8ad5f2624d Added iconv polyfill library 2015-12-07 16:46:28 -07:00
Andy Miller
8adc0e1c17 Merge pull request #510 from getgrav/feature/fix-translation
Fix issue when `translations_fallback` is turned off, the translations are always relative to the default language even if the active language is != default
2015-12-07 15:29:56 -07:00
Flavio Copes
fab66cf3a5 Make $container available in setup.php 2015-12-07 19:20:10 +01:00
Flavio Copes
5df48e7a68 Fix issue when translations_fallback is turned off, the translations are always relative to the default language even if the active language is != default 2015-12-07 16:25:46 +01:00
Djamil Legato
079a8c5728 Fixed LICENSE link 2015-12-06 13:24:27 -08:00
Flavio Copes
d9196426a1 Hide the session setting in admin as turning it off crashes the admin. 2015-12-06 18:20:16 +01:00
Flavio Copes
2f686f5b74 Improve a couple page method docs 2015-12-06 18:19:21 +01:00
Djamil Legato
c4b5df20a9 🎈 Added many more gpm index options (--filter, --sort, --updates-only, --plugins-only, --themes-only, --desc) 2015-12-04 17:54:14 -08:00
Djamil Legato
06608a6d3c Implemented sort method for Iterator ($iterator->sort($callback)) 2015-12-04 17:39:49 -08:00
Andy Miller
fd63911faf Useful cache info output 2015-12-04 15:50:04 -07:00
Flavio Copes
66a1e55867 Update pages blueprints to add the page preview in the markdown editor with the current admin changes 2015-12-04 23:12:36 +01:00
Andy Miller
af2eb2e75d Reverted PHP7 apcu as it seems to kill Doctrine Cache 2015-12-04 15:02:26 -07:00
Andy Miller
9b4f32cafd Merge branch 'develop' into feature/gantry 2015-12-03 22:15:17 -07:00
Andy Miller
9179fbd1a2 minor performance optimization 2015-12-03 22:12:01 -07:00
Andy Miller
24ea7f1f55 Support APCu extension loaded for PHP7.0 2015-12-03 19:05:53 -07:00
Andy Miller
9b95053110 Support APCu extension loaded for PHP7.0 2015-12-03 19:05:36 -07:00
Andy Miller
71ffb9c72f Merge branch 'develop' into feature/gantry 2015-12-03 18:06:30 -07:00
Andy Miller
f29f698f61 setter method to allow explicit setting of asset timestamp 2015-12-03 16:56:30 -07:00
Andy Miller
f1f8579a0b New setters to set state of CSS / JS pipelining 2015-12-03 14:48:34 -07:00
Andy Miller
4ca8fab750 removed unused Plugin and Theme initialization 2015-12-03 14:48:15 -07:00
Andy Miller
b80ed731b0 Made Page.evaluate() public so it can be used by twig, plugins etc. 2015-12-03 13:44:25 -07:00
Andy Miller
23a9a73600 Added logic to support link attributes via query string 2015-12-03 12:16:16 -07:00
Djamil Legato
dc8c0b6522 Fixed changelog differ to take into account betas/rc versions (fixes #496) 2015-12-02 23:44:18 -08:00
Andy Miller
e695b1942c .gitignore for accounts - https://github.com/getgrav/grav-plugin-login/issues/16 2015-12-02 15:38:05 -07:00
Andy Miller
3f543e7e84 Merge branch 'feature/gantry' of https://github.com/getgrav/grav into feature/gantry 2015-12-02 15:36:22 -07:00
Andy Miller
7f6f9e82e3 .gitignore for accounts - https://github.com/getgrav/grav-plugin-login/issues/16 2015-12-02 15:36:16 -07:00
Djamil Legato
51529eb0ce Merge branch 'develop' into feature/gantry 2015-12-02 14:10:17 -08:00
Andy Miller
05b24a4b75 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-12-02 12:39:01 -07:00
Andy Miller
ca5819489f Fix for sandbox command 2015-12-02 12:38:56 -07:00
Matias Griese
1d2acf8096 Move onThemeInitialized event into Themes::initTheme() 2015-12-02 17:24:12 +02:00
Andy Miller
98278e965b Merge pull request #495 from tcsizmadia/develop
Updated Hungarian translation with new string.
2015-12-02 07:50:12 -07:00
Matias Griese
7bc990688c Add missing parent constructor to Themes class 2015-12-02 11:24:20 +02:00
Tamas Csizmadia
b86aa6d473 Updated Hungarian translation with new string. 2015-12-01 21:57:31 +01:00
Andy Miller
dba7347c1e Merge branch 'release/1.0.0-rc.6' 2015-12-01 13:13:16 -07:00
Andy Miller
fa52e18e3f Merge branch 'release/1.0.0-rc.6' into develop 2015-12-01 13:13:16 -07:00
Andy Miller
b605753a6d version update 2015-12-01 13:12:59 -07:00
Andy Miller
0af4fb351c changelog updated 2015-12-01 12:47:10 -07:00
Andy Miller
90edf95077 renamed LICENSE to LICENSE.txt 2015-12-01 11:15:00 -07:00
Andy Miller
ab3843442a Merge pull request #494 from getgrav/feature/introduce-user-groups
Feature/introduce user groups
2015-12-01 10:03:30 -07:00
Flavio Copes
023b9dd708 Merge remote-tracking branch 'origin/feature/introduce-user-groups' into feature/introduce-user-groups 2015-12-01 17:56:56 +01:00
Flavio Copes
0ac882314e Merge branch 'develop' into feature/introduce-user-groups 2015-12-01 17:54:20 +01:00
Flavio Copes
0fe9264582 Merge pull request #491 from MATsxm/patch-2
Update fr.yaml
2015-12-01 14:05:25 +01:00
Djamil Legato
b1e16b2206 Added validator for file input fields 2015-11-30 18:22:30 -08:00
Andy Miller
a67c1780c1 Added a new @self.all case that gets all children modular and non-modular 2015-11-30 19:16:46 -07:00
Marc-Antoine Thevenet
1170f2f58d Update fr.yaml
Update following the /en file
Thanks
2015-11-30 15:30:22 -04:00
Andy Miller
199c0a08ea Should not be able to set parent to self (infinite loop) #308 2015-11-30 12:18:32 -07:00
Matias Griese
84ad152536 Only create environmental config if the directory exists 2015-11-30 20:44:08 +02:00
Flavio Copes
5b0f905ae3 Update italian lang file 2015-11-30 19:20:20 +01:00
Flavio Copes
a2bba8f09d Merge pull request #489 from hugoaf/develop
Adding language string for MISSING_REQUIRED_FIELD
2015-11-30 19:19:51 +01:00
Matias Griese
2007975428 If environment does not have its own directory, remove it from the lookup 2015-11-30 10:13:40 -07:00
Matias Griese
e484997515 If environment does not have its own directory, remove it from the lookup 2015-11-30 18:56:34 +02:00
Flavio Copes
af5c52c52f Update session name hints 2015-11-30 14:36:23 +01:00
Hugo Avila
f3d0e10378 Update Blueprint.php 2015-11-29 21:43:05 -08:00
Hugo Avila
b33ab43ff9 Update en.yaml 2015-11-29 21:39:51 -08:00
Hugo Avila
c580399db6 Update es.yaml 2015-11-29 21:33:08 -08:00
Hugo Avila
00d8717d7c Create es.yaml 2015-11-29 21:26:21 -08:00
Andy Miller
6e2f4607a6 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-29 20:00:21 -07:00
Andy Miller
3a7abeb18b Added support to set classes and id on a medium object 2015-11-29 20:00:16 -07:00
Andy Miller
84a5984c65 Merge pull request #487 from aqnouch/patch-2
Change the first letter of the word 'français' to uppercase
2015-11-29 17:34:38 -07:00
AQNOUCH Mohammed
1465c26b1f Change the first letter of the word 'français' to uppercase 2015-11-28 19:20:59 +00:00
Flavio Copes
b399d8e3b9 Drop check used by the array field, introduced by 57b18edb55 2015-11-27 19:27:58 +01:00
Andy Miller
b5c04bdc9b Merge pull request #484 from nazwa/web.config-patch
Web.config update
2015-11-26 18:33:27 -07:00
Andy Miller
b4725800c3 Merge pull request #482 from diomed/patch-1
Update hr.yaml
2015-11-26 18:33:14 -07:00
nazwa
2b1a102efa Web.config update
web.config now correctly allows for static files inside vendor folder, just like .htaccess
2015-11-26 22:18:27 +00:00
Kruno H
500c548af4 Update hr.yaml
added PLURAL_MORE_THAN_TWO translations
2015-11-26 22:48:02 +01:00
Flavio Copes
fc7017f822 Merge pull request #480 from getgrav/feature/fix-set-time-limit
Include set_time_limit in a try/catch
2015-11-26 17:36:58 +01:00
Flavio Copes
5b254f4cf8 Drop accidentally added method 2015-11-26 16:19:29 +01:00
Flavio Copes
43783f3ce6 Correct the set_time_limit if 2015-11-26 16:18:05 +01:00
Flavio Copes
ae39aabee1 Include set_time_limit in a try/catch 2015-11-26 16:02:06 +01:00
Flavio Copes
df7a94148b Merge branch 'develop' into feature/introduce-user-groups 2015-11-26 12:14:48 +01:00
Flavio Copes
63890661fe Add security.yaml to the ignored files 2015-11-26 11:55:13 +01:00
Flavio Copes
793ac1a1bb Revert "no message"
This reverts commit b259927348.
2015-11-26 11:54:05 +01:00
Flavio Copes
77db54c50d Revert "If the page does not exist trigger a 404"
This reverts commit 8d8420c0d6.
2015-11-26 11:53:27 +01:00
Andy Miller
b259927348 no message 2015-11-25 15:42:11 -07:00
Andy Miller
e8972a6aa5 vendor updates 2015-11-25 15:41:53 -07:00
Flavio Copes
8d8420c0d6 If the page does not exist trigger a 404 2015-11-25 22:30:45 +01:00
Flavio Copes
7a6707f597 Merge pull request #473 from getgrav/feature/allow-multiple-plurals
Handle languages that support _PLURAL_MORE_THAN_TWO
2015-11-25 17:42:37 +01:00
Djamil Legato
b0ec66cce8 Merge pull request #475 from nazwa/lists-patch
Proper handling of list fields
2015-11-24 15:51:58 -08:00
Maciej Ka
edfd7db88b pretty & clean 2015-11-24 23:48:22 +00:00
Maciej Ka
fb3e68e16e removed old parameters 2015-11-24 23:34:47 +00:00
Maciej Ka
080ab9e289 Fixed conflict caused by w00fz quickfix 2015-11-24 23:17:37 +00:00
nazwa
f67e441b83 Merge pull request #1 from getgrav/develop
Fixed nested logic for lists and forms parsing (fixes #273)
2015-11-24 23:13:47 +00:00
nazwa
9c07d69c45 Proper handling of list fields
Moved field handling to a separate function and added logic to correctly process nested lists.
2015-11-24 23:02:42 +00:00
Djamil Legato
13207f13ad Fixed nested logic for lists and forms parsing (fixes #273) 2015-11-24 14:57:05 -08:00
Flavio Copes
34f83ebde2 Use the new security salt to calculate the nonce instead of using password_hash 2015-11-24 21:13:46 +01:00
Flavio Copes
14ed805656 Merge branch 'develop' into feature/introduce-user-groups 2015-11-24 21:00:08 +01:00
Matias Griese
385233c508 Automatically create unique security salt for each configuration 2015-11-24 21:14:46 +02:00
Flavio Copes
8a3b987cd5 Merge branch 'develop' into feature/introduce-user-groups 2015-11-24 19:45:04 +01:00
Andy Miller
bdd17fc56a Moving back to release version of Toolbox 2015-11-24 10:06:41 -07:00
Andy Miller
29b3c081ee Merge branch 'feature/refactor' into develop 2015-11-24 09:59:51 -07:00
Andy Miller
b1d80b6c5f Merge branch 'develop' into feature/refactor 2015-11-24 09:59:33 -07:00
Flavio Copes
e00560f81a Handle languages that support _PLURAL_MORE_THAN_TWO
Ex. WEEK_PLURAL, WEEK_PLURAL_MORE_THAN_TWO
2015-11-24 15:18:10 +01:00
Flavio Copes
20f17130a2 Add the IP address of the user to the nonce string calculation even if it's logged in 2015-11-24 15:17:08 +01:00
Flavio Copes
583156d2f3 Handle multiple nonce action types per page 2015-11-24 09:03:48 +01:00
Andy Miller
88f36f4987 Merge branch 'develop' into feature/refactor 2015-11-23 19:08:46 -07:00
Andy Miller
965c8cfbe9 Only generate one nonce per process 2015-11-23 19:07:46 -07:00
Andy Miller
b8f00243e6 Make hash() public for future use 2015-11-23 19:07:12 -07:00
Andy Miller
1d97f98515 Made hash() public for future usage 2015-11-23 17:41:16 -07:00
Matias Griese
9764cf3f65 Sync CompiledFile class with Gantry 2015-11-23 11:00:28 +02:00
Matias Griese
1f5df81496 Sync Folder class with Gantry 2015-11-23 11:00:03 +02:00
Matias Griese
5f76a0255c Merge branches 'develop' and 'feature/refactor' of https://github.com/getgrav/grav into feature/refactor
# Conflicts:
#	CHANGELOG.md
#	composer.lock
2015-11-23 09:48:30 +02:00
Flavio Copes
17f3ca6eba Merge pull request #466 from tcsizmadia/develop
Updated system/languages/hu.yaml
2015-11-22 16:32:57 +01:00
Tamas Csizmadia
b29d79738b Updated system/languages/hu.yaml
Tweaked translation for 'ago' - sounds less weird.
2015-11-22 12:34:44 +01:00
Andy Miller
020cdd7324 Merge pull request #464 from tcsizmadia/develop
Hungarian translation in system/languages/hu.yaml
2015-11-21 22:04:51 -07:00
Andy Miller
1e39f3b22d Merge pull request #465 from MAT978/patch-1
Update fr.yaml
2015-11-21 22:04:45 -07:00
Djamil Legato
37035a488d Fixed bin/plugin help output 2015-11-21 20:53:11 -08:00
Marc-Antoine Thevenet
745b418cd7 Update fr.yaml
update based on the version: en
Nov 17, 2015
2015-11-21 21:47:21 -04:00
Tamas Csizmadia
2a02c8bc4f Hungarian translation in system/languages/hu.yaml 2015-11-21 21:53:03 +01:00
Flavio Copes
a15e063b92 Merge branch 'develop' into feature/introduce-user-groups 2015-11-21 16:52:51 +01:00
Andy Miller
2051fed5b7 Merge pull request #458 from benblee/patch-1
Prevent crawling of unnecessary directories
2015-11-20 19:57:45 -07:00
Ben Lee
268714863e Prevent crawling of unnecessary directories
Prevent search engines from crawling and indexing unnecessary files and directories. The "/user/plugins/" directory may need to be added to the Allow list if plugins use frontend accessible assets. This is tested at a basic level using Google Fetch and Render.
2015-11-20 19:33:24 -07:00
Andy Miller
60c6532307 Merge branch 'release/1.0.0-rc.5' into develop 2015-11-20 17:54:40 -07:00
Andy Miller
50c6e81c09 Merge branch 'release/1.0.0-rc.5' 2015-11-20 17:54:39 -07:00
Andy Miller
2a0a9a225c version update 2015-11-20 17:54:28 -07:00
Andy Miller
aee92b58c7 Updated composer.phar 2015-11-20 17:34:34 -07:00
Andy Miller
16db950009 composer updates 2015-11-20 17:34:02 -07:00
Andy Miller
bde33e7188 Lighttpd/Lightly configuration file - Thanks @Mr3ase 2015-11-20 14:59:58 -07:00
Djamil Legato
267efbe164 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-20 12:40:52 -08:00
Djamil Legato
f9e137c994 Added pad filter for strings (uses str_pad) 2015-11-20 12:40:48 -08:00
Andy Miller
e7f9751403 add new Page.relativePagePath helper method 2015-11-20 08:08:39 -07:00
Matias Griese
9adf81294d Merge branches 'develop' and 'feature/refactor' of https://github.com/getgrav/grav into feature/refactor 2015-11-20 09:28:58 +02:00
Matias Griese
3033818589 On plaintext authentication verify, use default hash even if its not set in configuration 2015-11-20 09:22:07 +02:00
Djamil Legato
06d663680c Removed unused label 2015-11-19 20:05:29 -08:00
Djamil Legato
1bbdca5032 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-19 18:07:40 -08:00
Djamil Legato
c1654a988e Fixed deprecated message 2015-11-19 18:07:16 -08:00
Andy Miller
18a540c867 Don't set a default hash in system.yaml 2015-11-19 18:56:05 -07:00
Andy Miller
99fc8df322 old command was called newuser not new-user, also pointed to login plugin now. 2015-11-19 18:30:31 -07:00
Flavio Copes
2d21cb8b1e Simplify, clear slashes for all nonces automatically. Remove Utils:: getNonceForGetRequest methoid
The reason is, we need to get the nonce in JavaScript and we can simply
use the one in the form, made for POST requests
2015-11-19 23:23:32 +01:00
Flavio Copes
d8008654b9 Add a new Utils::getNonceForGetRequest() method, and use that in Uri:: addNonce() 2015-11-19 22:44:10 +01:00
Andy Miller
146295fb1e fix for state check if user was already logged in without state 2015-11-19 13:43:15 -07:00
Matias Griese
09ed480628 Composer update 2015-11-19 17:05:21 +02:00
Matias Griese
5dd1554e5d Fix modified function in config 2015-11-19 12:02:08 +02:00
Matias Griese
748f329c8e Merge branches 'develop' and 'feature/refactor' of https://github.com/getgrav/grav into feature/refactor
Conflicts:
	CHANGELOG.md
2015-11-19 10:51:26 +02:00
Matias Griese
7228b25393 Fix configuration reload 2015-11-19 10:49:55 +02:00
Djamil Legato
63e083ea37 Implemented new state check for accounts. If an account state is set to disabled no actions will be allowed 2015-11-18 18:31:19 -08:00
Andy Miller
b1630feb5d Disable time limit in case of slow downloads: #385 2015-11-18 19:04:57 -07:00
Andy Miller
1185a91c90 Fix for Media using absolute URLs internally causing breakages in functionality: #401 2015-11-18 18:39:30 -07:00
Andy Miller
dce6d7894b Added form blueprints for new append_url_extension field in system.yaml and page headers 2015-11-18 17:35:07 -07:00
Andy Miller
375ee0d1fa remove version from auto-generated generator tag 2015-11-18 17:17:53 -07:00
Andy Miller
ce0574f897 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-18 17:13:31 -07:00
Andy Miller
c515111446 Don't check valid media list if its' in whitelist 2015-11-18 17:13:22 -07:00
Djamil Legato
7d6393628e Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-18 16:12:12 -08:00
Djamil Legato
24fde7261a Deprecated: bin/grav new-user is now deprecated in favor of bin/plugin admin new-user 2015-11-18 16:12:08 -08:00
Djamil Legato
3d922abf1a Fixed listing duplicate plugins when multiple commands present. 2015-11-18 16:11:44 -08:00
Andy Miller
7f1d3a94fe Support default case of allowing all valid media types. Config option replaces with a whitelist of types supported. #452 2015-11-18 15:52:01 -07:00
Andy Miller
3d774b7585 moved fallback types to media 2015-11-18 15:50:46 -07:00
Djamil Legato
b0083548b6 Rearranged properly changelog entries 2015-11-18 11:55:34 -08:00
Djamil Legato
905dae3b16 Updated changelog 2015-11-18 11:51:16 -08:00
Djamil Legato
d79979371b Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-18 11:47:26 -08:00
Flavio Copes
c4bff94f7d Merge pull request #454 from diomed/patch-1
Croatian translation
2015-11-18 20:43:07 +01:00
Kruno H
7c4fd3858c Croatian translation 2015-11-18 20:35:23 +01:00
Djamil Legato
3b9af8883d Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-18 10:43:02 -08:00
Djamil Legato
29b34d7de0 Listing all plugins with CLI available. Better helper when empty arguments 2015-11-18 10:40:06 -08:00
Matias Griese
90fcf448c7 Merge branches 'develop' and 'feature/refactor' of https://github.com/getgrav/grav into feature/refactor 2015-11-18 18:17:33 +02:00
Flavio Copes
5193551d04 Fix date representation in system config
Fixes https://github.com/getgrav/grav-plugin-admin/issues/278
2015-11-18 17:15:18 +01:00
Matias Griese
d2660e0755 Fixed gzip compression making it to work correctly with all servers and browsers 2015-11-18 18:14:35 +02:00
Flavio Copes
2d8ac27fdd Merge pull request #451 from yaman-jain/docfixes
PhpDoc
2015-11-18 14:49:58 +01:00
Matias Griese
dd2ddfeb40 Refactor Config classes 2015-11-18 15:32:14 +02:00
Matias Griese
ac3396e6c4 Data objects: Allow function call chaining, lazy load blueprints 2015-11-18 14:43:32 +02:00
yaman-jain
49a5b38589 PhpDoc: callback definition as per #451 2015-11-18 16:01:19 +05:30
yaman-jain
6e2f792bb9 Merge branch 'develop' into docfixes 2015-11-18 15:55:25 +05:30
Djamil Legato
da098fd46a Implemented support for Plugins to hook into Grav CLI via bin/plugin <plugin-name> 2015-11-17 19:33:55 -08:00
Djamil Legato
3e081b340f Cleaned up Console commands, now extending Grav's own ConsoleCommand class 2015-11-17 19:31:13 -08:00
Djamil Legato
698015a03d Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-17 19:12:45 -08:00
Djamil Legato
000a10f936 Added check in Plugins::get method to ensure a plugin exists 2015-11-17 18:36:08 -08:00
Flavio Copes
c764e31c8a Merge pull request #448 from bovisp/patch-3
Added form validation translations
2015-11-17 22:32:38 +01:00
Flavio Copes
c18021d52a Merge pull request #450 from bovisp/patch-2
Added a translation for "Invalid input in " text
2015-11-17 22:32:15 +01:00
Flavio Copes
3d0cc67415 Merge pull request #449 from bovisp/patch-1
Added a translation for "Validation failed:" text
2015-11-17 22:32:00 +01:00
Paul Bovis
3f94a6fda9 moved $language variable inside catch statement
As requested
2015-11-17 14:25:51 -07:00
yaman-jain
7f0eefbde5 updated/added PhpDoc for methods 2015-11-18 02:32:44 +05:30
Paul Bovis
280377985f Added form validation translations
These will need to be translated into other languages.
2015-11-17 11:57:15 -07:00
Paul Bovis
d5b3f070a5 Added a translation for "Invalid input in " text
The English phrase "Invalid input in " was hardcoded at line 40. I created a new translation 'FORM.INVALID_INPUT' and placed it in /system/languages/en.yaml. It will need to be translated into other languages by others.
2015-11-17 11:55:31 -07:00
Paul Bovis
3505ef046d Added a translation for "Validation failed:" text
The English term "Validation failed:" was hard coded on line 83. Instead, I created a translation and placed this at /system/languages/en.yaml. It will need to be translated into other languages by others.
2015-11-17 11:50:47 -07:00
Flavio Copes
a6bc565356 Replace forward slashes automatically to avoid problems when used in GET request 2015-11-17 11:59:30 +01:00
Flavio Copes
a1ee3cf4e4 Avoid using our own hash, let PHP use its own for password_hash, fix #445 2015-11-17 11:59:02 +01:00
Andy Miller
e96445abe3 Added append_url_extension option to system/page headers. 2015-11-16 21:33:24 -07:00
Andy Miller
c22fae0d3d just added a comment 2015-11-16 21:33:01 -07:00
Flavio Copes
d888dcd085 Add some methods to ImageMedium to be used by the media manager 2015-11-16 20:15:47 +01:00
Flavio Copes
184cb9ea3a Media Meta blueprint 2015-11-16 20:15:19 +01:00
Flavio Copes
3cf6e8762c Merge pull request #426 from getgrav/feature/nonce
Add nonce functionality
2015-11-13 19:18:29 +01:00
Flavio Copes
f0cdd7c03e Merge branch 'develop' into feature/nonce 2015-11-13 18:24:03 +01:00
Andy Miller
5e40201888 Merge pull request #441 from yaman-jain/removePackageInterface
PackageInterface was deleted #435
2015-11-13 11:03:08 -06:00
Flavio Copes
f2c2debb28 Fix exception message when label is not set 2015-11-13 17:50:04 +01:00
Matias Griese
997c772b7c Make Data classes to implement proper interfaces 2015-11-13 14:09:03 +02:00
Matias Griese
bc4a09f80d Fix undefined variable in Config class 2015-11-13 14:02:06 +02:00
Andy Miller
0e3e7497ac Fix for https://github.com/getgrav/grav-plugin-form/issues/17 2015-11-12 18:31:15 -07:00
Andy Miller
72313ac9ec Merge branch 'feature/new-imagemedium-methods' into develop 2015-11-12 17:40:21 -07:00
yaman-jain
dc80228f0b PackageInterface was deleted #435 2015-11-13 00:48:54 +05:30
Flavio Copes
a83642a7e3 Added a higherQualityAlternative () method to get the highest quality image available (3x or 2x) 2015-11-12 19:15:26 +01:00
Flavio Copes
00d8403095 Allow to get the image quality in addition to setting it 2015-11-12 19:14:52 +01:00
Matias Griese
e1ec8e9742 Fix undefined variable in Config class 2015-11-12 20:09:23 +02:00
Flavio Copes
0725af5367 Handle case login plugin disabled (thanks @hwmaier) 2015-11-12 09:17:22 +01:00
Andy Miller
65e543af02 Merge pull request #434 from yaman-jain/feature/smallfixes
remove duplicate key
2015-11-11 18:24:29 -07:00
Andy Miller
b49e8315eb Merge pull request #439 from enko/patch-1
Use PCRE_UTF8 so unicode strings don't break up.
2015-11-12 00:42:45 +01:00
Tim
c5a89112b4 Use PCRE_UTF8 so unicode strings don't break up.
The `Truncator`-class fails when the truncated text contains unicode characters with a nice exception:

    "DOMDocumentFragment::appendXML(): Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xC3 0xE2 0x80 0xA6"

By using the `PCRE_UTF8` modifier `u` everything is UTF8 and all is fine.
2015-11-12 00:13:21 +01:00
Flavio Copes
94ec474ffa Merge branch 'develop' into feature/nonce 2015-11-11 17:47:57 +01:00
Flavio Copes
da4593fdc1 Drop commented referrer code 2015-11-11 17:13:54 +01:00
Flavio Copes
b8413cefaf Avoid having to deal with slashes in URLs 2015-11-10 17:34:23 +01:00
Flavio Copes
d3097e4fd0 Merge pull request #433 from Sommerregen/patch-3
Fixes #432 (Theme autoloading doesn't seem to work)
2015-11-10 14:32:14 +01:00
yaman-jain
51753f0716 remove unused 'use' statements 2015-11-10 18:24:01 +05:30
yaman-jain
b7ada873b8 remove duplicate key 2015-11-10 17:34:01 +05:30
Benny
ed8b08a9e4 Fixes #432 (Theme autoloading doesn't seem to work) 2015-11-10 11:19:30 +01:00
Flavio Copes
e1fdb6803d Add nonce functionality 2015-11-06 15:31:49 +01:00
Andy Miller
5cb9f2f42f Merge pull request #419 from hwmaier/feature/empty-inline-assets
Don't create <style> or <script> tags for empty inline CSS or inline JS
2015-11-06 10:08:10 +05:30
Flavio Copes
fcf48ed2e5 Merge pull request #420 from bariscelik/develop
added "Turkish" language
2015-11-05 09:16:36 +01:00
Barış ÇELİK
050512536a added "Turkish" language 2015-11-05 08:42:24 +03:00
Henrik Maier
99207fca13 Don't create <style> or <script> tags for empty inline CSS or inline JS 2015-11-05 13:37:06 +10:00
Flavio Copes
55890b4fd8 Merge branch 'develop' into feature/introduce-user-groups 2015-11-04 14:54:56 +01:00
Flavio Copes
6fdfaccc92 Add blueprints 2015-11-04 14:54:47 +01:00
Flavio Copes
76e01e7aea Minor fix 2015-11-04 14:44:21 +01:00
Flavio Copes
87378562ea Fix error when logging in with a non-existing username 2015-11-03 14:35:11 +01:00
Andy Miller
77d80f12f3 Fix for untranslated validation messages #246 2015-11-02 17:28:46 -07:00
Flavio Copes
e400207a65 Fix https://github.com/getgrav/grav-plugin-admin/issues/249, password not required any more. If not set, it's not changed. If set, it's changed (if it satisfies the requirements) 2015-11-02 18:57:16 +01:00
Andy Miller
4b68036a1b Fixed assets stream for bin/grav clear 2015-11-01 20:52:14 -07:00
Henrik Maier
a95b716aa7 Return resource even if not physically present 2015-11-01 19:43:54 -07:00
Henrik Maier
dc8efded34 Use streams instead of hardcoded paths for clearCache() 2015-11-01 19:43:53 -07:00
Andy Miller
e016b17276 Revert "Use streams instead of hardcoded paths for clearCache()"
This reverts commit a86ce7cb28.
2015-11-01 19:24:46 -07:00
Andy Miller
b99876f0b4 Revert "Return resource even if not physically present"
This reverts commit b3144ee921.
2015-11-01 19:24:39 -07:00
Andy Miller
66abc842b7 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-11-01 18:34:41 -07:00
Andy Miller
9f36158c67 Merge pull request #405 from hwmaier/feature/trailing-slash
Added support for default routes with a trailing slash
2015-11-01 18:34:31 -07:00
Andy Miller
18c1ca3919 added 'theme' to config containing current theme configuration so now possible to just to {{ config.theme.dropdown_enabled }} #406 2015-11-01 18:32:55 -07:00
Andy Miller
0c729e5b0a latest vendor updates 2015-11-01 13:56:10 -07:00
Andy Miller
55f3b78ab1 Merge pull request #393 from hwmaier/feature/image-height-width
Support for width/height and style attributes to media and image files
2015-11-01 09:43:28 -07:00
Andy Miller
a73b796ca7 Merge pull request #407 from hwmaier/feature/enable-progressive-bug
Clear previously applied operations when doing a reset on image files to avoid calling filters twice
2015-11-01 09:42:29 -07:00
Andy Miller
bb0bca7ef1 Merge pull request #408 from hwmaier/feature/clear-cache
Use streams instead of hardcoded paths for clearCache()
2015-11-01 08:53:54 -07:00
Henrik Maier
b3144ee921 Return resource even if not physically present 2015-11-01 18:55:33 +10:00
Henrik Maier
a86ce7cb28 Use streams instead of hardcoded paths for clearCache() 2015-11-01 17:50:23 +10:00
Henrik Maier
ccf2a780b6 Clear previously applied operations when doing a reset on image files 2015-11-01 10:26:56 +10:00
Henrik Maier
b0c1dbe4b7 Added support for default routes with a trailing slash 2015-10-31 16:21:05 +10:00
Djamil Legato
ec73eef695 Updated comments for subfolders 2015-10-30 10:49:08 -07:00
Andy Miller
467d68344e added a default umask_fix property to system.yaml 2015-10-30 11:42:36 -06:00
Andy Miller
8899b3ebb8 Rewrote nginx.conf to be simpler and more in line with .htaccess 2015-10-30 11:42:08 -06:00
Andy Miller
5478cfaf9f Improved .htaccess security 2015-10-30 11:41:52 -06:00
Andy Miller
4b6a85f30a updated vendor libs 2015-10-30 11:41:03 -06:00
Andy Miller
e62ff07726 Merge branch 'release/1.0.0-rc.4' 2015-10-29 22:11:19 -06:00
Andy Miller
a045107cc7 Merge branch 'release/1.0.0-rc.4' into develop 2015-10-29 22:11:19 -06:00
Andy Miller
c97edb60a5 version update 2015-10-29 22:11:06 -06:00
Andy Miller
695793b752 Merge branch 'release/1.0.0-rc.4' 2015-10-29 21:53:48 -06:00
Andy Miller
c953ffb471 Merge branch 'release/1.0.0-rc.4' into develop 2015-10-29 21:53:48 -06:00
Andy Miller
3d7fa06129 version update 2015-10-29 21:52:52 -06:00
Andy Miller
49d4fbcf3d fix for non-existing page with collection @page: /something format 2015-10-29 21:50:58 -06:00
Andy Miller
fc18a40c35 fixed double bang 2015-10-29 20:03:19 -06:00
Andy Miller
1e81d5e38c whitespace tweak 2015-10-29 16:34:30 -06:00
Andy Miller
daf8b53c0d Merge branch 'release/1.0.0-rc.3' into develop 2015-10-29 14:08:39 -06:00
Andy Miller
8de55a745d Merge branch 'release/1.0.0-rc.3' 2015-10-29 14:08:38 -06:00
Andy Miller
6bf669815d version update 2015-10-29 14:08:09 -06:00
Andy Miller
8ba49e163d version update 2015-10-29 14:06:54 -06:00
Andy Miller
26918d90ab Merge pull request #397 from Sommerregen/patch-2
Addresses # 12 (form-plugin) Trim fields before validation
2015-10-29 11:57:11 -06:00
Benny
929b0806dc Addresses # 12 (form-plugin) Trim fields before validation 2015-10-29 16:58:41 +01:00
Flavio Copes
3e32e61db1 Revert "Add a items() method that returns the Data::items array"
This reverts commit fafd72fcd8.
2015-10-29 14:59:11 +01:00
Flavio Copes
038693bffb Merge pull request #396 from Sommerregen/patch-1
Fix #395
2015-10-29 14:00:54 +01:00
Benny
9445aa43e6 Fix #395 (Problem with default language and slugs that is starting with language name) 2015-10-29 13:44:29 +01:00
Henrik Maier
bb16dbab78 Remove debug error_log output 2015-10-29 13:02:22 +10:00
Andy Miller
658212e7be Merge pull request #392 from nickbalestra/readme
Update README.md
2015-10-28 21:01:56 -06:00
Nick Balestra
e91554770c Update README.md 2015-10-28 19:58:38 -07:00
Henrik Maier
8f9671ad32 Allow width and height attributes to be added to Markdown and Twig image tags 2015-10-29 12:53:00 +10:00
Andy Miller
7f134e39f4 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-10-28 20:52:30 -06:00
Henrik Maier
c87e3f419d Allow inline styles to be added to Markdown and Twig image tags 2015-10-29 12:52:24 +10:00
Andy Miller
07b2767ac9 Changed collection types from .recurse to .descendants 2015-10-28 20:52:22 -06:00
Andy Miller
0ca24a9786 Merge pull request #391 from tuphamnguyen/patch-1
Updated README.md
2015-10-28 20:39:58 -06:00
Tu Pham Nguyen
c84c1366e7 Updated README.md
Just a typo :)
2015-10-28 16:25:29 -05:00
Andy Miller
ebf9bb5c18 Improved collection support #384 2015-10-28 13:33:35 -06:00
Andy Miller
70b67a0805 Created whitelist for fallback route functionality 2015-10-28 10:39:15 -06:00
Andy Miller
545b97716f Merge pull request #387 from hwmaier/feature/asset-stream
Asset management uses now streams rather the constant ASSETS_DIR
2015-10-28 10:12:54 -06:00
Flavio Copes
7e540e0623 Merge branch 'develop' into feature/introduce-user-groups
Use the new isPositive() method to check permissions
2015-10-28 11:00:48 +01:00
Flavio Copes
f7140522f6 Merge pull request #388 from littmus/develop
Typo fixed
2015-10-28 09:56:02 +01:00
littmus
bd2f7088e9 Typo fixed 2015-10-28 17:55:23 +09:00
hwmaier
5260c181a1 Asset management uses now streams rather the constant ASSETS_DIR to configure location. In addition it supports subdirectories for assets location, for example assets/runtime. 2015-10-28 13:15:03 +10:00
Andy Miller
a9538adf2b Merge branch 'release/1.0.0-rc.2' into develop 2015-10-27 14:47:43 -06:00
Andy Miller
8bba0fd332 Merge branch 'release/1.0.0-rc.2' 2015-10-27 14:47:43 -06:00
Andy Miller
abf6d6638e version update 2015-10-27 14:47:27 -06:00
Andy Miller
36e52146f5 changelog updated 2015-10-27 12:35:29 -06:00
Flavio Copes
24eaa24839 Check that label is set prior to access it 2015-10-27 18:30:54 +01:00
Flavio Copes
fafd72fcd8 Add a items() method that returns the Data::items array 2015-10-27 18:30:54 +01:00
Andy Miller
df9b219a16 Merge pull request #386 from hwmaier/feature/onTwigPageVariables
onTwigPageVariables event handler gets Page object passed as Event parameter
2015-10-27 09:49:47 -06:00
hwmaier
5c9c378889 onTwigPageVariables event handler gets Page object passed 2015-10-27 23:04:21 +10:00
Andy Miller
47e1eab6c1 updated bundled composer.phar 2015-10-26 17:31:48 -06:00
Andy Miller
d88f56316d updated changelog 2015-10-26 17:15:25 -06:00
Andy Miller
8b414c388d wrapped_site option in system.yaml 2015-10-26 17:14:58 -06:00
Flavio Copes
acb828eacf Merge pull request #382 from tbreuss/develop
Use of capital and small initial letters
2015-10-26 20:40:31 +01:00
Thomas Breuss
293dfad87e Use of capital and small initial letters 2015-10-26 19:35:08 +01:00
Andy Miller
e4e1927126 Merge pull request #381 from getgrav/feature/check-positive-value
Check a positive value, not just "true"
2015-10-26 11:53:31 -06:00
Flavio Copes
edf6f86cb5 Add a Utils::isPositive(). Use that. 2015-10-26 18:29:22 +01:00
Flavio Copes
d086664a61 Check a positive value, not just "true" 2015-10-26 18:06:28 +01:00
Flavio Copes
b0c171f453 Merge branch 'develop' into feature/introduce-user-groups 2015-10-26 17:48:53 +01:00
Andy Miller
feed15f75b changelog update 2015-10-25 18:46:07 -06:00
Andy Miller
95fd54d909 Moved grav variable into globals and removed from template variables 2015-10-25 16:49:28 -06:00
Andy Miller
79f6380aae improved merging of meta tags into title/alt/class 2015-10-25 16:43:52 -06:00
Andy Miller
8478d690a0 Optimizations to the TAG regex handling for inline CSS/JS 2015-10-25 16:20:01 -06:00
Andy Miller
5db8197db2 use a regex to remove surrounding tags but not inline ones! #376 2015-10-24 22:35:44 -06:00
Andy Miller
8407e5b295 Metadata return a new Data object so nulls are possible #375 2015-10-24 16:01:22 -06:00
Andy Miller
3e3b4548e9 Fix for inline JS and HTML entities #376 2015-10-24 15:21:25 -06:00
Andy Miller
868a61dd34 Fail quietly if file doesn't exist 2015-10-24 14:53:16 -06:00
Andy Miller
a7a5625a8b Revert "Added CSS Group asset support #374"
This reverts commit f65633043a.
2015-10-24 12:19:47 -06:00
Andy Miller
a614c8c7cc Added CSS Group asset support #374 2015-10-24 12:19:22 -06:00
Andy Miller
f65633043a Added CSS Group asset support #374 2015-10-24 12:18:54 -06:00
Djamil Legato
de61d88d29 Synced travis.yml 2015-10-23 16:11:26 -07:00
Djamil Legato
dc57bef5f3 Merge branch 'release/1.0.0-rc.1' 2015-10-23 14:44:38 -07:00
Djamil Legato
9d86c0a9db Merge tag '1.0.0-rc.1' into develop
Release v1.0.0-rc.1
2015-10-23 14:44:38 -07:00
Djamil Legato
2721bb511a Quoting tag for github release 2015-10-23 14:02:52 -07:00
Andy Miller
1e07cb9b5b Merge branch 'release/1.0.0-rc.1' 2015-10-23 14:52:35 -06:00
Andy Miller
39a4a1e9bf Merge branch 'release/1.0.0-rc.1' into develop 2015-10-23 14:52:35 -06:00
Andy Miller
7a56a361a0 version update 2015-10-23 14:52:22 -06:00
Andy Miller
d54359d441 missing semicolons in safeEmailFilter() 2015-10-23 14:12:06 -06:00
Andy Miller
98d0538868 Option to allow all hidden files/folders #306 2015-10-23 10:23:01 -06:00
Andy Miller
f03921690c Created system option for redirect code + allowed [30x] syntax on redirect urls 2015-10-22 14:37:38 -06:00
Andy Miller
46869de29c don't do work if there are no assets found 2015-10-21 18:08:24 -06:00
Andy Miller
b7b29b3f84 Broke out pipeline into two methods for simplicity 2015-10-21 18:03:01 -06:00
Andy Miller
b9e1d9af6e Fix for broken CSS caused by variable overwriting 2015-10-21 17:38:13 -06:00
Andy Miller
edf313a7a2 Fix for empty pipeline asset file 2015-10-21 17:21:14 -06:00
Andy Miller
4f22d1c918 Fix for #373 - pipeline not respecting asset groups 2015-10-21 16:06:56 -06:00
Flavio Copes
67fefb53ad Allow to filter pages by access level 2015-10-21 19:47:06 +02:00
Flavio Copes
0ff5dc0016 Add accessLevels to return the used page access levels 2015-10-21 18:41:34 +02:00
Flavio Copes
ae17a77789 Use config/groups.yaml instead of config/site.yaml 2015-10-21 17:47:39 +02:00
Flavio Copes
5f11ae7482 Allow editing user groups from user form 2015-10-21 12:28:36 +02:00
Flavio Copes
4d33eb2173 Add access to account blueprint 2015-10-21 12:22:04 +02:00
Flavio Copes
fe7873ddbe Allow to remove a group 2015-10-21 12:21:53 +02:00
Flavio Copes
f95a4f5cc6 Move resolve() to Utils. 2015-10-21 12:21:47 +02:00
Flavio Copes
f973b61b5e Change how permissions work: if true in group, but false in user, false has precedence (allows to fine tune removing permissions per-user) 2015-10-21 12:21:23 +02:00
Flavio Copes
f1d4192ae7 Introduce a resolve() function to Utils, used by Group and User to access an array using dot notation 2015-10-21 12:20:45 +02:00
Flavio Copes
fb500d3e1c Handle saving a new group 2015-10-21 11:09:29 +02:00
Andy Miller
98b8f1f9e5 Fix issue with empty yaml not creating an empty array with native YAML parser 2015-10-20 14:39:08 -06:00
Andy Miller
9324847bac Added url_taxonomy_filters to the blueprints 2015-10-20 12:36:42 -06:00
Flavio Copes
14347ebf88 Group object 2015-10-20 19:31:47 +02:00
Flavio Copes
3e0188e40b Group blueprint 2015-10-20 19:31:25 +02:00
Andy Miller
7c6471fe2a Added option to disable url_taxonomy_filters for page collections globally in system.yaml or in content: page header 2015-10-20 10:53:08 -06:00
Andy Miller
647ec528d3 Merge pull request #371 from markioooo/develop
Add dutch language file
2015-10-20 09:10:55 -06:00
Mark de Raaf
667ad5c580 add dutch language file 2015-10-20 16:50:45 +02:00
Flavio Copes
b82f17f367 First draft of group blueprints 2015-10-20 16:36:25 +02:00
Mark de Raaf
2e4866f5fa Add dutch language file nl (nederland) 2015-10-20 16:07:57 +02:00
Flavio Copes
3f28dc59ea Add check 2015-10-20 16:07:04 +02:00
Flavio Copes
77deea8ad4 Allow a user to be assigned to multiple groups 2015-10-20 15:58:07 +02:00
Andy Miller
077ba28706 Added support for collections with @root page and recurse flag 2015-10-19 15:12:21 -06:00
Andy Miller
db2caf4b04 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-10-19 15:05:26 -06:00
Andy Miller
464a65b574 debugger update 2015-10-19 15:05:10 -06:00
Flavio Copes
e27f638fe3 The User authorize method now checks first if the user group the user belongs to has permissions for the resource (single group version) 2015-10-19 20:15:11 +02:00
Flavio Copes
00ae0988ab #368 Block direct access to files and folders beginning with a dot, block access to specific files in the root folder 2015-10-19 20:08:53 +02:00
Andy Miller
ce4350bc63 Fix to address #361 - ability to have multiple collections in a regular list. 2015-10-19 11:18:16 -06:00
Andy Miller
aa60d9f53d Deny direct access to any *.md files (CHANGELOG.md, README.md, etc) 2015-10-19 10:39:18 -06:00
Andy Miller
7cb7891fa7 Always fallback to english if other languages translations are not available. 2015-10-19 10:00:44 -06:00
Andy Miller
3848a266d0 Merge pull request #370 from getgrav/feature/configure-mime-for-downloads
Use media.yaml to determine downloaded files mime type
2015-10-19 09:04:30 -06:00
Flavio Copes
29b8c1d124 Use the 'file' type for some of the recently added mime types
Anything that is an 'image' should be able to have the image
manipulations applied to it. So BMP, Tiff, etc are not valid images in
in this sense. Same goes for Videos, they must be able to be supported
with the tag. -> http://www.w3schools.com/html/html5_video.asp, so
basically that's only: MP4, WebM, and Ogg

Everything else should be under 'files' which are accessible via
media['files'] but not much can be done with them outside of getting
their URL or a simple HTML link
2015-10-19 16:46:26 +02:00
Flavio Copes
813ab70895 Add a remove function to User 2015-10-19 11:39:37 +02:00
Flavio Copes
efcaf00e88 Use media.yaml to determine downloaded files mime type 2015-10-19 10:02:17 +02:00
Andy Miller
5476ef4fa8 Merge pull request #367 from joomline/patch-2
Update ru.yaml
2015-10-16 13:37:23 -06:00
joomline
5857882417 Update ru.yaml
Fix languages
2015-10-16 21:33:07 +02:00
Flavio Copes
fe4d178fb4 Fix #366 SVG content type 2015-10-16 21:24:22 +02:00
Flavio Copes
247e45bfea Merge pull request #365 from aranaur/patch-2
add specific links to 'adding functionality' intro
2015-10-16 15:59:23 +02:00
Drew Gates
b7784a23ff add specific links to 'adding functionality' intro
add links directly to the tabs for plugins and themes on getgrav.org. The first time I loaded the main downloads page I didn't see the plugins/themes tabs because I immediately started scrolling down. It might be worth adding to the bottom of that main page a quick line to the tune of "Looking for plugins or themes? Click here or here."
2015-10-16 09:57:46 -04:00
Flavio Copes
fa4893804e Merge pull request #364 from joomline/patch-1
ru.yaml
2015-10-16 14:52:10 +02:00
joomline
373130d8ac ru.yaml
Russian language for grav cms
2015-10-16 14:43:37 +02:00
Flavio Copes
8e781976eb Fix #362, correct Cache-Control: max-age value 2015-10-16 14:17:44 +02:00
Andy Miller
266b56f947 Updated changelog 2015-10-15 18:15:39 -06:00
Andy Miller
2b8adfee05 Make use of Native YAML parser if available (big speed boost!!) 2015-10-15 17:40:16 -06:00
Andy Miller
d4c4f8593e Updated to latest RocketTheme toolbox 2015-10-15 17:39:22 -06:00
Andy Miller
1f8aa032c4 ensconced leading @-based strings with quotes 2015-10-15 16:34:24 -06:00
Andy Miller
7194f7b674 Updated CHANGELOG 2015-10-15 15:14:12 -06:00
Andy Miller
24db4cfc49 Merge pull request #360 from aranaur/patch-1
formatting
2015-10-15 14:43:48 -06:00
Drew Gates
7781389dea formatting
added a comma.
2015-10-15 16:28:06 -04:00
Andy Miller
30f09994d6 Validate hostname to ensure no nefarious attacks are attempted by manipulating it. 2015-10-15 11:31:32 -06:00
Andy Miller
babd50fb6c Safety check on empty path 2015-10-15 10:23:10 -06:00
Andy Miller
5da88d2751 Ensure error handler is initialized before URI is processed 2015-10-15 10:22:47 -06:00
Andy Miller
1f23f20163 remove multiple slashes in URI 2015-10-15 10:21:56 -06:00
Andy Miller
dadce54a6a Turn off errors by default in preparation for 1.0 2015-10-15 09:58:43 -06:00
Andy Miller
0d3d396229 Various vendor lib updates 2015-10-14 15:44:02 -06:00
Andy Miller
6c39e432d2 Merge pull request #358 from Sommerregen/feature/better-theme-inheritance
Improved theme inheritance to support all kinds of streams
2015-10-14 10:33:27 -06:00
Sommerregen
2a6437a2f1 #357 Improved theme inheritance to support all kinds of streams 2015-10-14 18:22:51 +02:00
Andy Miller
52fcf7c39d Added for consistency #356 2015-10-14 06:07:39 -06:00
Andy Miller
f47d3faea9 fix for redirecting to external URL when under a language #339 2015-10-13 21:49:37 -06:00
Andy Miller
d1e7ec2e22 Merge pull request #353 from Sommerregen/feature/theme-inheritance
Feature/theme inheritance
2015-10-13 17:10:46 -06:00
Andy Miller
1efab799b5 Refactored to make #228 more robust and allow lang to be removed from URL. 2015-10-13 16:58:34 -06:00
Andy Miller
7ad9996cc3 Removed home_redirect settings (conflict with new include_default_lang setting) 2015-10-13 16:53:52 -06:00
Flavio Copes
00ec536761 Add the evaluate Twig function 2015-10-13 23:32:52 +02:00
Andy Miller
3f2d9b42c8 Merge pull request #355 from hwmaier/feature/backupignore
Add a few more common RCS to ignore folders
2015-10-13 11:27:02 -06:00
hwmaier
ce76eeb512 Add a few more common RCS to ignore folders 2015-10-13 19:14:52 +10:00
Andy Miller
1bc4a6f208 Support for a disabling the default language prepend in the URL #228 2015-10-12 17:45:36 -06:00
Sommerregen
8595b7972b Addresses #154 and finalize theme inheritance implementation 2015-10-12 18:47:40 +02:00
Sommerregen
22054e232f Load languages files in the correct way and fallback to parent theme language file else 2015-10-12 18:45:31 +02:00
Flavio Copes
5876b6693a Fix #349, use default language if active language is not set 2015-10-09 12:25:55 +02:00
Andy Miller
9ef501fe0c Merge pull request #346 from Sommerregen/bugfix/load-language-files
Load language files according to stream configurations
2015-10-08 10:14:04 -06:00
Andy Miller
08790aa9a8 Merge branch 'release/0.9.45' 2015-10-08 10:04:00 -06:00
Andy Miller
79f244f012 Merge branch 'release/0.9.45' into develop 2015-10-08 10:04:00 -06:00
Andy Miller
143653e2ce version update 2015-10-08 10:02:59 -06:00
Flavio Copes
ef83d874c3 Make a local copy of the array prior to sorting it, fixes #348 2015-10-08 16:19:34 +02:00
Andy Miller
eb999c3dc9 Merge branch 'release/0.9.44' 2015-10-07 20:49:05 -06:00
Andy Miller
9a455901dd Merge branch 'release/0.9.44' into develop 2015-10-07 20:49:05 -06:00
Andy Miller
c207fe563e version update 2015-10-07 20:48:52 -06:00
Andy Miller
ce8e985e56 Added a check in bin/gpm install command that could cause open_basedir errors. 2015-10-07 16:53:00 -06:00
Andy Miller
0f4c65f689 Fix HHVM error #344 2015-10-07 15:56:29 -06:00
Sommerregen
f332cee568 Load plugins and themes from multiple directories 2015-10-06 19:20:15 +02:00
Sommerregen
0fa53d5f5d Load language files according to stream configurations 2015-10-06 19:19:42 +02:00
Flavio Copes
e5933811fd Fix for repositories not reachable, fixes #345 2015-10-06 18:18:00 +02:00
Andy Miller
9ae506ad07 strip tags is redundant after a urldecode 2015-10-06 09:51:07 -06:00
Andy Miller
12101f6014 Address an XSS vulnerability #15 2015-10-06 09:02:01 -06:00
Andy Miller
93af0e7992 modulus filter 2015-10-05 16:34:22 -06:00
Andy Miller
abfa90755e revert pretty twig error as it obscures useful error messages 2015-10-05 16:34:06 -06:00
Flavio Copes
f302c8a5d4 Fix https://github.com/getgrav/grav-plugin-admin/issues/180, urldecode images basenames in ParsedownGravTrait 2015-10-04 14:28:00 +02:00
Flavio Copes
b7da95bc36 Sort available languages in reverse order so region-specific language comes always prior to the general one (e.g. 'en-GB|en-US|en') 2015-10-03 18:05:34 +02:00
Flavio Copes
14b014be20 Check $page is not null prior to calling some method on it 2015-10-03 18:04:55 +02:00
Flavio Copes
9669fe90d7 If the language name is region-specific (longer then 2 chars), then return it in a readable way, e.g. English (US) / English (GB) 2015-10-03 14:07:30 +02:00
Andy Miller
e0d51beb84 PHP 5.4 fix 2015-10-02 16:58:34 -06:00
Flavio Copes
198046a5d3 Use admin helper methods to get the new page defaults 2015-10-01 15:32:52 +02:00
Flavio Copes
16dd2fea4c Handle special case of <? tags in the Truncator, fixes https://github.com/getgrav/grav-plugin-admin/issues/204 2015-10-01 09:17:03 +02:00
Flavio Copes
b8a38c2fb6 Add a isHuman() method to the Browser class with some basic checks on bot or human request 2015-09-30 18:46:22 +02:00
Flavio Copes
9a2906e9db Make sure validating nested arrays works for string values too, fixes https://github.com/getgrav/grav-plugin-admin/issues/196 2015-09-30 15:39:17 +02:00
Andy Miller
578140256b fix for empty media attributes on assets 2015-09-28 18:48:57 -06:00
Andy Miller
c614d27f3e Merge pull request #338 from maelsoucaze/french-translation
Add French translation
2015-09-28 16:39:21 -06:00
Maël Soucaze
538dff16a6 Add French translation 2015-09-29 00:36:19 +02:00
Andy Miller
fd1118d493 updated the .txt version with indexes 2015-09-28 16:24:45 -06:00
Andy Miller
6bb00c73de Merge pull request #334 from jeffam/develop
Add default apache resource for index.php
2015-09-28 16:20:57 -06:00
Andy Miller
cca7eb6c6d Merge pull request #337 from kunago/develop
Adding the Czech translation.
2015-09-28 16:20:15 -06:00
Miroslav Abrahám
a35aad61ee Adding the Czech translation. 2015-09-28 23:56:42 +02:00
Andy Miller
f30a586b5c Merge pull request #335 from Sommerregen/feature/add-css-media-attribute
Add CSS media attribute
2015-09-27 12:30:44 -06:00
Sommerregen
03fadd86f0 Removed unneccessary code 2015-09-27 19:21:02 +02:00
Sommerregen
2d133f3d57 Add CSS media attribute 2015-09-27 11:13:42 +02:00
Andy Miller
fa60b93ff9 Fix for #331 2015-09-25 10:56:14 -06:00
Jeff Amaral
65729d9d86 Add default apache resource 2015-09-19 22:01:27 -04:00
Andy Miller
15d3d8c709 Fix for ports being included in HTTP_HOST 2015-09-18 14:19:52 -06:00
Andy Miller
8b49eca549 style formatting updates 2015-09-18 10:27:36 -06:00
Andy Miller
2cd2cb0480 added -y option to bin/gpm update #333 2015-09-18 10:27:23 -06:00
Andy Miller
5c1112f552 style format updates 2015-09-18 10:26:31 -06:00
Andy Miller
f84363fbf1 Take into account HTTP_HOST before SERVER_NAME #188 2015-09-18 08:10:01 -06:00
Flavio Copes
3afce91504 Merge pull request #332 from getgrav/feature/fix-saving-array-fields
Fix saving array fields
2015-09-18 14:26:21 +02:00
Flavio Copes
57b18edb55 Fix saving array fields 2015-09-18 14:13:23 +02:00
Flavio Copes
2c278c1fde Fix saving pages when removing the page title and all other header elements 2015-09-17 18:19:42 +02:00
Flavio Copes
1ae743e60c Merge pull request #330 from stell/develop
started german language file
2015-09-17 14:14:05 +02:00
Tom Bohacek
3f701f8c55 Update de.yaml 2015-09-17 14:09:55 +02:00
Tom Bohacek
cff36d7cde Create de.yaml 2015-09-17 14:04:27 +02:00
Flavio Copes
4153dbb8e5 Allow translations for the twig nicetime filter. Provide italian translation. Refs #324 2015-09-17 13:51:56 +02:00
Flavio Copes
d2ee4310e6 Merge pull request #329 from dimayakovlev/develop
Change nativeName for Russian language
2015-09-17 09:35:36 +02:00
Andy Miller
575282dbe8 Added Redis back 2015-09-16 17:02:39 -06:00
Andy Miller
2f3c5b59a5 url decode to allow complex syntax in actions 2015-09-16 16:21:40 -06:00
Дмитрий Яковлев
fb91c361bc Merge pull request #1 from dimayakovlev/dimayakovlev-patch-1
Update LanguageCodes.php
2015-09-17 00:03:53 +03:00
Дмитрий Яковлев
dce8c78882 Update LanguageCodes.php
Change nativeName for Russian language.
2015-09-16 22:38:39 +03:00
Andy Miller
129b5d58d7 Merge pull request #326 from attiks/responsive_image
Fix chaining for sizes and derivatives
2015-09-16 13:26:12 -06:00
Peter Droogmans
9a454a9c89 Fix chaining for sizes and derivatives 2015-09-16 21:16:14 +02:00
Andy Miller
63bb99d2f1 Merge branch 'release/0.9.43' 2015-09-16 12:44:05 -06:00
Andy Miller
60644c38dd Merge branch 'release/0.9.43' into develop 2015-09-16 12:44:05 -06:00
Andy Miller
8ff21e6718 version update 2015-09-16 12:43:51 -06:00
Andy Miller
34a079aae4 Updated changelog again 2015-09-16 12:25:25 -06:00
Andy Miller
a73972f11a missed copy for theme install via CLI GPM 2015-09-16 11:02:02 -06:00
Andy Miller
f18dbbaf4c Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-16 10:42:17 -06:00
Andy Miller
633f0a7c6d changelog update 2015-09-16 10:42:07 -06:00
Andy Miller
3ffd6ed833 Merge pull request #325 from attiks/responsive_image
Responsive Image Derivatives support
2015-09-16 10:06:41 -06:00
Andy Miller
da74bd7428 Fix for broken routable logic #322 2015-09-16 10:01:49 -06:00
Andy Miller
51615f4ada composer version updates 2015-09-16 10:00:57 -06:00
Peter Droogmans
9c0525f292 Add comments 2015-09-16 17:41:26 +02:00
Jelle-S
952ed806ac Add support for derivatives 2015-09-16 17:32:21 +02:00
Andy Miller
86ca9cf01c ok this time, trim properly! 2015-09-15 17:18:23 -06:00
Andy Miller
d4bac5a6da trim to remove any extra dashes 2015-09-15 17:16:21 -06:00
Andy Miller
cfdead2bbf hyphenize the site name when doing a backup 2015-09-15 17:09:18 -06:00
Andy Miller
357ebbb6be added post/preflight processing + copyInstall() method for themes 2015-09-15 16:04:49 -06:00
Andy Miller
3908ada113 fail quietly if you try to remove a folder that doesn't exist 2015-09-15 16:04:17 -06:00
Andy Miller
93ae7fbaee fix for ampersand & in XHTML content 2015-09-15 11:02:39 -06:00
Andy Miller
dbe4bb87d0 fixes for image links with multilang support 2015-09-15 10:12:30 -06:00
Andy Miller
565152dee0 only add language prefix for links, not images. 2015-09-14 22:30:38 -06:00
Andy Miller
29fb88fbdc Revert "prepend active language to convertUrl() used by markdown link handling"
This reverts commit 70831690a5.
2015-09-14 22:20:03 -06:00
Andy Miller
70831690a5 prepend active language to convertUrl() used by markdown link handling 2015-09-14 21:41:56 -06:00
Andy Miller
d90da464b3 Merge branch 'feature/assets_grouped' into develop 2015-09-14 16:20:01 -06:00
Andy Miller
d81b08eda7 Fixes for inline JS leaving empty tags 2015-09-14 14:22:20 -06:00
Andy Miller
37f6bef152 more assets work - added default of 'head' for group in JS 2015-09-14 14:03:55 -06:00
Andy Miller
8ed6ebb0fe typo 2015-09-14 14:03:30 -06:00
Flavio Copes
83ceb1b1f7 Restore static $method variable in GPM response 2015-09-14 15:20:56 +02:00
Flavio Copes
4cef330f0b Fix method doc 2015-09-14 14:51:50 +02:00
Andy Miller
8573c3736a updated to latest toolbox version 2015-09-13 22:33:37 -06:00
Andy Miller
bee065d603 fixed a missed camelCase 2015-09-13 21:25:29 -06:00
Andy Miller
0f1f336c3a updated composer packages 2015-09-13 21:19:20 -06:00
Andy Miller
66d5eab041 Removed Traceable Twig Environment that has been deprecated by the Twig project 2015-09-13 21:19:02 -06:00
Andy Miller
075c5f90cc various analysis fixes 2015-09-13 20:04:47 -06:00
Andy Miller
28b88f1566 various unused things removed 2015-09-13 19:31:38 -06:00
Andy Miller
70e347cfce removed todo's 2015-09-13 19:25:43 -06:00
Andy Miller
42987d96e3 switched out logical operator 2015-09-13 19:22:26 -06:00
Andy Miller
2c85f1cc2b Merge pull request #321 from namaless/patch-1
Fix for some unix only commands not intended to be used on Windows platforms
2015-09-13 10:19:35 -06:00
Pereira Ricardo
35c67d6e8f Use local config file only in non windows system. 2015-09-13 18:10:36 +02:00
Pereira Ricardo
c91d06e4c6 Use local config file only in non windows system. 2015-09-13 18:09:03 +02:00
Pereira Ricardo
b991bf5301 Added method for validate if the system is windows 2015-09-13 18:06:53 +02:00
Andy Miller
d2ecdf2016 Merge pull request #320 from DonLiborio/develop
New Audio Medium added
2015-09-13 10:00:14 -06:00
DonLiborio
c27497dd16 Added new Audio Medium 2015-09-13 12:30:55 -03:00
unknown
da58ff3d7a New class AudioMedium added 2015-09-13 12:19:13 -03:00
Andy Miller
e366cdfb05 Merge branch 'hotfix/0.9.42' 2015-09-11 16:29:33 -06:00
Andy Miller
e92e9296c7 Merge branch 'hotfix/0.9.42' into develop 2015-09-11 16:29:33 -06:00
Andy Miller
67d17080e6 version update 2015-09-11 16:29:19 -06:00
Andy Miller
345ed1178c missing return statement 2015-09-11 16:27:53 -06:00
Andy Miller
e54c614f9f Merge branch 'release/0.9.41' into develop 2015-09-11 13:27:00 -06:00
Andy Miller
f8c02d065e Merge branch 'release/0.9.41' 2015-09-11 13:26:59 -06:00
Andy Miller
07fe7f4f89 typos 2015-09-11 13:26:38 -06:00
Andy Miller
546bb9bb13 version update 2015-09-11 13:25:13 -06:00
Andy Miller
5208304ef6 Fix for modular template types not getting found 2015-09-11 12:21:36 -06:00
Andy Miller
9ce5cc8f77 Added logic for configuring redirect in admin 2015-09-11 10:47:26 -06:00
Andy Miller
bef9e3c5ce Add simple redirect: header option for Page 2015-09-11 10:21:25 -06:00
Andy Miller
572bb429ce Fix for #317 markdown_extra: overriding markdown:extra: 2015-09-11 09:38:32 -06:00
Andy Miller
955e985f4d Merge pull request #316 from getgrav/feature/conform-to-authorize
Conform to authorize
2015-09-11 09:21:24 -06:00
Flavio Copes
fab8667dd4 Fix typo 2015-09-11 15:14:23 +02:00
Flavio Copes
03a8baf51c Order twig filters and functions by name 2015-09-11 15:13:01 +02:00
Flavio Copes
1f2f259554 Conform to authorize 2015-09-11 14:59:29 +02:00
Flavio Copes
989f5f5b61 Check to prevent error when Grav cannot reach the remote 2015-09-10 22:33:57 +02:00
Flavio Copes
063b31e7e6 Added authorize twig extension 2015-09-10 21:29:18 +02:00
Andy Miller
9abbb85b4a update composer.lock file with new versions 2015-09-10 12:49:56 -06:00
Andy Miller
2ecebd14b0 added check for mbstring support 2015-09-10 12:49:38 -06:00
Andy Miller
2f38277993 Refactored the truncate and truncateHTML methods. new 'word-safe' versions and UTF8 compatible. #313 #315 2015-09-10 12:49:19 -06:00
Andy Miller
faf690b833 Fixed all() not actually returning all pages... 2015-09-09 19:37:48 -06:00
Andy Miller
506517901d Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-09 15:01:55 -06:00
Andy Miller
2a1f5500bd translate message 2015-09-09 15:01:47 -06:00
Flavio Copes
38fad35119 Add ofOneOfTheseTypes() to Collection 2015-09-09 21:18:14 +02:00
Andy Miller
502eab85bf add support for yaml toggle to save in yam format 2015-09-09 13:07:01 -06:00
Flavio Copes
567169c4cb Add ofType() method to Collection, to filter collections by type 2015-09-09 09:27:17 +02:00
Andy Miller
cdc3f45257 Just filter published 2015-09-08 17:49:15 -06:00
Andy Miller
f7ff0f8ad5 fix typos in publish/unpublish date fields 2015-09-08 17:43:50 -06:00
Andy Miller
f9ac87db3a new editable select drop down for default date format 2015-09-08 17:43:23 -06:00
Andy Miller
b712174136 Merge pull request #310 from mufac/patch-3
Fix bug in newuser command
2015-09-08 11:12:24 -06:00
Andy Miller
81ca34ea1d Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-08 11:07:45 -06:00
Andy Miller
27a2f462a0 fix for page name and multilang 2015-09-08 11:07:38 -06:00
mufac
986664a766 Fix bug in newuser command
grav newuser was setting password to null irrespective of what was entered at the console
2015-09-07 21:34:55 -05:00
Andy Miller
3a4bea928a Merge pull request #309 from vitorgalvao/patch-1
nginx.conf: cosmetic fixes
2015-09-07 18:02:06 -06:00
Vítor Galvão
0ad8c43c7b nginx.conf: cosmetic fixes 2015-09-08 00:58:55 +01:00
Andy Miller
87ddd619de Added the ability to set the default PHP locale and override via multilang config #299 2015-09-07 16:54:48 -06:00
Andy Miller
5827fe4a22 minor refactor 2015-09-07 15:28:05 -06:00
Andy Miller
bd06842375 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-07 15:15:28 -06:00
Andy Miller
71c8dcb595 fix for multisite routing 2015-09-07 15:15:18 -06:00
Andy Miller
1b76486bff Added configurable ignore files/folders 2015-09-07 15:14:57 -06:00
Andy Miller
7b1d5efe0d Merge pull request #308 from nunull/develop
[bin/grav newuser] Hide input when prompting for password (Fixes #307)
2015-09-07 15:00:15 -06:00
Timm Albers
9d7a46fe94 [bin/grav newuser] Prompt twice for password since input is hidden (Fixes #307) 2015-09-07 19:18:26 +02:00
Timm Albers
e494c87e28 [bin/grav newuser] Hide input when prompting for password (Fixes #307) 2015-09-07 18:10:51 +02:00
Andy Miller
6215f148b5 underlines back in site.yam config 2015-09-07 09:23:26 -06:00
Andy Miller
7f35c69b12 Merge pull request #305 from getgrav/feature/work-on-form-plugin
Work related to the Form plugin
2015-09-07 09:19:15 -06:00
Andy Miller
0688909fb7 simple implementation of multiple content collections for a page 2015-09-06 12:59:34 -06:00
Andy Miller
a5e2f76cb8 @taxonomy collection should only get non-modular and published pages 2015-09-06 10:58:14 -06:00
Andy Miller
119e52fa15 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-05 19:20:50 -06:00
Andy Miller
083ef6d474 Added routable logic so modular pages are not routable by default (as intended!) 2015-09-05 19:20:43 -06:00
Andy Miller
d7bbbb2d76 Merge pull request #301 from getgrav/allow-validate-pages-from-outside-admin
Allow validating a page from outside the admin plugin
2015-09-05 12:45:13 -06:00
Flavio Copes
2fa9f79962 Allow validating a page from outside the admin plugin
This change allows a plugin to call validate() (which in turn calls blueprints()) on a page from the front, without needing the admin plugin to be active and set in the Grav object.
2015-09-05 11:55:22 +02:00
Andy Miller
8fdac33219 fix for themes with multiple stream prefixes 2015-09-04 09:42:44 -06:00
Flavio Copes
d3e4adb3c4 Renamed uploads form field to pagemedia 2015-09-04 16:59:29 +02:00
Flavio Copes
469ab56b64 Add a string Twig function that renders arrays as json_encoded strings, and just outputs other values (used by the form plugin) 2015-09-04 14:59:41 +02:00
Andy Miller
89c694443d Better twig error msg (part 2) 2015-09-03 16:45:07 -06:00
Andy Miller
6fd95154bb Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-03 12:01:53 -06:00
Andy Miller
4de2665192 Truncator improvements 2015-09-03 12:01:43 -06:00
Flavio Copes
23d38083f6 Merge pull request #297 from getgrav/work-on-images
Correctly generate 2x image too and make it available to srcset, fixes #133
2015-09-03 15:13:07 +02:00
Flavio Copes
0ae486737f Correctly generate 2x image too and make it available to srcset, fixes #133 2015-09-03 15:12:02 +02:00
Flavio Copes
cd3aa54a12 Focus on frontmatter in expert mode 2015-09-03 13:20:52 +02:00
Andy Miller
ec55020f77 Filter to save dates based on default format if it has been set 2015-09-02 17:17:21 -06:00
Andy Miller
d4461f075b Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-09-02 15:29:50 -06:00
Andy Miller
f67bb675a1 Added support for custom page date format: https://github.com/getgrav/grav-plugin-admin/issues/135 2015-09-02 15:29:41 -06:00
Andy Miller
a084f804f2 Merge pull request #295 from mufac/patch-2
Set default when config option is empty
2015-09-01 18:59:11 -06:00
mufac
a898f97d21 Set default when config option is empty
The default config option is an empty array, which causes get() to return null, which can lead to an error with the type of the second argument to in_array().
2015-09-01 19:50:00 -05:00
Andy Miller
9c3b062cff changed order to address redirect loop 2015-08-31 21:47:58 -06:00
Andy Miller
dd00f34cb8 Default to performing a 301 redirect for URIs with trailing slashes 2015-08-31 21:28:00 -06:00
Andy Miller
b9e24712a8 added missing accounts/ folder 2015-08-31 18:07:04 -06:00
Andy Miller
1ebbef257e Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-08-31 17:57:23 -06:00
Andy Miller
e7aca138d3 Log all from debug onward 2015-08-31 17:57:09 -06:00
Djamil Legato
f0ed155814 Added support for automatic package release of grav-admin 2015-08-31 16:54:38 -07:00
Andy Miller
838ddabd3c slight modification to not include ellipsis on sentence break 2015-08-31 16:26:29 -06:00
Andy Miller
5f3c20b71b updated truncate filter with a new optional toggle to enable/disable going up to a break character 2015-08-31 16:20:02 -06:00
Andy Miller
76bff5a1a9 moved dependencies to master 2015-08-31 15:41:02 -06:00
Andy Miller
e7270f17fd Merge branch 'release/0.9.40' 2015-08-31 10:22:34 -06:00
Andy Miller
aa709c4089 Merge branch 'release/0.9.40' into develop 2015-08-31 10:22:34 -06:00
Andy Miller
807032b0f0 version update 2015-08-31 10:21:24 -06:00
Andy Miller
b2597d1058 safety check when clearing cache paths 2015-08-31 09:02:07 -06:00
Andy Miller
56bb8c0304 explicit null value 2015-08-31 08:09:30 -06:00
Andy Miller
c4a51c2c9f Merge pull request #294 from fantasticme/develop
.htaccess hardening
2015-08-30 10:21:16 -06:00
Ionut Morariu
c3cdf0238a .htaccess hardening 2015-08-30 18:16:20 +02:00
Andy Miller
f28fc339df Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-08-29 10:40:49 -06:00
Andy Miller
45be24192e Support for page file name + template override 2015-08-29 10:40:43 -06:00
Flavio Copes
bb2929dfe9 Fix space between words 2015-08-29 17:05:40 +02:00
Flavio Copes
5b2cf24840 Merge pull request #289 from getgrav/autofocus-page-title
Put autofocus on page title
2015-08-29 15:42:33 +02:00
Andy Miller
19688ffcb5 Merge pull request #288 from getgrav/fix-123
Solve an issue with apostrophes in the taxonomy name
2015-08-29 07:28:35 -06:00
Flavio Copes
0baab3ae9f Put autofocus on page title
Refs https://github.com/getgrav/grav-plugin-admin/issues/122
2015-08-29 13:23:19 +02:00
Flavio Copes
9364c07c81 Solve an issue with apostrophes in the taxonomy name
Fixes #123
2015-08-29 11:58:24 +02:00
Flavio Copes
b46ab8aa5b Fix order by select size 2015-08-29 10:47:29 +02:00
Andy Miller
9d70a93619 Added a few filters 2015-08-28 13:39:57 -06:00
Andy Miller
688ec17cba some fixes for no siblings 2015-08-28 11:38:52 -06:00
Andy Miller
8bdef0dc57 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2015-08-28 10:59:59 -06:00
Andy Miller
826fa8e225 switch to 'install' by default and use composer.lock 2015-08-28 10:59:54 -06:00
Flavio Copes
c41e58b1d7 Fix translation label 2015-08-28 16:52:18 +02:00
Flavio Copes
198c181ed7 Add help to the username blueprint 2015-08-28 16:01:42 +02:00
Flavio Copes
665974a21e Prevent error, check if $child_page is not null 2015-08-28 15:55:21 +02:00
Flavio Copes
be4af2403b Better explanation for bin/grav newuser username format 2015-08-28 15:55:21 +02:00
Andy Miller
19a4480b96 Merge pull request #284 from mufac/patch-1
Fix issue with date format for PHP 5.1.0+
2015-08-26 15:20:34 -06:00
mufac
f58df3c48f Fix issue with date format for PHP 5.1.0+
As of PHP 5.1.0 the character 'o' represents the ISO-8601 year number in a date format. Therefore the 'o' needs to be escaped to avoid being converted to a year in the admin > configuration > system > long/short date format pulldown menu.

I should note that this fixes the issue for English, but you might want to consider moving the date format into a language string in order to provide better multi-language support.
2015-08-26 15:50:55 -05:00
Andy Miller
a19e20e347 Better error message on incompatible template file 2015-08-26 11:20:14 -06:00
Andy Miller
cb074afd85 Merge branch 'release/0.9.39' 2015-08-25 10:45:28 -06:00
Andy Miller
03613481a3 Merge branch 'release/0.9.39' into develop 2015-08-25 10:45:28 -06:00
Andy Miller
7e3226e596 version update 2015-08-25 10:45:04 -06:00
Flavio Copes
c7c81e5380 Solve issue in page.active for the homepage. Fixes #279 2015-08-25 17:37:16 +02:00
Flavio Copes
b3c1584630 Fix issue with session name containing invalid characters
The underscore '_' is not a valid char for session name. Not sure why I
was only getting this error in Opera
https://stackoverflow.com/questions/3185779/the-session-id-is-too-long-o
r-contains-illegal-characters-valid-characters-are
2015-08-25 11:06:38 +02:00
Andy Miller
889a1a147c Merge branch 'release/0.9.38' into develop 2015-08-24 15:06:40 -06:00
Andy Miller
795268a98b Merge branch 'release/0.9.38' 2015-08-24 15:06:39 -06:00
Andy Miller
70a36602e8 version update 2015-08-24 14:46:14 -06:00
Andy Miller
46736becc7 updated 2015-08-24 14:45:05 -06:00
Andy Miller
af160168f1 Revamped metadata to use same customizable array system as the site.yaml 2015-08-24 13:41:28 -06:00
Flavio Copes
6e21a3f56a Drop @deprecated line 2015-08-24 09:07:30 +02:00
Andy Miller
86f29ebe57 Fix for trailing / not matching active and activeChild paths #277 2015-08-21 13:19:24 -06:00
Andy Miller
cf867d29a0 Added symfony dump() method for debugging 2015-08-21 13:13:33 -06:00
Andy Miller
93a3d800ef remove required to sync with normal 2015-08-21 11:39:20 -06:00
Matias Griese
056ad33f50 Fix blueprint @extends with external context (regression from #38) 2015-08-21 19:04:44 +03:00
Andy Miller
e750e1b183 Merge pull request #276 from Sommerregen/patch-1
Fix error from grav-plugin-admin issue # 80
2015-08-21 09:04:10 -06:00
Andy Miller
257949505c Merge pull request #275 from akoebbe/feature/arbitrary-date-collection-filter
Feature/Allow the use of custom datetime fields for collection filtering
2015-08-21 09:01:51 -06:00
Andrew Koebbe
b688660ff3 Move the $field param to the end of the method for backward compatibility. 2015-08-21 09:54:14 -05:00
Benny
ddc98f99da Fix error from gav-plugin-admin issue # 80
This change fixes an issue connected with https://github.com/getgrav/grav-plugin-admin/issues/80 that occurred when installing plugins removing the duplicate slash in the beginning due to https://github.com/getgrav/grav/blob/develop/system/defines.php#L17 .
2015-08-21 14:15:31 +02:00
Andrew Koebbe
8e41b51cb7 Allow the use of any custom page date field for dateRange collection filtering. 2015-08-20 23:37:29 -05:00
Andy Miller
0675ce718c better/safer parent route logic 2015-08-20 17:38:07 -06:00
Andy Miller
25ac6a0600 Merge branch 'feature/work-on-languages-workflow' into develop 2015-08-20 15:38:40 -06:00
Andy Miller
e8ca646070 updated toolbox 2015-08-20 15:38:21 -06:00
Flavio Copes
ce8fd4d3ef Add pathPrefixedByLangCode to Utils, fix generating pages routes for translated languages 2015-08-20 19:55:00 +02:00
Matias Griese
26d1973110 Fix blueprints loading (regression from #38) 2015-08-20 20:45:39 +03:00
Matias Griese
c4cd355f5b Add support for extending blueprints with its parent (single level only) 2015-08-20 12:23:41 +03:00
Matias Griese
4a59b8ae43 Fix logic to list and load blueprints by using streams (#38) 2015-08-20 11:35:01 +03:00
Andy Miller
c3f2ddf3e4 fixed a typo 2015-08-19 18:11:02 -06:00
Andy Miller
8cbb86045e Added a simple base_url with no language (useful for admin) 2015-08-19 14:58:42 -06:00
Flavio Copes
e54b202de3 Add translatedLanguages and untranslatedLanguages methods to Page class 2015-08-19 14:30:09 +02:00
Andy Miller
6466241cbb unset plaintext pw and hash on user save 2015-08-18 19:07:34 -06:00
Flavio Copes
dbccdbd51f Merge branch 'feature/translate-blueprints' into develop 2015-08-18 20:33:21 +02:00
Flavio Copes
3141336c9b Translate system config 2015-08-18 16:59:17 +02:00
Flavio Copes
07bf588aa4 All pages blueprints translated 2015-08-18 16:18:01 +02:00
Flavio Copes
ce84648689 Translate page default blueprint 2015-08-18 15:51:53 +02:00
Flavio Copes
cdef7d62c8 Translate user blueprints, config/media, config/site 2015-08-18 15:16:06 +02:00
Flavio Copes
440c27d27b blueprints/user/account.yaml 2015-08-18 14:45:10 +02:00
Andy Miller
e82b90b117 better lang chooser 2015-08-17 18:21:04 -06:00
Flavio Copes
1ecf147764 Merge pull request #270 from getgrav/feature/translate-admin
Feature/translate admin
2015-08-17 16:33:36 +02:00
Andy Miller
58b9ecf030 Added ordering to raw blueprints 2015-08-16 14:06:25 -06:00
Andy Miller
0e28dc835e Added translation for frontmatter error 2015-08-16 13:51:04 -06:00
Flavio Copes
8800f48312 Add requirements to the readme, fixes #264 2015-08-16 09:10:53 +02:00
Andy Miller
6315004a24 change title to slug 2015-08-14 22:16:40 -06:00
Andy Miller
ee63192512 catch header parse exception and create a simple page so site doesn't break 2015-08-14 16:30:18 -06:00
Andy Miller
1c9dec6ea4 unset route and slug 2015-08-14 15:01:13 -06:00
Andy Miller
6fd85c8dbd Stuff needed for page vibility/ordering setting 2015-08-14 14:30:11 -06:00
Andy Miller
80e4ed1746 Tweak the default layout 2015-08-14 14:29:04 -06:00
Flavio Copes
06b5a93fe9 Add language to user blueprint 2015-08-13 18:30:17 +02:00
Flavio Copes
7ca2e9b5f0 Merge branch 'develop' into feature/translate-admin 2015-08-13 18:30:02 +02:00
Djamil Legato
274ff3d8c0 Additional slug fixes with GPM (#44). Increased spaces in GPM CLI 2015-08-12 10:41:47 -07:00
Flavio Copes
42e6d587d8 Fix slug to be lowercase 2015-08-12 15:35:45 +02:00
Andy Miller
c13daf7780 Merge branch 'release/0.9.37' 2015-08-12 06:31:53 -06:00
Andy Miller
e47b3e73d3 Merge branch 'release/0.9.37' into develop 2015-08-12 06:31:53 -06:00
Andy Miller
38a7b0d7ab version update 2015-08-12 06:31:07 -06:00
Andy Miller
e13c5c214a reverted !empty to isset and put in some casting logic to handle empty/invalid values 2015-08-12 06:22:49 -06:00
Andy Miller
a975786b7b fix for empty string header values throwing errors 2015-08-12 05:57:14 -06:00
Andy Miller
0bccaf5458 Merge branch 'release/0.9.36' 2015-08-11 19:38:18 -06:00
Andy Miller
9b760da29b Merge branch 'release/0.9.36' into develop 2015-08-11 19:38:18 -06:00
Andy Miller
5a7ad45a7e version update 2015-08-11 19:38:07 -06:00
Andy Miller
3cf5c6e4ab Use GRAV_ROOT for session identifier #53 2015-08-11 15:46:48 -06:00
Flavio Copes
659517001b Revert "Force english in admin"
This reverts commit 8962d2b1e4.
2015-08-11 10:14:08 +02:00
Flavio Copes
4c94776ace Minor code improvements and typos 2015-08-11 10:08:45 +02:00
Andy Miller
76c4da7945 support user and system languages 2015-08-08 14:44:30 -06:00
Andy Miller
aacd9732f2 Added a newuser command to make creating users simpler 2015-08-08 11:24:18 -06:00
Andy Miller
16b2cccea4 Use sessions for admin even when sessions are disabled 2015-08-07 15:15:28 -06:00
Djamil Legato
8922f6a486 Added isSymlink logic to determine if Grav is symbolically linked or not. 2015-08-07 13:33:25 -07:00
Flavio Copes
d28656ce4b Update system blueprint to use the current date in the date format select, refs getgrav/grav-plugin-admin#26 2015-08-07 21:59:50 +02:00
Flavio Copes
8c4f6d68e8 Better example for date format, fixes getgrav/grav-plugin-admin#26 2015-08-07 21:16:17 +02:00
Andy Miller
972987c515 updated composer.phar 2015-08-07 13:10:23 -06:00
Andy Miller
09fc5b768e Merge branch 'feature/update-pages-blueprint' into develop 2015-08-07 11:57:14 -06:00
Andy Miller
77caad9944 refactor recurse with public method to reset pages cache 2015-08-07 08:13:29 -06:00
Flavio Copes
5c367ac598 Update pages blueprint to add toggleable and remove the global options 2015-08-07 12:11:01 +02:00
Andy Miller
867445cbd8 refactor the blueprints fallback a little 2015-08-06 22:26:51 -06:00
Andy Miller
65df265e30 Added a default type as a default type :) 2015-08-06 22:26:19 -06:00
Andy Miller
11869ad4ec Merge branch 'release/0.9.35' 2015-08-06 18:38:48 -06:00
Andy Miller
62b8486431 Merge branch 'release/0.9.35' into develop 2015-08-06 18:38:48 -06:00
Andy Miller
11fc34cfed version update 2015-08-06 18:38:35 -06:00
Andy Miller
b5717c2cbb Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Djamil Legato (1) and Sommerregen (1)
# Via Andy Miller (1) and Djamil Legato (1)
* 'develop' of https://github.com/getgrav/grav:
  Fixed GPM issue when using cURL throwing an `Undefined offset: 1` exception
  Fix #248 (Plugin language interference) and fixed summary
2015-08-06 18:31:21 -06:00
Andy Miller
0c085a5aab Override save to not store the username field 2015-08-06 18:31:08 -06:00
Andy Miller
5cee23cbfa Added new unsetRoute() to allow route() to rebuild 2015-08-06 18:30:50 -06:00
Andy Miller
1e168b3100 made username disabled 2015-08-06 18:30:24 -06:00
Djamil Legato
018f7a6dec Fixed GPM issue when using cURL throwing an Undefined offset: 1 exception 2015-08-06 11:31:37 -07:00
Andy Miller
a62e88f22b Merge pull request #249 from Sommerregen/bugfix/plugin-language-interference
Fix #248 (Plugin language interference) and fixed summary
2015-08-06 12:20:52 -06:00
Sommerregen
dc5ba9eff4 Fix #248 (Plugin language interference) and fixed summary 2015-08-06 19:59:20 +02:00
Andy Miller
4bebdfe0c7 fixed metadata merging (hopefully!) 2015-08-05 22:27:26 -06:00
Andy Miller
f8fd065192 removed unused body_classes in modular type 2015-08-05 22:26:57 -06:00
Andy Miller
9d38d0818b fix robots field 2015-08-05 22:26:41 -06:00
Andy Miller
a1ad9b7f4d list of pages should show all except root 2015-08-05 18:06:50 -06:00
Andy Miller
29cb55e91c visible toggle and help commands on new page 2015-08-05 18:06:07 -06:00
Andy Miller
0687d2ff78 added body_classes to modular type 2015-08-05 18:05:34 -06:00
Andy Miller
cd04572b78 using new templates field type 2015-08-05 18:04:57 -06:00
Andy Miller
6bb47124a9 added body classes 2015-08-05 18:03:34 -06:00
Andy Miller
1a21186ba1 removed duplicate hidden type field 2015-08-05 18:03:16 -06:00
Andy Miller
82d1193090 removed required from title 2015-08-05 18:02:48 -06:00
Andy Miller
ea76ac024a Merge pull request #244 from notklaatu/develop
added conf settings for running grav in sud dir, on nginx
2015-08-05 09:39:21 -06:00
Klaatu
ff52d61322 added conf settings for running grav in sud dir, on nginx 2015-08-05 11:44:38 +12:00
Andy Miller
83e970731e Merge branch 'release/0.9.34' into develop 2015-08-04 16:53:33 -06:00
Andy Miller
c6ea5eb5e9 Merge branch 'release/0.9.34' 2015-08-04 16:53:32 -06:00
Andy Miller
aa7a4111e6 version update 2015-08-04 16:53:16 -06:00
Andy Miller
2b01f832bd Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Sommerregen
# Via Andy Miller (1) and Sommerregen (1)
* 'develop' of https://github.com/getgrav/grav:
  Add language property to page
2015-08-04 09:41:21 -06:00
Andy Miller
1401102396 more extensive extension() method 2015-08-04 09:40:59 -06:00
Andy Miller
8963d024a6 more dynamic extension() method 2015-08-04 09:40:28 -06:00
Andy Miller
bb5e7b508f Merge pull request #243 from Sommerregen/feature/add-language-property-to-page
Add language property to page
2015-08-03 16:46:13 -06:00
Andy Miller
bfc9efea92 added new arrayFilterRecursive 2015-08-03 16:11:02 -06:00
Andy Miller
75feea3e75 back to Symfony 2.7.3 2015-08-03 16:10:16 -06:00
Sommerregen
e142f5ee61 Add language property to page 2015-08-03 22:08:07 +02:00
Djamil Legato
9746c2db5d Move yaml missing 2015-08-03 12:43:24 -07:00
Andy Miller
311598e3a6 Merge pull request #242 from flaviocopes/patch-1
Fix moving the page to the root
2015-08-03 08:15:26 -06:00
Andy Miller
109d19f02e changed order 2015-08-03 08:01:27 -06:00
Flavio Copes
bc5ea13821 Fix moving the page to the root
$parent->route() returned null when moving to the root
2015-08-03 10:19:56 +02:00
Andy Miller
e9cc34f481 Merge pull request #241 from aptly-io/fix_twig_vars_sideeffect
Fix #240 I'm ok with this.
2015-08-02 20:07:31 -06:00
franchan
9f254b6c84 Fix #240
$page->content() fires the onPageContentRaw event.
A plugin handler for this event might want to update the twig variable
with additional information during twig rendering.

However, $twig_vars takes a copy of $Twig->twig_vars and
therefore never sees any later changes in $Twig->twig_vars.

By moving the method call $page->content() earlier,
potential twig variable changes from a plugin get now inside this
local variable copy.
2015-08-02 23:52:48 +02:00
Andy Miller
4f442d1edc support admin overrides of blueprints 2015-08-02 12:13:08 -06:00
Andy Miller
a1a10ab23d more tweaks for blueprints 2015-08-01 17:40:58 -06:00
Andy Miller
21beefd387 added array() function to cast as an array 2015-08-01 13:37:32 -06:00
Andy Miller
a7e03c9d5c Stopped storing metadata in page header 2015-08-01 13:37:12 -06:00
Andy Miller
49781f9717 made metadata optional 2015-08-01 13:36:52 -06:00
Andy Miller
ca12c69741 fix for system lang files 2015-08-01 10:20:15 -06:00
Djamil Legato
333814eab0 Reenabled toggleables for Published 2015-07-31 13:10:51 -07:00
Djamil Legato
c18311eeb2 Moved blog and blog item blueprints out of Grav and into Antimatter theme 2015-07-31 13:10:24 -07:00
Andy Miller
3caa0d1ef5 Merge pull request #237 from flaviocopes/feature/separate-sessions-for-site-and-admin
Feature/separate sessions for site and admin
2015-07-31 11:05:56 -06:00
Flavio Copes
dc56f85881 Separate sessions for site and admin 2015-07-31 18:21:43 +02:00
Flavio Copes
532e035724 Load uri before session 2015-07-31 18:21:06 +02:00
Andy Miller
c3431e1ead Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Flavio Copes
# Via Andy Miller (3) and Flavio Copes (1)
* 'develop' of https://github.com/getgrav/grav:
  Move $session_timeout & $session_path inside the if statement
  Correctly instantiate the Inflector
  Force english in admin
  Refresh session timeout
2015-07-31 08:35:46 -06:00
Andy Miller
3016e77897 loose validation so un-formed values are not lost 2015-07-31 08:35:35 -06:00
Andy Miller
cf69ba0d66 Merge pull request #236 from flaviocopes/patch-4
Correctly instantiate the Inflector
2015-07-31 08:34:27 -06:00
Andy Miller
4e82891779 Merge pull request #232 from flaviocopes/patch-2
Refresh session timeout
2015-07-31 08:33:25 -06:00
Flavio Copes
7fa3e7bf28 Move $session_timeout & $session_path inside the if statement 2015-07-31 16:06:02 +02:00
Flavio Copes
656c23a891 Correctly instantiate the Inflector
$this->grav is not what we expect here. Got a fatal error on `$ bin/gpm` execution
2015-07-31 16:01:52 +02:00
Andy Miller
00f758dd98 Merge pull request #235 from flaviocopes/patch-3
Force english in admin
2015-07-31 07:52:52 -06:00
Flavio Copes
8962d2b1e4 Force english in admin 2015-07-31 15:48:47 +02:00
Flavio Copes
eefb761e98 Refresh session timeout 2015-07-30 19:17:04 +02:00
Andy Miller
9363da137f Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Djamil Legato
# Via Djamil Legato
* 'develop' of https://github.com/getgrav/grav:
  Added support for select multiple attribute in array filter
2015-07-29 22:00:30 -06:00
Andy Miller
c4daae2f95 added new blueprintName() method that takes into account blueprint value passed via a form 2015-07-29 22:00:03 -06:00
Andy Miller
b201b21e46 added blueprint hidden field to standard blueprints 2015-07-29 21:59:24 -06:00
Andy Miller
c959fd9c48 rolled back to composer 2.7.1 due to broken CLI choice method 2015-07-29 21:58:53 -06:00
Djamil Legato
0845b5e28a Added support for select multiple attribute in array filter 2015-07-29 20:43:13 -07:00
Andy Miller
b9f9570033 minor reformatting 2015-07-29 12:19:56 -06:00
Andy Miller
baa0e73703 updated default yaml 2015-07-29 11:31:50 -06:00
Andy Miller
e97aaccfee added a cache_all option for media images 2015-07-28 20:57:16 -06:00
Andy Miller
f58cfd8571 Merge branch 'feature/blueprint-extend' into develop
Conflicts:
	system/blueprints/config/site.yaml
	system/blueprints/config/system.yaml
2015-07-28 18:36:02 -06:00
Andy Miller
1a43d31c50 whitespace removal 2015-07-28 16:23:49 -06:00
Andy Miller
d244442e70 fixed translations with multiple plugins 2015-07-28 12:11:07 -06:00
Djamil Legato
a009c56271 Supported Language and Taxonomies are now using Selectize tags in admin 2015-07-28 11:08:37 -07:00
Andy Miller
f30af37faf php tidy 2015-07-28 11:10:38 -06:00
Andy Miller
bb4eea7999 missing use statement - issue #230 2015-07-28 04:54:16 -06:00
Andy Miller
e26b80d873 removed some extraneous messages 2015-07-27 08:32:29 -06:00
Andy Miller
b23aa1bc4c tweaks to system blueprint 2015-07-24 17:29:37 -06:00
Andy Miller
e22655b440 updated site.yaml blueprint 2015-07-24 15:16:36 -06:00
Andy Miller
8e57839271 missing some init() checks 2015-07-24 10:55:57 -06:00
Andy Miller
16f779c8f5 changed Inflector from static to class + added multilang support 2015-07-24 10:26:54 -06:00
Andy Miller
bd08d787f2 typo 2015-07-24 08:20:46 -06:00
Andy Miller
df99fe0073 blueprint updates 2015-07-24 08:20:36 -06:00
Andy Miller
7a2fceaee9 renamed translations.fallback property 2015-07-24 08:08:50 -06:00
Andy Miller
bb69656bd7 added base languages config 2015-07-24 08:08:23 -06:00
Andy Miller
5be0618b4d more blueprints progress 2015-07-24 07:50:47 -06:00
Andy Miller
ad00252a4e base translations settings 2015-07-24 07:50:35 -06:00
Andy Miller
84eee30d1f fix for string/array conversion error 2015-07-24 07:50:18 -06:00
Andy Miller
8975c2936c remove unused use that is causing an error 2015-07-23 11:36:43 -06:00
Andy Miller
b64bfc9ab0 more progress on system blueprint 2015-07-23 11:36:26 -06:00
Andy Miller
cc9f5ed096 More validation updates 2015-07-22 15:31:32 -06:00
Andy Miller
2161daa398 Prettier validation messages 2015-07-22 15:31:05 -06:00
Andy Miller
f1a41394ab updates for account validation 2015-07-22 15:30:27 -06:00
Andy Miller
6d5bb6f887 Merge branch 'release/0.9.33' 2015-07-21 13:48:10 -06:00
Andy Miller
9bcf9a7dcd Merge branch 'release/0.9.33' into develop 2015-07-21 13:48:10 -06:00
Andy Miller
6d69f03111 version update 2015-07-21 13:48:00 -06:00
Andy Miller
0b709ddb1a cleanup 2015-07-21 11:50:18 -06:00
Andy Miller
6ba780ba3b support translate taking string or array for key 2015-07-21 11:50:08 -06:00
Andy Miller
f0f24142b2 fix for broken auto-file-extension setting 2015-07-20 18:28:58 -06:00
Andy Miller
a716da14f7 Allow extension to be set manually, else set it from the file 2015-07-20 16:35:33 -06:00
Andy Miller
d8a80479c2 more explicit check for page extension 2015-07-20 16:35:21 -06:00
Andy Miller
8d4a55a3a4 added Vary: Accept-Encoding option. Off by default 2015-07-19 13:22:15 -06:00
Andy Miller
0c0aa94ded routable() now takes published() into account. Re issue #227 2015-07-17 17:31:36 -06:00
Andy Miller
0fd4991dd4 Fix for issue #225 - zip skipping required empty folders 2015-07-17 17:06:20 -06:00
Andy Miller
5f32ea64eb Extended ImageFile to provide event on creation function 2015-07-17 16:06:23 -06:00
Andy Miller
dc6705c74a added a new onImageMediumSaved event - useful for compression services 2015-07-17 14:04:19 -06:00
Andy Miller
4479f251a6 removed pageinit timing - was not doing much 2015-07-17 14:03:30 -06:00
Andy Miller
ac076fb892 fix for twig cache permissions 2015-07-15 10:18:23 -06:00
Andy Miller
503b38c17f fix for #224 - summary delimiter not getting proper position in certain conditions 2015-07-14 22:58:06 -06:00
Andy Miller
7b6680cde2 Merge branch 'release/0.9.32' into develop 2015-07-14 15:03:03 -06:00
Andy Miller
7029edfd58 Merge branch 'release/0.9.32' 2015-07-14 15:03:02 -06:00
Andy Miller
3b3ac68f47 version update 2015-07-14 15:02:49 -06:00
Andy Miller
5e28d04aa6 fixed a typo 2015-07-14 09:06:32 -06:00
Andy Miller
102140b917 Support 'en' translations independent from language support 2015-07-13 21:02:24 -06:00
Andy Miller
17d7e19e84 Added support for http_accept_language #219 2015-07-13 13:01:32 -06:00
Andy Miller
d7b810e87e fix for session active lang and homepage redirects 2015-07-13 12:14:52 -06:00
Andy Miller
3cf44b4c62 added translateArray() functionality 2015-07-13 11:57:20 -06:00
Andy Miller
96a9962895 minor language tweaks 2015-07-13 11:56:47 -06:00
Andy Miller
b2cd4db395 Default generator updated 2015-07-13 11:55:12 -06:00
Andy Miller
015ef2c6ce Fix for #218 - ignore root level page 2015-07-13 11:48:56 -06:00
Andy Miller
0ba1af244d Merge branch 'release/0.9.31' 2015-07-09 17:31:21 -06:00
Andy Miller
547a049140 Merge branch 'release/0.9.31' into develop 2015-07-09 17:31:21 -06:00
Andy Miller
05e0013990 version update 2015-07-09 17:30:26 -06:00
Andy Miller
b9d6f75923 Updated all bin/grav CLI commands to use ConsoleTrait 2015-07-09 17:23:56 -06:00
Andy Miller
07f4cb0892 updated to latest composer.par 2015-07-09 17:23:33 -06:00
Andy Miller
e48be33c6c unified backup command to mimic admin functionality 2015-07-09 17:08:29 -06:00
Andy Miller
b3ba54894e removed useless call 2015-07-09 17:07:52 -06:00
Andy Miller
14753d499d Fix for markdown filter error: Issue #115 2015-07-09 14:47:24 -06:00
Andy Miller
bb348fff94 fix for translations 2015-07-09 11:56:46 -06:00
Andy Miller
c097907098 safety check 2015-07-09 09:44:10 -06:00
Andy Miller
3719bac746 use an array for clarity 2015-07-08 20:05:26 -06:00
Andy Miller
85add10bef better handling of unsupported media types download 2015-07-08 20:04:15 -06:00
Andy Miller
8a7a9d4a45 added a configurable array for unsupported file types to inline rather than download 2015-07-08 20:03:43 -06:00
Andy Miller
875885f647 changed pages.types to be an array 2015-07-08 20:03:04 -06:00
Andy Miller
3af85ed14f added xml, json, css, and js to supported media "file" types 2015-07-08 20:01:55 -06:00
Andy Miller
34f6020e7f Merge branch 'release/0.9.30' 2015-07-08 13:26:01 -06:00
Andy Miller
2a6b96937c Merge branch 'release/0.9.30' into develop 2015-07-08 13:26:01 -06:00
Andy Miller
8861918827 version update 2015-07-08 13:25:50 -06:00
Andy Miller
6212aef8b1 added changelog 2015-07-08 12:59:28 -06:00
Andy Miller
f13c4e916a added option to store active lang in session 2015-07-08 11:39:08 -06:00
Andy Miller
60e183a8c0 Added a language-safe redirect option that appends lang if set 2015-07-08 11:23:51 -06:00
Andy Miller
939449c1b0 Added an option to always redirect to the default route if the route doesn't match default 2015-07-08 11:23:21 -06:00
Andy Miller
5970e5bf5c added ability to specify language to translate 2015-07-07 21:40:07 -06:00
Andy Miller
aee5a38313 don't hard-fail on missing language home alias 2015-07-07 21:27:17 -06:00
Andy Miller
19b2de7040 Use new location for Language file 2015-07-07 18:57:13 -06:00
Andy Miller
20d7ed5421 New Language files 2015-07-07 18:56:59 -06:00
Andy Miller
0dd53aea02 more robust active() and activeChild() methods to support multiple routes 2015-07-07 18:56:40 -06:00
Andy Miller
801d5d361a Add session support into Grav core (was in login plugin) 2015-07-07 14:21:30 -06:00
Andy Miller
dc7362c70b various sensiolab fixes 2015-07-06 21:50:05 -06:00
Andy Miller
fc3c0e7fa5 Merge branch 'feature/better_language_yaml_support' into develop 2015-07-06 21:30:51 -06:00
Andy Miller
e172f5c82d add toggle for translations.fallback 2015-07-06 21:20:15 -06:00
Andy Miller
3a7426ed04 more robust logic 2015-07-06 21:08:45 -06:00
Andy Miller
3ab1feb7b1 handle array for values 2015-07-06 20:53:04 -06:00
Andy Miller
1c90ee6db3 more support for translations in plugins/themes 2015-07-06 20:47:04 -06:00
Andy Miller
046136bc37 improved with plugin merge 2015-07-06 17:19:22 -06:00
Andy Miller
1d0234550e first whack at providing language yaml support 2015-07-05 21:48:13 -06:00
Andy Miller
cca3a039ad set some config defaults 2015-07-05 18:43:48 -06:00
Andy Miller
e73d101c97 fixed page expires again 2015-07-05 14:55:22 -06:00
Andy Miller
389e53207e Merge branch 'feature/lang_test' into develop 2015-07-05 14:53:46 -06:00
Andy Miller
5bdce4fb28 And the actual jQuery file! 2015-07-05 14:52:48 -06:00
Andy Miller
b06e3b3281 updated jQuery reference to v2.1.4 2015-07-05 14:50:54 -06:00
Andy Miller
a4d39ce424 Added translation Twig function and filter 2015-07-05 13:58:33 -06:00
Andy Miller
79f5aaa032 added a default route alias - particularly useful for multilane switching 2015-07-04 10:11:40 -06:00
Andy Miller
740ea2e86d removed unused method for now 2015-07-04 09:40:41 -06:00
Andy Miller
364f95ec45 add active lang to the base_url stuff 2015-07-03 16:16:36 -06:00
Andy Miller
6668a7b8ab save standard routing in aliases if default overrides 2015-07-03 15:41:39 -06:00
Andy Miller
571f27d518 minor modifications 2015-07-03 14:05:15 -06:00
Andy Miller
0fa70b5b35 better fallback approach 2015-07-03 08:20:21 -06:00
Andy Miller
be8d424404 added some fallback logic - still needs work! 2015-07-02 22:06:07 -06:00
Andy Miller
08e239fcf4 Added lang template paths for theme by default 2015-07-02 15:53:05 -06:00
Andy Miller
947cb79558 optimized enabled test 2015-07-02 15:50:05 -06:00
Andy Miller
1f1df9afc7 support lang specific homepage 2015-07-02 11:19:44 -06:00
Andy Miller
ef40bb25fd added a timer around pageInitialized event 2015-07-02 09:46:57 -06:00
Andy Miller
e2db025aa0 minor updates 2015-07-01 20:50:36 -06:00
Andy Miller
63369247ab fix for regex and last language 2015-07-01 15:56:56 -06:00
Andy Miller
8c695df9da fixed template name based on current lang 2015-07-01 11:07:09 -06:00
Andy Miller
1c9d41ad58 some more multilane progress 2015-07-01 10:59:08 -06:00
Andy Miller
e7721d21a2 Merge branch 'develop' into feature/lang_test
* develop:
  broke-out fallback into a protected method
  fix for content mismatch error
  add canonical routes like an alias
  add canonical route support
2015-06-30 16:56:04 -06:00
Andy Miller
547f72919f broke-out fallback into a protected method 2015-06-30 16:22:43 -06:00
Andy Miller
2b6740dc7b fix for content mismatch error 2015-06-30 16:14:06 -06:00
Andy Miller
1a91cf7033 add canonical routes like an alias 2015-06-30 14:59:48 -06:00
Andy Miller
1e9418b87b add canonical route support 2015-06-30 14:59:24 -06:00
Andy Miller
bedf1555af invalid method name 2015-06-29 22:04:21 -06:00
Andy Miller
5d070f4d9e Merge branch 'develop' into feature/lang_test
* develop:
  Fix for #212 - media timestamp typo
  get route() dynamically and add any route aliases
  added accessor for routeAliases
  small optimization
  initial default override support
  Potential fix for Insight (sensio labs)
  lost default page timeout in last release.. resetting

Conflicts:
	system/config/system.yaml
2015-06-29 22:01:40 -06:00
Andy Miller
7eff48bd4f Merge branch 'feature/custom_page_routes' into develop 2015-06-29 21:56:50 -06:00
Andy Miller
dfccfb3cf3 Fix for #212 - media timestamp typo 2015-06-29 15:38:53 -06:00
Andy Miller
aeebc13d83 get route() dynamically and add any route aliases 2015-06-29 15:30:53 -06:00
Andy Miller
0a42ace4ba added accessor for routeAliases 2015-06-29 15:30:32 -06:00
Andy Miller
7b4f0a29ac small optimization 2015-06-29 15:30:18 -06:00
Andy Miller
b529456745 initial default override support 2015-06-29 12:51:05 -06:00
Djamil Legato
f1a929624f Potential fix for Insight (sensio labs) 2015-06-28 12:12:44 -07:00
Andy Miller
65285ad11e lost default page timeout in last release.. resetting 2015-06-28 09:24:20 -06:00
Andy Miller
eb421bc95e more progress on matching lang keys 2015-06-28 09:23:48 -06:00
Andy Miller
917a5c3082 some initial lang work 2015-06-26 12:25:22 -06:00
Andy Miller
ea491fbde5 Merge pull request #211 from barryanders/develop
Spelling corrections.
2015-06-26 09:41:02 -06:00
Barry Anders
a98d01ba65 Spelling corrections. 2015-06-26 10:20:49 -05:00
Andy Miller
7e2fa8295a fixed ordering on a couple of filters 2015-06-25 16:25:45 -06:00
Andy Miller
adf758a569 updated some config files 2015-06-25 16:25:31 -06:00
Andy Miller
49941105dc Fix issue where page-based css and js were being downloaded rather than processed 2015-06-23 18:58:24 -06:00
Andy Miller
c07afab981 support arrays in startsWith() and endsWith() 2015-06-23 18:57:54 -06:00
Andy Miller
c2b07fec1f Merge branch 'release/0.9.29' 2015-06-22 17:10:37 -06:00
Andy Miller
7f8baf326e Merge branch 'release/0.9.29' into develop 2015-06-22 17:10:37 -06:00
Andy Miller
9601061f25 version update 2015-06-22 17:10:24 -06:00
Andy Miller
b1317e56ec Disabled last_modified and etag page header by default 2015-06-22 15:30:01 -06:00
Andy Miller
353832c386 Fix for directory relative 'down' links 2015-06-22 12:56:11 -06:00
Andy Miller
8bf04d4593 Merge pull request #207 from Sommerregen/feature/enable-custom-summaries
Modified `$page->summary()` to allow custom summary assignments
2015-06-21 13:27:56 -06:00
Sommerregen
c9f0500c6f Refactored code. Added $page->setSummary(<string>) method. 2015-06-21 11:03:30 +02:00
Andy Miller
0dc465bb41 PR #145 - Set all but debugger to specific versions 2015-06-20 12:11:00 -06:00
Andy Miller
34e50aab21 remove replicated code... 2015-06-20 11:54:46 -06:00
Andy Miller
5a2411a0e6 Merge pull request #206 from Sommerregen/feature/add-build-pages-event
Add `onBuildPagesInitialized` event for memory & time consuming plugins
2015-06-20 11:51:12 -06:00
Andy Miller
178f66c940 Merge pull request #189 from Sommerregen/feature/params-option-merge-config
Added params option for mergeConfig method
2015-06-20 11:45:32 -06:00
Sommerregen
6d3a7a3989 Fixed variable name 2015-06-20 18:24:19 +02:00
Sommerregen
2400eaf04e Resolving conflicts after rebase 2015-06-20 14:42:28 +02:00
Sommerregen
752a3ca5bd Incorporated Gertt's modifications into PR 2015-06-20 14:39:24 +02:00
Sommerregen
6dbb6eb432 Changed "mergeConfig" head to match previous method signature 2015-06-20 14:38:57 +02:00
Sommerregen
e580bb9998 Added params option for mergeConfig method 2015-06-20 14:38:33 +02:00
Sommerregen
d309491f06 Modified $page->summary() to allow custom summary assignments 2015-06-20 13:54:57 +02:00
Sommerregen
0e35048143 Add onBuildPagesInitialized event for memory and time consuming plugins 2015-06-20 13:53:07 +02:00
Andy Miller
c919ed36b4 Error handling around bad regex .. just to be safer 2015-06-17 17:53:32 -06:00
Andy Miller
6d2a7c53dc very simple, yet surprisingly powerful Regex style redirect and route support 2015-06-17 17:39:44 -06:00
Djamil Legato
a8582fc131 Hello Travis! 2015-06-17 12:58:23 -07:00
Djamil Legato
76b7bd855d initial travis setup to trigger detection 2015-06-16 23:06:57 -07:00
Andy Miller
5656bb3caf Pre-load ArrayInput to avoid Exception if it gets moved/replaced during upgrade 2015-06-16 20:51:38 -06:00
Andy Miller
57bd4d8f22 Merge branch 'release/0.9.28' 2015-06-16 16:15:42 -06:00
Andy Miller
e71cd5a7ad Merge branch 'release/0.9.28' into develop 2015-06-16 16:15:42 -06:00
Andy Miller
4132388dda version update 2015-06-16 16:15:25 -06:00
Andy Miller
1edabe3b00 added page level overrides of etag and last_modified header flags 2015-06-16 10:25:27 -06:00
Andy Miller
019fdd65e9 added toggles to enable/disable last_modified and etag headers 2015-06-16 09:58:56 -06:00
Andy Miller
fa432cd32f Another incorrect slug name 2015-06-15 16:03:22 -06:00
Andy Miller
4935679659 fix #202 - incorrect slug name causing issues 2015-06-15 15:00:49 -06:00
Andy Miller
835c64c173 comment fix 2015-06-15 14:59:44 -06:00
Andy Miller
4d6ecbe618 Moved convertUrl() from ParsedownGravTrait into Uri as a static method 2015-06-14 17:54:22 -06:00
Andy Miller
63456aad85 reset how symfony libs versions are set in composer 2015-06-13 06:45:49 -06:00
Andy Miller
bec2ee91b5 updated symphony versions 2015-06-13 06:44:17 -06:00
Andy Miller
027c9cdd04 updated to latest cache library - should be a little faster! 2015-06-12 22:32:23 -06:00
Andy Miller
8ecea3a8c1 some more fixes for image handling in certain scenarios 2015-06-12 15:54:20 -06:00
Andy Miller
69e6d57346 Merge pull request #200 from Seebz/issue-199
Fix for issue #199 - Looks good! Thanks
2015-06-08 14:47:06 +01:00
Seebz
8127d9cf31 Fix for issue #199 2015-06-04 16:46:18 +02:00
Gert
bc1a9b31fa add @config directive to get config values from blueprints 2015-06-03 16:21:49 +02:00
Gert
ff5658e803 update blueprints 2015-06-01 21:23:53 +02:00
Gert
3d986cdd91 Merge branch 'develop' of github.com:getgrav/grav into feature/blueprint-extend
* 'develop' of github.com:getgrav/grav:
  optimization to image handling supporting url encoded filenames and removed a regex
  Fix for #196 - `+` in an image filename
2015-06-01 11:43:39 +02:00
Andy Miller
32810efcd9 optimization to image handling supporting url encoded filenames and removed a regex 2015-05-27 14:55:50 +02:00
Andy Miller
76b463792e Fix for #196 - + in an image filename 2015-05-26 16:18:59 +03:00
Gert
b4a0a31539 fix pages.process defaults 2015-05-25 17:33:57 +02:00
Gert
acbc7efdc8 remove theme selection from general settings 2015-05-25 17:23:24 +02:00
Gert
8475e0803a Merge branch 'develop' of github.com:getgrav/grav into feature/blueprint-extend
* 'develop' of github.com:getgrav/grav:
  removed unneeded flags from reggae
  fix for dot files
  fix for path detection on windows [fix #194]
  Fix for issue #194 - query string handling
2015-05-25 17:18:41 +02:00
Andy Miller
f779fc57df removed unneeded flags from reggae 2015-05-22 11:43:23 +03:00
Andy Miller
7afef9073c fix for dot files 2015-05-21 22:44:11 +02:00
Gert
370b5db34e remove unexisting option 2015-05-20 22:09:43 +02:00
Gert
6adabb5f71 add ignore field for removing fields on extended blueprints 2015-05-20 21:55:04 +02:00
Gert
df9a0eeab2 set context for default blueprint extends 2015-05-20 21:30:35 +02:00
Gert
e6d58b780e load system blueprints as a fallback for pages 2015-05-20 20:33:40 +02:00
Gert
e4b65d5d7f add check for themes without blueprints/templates folders 2015-05-20 18:18:32 +02:00
Gert
bf61a123cc implement blueprints for the list type 2015-05-20 17:13:22 +02:00
Gert
71f0757015 remove debug line 2015-05-20 16:52:41 +02:00
Gert
f1e57e0e9c modular type needs to have modular/ prefix 2015-05-20 16:45:54 +02:00
Gert
1147516dcc fix for path detection on windows [fix #194] 2015-05-20 16:07:39 +02:00
Andy Miller
3f1661965b Fix for issue #194 - query string handling 2015-05-18 18:54:08 +02:00
Gert
adb0b3ab18 Merge branch 'develop' of github.com:getgrav/grav into feature/blueprint-extend
* 'develop' of github.com:getgrav/grav:
  use PHP_BINARY constant
  fix composer execution for various scenarios
  Remove unnecessary white space
  Move default location to class constant
  Improve composer location identification
  Fix line break in command
  Propagate composer check to all occurences
  Use global composer install when available
2015-05-15 22:59:31 +02:00
Gert
8afad07146 Merge branch 'fix/composer-execution' into develop
* fix/composer-execution:
  use PHP_BINARY constant
  fix composer execution for various scenarios
2015-05-15 21:05:33 +02:00
Gert
81bce07a6e use PHP_BINARY constant 2015-05-15 20:16:42 +02:00
Gert
e883b57ac6 fix composer execution for various scenarios 2015-05-15 19:54:33 +02:00
Gert
921685ff88 fix blueprint type changing when extends 2015-05-15 17:32:21 +02:00
Andy Miller
ae2f95b1ae Merge pull request #192 from eschmar/feature/composer-global
Fix composer location method
2015-05-15 16:44:44 +02:00
Gert
4f77ef26b5 fix default values for process header 2015-05-15 11:40:38 +02:00
Marcel Eschmann
d8df9ffb53 Remove unnecessary white space 2015-05-15 00:20:08 +02:00
Marcel Eschmann
3c51c0acd4 Move default location to class constant 2015-05-15 00:03:48 +02:00
Marcel Eschmann
c085540143 Improve composer location identification 2015-05-14 23:56:55 +02:00
Marcel Eschmann
d239dd56d5 Fix line break in command 2015-05-14 23:32:16 +02:00
Andy Miller
8f9eb3b48b Merge pull request #191 from eschmar/feature/composer-global
Use global composer install when available
2015-05-14 23:15:25 +02:00
Marcel Eschmann
1f906e6a50 Propagate composer check to all occurences 2015-05-14 21:37:47 +02:00
Marcel Eschmann
e0a4efe181 Use global composer install when available 2015-05-14 21:10:05 +02:00
Gert
78e9c8fa1a Merge branch 'develop' of github.com:getgrav/grav into feature/blueprint-extend
* 'develop' of github.com:getgrav/grav:
  add method to set raw markdown on page
  fix modularTypes key properties
2015-05-13 19:41:18 +02:00
Gert
9382dc9c10 add method to set raw markdown on page 2015-05-13 18:52:13 +02:00
Gert
aa85f20aa9 fix modularTypes key properties 2015-05-13 18:50:13 +02:00
Gert
4ae01d48ae fix prefix split on empty prefix 2015-05-13 18:48:52 +02:00
Gert
fe3082c6c9 update taxonomy blueprint 2015-05-13 15:39:37 +02:00
Gert
ab6c257ba6 use new taxonomy field + for all pages 2015-05-12 00:49:31 +02:00
Gert
628ae561d5 more sensible approach to blueprint::extra prefix handling 2015-05-11 12:33:03 +02:00
Gert
56b5a65b24 Merge branch 'develop' of github.com:getgrav/grav into feature/blueprint-extend
* 'develop' of github.com:getgrav/grav:
  fix for alternative media resolutions
  version update
  updated changelog
  composer.par updated to latest
  make sure lookup path does not become empty (root sites)
  ignore .DS_Store in media lookup
  check if medium was created before setting size
  re-add size property to media
2015-05-11 12:29:52 +02:00
Gert
73654a99f9 fix for alternative media resolutions 2015-05-11 11:43:23 +02:00
Andy Miller
ea8add59b1 Merge branch 'release/0.9.27' 2015-05-09 13:14:33 -06:00
Andy Miller
5078ae62c0 Merge branch 'release/0.9.27' into develop 2015-05-09 13:14:33 -06:00
Andy Miller
e026ba32f4 version update 2015-05-09 13:14:23 -06:00
Andy Miller
e9ebe3b533 updated changelog 2015-05-09 12:53:29 -06:00
Andy Miller
cea130700d composer.par updated to latest 2015-05-09 12:36:22 -06:00
Andy Miller
0ae7ebac68 Merge branch 'feature/media-sizes' into develop 2015-05-09 12:25:55 -06:00
Gert
326f1bc890 update item blueprint 2015-05-09 16:47:16 +02:00
Gert
cabec818e2 make sure lookup path does not become empty (root sites) 2015-05-09 16:08:33 +02:00
Gert
ff04b33efd provide default blueprints for common page types 2015-05-09 15:58:17 +02:00
Gert
4f1a71b145 fix extra prefix implementation for extra data of blueprints 2015-05-09 15:58:07 +02:00
Gert
f7f8aa108a allow custom context for extending blueprints 2015-05-09 15:57:55 +02:00
Gert
718d443d52 trim trailing slashes from path during page lookup [fixes #190] 2015-05-09 15:07:15 +02:00
Andy Miller
57c5885216 don't cache twig template when you pass params 2015-05-07 16:01:11 -06:00
Andy Miller
14767a3e11 added twig filters for starts_with and ends_with 2015-05-07 14:13:05 -06:00
Sommerregen
fb31caefef Changed "mergeConfig" head to match previous method signature 2015-05-06 23:01:35 +02:00
Sommerregen
7ceb0dd065 Added params option for mergeConfig method 2015-05-05 21:23:54 +02:00
Andy Miller
b2a78d587c added check to see if on same page 2015-05-05 12:48:15 -06:00
Gert
16c3a3690b ignore .DS_Store in media lookup 2015-05-05 20:33:47 +02:00
Gert
7f8e8f67a5 check if medium was created before setting size 2015-05-05 19:49:14 +02:00
Gert
9792c9a84e re-add size property to media 2015-05-04 17:42:53 +02:00
Gert
13e9e6f5e1 modular page cannot be added to root 2015-05-04 17:12:24 +02:00
Gert
e62133233c remove permission management from user settings 2015-05-04 15:59:06 +02:00
Gert
3ec855e28f fix typo in type 2015-05-04 15:58:39 +02:00
Gert
4b56a05f57 media blueprints 2015-05-04 15:44:25 +02:00
Gert
845da953e1 timestamp blueprints under caching header 2015-05-04 15:39:33 +02:00
Gert
565a76c317 error handler blueprints 2015-05-04 15:37:07 +02:00
Gert
e01a116173 asset timestamps blueprint 2015-05-04 15:36:17 +02:00
Gert
4e07c294c5 gzip compression blueprint 2015-05-04 15:29:46 +02:00
Gert
58bb5a6993 publish_dates blueprint 2015-05-04 15:23:08 +02:00
Gert
2c51dd5fe1 default ordering fix 2015-05-04 15:18:55 +02:00
Gert
ce8513d3ff timezon and param_sep blueprints 2015-05-04 15:18:31 +02:00
Gert
08c4fd02d2 fix markdown extra blueprint 2015-05-04 15:13:29 +02:00
Gert
2e680cd35a email validate 2015-05-04 14:56:34 +02:00
Andy Miller
f12ef84a98 Added a function to parseLinks - used by YouTube plugin as testbed 2015-05-02 14:21:13 -06:00
Andy Miller
0563b2b6e5 fixed missing method name 2015-05-02 11:31:10 -06:00
Andy Miller
c68c39df27 fix for .. page references 2015-05-01 06:23:49 -06:00
Andy Miller
41c00d7fbe fix for absolute url's below this page 2015-05-01 06:23:31 -06:00
Andy Miller
750dfb60dc Fix to properly normalize the font rewrite path 2015-04-30 22:51:39 -06:00
Andy Miller
4305bbabd5 fix for theme name same as base_url and asset pipeline 2015-04-30 18:05:30 -06:00
Andy Miller
ecc12be531 restored gpm install functions 2015-04-30 16:54:23 -06:00
Andy Miller
b65280f3c9 added other close bits back for gzip close connection 2015-04-28 17:34:59 -06:00
Andy Miller
e077b3d04c Merge branch 'feature/gert_gzip' into develop 2015-04-28 17:21:43 -06:00
Andy Miller
91a963f580 tweaks 2015-04-28 17:21:30 -06:00
Gert
8404ba7a09 gzip 2015-04-29 01:07:24 +02:00
Gertt
86b907c86c Merge pull request #186 from getgrav/feature/config-fixes
Feature/config fixes
2015-04-28 23:58:44 +02:00
Gertt
ca899072d4 Merge pull request #185 from getgrav/feature/common_backup
Feature/common backup
2015-04-28 23:49:51 +02:00
Gert
bbfc63e943 ignore all .git folders 2015-04-28 23:35:58 +02:00
Andy Miller
9bce9ce026 removed unused 'use' statements 2015-04-28 11:31:28 -06:00
Andy Miller
3a25f028df Commented these out for now 2015-04-28 11:30:03 -06:00
Andy Miller
491c6d6a1f fixed missing classes 2015-04-28 11:28:08 -06:00
Andy Miller
64bb6ea2ad remove another unused var 2015-04-28 11:26:30 -06:00
Andy Miller
084e59dc90 remove unused var 2015-04-28 11:26:18 -06:00
Andy Miller
f7ea2e95e4 strict comparison 2015-04-28 11:24:46 -06:00
Andy Miller
7acdf231a4 removed php config overrides 2015-04-28 11:21:47 -06:00
Andy Miller
5d38e0fa14 add a menu sample in site.yaml 2015-04-27 21:41:52 -06:00
Gert
e364616730 add server directives to block access to backup folder 2015-04-27 21:53:08 +02:00
Gert
5ccefee288 backup to backup folder 2015-04-27 21:45:42 +02:00
Gert
93f4ad6e5a upload limit setting 2015-04-27 19:29:32 +02:00
Gert
c481acbb71 implement ignore for backups 2015-04-27 16:24:17 +02:00
Gert
bbdb0189f1 use site name for backup archive name 2015-04-27 16:13:48 +02:00
Gert
e1d655a3ac move backup code into Grav\Common 2015-04-27 12:40:30 +02:00
Andy Miller
d849f8a03e Added page level summary header overrides 2015-04-26 18:45:47 -06:00
Andy Miller
67c3d64275 optimize composer 2015-04-26 18:13:53 -06:00
Andy Miller
1546783371 upgrade already has vendor libs 2015-04-26 18:10:56 -06:00
Andy Miller
21cc9f86f3 added new composer update command 2015-04-26 18:00:34 -06:00
Andy Miller
2936d26f8d added --prefer-dist to these commands 2015-04-26 17:37:34 -06:00
Andy Miller
ae453dbc71 restore deprecated for whoops - causing composer issue 2015-04-26 17:21:38 -06:00
Andy Miller
d25699397f add composer update to gpm selfupgrade 2015-04-26 17:21:12 -06:00
Andy Miller
d461fac089 optimize install of vendor libs 2015-04-26 17:20:52 -06:00
Andy Miller
4bda629a6a handle condition of errors resulting in blank page. 2015-04-26 16:58:45 -06:00
Andy Miller
8a2817a305 Added check for curl in GPM 2015-04-26 16:39:58 -06:00
Andy Miller
8887f8862d Improved and cleaned up a couple of folder methods 2015-04-26 15:30:10 -06:00
Andy Miller
4883a408c7 updated composer.phar 2015-04-25 18:41:45 -06:00
Andy Miller
7b75171f79 Merge branch 'release/0.9.26' 2015-04-24 17:27:51 -06:00
Andy Miller
dc42288fa0 Merge branch 'release/0.9.26' into develop 2015-04-24 17:27:51 -06:00
Andy Miller
f576f914ae version update 2015-04-24 17:27:31 -06:00
Andy Miller
88faa5040c fix infinite loop bug in path() 2015-04-24 17:19:28 -06:00
Andy Miller
1e5365ba51 fix for home path not dispatching correctly 2015-04-24 17:13:14 -06:00
Andy Miller
eb93dacba0 Merge branch 'release/0.9.25' 2015-04-24 14:07:01 -06:00
Andy Miller
1e79cbc945 Merge branch 'release/0.9.25' into develop 2015-04-24 14:07:01 -06:00
Andy Miller
d350bd31cb version update 2015-04-24 14:06:44 -06:00
Andy Miller
89b9b4e9b7 Some optimizations and fixes 2015-04-22 14:12:45 -06:00
Andy Miller
9549e5aa4c moved to stable version of toolbox (now in packagist) 2015-04-22 12:31:16 -06:00
Andy Miller
1517d0e40b fix for relative images at root 2015-04-21 19:21:49 -06:00
Andy Miller
f13593aac7 Added E-Tag, Last-Modified, Cache-Control and Page-based Expires 2015-04-21 15:57:17 -06:00
Andy Miller
b8023b2444 Reset default expires time to 0 seconds 2015-04-21 15:39:55 -06:00
Andy Miller
bb49098a05 Merge branch 'feature/modified_timestamp_tweak' into develop 2015-04-21 14:11:32 -06:00
Andy Miller
c368fbcda9 tweaks 2015-04-21 14:08:00 -06:00
Andy Miller
1c1bf86e9a more optimizations.. using regexiterator now 2015-04-21 13:55:53 -06:00
Andy Miller
5f1b190ba9 rework to only check .md files 2015-04-21 13:25:42 -06:00
Andy Miller
0860f53d68 doc tag fix 2015-04-21 12:29:45 -06:00
Andy Miller
1ffd1cb6e7 Fixes for absolute images 2015-04-20 21:40:06 -06:00
Andy Miller
030d230312 Support page defaults merged with system config - #174 2015-04-20 21:38:26 -06:00
Andy Miller
974f9d52a4 Refactored link handling to better absolute handles pages and url elements. Fixes issue #173 2015-04-20 19:05:53 -06:00
Andy Miller
1a238ea1b1 fix for spaces in relative dir 2015-04-20 13:33:54 -06:00
Gert
a049441048 Merge branch 'develop' of github.com:getgrav/grav into develop
* 'develop' of github.com:getgrav/grav:
  Should fix: spaces in webroot for `bin/grav install` #164
2015-04-20 20:54:07 +02:00
Gert
20e771f121 add metod to get all pages 2015-04-20 20:53:39 +02:00
Gert
cff4e225e6 fix bug in collection filtering 2015-04-20 20:53:26 +02:00
Andy Miller
2c69f539ae Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Gert (3) and Kyle Shockey (1)
# Via Gert (1) and others
* 'develop' of https://github.com/getgrav/grav:
  Update README.md
  Merge branch develop into feature/password_improvement
  protect against timing attacks
  fix flaws in authentication
2015-04-20 12:41:37 -06:00
Andy Miller
548081471c Should fix: spaces in webroot for bin/grav install #164 2015-04-20 12:41:26 -06:00
Ryan Matthew Pierson
3688cfa397 Merge pull request #171 from kyleshockey/patch-1
README.md grammar changes
2015-04-17 14:02:20 -05:00
Kyle Shockey
20b2856dee Update README.md
grammar changes
2015-04-17 10:59:03 -07:00
Gert
7e94e46459 use gravtrait in plugins 2015-04-16 17:54:48 +02:00
Gert
f3b4efb661 Make plugins and themes load the merged config from all files 2015-04-16 17:43:03 +02:00
Gert
7947ba2442 fix config reload to actually reload from files 2015-04-16 17:42:29 +02:00
Gert
ef63e993d2 Merge branch 'feature/password_improvements' into develop
* feature/password_improvements:
  Merge branch develop into feature/password_improvement
  protect against timing attacks
  fix flaws in authentication
2015-04-16 12:49:19 +02:00
Gert
29ae5b7aae Merge branch develop into feature/password_improvement 2015-04-16 12:48:37 +02:00
Andy Miller
6baf7e0b35 Merge branch 'release/0.9.24' 2015-04-15 15:55:48 -06:00
Andy Miller
2e7ece17d7 Merge branch 'release/0.9.24' into develop 2015-04-15 15:55:48 -06:00
Andy Miller
2a56f21d13 version update 2015-04-15 15:55:28 -06:00
Andy Miller
d253c3c6c5 updated changelog 2015-04-15 15:54:36 -06:00
Andy Miller
289a838ba1 disable timestamps by default 2015-04-15 11:14:04 -06:00
Andy Miller
f6f3e96106 Merge branch 'develop' of https://github.com/getgrav/grav into develop
* 'develop' of https://github.com/getgrav/grav:
  hide notice about ob_flush()
2015-04-15 09:34:37 -06:00
Andy Miller
7d22305678 hide notice about ob_flush() 2015-04-15 06:44:34 -06:00
Andy Miller
7571d1d562 Merge branch 'feature/media_querystring' into develop 2015-04-14 22:51:44 -06:00
Andy Miller
b4c06f537d added page expires 2015-04-14 22:50:45 -06:00
Andy Miller
830c723bae Revert "added page expires"
This reverts commit f02f3d507dc0959866e6bdef67cc1cf29c0f173e.
2015-04-14 22:50:26 -06:00
Andy Miller
b83ab07374 added page expires 2015-04-14 21:59:31 -06:00
Gert
8200cb9336 querystring and cache timestamp support in media 2015-04-15 03:10:08 +02:00
Andy Miller
b1a38306af Added asset timestamps 2015-04-14 15:46:11 -06:00
Andy Miller
6ec0f4782f Merge pull request #169 from TomasVotruba/patch-1
cs
2015-04-13 11:44:06 -06:00
Tomáš Votruba
d25f9bcf1b cs 2015-04-13 19:41:52 +02:00
Gert
cd3fd5a7b7 protect against timing attacks 2015-04-13 14:44:56 +02:00
Gert
1ab1378259 fix flaws in authentication 2015-04-13 13:10:56 +02:00
Andy Miller
21f87ade2d Merge branch 'feature/improved_download_support' into develop 2015-04-11 18:27:09 -06:00
Andy Miller
8f54e5739f fix for any file with parameters 2015-04-10 14:28:37 -06:00
Andy Miller
21a6594573 Added a onBeforeDownload() event to provide logging/access check, etc. 2015-04-10 14:14:51 -06:00
Andy Miller
01ce80fb1a fixed direct operations on media objects 2015-04-10 13:30:36 -06:00
Andy Miller
174672c411 Support chunked downloads and non-media filetypes 2015-04-10 13:22:10 -06:00
Andy Miller
4785103081 Added download() and getMimeType() static methods 2015-04-10 13:21:53 -06:00
Andy Miller
7030422b11 New baseman option in Uri class 2015-04-10 13:21:23 -06:00
Andy Miller
2a06dc9bea customizable page types 2015-04-10 13:21:03 -06:00
Andy Miller
66927043de Merge branch 'release/0.9.23' 2015-04-09 13:01:01 -06:00
Andy Miller
7d16bafd52 Merge branch 'release/0.9.23' into develop 2015-04-09 13:01:01 -06:00
Andy Miller
ee340e2d6f version update 2015-04-09 13:00:50 -06:00
Andy Miller
66d9fd1a5e Merge branch 'feature/gpm_array_object_fixes' into develop 2015-04-09 12:51:55 -06:00
Andy Miller
7c28de6ae5 fixes for download 2015-04-09 12:41:03 -06:00
Andy Miller
c95f602ea2 fixes for changelog 2015-04-09 12:37:46 -06:00
Gert
6361280d99 remove supressed warnings 2015-04-09 20:13:10 +02:00
Andy Miller
b3a9d7cd41 fixes for broken gpm selfupgrade 2015-04-08 22:29:50 -06:00
Gert
071989c554 Merge branch 'develop' of github.com:getgrav/grav into develop
* 'develop' of github.com:getgrav/grav:
  Fix Folder::getRelativePath() so that it works with backslashes
  version update
2015-04-08 22:56:12 +02:00
Gert
f956d7113f use FilesystemIterator to solve windows path issue more elegantly 2015-04-08 22:55:27 +02:00
Matias Griese
f0472fdd76 Fix Folder::getRelativePath() so that it works with backslashes 2015-04-08 21:37:19 +03:00
Andy Miller
01899676a4 Merge branch 'release/0.9.22' into develop 2015-04-08 12:22:35 -06:00
Andy Miller
b13d572ca8 Merge branch 'release/0.9.22' 2015-04-08 12:22:34 -06:00
Andy Miller
a588e08405 version update 2015-04-08 12:22:23 -06:00
Andy Miller
6c93483220 updated changelog 2015-04-08 11:53:00 -06:00
Gert
733c13102b remove double ; 2015-04-08 11:43:40 -06:00
Gert
688d6fe17a normalize grav path 2015-04-08 11:43:28 -06:00
Gert
25ff1f230f fix mixed slashes in paths 2015-04-08 11:43:20 -06:00
Andy Miller
094b58130a Fix for issue #167 - latest version check out of order 2015-04-08 11:42:23 -06:00
Andy Miller
a18ec00962 Merge branch 'release/0.9.21' 2015-04-07 13:53:44 -06:00
Andy Miller
d9188e76ed Merge branch 'release/0.9.21' into develop 2015-04-07 13:53:44 -06:00
Andy Miller
a04a79af3e version update 2015-04-07 13:53:32 -06:00
Andy Miller
0c84392d0f sizes reference in changelog 2015-04-07 13:18:59 -06:00
Andy Miller
be12f350cb changelog updated 2015-04-07 13:05:21 -06:00
Andy Miller
01c7eadc92 Added new default_image_quality system configuration option 2015-04-07 12:55:29 -06:00
Andy Miller
4b3abc282a PSR Fixes 2015-04-07 12:42:48 -06:00
Andy Miller
81358e9984 Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Gert
# Via Gert
* 'develop' of https://github.com/getgrav/grav:
  fix alternative type not detected anymore
2015-04-07 09:11:09 -06:00
Andy Miller
8179d8eac1 updated composer packages 2015-04-07 09:10:42 -06:00
Gert
c22a2579a9 Merge branch 'develop' of github.com:getgrav/grav into develop
* 'develop' of github.com:getgrav/grav:
  update Console/GPM for refactored Common/GPM
  refactor Common/GPM namespace for more unified approach to installed vs remote packages
  add filter function to iterator
2015-04-06 23:27:19 +02:00
Gert
0a26772e35 fix alternative type not detected anymore 2015-04-06 23:26:53 +02:00
Andy Miller
364fc7afa8 Merge branch 'feature/GPM-unify' into develop 2015-04-06 10:27:16 -06:00
Gert
82bd54eb0b update Console/GPM for refactored Common/GPM 2015-04-04 14:02:28 +02:00
Gert
d92d9bafc6 refactor Common/GPM namespace for more unified approach to installed vs remote packages 2015-04-04 14:01:46 +02:00
Gert
9c541ee20b add filter function to iterator 2015-04-04 14:00:52 +02:00
Gert
105dc34b2a don't scale @1x images, use them as base 2015-04-03 11:30:35 +02:00
Andy Miller
0d8b46a157 fixed image element name 2015-04-01 17:27:51 -06:00
Gert
6142a12f48 Merge branch 'feature-multimedia' into develop
* feature-multimedia:
  reset on construct
  thumbnail selection fixes
  remove debugger line
2015-04-01 23:33:24 +02:00
Gert
1bda3eb1e3 Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav:
2015-04-01 23:32:40 +02:00
Gert
96b2b327b2 reset on construct 2015-04-01 16:51:24 +02:00
Gert
e014b12626 thumbnail selection fixes 2015-04-01 16:17:10 +02:00
Gert
d473f72edd remove debugger line 2015-04-01 16:14:18 +02:00
Andy Miller
7139425812 Merge pull request #161 from Gertt/feature-multimedia
Media overhaul
2015-03-31 15:00:49 -06:00
Gert
f5722d7baa Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav:
  switched to && operator
  Moved default image quality to defines.php
  Missing 'quality' in valid image functions
  updated version
  updated version
  updated changelog
  Fix for issue #158 - load order with debugger on
  Added support for external URL in directs
  more description for separator
  Serve images as static files
  Corrected HTML output of links with empty HTML anchors
  Changed Twig Link Regex which fixes #149 [Markdown Doesn't Handle [words](#)]

Conflicts:
	system/src/Grav/Common/Page/Medium.php
2015-03-31 22:58:24 +02:00
Gert
467eb00f0f rename factory to mediumfactory 2015-03-31 22:52:41 +02:00
Gert
0ce3646977 use style for static resize 2015-03-31 22:50:55 +02:00
Gert
53dd6c0860 multimedia refactor finishing touches 2015-03-31 21:23:14 +02:00
Andy Miller
e4a130c919 switched to && operator 2015-03-28 14:52:35 -06:00
Andy Miller
0d9ddb92d5 Moved default image quality to defines.php 2015-03-26 11:32:17 -06:00
Andy Miller
68a561d4fb Missing 'quality' in valid image functions 2015-03-26 11:24:22 -06:00
Andy Miller
5e651dd0e5 Merge branch 'release/0.9.20' 2015-03-24 17:31:39 -06:00
Andy Miller
1bb2965916 Merge tag '0.9.20' into develop
Release v0.9.20
2015-03-24 17:31:39 -06:00
Andy Miller
4ea650fc6d updated version 2015-03-24 17:31:24 -06:00
Andy Miller
501b38c4ba updated version 2015-03-24 17:30:30 -06:00
Andy Miller
ede958bd61 updated changelog 2015-03-24 17:29:44 -06:00
Andy Miller
f3d099e655 Fix for issue #158 - load order with debugger on 2015-03-19 23:29:45 -06:00
Andy Miller
db5c3ea400 Added support for external URL in directs 2015-03-16 21:10:31 -06:00
Andy Miller
504f57930a Merge pull request #151 from rzimin/patch-1
Serve images as static files
2015-03-16 18:59:27 -06:00
Andy Miller
02b1b2cf9d Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Sommerregen
# Via Andy Miller (1) and Sommerregen (1)
* 'develop' of https://github.com/getgrav/grav:
  Corrected HTML output of links with empty HTML anchors
  Changed Twig Link Regex which fixes #149 [Markdown Doesn't Handle [words](#)]
2015-03-12 17:09:15 -06:00
Andy Miller
99dbb3225b more description for separator 2015-03-12 17:08:33 -06:00
rzimin
08a8d69be2 Serve images as static files
Ensure images are served as static files when using Nginx
2015-03-12 13:34:46 +03:00
Andy Miller
a029f89ad2 Merge pull request #150 from Sommerregen/bugfix/parsedown-handle-empty-html-anchors
Changed Twig Link Regex which fixes #149 [Markdown Doesn't Handle [words](#)
2015-03-08 19:17:16 -06:00
Sommerregen
ed02fed866 Corrected HTML output of links with empty HTML anchors 2015-03-08 20:01:30 +01:00
Sommerregen
06de6c8e17 Changed Twig Link Regex which fixes #149 [Markdown Doesn't Handle [words](#)] 2015-03-08 19:24:48 +01:00
Gert
9ddfcd2154 Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav:
  updated changelog
  Added async and defer loading of JavaScript files
  Updated web.config  - Assets accesible
  fixed date
  version update
  removed some unused vars
  Removed some duplicate code via a trait
  Broke out iterators into their own class files
  only use files for last modified, so children don't affect the modified time of their parent page
  prevent a page from taken it's parent into account when detecting modified time
  Fixed `nth()` and added `first()` `last()` and `reverse()` methods
  Revert "Replace constant with streams. (need for multisite)."
  Replace constant with streams. (need for multisite).
2015-03-02 22:52:18 +01:00
Andy Miller
217e5e5a2c Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Vivalldi
# Via Andy Miller (1) and Vivalldi (1)
* 'develop' of https://github.com/getgrav/grav:
  Updated web.config  - Assets accesible
2015-03-02 11:09:54 -07:00
Andy Miller
272bf357d4 updated changelog 2015-03-02 11:06:14 -07:00
Andy Miller
9a5d14aa13 Added async and defer loading of JavaScript files 2015-03-02 11:03:21 -07:00
Andy Miller
2b70b2ad4f Merge pull request #148 from Vivalldi/patch-1
Updated web.config  - Assets accesible
2015-03-02 10:33:10 -07:00
Vivalldi
9323385b25 Updated web.config - Assets accesible
The system/assets folder is accessible except for .txt .md .html .yaml .php .twig .sh .bat files.
2015-03-02 12:30:46 -05:00
Andy Miller
fe90204772 Merge branch 'release/0.9.19' 2015-03-01 15:30:15 -07:00
Andy Miller
1b66e3d2a1 fixed date 2015-03-01 14:48:13 -07:00
Andy Miller
a2e1b9e100 Merge branch 'release/0.9.19' 2015-02-28 17:53:09 -07:00
Andy Miller
74ab81b524 Merge branch 'release/0.9.19' into develop 2015-02-28 17:53:09 -07:00
Andy Miller
01be2df935 version update 2015-02-28 17:52:55 -07:00
Andy Miller
62e5ea3bbd removed some unused vars 2015-02-28 14:14:20 -07:00
Andy Miller
b8c274b7b8 Removed some duplicate code via a trait 2015-02-28 14:13:59 -07:00
Andy Miller
e154b13b6e Broke out iterators into their own class files 2015-02-28 13:56:53 -07:00
Andy Miller
0f312a3c43 Merge pull request #146 from Gertt/develop
fix for last modified time detection of page
2015-02-27 16:17:48 -07:00
Gert
d8823a6b3a only use files for last modified, so children don't affect the modified time of their parent page 2015-02-27 23:29:23 +01:00
Gert
73d5f9da90 prevent a page from taken it's parent into account when detecting modified time 2015-02-27 22:16:59 +01:00
Andy Miller
7707b042e5 Fixed nth() and added first() last() and reverse() methods 2015-02-26 19:28:34 -07:00
Gert
ff95a116c2 Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav: (21 commits)
  Added initial named-assets implementation
  version update
  Update README.md
  Added optional deep option. defaults to false
  Added more flexible param separator option
  PSR camelCase fix
  missed a logical operator
  Fix camelCase method
  removed function in loop
  removed some commented out code
  removed unused vars
  Removed unused `use` statements
  rename fixme to todo
  remove fixme
  Object type hints
  strict boolean compare
  PSR fixes
  Strict boolean compares
  Some insight fixes
  Added new random string static and twig function
  ...
2015-02-24 21:40:59 +01:00
Andy Miller
2fe6dda365 Added initial named-assets implementation 2015-02-23 16:30:52 -07:00
Gert
f30a3c137e define new types 2015-02-22 00:01:55 +01:00
Gert
a5d31e7187 allow duplicated actions and follow medium on action 2015-02-22 00:01:44 +01:00
Gert
73c42313fa media overhaul 2015-02-22 00:00:52 +01:00
Andy Miller
686ba8a3f6 Merge branch 'release/0.9.18' into develop 2015-02-19 16:59:41 -07:00
Andy Miller
3397d5d2b7 Merge branch 'release/0.9.18' 2015-02-19 16:59:40 -07:00
Andy Miller
9ab3524fc5 version update 2015-02-19 16:59:20 -07:00
Andy Miller
3f10fa1b4c Update README.md 2015-02-18 22:21:38 -07:00
Andy Miller
6811fbea3d Added optional deep option. defaults to false 2015-02-18 22:04:02 -07:00
Andy Miller
3e245ef686 Merge pull request #144 from Sommerregen/bugfix/get-nested-default-plugin-configurations
Fix to merge nested page options with default plugin configurations
2015-02-18 21:59:49 -07:00
Andy Miller
28cff4e1da Added more flexible param separator option 2015-02-18 15:51:27 -07:00
Andy Miller
2bf67e482d PSR camelCase fix 2015-02-18 13:17:16 -07:00
Andy Miller
3976e4ce23 missed a logical operator 2015-02-18 13:12:57 -07:00
Andy Miller
a1ab94ffdd Fix camelCase method 2015-02-18 12:54:01 -07:00
Andy Miller
d6bed5441d removed function in loop 2015-02-18 12:51:58 -07:00
Andy Miller
e505c409ac removed some commented out code 2015-02-18 12:50:33 -07:00
Andy Miller
409742c078 removed unused vars 2015-02-18 12:48:01 -07:00
Andy Miller
6bd76028ce Removed unused use statements 2015-02-18 12:47:45 -07:00
Andy Miller
87dc53912b rename fixme to todo 2015-02-18 12:37:53 -07:00
Andy Miller
83d606c34a remove fixme 2015-02-18 12:37:39 -07:00
Andy Miller
1f906326e7 Object type hints 2015-02-18 12:37:19 -07:00
Andy Miller
ec67bf4c5b strict boolean compare 2015-02-18 12:37:00 -07:00
Andy Miller
127fe7fa2a PSR fixes 2015-02-18 12:36:30 -07:00
Andy Miller
e0de6f8b5f Strict boolean compares 2015-02-18 12:36:19 -07:00
Andy Miller
e81e35b7c2 Some insight fixes 2015-02-18 12:24:35 -07:00
Andy Miller
9bc365fe9e Added new random string static and twig function 2015-02-17 15:44:34 -07:00
Gert
21772c5481 Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav: (31 commits)
  Some performance optimizations for folder/file checking routines
  now checks for symlink availability before giving that option
  updated bundled composer package
  Backup pages folder if it exits in demo copy
  Fix rcopy reference
  Fix for issue #140 - plugin/theme install status not working on windows
  added a space after prompt
  Look for `_demo` content in packages and prompt to install it
  Use rcopy from Utils class
  Set package_type for unknown packages based on best guess
  Added recursive folder copy
  Don't critically fail, only log when plugin has config but is missing
  added repo URL to output
  text addition
  some corner case fixes
  Added symlink + git clone installation methods
  beginning of dependency work
  move timezone setting to after Config's `init()` method
  added timezone override support
  added a twig processTemplate() method
  ...

Conflicts:
	system/src/Grav/Common/Markdown/ParsedownGravTrait.php
	system/src/Grav/Common/Page/Media.php
	system/src/Grav/Common/Page/Medium.php
2015-02-17 20:41:49 +01:00
Andy Miller
7b32cbe2e1 Some performance optimizations for folder/file checking routines 2015-02-17 11:22:35 -07:00
Andy Miller
04a2f618bd now checks for symlink availability before giving that option 2015-02-16 18:48:52 -07:00
Andy Miller
73a104000a updated bundled composer package 2015-02-16 18:28:52 -07:00
Andy Miller
b8cb788324 Backup pages folder if it exits in demo copy 2015-02-16 14:46:05 -07:00
Andy Miller
690bb8a8be Fix rcopy reference 2015-02-16 14:45:21 -07:00
Andy Miller
26b0b02de2 Fix for issue #140 - plugin/theme install status not working on windows 2015-02-16 10:14:14 -07:00
Andy Miller
e5348ec8f1 added a space after prompt 2015-02-15 16:16:27 -07:00
Andy Miller
5e22eee1a8 Look for _demo content in packages and prompt to install it 2015-02-15 16:10:00 -07:00
Andy Miller
534bb57d3f Use rcopy from Utils class 2015-02-15 16:09:16 -07:00
Andy Miller
f8c203c033 Set package_type for unknown packages based on best guess 2015-02-15 16:08:53 -07:00
Andy Miller
300155e82e Added recursive folder copy 2015-02-15 16:08:24 -07:00
Andy Miller
3117a214d4 Merge branch 'feature/gpm_dependency' into develop 2015-02-15 15:30:25 -07:00
Andy Miller
9959868022 Don't critically fail, only log when plugin has config but is missing 2015-02-15 15:24:07 -07:00
Andy Miller
9248c5b709 added repo URL to output 2015-02-15 14:21:17 -07:00
Andy Miller
85fb5bccf3 text addition 2015-02-15 14:07:40 -07:00
Andy Miller
bd595ca9f6 some corner case fixes 2015-02-15 14:04:50 -07:00
Andy Miller
ace8823bd6 Added symlink + git clone installation methods 2015-02-15 13:37:51 -07:00
Sommerregen
5051b15145 Fix to merge nested page options with default plugin configurations 2015-02-15 21:20:20 +01:00
Andy Miller
1c1f2c268a beginning of dependency work 2015-02-14 22:33:50 -07:00
Andy Miller
545c76088c move timezone setting to after Config's init() method 2015-02-14 13:07:45 -07:00
Andy Miller
b418a7fd1e added timezone override support 2015-02-14 10:38:01 -07:00
Andy Miller
2938848df1 added a twig processTemplate() method 2015-02-13 11:35:21 -07:00
Andy Miller
17172f8920 added a contains() static method 2015-02-13 11:35:04 -07:00
Andy Miller
aeb237633e Merge pull request #139 from Zifius/patch-1
Update formatting to have blocks nesting less confusing
2015-02-10 17:01:31 -07:00
Andy Miller
d8a29dd639 Moved parsedown config into trait 2015-02-09 18:56:33 -07:00
Andy Miller
5c139e4b3c added a new markdown twig filter 2015-02-09 18:56:12 -07:00
Andy Miller
d69a0a9b06 minor naming updates 2015-02-09 16:35:02 -07:00
Andy Miller
07ce9c83ac changed getGrav() to static 2015-02-08 11:42:08 -07:00
Andy Miller
1d3559f0db Added a new filter to convert relative to absolute URLs 2015-02-07 12:21:40 -07:00
Andy Miller
be92a1da97 Merge pull request #141 from Gertt/patch-1
fix page ids not picking up folder-only pages
2015-02-07 09:56:54 -07:00
Gertt
97b430a888 Update Page.php 2015-02-07 17:55:46 +01:00
Gertt
b696e0d790 fix page ids not picking up folder-only pages 2015-02-07 17:47:58 +01:00
Gert
5b08a8605e various bugfixes, thumbnail support for files 2015-02-07 00:05:40 +01:00
Andy Miller
ab358dd820 Merge branch 'release/0.9.17' 2015-02-05 20:59:46 -07:00
Andy Miller
573b3227c7 Merge branch 'release/0.9.17' into develop 2015-02-05 20:59:46 -07:00
Andy Miller
50785c2434 version update 2015-02-05 20:59:23 -07:00
Andy Miller
fb9705809d HHVM fixes due to issues with traits and static variables #138 2015-02-05 15:07:31 -07:00
Alexander Turiak
1aeac01284 Update formatting to have blocks nesting less confusing 2015-02-05 12:43:49 +02:00
Gert
0cc35b56e5 Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav:
  Utilize new summary.delimiter setting rather than constant
  PSR fixes
  fix for markdown adding HTML tags into inline JS/CSS
  moved summary delimiter into site config
  fix for twig set capturing
  Moved to camels for plugins+themes as optional class naming type
  Added summary option
2015-02-04 22:39:47 +01:00
Gert
1423375312 enable markdown for any medium object and further cleanup 2015-02-04 22:39:34 +01:00
Gert
640ba16f8b fix alternatives detect 2015-02-04 22:38:24 +01:00
Andy Miller
d4e17442b2 Merge branch 'develop' of https://github.com/getgrav/grav into develop
# By Sommerregen
# Via Andy Miller (1) and Sommerregen (1)
* 'develop' of https://github.com/getgrav/grav:
  Added summary option
2015-02-02 17:27:04 -07:00
Andy Miller
eb4eafd915 Utilize new summary.delimiter setting rather than constant 2015-02-02 17:25:51 -07:00
Andy Miller
dc65475723 PSR fixes 2015-02-02 17:25:24 -07:00
Andy Miller
3f33e97f0c fix for markdown adding HTML tags into inline JS/CSS 2015-02-02 17:25:14 -07:00
Andy Miller
02508933d7 moved summary delimiter into site config 2015-02-02 17:24:41 -07:00
Andy Miller
89ebf2b011 Merge pull request #136 from Sommerregen/feature/added-summary-option
Added summary option
2015-02-02 17:23:00 -07:00
Andy Miller
c747c4baf7 fix for twig set capturing 2015-02-02 16:27:36 -07:00
Andy Miller
a3c848e4e2 Moved to camels for plugins+themes as optional class naming type 2015-02-02 13:08:56 -07:00
Gert
345d61f04f Merge branch 'develop' of github.com:getgrav/grav into feature-multimedia
* 'develop' of github.com:getgrav/grav:
  per-page debug setting not working as intended. Changing approaches...
  fix for using just defaults
  version update
  Added a page override support to media debug
  Some performance optimizations
  some cleanup refactoring
  PSR fixes
  Added 'enabled' option for summary and fixed query support in assets
  Added merge config and disable function in "Plugin.php"
2015-02-02 20:58:29 +01:00
Andy Miller
f0585ddb4e per-page debug setting not working as intended. Changing approaches... 2015-02-02 09:59:54 -07:00
Sommerregen
a6790cace3 Added summary option 2015-02-01 18:15:24 +01:00
Andy Miller
f244fc93c8 fix for using just defaults 2015-01-30 19:19:49 -07:00
Andy Miller
846a0baed8 Merge branch 'release/0.9.16' 2015-01-30 18:13:37 -07:00
Andy Miller
26ebb8fa6d Merge branch 'release/0.9.16' into develop 2015-01-30 18:13:37 -07:00
Andy Miller
cb8ea7780f version update 2015-01-30 18:13:25 -07:00
Andy Miller
5400bd3951 Added a page override support to media debug 2015-01-30 17:38:43 -07:00
Andy Miller
03521cd3f6 Some performance optimizations 2015-01-29 17:22:55 -07:00
Andy Miller
1eb0e37214 Merge pull request #133 from Sommerregen/feature/merge-config-and-disable-function-in-plugin.php
Added merge config and disable function in "Plugin.php"
2015-01-29 13:02:23 -07:00
Andy Miller
3e769618ec some cleanup refactoring 2015-01-29 10:40:30 -07:00
Andy Miller
9319d5c0aa PSR fixes 2015-01-29 10:27:10 -07:00
Andy Miller
eb94940df6 Merge pull request #132 from Sommerregen/feature/summary-options-and-query-support-in-assets
Added 'enabled' option for summary and fixed query support in assets
2015-01-29 10:23:59 -07:00
Sommerregen
a4c8c53939 Added 'enabled' option for summary and fixed query support in assets 2015-01-29 16:57:46 +01:00
Sommerregen
567dd0d2c6 Added merge config and disable function in "Plugin.php" 2015-01-29 16:51:17 +01:00
Gert
6f06e0c424 fix var name 2015-01-29 05:04:38 +01:00
Gert
8dfb9d08c4 refactor medium and basic implementation of video 2015-01-29 05:01:31 +01:00
Andy Miller
25c44816c0 moved cached images from image:// to cache://images 2015-01-28 10:01:20 -07:00
Andy Miller
1a692b348e some minor cleanup 2015-01-27 21:27:42 -07:00
Andy Miller
17ed48e677 PSR Fixes 2015-01-27 17:37:58 -07:00
Andy Miller
685033bb02 Went back to using regular image:// stream 2015-01-27 17:31:41 -07:00
Andy Miller
b86c982ba1 Updated to use new image cache stream and add width/height back to link 2015-01-27 17:24:21 -07:00
Andy Miller
a0148f36fd added image cache stream 2015-01-27 17:22:06 -07:00
Andy Miller
b88de0cd3b Merge pull request #131 from namaless/bugfix/medium_fix_locator_unused_vars_phpdoc
Bug fixes phpdoc/missed vars/locator.
2015-01-27 17:00:11 -07:00
Pereira Ricardo
3207efd383 Add again the width and height params for lightbox method. 2015-01-28 00:55:12 +01:00
Pereira Ricardo
31dd235b50 Add missed streams for images and system folders. Fixed problem with images link when you use user/images folder instead /images folder. 2015-01-28 00:39:24 +01:00
Pereira Ricardo
bb1cdb17f5 Typo fix. 2015-01-27 23:40:41 +01:00
Pereira Ricardo
f35287cb7a - Removed unused variables.
- Add missed phpdoc params.
- Update constants with locator.
2015-01-27 23:36:43 +01:00
Andy Miller
391f7d3be4 Merge pull request #130 from Gertt/feature-responsive-images
Feature responsive images
2015-01-27 13:35:32 -07:00
Gert
76d0583b00 prevent double overlays on scaled media generation 2015-01-27 21:29:14 +01:00
Gert
7857568c92 update images 2015-01-27 21:28:59 +01:00
Gert
bfe94bc5d0 add option to show debug overlay on images 2015-01-27 21:18:16 +01:00
Gert
cf3bcf6d7f fix double base url 2015-01-26 23:21:47 +01:00
Gert
d2aa775ee8 make cache names of generated images more informative by adding correct @#x suffix 2015-01-26 21:45:10 +01:00
Gert
ce800ccd92 fix lightbox issue 2015-01-26 21:31:47 +01:00
Gert
2c57453608 don't output srcset when only one image 2015-01-26 21:30:17 +01:00
Gert
03f729602b refactor the way parsedown gets image data, this also fixes lightbox operations for markdown 2015-01-26 18:57:54 +01:00
Andy Miller
21f064b1d0 updated parsedown extra lib 2015-01-25 22:12:46 -07:00
Gert
b7f6b827e4 fix lightbox for responsive images 2015-01-26 03:18:17 +01:00
Gert
a33e2ed226 fix empty alternatives bug 2015-01-26 02:45:14 +01:00
Gert
ef7806b509 forgot to save after fixing merge conflict 2015-01-26 02:43:52 +01:00
Gert
e268cda1b5 Merge branch 'develop' of github.com:getgrav/grav into feature-responsive-images
* 'develop' of github.com:getgrav/grav:
  fix for #129 markdown images not found when base_url == '/' on homepage

Conflicts:
	system/src/Grav/Common/Markdown/ParsedownGravTrait.php
2015-01-26 02:42:48 +01:00
Gert
3ae5e3c569 refactor and create missing versions of medium 2015-01-26 02:40:34 +01:00
Andy Miller
304c7519d1 fix for #129 markdown images not found when base_url == '/' on homepage 2015-01-25 18:33:24 -07:00
Gert
a4a8a422a5 fix for base url error 2015-01-25 23:48:58 +01:00
Gert
6700003dd2 generate @1x image when user provides only @2x 2015-01-25 23:11:23 +01:00
Gert
93f99fcff1 refactor image parsedown and correct use of reset 2015-01-25 23:07:24 +01:00
Gert
a03f54902a make sure param is int 2015-01-25 23:06:47 +01:00
Gert
4112d363dd get filters working on srcset 2015-01-25 20:40:29 +01:00
Gert
3f1c6dd662 implement srcset on all output functions and add data-attribute for lightbox plugins to use 2015-01-25 19:25:47 +01:00
Gert
89b2da636f Merge branch 'develop' of github.com:getgrav/grav into feature-responsive-images
* 'develop' of github.com:getgrav/grav:
  Added logic so markdown link will work with other non-self pages
  fixed bug with image dispatch for traditionally _non-routable_ pages, such as `image/foo.jpg`
2015-01-25 15:47:29 +01:00
Gert
c010ae3a97 switch to new srcset spec 2015-01-25 15:47:23 +01:00
Andy Miller
f619c8f49f Added logic so markdown link will work with other non-self pages 2015-01-24 17:28:20 -07:00
Andy Miller
a27a1a3fd1 fixed bug with image dispatch for traditionally _non-routable_ pages, such as image/foo.jpg 2015-01-24 16:59:20 -07:00
Gert
f7470ace97 basic srcset implementation 2015-01-24 17:36:49 +01:00
Andy Miller
cb6b362e20 Merge branch 'release/0.9.15' 2015-01-23 17:22:57 -07:00
Andy Miller
c6200f386a Merge branch 'release/0.9.15' into develop 2015-01-23 17:22:57 -07:00
Andy Miller
60423e4a28 version update 2015-01-23 17:22:41 -07:00
Andy Miller
f40410816e updated changelog 2015-01-23 17:21:58 -07:00
Andy Miller
63a2ffc0b1 fix for markdown images/links in pages with slug override 2015-01-23 17:09:37 -07:00
Andy Miller
fad428b94b Fix for broken image last-ditch-effort mechanism 2015-01-23 16:44:39 -07:00
Andy Miller
8b251ca350 Part 2 of greedy fix 2015-01-23 16:37:20 -07:00
Andy Miller
05bd5cb964 Fix for aggressive and greedy regex stripping numbers after / when should only strip order 2015-01-23 16:17:02 -07:00
Andy Miller
76a6b77065 fixed typo in mime types 2015-01-23 15:57:54 -07:00
Andy Miller
5049086062 Fix to pickup deprecated markdown_extra system setting. 2015-01-23 14:46:34 -07:00
Andy Miller
f04dece44c Merge branch 'release/0.9.14' 2015-01-23 13:08:47 -07:00
Andy Miller
621f38d856 Merge branch 'release/0.9.14' into develop 2015-01-23 13:08:47 -07:00
Andy Miller
ccc65aa420 version update 2015-01-23 13:08:35 -07:00
Andy Miller
7ddf35d3fa updated changelog 2015-01-23 12:34:18 -07:00
Andy Miller
689c65c5e4 bumped parsedown extra lib version 2015-01-22 17:47:05 -07:00
Andy Miller
e571f3bcfd Added some missing clean statements 2015-01-22 17:44:32 -07:00
Andy Miller
adf80c3f87 fix for change in slash trimming in Resource Locator 2015-01-22 16:50:35 -07:00
Andy Miller
fed9862e44 set auto_link_breaks to false by default 2015-01-21 22:07:37 -07:00
Andy Miller
7bc924b6d6 Added ability to configure markdown options in configuration and in page 2015-01-21 21:58:51 -07:00
Andy Miller
c881624801 Added ability to configure the special characters that are automatically converted in Parsedown 2015-01-21 21:57:55 -07:00
Andy Miller
3c63993db8 Some pretty serious page refactoring to clean up a rather unreadable chunk of code in content() method 2015-01-21 18:21:39 -07:00
Andy Miller
ac26c3ab4e added ability to set metadata 2015-01-21 15:36:05 -07:00
Andy Miller
2dedd9d1a0 Refactored Parsedown override class names 2015-01-21 13:23:53 -07:00
Andy Miller
c1ef8b6399 ENT_QUOTES works better than ENT_HTML5, so changing 2015-01-21 13:23:15 -07:00
Andy Miller
c2f2f7b009 fix for quotes in metadata 2015-01-21 12:22:29 -07:00
Andy Miller
c2c5afbb05 Added new onPageContentRaw() event that processes before markdown 2015-01-21 11:14:52 -07:00
Andy Miller
19eae2300f Merge branch 'feature/process_ordering' into develop 2015-01-20 18:08:41 -07:00
Andy Miller
0ddd2941e9 Add event when caching markdown content too 2015-01-20 18:08:14 -07:00
Andy Miller
6863d70f0b Merge pull request #126 from namaless/develop
Update User.php
2015-01-20 16:27:23 -07:00
Pereira Ricardo
9f782a4aed Update User.php 2015-01-20 21:11:13 +01:00
Matias Griese
bc844ba0d3 Merge pull request #125 from getgrav/revert-124-hotfix/user_class_streams
Revert "Replace constant with streams. (need for multisite)."
2015-01-20 19:43:09 +02:00
Andy Miller
af97876794 some initial refactoring 2015-01-20 10:42:13 -07:00
Matias Griese
92f319c188 Revert "Replace constant with streams. (need for multisite)." 2015-01-20 19:36:38 +02:00
Matias Griese
010872fc1e Merge pull request #124 from namaless/hotfix/user_class_streams
Replace constant with streams. (need for multisite).
2015-01-20 19:35:40 +02:00
Matias Griese
259d8356b0 Update url() method in twig 2015-01-20 19:23:05 +02:00
Andy Miller
4cd4bb4202 fix for non-url valid twig code in Markdown Link/Image 2015-01-20 09:35:30 -07:00
Pereira Ricardo
fdb19b1a90 Replace constant with streams. (need for multisite). 2015-01-20 11:07:37 +01:00
Andy Miller
c9385632a9 cleanup 2015-01-19 15:32:57 -07:00
Andy Miller
0c90b5c7b2 assets typo 2015-01-19 15:32:45 -07:00
Andy Miller
ac4650632e Merge branch 'rindeal-feature/introduce_phpunit' into develop 2015-01-19 15:21:55 -07:00
Andy Miller
aae644ca33 Merge branch 'feature/introduce_phpunit' of https://github.com/rindeal/grav into rindeal-feature/introduce_phpunit
Conflicts:
	composer.json
2015-01-19 15:21:10 -07:00
Andy Miller
6aabb83204 minor perf optimizations 2015-01-19 15:16:36 -07:00
Andy Miller
593f7bfe27 Merge pull request #115 from namaless/feature/inline_assets_priority
Add inline assets priority
2015-01-19 15:12:05 -07:00
Andy Miller
77d1bf5ca8 Merge pull request #118 from namaless/fix/typo
Fix small spellchecker
2015-01-19 15:06:39 -07:00
Andy Miller
bc8f742565 broke out resource into a variable 2015-01-19 15:02:33 -07:00
Andy Miller
632c48e1e6 Updated parsedown extra lib 2015-01-19 14:36:05 -07:00
Andy Miller
42b2f99c6d RE PR: #119 - Refactored a bit to be better optimized and also take into account $pages->base() 2015-01-19 14:35:52 -07:00
Pereira Ricardo
e518e3ca92 Fix small spellchecker 2015-01-18 03:22:51 +01:00
Pereira Ricardo
e013cf70db Add inline assets priority
Use md5 from content for discard multiple iterance.
2015-01-18 03:14:09 +01:00
Djamil Legato
bdf80fd920 Cherry-pick of #112 2015-01-16 14:44:25 -08:00
Andy Miller
ce282c47cf updated changelog 2015-01-16 13:39:06 -07:00
Andy Miller
23a25b8df2 Added a gzip param - default to off 2015-01-16 13:38:56 -07:00
Andy Miller
8363da35c6 updated parsedown-extra 2015-01-16 13:38:43 -07:00
Andy Miller
ff973a0634 Added Gzip support and fix for php-fpm connections 2015-01-16 13:38:30 -07:00
Andy Miller
2b504149f8 updates for changelog 2015-01-16 11:14:34 -07:00
Andy Miller
031df8de2c Added optional all param to pages.find() 2015-01-16 11:14:18 -07:00
Andy Miller
229d3acc99 moved rewrite base before exploits in .htaccess 2015-01-16 11:13:47 -07:00
Andy Miller
195bdd71a2 Updated Parsedown + ParsedownExtra to latest stable version 2015-01-12 17:29:44 -07:00
Andy Miller
f6da7c9344 Fixes for most recent Parsedown + ParsedownExtra 2015-01-12 17:29:15 -07:00
Andy Miller
50ebdeddad Revert "forgot to change this one back"
This reverts commit 4f4974aae4.
2015-01-11 16:00:14 -07:00
Andy Miller
4f4974aae4 forgot to change this one back 2015-01-11 15:57:55 -07:00
Andy Miller
977b7d2936 Force modular pages to be non-visible in menus 2015-01-11 15:23:22 -07:00
Andy Miller
c4797a2d6f Rolled back previous MarkdownTrait until next Parsedown release 2015-01-11 12:14:43 -07:00
Andy Miller
e293050ea1 Rolled back Parsedown to 1.1.4 and ParsedownExtra to 0.2.6 until next Parsedown Release 2015-01-11 12:14:22 -07:00
Andy Miller
4c2ed0ee3d Updated included composer package 2015-01-11 11:54:55 -07:00
Andy Miller
c550faa843 fix for published setting having precedents over publish_date and unpublish_date 2015-01-11 11:54:40 -07:00
Andy Miller
e433150a5a Use page:// stream rather than PAGES_DIR constant 2015-01-10 16:07:33 -07:00
Andy Miller
ceb3626c94 More fixes for markdown images 2015-01-10 15:58:44 -07:00
Andy Miller
2d33f745ba fix for bug cause by commit: 6e39107d45 2015-01-10 15:58:24 -07:00
Andy Miller
4cf0a71a45 fixes for Parsedown update 2015-01-10 14:31:03 -07:00
Matias Griese
7f526cea76 Fix fixed path in theme_url Twig variable 2015-01-10 17:55:28 +02:00
Matias Griese
6e39107d45 Add support for path prefixes like /en for multisite/multilanguage support 2015-01-10 17:54:09 +02:00
Matias Griese
9ddfced969 Fix a bug with missing streams when configuration was not loaded from cache 2015-01-10 14:23:16 +02:00
Matias Griese
dde6b2cd8b Add support for multiple configurations by setup.php 2015-01-10 11:55:57 +02:00
Matias Griese
a9894902be Fix RewriteBase getting run only after exploit checks in .htaccess 2015-01-10 11:55:01 +02:00
Andy Miller
62c668b32c Merge branch 'release/0.9.13' 2015-01-09 15:44:07 -07:00
Andy Miller
f48c8fb50a Merge branch 'release/0.9.13' into develop 2015-01-09 15:44:07 -07:00
Andy Miller
0ac7c4b6bf version update 2015-01-09 15:43:55 -07:00
Andy Miller
5bdf22764f Added a copy() method on collections 2015-01-09 13:35:05 -07:00
Andy Miller
f48a05e247 Added custom header. query type with default support 2015-01-09 13:26:18 -07:00
Andy Miller
dc0b7cd3d2 removed some unused commands 2015-01-09 13:25:46 -07:00
Andy Miller
d40a71757b fix and optimize the cache lifetime settings 2015-01-09 08:06:34 -07:00
Andy Miller
bd702b4c21 support publish_date and unpublish_date page headers 2015-01-09 08:06:11 -07:00
Andy Miller
b843167d6b set default cache lifetime to 1 week 2015-01-09 08:04:49 -07:00
Andy Miller
be7517def5 renamed publish system param 2015-01-09 08:04:31 -07:00
Andy Miller
b3f085c27d Support markdown extra classes on lightbox 2015-01-09 07:15:16 -07:00
Andy Miller
c7647ef20b Merge branch 'feature/published_state' into develop 2015-01-08 19:13:33 -07:00
Andy Miller
c56471fe73 added functionality to set cache lifetime to force refresh when a page is due to be published 2015-01-08 18:15:51 -07:00
Andy Miller
c87279c350 removed a nefarious chunk of code that was causing maleficent issues 2015-01-08 16:59:28 -07:00
Andy Miller
ed4040c6d0 cleanup of published support 2015-01-08 16:58:17 -07:00
Andy Miller
7345c75ac0 Added dateRange support to @ Collection definitions 2015-01-08 16:57:41 -07:00
Andy Miller
3b7bd3bb71 Collection methods modify 'self' and return self for chaining 2015-01-08 16:54:53 -07:00
Andy Miller
9f2ecfadf7 added new dateRange() method for Collection 2015-01-08 16:54:07 -07:00
Andy Miller
f7fa6f114d setting and code to unpublish pages with future dates 2015-01-07 18:51:33 -07:00
Andy Miller
8c99758a7a some error handling in collection when item is not in the collection (i.e., unpublished) 2015-01-07 18:35:17 -07:00
Andy Miller
9614932e07 new helper methods on collection 2015-01-07 18:34:51 -07:00
Andy Miller
b8715d9730 don't store taxonomy for unpublished pages 2015-01-07 18:34:30 -07:00
Andy Miller
c9563ac6a3 removed filter logic, relying on collection methods now 2015-01-07 18:34:06 -07:00
Andy Miller
0b20bf1909 pretty much working again 2015-01-07 17:44:53 -07:00
Djamil Legato
45d39df057 Fixed uninstall 2015-01-07 16:39:40 -08:00
Andy Miller
b7ffd3c721 more WIP for published state 2015-01-07 10:21:22 -07:00
Andy Miller
70f15de701 Initial commit with published state in pages 2015-01-06 19:39:03 -07:00
Andy Miller
4446770dda Merge branch 'release/0.9.12' 2015-01-06 11:54:42 -07:00
Andy Miller
e2389db483 Merge branch 'release/0.9.12' into develop 2015-01-06 11:54:42 -07:00
Andy Miller
7be42080da version update 2015-01-06 11:54:31 -07:00
Andy Miller
22e550ab40 Proper fix: Put in non-exception throwing handler for undefined methods on Medium objects 2015-01-06 11:33:53 -07:00
Andy Miller
c515996adc Revert "Put in non-exception throwing handler for undefined methods on Medium objects"
This reverts commit 00971dee24.
2015-01-05 18:22:50 -07:00
Andy Miller
fb3ee1187d Merge pull request #105 from jeffdm/develop
Update composer.json to not use GitHub API for rockettheme
2015-01-05 13:06:12 -07:00
Jeffrey Morgan
8cbba11955 Update composer.json 2015-01-04 16:19:49 -08:00
Andy Miller
00971dee24 Put in non-exception throwing handler for undefined methods on Medium objects 2015-01-04 15:08:01 -07:00
Andy Miller
e8b7b40535 Fix for recalcitrant CodeKit 2015-01-04 14:25:39 -07:00
Andy Miller
15113d0acb Added configurable support for undefined Twig functions and filters (allowed by default) 2015-01-03 16:31:06 -07:00
Andy Miller
5bd79dc072 Added support for in-page twig processing in modular pages 2015-01-03 16:05:18 -07:00
Djamil Legato
0f75f6b1e1 Added GPM UninstallCommand - fixes #96 2015-01-01 15:01:50 -08:00
Djamil Legato
33229f0f26 Fixed argument description for InstallCommand 2015-01-01 13:01:40 -08:00
Djamil Legato
5bbedb40fc Displaying latest version rather than current when updating package via GPM 2015-01-01 12:58:50 -08:00
Andy Miller
d1164a14c1 added support for - as well as _ in plugin filenames 2014-12-30 17:13:08 -07:00
Andy Miller
ce4b227328 Merge pull request #97 from namaless/develop
Simple way to check the class name
2014-12-30 17:09:49 -07:00
Andy Miller
5b2de3795f fixed description for self-upgrade in GPM 2014-12-30 17:03:10 -07:00
Namaless
3b25cc1a79 Simple way to check the class name
Follow the comments here: a6e951a4dc
2014-12-29 12:50:53 +01:00
Andy Miller
a6e951a4dc Added support for plugin names without _ to make them PSR-1 friendly 2014-12-28 13:12:04 -07:00
Andy Miller
ea734567ea Added some fallback template handling if not using default .html extension 2014-12-22 10:53:31 -07:00
Andy Miller
d32ec013dd Added a default all-access robots.txt 2014-12-22 10:51:10 -07:00
Andy Miller
b568ad8f56 Merge branch 'release/0.9.11' 2014-12-21 20:56:38 -07:00
Andy Miller
04541dac38 Merge branch 'release/0.9.11' into develop 2014-12-21 20:56:38 -07:00
Andy Miller
c8287d12fa version update 2014-12-21 20:56:24 -07:00
Andy Miller
8fdf517613 Fix attempt for invalid/missing user agent string 2014-12-21 17:48:45 -07:00
Andy Miller
0725a4729a fix for directory relative links and url fragments (#pagelink) 2014-12-21 12:02:49 -07:00
Andy Miller
a67b1f7350 fix for relative links with no subfolder in the base_url 2014-12-20 15:32:09 -07:00
Andy Miller
a7abd91868 Support for redirects not just routes 2014-12-16 22:21:01 -07:00
Andy Miller
7d9ea51ea5 Handle Twig errors more cleanly 2014-12-16 22:20:46 -07:00
Andy Miller
f284147b31 Merge branch 'release/0.9.10' 2014-12-12 10:25:24 -07:00
Andy Miller
0f71e1e795 Merge branch 'release/0.9.10' into develop 2014-12-12 10:25:24 -07:00
Andy Miller
14780c3bb1 version update 2014-12-12 10:25:14 -07:00
Andy Miller
1409b7284b moved clear-cache functionality into Cache object 2014-12-12 10:21:55 -07:00
Djamil Legato
c7e3b4d026 Typo 2014-12-10 13:19:49 -08:00
Andy Miller
139d9f8531 Added a useful 'nicetime' twig filter for Facebook style human readable dates "4 minutes ago" 2014-12-10 11:57:46 -07:00
Andy Miller
b9a569b71f Fix for prevSibling/nextSibling/isFirst/isLast when limit is imposed on parent collection 2014-12-08 15:30:29 -07:00
Andy Miller
8991af149e Merge branch 'release/0.9.9' 2014-12-05 11:37:58 -07:00
Andy Miller
fccebb83c2 Merge branch 'release/0.9.9' into develop 2014-12-05 11:37:58 -07:00
Andy Miller
dbfd2373fe version update 2014-12-05 11:33:30 -07:00
Andy Miller
2fda197eff Revert "added useful toArray() method on Iterator"
This reverts commit 92159d1df8.
2014-12-05 10:30:02 -07:00
Andy Miller
fbf09a7741 switching to Symfony 2.6 for yaml/console/event-dispatcher 2014-12-05 08:59:13 -07:00
Andy Miller
45e26c0936 refactored page prev/next/adjacent so they work! 2014-12-05 08:51:48 -07:00
Andy Miller
92159d1df8 added useful toArray() method on Iterator 2014-12-05 08:17:42 -07:00
Andy Miller
3ba491d02c PSR Fixes 2014-12-05 08:17:20 -07:00
Andy Miller
b3047f7156 updated composer 2014-12-04 18:36:28 -07:00
Andy Miller
ed818b55de Added a new @page collection type to take a parent page 2014-12-03 18:14:26 -07:00
Andy Miller
2a308d2a08 Fixed a broken getSibling() function on the page 2014-12-03 18:13:52 -07:00
Andy Miller
8fa8b55c7e Added 'contains' filter and 'gist' function 2014-12-03 18:13:04 -07:00
Andy Miller
08fc3918a7 added ksort filter 2014-12-02 15:21:40 -07:00
Andy Miller
32162532d5 Merge branch 'release/0.9.8' into develop 2014-12-01 17:06:32 -07:00
Andy Miller
d012c8ed2d Merge branch 'release/0.9.8' 2014-12-01 17:06:31 -07:00
Andy Miller
e66b89f08c trying again! 2014-12-01 17:06:16 -07:00
Andy Miller
94d019982b better fix for multiple cache that helps resolve broken images 2014-12-01 16:56:39 -07:00
Andy Miller
29d2eed5fb example wildcard route 2014-12-01 16:56:04 -07:00
Andy Miller
50940da168 Merge branch 'release/0.9.8' 2014-12-01 15:31:13 -07:00
Andy Miller
d1060940f0 Merge branch 'release/0.9.8' into develop 2014-12-01 15:31:13 -07:00
Andy Miller
a05df55b15 version update 2014-12-01 15:31:00 -07:00
Andy Miller
d5e71072c0 Should fix the double-caching issues - hopefully no repercussions! 2014-12-01 15:29:45 -07:00
Andy Miller
099589da90 set default cache back to unlimited 2014-12-01 15:29:06 -07:00
Andy Miller
8784372d41 implemented a simple wildcard routing solution 2014-12-01 14:03:39 -07:00
Andy Miller
f2f00bb09b fixed http_response_code 2014-11-30 22:51:24 -07:00
Andy Miller
7262fbac55 PSR fix 2014-11-30 21:02:30 -07:00
Andy Miller
bb0635c36f set status code base on page header 2014-11-30 17:50:41 -07:00
Andy Miller
a66ce64171 Added a configuration option to set a default lifetime on cache saves 2014-11-27 23:00:11 -07:00
Andy Miller
ea4690db3f minor cleanup 2014-11-26 07:11:35 -07:00
Andy Miller
47859d496e Ensure onPageContentProcessed only fires when not cached 2014-11-26 06:24:25 -07:00
Andy Miller
9d6cc2cbcc Removed old deprecated methods 2014-11-26 06:12:25 -07:00
Andy Miller
0b7d2e6d7e PSR fixes 2014-11-26 05:07:20 -07:00
Andy Miller
99783a6ab9 Ensure Twig tags are treated as block items in markdown 2014-11-26 04:53:35 -07:00
Andy Miller
1a5102e47b fix for summary miscalculation - take 2 2014-11-25 17:54:57 -07:00
Andy Miller
dd6986e5ff Fix for summary miscalculation 2014-11-25 17:08:31 -07:00
Andy Miller
05bea0bf50 PSR fixes 2014-11-25 17:08:12 -07:00
Andy Miller
96e8ab4610 Merge branch 'release/0.9.7' 2014-11-24 16:02:41 -07:00
Andy Miller
5626f56595 Merge branch 'release/0.9.7' into develop 2014-11-24 16:02:41 -07:00
Andy Miller
614b126939 version update 2014-11-24 16:02:23 -07:00
Andy Miller
d38a0973c6 Fix for non-valid assets shown up as empty tags 2014-11-24 11:51:25 -07:00
Andy Miller
a910568144 PSR fixes 2014-11-24 11:22:02 -07:00
Andy Miller
4a558ca89d removed problematic set_time_limit() call and put a check on ignore_user_abort() 2014-11-23 19:45:19 -07:00
Andy Miller
a45c31b952 Merge pull request #85 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.md
2014-11-23 17:44:06 -07:00
The Gitter Badger
2abc5d82da Added Gitter badge 2014-11-23 05:18:37 +00:00
Andy Miller
1aec50ca65 comment fix 2014-11-21 11:35:47 -07:00
Andy Miller
3c24dcc5aa #84 fix for all URLs with 'schemes' not being converted to Grav internal URLs 2014-11-19 13:08:53 -07:00
Andy Miller
d3265baa4e Fixed JS assets that don't have ; at the end for pipeline. Also PSR fixes 2014-11-18 17:22:03 -07:00
Andy Miller
50cdf01fae nginx config update - thanks paulr 2014-11-18 16:28:47 -07:00
Andy Miller
36688c9451 Merge branch 'release/0.9.6' 2014-11-17 15:58:40 -07:00
Andy Miller
cbfd6936e6 Merge branch 'release/0.9.6' into develop 2014-11-17 15:58:40 -07:00
Andy Miller
2d3e452baf updated version and changelog 2014-11-17 15:58:26 -07:00
Andy Miller
6879a2d54c added filename/thumb/extension to medium properties 2014-11-17 13:55:09 -07:00
Andy Miller
a2aaa2ce79 force media array sorts to use natural sort ordering 2014-11-17 13:54:35 -07:00
Andy Miller
088075888e support uppercase image extensions 2014-11-17 13:54:13 -07:00
Andy Miller
16ce10a5c7 PSR formatting fixes 2014-11-17 13:53:51 -07:00
Andy Miller
87d16e36cb Upped the default compression from 80 to 85 2014-11-17 13:53:08 -07:00
Andy Miller
19fc443518 Fix for relative URLs in markdown on installs with no base_url 2014-11-17 11:14:05 -07:00
Matias Griese
376c436318 Move base_url variables from configuration into grav container 2014-11-14 20:31:46 +02:00
Andy Miller
edb102b1dd fixed hostname for config overrides 2014-11-13 21:49:46 -07:00
Matias Griese
dc28ba5d1a Fix cached configuration (part 2) 2014-11-13 21:16:44 +02:00
Matias Griese
91f43c1613 Do not save environmental variables system.base_url_absolute & system.base_url_relative 2014-11-13 21:08:10 +02:00
Andy Miller
318319731d Fix for infinite loop in content() 2014-11-12 19:19:33 -07:00
Andy Miller
4b46ea241c Merge branch 'release/0.9.5' 2014-11-09 19:20:39 -07:00
Andy Miller
2a66f6b441 Merge branch 'release/0.9.5' into develop 2014-11-09 19:20:39 -07:00
Andy Miller
60bbb32833 version update 2014-11-09 19:20:25 -07:00
Andy Miller
31063c5749 added helpful messages about pages cache state 2014-11-09 15:13:17 -07:00
Andy Miller
210c66de21 url public 2014-11-09 15:12:44 -07:00
Andy Miller
45525af846 Force route rebuild when config changes (needed when changing home alias) 2014-11-09 12:53:13 -07:00
Andy Miller
2c247a4529 Handle sub pages of 'home' menu item better 2014-11-09 12:52:23 -07:00
Andy Miller
2fac370741 Change paths() method to be more useful 2014-11-09 12:51:46 -07:00
Andy Miller
454b3a61e7 PSR code fixes 2014-11-09 12:51:18 -07:00
Andy Miller
376cc0c095 Added helpful message when theme can not be found 2014-11-08 23:31:18 -07:00
Andy Miller
21b1323d29 Fix for incorrect template name when throwing missing error 2014-11-08 23:23:08 -07:00
Andy Miller
fb549701ff Updated Vendor libs to latest 2014-11-07 18:34:51 -07:00
Andy Miller
d4cb85174c added new onPageContentProcessed() event that is post-content processing but pre-caching 2014-11-07 18:17:36 -07:00
Andy Miller
d596dd98dd PSR code tidy 2014-11-07 18:17:02 -07:00
Andy Miller
16ba82b795 Set output to public so it can be manipulated in the onOutputGenerated() event 2014-11-07 18:16:42 -07:00
Andy Miller
78279e4d7a Moved environment to Uri object 2014-11-06 18:27:48 -07:00
Andy Miller
699fade3d1 added some specific clear options to 'clear-cache' CLI command 2014-11-06 13:17:37 -07:00
Andy Miller
fdd94633a8 fix for markdown links with fragments and query elements 2014-11-06 12:43:19 -07:00
Andy Miller
2f1e0c6be2 Fix for data urls in CSS 2014-11-05 22:02:54 -07:00
Andy Miller
d0cded11fb Fix for inline CSS and JS when pipelining enabled 2014-11-05 21:30:44 -07:00
Andy Miller
8cd962e0f3 make comparison case insensitive 2014-11-05 16:22:00 -07:00
Andy Miller
9bb7d0c37b Added support for AND and OR taxonomy filtering. Default to AND (was OR) 2014-11-05 16:17:33 -07:00
Andy Miller
f41ba3172b removed extraneous manual cache disable 2014-11-05 16:17:07 -07:00
Andy Miller
aecdbaaa27 Added quality method to Medium to set the compression 2014-11-03 15:21:59 -07:00
Andy Miller
e572015913 Don't remove json/text errors handlers! 2014-11-01 22:18:51 -06:00
Andy Miller
e11c426c38 fix for 'installed undefined' error 2014-11-01 22:18:35 -06:00
Andy Miller
e2aff43963 Merge branch 'release/0.9.4' 2014-10-31 18:12:28 -06:00
Andy Miller
7551d0c69a Merge branch 'release/0.9.4' into develop 2014-10-31 18:12:28 -06:00
Andy Miller
7ac6e436fa New version 2014-10-31 18:11:55 -06:00
Andy Miller
10ca2ef3fd Merge branch 'feature/0.9.4_changelog' of https://github.com/getgrav/grav into release/0.9.4 2014-10-31 18:10:53 -06:00
Andy Miller
04e197f9cc Better safari support on error page 2014-10-30 16:36:34 -06:00
Andy Miller
f2638f17c3 More useful template missing error 2014-10-30 16:36:14 -06:00
Andy Miller
051a7e66f6 Added ability to enable/disable error display and logging 2014-10-30 16:19:05 -06:00
Matias Griese
ff1db8ece8 Improve cached configuration check 2014-10-30 15:35:14 +02:00
Matias Griese
3bfe32eda1 Fix a typo in configuration loading making configuration updates to do more work than needed 2014-10-30 15:27:53 +02:00
Andy Miller
588bd0168c Unique configuration/blueprints based on environment name 2014-10-29 15:09:43 -06:00
Andy Miller
e81980b6c0 removed commented out var_dump 2014-10-29 13:10:33 -06:00
Djamil Legato
e33693f224 Displaying packages not found when running Version command 2014-10-29 09:43:10 -07:00
Djamil Legato
74747844e4 Initializing streams for GPM CLI 2014-10-28 22:29:43 -07:00
Andy Miller
9b2221f702 initial 0.9.4 changelog 2014-10-28 18:39:33 -06:00
Andy Miller
cac8503c72 Turn off debugger by default 2014-10-28 17:12:58 -06:00
Andy Miller
7c37216d6a Merge branch 'feature/alternative_debugger' into develop 2014-10-28 15:58:32 -06:00
Andy Miller
359c33dae5 Merge branch 'develop' into feature/alternative_debugger
Conflicts:
	system/src/Grav/Common/TwigExtension.php
	system/src/Grav/Console/Cli/InstallCommand.php
	system/src/Grav/Console/Cli/SandboxCommand.php
2014-10-28 15:56:01 -06:00
Andy Miller
a9b517386c Added a default/sample htaccess 2014-10-28 14:18:09 -06:00
Andy Miller
7202766cb5 Several hatches improvements and unifications 2014-10-27 21:36:29 -06:00
Andy Miller
9bd62558c1 permissions 2014-10-27 18:46:51 -06:00
Andy Miller
ac8887129c added some missing files 2014-10-27 17:33:45 -06:00
Andy Miller
2d4eb6d364 removed redundant debugger fork reference 2014-10-27 17:17:22 -06:00
Andy Miller
046a50ffcd Added vendor to the mappings for copy/symlink 2014-10-26 19:24:02 -06:00
Andy Miller
fc863c560f moved composer update into non-symlink block 2014-10-26 19:23:34 -06:00
Andy Miller
9928b75d0d Fix for debugbar with in-page Twig rendering 2014-10-26 19:20:07 -06:00
Andy Miller
a54d116be3 removed unused vendor libs 2014-10-22 22:12:50 -06:00
Andy Miller
7046c104d6 additional vendor cleanups 2014-10-22 22:03:36 -06:00
Andy Miller
bb0ee34082 Tentatively added twig panel to debugbar - currently has issues with "processpage" twig calls used by modular 2014-10-22 21:14:11 -06:00
Andy Miller
8950e6661f check for html explicitly 2014-10-20 10:42:57 -07:00
Andy Miller
112dd6f4ae more stuff 2014-10-20 10:37:41 -07:00
Andy Miller
9426b42a33 other css tweaks 2014-10-19 18:47:14 -07:00
Andy Miller
e6bf5d9ea5 css text outline fix 2014-10-19 18:21:21 -07:00
Andy Miller
ce9e955f21 Added support for auto detecting environment configurations 2014-10-18 23:03:06 -07:00
Andy Miller
5025a430b6 Tested log rotation 2014-10-18 09:34:11 -07:00
Andy Miller
458f6cb55d Monolog added and logging exceptions 2014-10-17 23:16:24 -07:00
Andy Miller
b379b38fff Set Twig debug() method to use 'debug' notice level 2014-10-17 22:16:02 -07:00
Matias Griese
0711875200 Add {{ debug() }} and {{ dump() }} calls to twig 2014-10-16 14:47:26 +03:00
Matias Griese
767ac573af Add initial loading time to debugger timeline 2014-10-16 12:42:34 +03:00
Matias Griese
c96bacc320 Merge branch 'feature/alternative_debugger' of https://github.com/getgrav/grav into feature/alternative_debugger 2014-10-16 11:36:14 +03:00
Matias Griese
8aec9f7c15 Improve and optimize configuration loading 2014-10-16 11:34:17 +03:00
Andy Miller
a66fede72d wrapping fix 2014-10-15 21:34:32 -06:00
Matias Griese
5586c1923c Move Whoops code into its proper place and implement ajax support for json files 2014-10-15 11:56:09 +03:00
Andy Miller
01467e1b32 side panel now purple 2014-10-14 21:54:39 -06:00
Andy Miller
6be04d6406 Fix for non-transparent clipboard icon 2014-10-14 21:46:51 -06:00
Andy Miller
a7176c4a6e color styling for whoops 2014-10-14 19:05:42 -06:00
Andy Miller
67484a1a90 typo in .htaccess 2014-10-14 17:27:14 -06:00
Andy Miller
783d148551 Debugger style overrides 2014-10-14 17:26:14 -06:00
Andy Miller
5134b28bad Potential improvement of .htaccess 2014-10-14 15:45:17 -06:00
Andy Miller
c10882f290 Added Whoops 2014-10-14 15:42:25 -06:00
Djamil Legato
19bbfd0a50 Cleanup 2014-10-14 13:13:55 -07:00
Djamil Legato
3f6b5e35de Added new GPM version command that allows to ask for the version of the Grav instance as well as any installed package. It also supports multiple arguments and if an update is available it will be shown 2014-10-14 12:45:10 -07:00
Djamil Legato
002902c9d9 Cleanup 2014-10-14 12:17:29 -07:00
Andy Miller
d93e17cff4 Merge branch 'develop' into feature/alternative_debugger 2014-10-14 12:49:27 -06:00
Andy Miller
9fa92b504f Admin check 2014-10-14 12:48:33 -06:00
Andy Miller
74d25d240a Admin check 2014-10-14 12:47:47 -06:00
Matias Griese
a136241952 Add support for system timers, allowing to time initialization 2014-10-14 10:10:17 +03:00
Matias Griese
c89f683b8c Load debugger as early as possible 2014-10-14 09:51:55 +03:00
Matias Griese
45e79f88a3 Fix potential double // in assets (breaks assets loading in FF) 2014-10-14 09:32:16 +03:00
Andy Miller
bdd0c1f4c7 tidy up.. 2014-10-13 23:27:54 -06:00
Andy Miller
2bfcd88bfd Initial commit with PHP Debug Bar instead of Tracy 2014-10-13 22:23:13 -06:00
Djamil Legato
d18f0bf751 Removed is_file check on the else statement as files with no extensions aren't recognized as files by PHP, preventing .htaccess or LICENSE to get copied over 2014-10-13 14:24:55 -07:00
Djamil Legato
3d983d8377 Forcing a hard clear-cache for self upgrade only and soft clear-cache for install/update of themes/plugins 2014-10-13 10:38:11 -07:00
Andy Miller
6c912d126a Fixed error messages relating to plugins 2014-10-13 11:07:33 -06:00
Djamil Legato
48b02b0f05 Selfupgrade command now clears cache after a successful upgrade 2014-10-12 18:54:27 -07:00
Andy Miller
523b6376bb fix for username field 2014-10-12 13:49:20 -06:00
Djamil Legato
c276457390 Merge branch 'release/0.9.3' 2014-10-10 15:13:29 -07:00
Djamil Legato
d983a908e4 Merge branch 'release/0.9.3' into develop 2014-10-10 15:13:29 -07:00
Djamil Legato
538fa23b9d Rereleasing 0.9.3 2014-10-10 15:13:19 -07:00
Djamil Legato
d2bfacad4e Resetting permissions of binaries after an upgrade 2014-10-10 15:07:47 -07:00
Andy Miller
cc68065f94 Fix for extended image url handling in markdown 2014-10-10 15:57:29 -06:00
Djamil Legato
00f6738b7e Merge branch 'release/0.9.3' 2014-10-10 14:02:11 -07:00
Djamil Legato
9310c3f12f Merge branch 'release/0.9.3' into develop 2014-10-10 14:02:11 -07:00
Djamil Legato
0fc1f5492f Prepearing for release 2014-10-10 14:02:01 -07:00
Andy Miller
4562de083d Merge branch 'feature/0.9.3_changelog' into develop 2014-10-10 14:05:21 -06:00
Matias Griese
7250a3ecc1 Fix theme overrides 2014-10-10 21:12:11 +03:00
Matias Griese
ac1874795b Modify some blueprints 2014-10-10 15:25:37 +03:00
Matias Griese
2fb8fb62c6 Add function to load user account 2014-10-10 15:02:56 +03:00
Matias Griese
fd9816c177 Bluprints: Move validation parameter inside the form 2014-10-10 12:27:41 +03:00
Matias Griese
5a6e32fce7 Add option to create modular content 2014-10-10 11:57:57 +03:00
Djamil Legato
774850f30d Inverted order of questions on self upgrade. Now first is change log view and then if you want to upgrade. Makes more sense :) 2014-10-09 20:42:57 -07:00
Andy Miller
41f4d269b0 Various tweaks and hopefully improvements to file change detection 2014-10-09 21:04:30 -06:00
Djamil Legato
18e79ce4fe Typo 2014-10-09 18:45:59 -07:00
Djamil Legato
92ce0aa816 Added getChangelog method with option to set a diff starting point version
Selfupgrade command is now going to prompt you before continuing upgrading and optionally can show the change log
Added -y|--all-yes option in grav self upgrade command to skip any prompt and just upgrade
2014-10-09 18:44:30 -07:00
Andy Miller
5ca9180033 return state for compatibility with functions that look for true/false 2014-10-09 18:43:23 -06:00
Andy Miller
1856d1f8c7 Stupidly forgot we already had a recursive delete method in Folder class! 2014-10-09 18:42:53 -06:00
Djamil Legato
af9810d1b3 Now resetting permissions for all binaries inside bin/ when running sandbox 2014-10-09 17:21:46 -07:00
Andy Miller
a454312bd2 Updated change log to reference updates today 2014-10-09 18:07:31 -06:00
Andy Miller
88063c2a60 Merge branch 'develop' of github.com:getgrav/grav into develop 2014-10-09 18:03:54 -06:00
Djamil Legato
8c010fbd3c Updated distributed composer.phar to 73e9db5d9952d52a46ecbc20a269a8c5f9c5b011 2014-10-09 17:03:48 -07:00
Andy Miller
7f615f19f7 Unified multiple versions of "remove directory" method 2014-10-09 18:03:32 -06:00
Djamil Legato
5f7b70748b GPM installer now extracts into the grav instance cache folder rather than system tmp folder 2014-10-09 16:49:08 -07:00
Andy Miller
79268130f4 clear-cache CLI command deletes specific folders. new --all flag added 2014-10-09 16:50:43 -06:00
Andy Miller
8b78b4997e Switched GPM repo to use custom Doctrine cache 2014-10-09 16:50:08 -06:00
Andy Miller
e224841650 switched Doctrine cache to use new stream locator for directory and moved to sub folder 2014-10-09 14:53:37 -06:00
Djamil Legato
a69e5fa115 Switched deprecated Parsedown parse method to text 2014-10-09 12:34:35 -07:00
Andy Miller
539b7931e6 Revert "Moved File Page cache into /cache/pages subfolder"
This reverts commit f303c1243f.
2014-10-09 13:18:32 -06:00
Andy Miller
f303c1243f Moved File Page cache into /cache/pages subfolder 2014-10-09 13:13:24 -06:00
Andy Miller
347d8ecebe Moved Twig cache into /cache/twig subfolder 2014-10-09 13:05:55 -06:00
Andy Miller
f977092115 New changelog work in progress 2014-10-09 12:38:57 -06:00
Matias Griese
5430792687 Disable markdown file compilation for now 2014-10-09 20:40:34 +03:00
Andy Miller
e591212166 typo in descriptions 2014-10-08 14:29:22 -06:00
Andy Miller
77f19974f5 Merge branch 'develop' of github.com:getgrav/grav into develop 2014-10-08 13:24:52 -06:00
Andy Miller
8b34e7dc19 Add inline CSS and JS support to Assets 2014-10-08 13:24:37 -06:00
Djamil Legato
3d4fb6a7d4 Detecting symbolically linked plugins and themes, flagging them and ignoring updates for them 2014-10-08 11:59:25 -07:00
Andy Miller
af7d3ccf83 New change log format 2014-10-08 12:13:15 -06:00
Matias Griese
a8b6841923 Simplify modular page logic 2014-10-08 19:54:59 +03:00
Matias Griese
e09ab139c8 Simplify modular page loading 2014-10-08 19:43:21 +03:00
Matias Griese
fe6a0a27b3 Remove unneeded debugging 2014-10-08 19:00:05 +03:00
Matias Griese
2f4c32e682 Add session close before redirect 2014-10-08 18:59:32 +03:00
Matias Griese
fdf2884f97 Fix Page::filePath() for modular content 2014-10-08 15:12:22 +03:00
Matias Griese
8d8129b49e Add support for modular raw template 2014-10-08 14:33:27 +03:00
Matias Griese
a811ee67cc Add blueprints support for modular content 2014-10-08 14:21:24 +03:00
Matias Griese
f9bfed2b22 Use blueprints from plugins 2014-10-08 13:24:26 +03:00
Matias Griese
3991f51cdf Remove unused file 2014-10-08 12:26:59 +03:00
Matias Griese
0902840aa4 Add support for listing custom page templates/types 2014-10-08 12:26:45 +03:00
Matias Griese
df475af2fd Add back Twig::processString() as it is used in plugins 2014-10-07 20:47:44 +03:00
Matias Griese
9fb56df9a0 Add back configuration key to caching (was accidentally removed) 2014-10-07 14:03:53 +03:00
Matias Griese
b11b39752f Compile markdown files into PHP and cache them 2014-10-07 12:32:31 +03:00
Matias Griese
8cd361ca41 Fix undefined variable in Data\Blueprint class 2014-10-07 12:31:42 +03:00
Matias Griese
4c04dfc747 Do not check blueprint updates when caching configuration 2014-10-07 12:31:01 +03:00
Matias Griese
6cc3d15ee7 Fix warnings when sorting empty collection of pages 2014-10-07 12:22:41 +03:00
Matias Griese
c0bf787dc7 Fix undefined variable in Uri::query() part 2 2014-10-07 12:06:30 +03:00
Matias Griese
4452cf3d1b Fix undefined variable in Uri::query() 2014-10-07 12:02:18 +03:00
Matias Griese
9fa97ad46b Use compiled Yaml files in medium and plugins 2014-10-07 11:04:52 +03:00
Matias Griese
6c3e1d83a7 Merge branch 'develop' of https://github.com/getgrav/grav into develop 2014-10-07 11:02:18 +03:00
Matias Griese
9f2d1b48e6 Use session class in shutdown 2014-10-07 11:02:09 +03:00
Djamil Legato
fd7fd2fb0c Including description_html and description_plain in the Local Packages 2014-10-06 14:58:33 -07:00
Djamil Legato
a58ea17867 Merge branch 'feature/gpm' of github.com:getgrav/grav into feature/gpm 2014-10-06 11:51:31 -07:00
Andy Miller
093e101f1b fix for close connection 2014-10-06 12:50:09 -06:00
Andy Miller
93dd673639 added type bool for assets 2014-10-06 12:46:34 -06:00
Djamil Legato
71b25190b8 Merge branch 'feature/gpm' of github.com:getgrav/grav into feature/gpm 2014-10-06 11:44:42 -07:00
Djamil Legato
1d90cecc11 Now initializing Remote\Grav with GPM 2014-10-06 10:59:58 -07:00
Djamil Legato
e771393489 Cleanup 2014-10-06 10:59:35 -07:00
Matias Griese
122107d1f8 Merge remote-tracking branch 'origin/feature/gpm' into feature/gpm 2014-10-06 20:58:54 +03:00
Matias Griese
ebd81a0dc8 Fix a bug in caching where configuration update had no effect 2014-10-06 20:58:42 +03:00
Djamil Legato
69282e4423 Added isUpdatable method for GPM\Remote\Grav 2014-10-06 10:58:34 -07:00
Djamil Legato
ce71ac352e Typo I suppose 2014-10-06 10:55:11 -07:00
Matias Griese
7738e052e1 Rename CompiledYaml class to CompiledYamlFile 2014-10-06 20:42:34 +03:00
Matias Griese
f43e047497 Fix a bug causing admin not to fill up the data fields 2014-10-06 14:37:04 +03:00
Andy Miller
9eb06da9a9 Added support for spaces in page and media urls 2014-10-05 18:43:33 -06:00
Andy Miller
ce4a9a02d4 Fix for file checking not updating the last modified time 2014-10-04 17:25:39 -06:00
Matias Griese
a8a82e1a3c Fix regression in blueprints 2014-10-02 00:58:47 +03:00
Matias Griese
5abc9b320b Fix missing user stream in gpm 2014-10-02 00:30:26 +03:00
Djamil Legato
0aba432688 Fixed Iterator default $items value 2014-10-01 14:12:45 -07:00
Djamil Legato
d80429a0ea Initializing themes and plugins only in the gpm cli, we don't need that in the classes 2014-10-01 14:12:09 -07:00
Matias Griese
d9145b0ebc Fix infinite loop 2014-10-01 23:28:39 +03:00
Djamil Legato
c05252a570 Removed locator initialization as it's no needed anymore 2014-10-01 12:43:12 -07:00
Djamil Legato
acd81eb7c3 Merge branch 'develop' into feature/gpm 2014-10-01 12:42:30 -07:00
Matias Griese
a3c58fcc5a Fix base directory for streams 2014-10-01 22:23:29 +03:00
Matias Griese
16b541a8ee Merge remote-tracking branch 'origin/develop' into develop 2014-10-01 22:12:26 +03:00
Matias Griese
d705530e64 Add stream "plugin" (alias of "plugins") 2014-10-01 22:12:13 +03:00
Andy Miller
84873484d5 Typo fix for constant 2014-10-01 12:54:10 -06:00
Djamil Legato
eb1883854e Merge branch 'develop' into feature/gpm
Conflicts:
	system/src/Grav/Common/Grav.php
	system/src/Grav/Common/Plugins.php
2014-10-01 11:37:56 -07:00
Matias Griese
9cb83ba368 Merge branch 'develop' of https://github.com/getgrav/grav into feature/multi-config 2014-10-01 20:35:41 +03:00
Andy Miller
82bc6fb308 Renaming 2014-09-30 15:49:09 -06:00
Andy Miller
5aa95c0b7e more flexible children() options 2014-09-30 15:48:36 -06:00
Matias Griese
419b46afb0 Minor fixes 2014-09-30 20:47:18 +03:00
Matias Griese
0b607c5197 Rename Grav\Component back to Grav\Common (unnessessary change) 2014-09-30 19:27:42 +03:00
Matias Griese
9da1ec836e Merge branch 'develop' of https://github.com/getgrav/grav into feature/multi-config
Conflicts:
	system/src/Grav/Common/Filesystem/File/Markdown.php
	system/src/Grav/Common/Grav.php
	system/src/Grav/Common/TwigExtension.php
2014-09-30 19:16:19 +03:00
Djamil Legato
5639941ff3 Fixed reset of the index when listing updates available 2014-09-26 17:57:02 -07:00
Djamil Legato
9d59db5adc Moved $container back to where it belongs 2014-09-26 16:25:19 -07:00
Djamil Legato
033f43b82f Minor space fix 2014-09-26 16:24:29 -07:00
Djamil Legato
91f4dc1a79 Fixed limit not working in the update command 2014-09-26 16:24:15 -07:00
Djamil Legato
9fe24272e3 Merge branch 'develop' into feature/gpm 2014-09-25 18:37:36 -07:00
Djamil Legato
b156c8752a Returning empty array if input wasn't provided. 2014-09-25 18:37:08 -07:00
Djamil Legato
93c51584db Deleted VERSION, no longer needed. 2014-09-25 18:35:45 -07:00
Djamil Legato
f36f31dfcf Added Selfupgrade command for upgrading Grav to the latest available version 2014-09-25 18:35:09 -07:00
Djamil Legato
5cef486981 Added Upgrader GPM class which allows to get details about the latest version of Grav available including version, release date and available assets to download 2014-09-25 18:33:47 -07:00
Djamil Legato
5db100ae49 Updated installer to support sophisticated and non sophisticated methods. Non sophisticated is delete, unzip, move. Sophisticated unzip and loops through each file in the zip (1 level deep only) and replace the node in the destination 2014-09-25 18:30:39 -07:00
Djamil Legato
46bcd1b095 Added new Grav Remote for fetching details about latest version 2014-09-25 18:28:26 -07:00
Djamil Legato
1fc668f0fc Merge branch 'develop' into feature/gpm 2014-09-25 18:27:09 -07:00
Andy Miller
5589b48e01 added columns in raw and ordering 2014-09-25 17:24:49 -06:00
Djamil Legato
cc28f85fde Merge branch 'develop' into feature/gpm 2014-09-25 15:34:58 -07:00
Djamil Legato
a6d46ebcd7 Forcing 2 space indentation on all yaml files 2014-09-25 15:34:29 -07:00
Matias Griese
ac3b0ba3ec Fix saving page as a new type 2014-09-25 23:31:59 +03:00
Andy Miller
e4ff2ea39d new visibile() and routable() filters to Collections 2014-09-25 12:16:54 -06:00
Djamil Legato
4653df1350 Merge branch 'develop' into feature/gpm 2014-09-24 16:00:13 -07:00
Djamil Legato
e3c5234038 Oops, the reference was not meant to be there 2014-09-24 15:59:56 -07:00
Djamil Legato
4f0e1ea8b0 Merge branch 'develop' into feature/gpm 2014-09-24 15:50:40 -07:00
Djamil Legato
eaa05ee252 Added new 'sort_by_key' twig filter which sorts an array by the desired key. It also takes in a direction as second argument which can be any of the predefined sorting flags (http://php.net/manual/en/array.constants.php) 2014-09-24 15:50:21 -07:00
Djamil Legato
0c4d0b5646 Merge branch 'develop' into feature/gpm 2014-09-24 13:54:34 -07:00
Andy Miller
00ac1da29d Add modular/regular page filtering to the children() method. Issue #60 2014-09-24 14:04:49 -06:00
Djamil Legato
6ac126867e Merge branch 'develop' into feature/gpm 2014-09-23 11:40:04 -07:00
Andy Miller
ea7ddeaf55 Added dynamic media support via the URL 2014-09-23 12:34:49 -06:00
Djamil Legato
f536dbfc20 Merge branch 'develop' into feature/gpm 2014-09-22 15:41:58 -07:00
Andy Miller
7261cea92f add filesize for medium 2014-09-22 15:58:12 -06:00
Andy Miller
41d9b52005 added ability to set default file extension 2014-09-22 15:57:46 -06:00
Djamil Legato
50529ae711 Merge branch 'develop' into feature/gpm 2014-09-22 10:57:59 -07:00
Andy Miller
1bfa2f31e7 Added uploads media field 2014-09-22 11:31:23 -06:00
Andy Miller
2b8e3d16a3 updated raw format 2014-09-21 17:17:53 -06:00
Andy Miller
c1e9cc2f02 Merge branch 'feature/frontmatter_support' into develop 2014-09-20 15:34:59 -06:00
Andy Miller
a39656d536 refactored to make more reliable 2014-09-20 15:33:41 -06:00
Andy Miller
103369cc64 sample implementation of frontmatter in pages 2014-09-19 17:51:29 -06:00
Matias Griese
0ab39a9b85 Fix page saving using html instead of raw input 2014-09-19 19:36:13 +03:00
Djamil Legato
af582f88fc Merge branch 'develop' into feature/gpm 2014-09-18 17:32:35 -07:00
Andy Miller
cccd084a55 working on blueprints 2014-09-18 18:05:00 -06:00
Matias Griese
bde5e65d10 Fix a bug on calling raw() from non-existing page 2014-09-18 11:42:27 +03:00
Matias Griese
874bfe47b8 Move page related blueprints into its own folder 2014-09-18 11:33:13 +03:00
Djamil Legato
31c12c9c0d Fixed infoCommand author url since it's now optional 2014-09-17 23:32:36 -07:00
Djamil Legato
ed8903ece3 Updated GPM to use the new repository logic 2014-09-17 17:15:56 -07:00
Djamil Legato
5c92069e52 Cleanup 2014-09-17 17:13:40 -07:00
Djamil Legato
79229f6b35 Fixed count of installed packages 2014-09-17 17:11:32 -07:00
Djamil Legato
f9272887f5 Added new method isUpdatable($slug) to know if a generic slug is updatable or not 2014-09-17 17:11:20 -07:00
Djamil Legato
aa9af76f02 Internal cache for the class to speed up retrieving plugins and themes 2014-09-17 17:08:36 -07:00
Djamil Legato
967202cbc3 Merge branch 'develop' into feature/gpm 2014-09-17 17:05:19 -07:00
Djamil Legato
a7007eabfa Merge branch 'develop' into feature/gpm 2014-09-17 17:03:19 -07:00
Matias Griese
0e75f999cc Minor fix on general page blueprints 2014-09-17 11:24:02 +03:00
Andy Miller
4e3b5039da Added title to new page blueprint 2014-09-16 18:12:34 -06:00
Matias Griese
7a2af8e63e Merge branches 'develop' and 'feature/multi-config' of https://github.com/getgrav/grav into feature/multi-config
Conflicts:
	system/src/Grav/Component/Filesystem/ResourceLocator.php
2014-09-16 09:45:17 +03:00
Andy Miller
3fe18a9213 set taxonomy field to large 2014-09-15 21:28:02 -06:00
Djamil Legato
bfa9cc294e Merge branch 'release/0.9.2' into develop 2014-09-15 17:08:40 -07:00
Djamil Legato
81c4ecaabd Merge branch 'release/0.9.2' 2014-09-15 17:08:39 -07:00
Djamil Legato
2f3f4a1137 Preparing for release v0.9.2 2014-09-15 17:08:27 -07:00
Andy Miller
c50cba64bb Went to simplified array rather than metadata object 2014-09-15 17:46:55 -06:00
Andy Miller
5b2aa6ead9 reverted naming 2014-09-15 17:25:10 -06:00
Andy Miller
6a3f6b9be2 missed one 2014-09-15 16:50:39 -06:00
Andy Miller
61169d868c changed metadata var name 2014-09-15 16:47:09 -06:00
Andy Miller
72023fcd4a added a comment to class 2014-09-15 16:36:16 -06:00
Andy Miller
7c160b9b08 updated metadata to be new format 2014-09-15 14:15:29 -06:00
Andy Miller
e8e90892aa minor change of default site description 2014-09-15 14:08:12 -06:00
Andy Miller
16ad95c205 Updated with more flexible metadata support in pages and site.yaml 2014-09-15 13:25:35 -06:00
Andy Miller
d509ed0a34 Code tidy #55 2014-09-14 16:20:54 -06:00
Andy Miller
6d0539c793 #55 Skip Minify by default on Windows systems. Can activate with assets.css_minify_windows = true if you have updated your ThreadStackSize in httpd.conf 2014-09-14 16:18:19 -06:00
Jan Chren
260f200d6f fixed problems with multiloading of includes
https://github.com/sebastianbergmann/phpunit/issues/314
2014-09-14 23:08:56 +02:00
Jan Chren
2d95b3bb09 PHPUnit testing introduced 2014-09-14 22:44:59 +02:00
Andy Miller
0276ce94df wrapper for existing modular() method 2014-09-12 17:06:35 -06:00
Andy Miller
978dc571bb Fix for menu not highlighting properly 2014-09-11 15:32:44 -06:00
Andy Miller
059189ec77 Fancy selectize support 2014-09-11 15:32:18 -06:00
Djamil Legato
1af0e7068e PSR 2014-09-11 14:09:42 -07:00
Djamil Legato
c8d6bfa455 Cleanup 2014-09-11 14:09:21 -07:00
Djamil Legato
1ad80acd72 Before exiting if a theme is not found, ensure we are not running it from the CLI 2014-09-11 13:08:22 -07:00
Djamil Legato
e19b15cacd Fixed InstallCommand to use the new Installer class 2014-09-11 12:45:17 -07:00
Djamil Legato
2178971e5e Added new Installer class 2014-09-11 12:44:53 -07:00
Djamil Legato
ffecd8bb87 PSR cleanup 2014-09-11 12:44:37 -07:00
Djamil Legato
4326e059a5 Themes now can get initialized by themselves! 2014-09-11 12:44:13 -07:00
Djamil Legato
adaadf3c60 Fixed static method call for all in GPM Plugins 2014-09-11 12:43:51 -07:00
Djamil Legato
c4d590674d Response cleanup and more docs 2014-09-11 12:41:24 -07:00
Djamil Legato
a86159a02c Fixed GPM cli to run the locator 2014-09-11 12:40:53 -07:00
Djamil Legato
88c9436df9 Added GPM docs 2014-09-11 12:40:29 -07:00
Djamil Legato
b26d938147 Folder::mkdir is now public 2014-09-11 12:09:38 -07:00
Djamil Legato
97808a8b6a Merge branch 'develop' into feature/gpm 2014-09-11 12:07:33 -07:00
Andy Miller
bf39adbda7 Fixes and reformatting of blueprints 2014-09-10 14:49:11 -06:00
Matias Griese
ec82760cbf Merge remote-tracking branch 'origin/develop' into develop 2014-09-10 20:41:09 +03:00
Matias Griese
3f6901c036 Fail gracefully when theme does not exist 2014-09-10 20:40:49 +03:00
Matias Griese
6d27da4f9b Add possibility to use /setup.php to customize site setup 2014-09-10 19:53:51 +03:00
Andy Miller
ee623596a8 system.yaml updates and synchronization 2014-09-10 10:12:08 -06:00
Andy Miller
9df91e482e system.yaml updates and synchronization 2014-09-10 10:05:36 -06:00
Matias Griese
5739e9729f Add stream support into ResourceLocator::addPath() 2014-09-10 14:45:16 +03:00
Matias Griese
eba77a8028 After merge tweaks 2014-09-10 11:22:26 +03:00
Matias Griese
82533c17e6 Merge branch 'develop' of https://github.com/getgrav/grav into feature/multi-config
Conflicts:
	system/config/streams.yaml
	system/src/Grav/Common/Config.php
	system/src/Grav/Common/Grav.php
	system/src/Grav/Common/Themes.php
	vendor/autoload.php
	vendor/composer/autoload_classmap.php
	vendor/composer/autoload_files.php
	vendor/composer/autoload_psr4.php
	vendor/composer/autoload_real.php
	vendor/composer/installed.json
2014-09-10 11:21:03 +03:00
Djamil Legato
fd64fd0822 Merge branch 'develop' into feature/gpm 2014-09-08 22:41:04 -07:00
Djamil Legato
04fb7326e5 Added index count 2014-09-08 22:40:17 -07:00
Djamil Legato
1d8f41df35 Fixed index of packages 2014-09-08 22:40:00 -07:00
Djamil Legato
1b01dff466 Removed FetchCommand since it's not needed anymore 2014-09-08 22:35:56 -07:00
Djamil Legato
e2021d1075 Merge pull request #52 from rindeal/feature/speed-optimizations
Just some speed optimizations
2014-09-08 22:29:39 -07:00
Djamil Legato
75d0b687c1 Converted InstallCommand and UpdateCommand to use the new GPM class 2014-09-08 22:28:44 -07:00
Djamil Legato
d0e6b23637 Throwing exception if fopen fails 2014-09-08 22:27:53 -07:00
Djamil Legato
e9f4c7d9a5 Added countInstalled method
Added findPackages method
2014-09-08 22:27:13 -07:00
Djamil Legato
a3b76252d1 Updated InfoCommand to use the new GPM class 2014-09-08 18:04:36 -07:00
Djamil Legato
231e278c76 Removed fetch logic from the ConsoleTrait as it's not needed anymore 2014-09-08 18:04:09 -07:00
Djamil Legato
5f41beccde Added method to find a package in the repository 2014-09-08 18:02:28 -07:00
Djamil Legato
a44193db16 Updated IndexCommand to use the new GPM class 2014-09-08 17:22:11 -07:00
Djamil Legato
c6dcb22d56 Added methods to retrieve single plugin/theme (remote or local) and all updatables.
Updatable items have now `version` defaulting to the local installed version and `available` as the remote version
2014-09-08 17:21:37 -07:00
Jan Chren
ff3ebb1f17 calculate only once in loops 2014-09-09 02:05:19 +02:00
Djamil Legato
8e489f6f09 Inverted order of $refresh and $callback arguments for fetching data ($refresh comes first now)
Can now pass $refresh and $callback when instantiating a new GPM
2014-09-08 16:07:09 -07:00
Djamil Legato
618a461835 Merge branch 'develop' into feature/gpm 2014-09-08 15:00:10 -07:00
Djamil Legato
281eb14178 Setting slug as key to the items array 2014-09-08 14:59:12 -07:00
Djamil Legato
1cbb39a38b Initial Grav Package Manager for handling local installed packages and get a status of available packages in the repository 2014-09-08 14:54:45 -07:00
Matias Griese
b50ec3fedd Separate themes from plugins, add themes:// stream and onTask events 2014-09-08 22:18:31 +03:00
Matias Griese
5f03dfa8ed Fix url() twig function when Grav isn't installed to root 2014-09-08 09:51:37 +03:00
Andy Miller
fa92ec0141 Added method to get user IP address 2014-09-07 19:57:14 -06:00
Andy Miller
193eda633c Added an option to disable the shutdown close connection to help with debugging 2014-09-07 09:00:29 -06:00
Djamil Legato
da0fafa800 Why does this keep getting reverted on my merges! 2014-09-06 15:31:45 -07:00
Djamil Legato
bfb5a74197 Merge branch 'develop' into feature/gpm 2014-09-06 15:23:36 -07:00
Djamil Legato
cceaeb8d42 Manual merge from develop 2014-09-06 15:20:15 -07:00
Andy Miller
2a43983ede added onShutdown event that fires after the connection has been closed (background processing) 2014-09-06 14:32:21 -06:00
Andy Miller
cd5707f2d2 removed barDump() test :) 2014-09-06 13:31:34 -06:00
Andy Miller
5667f8b023 Added shutddown event to flush buffer and set content length (tracy-safe) 2014-09-06 13:29:56 -06:00
Andy Miller
09248f2917 Added barDump() to Debugger 2014-09-06 13:28:47 -06:00
Djamil Legato
162409053f Merge branch 'develop' into feature/gpm 2014-09-05 22:42:00 -07:00
Djamil Legato
528f85642f Reverted streams for theme 2014-09-05 22:39:26 -07:00
Djamil Legato
9d1b50ffbb Merge branch 'develop' into feature/gpm 2014-09-05 22:33:50 -07:00
Andy Miller
95a806c8f8 removed stray test page 2014-09-05 22:41:48 -06:00
Andy Miller
7a38ac0810 override modified only if a non-markdown file was modified 2014-09-05 22:25:48 -06:00
Andy Miller
0fec4c003b getList was returning nothing 2014-09-05 22:25:13 -06:00
Andy Miller
80d08eace7 fixes for themes streams and such 2014-09-05 20:52:46 -06:00
Djamil Legato
e7568bf8d0 Merge branch 'develop' into feature/gpm 2014-09-05 18:58:48 -07:00
Djamil Legato
353f69deb3 Merge branch 'develop' into feature/gpm 2014-09-05 18:55:51 -07:00
Djamil Legato
e2917e36f8 Fixed use of streams. Using YAML_EXT constant for the extension. Changed get and all methods to static 2014-09-05 18:51:14 -07:00
Djamil Legato
8ddfa571d3 Merge pull request #48 from rindeal/feature/config-fixes
fix for PHP warning "is_file(): open_basedir restriction in effect", round 2
2014-09-05 18:14:07 -07:00
Jan Chren
393c8cab2a final workaround for PHP bug 52065 2014-09-06 03:09:07 +02:00
Jan Chren
cb03c7ab0d Revert "reverted back to file-only checks, changed to file_exists()"
This reverts commit d234b8e212.
2014-09-06 00:46:59 +02:00
Andy Miller
bce0797c55 Merge pull request #47 from rindeal/feature/config-fixes
fix for PHP warning "is_file(): open_basedir restriction in effect"
2014-09-05 16:04:54 -06:00
Jan Chren
d234b8e212 reverted back to file-only checks, changed to file_exists() 2014-09-06 00:00:47 +02:00
Djamil Legato
481e61b08b Merge pull request #46 from rindeal/feature/configurable-assets-attributes
Feature/configurable assets attributes
2014-09-05 14:51:34 -07:00
Jan Chren
f8fe108db5 PHPDocs updated 2014-09-05 23:19:18 +02:00
Jan Chren
103abc5f6d assets attributes implemented 2014-09-05 23:11:02 +02:00
Djamil Legato
f515438c62 Merge branch 'feature/vendor_free' into develop 2014-09-05 14:07:01 -07:00
Djamil Legato
470bac23bc Removed vendors from the mapping in SetupCommand 2014-09-05 13:40:35 -07:00
Djamil Legato
123c75ae2d Changed command suggestion to run for installing the dependencies 2014-09-05 12:58:56 -07:00
Djamil Legato
d05c049d4c Autorun composer install when running the grav cli 2014-09-05 12:58:36 -07:00
Djamil Legato
c7ece89fea Including compohser.phar 2014-09-05 12:58:15 -07:00
Djamil Legato
4c9e02d648 Ignoring vendor folder 2014-09-05 12:58:06 -07:00
Djamil Legato
57ab99fb13 Getting away from providing vendor with the repo 2014-09-05 12:56:43 -07:00
Andy Miller
217db86b10 accidental commit reverted 2014-09-05 08:36:11 -06:00
Jan Chren
e5037eb69b json_encode() is faster than serialize()
ref: http://stackoverflow.com/a/7723730/2566213
2014-09-05 16:17:05 +02:00
Jan Chren
8da3eb32f0 fix for PHP warning "is_file(): open_basedir restriction in effect"
Example:
PHP Warning: is_file(): open_basedir restriction in effect. File(/home/users/.../user/plugins/.gitkeep/.gitkeep.yaml) is not within the allowed path(s): (/home/users/.../:/usr/share/pear/) in .../web/system/src/Grav/Common/Config.php:237
2014-09-05 15:46:18 +02:00
Djamil Legato
24d1d4774e Cleanup police: using traits for GPM 2014-09-04 20:34:36 -07:00
Djamil Legato
b0f37079b0 Removed unused var declaration 2014-09-04 20:33:22 -07:00
Djamil Legato
026646cc46 Forgot to stage the gpm with last commit 2014-09-04 16:29:48 -07:00
Djamil Legato
258f55fe96 Vendors get now installed via composer automatically through first run of GPM or Grav cli. 2014-09-04 16:29:10 -07:00
Djamil Legato
d2cd2a3772 Including composer phar in bin/ 2014-09-04 16:26:55 -07:00
Djamil Legato
c8db29ce46 Removed copying of vendor/ since it's now vendor-free. Install command will take care of it. 2014-09-04 16:26:04 -07:00
Djamil Legato
8a4a810771 Fixed old setupCommand references 2014-09-04 16:19:24 -07:00
Djamil Legato
412216188d Ignoring vendors from now on 2014-09-04 15:41:46 -07:00
Djamil Legato
9103ea0c52 Finally vendor free! 2014-09-04 15:40:38 -07:00
Djamil Legato
ea1c26caa3 Added more info for the BackupCommand help 2014-09-04 15:13:08 -07:00
Djamil Legato
0977d330e6 Reworded description and help of Install and NewProject commands 2014-09-04 14:48:58 -07:00
Djamil Legato
f7c2df0050 Renamed setup command to sandbox. 2014-09-04 14:48:24 -07:00
Djamil Legato
e690e50d86 Merge branch 'develop' into feature/vendor_free 2014-09-04 14:41:14 -07:00
Andy Miller
0b0ce2eb27 Merge pull request #43 from rindeal/hotfix/debugger-mode
Some tiny fixes in Debugger
2014-09-04 11:50:18 -06:00
Jan Chren
cc81ea7e3e disable display_errors in production environment 2014-09-04 02:50:27 +02:00
Djamil Legato
32dfc001af Switch to old fashion array declaration in the index.php to allow PHP to parse without failing and then check for the required PHP version (5.4+) [Fixes #36] 2014-09-03 17:43:15 -07:00
Andy Miller
a0f5e35ad5 removed memcahed from the list of cache options 2014-09-03 17:54:50 -06:00
Andy Miller
971508f613 Removed memcache from auto setup, added memcache server config, removed memcached support 2014-09-03 17:49:55 -06:00
Jan Chren
144d64e0c8 detect mode only if debugger enabled 2014-09-04 00:29:45 +02:00
Jan Chren
a999046882 removed unused functions 2014-09-04 00:27:30 +02:00
Matias Griese
943921eadb Fix broken password validation 2014-09-03 21:19:16 +03:00
Matias Griese
0f87946276 Move new Blueprints class into RocketTheme\Toolbox 2014-09-03 19:13:57 +03:00
Matias Griese
9e032a7120 Fix wrong namespace declaration 2014-09-03 15:50:17 +03:00
Matias Griese
17e218bdb3 Turn debugger into production mode 2014-09-03 15:23:18 +03:00
Matias Griese
cb705f2d96 Remove debug message 2014-09-03 14:48:53 +03:00
Matias Griese
ac8483f894 Start using RocketTheme\Toolbox and remove local copies of the Toolbox classes 2014-09-03 14:34:40 +03:00
Matias Griese
3098ac9998 Update autoload files 2014-09-03 10:39:39 +03:00
Matias Griese
30246a8666 Post merge fixes 2014-09-03 10:33:45 +03:00
Matias Griese
f606999c40 Merge branch 'develop' of https://github.com/getgrav/grav into feature/multi-config
Conflicts:
	composer.json
	system/config/streams.yaml
	system/src/Grav/Common/Page/Page.php
	system/src/Grav/Common/Theme.php
	system/src/Grav/Common/Themes.php
	system/src/Grav/Component/Filesystem/ResourceLocator.php
	vendor/autoload.php
	vendor/composer/autoload_classmap.php
	vendor/composer/autoload_files.php
	vendor/composer/autoload_real.php
	vendor/composer/installed.json
2014-09-03 10:33:02 +03:00
Matias Griese
affa768efb Ground work for allowing multiple configurations 2014-09-03 09:57:46 +03:00
Matias Griese
c73e0d140d Go back to PSR-4 2014-09-03 09:07:29 +03:00
Djamil Legato
615c91b1c5 Minor change in the output 2014-09-02 22:52:00 -07:00
Djamil Legato
a0bc5bf765 Added Update command that scans for installed extensions and look for available updates (as well as install them!) 2014-09-02 22:41:07 -07:00
Djamil Legato
2ab433c339 Added an --all-yes option to assume yes to all questions (or automatically skip if it's a better approach) 2014-09-02 22:39:00 -07:00
Djamil Legato
267fa23d51 Super minor aesthetic change 2014-09-02 22:35:43 -07:00
Djamil Legato
e6565d9394 Fixed InstallCommand description 2014-09-02 17:51:28 -07:00
Djamil Legato
3b848e4a91 Merge branch 'develop' into feature/vendor_free 2014-09-02 17:40:56 -07:00
Your Name
891751d09e Fixed case where base_url was empty 2014-09-02 16:58:55 -05:00
user.email
15db488abc Merge branch 'release/0.9.1' 2014-09-02 14:05:39 -07:00
user.email
e40ea38dd6 Merge branch 'release/0.9.1' into develop 2014-09-02 14:05:39 -07:00
user.email
bbc8f6b293 Preparing for release v0.9.1 2014-09-02 14:05:15 -07:00
Djamil Legato
2c4a724fc0 Merge branch 'develop' into feature/vendor_free 2014-09-02 11:02:32 -07:00
Andy Miller
848e3e473f removed unused multi views reference 2014-09-02 11:54:57 -06:00
Matias Griese
263b7b3b1c Add support for twig markup like {{ url('theme://images/logo.png') }} 2014-09-02 20:04:54 +03:00
Matias Griese
48d7332e6a Make basic template inheritance to work 2014-09-02 19:25:18 +03:00
Djamil Legato
3568c25ef1 Merge branch 'develop' into feature/vendor_free 2014-09-01 23:21:41 -07:00
Djamil Legato
3948aa77a8 Cleanup 2014-09-01 23:21:18 -07:00
Matias Griese
7ca98baa34 Fix autoloading without composer update -o 2014-09-02 08:22:50 +03:00
Djamil Legato
0d0c22c940 Added destination option to allow using the IndexCommand on a different grav instance
IndexCommand displays the local and remote versions. It also detects if the package is already installed
2014-09-01 22:12:55 -07:00
Djamil Legato
1ac4014d64 Updated autoload 2014-09-01 17:59:03 -07:00
Djamil Legato
627646bf35 Merge branch 'develop' into feature/vendor_free 2014-09-01 17:57:48 -07:00
Djamil Legato
67a325e8e9 Removing the tmp folder when finished installing 2014-09-01 17:57:13 -07:00
Djamil Legato
69e345f64f Added InstallCommand that allows to install packages from the index list of grav 2014-09-01 17:53:34 -07:00
Matias Griese
ac7d1459d6 Move configure() from Theme to Themes class 2014-09-01 14:25:12 +03:00
Matias Griese
f66bc37b1b Fix ResourceLocator not working with multiple paths 2014-09-01 14:23:50 +03:00
Djamil Legato
37980d15e4 Added InfoCommand that provides more detailed informations about a package like description, author, version, etc. 2014-08-31 22:59:01 -07:00
Djamil Legato
3fc6c47b5e Added IndexCommand that lists all the resources available to download and install 2014-08-31 22:58:10 -07:00
Djamil Legato
dee24787ba Added FetchCommand to grab all the resources informations from getgrav.org and cache it for a day 2014-08-31 22:57:18 -07:00
Djamil Legato
7d9142fa03 Initial commit for GPM (Grav Package Manager) 2014-08-31 22:56:25 -07:00
Djamil Legato
51cca81bc8 Moved all console commands under the Cli folder for better organization (this requires a composer update -o to pick up) 2014-08-31 22:54:35 -07:00
Djamil Legato
8de6231116 Added fallbacks for URI class so that it can be used in the CLI 2014-08-31 22:52:04 -07:00
Andy Miller
e0ade6c658 Merge branch 'develop' of github.com:getgrav/grav into develop 2014-08-31 14:34:44 -06:00
Andy Miller
8cbe0ec591 added fix for file-based paths including .md filenames 2014-08-31 14:34:32 -06:00
Andy Miller
015490fc21 Update README.md 2014-08-30 14:35:29 -06:00
Andy Miller
a8c5d70967 Updated README with some more core feature links 2014-08-30 14:34:47 -06:00
Andy Miller
f95d6b11de Added support for absolute path images and refactored a little 2014-08-30 14:19:14 -06:00
Andy Miller
a33bfd8cb0 Added support for relative links and actual path links to markdown links 2014-08-30 13:40:55 -06:00
Andy Miller
188e7ddb75 Added updated minify package with fix for @supports, vendor commits and cleanup 2014-08-29 17:22:59 -06:00
Andy Miller
d3d02a2c79 Revert "Added Content-Length header"
This reverts commit a737cfc2ec.
2014-08-29 15:03:19 -06:00
Andy Miller
365f7bb596 Should address issue #38 where some people are not getting cache clears 2014-08-29 14:42:50 -06:00
Djamil Legato
a737cfc2ec Added Content-Length header 2014-08-29 10:01:05 -07:00
Matias Griese
6ce32e753d Fix theme thumbnail urls 2014-08-29 12:07:40 +03:00
Matias Griese
8f8e0b08a4 Add theme:/// to be able to refer all the themes 2014-08-29 11:57:49 +03:00
Matias Griese
a702af2348 Fix some misc bugs for admin plugin 2014-08-29 11:26:05 +03:00
Andy Miller
4b6be8e513 just a variable name change 2014-08-28 18:05:50 -06:00
Andy Miller
aa9d77cf8b Forgot to return the last_modified timestamp, and some cleanup 2014-08-28 18:01:12 -06:00
Andy Miller
bea19e008f Added method to check for changes by file rather than by folder, made it default option as its safest 2014-08-28 17:04:44 -06:00
Matias Griese
4e3db05d10 Some changes to make custom template object instantiation to work 2014-08-28 20:26:14 +03:00
Djamil Legato
9b3b463909 Moved Browser class into its proper location 2014-08-27 18:25:25 -07:00
Andy Miller
ad5d9eb3b7 Merge pull request #37 from ghLoser/patch-2
Update Markdown.php - Looks good! thanks.
2014-08-27 12:14:52 -06:00
ghLoser
3c1673d112 Update Markdown.php 2014-08-27 19:28:23 +02:00
Andy Miller
8f9780a443 Removed old unused processString method 2014-08-26 17:06:25 -06:00
Djamil Legato
2935d3cc0b Uri extension set for specific types only rather than all 2014-08-25 17:15:39 -07:00
Djamil Legato
e3626fcbcd Merge branch 'release/0.9.0' into develop 2014-08-25 10:30:24 -07:00
Matias Griese
b507815eef Fix some random bugs 2014-08-22 19:30:17 +03:00
Matias Griese
c56efb9a10 Use stream wrapper in pages, plugins and themes 2014-08-21 13:06:48 +03:00
Matias Griese
eba9002400 Implement ArrayTraits on Blueprint 2014-08-21 13:01:30 +03:00
Matias Griese
7d5426144d Implement more ArrayTraits and use them in Iterator 2014-08-21 12:58:48 +03:00
621 changed files with 22269 additions and 62508 deletions

View File

@@ -2,15 +2,15 @@ git:
problems:
url: https://github.com/getgrav/grav-plugin-problems
path: user/plugins/problems
branch: develop
branch: master
error:
url: https://github.com/getgrav/grav-plugin-error
path: user/plugins/error
branch: develop
branch: master
antimatter:
url: https://github.com/getgrav/grav-theme-antimatter
path: user/themes/antimatter
branch: develop
branch: master
links:
problems:
src: grav-plugin-problems

View File

@@ -11,3 +11,8 @@ trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
# 2 space indentation
[*.yaml, *.yml]
indent_style = space
indent_size = 2

8
.gitignore vendored Executable file → Normal file
View File

@@ -1,10 +1,13 @@
# Composer
composer.lock
.composer
vendor/
# Sass
.sass-cache
# Grav Specific
backup/*
!backup/.*
cache/*
!cache/.*
assets/*
@@ -13,12 +16,15 @@ logs/*
!logs/.*
images/*
!images/.*
user/accounts/*
!user/accounts/.*
user/data/*
!user/data/.*
user/plugins/*
!user/plugins/.*
user/themes/*
!user/themes/.*
user/localhost/config/security.yaml
# OS Generated
.DS_Store*

66
.htaccess Executable file → Normal file
View File

@@ -1,10 +1,8 @@
<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine On
##
## Begin RewriteBase
# If you are getting 404 errors on subpages, you may have to uncomment the RewriteBase entry
# You should change the '/' to your appropriate subfolder. For example if you have
# your Grav install at the root of your site '/' should work, else it might be something
@@ -13,29 +11,55 @@ RewriteEngine On
# RewriteBase /
# Access site
## End - RewriteBase
## Begin - Exploits
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Grav
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Exploits
## Begin - Index
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
## End - Index
# Block various user files from being accessed directly
RewriteRule ^user/accounts/(.*)$ error [R=301,L]
RewriteRule ^user/config/(.*)$ error [R=301,L]
RewriteRule ^user/(.*)\.(txt|md|html|php|yaml|json|twig|sh|bat)$ error [R=301,L]
# Block cache/
RewriteRule ^cache/(.*) error [R=301,L]
# Block bin/
RewriteRule ^bin/(.*)$ error [R=301,L]
# Block system/
RewriteRule ^system/(.*)$ error [R=301,L]
# Block vendor/
RewriteRule ^vendor/(.*)$ error [R=301,L]
## Begin - Security
# Block all direct access for these folders
RewriteRule ^(.git|cache|bin|logs|backup)/(.*) error [F]
# Block access to specific file types for these system folders
RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|yaml|php|pl|py|cgi|twig|sh|bat)$ error [F]
# Block access to specific file types for these user folders
RewriteRule ^(user)/(.*)\.(txt|md|yaml|php|pl|py|cgi|twig|sh|bat)$ error [F]
# Block all direct access to .md files:
RewriteRule \.md$ error [F]
# Block all direct access to files and folders beginning with a dot
RewriteRule (^\.|/\.) - [F]
# Block access to specific files in the root folder
RewriteRule ^(LICENSE.txt|composer.lock|composer.json|nginx.conf|web.config|htaccess.txt|\.htaccess)$ error [F]
## End - Security
</IfModule>
# Prevent file browsing
# Begin - Prevent Browsing and Set Default Resources
Options -Indexes
DirectoryIndex index.php index.html index.htm
# End - Prevent Browsing and Set Default Resources

84
.travis.yml Normal file
View File

@@ -0,0 +1,84 @@
language: php
php: 5.6
branches:
only:
- master
- build_test
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}): Grav Core and Skeletons packages have been uploaded. (<a href="%{build_url}">Details</a>)'
format: html
env:
global:
# Colors!
- TEXTRESET=$(tput sgr0) # reset the foreground colour
- RED=$(tput setaf 1)
- GREEN=$(tput setaf 2)
- YELLOW=$(tput setaf 3)
- BLUE=$(tput setaf 4)
- BOLD=$(tput bold)
# User
- GH_USER="getgrav"
# Paths
- RT_DEVTOOLS=$HOME/devtools
- GOPATH="$HOME/go"
- PATH="$GOPATH/bin:$PATH"
# GH_TOKEN [API Key]
- secure: "jS+c+g2v33vypG4VtqiSDW2qQ4dGJZlrUKBRCztoy1yrOrYRPvc5Vzi/AS3fDmZ4yizukEwmUNNzyZQcgFvLPpmCCml46Dovp8R9OXhbNe8OnULmaSn2Zkr71oblMYu6ZP+RpYvNq0BIdSB3u2TiFriHMiTIkX9UwZNaUCOX1ig="
# BB_TOKEN value => "user:pass@"
- secure: "einUtSEkUWy2IrqLXyVjwUU+mwaaoiOXRRVdLBpA3Zye6bZx8cm5h/5AplkPWhM/NmCJoW/MwNZHHkFhlr3mDRov5iOxVmTTYfnXB+I5lxYTSgduOLLErS7mU8hfADpVDU8bHNU44fNGD3UEiG1PD4qQBX4DMlqIFmR20mjs81k="
# GH_API_USER [for curl]
- secure: "Xbk/V9aIys0NxccJGR3Zrm2GRxDnA0RuazBs1puIboTYDhbi0Z7JTL+mOx3xp5Kfoniad/xAuijQESTM9MMrKqq/qCzhAMaC1+vcL4pCHZH4NSG6DBxB9BPkKVFq+1llu5FTEf8bkxHzwGR0l1ARW6TVRcgTHr5B58bCEIwEOrI="
# Latest Release version
- 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)
before_install:
- export TZ=Pacific/Honolulu
- composer self-update
- go get github.com/aktau/github-release
- echo "Travis Date: `date`"
- 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}";
./build-grav.sh skeletons.txt;
fi
script:
- if [ ! -z "$TRAVIS_TAG" ]; then
FILES="$RT_DEVTOOLS/grav-dist/*.zip";
for file in ${FILES[@]}; do
NAME=${file##*/};
if [[ "$NAME" == *"-rc"* ]]; then
REPO="$(echo ${NAME} | rev | cut -f 3- -d "-" | rev)";
else
REPO="$(echo ${NAME} | rev | cut -f 2- -d "-" | rev)";
fi;
if [[ $REPO == 'grav' || $REPO == 'grav-admin' || $REPO == 'grav-update' ]]; then
REPO="grav";
fi;
API="$(curl --fail --user "${GH_API_USER}" -s https://api.github.com/repos/${GH_USER}/${REPO}/releases/latest)";
ASSETS="$(echo "${API}" | node gh-assets.js)";
TAG="$(echo "${API}" | grep tag_name | head -n 1 | cut -d '"' -f 4)";
if [ $REPO == "grav" ]; then
TAG="$TRAVIS_TAG";
fi;
if [ ! -z "$ASSETS" ]; then
for asset in ${ASSETS[@]}; do
asset_id=$(echo ${asset} | cut -d ':' -f 1);
asset_name=$(echo ${asset} | cut -d ':' -f 2);
if [ "${NAME}" == "${asset_name}" ]; then
echo -e "\nAsset ${BOLD}${BLUE}${NAME}${TEXTRESET} already exists in ${YELLOW}${REPO}${TEXTRESET}@${BOLD}${YELLOW}${TAG}${TEXTRESET}... deleting id ${BOLD}${RED}${asset_id}${TEXTRESET}...";
curl -X DELETE --fail --user "${GH_API_USER}" "https://api.github.com/repos/${GH_USER}/${REPO}/releases/assets/${asset_id}";
fi;
done;
fi;
echo "Uploading package ${BOLD}${BLUE}${NAME}${TEXTRESET} to ${YELLOW}${REPO}${TEXTRESET}@${YELLOW}${TAG}${TEXTRESET}";
github-release upload --security-token $GH_TOKEN --user ${GH_USER} --repo $REPO --tag "$TAG" --name "$NAME" --file "$file";
done;
fi

1035
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,25 @@
# ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav
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 principals to other flat-file CMS platforms, but has a different design philosophy than most.
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad/mini.png)](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad) [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/getgrav/grav?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
The underlying architecture of Grav has been designed to use well-established and _best-in-class_ technologies, where applicable, to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:
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
* [Doctrine Cache](http://docs.doctrine-project.org/en/2.0.x/reference/caching.html): layer for incredible performance
* [Parsedown](http://parsedown.org/): for fast Markdown and Markdown Extra support
* [Doctrine Cache](http://docs.doctrine-project.org/en/2.0.x/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
* [Gregwar Image Library](https://github.com/Gregwar/Image): for dynamic image manipulation
# Requirements
- PHP 5.4 or higher. Check the [required modules list](http://learn.getgrav.org/basics/requirements#php-requirements)
- Check the [Apache](http://learn.getgrav.org/basics/requirements#apache-requirements) or [IIS](http://learn.getgrav.org/basics/requirements#iis-requirements) requirements
# QuickStart
@@ -33,10 +45,38 @@ You can download a **ready-built** package from the [Downloads page on http://ge
Check out the [install procedures](http://learn.getgrav.org/basics/installation) for more information.
# Adding Functionality
You can download [plugins](http://getgrav.org/downloads/plugins) or [themes](http://getgrav.org/downloads/themes) manually from the appropriate tab on the [Downloads page on http://getgrav.org](http://getgrav.org/downloads), but the preferred solution is to use the [Grav Package Manager](http://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
```
$ bin/gpm index
```
This will display all the available plugins and then you can install one or more with:
```
$ bin/gpm install <plugin/theme>
```
# Updating
To update Grav you should use the [Grav Package Manager](http://learn.getgrav.org/advanced/grav-gpm) or `GPM`:
```
$ bin/gpm selfupgrade
```
To update plugins and themes:
```
$ bin/gpm update
```
# Contributing
We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement.
However, we ask that any contribution follow our simple guidelines in order to be properly received.
However, we ask that any contributions follow our simple guidelines in order to be properly received.
All our projects follow the [GitFlow branching model][gitflow-model], from development to release. If you are not familiar with it, there are several guides and tutorials to make you understand what it is about.
@@ -63,7 +103,7 @@ What you mainly want to know is that:
# License
See [LICENSE](LICENSE)
See [LICENSE](LICENSE.txt)
[gitflow-model]: http://nvie.com/posts/a-successful-git-branching-model/

View File

@@ -1 +0,0 @@
0.9.0

0
backup/.gitkeep Normal file
View File

BIN
bin/composer.phar Executable file

Binary file not shown.

54
bin/gpm Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env php
<?php
define('GRAV_CLI', true);
if (version_compare($ver = PHP_VERSION, $req = '5.4.0', '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
}
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 Grav\Common\Grav;
$autoload = require_once(__DIR__ . '/../vendor/autoload.php');
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
if (!file_exists(ROOT_DIR . 'index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!');
}
if (!function_exists('curl_version')) {
exit('FATAL: GPM requires PHP Curl module to be installed');
}
$grav = Grav::instance(array('loader' => $autoload));
$grav['config']->init();
$grav['streams'];
$app = new Application('Grav Package Manager', GRAV_VERSION);
$app->addCommands(array(
new \Grav\Console\Gpm\IndexCommand(),
new \Grav\Console\Gpm\VersionCommand(),
new \Grav\Console\Gpm\InfoCommand(),
new \Grav\Console\Gpm\InstallCommand(),
new \Grav\Console\Gpm\UninstallCommand(),
new \Grav\Console\Gpm\UpdateCommand(),
new \Grav\Console\Gpm\SelfupgradeCommand(),
));
$app->run();

View File

@@ -1,13 +1,28 @@
#!/usr/bin/env php
<?php
define('GRAV_CLI', true);
if (version_compare($ver = PHP_VERSION, $req = '5.4.0', '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
}
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;
require_once(__DIR__ . '/../vendor/autoload.php');
require_once __DIR__ . '/../vendor/autoload.php';
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
@@ -19,11 +34,13 @@ if (!file_exists(ROOT_DIR . 'index.php')) {
$app = new Application('Grav CLI Application', '0.1.0');
$app->addCommands(array(
new Grav\Console\InstallCommand(),
new Grav\Console\SetupCommand(),
new Grav\Console\CleanCommand(),
new Grav\Console\ClearCacheCommand(),
new Grav\Console\BackupCommand(),
new Grav\Console\NewProjectCommand(),
new Grav\Console\Cli\InstallCommand(),
new Grav\Console\Cli\ComposerCommand(),
new Grav\Console\Cli\SandboxCommand(),
new Grav\Console\Cli\CleanCommand(),
new Grav\Console\Cli\ClearCacheCommand(),
new Grav\Console\Cli\BackupCommand(),
new Grav\Console\Cli\NewProjectCommand(),
new Grav\Console\Cli\NewUserCommand(),
));
$app->run();

116
bin/plugin Executable file
View File

@@ -0,0 +1,116 @@
#!/usr/bin/env php
<?php
define('GRAV_CLI', true);
if (version_compare($ver = PHP_VERSION, $req = '5.4.0', '<')) {
exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req));
}
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\Filesystem\Folder;
$autoload = require_once(__DIR__ . '/../vendor/autoload.php');
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
if (!file_exists(ROOT_DIR . 'index.php')) {
exit('FATAL: Must be run from ROOT directory of Grav!');
}
$grav = Grav::instance(array('loader' => $autoload));
$grav['config']->init();
$grav['streams'];
$grav['plugins']->init();
$grav['themes']->init();
$app = new Application('Grav Plugins Commands', GRAV_VERSION);
$pattern = '([A-Z]\w+Command\.php)';
// get arguments and strip the application name
if (null === $argv) {
$argv = $_SERVER['argv'];
}
$bin = array_shift($argv);
$name = array_shift($argv);
$argv = array_merge([$bin], $argv);
$input = new ArgvInput($argv);
$plugin = $grav['plugins']->get($name);
$output = new ConsoleOutput();
$output->getFormatter()->setStyle('red', new OutputFormatterStyle('red', null, array('bold')));
$output->getFormatter()->setStyle('white', new OutputFormatterStyle('white', null, array('bold')));
if (!$name) {
$output->writeln('');
$output->writeln("<red>Usage:</red>");
$output->writeln(" {$bin} [slug] [command] [arguments]");
$output->writeln('');
$output->writeln("<red>Example:</red>");
$output->writeln(" {$bin} error log -l 1 --trace");
$list = Folder::all('plugins://', ['compare' => 'Pathname', 'pattern' => '/\/cli\/' . $pattern . '$/usm']);
if (count($list)) {
$available = [];
$output->writeln('');
$output->writeln('<red>Plugins with CLI available:</red>');
foreach ($list as $index => $entry) {
$split = explode('/', $entry);
$entry = array_shift($split);
$index = str_pad($index++ + 1, 2, '0', STR_PAD_LEFT);
if (in_array($entry, $available)) {
continue;
}
$available[] = $entry;
$output->writeln(' ' . $index . ". <red>" . str_pad($entry, 15) . "</red> <white>${bin} ${entry} list</white>");
}
}
exit;
}
if ($plugin === null) {
$output->writeln("<red>Grav Plugin <white>'{$name}'</white> is not installed</red>");
exit;
}
$path = 'plugins://' . $name . '/cli';
try {
$commands = Folder::all($path, ['compare' => 'Filename', 'pattern' => '/' . $pattern . '$/usm']);
} catch (\RuntimeException $e) {
$output->writeln("<red>No Console Commands for <white>'{$name}'</white> where found in <white>'{$path}'</white></red>");
exit;
}
foreach ($commands as $command) {
require_once "plugins://{$name}/cli/{$command}";
$command = 'Grav\Plugin\Console\\' . preg_replace('/.php$/', '', $command);
$app->add(new $command());
}
$app->run($input);

View File

@@ -7,22 +7,34 @@
"license": "MIT",
"require": {
"php": ">=5.4.0",
"twig/twig": "~1.16",
"erusev/parsedown-extra": "dev-master",
"symfony/yaml": "~2.5",
"symfony/console": "~2.5",
"symfony/event-dispatcher": "~2.5",
"doctrine/cache": "~1.3",
"tracy/tracy": "~2.2",
"twig/twig": "~1.23",
"erusev/parsedown": "dev-master as 1.6.0",
"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.5",
"filp/whoops": "1.1.10",
"monolog/monolog": "~1.0",
"gregwar/image": "~2.0",
"ircmaxell/password-compat": "1.0.*",
"mrclay/minify": "~2.2",
"donatj/phpuseragentparser": "dev-master",
"pimple/pimple": "~3.0"
"donatj/phpuseragentparser": "~0.3",
"pimple/pimple": "~3.0",
"rockettheme/toolbox": "~1.2",
"maximebf/debugbar": "~1.10"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/getgrav/parsedown"
}
],
"autoload": {
"psr-4": {
"Grav\\": "system/src/"
"Grav\\": "system/src/Grav"
},
"files": ["system/defines.php"]
},

1148
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

65
htaccess.txt Normal file
View File

@@ -0,0 +1,65 @@
<IfModule mod_rewrite.c>
RewriteEngine On
## Begin RewriteBase
# If you are getting 404 errors on subpages, you may have to uncomment the RewriteBase entry
# You should change the '/' to your appropriate subfolder. For example if you have
# your Grav install at the root of your site '/' should work, else it might be something
# along the lines of: RewriteBase /<your_sub_folder>
##
# RewriteBase /
## End - RewriteBase
## Begin - Exploits
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Grav
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Exploits
## Begin - Index
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
## End - Index
## Begin - Security
# Block all direct access for these folders
RewriteRule ^(.git|cache|bin|logs|backup)/(.*) error [F]
# Block access to specific file types for these system folders
RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|yaml|php|pl|py|cgi|twig|sh|bat)$ error [F]
# Block access to specific file types for these user folders
RewriteRule ^(user)/(.*)\.(txt|md|yaml|php|pl|py|cgi|twig|sh|bat)$ error [F]
# Block all direct access to .md files:
RewriteRule \.md$ error [F]
# Block all direct access to files and folders beginning with a dot
RewriteRule (^\.|/\.) - [F]
# Block access to specific files in the root folder
RewriteRule ^(LICENSE.txt|composer.lock|composer.json|nginx.conf|web.config|htaccess.txt|\.htaccess)$ error [F]
## End - Security
</IfModule>
# Begin - Prevent Browsing and Set Default Resources
Options -Indexes
DirectoryIndex index.php index.html index.htm
# End - Prevent Browsing and Set Default Resources

View File

@@ -2,34 +2,39 @@
namespace Grav;
if (version_compare($ver = PHP_VERSION, $req = '5.4.0', '<')) {
exit(sprintf('You are running PHP %s, but Grav needs at least <strong>PHP %s</strong> to run.', $ver, $req));
throw new \RuntimeException(sprintf('You are running PHP %s, but Grav needs at least <strong>PHP %s</strong> to run.', $ver, $req));
}
// Ensure vendor libraries exist
$autoload = __DIR__ . '/vendor/autoload.php';
if (!is_file($autoload)) {
exit('Please run: <i>composer install -o</i>');
throw new \RuntimeException("Please run: <i>bin/grav install</i>");
}
use Grav\Common\Grav;
use Grav\Common\Debugger;
// Register the auto-loader.
$loader = require_once $autoload;
if (!ini_get('date.timezone')) {
date_default_timezone_set('UTC');
}
// 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')) {
throw new \RuntimeException("'mbstring' extension is not loaded. This is required for Grav to run correctly");
}
mb_internal_encoding('UTF-8');
// Get the Grav instance
$grav = Grav::instance(
[
'loader' => $loader,
'debugger' => new Debugger(Debugger::PRODUCTION)
]
array(
'loader' => $loader
)
);
// Process the page
try {
$grav['debugger']->init();
$grav->process();
} catch (\Exception $e) {
$grav->fireEvent('onFatalException');
throw $e;

48
lighttpd.conf Normal file
View File

@@ -0,0 +1,48 @@
############# DO NOT FORGET TO CHANGE "grav_path" BY YOUR ACTUAL GRAV INSTALLATION FOLDER #############
############# IF GRAV IS AT THE ROOT OF YOUR WEBSITE, ie http://yoursite.tld POINTS TO #############
############# GRAV DIRECTLY, THEN JUST REMOVE ANY "/grav_path/" MENTION BELOW. OTHERWISE #############
############# WE ASSUME YOU RUN AN INSTALLATION SUCH AS http://yoursite.tld/grav_path/ #############
#######################################################################################################
### GRAV RULES FOR LIGHTTPD ###
### By Mr3ase ###
### Last Rev. 2015/11/20 ###
#PREVENTING EXPLOITS
$HTTP["querystring"] =~ "base64_encode[^(]*\([^)]*\)" {
url.redirect = (".*" => "/grav_path/index.php" )
}
$HTTP["querystring"] =~ "(<|%3C)([^s]*s)+cript.*(>|%3E)" {
url.redirect = (".*" => "/grav_path/index.php" )
}
$HTTP["querystring"] =~ "GLOBALS(=|\[|\%[0-9A-Z])" {
url.redirect = (".*" => "/grav_path/index.php" )
}
$HTTP["querystring"] =~ "_REQUEST(=|\[|\%[0-9A-Z])" {
url.redirect = (".*" => "/grav_path/index.php" )
}
#REROUTING TO THE INDEX PAGE
url.rewrite-if-not-file = (
"^/grav_path/(.*)$" => "/grav_path/index.php"
)
#IMPROVING SECURITY
$HTTP["url"] =~ "^/grav_path/(LICENSE.txt|composer.json|composer.lock|nginx.conf|web.config)$" {
url.access-deny = ("")
}
$HTTP["url"] =~ "^/grav_path/(.git|cache|bin|logs|backup)/(.*)" {
url.access-deny = ("")
}
$HTTP["url"] =~ "^/grav_path/(system|user|vendor)/(.*)\.(txt|md|html|yaml|php|twig|sh|bat)$" {
url.access-deny = ("")
}
$HTTP["url"] =~ "^/grav_path/(\.(.*))|(\.(.*)/)" {
url.access-deny = ("")
}
url.access-deny = (".md","~",".inc")
#PREVENT BROWSING AND SET INDEXES
$HTTP["url"] =~ "^/grav_path($|/)" {
dir-listing.activate = "disable"
index-file.names = ( "index.php", "index.html" , "index.htm" )
}

104
nginx.conf Executable file → Normal file
View File

@@ -1,66 +1,44 @@
worker_processes 1;
server {
#listen 80;
index index.html index.php;
events {
worker_connections 1024;
## Begin - Server Info
root /home/user/www/html;
server_name localhost;
## End - Server Info
## Begin - Index
# for subfolders, simply adjust:
# `location /subfolder {`
# and the rewrite to use `/subfolder/index.php`
location / {
try_files $uri $uri/ /index.html;
if (!-e $request_filename){ rewrite ^(.*)$ /index.php last; }
}
## End - Index
## Begin - PHP
location ~ \.php$ {
# Choose either a socket or TCP/IP address
fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
## End - PHP
## Begin - Security
# deny all direct access for these folders
location ~* /(.git|cache|bin|logs|backups)/.*$ { return 403; }
# deny running scripts inside core system folders
location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny running scripts inside user folder
location ~* /user/.*\.(txt|md|yaml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny access to specific files in the root folder
location ~ /(LICENSE.txt|composer.lock|composer.json|nginx.conf|web.config|htaccess.txt|\.htaccess) { return 403; }
## End - Security
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location / {
root html;
index index.php;
if (!-e $request_filename){ rewrite ^(.*)$ /index.php last; }
}
location /user {
rewrite ^/user/accounts/(.*)$ /error redirect;
rewrite ^/user/config/(.*)$ /error redirect;
rewrite ^/user/(.*)\.(txt|md|html|php|yaml|json|twig|sh|bat)$ /error redirect;
}
location /cache {
rewrite ^/cache/(.*) /error redirect;
}
location /bin {
rewrite ^/bin/(.*)$ /error redirect;
}
location /system {
rewrite ^/system/(.*)$ /error redirect;
}
location /vendor {
rewrite ^/vendor/(.*)$ /error redirect;
}
# Remember to change 127.0.0.1:9000 to the Ip/port
# you configured php-cgi.exe to run from
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}

11
robots.txt Normal file
View File

@@ -0,0 +1,11 @@
User-agent: *
Disallow: /backup/
Disallow: /bin/
Disallow: /cache/
Disallow: /grav/
Disallow: /logs/
Disallow: /system/
Disallow: /vendor/
Disallow: /user/
Allow: /user/pages/
Allow: /user/themes/

View File

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

BIN
system/assets/grav.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

110
system/assets/whoops.css Normal file
View File

@@ -0,0 +1,110 @@
body {
background-color: #eee;
}
body header {
background: #349886;
border-left: 8px solid #29796B;
}
body .clipboard {
width: 28px;
height: 28px;
background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcAQMAAABIw03XAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///////9VfPVsAAAAAnRSTlP/AOW3MEoAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAFnRFWHRDcmVhdGlvbiBUaW1lADEwLzE1LzE0xr/LJAAAADhJREFUCJlj+P///wcGBPGDQR5E8OMi2IEEczOIaAQRHSCioQBGHAAR/7AT/z+DiA8MMALVXhABAJf9Sr5aY+UFAAAAAElFTkSuQmCC);
}
body .exc-title-primary {
color: #1C3631;
text-shadow: none;
}
body .exc-title {
color: #2F5B52;
text-shadow: none;
}
body .data-table-container label {
color: #0082BA;
}
body .frame {
border: 0;
}
body .frames-container {
overflow-y: auto;
overflow-x: hidden;
}
body .active .frame-class {
color: #E3D8E9;
}
body .frame-class {
color: #9055AF;
}
body .frame.active {
border: 0;
box-shadow: none;
background-color: #9055AF;
}
body .frame:not(.active):hover {
background: #e9e9e9;
}
body .frame-file, body .data-table tbody {
font-family: "DejaVu Sans Mono", Menlo, Monaco, Consolas, Courier, monospace;
font-size: 13px;
}
body .frame-code {
background: #305669;
border-left: 8px solid #253A47;
padding: 1rem;
}
body .frame-code .frame-file {
background: #253A47;
color: #eee;
text-shadow: none;
box-shadow: none;
font-family: inherit;
}
body .frame-code .frame-file strong {
color: #fff;
font-weight: normal;
}
body .frame-comments {
background: #283E4D;
box-shadow: none;
}
body .frame-comments.empty:before {
color: #789AAB;
}
body .details-container {
border: 0;
}
body .details {
background-color: #eee;
border-left: 8px solid #ddd;
padding: 1rem;
}
body .code-block {
background: #2C4454;
box-shadow: none;
font-family: "DejaVu Sans Mono", Menlo, Monaco, Consolas, Courier, monospace;
font-size: 13px;
}
body .handler.active {
background: #666;
}

View File

@@ -0,0 +1,5 @@
title: PLUGIN_ADMIN.MEDIA
form:
validation: loose
fields:

View File

@@ -0,0 +1,116 @@
title: PLUGIN_ADMIN.SITE
form:
validation: loose
fields:
content:
type: section
title: PLUGIN_ADMIN.DEFAULTS
underline: true
fields:
title:
type: text
label: PLUGIN_ADMIN.SITE_TITLE
size: large
placeholder: PLUGIN_ADMIN.SITE_TITLE_PLACEHOLDER
help: PLUGIN_ADMIN.SITE_TITLE_HELP
author.name:
type: text
size: large
label: PLUGIN_ADMIN.DEFAULT_AUTHOR
help: PLUGIN_ADMIN.DEFAULT_AUTHOR_HELP
author.email:
type: text
size: large
label: PLUGIN_ADMIN.DEFAULT_EMAIL
help: PLUGIN_ADMIN.DEFAULT_EMAIL_HELP
validate:
type: email
taxonomies:
type: selectize
size: large
label: PLUGIN_ADMIN.TAXONOMY_TYPES
classes: fancy
help: PLUGIN_ADMIN.TAXONOMY_TYPES_HELP
validate:
type: commalist
summary:
type: section
title: PLUGIN_ADMIN.PAGE_SUMMARY
underline: true
fields:
summary.enabled:
type: toggle
label: PLUGIN_ADMIN.ENABLED
highlight: 1
help: PLUGIN_ADMIN.ENABLED_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
summary.size:
type: text
size: x-small
label: PLUGIN_ADMIN.SUMMARY_SIZE
help: PLUGIN_ADMIN.SUMMARY_SIZE_HELP
validate:
type: int
min: 0
max: 65536
summary.format:
type: toggle
label: PLUGIN_ADMIN.FORMAT
classes: fancy
help: PLUGIN_ADMIN.FORMAT_HELP
highlight: short
options:
'short': PLUGIN_ADMIN.SHORT
'long': PLUGIN_ADMIN.LONG
summary.delimiter:
type: text
size: x-small
label: PLUGIN_ADMIN.DELIMITER
help: PLUGIN_ADMIN.DELIMITER_HELP
metadata:
type: section
title: PLUGIN_ADMIN.METADATA
underline: true
fields:
metadata:
type: array
label: PLUGIN_ADMIN.METADATA
help: PLUGIN_ADMIN.METADATA_HELP
placeholder_key: PLUGIN_ADMIN.METADATA_KEY
placeholder_value: PLUGIN_ADMIN.METADATA_VALUE
routes:
type: section
title: PLUGIN_ADMIN.REDIRECTS_AND_ROUTES
underline: true
fields:
redirects:
type: array
label: PLUGIN_ADMIN.CUSTOM_REDIRECTS
help: PLUGIN_ADMIN.CUSTOM_REDIRECTS_HELP
placeholder_key: PLUGIN_ADMIN.CUSTOM_REDIRECTS_PLACEHOLDER_KEY
placeholder_value: PLUGIN_ADMIN.CUSTOM_REDIRECTS_PLACEHOLDER_VALUE
routes:
type: array
label: PLUGIN_ADMIN.CUSTOM_ROUTES
help: PLUGIN_ADMIN.CUSTOM_ROUTES_HELP
placeholder_key: PLUGIN_ADMIN.CUSTOM_ROUTES_PLACEHOLDER_KEY
placeholder_value: PLUGIN_ADMIN.CUSTOM_ROUTES_PLACEHOLDER_VALUE

View File

@@ -0,0 +1,7 @@
title: PLUGIN_ADMIN.FILE_STREAMS
form:
validation: loose
fields:
schemes.xxx:
type: array

View File

@@ -0,0 +1,834 @@
title: PLUGIN_ADMIN.SYSTEM
form:
validation: loose
fields:
content:
type: section
title: PLUGIN_ADMIN.CONTENT
underline: true
fields:
home.alias:
type: pages
size: medium
classes: fancy
label: PLUGIN_ADMIN.HOME_PAGE
show_all: false
show_modular: false
show_root: false
help: PLUGIN_ADMIN.HOME_PAGE_HELP
pages.theme:
type: themeselect
classes: fancy
selectize: true
size: medium
label: PLUGIN_ADMIN.DEFAULT_THEME
help: PLUGIN_ADMIN.DEFAULT_THEME_HELP
pages.process:
type: checkboxes
label: PLUGIN_ADMIN.PROCESS
help: PLUGIN_ADMIN.PROCESS_HELP
default: [markdown: true, twig: true]
options:
markdown: Markdown
twig: Twig
use: keys
timezone:
type: select
label: PLUGIN_ADMIN.TIMEZONE
size: medium
classes: fancy
help: PLUGIN_ADMIN.TIMEZONE_HELP
'@data-options': '\Grav\Common\Utils::timezones'
default: ''
options:
'': 'Default (Server Timezone)'
pages.dateformat.default:
type: select
size: medium
selectize:
create: true
label: PLUGIN_ADMIN.DEFAULT_DATE_FORMAT
help: PLUGIN_ADMIN.DEFAULT_DATE_FORMAT_HELP
placeholder: PLUGIN_ADMIN.DEFAULT_DATE_FORMAT_PLACEHOLDER
'@data-options': '\Grav\Common\Utils::dateFormats'
options:
"": Auto Guess or Enter Custom
validate:
type: string
pages.dateformat.short:
type: dateformat
size: medium
classes: fancy
label: PLUGIN_ADMIN.SHORT_DATE_FORMAT
help: PLUGIN_ADMIN.SHORT_DATE_FORMAT_HELP
default: "jS M Y"
options:
"F jS \\a\\t g:ia": Date1
"l jS \\of F g:i A": Date2
"D, d M Y G:i:s": Date3
"d-m-y G:i": Date4
"jS M Y": Date5
pages.dateformat.long:
type: dateformat
size: medium
classes: fancy
label: PLUGIN_ADMIN.LONG_DATE_FORMAT
help: PLUGIN_ADMIN.LONG_DATE_FORMAT_HELP
options:
"F jS \\a\\t g:ia": Date1
"l jS \\of F g:i A": Date2
"D, d M Y G:i:s": Date3
"d-m-y G:i": Date4
"jS M Y": Date5
pages.order.by:
type: select
size: long
classes: fancy
label: PLUGIN_ADMIN.DEFAULT_ORDERING
help: PLUGIN_ADMIN.DEFAULT_ORDERING_HELP
options:
default: PLUGIN_ADMIN.DEFAULT_ORDERING_DEFAULT
folder: PLUGIN_ADMIN.DEFAULT_ORDERING_FOLDER
title: PLUGIN_ADMIN.DEFAULT_ORDERING_TITLE
date: PLUGIN_ADMIN.DEFAULT_ORDERING_DATE
pages.order.dir:
type: toggle
label: PLUGIN_ADMIN.DEFAULT_ORDER_DIRECTION
highlight: asc
default: desc
help: PLUGIN_ADMIN.DEFAULT_ORDER_DIRECTION_HELP
options:
asc: PLUGIN_ADMIN.ASCENDING
desc: PLUGIN_ADMIN.DESCENDING
pages.list.count:
type: text
size: x-small
label: PLUGIN_ADMIN.DEFAULT_PAGE_COUNT
help: PLUGIN_ADMIN.DEFAULT_PAGE_COUNT_HELP
validate:
type: number
min: 1
pages.publish_dates:
type: toggle
label: PLUGIN_ADMIN.DATE_BASED_PUBLISHING
help: PLUGIN_ADMIN.DATE_BASED_PUBLISHING_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.events:
type: checkboxes
label: PLUGIN_ADMIN.EVENTS
help: PLUGIN_ADMIN.EVENTS_HELP
default: [page: true, twig: true]
options:
page: Page Events
twig: Twig Events
use: keys
pages.append_url_extension:
type: text
placeholder: "e.g. .html"
label: PLUGIN_ADMIN.APPEND_URL_EXT
help: PLUGIN_ADMIN.APPEND_URL_EXT_HELP
pages.redirect_default_route:
type: toggle
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.redirect_default_code:
type: select
size: medium
classes: fancy
label: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE
help: PLUGIN_ADMIN.REDIRECT_DEFAULT_CODE_HELP
options:
301: 301 - Permanent
303: 303 - Other
307: 307 - Temporary
pages.redirect_trailing_slash:
type: toggle
label: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH
help: PLUGIN_ADMIN.REDIRECT_TRAILING_SLASH_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.ignore_hidden:
type: toggle
label: PLUGIN_ADMIN.IGNORE_HIDDEN
help: PLUGIN_ADMIN.IGNORE_HIDDEN_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.ignore_files:
type: selectize
size: large
label: PLUGIN_ADMIN.IGNORE_FILES
help: PLUGIN_ADMIN.IGNORE_FILES_HELP
classes: fancy
validate:
type: commalist
pages.ignore_folders:
type: selectize
size: large
label: PLUGIN_ADMIN.IGNORE_FOLDERS
help: PLUGIN_ADMIN.IGNORE_FOLDERS_HELP
classes: fancy
validate:
type: commalist
pages.url_taxonomy_filters:
type: toggle
label: PLUGIN_ADMIN.ALLOW_URL_TAXONOMY_FILTERS
help: PLUGIN_ADMIN.ALLOW_URL_TAXONOMY_FILTERS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages:
type: section
title: PLUGIN_ADMIN.LANGUAGES
underline: true
fields:
languages.supported:
type: selectize
size: large
placeholder: "e.g. en, fr"
label: PLUGIN_ADMIN.SUPPORTED
help: PLUGIN_ADMIN.SUPPORTED_HELP
classes: fancy
validate:
type: commalist
languages.include_default_lang:
type: toggle
label: PLUGIN_ADMIN.INCLUDE_DEFAULT_LANG
help: PLUGIN_ADMIN.INCLUDE_DEFAULT_LANG_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.translations:
type: toggle
label: PLUGIN_ADMIN.TRANSLATIONS_ENABLED
help: PLUGIN_ADMIN.TRANSLATIONS_ENABLED_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.translations_fallback:
type: toggle
label: PLUGIN_ADMIN.TRANSLATIONS_FALLBACK
help: PLUGIN_ADMIN.TRANSLATIONS_FALLBACK_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.session_store_active:
type: toggle
label: PLUGIN_ADMIN.ACTIVE_LANGUAGE_IN_SESSION
help: PLUGIN_ADMIN.ACTIVE_LANGUAGE_IN_SESSION_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.http_accept_language:
type: toggle
label: PLUGIN_ADMIN.HTTP_ACCEPT_LANGUAGE
help: PLUGIN_ADMIN.HTTP_ACCEPT_LANGUAGE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
languages.override_locale:
type: toggle
label: PLUGIN_ADMIN.OVERRIDE_LOCALE
help: PLUGIN_ADMIN.OVERRIDE_LOCALE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
http_headers:
type: section
title: PLUGIN_ADMIN.HTTP_HEADERS
underline: true
fields:
pages.expires:
type: text
size: small
label: PLUGIN_ADMIN.EXPIRES
help: PLUGIN_ADMIN.EXPIRES_HELP
validate:
type: number
min: 1
pages.last_modified:
type: toggle
label: PLUGIN_ADMIN.LAST_MODIFIED
help: PLUGIN_ADMIN.LAST_MODIFIED_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.etag:
type: toggle
label: PLUGIN_ADMIN.ETAG
help: PLUGIN_ADMIN.ETAG_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.vary_accept_encoding:
type: toggle
label: PLUGIN_ADMIN.VARY_ACCEPT_ENCODING
help: PLUGIN_ADMIN.VARY_ACCEPT_ENCODING_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
markdown:
type: section
title: Markdown
underline: true
fields:
pages.markdown.extra:
type: toggle
label: Markdown extra
help: PLUGIN_ADMIN.MARKDOWN_EXTRA_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.markdown.auto_line_breaks:
type: toggle
label: PLUGIN_ADMIN.AUTO_LINE_BREAKS
help: PLUGIN_ADMIN.AUTO_LINE_BREAKS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.markdown.auto_url_links:
type: toggle
label: PLUGIN_ADMIN.AUTO_URL_LINKS
help: PLUGIN_ADMIN.AUTO_URL_LINKS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
pages.markdown.escape_markup:
type: toggle
label: PLUGIN_ADMIN.ESCAPE_MARKUP
help: PLUGIN_ADMIN.ESCAPE_MARKUP_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
caching:
type: section
title: PLUGIN_ADMIN.CACHING
underline: true
fields:
cache.enabled:
type: toggle
label: PLUGIN_ADMIN.CACHING
help: PLUGIN_ADMIN.CACHING_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
cache.check.method:
type: select
size: small
classes: fancy
label: PLUGIN_ADMIN.CACHE_CHECK_METHOD
help: PLUGIN_ADMIN.CACHE_CHECK_METHOD_HELP
options:
file: File
folder: Folder
none: None
cache.driver:
type: select
size: small
classes: fancy
label: PLUGIN_ADMIN.CACHE_DRIVER
help: PLUGIN_ADMIN.CACHE_DRIVER_HELP
options:
auto: Auto detect
file: File
apc: APC
xcache: XCache
memcache: MemCache
wincache: WinCache
cache.prefix:
type: text
size: x-small
label: PLUGIN_ADMIN.CACHE_PREFIX
help: PLUGIN_ADMIN.CACHE_PREFIX_HELP
placeholder: PLUGIN_ADMIN.CACHE_PREFIX_PLACEHOLDER
cache.lifetime:
type: text
size: small
label: PLUGIN_ADMIN.LIFETIME
help: PLUGIN_ADMIN.LIFETIME_HELP
validate:
type: number
cache.gzip:
type: toggle
label: PLUGIN_ADMIN.GZIP_COMPRESSION
help: PLUGIN_ADMIN.GZIP_COMPRESSION_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twig:
type: section
title: PLUGIN_ADMIN.TWIG_TEMPLATING
underline: true
fields:
twig.cache:
type: toggle
label: PLUGIN_ADMIN.TWIG_CACHING
help: PLUGIN_ADMIN.TWIG_CACHING_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twig.debug:
type: toggle
label: PLUGIN_ADMIN.TWIG_DEBUG
help: PLUGIN_ADMIN.TWIG_DEBUG_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twig.auto_reload:
type: toggle
label: PLUGIN_ADMIN.DETECT_CHANGES
help: PLUGIN_ADMIN.DETECT_CHANGES_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twig.autoescape:
type: toggle
label: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES
help: PLUGIN_ADMIN.AUTOESCAPE_VARIABLES_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
twig.umask_fix:
type: toggle
label: PLUGIN_ADMIN.TWIG_UMASK_FIX
help: PLUGIN_ADMIN.TWIG_UMASK_FIX_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets:
type: section
title: PLUGIN_ADMIN.ASSETS
underline: true
fields:
assets.css_pipeline:
type: toggle
label: PLUGIN_ADMIN.CSS_PIPELINE
help: PLUGIN_ADMIN.CSS_PIPELINE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.css_minify:
type: toggle
label: PLUGIN_ADMIN.CSS_MINIFY
help: PLUGIN_ADMIN.CSS_MINIFY_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.css_minify_windows:
type: toggle
label: PLUGIN_ADMIN.CSS_MINIFY_WINDOWS_OVERRIDE
help: PLUGIN_ADMIN.CSS_MINIFY_WINDOWS_OVERRIDE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.css_rewrite:
type: toggle
label: PLUGIN_ADMIN.CSS_REWRITE
help: PLUGIN_ADMIN.CSS_REWRITE_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.js_pipeline:
type: toggle
label: PLUGIN_ADMIN.JAVASCRIPT_PIPELINE
help: PLUGIN_ADMIN.JAVASCRIPT_PIPELINE_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.js_minify:
type: toggle
label: PLUGIN_ADMIN.JAVASCRIPT_MINIFY
help: PLUGIN_ADMIN.JAVASCRIPT_MINIFY_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.enable_asset_timestamp:
type: toggle
label: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS
help: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
assets.collections:
type: array
label: PLUGIN_ADMIN.COLLECTIONS
placeholder_key: collection_name
placeholder_value: collection_path
errors:
type: section
title: PLUGIN_ADMIN.ERROR_HANDLER
underline: true
fields:
errors.display:
type: toggle
label: PLUGIN_ADMIN.DISPLAY_ERRORS
help: PLUGIN_ADMIN.DISPLAY_ERRORS_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
errors.log:
type: toggle
label: PLUGIN_ADMIN.LOG_ERRORS
help: PLUGIN_ADMIN.LOG_ERRORS_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
debugger:
type: section
title: PLUGIN_ADMIN.DEBUGGER
underline: true
fields:
debugger.enabled:
type: toggle
label: PLUGIN_ADMIN.DEBUGGER
help: PLUGIN_ADMIN.DEBUGGER_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
debugger.shutdown.close_connection:
type: toggle
label: PLUGIN_ADMIN.SHUTDOWN_CLOSE_CONNECTION
help: PLUGIN_ADMIN.SHUTDOWN_CLOSE_CONNECTION_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
media:
type: section
title: PLUGIN_ADMIN.MEDIA
underline: true
fields:
images.default_image_quality:
type: text
label: PLUGIN_ADMIN.DEFAULT_IMAGE_QUALITY
help: PLUGIN_ADMIN.DEFAULT_IMAGE_QUALITY_HELP
classes: x-small
validate:
type: number
min: 1
max: 100
images.cache_all:
type: toggle
label: PLUGIN_ADMIN.CACHE_ALL
help: PLUGIN_ADMIN.CACHE_ALL_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
images.cache_perms:
type: select
size: small
label: PLUGIN_ADMIN.CACHE_PERMS
help: PLUGIN_ADMIN.CACHE_PERMS_HELP
highlight: '0755'
options:
'0755': '0755'
'0775': '0775'
images.debug:
type: toggle
label: PLUGIN_ADMIN.IMAGES_DEBUG
help: PLUGIN_ADMIN.IMAGES_DEBUG_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
media.upload_limit:
type: text
label: PLUGIN_ADMIN.UPLOAD_LIMIT
help: PLUGIN_ADMIN.UPLOAD_LIMIT_HELP
classes: small
validate:
type: number
media.enable_media_timestamp:
type: toggle
label: PLUGIN_ADMIN.ENABLE_MEDIA_TIMESTAMP
help: PLUGIN_ADMIN.ENABLE_MEDIA_TIMESTAMP_HELP
highlight: 0
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
media.allowed_fallback_types:
type: selectize
size: large
label: PLUGIN_ADMIN.FALLBACK_TYPES
help: PLUGIN_ADMIN.FALLBACK_TYPES_HELP
classes: fancy
validate:
type: commalist
media.unsupported_inline_types:
type: selectize
size: large
label: PLUGIN_ADMIN.INLINE_TYPES
help: PLUGIN_ADMIN.INLINE_TYPES_HELP
classes: fancy
validate:
type: commalist
session:
type: section
title: PLUGIN_ADMIN.SESSION
underline: true
fields:
session.enabled:
type: hidden
label: PLUGIN_ADMIN.ENABLED
help: PLUGIN_ADMIN.SESSION_ENABLED_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
default: true
validate:
type: bool
session.timeout:
type: text
size: small
label: PLUGIN_ADMIN.TIMEOUT
help: PLUGIN_ADMIN.TIMEOUT_HELP
validate:
type: number
min: 1
session.name:
type: text
size: small
label: PLUGIN_ADMIN.NAME
help: PLUGIN_ADMIN.SESSION_NAME_HELP
advanced:
type: section
title: PLUGIN_ADMIN.ADVANCED
underline: true
fields:
wrapped_site:
type: toggle
label: PLUGIN_ADMIN.WRAPPED_SITE
highlight: 0
help: PLUGIN_ADMIN.WRAPPED_SITE_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
absolute_urls:
type: toggle
label: PLUGIN_ADMIN.ABSOLUTE_URLS
highlight: 0
help: PLUGIN_ADMIN.ABSOLUTE_URLS_HELP
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
param_sep:
type: select
size: medium
label: PLUGIN_ADMIN.PARAMETER_SEPARATOR
classes: fancy
help: PLUGIN_ADMIN.PARAMETER_SEPARATOR_HELP
default: ''
options:
':': ': (default)'
';': '; (for Apache running on Windows)'

View File

@@ -1,5 +0,0 @@
title: Media
validation: loose
form:
fields:

View File

@@ -0,0 +1,7 @@
form:
validation: loose
fields:
alt_text:
type: string
label: Alt Text

View File

@@ -0,0 +1,8 @@
form:
validation: loose
fields:
route:
type: select
label: PLUGIN_ADMIN.PAGE
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'

View File

@@ -0,0 +1,8 @@
form:
validation: loose
fields:
new_file_name:
type: text
label: PLUGIN_ADMIN_PRO.NEW_FILE_NAME
validate:
required: true

View File

@@ -1,28 +0,0 @@
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
fields:
route:
type: select
label: Parent
@data-options: '\Grav\Common\Page\Pages::parents'
@data-default: '\Grav\Plugin\admin::route'
options:
'': '- Root -'
folder:
type: text
label: Folder
validate:
type: slug
required: true
type:
type: select
label: Page Type
default: default
@data-options: '\Grav\Common\Page\Pages::types'

View File

@@ -0,0 +1,281 @@
title: PLUGIN_ADMIN.DEFAULT
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
validation: loose
fields:
tabs:
type: tabs
active: 1
fields:
content:
type: tab
title: PLUGIN_ADMIN.CONTENT
fields:
header.title:
type: text
autofocus: true
style: vertical
label: PLUGIN_ADMIN.TITLE
content:
type: markdown
showPreview: true
validate:
type: textarea
uploads:
type: pagemedia
label: PLUGIN_ADMIN.PAGE_MEDIA
options:
type: tab
title: PLUGIN_ADMIN.OPTIONS
fields:
publishing:
type: section
title: Publishing
underline: true
fields:
header.published:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.PUBLISHED
help: PLUGIN_ADMIN.PUBLISHED_HELP
highlight: 1
size: medium
options:
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
header.date:
type: datetime
label: PLUGIN_ADMIN.DATE
toggleable: true
help: PLUGIN_ADMIN.DATE_HELP
header.publish_date:
type: datetime
label: PLUGIN_ADMIN.PUBLISHED_DATE
toggleable: true
help: PLUGIN_ADMIN.PUBLISHED_DATE_HELP
header.unpublish_date:
type: datetime
label: PLUGIN_ADMIN.UNPUBLISHED_DATE
toggleable: true
help: PLUGIN_ADMIN.UNPUBLISHED_DATE_HELP
header.metadata:
toggleable: true
type: array
label: PLUGIN_ADMIN.METADATA
help: PLUGIN_ADMIN.METADATA_HELP
placeholder_key: PLUGIN_ADMIN.METADATA_KEY
placeholder_value: PLUGIN_ADMIN.METADATA_VALUE
taxonomies:
type: section
title: PLUGIN_ADMIN.TAXONOMIES
underline: true
fields:
header.taxonomy:
type: taxonomy
label: PLUGIN_ADMIN.TAXONOMY
multiple: true
validate:
type: array
advanced:
type: tab
title: PLUGIN_ADMIN.ADVANCED
fields:
columns:
type: columns
fields:
column1:
type: column
fields:
settings:
type: section
title: PLUGIN_ADMIN.SETTINGS
underline: true
ordering:
type: toggle
label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
folder:
type: text
label: PLUGIN_ADMIN.FOLDER_NAME
validate:
type: slug
route:
type: select
label: PLUGIN_ADMIN.PARENT
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'
'@data-default': '\Grav\Plugin\admin::route'
options:
'/': PLUGIN_ADMIN.DEFAULT_OPTION_ROOT
name:
type: select
classes: fancy
label: PLUGIN_ADMIN.PAGE_FILE
help: PLUGIN_ADMIN.PAGE_FILE_HELP
default: default
'@data-options': '\Grav\Common\Page\Pages::pageTypes'
header.body_classes:
type: text
label: PLUGIN_ADMIN.BODY_CLASSES
column2:
type: column
fields:
order_title:
type: section
title: PLUGIN_ADMIN.ORDERING
underline: true
order:
type: order
label: PLUGIN_ADMIN.PAGE_ORDER
sitemap:
overrides:
type: section
title: PLUGIN_ADMIN.OVERRIDES
underline: true
fields:
header.menu:
type: text
label: PLUGIN_ADMIN.MENU
toggleable: true
help: PLUGIN_ADMIN.MENU_HELP
header.slug:
type: text
label: PLUGIN_ADMIN.SLUG
toggleable: true
help: PLUGIN_ADMIN.SLUG_HELP
validate:
message: PLUGIN_ADMIN.SLUG_VALIDATE_MESSAGE
rule: slug
header.redirect:
type: text
label: PLUGIN_ADMIN.REDIRECT
toggleable: true
help: PLUGIN_ADMIN.REDIRECT_HELP
header.process:
type: checkboxes
label: PLUGIN_ADMIN.PROCESS
toggleable: true
'@config-default': system.pages.process
default:
markdown: true
twig: false
options:
markdown: Markdown
twig: Twig
use: keys
header.child_type:
type: select
toggleable: true
label: PLUGIN_ADMIN.DEFAULT_CHILD_TYPE
default: default
placeholder: PLUGIN_ADMIN.USE_GLOBAL
'@data-options': '\Grav\Common\Page\Pages::types'
header.routable:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.ROUTABLE
help: PLUGIN_ADMIN.ROUTABLE_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
header.cache_enable:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.CACHING
highlight: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
header.visible:
type: toggle
toggleable: true
label: PLUGIN_ADMIN.VISIBLE
help: PLUGIN_ADMIN.VISIBLE_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
header.template:
type: select
toggleable: true
classes: fancy
label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
default: default
'@data-options': '\Grav\Common\Page\Pages::types'
header.append_url_extension:
type: text
label: PLUGIN_ADMIN.APPEND_URL_EXT
toggleable: true
help: PLUGIN_ADMIN.APPEND_URL_EXT_HELP
header.order_by:
type: hidden
header.order_manual:
type: hidden
validate:
type: commalist
blueprint:
type: blueprint

View File

@@ -0,0 +1,47 @@
title: PLUGIN_ADMIN.MODULAR
@extends:
type: default
context: blueprints://pages
form:
fields:
tabs:
type: tabs
active: 1
fields:
content:
fields:
header.content.items:
type: select
label: PLUGIN_ADMIN.ITEMS
default: '@self.modular'
options:
'@self.modular': Children
header.content.order.by:
type: select
label: PLUGIN_ADMIN.ORDER_BY
default: date
options:
folder: PLUGIN_ADMIN.FOLDER
title: PLUGIN_ADMIN.TITLE
date: PLUGIN_ADMIN.DATE
default: PLUGIN_ADMIN.DEFAULT
header.content.order.dir:
type: select
label: PLUGIN_ADMIN.ORDER
default: desc
options:
asc: PLUGIN_ADMIN.ASCENDING
desc: PLUGIN_ADMIN.DESCENDING
header.process:
type: ignore
content:
type: ignore
uploads:
type: ignore

View File

@@ -0,0 +1,56 @@
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
validation: loose
fields:
section:
type: section
title: PLUGIN_ADMIN.ADD_MODULAR_CONTENT
title:
type: text
label: PLUGIN_ADMIN.PAGE_TITLE
validate:
required: true
folder:
type: text
label: PLUGIN_ADMIN.FOLDER_NAME
validate:
type: slug
required: true
route:
type: select
label: PLUGIN_ADMIN.PAGE
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'
'@data-default': '\Grav\Plugin\admin::route'
options:
'': PLUGIN_ADMIN.DEFAULT_OPTION_SELECT
validate:
required: true
name:
type: select
classes: fancy
label: PLUGIN_ADMIN.MODULAR_TEMPLATE
help: PLUGIN_ADMIN.PAGE_FILE_HELP
default: default
'@data-options': '\Grav\Common\Page\Pages::modularTypes'
validate:
required: true
modular:
type: hidden
default: 1
validate:
type: bool
blueprint:
type: blueprint

View File

@@ -0,0 +1,97 @@
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
validation: loose
fields:
tabs:
type: tabs
active: 1
fields:
content:
type: tab
title: PLUGIN_ADMIN.CONTENT
fields:
frontmatter:
type: frontmatter
label: PLUGIN_ADMIN.FRONTMATTER
content:
type: markdown
showPreview: true
uploads:
type: pagemedia
label: PLUGIN_ADMIN.PAGE_MEDIA
options:
type: tab
title: PLUGIN_ADMIN.OPTIONS
fields:
columns:
type: columns
fields:
column1:
type: column
fields:
ordering:
type: toggle
label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
folder:
type: text
label: PLUGIN_ADMIN.FILENAME
validate:
type: slug
required: true
route:
type: select
label: PLUGIN_ADMIN.PARENT
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'
'@data-default': '\Grav\Plugin\admin::route'
options:
'': PLUGIN_ADMIN.DEFAULT_OPTION_SELECT
validate:
required: true
name:
type: select
classes: fancy
label: PLUGIN_ADMIN.MODULAR_TEMPLATE
default: default
'@data-options': '\Grav\Common\Page\Pages::modularTypes'
validate:
required: true
column2:
type: column
fields:
order:
type: order
label: PLUGIN_ADMIN.ORDERING
blueprint:
type: blueprint

View File

@@ -0,0 +1,17 @@
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
validation: loose
fields:
route:
type: select
label: PLUGIN_ADMIN.PARENT
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'
'@data-default': '\Grav\Plugin\admin::route'
options:
'/': PLUGIN_ADMIN.DEFAULT_OPTION_ROOT

View File

@@ -0,0 +1,66 @@
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
validation: loose
fields:
section:
type: section
title: PLUGIN_ADMIN.ADD_PAGE
title:
type: text
label: PLUGIN_ADMIN.PAGE_TITLE
help: PLUGIN_ADMIN.PAGE_TITLE_HELP
validate:
required: true
folder:
type: text
label: PLUGIN_ADMIN.FOLDER_NAME
help: PLUGIN_ADMIN.FOLDER_NAME_HELP
validate:
type: slug
required: true
route:
type: select
label: PLUGIN_ADMIN.PARENT_PAGE
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'
'@data-default': '\Grav\Plugin\admin::getLastPageRoute'
options:
'/': PLUGIN_ADMIN.DEFAULT_OPTION_ROOT
validate:
required: true
name:
type: select
classes: fancy
label: PLUGIN_ADMIN.PAGE_FILE
help: PLUGIN_ADMIN.PAGE_FILE_HELP
'@data-options': '\Grav\Common\Page\Pages::types'
'@data-default': '\Grav\Plugin\admin::getLastPageName'
validate:
required: true
visible:
type: toggle
label: PLUGIN_ADMIN.VISIBLE
help: PLUGIN_ADMIN.VISIBLE_HELP
highlight: ''
default: ''
options:
'': Auto
1: PLUGIN_ADMIN.YES
0: PLUGIN_ADMIN.NO
validate:
type: bool
required: true
blueprint:
type: blueprint

View File

@@ -0,0 +1,96 @@
rules:
slug:
pattern: "[a-z][a-z0-9_\-]+"
min: 2
max: 80
form:
validation: loose
fields:
tabs:
type: tabs
active: 1
fields:
content:
type: tab
title: PLUGIN_ADMIN.CONTENT
fields:
frontmatter:
type: frontmatter
label: PLUGIN_ADMIN.FRONTMATTER
autofocus: true
content:
type: markdown
showPreview: true
uploads:
type: pagemedia
label: PLUGIN_ADMIN.PAGE_MEDIA
options:
type: tab
title: PLUGIN_ADMIN.OPTIONS
fields:
columns:
type: columns
fields:
column1:
type: column
fields:
ordering:
type: toggle
label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
highlight: 1
options:
1: PLUGIN_ADMIN.ENABLED
0: PLUGIN_ADMIN.DISABLED
validate:
type: bool
folder:
type: text
label: PLUGIN_ADMIN.FOLDER_NAME
help: PLUGIN_ADMIN.FOLDER_NAME_HELP
validate:
type: slug
required: true
route:
type: select
label: PLUGIN_ADMIN.PARENT
classes: fancy
'@data-options': '\Grav\Common\Page\Pages::parents'
'@data-default': '\Grav\Plugin\admin::route'
options:
'/': PLUGIN_ADMIN.DEFAULT_OPTION_ROOT
name:
type: select
classes: fancy
label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
help: PLUGIN_ADMIN.DISPLAY_TEMPLATE_HELP
default: default
'@data-options': '\Grav\Common\Page\Pages::types'
validate:
required: true
column2:
type: column
fields:
order:
type: order
label: PLUGIN_ADMIN.ORDERING
blueprint:
type: blueprint

View File

@@ -1,42 +0,0 @@
title: Site settings
validation: strict
form:
fields:
title:
type: text
label: Site title
description:
type: textarea
label: Description
summary.size:
type: text
label: Summary size
validate:
type: int
min: 0
max: 65536
author.name:
type: text
label: Default author
author.email:
type: text
label: Default email
taxonomies:
type: text
label: Taxonomy types
validate:
type: commalist
blog.route:
type: text
label: Blog URL
routes:
type: array
label: Custom routes

View File

@@ -1,275 +0,0 @@
title: Configuration
validation: strict
form:
fields:
basics:
type: section
title: Basics
underline: true
fields:
title:
type: text
label: Site Title
placeholder: "Site wide title"
help: Default title for your site
base_url_absolute:
type: text
label: Absolute Base URL
placeholder: "Override Absolute base URL (e.g. http://example.com)"
help: You can provide a base URL to use rather than letting Grav guess what it is
base_url_relative:
type: text
label: Relative Base URL
placeholder: "Override Relative base URL (e.g. /subdirectory/site)"
help: You can provide a base URL to use rather than letting Grav guess what it is
pages.dateformat.short:
type: select
label: PHP date format
help: "Set the PHP date format"
default: 'jS M Y'
options:
'F jS \\a\\t g:ia': "January 1st at 11:59pm"
'l jS of F g:i A': "Monday 1st of January at 11:59 PM"
'D, m M Y G:i:s': "Mon, 01 Jan 2014 23:59:00"
'd-m-y G:i': "01-01-14 23:59"
'jS M Y': "10th Feb 2014"
pages.dateformat.long:
type: select
label: Default date format
help: "Set default date format rather than default for |date() filter"
options:
'F jS \a\t g:ia': "January 1st at 11:59pm"
'l jS of F g:i A': "Monday 1st of January at 11:59 PM"
'D, m M Y G:i:s': "Mon, 01 Jan 2014 23:59:00"
'd-m-y G:i': "01-01-14 23:59"
'jS M Y': "10th Feb 2014"
pages.theme:
type: themeselect
label: Default Theme
help: "Set the theme (defaults to 'default')"
content:
type: section
title: Content
underline: true
fields:
home.alias:
type: pages
label: Home page
show_all: false
show_modular: false
show_root: false
help: "The page that Grav will use as the default landing page"
pages.order.by:
type: select
label: Default ordering
options:
default: Default - based on folder name
folder: Folder - based on prefix-less folder name
title: Title - based on title field in header
date: Date - based on date field in header
pages.order.dir:
type: toggle
label: Ordering direction
default: asc
options:
asc: Ascending
desc: Descending
pages.list.count:
type: text
label: Item count
help: "Default max pages count"
validate:
type: number
min: 1
pages.process:
type: checkboxes
label: Process
default: [markdown: true, twig: true]
options:
markdown: Markdown
twig: Twig
use: keys
events:
type: section
title: Events
underline: true
fields:
pages.events.page:
type: toggle
label: Page events
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
pages.events.twig:
type: toggle
label: Twig events
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
caching:
type: section
title: Caching
underline: true
fields:
cache.enabled:
type: toggle
label: Caching
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
cache.check.pages:
type: toggle
label: Detect changes in pages
help: Be careful changing this setting. If you disable this setting, Grav no longer automatically updates the pages when the underlaying files are changed.
highlight: 1
default: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
cache.prefix:
type: text
label: Cache prefix
placeholder: "Derived from base URL (override by entering random string)"
cache.driver:
type: select
label: Cache driver
options:
auto: Auto detect
file: File
apc: APC
xcache: XCache
memcache: MemCache
memcached: MemCached
wincache: WinCache
twig:
type: section
title: Twig Templating
underline: true
fields:
twig.cache:
type: toggle
label: Twig caching
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
twig.debug:
type: toggle
label: Twig debug
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
twig.auto_reload:
type: toggle
label: Detect changes
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
twig.autoescape:
type: toggle
label: Autoescape variables
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
debugger:
type: section
title: Debugger
underline: true
fields:
debugger.enabled:
type: toggle
label: Debugger
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
debugger.max_depth:
type: select
label: Detail levels
placeholder: "How many nested levels to display for objects or arrays"
options:
1: 1 level
2: 2 levels
3: 3 levels
4: 4 levels
5: 5 levels
6: 6 levels
7: 7 levels
8: 8 levels
9: 9 levels
10: 10 levels
validate:
type: number
debugger.log.enabled:
type: toggle
label: Logging
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool
debugger.log.timing:
type: toggle
label: Log timings
highlight: 1
options:
1: Enabled
0: Disabled
validate:
type: bool

View File

@@ -0,0 +1,85 @@
title: Site
form:
validation: loose
fields:
content:
type: section
title: PLUGIN_ADMIN.ACCOUNT
fields:
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
password:
type: password
size: large
label: PLUGIN_ADMIN.PASSWORD
validate:
required: false
message: PLUGIN_ADMIN.PASSWORD_VALIDATION_MESSAGE
pattern: '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}'
fullname:
type: text
size: large
label: PLUGIN_ADMIN.FULL_NAME
validate:
required: true
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::adminLanguages'
default: 'en'
help: PLUGIN_ADMIN.LANGUAGE_HELP
security:
title: Security
type: section
security: admin.super
fields:
groups:
type: selectize
size: large
label: PLUGIN_ADMIN.GROUPS
'@data-options': '\Grav\User\Groups::groups'
classes: fancy
help: PLUGIN_ADMIN.GROUPS_HELP
validate:
type: commalist
access.admin:
type: array
label: PLUGIN_ADMIN.ADMIN_ACCESS
multiple: false
validate:
type: array
access.site:
type: array
label: PLUGIN_ADMIN.SITE_ACCESS
multiple: false
validate:
type: array

View File

@@ -0,0 +1,16 @@
title: PLUGIN_ADMIN.ADD_ACCOUNT
form:
validation: loose
fields:
content:
type: section
title: PLUGIN_ADMIN.ADD_ACCOUNT
username:
type: text
label: PLUGIN_ADMIN.USERNAME
help: PLUGIN_ADMIN.USERNAME_HELP
validate:
required: true

View File

@@ -0,0 +1,44 @@
title: Group
form:
validation: loose
fields:
spacer:
type: spacer
text: '<br>'
groupname:
type: text
size: large
label: PLUGIN_ADMIN.NAME
disabled: true
readonly: true
readableName:
type: text
size: large
label: PLUGIN_ADMIN_PRO.READABLE_NAME
description:
type: text
size: large
label: PLUGIN_ADMIN.DESCRIPTION
icon:
type: text
size: small
label: PLUGIN_ADMIN_PRO.ICON
access.admin:
type: array
label: PLUGIN_ADMIN.ADMIN_ACCESS
multiple: false
validate:
type: array
access.site:
type: array
label: PLUGIN_ADMIN.SITE_ACCESS
multiple: false
validate:
type: array

View File

@@ -0,0 +1,16 @@
title: PLUGIN_ADMIN_PRO.ADD_GROUP
form:
validation: loose
fields:
content:
type: section
title: PLUGIN_ADMIN_PRO.ADD_GROUP
groupname:
type: text
label: PLUGIN_ADMIN_PRO.GROUP_NAME
help: PLUGIN_ADMIN_PRO.GROUP_NAME_HELP
validate:
required: true

View File

@@ -11,6 +11,10 @@ jpg:
type: image
thumb: media/thumb-jpg.png
mime: image/jpeg
jpe:
type: image
thumb: media/thumb-jpg.png
mime: image/jpeg
jpeg:
type: image
thumb: media/thumb-jpeg.png
@@ -20,10 +24,15 @@ png:
thumb: media/thumb-png.png
mime: image/png
gif:
type: image
type: animated
thumb: media/thumb-gif.png
mime: image/gif
svg:
type: vector
thumb: media/thumb-gif.png
mime: image/svg+xml
mp4:
type: video
thumb: media/thumb-mp4.png
@@ -40,19 +49,117 @@ swf:
type: video
thumb: media/thumb-swf.png
mime: video/x-flv
flv:
type: video
thumb: media/thumb-flv.png
mime: video/x-flv
mp3:
type: audio
thumb: media/thumb-mp3.png
mime: audio/mp3
ogg:
type: audio
thumb: media/thumb-ogg.png
mime: audio/ogg
wma:
type: audio
thumb: media/thumb-wma.png
mime: audio/wma
m4a:
type: audio
thumb: media/thumb-m4a.png
mime: audio/m4a
wav:
type: audio
thumb: media/thumb-wav.png
mime: audio/wav
aiff:
type: audio
mime: audio/aiff
aif:
type: audio
mime: audio/aif
txt:
type: file
thumb: media/thumb-txt.png
mime: text/plain
xml:
type: file
thumb: media/thumb-xml.png
mime: application/xml
doc:
type: file
thumb: media/thumb-doc.png
mime: application/msword
docx:
type: file
mime: application/msword
xls:
type: file
mime: application/vnd.ms-excel
xlt:
type: file
mime: application/vnd.ms-excel
xlm:
type: file
mime: application/vnd.ms-excel
xld:
type: file
mime: application/vnd.ms-excel
xla:
type: file
mime: application/vnd.ms-excel
xlc:
type: file
mime: application/vnd.ms-excel
xlw:
type: file
mime: application/vnd.ms-excel
xll:
type: file
mime: application/vnd.ms-excel
ppt:
type: file
mime: application/vnd.ms-powerpoint
pps:
type: file
mime: application/vnd.ms-powerpoint
rtf:
type: file
mime: application/rtf
bmp:
type: file
mime: image/bmp
tiff:
type: file
mime: image/tiff
mpeg:
type: file
mime: video/mpeg
mpg:
type: file
mime: video/mpeg
mpe:
type: file
mime: video/mpeg
avi:
type: file
mime: video/msvideo
wmv:
type: file
mime: video/x-ms-wmv
html:
type: file
thumb: media/thumb-html.png
mime: text/html
htm:
type: file
thumb: media/thumb-html.png
mime: text/html
pdf:
type: file
thumb: media/thumb-pdf.png
@@ -61,7 +168,27 @@ zip:
type: file
thumb: media/thumb-zip.png
mime: application/zip
7z:
type: file
thumb: media/thumb-7zip.png
mime: application/x-7z-compressed
gz:
type: file
thumb: media/thumb-gz.png
mime: application/gzip
tar:
type: file
mime: application/x-tar
css:
type: file
thumb: media/thumb-css.png
mime: text/css
js:
type: file
thumb: media/thumb-js.png
mime: application/javascript
json:
type: file
thumb: media/thumb-json.png
mime: application/json

View File

@@ -1,13 +1,34 @@
title: Grav # Name of the site
title: Grav # Name of the site
author:
name: John Appleseed # Default author name
email: 'john@email.com' # Default author email
taxonomies: [category,tag] # Arbitrary list of taxonomy types
blog:
route: '/blog' # Route to blog
description: 'Grav Site Description' # Site description
name: John Appleseed # Default author name
email: 'john@email.com' # Default author email
taxonomies: [category,tag] # Arbitrary list of taxonomy types
metadata:
description: 'My Grav Site' # Site description
summary:
size: 300 # Maximum length of summary (characters)
enabled: true # enable or disable summary of page
format: short # long = summary delimiter will be ignored; short = use the first occurrence of delimiter or size
size: 300 # Maximum length of summary (characters)
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
routes:
/something/else: '/blog/sample-3' # Alias for /blog/sample-3
/another/one/here: '/blog/sample-3' # Another alias for /blog/sample-3
/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
# - text: Source
# icon: github
# url: https://github.com/getgrav/grav
# - icon: twitter
# url: http://twitter.com/getgrav

View File

@@ -1,36 +1,16 @@
schemes:
plugin:
image:
type: ReadOnlyStream
paths:
- user/plugins
- system/plugins
# asset:
# type: ReadOnlyStream
# paths:
# - assets
# cache:
# type: ReadOnlyStream
# paths:
# - cache
# log:
# type: ReadOnlyStream
# paths:
# - logs
- user://images
- system://images
page:
type: ReadOnlyStream
paths:
- user/pages
- user://pages
account:
type: ReadOnlyStream
paths:
- user/accounts
data:
type: ReadOnlyStream
paths:
- user/data
- user://accounts

View File

@@ -1,49 +1,114 @@
absolute_urls: false # Absolute or relative URLs for `base_url`
timezone: '' # Valid values: http://php.net/manual/en/timezones.php
default_locale: # Default locale (defaults to system)
param_sep: ':' # Parameter separator, use ';' for Apache on windows
wrapped_site: false # For themes/plugins to know if Grav is wrapped by another platform
languages:
supported: [] # List of languages supported. eg: [en, fr, de]
include_default_lang: true # Include the default lang prefix in all URLs
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
http_accept_language: false # Attempt to set the language based on http_accept_language header in the browser
override_locale: false # Override the default or system locale with language specific one
home:
alias: '/home' # Default path for home, ie /
alias: '/home' # Default path for home, ie /
pages:
theme: antimatter # Default theme (defaults to "antimatter" theme)
markdown_extra: false # Enable support for Markdown Extra support (GFM by default)
theme: antimatter # Default theme (defaults to "antimatter" theme)
order:
by: defaults # Order pages by "default", "alpha" or "date"
dir: asc # Default ordering direction, "asc" or "desc"
by: default # Order pages by "default", "alpha" or "date"
dir: asc # Default ordering direction, "asc" or "desc"
list:
count: 20 # Default item count per page
count: 20 # Default item count per page
dateformat:
short: 'jS M Y' # Short date format
long: 'F jS \a\t g:ia' # Long date format
default: # The default date format Grav expects in the `date: ` field
short: 'jS M Y' # Short date format
long: 'F jS \a\t g:ia' # Long date format
publish_dates: true # automatically publish/unpublish based on dates
process:
markdown: true # Process Markdown
twig: false # Process Twig
markdown: true # Process Markdown
twig: false # Process Twig
events:
page: true # Enable page level events
twig: true # Enable twig level events
page: true # Enable page level events
twig: true # Enable twig level events
markdown:
extra: false # Enable support for Markdown Extra support (GFM by default)
auto_line_breaks: false # Enable automatic line breaks
auto_url_links: false # Enable automatic HTML links
escape_markup: false # Escape markup tags into entities
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
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)
last_modified: false # Set the last modified date header based on file modifcation timestamp
etag: false # Set the etag header tag
vary_accept_encoding: false # Add `Vary: Accept-Encoding` header
redirect_default_route: false # Automatically redirect to a page's default route
redirect_default_code: 301 # Default code to use for redirects
redirect_trailing_slash: true # Handle automatically or 301 redirect a trailing / URL
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
url_taxonomy_filters: true # Enable auto-magic URL-based taxonomy filters for page collections
cache:
enabled: true # Set to true to enable caching
enabled: true # Set to true to enable caching
check:
pages: true # Check to see if page has been modifying to flush the cache
driver: auto # One of: auto|file|apc|xcache|memcache|memcached|wincache
prefix: 'g' # Cache prefix string (prevents cache conflicts)
method: file # Method to check for updates in pages: file|folder|none
driver: auto # One of: auto|file|apc|xcache|memcache|wincache
prefix: 'g' # Cache prefix string (prevents cache conflicts)
lifetime: 604800 # Lifetime of cached data in seconds (0 = infinite)
gzip: false # GZip compress the page output
twig:
cache: true # Set to true to enable twig caching
debug: false # Enable Twig debug
auto_reload: true # Refresh cache on changes
autoescape: false # Autoescape Twig vars
cache: true # Set to true to enable twig caching
debug: false # Enable Twig debug
auto_reload: true # Refresh cache on changes
autoescape: false # Autoescape Twig vars
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
assets: # Configuration for Assets Manager (JS, CSS)
css_pipeline: false # The CSS pipeline is the unification of multiple CSS resources into one file
css_minify: true # Minify the CSS during pipelining
css_rewrite: true # Rewrite any CSS relative URLs during pipelining
js_pipeline: false # The JS pipeline is the unification of multiple JS resources into one file
js_minify: true # Minify the JS during pipelining
assets: # Configuration for Assets Manager (JS, CSS)
css_pipeline: false # The CSS pipeline is the unification of multiple CSS resources into one file
css_minify: true # Minify the CSS during pipelining
css_minify_windows: false # Minify Override for Windows platforms. False by default due to ThreadStackSize
css_rewrite: true # Rewrite any CSS relative URLs during pipelining
js_pipeline: false # The JS pipeline is the unification of multiple JS resources into one file
js_minify: true # Minify the JS during pipelining
enable_asset_timestamp: false # Enable asset timestamps
collections:
jquery: system://assets/jquery/jquery-2.1.4.min.js
errors:
display: false # Display full backtrace-style error page
log: true # Log errors to /logs folder
debugger:
enabled: false # Enable Grav debugger and following settings
mode: detect # Mode tracy Debugger should be set to when enabled: detect|development|production
strict: false # Throw fatal error also on PHP warnings and notices
max_depth: 10 # How many nested levels to display for objects or arrays
log:
enabled: true # Enable logging
timing: false # Enable timing logging
enabled: false # Enable Grav debugger and following settings
shutdown:
close_connection: true # Close the connection before calling onShutdown(). false for debugging
images:
default_image_quality: 85 # Default image quality to use when resampling images (85%)
cache_all: false # Cache all image by default
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
media:
enable_media_timestamp: false # Enable media timetsamps
upload_limit: 0 # Set maximum upload size in bytes (0 is unlimited)
unsupported_inline_types: [] # Array of supported media types to try to display inline
allowed_fallback_types: [] # Array of allowed media types of files found if accessed via Page route
session:
enabled: true # Enable Session support
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

View File

@@ -2,28 +2,32 @@
// Some standard defines
define('GRAV', true);
define('GRAV_VERSION', '0.9.0');
define('GRAV_VERSION', '1.0.5');
define('DS', '/');
define('GRAV_PHP_MIN', '5.5.9');
// Directories and Paths
if (!defined('ROOT_DIR')) {
define('ROOT_DIR', getcwd() .'/');
if (!defined('GRAV_ROOT')) {
define('GRAV_ROOT', str_replace(DIRECTORY_SEPARATOR, DS, getcwd()));
}
define('ROOT_DIR', GRAV_ROOT . '/');
define('USER_PATH', 'user/');
define('USER_DIR', ROOT_DIR . USER_PATH);
define('SYSTEM_DIR', ROOT_DIR .'system/');
define('ASSETS_DIR', ROOT_DIR . 'assets/');
define('CACHE_DIR', ROOT_DIR .'cache/');
define('IMAGES_DIR', ROOT_DIR . 'images/');
define('CACHE_DIR', ROOT_DIR . 'cache/');
define('LOG_DIR', ROOT_DIR .'logs/');
define('VENDOR_DIR', ROOT_DIR .'vendor/');
define('LIB_DIR', SYSTEM_DIR .'src/');
define('ACCOUNTS_DIR', USER_DIR .'accounts/');
define('DATA_DIR', USER_DIR .'data/');
define('PAGES_DIR', USER_DIR .'pages/');
// DEPRECATED: Do not use!
define('ASSETS_DIR', ROOT_DIR . 'assets/');
define('IMAGES_DIR', ROOT_DIR . 'images/');
define('ACCOUNTS_DIR', USER_DIR .'accounts/');
define('PAGES_DIR', USER_DIR .'pages/');
define('DATA_DIR', USER_DIR .'data/');
define('LIB_DIR', SYSTEM_DIR .'src/');
define('PLUGINS_DIR', USER_DIR .'plugins/');
define('THEMES_DIR', USER_DIR .'themes/');
define('VENDOR_DIR', ROOT_DIR .'vendor/');
// END DEPRECATED
// Some extensions
define('CONTENT_EXT', '.md');
@@ -37,6 +41,3 @@ define('RAW_CONTENT', 1);
define('TWIG_CONTENT', 2);
define('TWIG_CONTENT_LIST', 3);
define('TWIG_TEMPLATES', 4);
// Misc Defines
define('SUMMARY_DELIMITER', '===');

37
system/languages/cs.yaml Normal file
View File

@@ -0,0 +1,37 @@
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
DAY: den
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
DAY_PLURAL: dny
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: r
DEC_PLURAL: dek

43
system/languages/de.yaml Normal file
View File

@@ -0,0 +1,43 @@
INFLECTOR_IRREGULAR:
'person': 'Personen'
'man': 'Menschen'
'child': 'Kinder'
'sex': 'Geschlecht'
'move': 'Züge'
NICETIME:
NO_DATE_PROVIDED: Keine Daten vorhanden
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: Dekade
SEC: sek
MIN: min
HR: std
DAY: Tag
WK: wo
MO: mo
YR: yh
DEC: dec
SECOND_PLURAL: Sekunden
MINUTE_PLURAL: Minuten
HOUR_PLURAL: Stunden
DAY_PLURAL: Tage
WEEK_PLURAL: Wochen
MONTH_PLURAL: Monate
YEAR_PLURAL: Jahre
DECADE_PLURAL: Dekaden
SEC_PLURAL: Sekunden
MIN_PLURAL: Minuten
HR_PLURAL: Stunden
DAY_PLURAL: Tage
WK_PLURAL: Wochen
MO_PLURAL: Monate
YR_PLURAL: Jahre
DEC_PLURAL: Dekaden

98
system/languages/en.yaml Normal file
View File

@@ -0,0 +1,98 @@
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
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:

42
system/languages/es.yaml Normal file
View File

@@ -0,0 +1,42 @@
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: dia
WEEK: semana
MONTH: mes
YEAR: año
DECADE: decada
SEC: seg
MIN: min
HR: hr
DAY: dia
WK: sem
MO: mes
YR: yr
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: decadas
SEC_PLURAL: segs
MIN_PLURAL: mins
HR_PLURAL: hrs
DAY_PLURAL: dias
WK_PLURAL: sem
MO_PLURAL: mes
YR_PLURAL: años
DEC_PLURAL: decs
FORM:
VALIDATION_FAIL: <b>Falló la validación. </b>
INVALID_INPUT: "Dato inválido en: "
MISSING_REQUIRED_FIELD: "Falta el campo requerido: "

98
system/languages/fr.yaml Normal file
View File

@@ -0,0 +1,98 @@
FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Erreur : Frontmatter invalide\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: ['équipment', 'information', 'riz', 'argent', 'espèces', 'séries', 'poisson', 'mouton']
INFLECTOR_IRREGULAR:
'person': 'personnes'
'man': 'Hommes'
'child': 'enfants'
'sex': 'sexes'
'move': 'déplacemements'
INFLECTOR_ORDINALS:
'default': 'ème'
'first': 'er'
'second': 'nd'
'third': 'ème'
NICETIME:
NO_DATE_PROVIDED: Aucune date
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: an
DECADE: décennie
SEC: s
MIN: m
HR: h
DAY: j
WK: s
MO: m
YR: a
DEC: d
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
DAY_PLURAL: j
WK_PLURAL: s
MO_PLURAL: m
YR_PLURAL: a
DEC_PLURAL: d
FORM:
VALIDATION_FAIL: <b>La validation a échoué :</b>
INVALID_INPUT: Saisie non valide
MISSING_REQUIRED_FIELD: Champ obligatoire manquant :

52
system/languages/hr.yaml Normal file
View File

@@ -0,0 +1,52 @@
INFLECTOR_IRREGULAR:
'person': 'Osoba'
'man': 'Čovjek'
'child': 'Dijete'
'sex': 'Spol'
'move': 'Pomakni'
NICETIME:
NO_DATE_PROVIDED: Datum nije upisan
BAD_DATE: Pogrešan datum
AGO: prije
FROM_NOW: od sad
SECOND: sekundi
MINUTE: minuta
HOUR: godina
DAY: dan
WEEK: tjedan
MONTH: mjesec
YEAR: godina
DECADE: desetljeće
SEC: sek
MIN: min
HR: sat
DAY: dan
WK: t
MO: m
YR: g
DEC: des
SECOND_PLURAL: sekundi
SECOND_PLURAL_MORE_THAN_TWO: sekunde
MINUTE_PLURAL: minuta
MINUTE_PLURAL_MORE_THAN_TWO: minute
HOUR_PLURAL: sati
HOUR_PLURAL_MORE_THAN_TWO: sata
DAY_PLURAL: dana
WEEK_PLURAL: tjedana
WEEK_PLURAL_MORE_THAN_TWO: tjedna
MONTH_PLURAL: mjeseci
MONTH_PLURAL_MORE_THAN_TWO: mjeseca
YEAR_PLURAL: godina
YEAR_PLURAL_MORE_THAN_TWO: godine
DECADE_PLURAL: desetljeća
SEC_PLURAL: sek
MIN_PLURAL: min
HR_PLURAL: sat
DAY_PLURAL: dan
WK_PLURAL: t
MO_PLURAL: m
YR_PLURAL: g
DEC_PLURAL: des
FORM:
VALIDATION_FAIL: <b>Validacija nije uspjela:</b>
INVALID_INPUT: Unos nije valjan

53
system/languages/hu.yaml Normal file
View File

@@ -0,0 +1,53 @@
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_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: hét
MONTH: hónap
YEAR: év
DECADE: évtized
SEC: mp
MIN: p
HR: ó
DAY: nap
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: ó
DAY_PLURAL: nap
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:

25
system/languages/it.yaml Normal file
View File

@@ -0,0 +1,25 @@
NICETIME:
NO_DATE_PROVIDED: Nessuna data fornita
BAD_DATE: Data errata
AGO: fa
FROM_NOW: da adesso
SECOND: secondo
MINUTE: minuto
HOUR: ora
DAY: giorno
WEEK: settimana
MONTH: mese
YEAR: anno
DECADE: decade
SECOND_PLURAL: secondi
MINUTE_PLURAL: minuti
HOUR_PLURAL: ore
DAY_PLURAL: giorni
WEEK_PLURAL: settimane
MONTH_PLURAL: mesi
YEAR_PLURAL: anni
DECADE_PLURAL: decadi
FORM:
VALIDATION_FAIL: <b>Validazione fallita:</b>
INVALID_INPUT: Input invalido in
MISSING_REQUIRED_FIELD: Campo richiesto mancante:

43
system/languages/nl.yaml Normal file
View File

@@ -0,0 +1,43 @@
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: sec
MIN: min
HR: hr
DAY: dag
WK: wk
MO: ma
YR: yr
DEC: dec
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
DAY_PLURAL: dagen
WK_PLURAL: weken
MO_PLURAL: maanden
YR_PLURAL: jaren
DEC_PLURAL: decs

43
system/languages/ru.yaml Normal file
View File

@@ -0,0 +1,43 @@
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: ч
DAY: д
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: ч
DAY_PLURAL: д
WK_PLURAL: нед
MO_PLURAL: мес
YR_PLURAL: г.
DEC_PLURAL: гг.

37
system/languages/tr.yaml Normal file
View File

@@ -0,0 +1,37 @@
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
DAY: gün
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
DAY_PLURAL: gün
WK_PLURAL: hft
MO_PLURAL: ay
YR_PLURAL: yl
DEC_PLURAL: onyl

View File

@@ -1,36 +0,0 @@
<?php
namespace Grav\Common;
/**
* Simple wrapper for the very simple parse_user_agent() function
*/
class Browser {
protected $useragent;
public function __construct()
{
$this->useragent = parse_user_agent();
}
public function getBrowser()
{
return strtolower($this->useragent['browser']);
}
public function getPlatform()
{
return strtolower($this->useragent['platform']);
}
public function getLongVersion()
{
return $this->useragent['version'];
}
public function getVersion()
{
$version = explode('.', $this->getLongVersion());
return intval($version[0]);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,130 @@
<?php
namespace Grav\Common\Backup;
use Grav\Common\GravTrait;
use Grav\Common\Filesystem\Folder;
use Grav\Common\Inflector;
/**
* The ZipBackup class lets you create simple zip-backups of a grav site
*
* @author RocketTheme
* @license MIT
*/
class ZipBackup
{
use GravTrait;
protected static $ignorePaths = [
'backup',
'cache',
'images',
'logs'
];
protected static $ignoreFolders = [
'.git',
'.svn',
'.hg',
'.idea'
];
public static function backup($destination = null, callable $messager = null)
{
if (!$destination) {
$destination = self::getGrav()['locator']->findResource('backup://', true);
if (!$destination)
throw new \RuntimeException('The backup folder is missing.');
Folder::mkdir($destination);
}
$name = self::getGrav()['config']->get('site.title', basename(GRAV_ROOT));
$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);
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();
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

@@ -0,0 +1,58 @@
<?php
namespace Grav\Common;
/**
* Simple wrapper for the very simple parse_user_agent() function
*/
class Browser
{
protected $useragent = [];
public function __construct()
{
try {
$this->useragent = parse_user_agent();
} catch (\InvalidArgumentException $e) {
$this->useragent = parse_user_agent("Mozilla/5.0 (compatible; Unknown;)");
}
}
public function getBrowser()
{
return strtolower($this->useragent['browser']);
}
public function getPlatform()
{
return strtolower($this->useragent['platform']);
}
public function getLongVersion()
{
return $this->useragent['version'];
}
public function getVersion()
{
$version = explode('.', $this->getLongVersion());
return intval($version[0]);
}
/**
* Determine if the request comes from a human, or from a bot/crawler
*/
public function isHuman()
{
$browser = $this->getBrowser();
if (empty($browser)) {
return false;
}
if (preg_match('~(bot|crawl)~i', $browser)) {
return false;
}
return true;
}
}

View File

@@ -2,6 +2,8 @@
namespace Grav\Common;
use \Doctrine\Common\Cache\Cache as DoctrineCache;
use Grav\Common\Config\Config;
use Grav\Common\Filesystem\Folder;
/**
* The GravCache object is used throughout Grav to store and retrieve cached data.
@@ -19,21 +21,59 @@ use \Doctrine\Common\Cache\Cache as DoctrineCache;
*/
class Cache extends Getters
{
use GravTrait;
/**
* @var string Cache key.
*/
protected $key;
protected $lifetime;
protected $now;
protected $config;
/**
* @var DoctrineCache
*/
protected $driver;
protected $driver_name;
/**
* @var bool
*/
protected $enabled;
protected $cache_dir;
protected static $standard_remove = [
'cache://twig/',
'cache://doctrine/',
'cache://compiled/',
'cache://validated-',
'cache://images',
'asset://',
];
protected static $all_remove = [
'cache://',
'cache://images',
'asset://'
];
protected static $assets_remove = [
'asset://'
];
protected static $images_remove = [
'cache://images'
];
protected static $cache_remove = [
'cache://'
];
/**
* Constructor
*
@@ -54,6 +94,9 @@ class Cache extends Getters
{
/** @var Config $config */
$this->config = $grav['config'];
$this->now = time();
$this->cache_dir = $grav['locator']->findResource('cache://doctrine', true, true);
/** @var Uri $uri */
$uri = $grav['uri'];
@@ -63,9 +106,16 @@ class Cache extends Getters
$this->enabled = (bool) $this->config->get('system.cache.enabled');
// Cache key allows us to invalidate all cache on configuration changes.
$this->key = substr(md5(($prefix ? $prefix : 'g') . $uri->rootUrl(true) . $this->config->key . GRAV_VERSION), 2, 8);
$this->key = ($prefix ? $prefix : 'g') . '-' . substr(md5($uri->rootUrl(true) . $this->config->key() . GRAV_VERSION), 2, 8);
$this->driver = $this->getCacheDriver();
// Set the cache namespace to our unique key
$this->driver->setNamespace($this->key);
// Dump Cache state
$grav['debugger']->addMessage('Cache: [' . ($this->enabled ? 'true' : 'false') . '] Driver: [' . $this->driver_name . ']');
}
/**
@@ -87,13 +137,13 @@ class Cache extends Getters
$driver_name = 'wincache';
} elseif (extension_loaded('xcache')) {
$driver_name = 'xcache';
} elseif (extension_loaded('memcache')) {
$driver_name = 'memcache';
}
} else {
$driver_name = $setting;
}
$this->driver_name = $driver_name;
switch ($driver_name) {
case 'apc':
$driver = new \Doctrine\Common\Cache\ApcCache();
@@ -108,15 +158,24 @@ class Cache extends Getters
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 \Doctrine\Common\Cache\MemcacheCache();
$driver->setMemcache($memcache);
break;
case 'memcached':
$driver = new \Doctrine\Common\Cache\MemcachedCache();
case 'redis':
$redis = new \Redis();
$redis->connect($this->config->get('system.cache.redis.server','localhost'),
$this->config->get('system.cache.redis.port', 6379));
$driver = new \Doctrine\Common\Cache\RedisCache();
$driver->setRedis($redis);
break;
default:
$driver = new \Doctrine\Common\Cache\FilesystemCache(CACHE_DIR);
$driver = new \Doctrine\Common\Cache\FilesystemCache($this->cache_dir);
break;
}
@@ -132,7 +191,6 @@ class Cache extends Getters
public function fetch($id)
{
if ($this->enabled) {
$id = $this->key . $id;
return $this->driver->fetch($id);
} else {
return false;
@@ -149,7 +207,9 @@ class Cache extends Getters
public function save($id, $data, $lifetime = null)
{
if ($this->enabled) {
$id = $this->key . $id;
if ($lifetime === null) {
$lifetime = $this->getLifetime();
}
$this->driver->save($id, $data, $lifetime);
}
}
@@ -161,4 +221,110 @@ class Cache extends Getters
{
return $this->key;
}
/**
* Helper method to clear all Grav caches
*
* @param string $remove standard|all|assets-only|images-only|cache-only
*
* @return array
*/
public static function clearCache($remove = 'standard')
{
$locator = self::getGrav()['locator'];
$output = [];
$user_config = USER_DIR . 'config/system.yaml';
switch($remove) {
case 'all':
$remove_paths = self::$all_remove;
break;
case 'assets-only':
$remove_paths = self::$assets_remove;
break;
case 'images-only':
$remove_paths = self::$images_remove;
break;
case 'cache-only':
$remove_paths = self::$cache_remove;
break;
default:
$remove_paths = self::$standard_remove;
}
foreach ($remove_paths as $stream) {
// Convert stream to a real path
$path = $locator->findResource($stream, true, true);
// Make sure path exists before proceeding, otherwise we would wipe ROOT_DIR
if (!$path)
throw new \RuntimeException("Stream '{$stream}' not found", 500);
$anything = false;
$files = glob($path . '/*');
if (is_array($files)) {
foreach ($files as $file) {
if (is_file($file)) {
if (@unlink($file)) {
$anything = true;
}
} elseif (is_dir($file)) {
if (@Folder::delete($file)) {
$anything = true;
}
}
}
}
if ($anything) {
$output[] = '<red>Cleared: </red>' . $path . '/*';
}
}
$output[] = '';
if (($remove == 'all' || $remove == 'standard') && file_exists($user_config)) {
touch($user_config);
$output[] = '<red>Touched: </red>' . $user_config;
$output[] = '';
}
return $output;
}
/**
* Set the cache lifetime programmatically
*
* @param int $future timestamp
*/
public function setLifetime($future)
{
if (!$future) {
return;
}
$interval = $future - $this->now;
if ($interval > 0 && $interval < $this->getLifetime()) {
$this->lifetime = $interval;
}
}
/**
* Retrieve the cache lifetime (in seconds)
*
* @return mixed
*/
public function getLifetime()
{
if ($this->lifetime === null) {
$this->lifetime = $this->config->get('system.cache.lifetime') ?: 604800; // 1 week default
}
return $this->lifetime;
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace Grav\Common;
/**
* Offers composer helper methods.
*
* @author eschmar
* @license MIT
*/
class Composer
{
/** @const Default composer location */
const DEFAULT_PATH = "bin/composer.phar";
/**
* Returns the location of composer.
*
* @return string
*/
public static function getComposerLocation()
{
if (!function_exists('shell_exec') || strtolower(substr(PHP_OS, 0, 3)) === 'win') {
return self::DEFAULT_PATH;
}
// check for global composer install
$path = trim(shell_exec("command -v composer"));
// fall back to grav bundled composer
if (!$path || !preg_match('/(composer|composer\.phar)$/', $path)) {
$path = self::DEFAULT_PATH;
}
return $path;
}
public static function getComposerExecutor()
{
$executor = PHP_BINARY . ' ';
$composer = static::getComposerLocation();
if ($composer !== static::DEFAULT_PATH && is_executable($composer)) {
$file = fopen($composer, 'r');
$firstLine = fgets($file);
fclose($file);
if (!preg_match('/^#!.+php/i', $firstLine)) {
$executor = '';
}
}
return $executor . $composer;
}
}

View File

@@ -1,259 +0,0 @@
<?php
namespace Grav\Common;
use Grav\Common\Data\Blueprints;
use Grav\Common\Data\Data;
use Grav\Common\Filesystem\File;
use Grav\Common\Filesystem\Folder;
/**
* The Config class contains configuration information.
*
* @author RocketTheme
* @license MIT
*/
class Config extends Data
{
/**
* @var string Configuration location in the disk.
*/
public $filename;
/**
* @var string MD5 from the files.
*/
public $key;
/**
* @var array Configuration file list.
*/
public $files = array();
/**
* @var bool Flag to tell if configuration needs to be saved.
*/
public $updated = false;
public $issues = array();
/**
* Constructor.
*/
public function __construct($filename)
{
$this->filename = realpath(dirname($filename)) . '/' . basename($filename);
$this->reload(false);
}
/**
* Force reload of the configuration from the disk.
*
* @param bool $force
* @return $this
*/
public function reload($force = true)
{
// Build file map.
$files = $this->build();
$key = md5(serialize($files) . GRAV_VERSION);
if ($force || $key != $this->key) {
// First take non-blocking lock to the file.
File\Config::instance($this->filename)->lock(false);
// Reset configuration.
$this->items = array();
$this->files = array();
$this->init($files);
$this->key = $key;
}
return $this;
}
/**
* Save configuration into file.
*
* Note: Only saves the file if updated flag is set!
*
* @return $this
* @throws \RuntimeException
*/
public function save()
{
// If configuration was updated, store it as cached version.
try {
$file = File\Config::instance($this->filename);
// Only save configuration file if it wasn't locked. Also invalidate opcache after saving.
// This prevents us from saving the file multiple times in a row and gives faster recovery.
if ($file->locked() !== false) {
$file->save($this);
$file->unlock();
}
$this->updated = false;
} catch (\Exception $e) {
$this->issues[] = 'Writing configuration into cache failed.';
//throw new \RuntimeException('Writing configuration into cache failed.', 500, $e);
}
return $this;
}
/**
* Load configuration.
*
* @param Grav $grav
* @return \Grav\Common\Config
*/
public static function instance(Grav $grav)
{
$filename = $grav['config_path'];
// Load cached version if available..
if (file_exists($filename)) {
require_once $filename;
if (class_exists('\Grav\Config')) {
$instance = new \Grav\Config($filename);
}
}
// Or initialize new configuration object..
if (!isset($instance)) {
$instance = new static($filename);
}
// If configuration was updated, store it as cached version.
if ($instance->updated) {
$instance->save();
}
// If not set, add manually current base url.
if (empty($instance->items['system']['base_url_absolute'])) {
$instance->items['system']['base_url_absolute'] = $grav['uri']->rootUrl(true);
}
if (empty($instance->items['system']['base_url_relative'])) {
$instance->items['system']['base_url_relative'] = $grav['uri']->rootUrl(false);
}
return $instance;
}
/**
* Convert configuration into an array.
*
* @return array
*/
public function toArray()
{
return array('key' => $this->key, 'files' => $this->files, 'items' => $this->items);
}
/**
* Initialize object by loading all the configuration files.
*
* @param array $files
*/
protected function init(array $files)
{
$this->updated = true;
// Combine all configuration files into one larger lookup table (only keys matter).
$allFiles = $files['user'] + $files['plugins'] + $files['system'];
// Then sort the files to have all parent nodes first.
// This is to make sure that child nodes override parents content.
uksort(
$allFiles,
function($a, $b) {
$diff = substr_count($a, '/') - substr_count($b, '/');
return $diff ? $diff : strcmp($a, $b);
}
);
$systemBlueprints = new Blueprints(SYSTEM_DIR . 'blueprints');
$pluginBlueprints = new Blueprints(USER_DIR);
$items = array();
foreach ($allFiles as $name => $dummy) {
$lookup = array(
'system' => SYSTEM_DIR . 'config/' . $name . YAML_EXT,
'plugins' => USER_DIR . $name . '/' . basename($name) . YAML_EXT,
'user' => USER_DIR . 'config/' . $name . YAML_EXT,
);
if (strpos($name, 'plugins/') === 0) {
$blueprint = $pluginBlueprints->get("{$name}/blueprints");
} else {
$blueprint = $systemBlueprints->get($name);
}
$data = new Data(array(), $blueprint);
foreach ($lookup as $key => $path) {
if (is_file($path)) {
$data->merge(File\Yaml::instance($path)->content());
}
}
// $data->validate();
// $data->filter();
// Find the current sub-tree location.
$current = &$items;
$parts = explode('/', $name);
foreach ($parts as $part) {
if (!isset($current[$part])) {
$current[$part] = array();
}
$current = &$current[$part];
}
// Handle both updated and deleted configuration files.
$current = $data->toArray();
}
$this->items = $items;
$this->files = $files;
}
/**
* Build a list of configuration files with their timestamps. Used for loading settings and caching them.
*
* @return array
* @internal
*/
protected function build()
{
// Find all plugins with default configuration options.
$plugins = array();
$iterator = new \DirectoryIterator(PLUGINS_DIR);
/** @var \DirectoryIterator $plugin */
foreach ($iterator as $plugin) {
$name = $plugin->getBasename();
$file = $plugin->getPathname() . DS . $name . YAML_EXT;
if (!is_file($file)) {
continue;
}
$modified = filemtime($file);
$plugins["plugins/{$name}"] = $modified;
}
// Find all system and user configuration files.
$options = array(
'compare' => 'Filename',
'pattern' => '|\.yaml$|',
'filters' => array('key' => '|\.yaml$|'),
'key' => 'SubPathname',
'value' => 'MTime'
);
$system = Folder::all(SYSTEM_DIR . 'config', $options);
$user = Folder::all(USER_DIR . 'config', $options);
return array('system' => $system, 'plugins' => $plugins, 'user' => $user);
}
}

View File

@@ -0,0 +1,236 @@
<?php
namespace Grav\Common\Config;
use RocketTheme\Toolbox\File\PhpFile;
/**
* The Compiled base class.
*/
abstract class CompiledBase
{
/**
* @var int Version number for the compiled file.
*/
public $version = 1;
/**
* @var string Filename (base name) of the compiled configuration.
*/
public $name;
/**
* @var string|bool Configuration checksum.
*/
public $checksum;
/**
* @var string Cache folder to be used.
*/
protected $cacheFolder;
/**
* @var array List of files to load.
*/
protected $files;
/**
* @var string
*/
protected $path;
/**
* @var mixed Configuration object.
*/
protected $object;
/**
* @param string $cacheFolder Cache folder to be used.
* @param array $files List of files as returned from ConfigFileFinder class.
* @param string $path Base path for the file list.
* @throws \BadMethodCallException
*/
public function __construct($cacheFolder, array $files, $path)
{
if (!$cacheFolder) {
throw new \BadMethodCallException('Cache folder not defined.');
}
$this->cacheFolder = $cacheFolder;
$this->files = $files;
$this->path = $path ? rtrim($path, '\\/') . '/' : '';
}
/**
* Get filename for the compiled PHP file.
*
* @param string $name
* @return $this
*/
public function name($name = null)
{
if (!$this->name) {
$this->name = $name ?: md5(json_encode(array_keys($this->files)));
}
return $this;
}
/**
* Function gets called when cached configuration is saved.
*/
public function modified() {}
/**
* Load the configuration.
*
* @return mixed
*/
public function load()
{
if ($this->object) {
return $this->object;
}
$filename = $this->createFilename();
if (!$this->loadCompiledFile($filename) && $this->loadFiles()) {
$this->saveCompiledFile($filename);
}
return $this->object;
}
/**
* Returns checksum from the configuration files.
*
* You can set $this->checksum = false to disable this check.
*
* @return bool|string
*/
public function checksum()
{
if (!isset($this->checksum)) {
$this->checksum = md5(json_encode($this->files) . $this->version);
}
return $this->checksum;
}
protected function createFilename()
{
return "{$this->cacheFolder}/{$this->name()->name}.php";
}
/**
* Create configuration object.
*
* @param array $data
*/
abstract protected function createObject(array $data = []);
/**
* Finalize configuration object.
*/
abstract protected function finalizeObject();
/**
* Load single configuration file and append it to the correct position.
*
* @param string $name Name of the position.
* @param string $filename File to be loaded.
*/
abstract protected function loadFile($name, $filename);
/**
* Load and join all configuration files.
*
* @return bool
* @internal
*/
protected function loadFiles()
{
$this->createObject();
$list = array_reverse($this->files);
foreach ($list as $files) {
foreach ($files as $name => $item) {
$this->loadFile($name, $this->path . $item['file']);
}
}
$this->finalizeObject();
return true;
}
/**
* Load compiled file.
*
* @param string $filename
* @return bool
* @internal
*/
protected function loadCompiledFile($filename)
{
if (!file_exists($filename)) {
return false;
}
$cache = include $filename;
if (
!is_array($cache)
|| !isset($cache['checksum'])
|| !isset($cache['data'])
|| !isset($cache['@class'])
|| $cache['@class'] != get_class($this)
) {
return false;
}
// Load real file if cache isn't up to date (or is invalid).
if ($cache['checksum'] !== $this->checksum()) {
return false;
}
$this->createObject($cache['data']);
return true;
}
/**
* Save compiled file.
*
* @param string $filename
* @throws \RuntimeException
* @internal
*/
protected function saveCompiledFile($filename)
{
$file = PhpFile::instance($filename);
// Attempt to lock the file for writing.
try {
$file->lock(false);
} catch (\Exception $e) {
// Another process has locked the file; we will check this in a bit.
}
if ($file->locked() === false) {
// File was already locked by another process.
return;
}
$cache = [
'@class' => get_class($this),
'timestamp' => time(),
'checksum' => $this->checksum(),
'files' => $this->files,
'data' => $this->object->toArray()
];
$file->save($cache);
$file->unlock();
$file->free();
$this->modified();
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\File\CompiledYamlFile;
use RocketTheme\Toolbox\Blueprints\Blueprints;
/**
* The Compiled Blueprints class.
*/
class CompiledBlueprints extends CompiledBase
{
/**
* @var int Version number for the compiled file.
*/
public $version = 1;
/**
* @var Blueprints Blueprints object.
*/
protected $object;
/**
* Create configuration object.
*
* @param array $data
*/
protected function createObject(array $data = [])
{
$this->object = new Blueprints($data);
}
/**
* Finalize configuration object.
*/
protected function finalizeObject() {}
/**
* Load single configuration file and append it to the correct position.
*
* @param string $name Name of the position.
* @param string $filename File to be loaded.
*/
protected function loadFile($name, $filename)
{
$file = CompiledYamlFile::instance($filename);
$this->object->embed($name, $file->content(), '/');
$file->free();
}
}

View File

@@ -0,0 +1,98 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\File\CompiledYamlFile;
/**
* The Compiled Configuration class.
*/
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.
*/
protected $callable;
/**
* @var bool
*/
protected $withDefaults;
/**
* Set blueprints for the configuration.
*
* @param callable $blueprints
* @return $this
*/
public function setBlueprints(callable $blueprints)
{
$this->callable = $blueprints;
return $this;
}
/**
* @param bool $withDefaults
* @return mixed
*/
public function load($withDefaults = false)
{
$this->withDefaults = $withDefaults;
return parent::load();
}
/**
* Create configuration object.
*
* @param array $data
*/
protected function createObject(array $data = [])
{
if ($this->withDefaults && empty($data) && is_callable($this->callable)) {
$blueprints = $this->callable;
$data = $blueprints()->getDefaults();
}
$this->object = new Config($data, $this->callable);
}
/**
* Finalize configuration object.
*/
protected function finalizeObject()
{
$this->object->checksum($this->checksum());
}
/**
* Function gets called when cached configuration is saved.
*/
public function modified()
{
$this->object->modified(true);
}
/**
* Load single configuration file and append it to the correct position.
*
* @param string $name Name of the position.
* @param string $filename File to be loaded.
*/
protected function loadFile($name, $filename)
{
$file = CompiledYamlFile::instance($filename);
$this->object->join($name, $file->content(), '/');
$file->free();
}
}

View File

@@ -0,0 +1,64 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\File\CompiledYamlFile;
/**
* The Compiled Languages class.
*/
class CompiledLanguages extends CompiledBase
{
/**
* @var int Version number for the compiled file.
*/
public $version = 1;
/**
* @var Languages Configuration object.
*/
protected $object;
/**
* Create configuration object.
*
* @param array $data
*/
protected function createObject(array $data = [])
{
$this->object = new Languages($data);
}
/**
* Finalize configuration object.
*/
protected function finalizeObject()
{
$this->object->checksum($this->checksum());
}
/**
* Function gets called when cached configuration is saved.
*/
public function modified()
{
$this->object->modified(true);
}
/**
* Load single configuration file and append it to the correct position.
*
* @param string $name Name of the position.
* @param string $filename File to be loaded.
*/
protected function loadFile($name, $filename)
{
$file = CompiledYamlFile::instance($filename);
if (preg_match('|languages\.yaml$|', $filename)) {
$this->object->mergeRecursive($file->content());
} else {
$this->object->join($name, $file->content(), '/');
}
$file->free();
}
}

View File

@@ -0,0 +1,97 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\Debugger;
use Grav\Common\Grav;
use Grav\Common\Data\Data;
use Grav\Common\Service\ConfigServiceProvider;
/**
* The Config class contains configuration information.
*
* @author RocketTheme
* @license MIT
*/
class Config extends Data
{
protected $checksum;
protected $modified = false;
public function key()
{
return $this->checksum();
}
public function checksum($checksum = null)
{
if ($checksum !== null) {
$this->checksum = $checksum;
}
return $this->checksum;
}
public function modified($modified = null)
{
if ($modified !== null) {
$this->modified = $modified;
}
return $this->modified;
}
public function reload()
{
$grav = Grav::instance();
// Load new configuration.
$config = ConfigServiceProvider::load($grav);
/** @var Debugger $debugger */
$debugger = $grav['debugger'];
if ($config->modified()) {
// Update current configuration.
$this->items = $config->toArray();
$this->checksum($config->checksum());
$this->modified(true);
$debugger->addMessage('Configuration was changed and saved.');
}
return $this;
}
public function debug()
{
/** @var Debugger $debugger */
$debugger = Grav::instance()['debugger'];
$debugger->addMessage('Environment Name: ' . $this->environment);
if ($this->modified()) {
$debugger->addMessage('Configuration reloaded and cached.');
}
}
public function init()
{
$setup = Grav::instance()['setup']->toArray();
foreach ($setup as $key => $value) {
if ($key === 'streams' || !is_array($value)) {
// Optimized as streams and simple values are fully defined in setup.
$this->items[$key] = $value;
} else {
$this->joinDefaults($key, $value);
}
}
}
/**
* @return mixed
* @deprecated
*/
public function getLanguages()
{
return Grav::instance()['languages'];
}
}

View File

@@ -0,0 +1,258 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\Filesystem\Folder;
/**
* The Configuration & Blueprints Finder class.
*/
class ConfigFileFinder
{
protected $base = '';
/**
* @param string $base
* @return $this
*/
public function setBase($base)
{
$this->base = $base ? "{$base}/" : '';
return $this;
}
/**
* Return all locations for all the files with a timestamp.
*
* @param array $paths List of folders to look from.
* @param string $pattern Pattern to match the file. Pattern will also be removed from the key.
* @param int $levels Maximum number of recursive directories.
* @return array
*/
public function locateFiles(array $paths, $pattern = '|\.yaml$|', $levels = -1)
{
$list = [];
foreach ($paths as $folder) {
$list += $this->detectRecursive($folder, $pattern, $levels);
}
return $list;
}
/**
* Return all locations for all the files with a timestamp.
*
* @param array $paths List of folders to look from.
* @param string $pattern Pattern to match the file. Pattern will also be removed from the key.
* @param int $levels Maximum number of recursive directories.
* @return array
*/
public function getFiles(array $paths, $pattern = '|\.yaml$|', $levels = -1)
{
$list = [];
foreach ($paths as $folder) {
$path = trim(Folder::getRelativePath($folder), '/');
$files = $this->detectRecursive($folder, $pattern, $levels);
$list += $files[trim($path, '/')];
}
return $list;
}
/**
* Return all paths for all the files with a timestamp.
*
* @param array $paths List of folders to look from.
* @param string $pattern Pattern to match the file. Pattern will also be removed from the key.
* @param int $levels Maximum number of recursive directories.
* @return array
*/
public function listFiles(array $paths, $pattern = '|\.yaml$|', $levels = -1)
{
$list = [];
foreach ($paths as $folder) {
$list = array_merge_recursive($list, $this->detectAll($folder, $pattern, $levels));
}
return $list;
}
/**
* Find filename from a list of folders.
*
* Note: Only finds the last override.
*
* @param string $filename
* @param array $folders
* @return array
*/
public function locateFileInFolder($filename, array $folders)
{
$list = [];
foreach ($folders as $folder) {
$list += $this->detectInFolder($folder, $filename);
}
return $list;
}
/**
* Find filename from a list of folders.
*
* @param array $folders
* @param string $filename
* @return array
*/
public function locateInFolders(array $folders, $filename = null)
{
$list = [];
foreach ($folders as $folder) {
$path = trim(Folder::getRelativePath($folder), '/');
$list[$path] = $this->detectInFolder($folder, $filename);
}
return $list;
}
/**
* Return all existing locations for a single file with a timestamp.
*
* @param array $paths Filesystem paths to look up from.
* @param string $name Configuration file to be located.
* @param string $ext File extension (optional, defaults to .yaml).
* @return array
*/
public function locateFile(array $paths, $name, $ext = '.yaml')
{
$filename = preg_replace('|[.\/]+|', '/', $name) . $ext;
$list = [];
foreach ($paths as $folder) {
$path = trim(Folder::getRelativePath($folder), '/');
if (is_file("{$folder}/{$filename}")) {
$modified = filemtime("{$folder}/{$filename}");
} else {
$modified = 0;
}
$basename = $this->base . $name;
$list[$path] = [$basename => ['file' => "{$path}/{$filename}", 'modified' => $modified]];
}
return $list;
}
/**
* Detects all directories with a configuration file and returns them with last modification time.
*
* @param string $folder Location to look up from.
* @param string $pattern Pattern to match the file. Pattern will also be removed from the key.
* @param int $levels Maximum number of recursive directories.
* @return array
* @internal
*/
protected function detectRecursive($folder, $pattern, $levels)
{
$path = trim(Folder::getRelativePath($folder), '/');
if (is_dir($folder)) {
// Find all system and user configuration files.
$options = [
'levels' => $levels,
'compare' => 'Filename',
'pattern' => $pattern,
'filters' => [
'pre-key' => $this->base,
'key' => $pattern,
'value' => function (\RecursiveDirectoryIterator $file) use ($path) {
return ['file' => "{$path}/{$file->getSubPathname()}", 'modified' => $file->getMTime()];
}
],
'key' => 'SubPathname'
];
$list = Folder::all($folder, $options);
ksort($list);
} else {
$list = [];
}
return [$path => $list];
}
/**
* Detects all directories with the lookup file and returns them with last modification time.
*
* @param string $folder Location to look up from.
* @param string $lookup Filename to be located (defaults to directory name).
* @return array
* @internal
*/
protected function detectInFolder($folder, $lookup = null)
{
$folder = rtrim($folder, '/');
$path = trim(Folder::getRelativePath($folder), '/');
$base = $path === $folder ? '' : ($path ? substr($folder, 0, -strlen($path)) : $folder . '/');
$list = [];
if (is_dir($folder)) {
$iterator = new \DirectoryIterator($folder);
/** @var \DirectoryIterator $directory */
foreach ($iterator as $directory) {
if (!$directory->isDir() || $directory->isDot()) {
continue;
}
$name = $directory->getBasename();
$find = ($lookup ?: $name) . '.yaml';
$filename = "{$path}/{$name}/{$find}";
if (file_exists($base . $filename)) {
$basename = $this->base . $name;
$list[$basename] = ['file' => $filename, 'modified' => filemtime($base . $filename)];
}
}
}
return $list;
}
/**
* Detects all plugins with a configuration file and returns them with last modification time.
*
* @param string $folder Location to look up from.
* @param string $pattern Pattern to match the file. Pattern will also be removed from the key.
* @param int $levels Maximum number of recursive directories.
* @return array
* @internal
*/
protected function detectAll($folder, $pattern, $levels)
{
$path = trim(Folder::getRelativePath($folder), '/');
if (is_dir($folder)) {
// Find all system and user configuration files.
$options = [
'levels' => $levels,
'compare' => 'Filename',
'pattern' => $pattern,
'filters' => [
'pre-key' => $this->base,
'key' => $pattern,
'value' => function (\RecursiveDirectoryIterator $file) use ($path) {
return ["{$path}/{$file->getSubPathname()}" => $file->getMTime()];
}
],
'key' => 'SubPathname'
];
$list = Folder::all($folder, $options);
ksort($list);
} else {
$list = [];
}
return $list;
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\Data\Data;
/**
* The Languages class contains configuration rules.
*
* @author RocketTheme
* @license MIT
*/
class Languages extends Data
{
public function checksum($checksum = null)
{
if ($checksum !== null) {
$this->checksum = $checksum;
}
return $this->checksum;
}
public function modified($modified = null)
{
if ($modified !== null) {
$this->modified = $modified;
}
return $this->modified;
}
public function reformat()
{
if (isset($this->items['plugins'])) {
$this->items = array_merge_recursive($this->items, $this->items['plugins']);
unset($this->items['plugins']);
}
}
public function mergeRecursive(array $data)
{
$this->items = array_merge_recursive($this->items, $data);
}
}

View File

@@ -0,0 +1,254 @@
<?php
namespace Grav\Common\Config;
use Grav\Common\File\CompiledYamlFile;
use Grav\Common\Data\Data;
use Grav\Common\Utils;
use RocketTheme\Toolbox\File\YamlFile;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
/**
* The Config class contains configuration information.
*
* @author RocketTheme
* @license MIT
*/
class Setup extends Data
{
protected $streams = [
'system' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['system'],
]
],
'user' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user'],
]
],
'environment' => [
'type' => 'ReadOnlyStream'
// If not defined, environment will be set up in the constructor.
],
'asset' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['assets'],
]
],
'blueprints' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['environment://blueprints', 'user://blueprints', 'system/blueprints'],
]
],
'config' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['environment://config', 'user://config', 'system/config'],
]
],
'plugins' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user://plugins'],
]
],
'plugin' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user://plugins'],
]
],
'themes' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user://themes'],
]
],
'languages' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['environment://languages', 'user://languages', 'system/languages'],
]
],
'cache' => [
'type' => 'Stream',
'prefixes' => [
'' => ['cache'],
'images' => ['images']
]
],
'log' => [
'type' => 'Stream',
'prefixes' => [
'' => ['logs']
]
],
'backup' => [
'type' => 'Stream',
'prefixes' => [
'' => ['backup']
]
],
'image' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user://images', 'system://images']
]
],
'page' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user://pages']
]
],
'account' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['user://accounts']
]
],
];
public function __construct($container)
{
$environment = $container['uri']->environment();
if (!$environment) {
$environment = 'localhost';
}
// Pre-load setup.php which contains our initial configuration.
// Configuration may contain dynamic parts, which is why we need to always load it.
$file = GRAV_ROOT . '/setup.php';
$setup = is_file($file) ? (array) include $file : [];
// Add default streams defined in beginning of the class.
if (!isset($setup['streams']['schemes'])) {
$setup['streams']['schemes'] = [];
}
$setup['streams']['schemes'] += $this->streams;
// Initialize class.
parent::__construct($setup);
// Set up environment.
$this->def('environment', $environment);
$this->def('streams.schemes.environment.prefixes', ['' => ["user://{$this->environment}"]]);
}
/**
* @return $this
*/
public function init()
{
$locator = new UniformResourceLocator(GRAV_ROOT);
$files = [];
$guard = 5;
do {
$check = $files;
$this->initializeLocator($locator);
$files = $locator->findResources('config://streams.yaml');
if ($check === $files) {
break;
}
// Update streams.
foreach ($files as $path) {
$file = CompiledYamlFile::instance($path);
$content = $file->content();
if (!empty($content['schemes'])) {
$this->items['streams']['schemes'] = $content['schemes'] + $this->items['streams']['schemes'];
}
}
} while (--$guard);
if (!$guard) {
throw new \RuntimeException('Setup: Configuration reload loop detected!');
}
// Make sure we have valid setup.
$this->check($locator);
return $this;
}
/**
* Initialize resource locator by using the configuration.
*
* @param UniformResourceLocator $locator
*/
public function initializeLocator(UniformResourceLocator $locator)
{
$locator->reset();
$schemes = (array) $this->get('streams.schemes', []);
foreach ($schemes as $scheme => $config) {
if (isset($config['paths'])) {
$locator->addPath($scheme, '', $config['paths']);
}
if (isset($config['prefixes'])) {
foreach ($config['prefixes'] as $prefix => $paths) {
$locator->addPath($scheme, $prefix, $paths);
}
}
}
}
/**
* Get available streams and their types from the configuration.
*
* @return array
*/
public function getStreams()
{
$schemes = [];
foreach ((array) $this->get('streams.schemes') as $scheme => $config) {
$type = !empty($config['type']) ? $config['type'] : 'ReadOnlyStream';
if ($type[0] != '\\') {
$type = '\\RocketTheme\\Toolbox\\StreamWrapper\\' . $type;
}
$schemes[$scheme] = $type;
}
return $schemes;
}
/**
* @param UniformResourceLocator $locator
* @throws \InvalidArgumentException
*/
protected function check(UniformResourceLocator $locator)
{
$streams = isset($this->items['streams']['schemes']) ? $this->items['streams']['schemes'] : null;
if (!is_array($streams)) {
throw new \InvalidArgumentException('Configuration is missing streams.schemes!');
}
$diff = array_keys(array_diff_key($this->streams, $streams));
if ($diff) {
throw new \InvalidArgumentException(
sprintf('Configuration is missing keys %s from streams.schemes!', implode(', ', $diff))
);
}
if (!$locator->findResource('environment://config', true)) {
// If environment does not have its own directory, remove it from the lookup.
$this->set('streams.schemes.environment.prefixes', ['config' => []]);
$this->initializeLocator($locator);
}
// Create security.yaml if it doesn't exist.
$filename = $locator->findResource('config://security.yaml', true, true);
$file = YamlFile::instance($filename);
if (!$file->exists()) {
$file->save(['salt' => Utils::generateRandomString(14)]);
$file->free();
}
}
}

View File

@@ -1,7 +1,10 @@
<?php
namespace Grav\Common\Data;
use \Symfony\Component\Yaml\Yaml;
use Grav\Common\GravTrait;
use RocketTheme\Toolbox\ArrayTraits\Export;
use RocketTheme\Toolbox\ArrayTraits\ExportInterface;
use RocketTheme\Toolbox\ArrayTraits\NestedArrayAccessWithGetters;
/**
* Blueprint handles the inside logic of blueprints.
@@ -9,88 +12,41 @@ use \Symfony\Component\Yaml\Yaml;
* @author RocketTheme
* @license MIT
*/
class Blueprint
class Blueprint implements \ArrayAccess, ExportInterface
{
use Export, NestedArrayAccessWithGetters, GravTrait;
public $name;
public $initialized = false;
protected $blueprints;
protected $items;
protected $context;
protected $fields;
protected $rules = array();
protected $nested = array();
protected $filter = ['validation' => 1];
/**
* @param string $name
* @param array $data
* @param Blueprints $context
*/
public function __construct($name, array $data, Blueprints $context)
public function __construct($name, array $data = array(), Blueprints $context = null)
{
$this->name = $name;
$this->blueprints = $data;
$this->items = $data;
$this->context = $context;
}
/**
* Get value by using dot notation for nested arrays/objects.
* Set filter for inherited properties.
*
* @example $value = $data->get('this.is.my.nested.variable');
*
* @param string $name Dot separated path to the requested value.
* @param mixed $default Default value (or null).
* @param string $separator Separator, defaults to '.'
*
* @return mixed Value.
* @param array $filter List of field names to be inherited.
*/
public function get($name, $default = null, $separator = '.')
public function setFilter(array $filter)
{
$path = explode($separator, $name);
$current = $this->blueprints;
foreach ($path as $field) {
if (is_object($current) && isset($current->{$field})) {
$current = $current->{$field};
} elseif (is_array($current) && isset($current[$field])) {
$current = $current[$field];
} else {
return $default;
}
}
return $current;
}
/**
* Sey value by using dot notation for nested arrays/objects.
*
* @example $value = $data->set('this.is.my.nested.variable', true);
*
* @param string $name Dot separated path to the requested value.
* @param mixed $value New value.
* @param string $separator Separator, defaults to '.'
*/
public function set($name, $value, $separator = '.')
{
$path = explode($separator, $name);
$current = &$this->blueprints;
foreach ($path as $field) {
if (is_object($current)) {
// Handle objects.
if (!isset($current->{$field})) {
$current->{$field} = array();
}
$current = &$current->{$field};
} else {
// Handle arrays and scalars.
if (!is_array($current)) {
$current = array($field => array());
} elseif (!isset($current[$field])) {
$current[$field] = array();
}
$current = &$current[$field];
}
}
$current = $value;
$this->filter = array_flip($filter);
}
/**
@@ -101,8 +57,8 @@ class Blueprint
public function fields()
{
if (!isset($this->fields)) {
$this->fields = isset($this->blueprints['form']['fields']) ? $this->blueprints['form']['fields'] : array();
$this->getFields($this->fields);
$this->fields = [];
$this->embed('', $this->items);
}
return $this->fields;
@@ -122,7 +78,9 @@ class Blueprint
try {
$this->validateArray($data, $this->nested);
} catch (\RuntimeException $e) {
throw new \RuntimeException(sprintf('Page validation failed: %s', $e->getMessage()));
$language = self::getGrav()['language'];
$message = sprintf($language->translate('FORM.VALIDATION_FAIL', null, true) . ' %s', $e->getMessage());
throw new \RuntimeException($message);
}
}
@@ -164,7 +122,82 @@ class Blueprint
{
// Initialize data
$this->fields();
return $this->extraArray($data, $this->nested, $prefix);
$rules = $this->nested;
// Drill down to prefix level
if (!empty($prefix)) {
$parts = explode('.', trim($prefix, '.'));
foreach ($parts as $part) {
$rules = isset($rules[$part]) ? $rules[$part] : [];
}
}
return $this->extraArray($data, $rules, $prefix);
}
/**
* Extend blueprint with another blueprint.
*
* @param Blueprint $extends
* @param bool $append
*/
public function extend(Blueprint $extends, $append = false)
{
$blueprints = $append ? $this->items : $extends->toArray();
$appended = $append ? $extends->toArray() : $this->items;
$bref_stack = array(&$blueprints);
$head_stack = array($appended);
do {
end($bref_stack);
$bref = &$bref_stack[key($bref_stack)];
$head = array_pop($head_stack);
unset($bref_stack[key($bref_stack)]);
foreach (array_keys($head) as $key) {
if (isset($key, $bref[$key]) && is_array($bref[$key]) && is_array($head[$key])) {
$bref_stack[] = &$bref[$key];
$head_stack[] = $head[$key];
} else {
$bref = array_merge($bref, array($key => $head[$key]));
}
}
} while (count($head_stack));
$this->items = $blueprints;
}
/**
* Convert object into an array.
*
* @return array
*/
public function getState()
{
return ['name' => $this->name, 'items' => $this->items, 'rules' => $this->rules, 'nested' => $this->nested];
}
/**
* Embed an array to the blueprint.
*
* @param $name
* @param array $value
* @param string $separator
*/
public function embed($name, array $value, $separator = '.')
{
if (!isset($value['form']['fields']) || !is_array($value['form']['fields'])) {
return;
}
// Initialize data
$this->fields();
$prefix = $name ? strtr($name, $separator, '.') . '.' : '';
$params = array_intersect_key($this->filter, $value);
$this->parseFormFields($value['form']['fields'], $params, $prefix, $this->fields);
}
/**
@@ -187,7 +220,7 @@ class Blueprint
} elseif (is_array($field) && is_array($val)) {
// Array has been defined in blueprints.
$this->validateArray($field, $val);
} elseif (isset($this->blueprints['validation']) && $this->blueprints['validation'] == 'strict') {
} elseif (isset($this->items['form']['validation']) && $this->items['form']['validation'] == 'strict') {
// Undefined/extra item.
throw new \RuntimeException(sprintf('%s is not defined in blueprints', $key));
}
@@ -213,7 +246,7 @@ class Blueprint
} elseif (is_array($field) && is_array($val)) {
// Array has been defined in blueprints.
$field = $this->filterArray($field, $val);
} elseif (isset($this->blueprints['validation']) && $this->blueprints['validation'] == 'strict') {
} elseif (isset($this->items['form']['validation']) && $this->items['form']['validation'] == 'strict') {
$field = null;
}
@@ -268,7 +301,7 @@ class Blueprint
// Item has been defined in blueprints.
} elseif (is_array($field) && is_array($val)) {
// Array has been defined in blueprints.
$array += $this->ExtraArray($field, $val, $prefix);
$array += $this->ExtraArray($field, $val, $prefix . $key . '.');
} else {
// Undefined/extra item.
$array[$prefix.$key] = $field;
@@ -278,75 +311,107 @@ class Blueprint
}
/**
* Gets all field definitions from the blueprints.
*
* @param array $fields
* @internal
*/
protected function getFields(array &$fields)
{
// Go though all the fields in current level.
foreach ($fields as $key => &$field) {
// Set name from the array key.
$field['name'] = $key;
* Gets all field definitions from the blueprints.
*
* @param array $fields
* @param array $params
* @param string $prefix
* @param array $current
* @internal
*/
protected function parseFormFields(array &$fields, $params, $prefix, array &$current)
{
// Go though all the fields in current level.
foreach ($fields as $key => &$field) {
$current[$key] = &$field;
// Set name from the array key.
$field['name'] = $prefix . $key;
$field += $params;
if (isset($field['fields'])) {
// Recursively get all the nested fields.
$this->getFields($field['fields']);
} else {
// Add rule.
$this->rules[$key] = &$field;
$this->addProperty($key);
if (isset($field['fields']) && (!isset($field['type']) || $field['type'] !== 'list')) {
// Recursively get all the nested fields.
$newParams = array_intersect_key($this->filter, $field);
$this->parseFormFields($field['fields'], $newParams, $prefix, $current[$key]['fields']);
} else if ($field['type'] !== 'ignore') {
$this->rules[$prefix . $key] = &$field;
$this->addProperty($prefix . $key);
foreach ($field as $name => $value) {
// Support nested blueprints.
if ($name == '@import') {
$values = (array) $value;
if (!isset($field['fields'])) {
$field['fields'] = array();
}
foreach ($values as $bname) {
$b = $this->context->get($bname);
$field['fields'] = array_merge($field['fields'], $b->fields());
}
}
// Support for callable data values.
elseif (substr($name, 0, 6) == '@data-') {
$property = substr($name, 6);
if (is_array($value)) {
$func = array_shift($value);
} else {
$func = $value;
$value = array();
}
list($o, $f) = preg_split('/::/', $func);
if (!$f && function_exists($o)) {
$data = call_user_func_array($o, $value);
} elseif ($f && method_exists($o, $f)) {
$data = call_user_func_array(array($o, $f), $value);
}
// If function returns a value,
if (isset($data)) {
if (isset($field[$property]) && is_array($field[$property]) && is_array($data)) {
// Combine field and @data-field together.
$field[$property] += $data;
} else {
// Or create/replace field with @data-field.
$field[$property] = $data;
}
if ($field['type'] === 'list') {
// we loop through list to get the actual field
if (isset($field['fields']) && $field['fields']) {
foreach($field['fields'] as $subName => &$subField) {
$this->parseFormField($subField);
}
}
} else {
$this->parseFormField($field);
}
// Initialize predefined validation rule.
if (isset($field['validate']['rule'])) {
if (isset($field['validate']['rule']) && $field['type'] !== 'ignore') {
$field['validate'] += $this->getRule($field['validate']['rule']);
}
}
}
}
}
}
/**
* Parses individual field definition
*
* @param array $field
* @internal
*/
protected function parseFormField(&$field) {
foreach ($field as $name => $value) {
// Support nested blueprints.
if ($this->context && $name == '@import') {
$values = (array) $value;
if (!isset($field['fields'])) {
$field['fields'] = array();
}
foreach ($values as $bname) {
$b = $this->context->get($bname);
$field['fields'] = array_merge($field['fields'], $b->fields());
}
}
// Support for callable data values.
elseif (substr($name, 0, 6) == '@data-') {
$property = substr($name, 6);
if (is_array($value)) {
$func = array_shift($value);
} else {
$func = $value;
$value = array();
}
list($o, $f) = preg_split('/::/', $func);
if (!$f && function_exists($o)) {
$data = call_user_func_array($o, $value);
} elseif ($f && method_exists($o, $f)) {
$data = call_user_func_array(array($o, $f), $value);
}
// If function returns a value,
if (isset($data)) {
if (isset($field[$property]) && is_array($field[$property]) && is_array($data)) {
// Combine field and @data-field together.
$field[$property] += $data;
} else {
// Or create/replace field with @data-field.
$field[$property] = $data;
}
}
}
elseif (substr($name, 0, 8) == '@config-') {
$property = substr($name, 8);
$default = isset($field[$property]) ? $field[$property] : null;
$config = self::getGrav()['config']->get($value, $default);
if (!is_null($config)) {
$field[$property] = $config;
}
}
}
}
/**
* Add property to the definition.
@@ -379,8 +444,8 @@ class Blueprint
*/
protected function getRule($rule)
{
if (isset($this->blueprints['rules'][$rule]) && is_array($this->blueprints['rules'][$rule])) {
return $this->blueprints['rules'][$rule];
if (isset($this->items['rules'][$rule]) && is_array($this->items['rules'][$rule])) {
return $this->items['rules'][$rule];
}
return array();
}
@@ -391,82 +456,21 @@ class Blueprint
* @throws \RuntimeException
* @internal
*/
protected function checkRequired(array $data, array $fields) {
protected function checkRequired(array $data, array $fields)
{
foreach ($fields as $name => $field) {
if (!is_string($field)) {
continue;
}
$field = $this->rules[$field];
if (isset($field['validate']['required'])
&& $field['validate']['required'] == true
&& $field['validate']['required'] === true
&& empty($data[$name])) {
throw new \RuntimeException("Missing required field: {$field['name']}");
$value = isset($field['label']) ? $field['label'] : $field['name'];
$language = self::getGrav()['language'];
$message = sprintf($language->translate('FORM.MISSING_REQUIRED_FIELD', null, true) . ' %s', $value);
throw new \RuntimeException($message);
}
}
}
/**
* Convert blueprints into an array.
*
* @return array
*/
public function toArray()
{
return $this->blueprints;
}
/**
* Convert blueprints into YAML string.
*
* @return string
*/
public function toYaml()
{
return Yaml::dump($this->blueprints);
}
/**
* Convert blueprints into JSON string.
*
* @return string
*/
public function toJson()
{
return json_encode($this->blueprints);
}
/**
* Extend blueprint with another blueprint.
*
* @param Blueprint $extends
* @param bool $append
*/
public function extend(Blueprint $extends, $append = false)
{
$blueprints = $append ? $this->blueprints : $extends->toArray();
$appended = $append ? $extends->toArray() : $this->blueprints;
$bref_stack = array(&$blueprints);
$head_stack = array($appended);
do {
end($bref_stack);
$bref = &$bref_stack[key($bref_stack)];
$head = array_pop($head_stack);
unset($bref_stack[key($bref_stack)]);
foreach (array_keys($head) as $key) {
if (isset($key, $bref[$key]) && is_array($bref[$key]) && is_array($head[$key])) {
$bref_stack[] = &$bref[$key];
$head_stack[] = $head[$key];
} else {
$bref = array_merge($bref, array($key => $head[$key]));
}
}
} while(count($head_stack));
$this->blueprints = $blueprints;
}
}

View File

@@ -1,7 +1,9 @@
<?php
namespace Grav\Common\Data;
use \Symfony\Component\Yaml\Yaml;
use Grav\Common\File\CompiledYamlFile;
use Grav\Common\GravTrait;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
/**
* Blueprints class keeps track on blueprint instances.
@@ -11,16 +13,18 @@ use \Symfony\Component\Yaml\Yaml;
*/
class Blueprints
{
use GravTrait;
protected $search;
protected $types;
protected $instances = array();
/**
* @param string $search Search path.
* @param string|array $search Search path.
*/
public function __construct($search)
{
$this->search = rtrim($search, '\\/') . '/';
$this->search = $search;
}
/**
@@ -33,11 +37,27 @@ class Blueprints
public function get($type)
{
if (!isset($this->instances[$type])) {
if (is_file($this->search . $type . YAML_EXT)) {
$blueprints = (array) Yaml::parse($this->search . $type . YAML_EXT);
$parents = [];
if (is_string($this->search)) {
$filename = $this->search . $type . YAML_EXT;
// Check if search is a stream and resolve the path.
if (strpos($filename, '://')) {
$grav = static::getGrav();
/** @var UniformResourceLocator $locator */
$locator = $grav['locator'];
$parents = $locator->findResources($filename);
$filename = array_shift($parents);
}
} else {
// throw new \RuntimeException("Blueprints for '{$type}' cannot be found! {$this->search}{$type}");
$blueprints = array();
$filename = isset($this->search[$type]) ? $this->search[$type] : '';
}
if ($filename && is_file($filename)) {
$file = CompiledYamlFile::instance($filename);
$blueprints = $file->content();
} else {
$blueprints = [];
}
$blueprint = new Blueprint($type, $blueprints, $this);
@@ -45,8 +65,41 @@ class Blueprints
if (isset($blueprints['@extends'])) {
// Extend blueprint by other blueprints.
$extends = (array) $blueprints['@extends'];
foreach ($extends as $extendType) {
$blueprint->extend($this->get($extendType));
if (is_string(key($extends))) {
$extends = [ $extends ];
}
foreach ($extends as $extendConfig) {
$extendType = !is_string($extendConfig) ? empty($extendConfig['type']) ? false : $extendConfig['type'] : $extendConfig;
if (!$extendType) {
continue;
} elseif ($extendType === '@parent') {
$parentFile = array_shift($parents);
if (!$parentFile || !is_file($parentFile)) {
continue;
}
$blueprints = CompiledYamlFile::instance($parentFile)->content();
$parent = new Blueprint($type.'-parent', $blueprints, $this);
$blueprint->extend($parent);
continue;
}
if (is_string($extendConfig) || empty($extendConfig['context'])) {
$context = $this;
} else {
// Load blueprints from external context.
$array = explode('://', $extendConfig['context'], 2);
$scheme = array_shift($array);
$path = array_shift($array);
if ($path) {
$scheme .= '://';
$extendType = $path ? "{$path}/{$extendType}" : $extendType;
}
$context = new self($scheme);
}
$blueprint->extend($context->get($extendType));
}
}
@@ -66,7 +119,18 @@ class Blueprints
if ($this->types === null) {
$this->types = array();
$iterator = new \DirectoryIterator($this->search);
// Check if search is a stream.
if (strpos($this->search, '://')) {
// Stream: use UniformResourceIterator.
$grav = static::getGrav();
/** @var UniformResourceLocator $locator */
$locator = $grav['locator'];
$iterator = $locator->getIterator($this->search, null);
} else {
// Not a stream: use DirectoryIterator.
$iterator = new \DirectoryIterator($this->search);
}
/** @var \DirectoryIterator $file */
foreach ($iterator as $file) {
if (!$file->isFile() || '.' . $file->getExtension() != YAML_EXT) {

View File

@@ -1,9 +1,13 @@
<?php
namespace Grav\Common\Data;
use Grav\Common\Filesystem\FileInterface;
use \Grav\Common\Getters;
use \Grav\Common\Filesystem\File;
use RocketTheme\Toolbox\ArrayTraits\Countable;
use RocketTheme\Toolbox\ArrayTraits\Export;
use RocketTheme\Toolbox\ArrayTraits\ExportInterface;
use RocketTheme\Toolbox\ArrayTraits\NestedArrayAccessWithGetters;
use RocketTheme\Toolbox\Blueprints\Blueprints;
use RocketTheme\Toolbox\File\File;
use RocketTheme\Toolbox\File\FileInterface;
/**
* Recursive data object
@@ -11,8 +15,10 @@ use \Grav\Common\Filesystem\File;
* @author RocketTheme
* @license MIT
*/
class Data extends Getters implements DataInterface
class Data implements DataInterface, \ArrayAccess, \Countable, ExportInterface
{
use NestedArrayAccessWithGetters, Countable, Export;
protected $gettersVariable = 'items';
protected $items;
@@ -22,18 +28,17 @@ class Data extends Getters implements DataInterface
protected $blueprints;
/**
* @var File\General
* @var File
*/
protected $storage;
/**
* @param array $items
* @param Blueprint $blueprints
* @param Blueprint|callable $blueprints
*/
public function __construct(array $items = array(), Blueprint $blueprints = null)
public function __construct(array $items = array(), $blueprints = null)
{
$this->items = $items;
$this->blueprints = $blueprints;
}
@@ -53,125 +58,150 @@ class Data extends Getters implements DataInterface
}
/**
* Get value by using dot notation for nested arrays/objects.
*
* @example $value = $data->get('this.is.my.nested.variable');
* Join nested values together by using blueprints.
*
* @param string $name Dot separated path to the requested value.
* @param mixed $default Default value (or null).
* @param mixed $value Value to be joined.
* @param string $separator Separator, defaults to '.'
* @return mixed Value.
* @return $this
* @throws \RuntimeException
*/
public function get($name, $default = null, $separator = '.')
public function join($name, $value, $separator = '.')
{
$path = explode($separator, $name);
$current = $this->items;
foreach ($path as $field) {
if (is_object($current) && isset($current->{$field})) {
$current = $current->{$field};
} elseif (is_array($current) && isset($current[$field])) {
$current = $current[$field];
} else {
return $default;
$old = $this->get($name, null, $separator);
if ($old !== null) {
if (!is_array($old)) {
throw new \RuntimeException('Value ' . $old);
}
if (is_object($value)) {
$value = (array) $value;
} elseif (!is_array($value)) {
throw new \RuntimeException('Value ' . $value);
}
$value = $this->blueprints()->mergeData($old, $value, $name, $separator);
}
return $current;
$this->set($name, $value, $separator);
return $this;
}
/**
* Sey value by using dot notation for nested arrays/objects.
* Get nested structure containing default values defined in the blueprints.
*
* @example $value = $data->set('this.is.my.nested.variable', true);
* Fields without default value are ignored in the list.
* @return array
*/
public function getDefaults()
{
return $this->blueprints()->getDefaults();
}
/**
* Set default values by using blueprints.
*
* @param string $name Dot separated path to the requested value.
* @param mixed $value New value.
* @param mixed $value Value to be joined.
* @param string $separator Separator, defaults to '.'
* @return $this
*/
public function set($name, $value, $separator = '.')
public function joinDefaults($name, $value, $separator = '.')
{
$path = explode($separator, $name);
$current = &$this->items;
foreach ($path as $field) {
if (is_object($current)) {
// Handle objects.
if (!isset($current->{$field})) {
$current->{$field} = array();
}
$current = &$current->{$field};
} else {
// Handle arrays and scalars.
if (!is_array($current)) {
$current = array($field => array());
} elseif (!isset($current[$field])) {
$current[$field] = array();
}
$current = &$current[$field];
}
if (is_object($value)) {
$value = (array) $value;
}
$old = $this->get($name, null, $separator);
if ($old !== null) {
$value = $this->blueprints()->mergeData($value, $old, $name, $separator);
}
$current = $value;
$this->set($name, $value, $separator);
return $this;
}
/**
* Set default value by using dot notation for nested arrays/objects.
*
* @example $data->def('this.is.my.nested.variable', 'default');
* Get value from the configuration and join it with given data.
*
* @param string $name Dot separated path to the requested value.
* @param mixed $default Default value (or null).
* @param array $value Value to be joined.
* @param string $separator Separator, defaults to '.'
* @return mixed Value.
* @return array
* @throws \RuntimeException
*/
public function def($name, $default = null, $separator = '.')
public function getJoined($name, $value, $separator = '.')
{
$this->set($name, $this->get($name, $default, $separator), $separator);
if (is_object($value)) {
$value = (array) $value;
} elseif (!is_array($value)) {
throw new \RuntimeException('Value ' . $value);
}
$old = $this->get($name, null, $separator);
if ($old === null) {
// No value set; no need to join data.
return $value;
}
if (!is_array($old)) {
throw new \RuntimeException('Value ' . $old);
}
// Return joined data.
return $this->blueprints()->mergeData($old, $value, $name, $separator);
}
/**
* Merge two sets of data together.
* Merge two configurations together.
*
* @param array $data
* @return $this
*/
public function merge(array $data)
{
if ($this->blueprints) {
$this->items = $this->blueprints->mergeData($this->items, $data);
} else {
$this->items = array_merge($this->items, $data);
}
$this->items = $this->blueprints()->mergeData($this->items, $data);
return $this;
}
/**
* Return blueprints.
* Set default values to the configuration if variables were not set.
*
* @return Blueprint
* @param array $data
* @return $this
*/
public function blueprints()
public function setDefaults(array $data)
{
return $this->blueprints;
$this->items = $this->blueprints()->mergeData($data, $this->items);
return $this;
}
/**
* Validate by blueprints.
*
* @return $this
* @throws \Exception
*/
public function validate()
{
if ($this->blueprints) {
$this->blueprints->validate($this->items);
}
$this->blueprints()->validate($this->items);
return $this;
}
/**
* @return $this
* Filter all items by using blueprints.
*/
public function filter()
{
if ($this->blueprints) {
$this->items = $this->blueprints->filter($this->items);
}
$this->items = $this->blueprints()->filter($this->items);
return $this;
}
/**
@@ -181,7 +211,24 @@ class Data extends Getters implements DataInterface
*/
public function extra()
{
return $this->blueprints ? $this->blueprints->extra($this->items) : array();
return $this->blueprints()->extra($this->items);
}
/**
* Return blueprints.
*
* @return Blueprints
*/
public function blueprints()
{
if (!$this->blueprints){
$this->blueprints = new Blueprints;
} elseif (is_callable($this->blueprints)) {
// Lazy load blueprints.
$blueprints = $this->blueprints;
$this->blueprints = $blueprints();
}
return $this->blueprints;
}
/**

View File

@@ -1,8 +1,7 @@
<?php
namespace Grav\Common\Data;
use Grav\Common\Filesystem\FileInterface;
use \Grav\Common\Filesystem\File;
use RocketTheme\Toolbox\File\FileInterface;
/**
* Data interface

View File

@@ -1,6 +1,10 @@
<?php
namespace Grav\Common\Data;
use Grav\Common\GravTrait;
use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Parser;
/**
* Data validation.
*
@@ -9,6 +13,8 @@ namespace Grav\Common\Data;
*/
class Validation
{
use GravTrait;
/**
* Validate value against a blueprint field definition.
*
@@ -25,17 +31,27 @@ class Validation
return;
}
// special case for files, value is never empty and errors with code 4 instead
if (empty($validate['required']) && $field['type'] == 'file' && (isset($value['error']) && ($value['error'] == UPLOAD_ERR_NO_FILE || in_array(UPLOAD_ERR_NO_FILE, $value['error'])))) {
return;
}
// Get language class
$language = self::getGrav()['language'];
// Validate type with fallback type text.
$type = (string) isset($field['validate']['type']) ? $field['validate']['type'] : $field['type'];
$method = 'type'.strtr($type, '-', '_');
$name = ucfirst(isset($field['label']) ? $field['label'] : $field['name']);
$message = (string) isset($field['validate']['message']) ? $language->translate($field['validate']['message']) : $language->translate('FORM.INVALID_INPUT', null, true) . ' "' . $language->translate($name) . '"';
if (method_exists(__CLASS__, $method)) {
$success = self::$method($value, $validate, $field);
} else {
$success = self::typeText($value, $validate, $field);
}
if (!$success) {
$name = $field['label'] ? $field['label'] : $field['name'];
throw new \RuntimeException("invalid input in {$name}");
throw new \RuntimeException($message);
}
// Check individual rules
@@ -43,8 +59,9 @@ class Validation
$method = 'validate'.strtr($rule, '-', '_');
if (method_exists(__CLASS__, $method)) {
$success = self::$method($value, $params);
if (!$success) {
throw new \RuntimeException('Failed');
throw new \RuntimeException($message);
}
}
}
@@ -66,6 +83,21 @@ class Validation
return null;
}
// special case for files, value is never empty and errors with code 4 instead
if (empty($validate['required']) && $field['type'] == 'file' && (isset($value['error']) && ($value['error'] == UPLOAD_ERR_NO_FILE || in_array(UPLOAD_ERR_NO_FILE, $value['error'])))) {
return null;
}
// if this is a YAML field, simply parse it and return the value
if (isset($field['yaml']) && $field['yaml'] === true) {
try {
$yaml = new Parser();
return $yaml->parse($value);
} catch (ParseException $e) {
throw new \RuntimeException($e->getMessage());
}
}
// Validate type with fallback type text.
$type = (string) isset($field['validate']['type']) ? $field['validate']['type'] : $field['type'];
$method = 'filter'.strtr($type, '-', '_');
@@ -114,12 +146,6 @@ class Validation
protected static function filterText($value, array $params, array $field)
{
if (!is_string($value)) {
var_dump($value);
var_dump($params);
var_dump($field);
die();
}
return (string) $value;
}
@@ -242,6 +268,32 @@ class Validation
return self::typeArray((array) $value, $params, $field);
}
/**
* Custom input: file
*
* @param mixed $value Value to be validated.
* @param array $params Validation parameters.
* @param array $field Blueprint for the field.
* @return bool True if validation succeeded.
*/
public static function typeFile($value, array $params, array $field)
{
return self::typeArray((array) $value, $params, $field);
}
protected static function filterFile($value, array $params, array $field)
{
if ($field['multiple'] == true) {
return (array) $value;
}
if (is_array($value)) {
return reset($value);
}
return $value;
}
/**
* HTML5 input: select
*
@@ -291,6 +343,17 @@ class Validation
return (int) $value;
}
protected static function filterDateTime($value, array $params, array $field)
{
$format = self::getGrav()['config']->get('system.pages.dateformat.default');
if ($format) {
$converted = new \DateTime($value);
return $converted->format($format);
}
return $value;
}
/**
* HTML5 input: range
*
@@ -359,7 +422,6 @@ class Validation
*/
public static function typeDatetime($value, array $params, array $field)
{
// TODO: add min, max and range.
if ($value instanceof \DateTime) {
return true;
} elseif (!is_string($value)) {
@@ -381,7 +443,7 @@ class Validation
* @param array $field Blueprint for the field.
* @return bool True if validation succeeded.
*/
public static function typeDatetime_local($value, array $params, array $field)
public static function typeDatetimeLocal($value, array $params, array $field)
{
return self::typeDatetime($value, $params, $field);
}
@@ -495,6 +557,7 @@ class Validation
{
$values = (array) $value;
$options = isset($field['options']) ? array_keys($field['options']) : array();
$multi = isset($field['multiple']) ? $field['multiple'] : false;
if ($options) {
$useKey = isset($field['use']) && $field['use'] == 'keys';
@@ -503,9 +566,43 @@ class Validation
}
}
if ($multi) {
foreach ($values as $key => $value) {
if (is_array($value)) {
$value = implode(',', $value);
}
$values[$key] = array_map('trim', explode(',', $value));
}
}
return $values;
}
public static function typeList($value, array $params, array $field)
{
if (!is_array($value)) {
return false;
}
if (isset($field['fields'])) {
foreach ($value as $key => $item) {
foreach ($field['fields'] as $subKey => $subField) {
$subKey = trim($subKey, '.');
$subValue = isset($item[$subKey]) ? $item[$subKey] : null;
self::validate($subValue, $subField);
}
}
}
return true;
}
protected static function filterList($value, array $params, array $field)
{
return (array) $value;
}
/**
* Custom input: ignore (will not validate)
*
@@ -519,11 +616,20 @@ class Validation
return true;
}
public static function filterIgnore($value, array $params, array $field)
{
return $value;
}
// HTML5 attributes (min, max and range are handled inside the types)
public static function validateRequired($value, $params)
{
return (bool) $params != true || !empty($value);
if (is_string($value)) {
$value = trim($value);
}
return (bool) $params !== true || !empty($value);
}
public static function validatePattern($value, $params)

View File

@@ -1,7 +1,8 @@
<?php
namespace Grav\Common;
use \Tracy\Debugger as TracyDebugger;
use DebugBar\JavascriptRenderer;
use DebugBar\StandardDebugBar;
/**
* Class Debugger
@@ -9,65 +10,116 @@ use \Tracy\Debugger as TracyDebugger;
*/
class Debugger
{
const PRODUCTION = TracyDebugger::PRODUCTION;
const DEVELOPMENT = TracyDebugger::DEVELOPMENT;
const DETECT = TracyDebugger::DETECT;
protected $grav;
protected $debugbar;
protected $renderer;
protected $enabled;
public function __construct($mode = self::PRODUCTION)
protected $timers = [];
public function __construct()
{
// Start the timer and enable debugger in production mode as we do not have system configuration yet.
// Debugger catches all errors and logs them, for example if the script doesn't have write permissions.
TracyDebugger::timer();
TracyDebugger::enable($mode, is_dir(LOG_DIR) ? LOG_DIR : null);
$this->debugbar = new StandardDebugBar();
$this->debugbar['time']->addMeasure('Loading', $this->debugbar['time']->getRequestStartTime(), microtime(true));
}
public function init()
{
$grav = Grav::instance();
$this->grav = Grav::instance();
/** @var Config $config */
$config = $grav['config'];
$mode = $config->get('system.debugger.mode');
TracyDebugger::$logDirectory = $config->get('system.debugger.log.enabled') ? LOG_DIR : null;
TracyDebugger::$maxDepth = $config->get('system.debugger.max_depth');
// Switch debugger into development mode if configured
if ($config->get('system.debugger.enabled')) {
if ($config->get('system.debugger.strict')) {
TracyDebugger::$strictMode = true;
}
if (function_exists('ini_set')) {
ini_set('display_errors', true);
}
if ($mode == strtolower('detect')) {
TracyDebugger::$productionMode = self::DETECT;
} elseif ($mode == strtolower('production')) {
TracyDebugger::$productionMode = self::PRODUCTION;
} else {
TracyDebugger::$productionMode = self::DEVELOPMENT;
}
if ($this->enabled()) {
$this->debugbar->addCollector(new \DebugBar\DataCollector\ConfigCollector((array)$this->grav['config']->get('system')));
}
return $this;
}
/**
* Log a message.
*
* @param string $message
*/
public function log($message)
public function enabled($state = null)
{
if (TracyDebugger::$logDirectory) {
TracyDebugger::log(sprintf($message, TracyDebugger::timer() * 1000));
if (isset($state)) {
$this->enabled = $state;
} else {
if (!isset($this->enabled)) {
$this->enabled = $this->grav['config']->get('system.debugger.enabled');
}
}
return $this->enabled;
}
public static function dump($var)
public function addAssets()
{
TracyDebugger::dump($var);
if ($this->enabled()) {
$assets = $this->grav['assets'];
// Add jquery library
$assets->add('jquery', 101);
$this->renderer = $this->debugbar->getJavascriptRenderer();
$this->renderer->setIncludeVendors(false);
// Get the required CSS files
list($css_files, $js_files) = $this->renderer->getAssets(null, JavascriptRenderer::RELATIVE_URL);
foreach ($css_files as $css) {
$assets->addCss($css);
}
$assets->addCss('/system/assets/debugger.css');
foreach ($js_files as $js) {
$assets->addJs($js);
}
}
return $this;
}
public function addCollector($collector)
{
$this->debugbar->addCollector($collector);
return $this;
}
public function getCollector($collector)
{
return $this->debugbar->getCollector($collector);
}
public function render()
{
if ($this->enabled()) {
echo $this->renderer->render();
}
return $this;
}
public function sendDataInHeaders()
{
$this->debugbar->sendDataInHeaders();
return $this;
}
public function startTimer($name, $description = null)
{
if ($name[0] == '_' || $this->grav['config']->get('system.debugger.enabled')) {
$this->debugbar['time']->startMeasure($name, $description);
$this->timers[] = $name;
}
return $this;
}
public function stopTimer($name)
{
if (in_array($name, $this->timers) && ($name[0] == '_' || $this->grav['config']->get('system.debugger.enabled'))) {
$this->debugbar['time']->stopMeasure($name);
}
return $this;
}
public function addMessage($message, $label = 'info', $isString = true)
{
if ($this->enabled()) {
$this->debugbar['messages']->addMessage($message, $label, $isString);
}
return $this;
}
}

View File

@@ -0,0 +1,52 @@
<?php
namespace Grav\Common\Errors;
use Grav\Common\Grav;
use Whoops\Handler\CallbackHandler;
use Whoops\Handler\HandlerInterface;
use Whoops\Run;
/**
* Class Debugger
* @package Grav\Common
*/
class Errors extends Run
{
public function pushHandler($handler, $key = null)
{
if (is_callable($handler)) {
$handler = new CallbackHandler($handler);
}
if (!$handler instanceof HandlerInterface) {
throw new \InvalidArgumentException(
"Argument to " . __METHOD__ . " must be a callable, or instance of"
. "Whoops\\Handler\\HandlerInterface"
);
}
// Store with key if provided
if ($key) {
$this->handlerStack[$key] = $handler;
} else {
$this->handlerStack[] = $handler;
}
return $this;
}
public function resetHandlers()
{
$grav = Grav::instance();
$config = $grav['config']->get('system.errors');
if (isset($config['display']) && !$config['display']) {
unset($this->handlerStack['pretty']);
$this->handlerStack = array('simple' => new SimplePageHandler()) + $this->handlerStack;
}
if (isset($config['log']) && !$config['log']) {
unset($this->handlerStack['log']);
}
}
}

View File

@@ -0,0 +1,52 @@
html, body {
height: 100%
}
body {
margin:0 3rem;
padding:0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 1.5rem;
line-height: 1.4;
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex;
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center;
}
.container {
margin: 0rem;
max-width: 600px;
padding-bottom:5rem;
}
header {
color: #000;
font-size: 4rem;
letter-spacing: 2px;
line-height: 1.1;
margin-bottom: 2rem;
}
p {
font-family: Optima, Segoe, "Segoe UI", Candara, Calibri, Arial, sans-serif;
color: #666;
}
h5 {
font-weight: normal;
color: #999;
font-size: 1rem;
}
h6 {
font-weight: normal;
color: #999;
}
code {
font-weight: bold;
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}

View File

@@ -0,0 +1,30 @@
<?php
/**
* Layout template file for Whoops's pretty error output.
*/
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Whoops there was an error!</title>
<style><?php echo $stylesheet ?></style>
</head>
<body>
<div class="container">
<div class="details">
<header>
Server Error
</header>
<p>Sorry, something went terribly wrong!</p>
<h3><?php echo $code ?> - <?php echo $message ?></h3>
<h5>For further details please review your <code>logs/</code> folder, or enable displaying of errors in your system configuration.</h5>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,96 @@
<?php
namespace Grav\Common\Errors;
use Whoops\Handler\Handler;
use Whoops\Util\Misc;
use Whoops\Util\TemplateHelper;
class SimplePageHandler extends Handler
{
private $searchPaths = array();
private $resourceCache = array();
public function __construct()
{
// Add the default, local resource search path:
$this->searchPaths[] = __DIR__ . "/Resources";
}
/**
* @return int|null
*/
public function handle()
{
$inspector = $this->getInspector();
$helper = new TemplateHelper();
$templateFile = $this->getResource("layout.html.php");
$cssFile = $this->getResource("error.css");
$code = $inspector->getException()->getCode();
$message = $inspector->getException()->getMessage();
if ($inspector->getException() instanceof \ErrorException) {
$code = Misc::translateErrorCode($code);
}
$vars = array(
"stylesheet" => file_get_contents($cssFile),
"code" => $code,
"message" => $message,
);
$helper->setVariables($vars);
$helper->render($templateFile);
return Handler::QUIT;
}
/**
* @param $resource
*
* @return string
*/
protected function getResource($resource)
{
// If the resource was found before, we can speed things up
// by caching its absolute, resolved path:
if (isset($this->resourceCache[$resource])) {
return $this->resourceCache[$resource];
}
// Search through available search paths, until we find the
// resource we're after:
foreach ($this->searchPaths as $path) {
$fullPath = $path . "/$resource";
if (is_file($fullPath)) {
// Cache the result:
$this->resourceCache[$resource] = $fullPath;
return $fullPath;
}
}
// If we got this far, nothing was found.
throw new \RuntimeException(
"Could not find resource '$resource' in any resource paths."
. "(searched: " . join(", ", $this->searchPaths). ")"
);
}
public function addResourcePath($path)
{
if (!is_dir($path)) {
throw new \InvalidArgumentException(
"'$path' is not a valid directory"
);
}
array_unshift($this->searchPaths, $path);
}
public function getResourcePaths()
{
return $this->searchPaths;
}
}

View File

@@ -0,0 +1,78 @@
<?php
namespace Grav\Common\File;
use RocketTheme\Toolbox\File\PhpFile;
/**
* Class CompiledFile
* @package Grav\Common\File
*
* @property string $filename
* @property string $extension
* @property string $raw
* @property array|string $content
*/
trait CompiledFile
{
/**
* Get/set parsed file contents.
*
* @param mixed $var
* @return string
*/
public function content($var = null)
{
// Set some options
$this->settings(['native' => true, 'compat' => true]);
// If nothing has been loaded, attempt to get pre-compiled version of the file first.
if ($var === null && $this->raw === null && $this->content === null) {
$key = md5($this->filename);
$file = PhpFile::instance(CACHE_DIR . "compiled/files/{$key}{$this->extension}.php");
$modified = $this->modified();
if (!$modified) {
return $this->decode($this->raw());
}
$class = get_class($this);
$cache = $file->exists() ? $file->content() : null;
// Load real file if cache isn't up to date (or is invalid).
if (
!isset($cache['@class'])
|| $cache['@class'] != $class
|| $cache['modified'] != $modified
|| $cache['filename'] != $this->filename
) {
// Attempt to lock the file for writing.
try {
$file->lock(false);
} catch (\Exception $e) {
// Another process has locked the file; we will check this in a bit.
}
// Decode RAW file into compiled array.
$data = (array) $this->decode($this->raw());
$cache = [
'@class' => $class,
'filename' => $this->filename,
'modified' => $modified,
'data' => $data
];
// If compiled file wasn't already locked by another process, save it.
if ($file->locked() !== false) {
$file->save($cache);
$file->unlock();
}
}
$file->free();
$this->content = $cache['data'];
}
return parent::content($var);
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Grav\Common\File;
use RocketTheme\Toolbox\File\MarkdownFile;
class CompiledMarkdownFile extends MarkdownFile
{
use CompiledFile;
}

View File

@@ -0,0 +1,9 @@
<?php
namespace Grav\Common\File;
use RocketTheme\Toolbox\File\YamlFile;
class CompiledYamlFile extends YamlFile
{
use CompiledFile;
}

View File

@@ -1,129 +0,0 @@
<?php
namespace Grav\Common\Filesystem\File;
/**
* File handling class.
*
* @author RocketTheme
* @license MIT
*/
class Config extends General
{
/**
* @var string
*/
protected $extension = '.php';
/**
* @var array|General[]
*/
static protected $instances = array();
/**
* Saves configuration file and invalidates opcache.
*
* @param mixed $data Optional data to be saved, usually array.
* @throws \RuntimeException
*/
public function save($data = null)
{
parent::save($data);
// Invalidate configuration file from the opcache.
if (function_exists('opcache_invalidate')) {
// PHP 5.5.5+
@opcache_invalidate($this->filename);
} elseif (function_exists('apc_invalidate')) {
// APC
@apc_invalidate($this->filename);
}
}
/**
* Check contents and make sure it is in correct format.
*
* @param \Grav\Common\Config $var
* @return \Grav\Common\Config
* @throws \RuntimeException
*/
protected function check($var)
{
if (!($var instanceof \Grav\Common\Config)) {
throw new \RuntimeException('Provided data is not configuration');
}
return $var;
}
/**
* Encode configuration object into RAW string (PHP class).
*
* @param \Grav\Common\Config $var
* @return string
* @throws \RuntimeException
*/
protected function encode($var)
{
if (!($var instanceof \Grav\Common\Config)) {
throw new \RuntimeException('Provided data is not configuration');
}
// Build the object variables string
$vars = array();
$options = $var->toArray();
foreach ($options as $k => $v) {
if (is_int($v)) {
$vars[] = "\tpublic $" . $k . " = " . $v . ";";
} elseif (is_bool($v)) {
$vars[] = "\tpublic $" . $k . " = " . ($v ? 'true' : 'false') . ";";
} elseif (is_scalar($v)) {
$vars[] = "\tpublic $" . $k . " = '" . addcslashes($v, '\\\'') . "';";
} elseif (is_array($v) || is_object($v)) {
$vars[] = "\tpublic $" . $k . " = " . $this->encodeArray((array) $v) . ";";
}
}
$vars = implode("\n", $vars);
return "<?php\nnamespace Grav;\n\nclass Config extends \\Grav\\Common\\Config {\n {$vars}\n}";
}
/**
* Method to get an array as an exported string.
*
* @param array $a The array to get as a string.
* @param int $level Used internally to indent rows.
*
* @return array
*/
protected function encodeArray($a, $level = 1)
{
$r = array();
foreach ($a as $k => $v) {
if (is_array($v) || is_object($v)) {
$r[] = '"' . $k . '" => ' . $this->encodeArray((array) $v, $level+1);
} elseif (is_int($v)) {
$r[] = "'" . $k . "' => " . $v;
} elseif (is_bool($v)) {
$r[] = "'" . $k . "' => " . ($v ? 'true' : 'false');
} else {
$r[] .= "'" . $k . "' => " . "'" . addslashes($v) . "'";
}
}
$tabs = str_repeat("\t", $level);
return "array(\n\t{$tabs}" . implode(",\n\t{$tabs}", $r) . "\n{$tabs})";
}
/**
* Decode RAW string into contents.
*
* @param string $var
* @return \Grav\Common\Config
*/
protected function decode($var)
{
// TODO: improve this one later, works only for single file...
return class_exists('\Grav\Config') ? new \Grav\Config($this->filename) : new Config($this->filename);
}
}

View File

@@ -1,352 +0,0 @@
<?php
namespace Grav\Common\Filesystem\File;
use Grav\Common\Filesystem\FileInterface;
/**
* General file handling class.
*
* @author RocketTheme
* @license MIT
*/
class General implements FileInterface
{
/**
* @var string
*/
protected $filename;
/**
* @var resource
*/
protected $handle;
/**
* @var bool|null
*/
protected $locked;
/**
* @var string
*/
protected $extension;
/**
* @var string Raw file contents.
*/
protected $raw;
/**
* @var array Parsed file contents.
*/
protected $content;
/**
* @var array|General[]
*/
static protected $instances = array();
/**
* Get file instance.
*
* @param string $filename
* @return FileInterface
*/
public static function instance($filename)
{
if (!isset(static::$instances[$filename])) {
static::$instances[$filename] = new static;
static::$instances[$filename]->init($filename);
}
return static::$instances[$filename];
}
/**
* Prevent constructor from being used.
*
* @internal
*/
protected function __construct()
{
}
/**
* Prevent cloning.
*
* @internal
*/
protected function __clone()
{
//Me not like clones! Me smash clones!
}
/**
* Set filename.
*
* @param $filename
*/
protected function init($filename)
{
$this->filename = $filename;
}
/**
* Get/set the file location.
*
* @param string $var
* @return string
*/
public function filename($var = null)
{
if ($var !== null) {
$this->filename = $var;
}
return $this->filename;
}
/**
* Return basename of the file.
*
* @return string
*/
public function basename()
{
return basename($this->filename, $this->extension);
}
/**
* Check if file exits.
*
* @return bool
*/
public function exists()
{
return is_file($this->filename);
}
/**
* Return file modification time.
*
* @return int|bool Timestamp or false if file doesn't exist.
*/
public function modified()
{
return is_file($this->filename) ? filemtime($this->filename) : false;
}
/**
* Lock file for writing. You need to manually unlock().
*
* @param bool $block For non-blocking lock, set the parameter to false.
* @return bool
*/
public function lock($block = true)
{
if (!$this->handle) {
if (!$this->mkdir(dirname($this->filename))) {
throw new \RuntimeException('Creating directory failed for ' . $this->filename);
}
$this->handle = fopen($this->filename, 'wb+');
}
$lock = $block ? LOCK_EX : LOCK_EX | LOCK_NB;
return $this->locked = $this->handle ? flock($this->handle, $lock) : false;
}
/**
* Returns true if file has been locked for writing.
*
* @return bool|null True = locked, false = failed, null = not locked.
*/
public function locked()
{
return $this->locked;
}
/**
* Unlock file.
*
* @return bool
*/
public function unlock()
{
if (!$this->handle) {
return;
}
if ($this->locked) {
flock($this->handle, LOCK_UN);
$this->locked = null;
}
fclose($this->handle);
}
/**
* Check if file can be written.
*
* @return bool
*/
public function writable()
{
return is_writable($this->filename) || $this->writableDir(dirname($this->filename));
}
/**
* (Re)Load a file and return RAW file contents.
*
* @return string
*/
public function load()
{
$this->raw = $this->exists() ? (string) file_get_contents($this->filename) : '';
$this->content = null;
return $this->raw;
}
/**
* Get/set raw file contents.
*
* @param string $var
* @return string
*/
public function raw($var = null)
{
if ($var !== null) {
$this->raw = (string) $var;
$this->content = null;
}
if (!is_string($this->raw)) {
$this->raw = $this->load();
}
return $this->raw;
}
/**
* Get/set parsed file contents.
*
* @param mixed $var
* @return string
*/
public function content($var = null)
{
if ($var !== null) {
$this->content = $this->check($var);
// Update RAW, too.
$this->raw = $this->encode($this->content);
} elseif ($this->content === null) {
// Decode RAW file.
$this->content = $this->decode($this->raw());
}
return $this->content;
}
/**
* Save file.
*
* @param mixed $data Optional data to be saved, usually array.
* @throws \RuntimeException
*/
public function save($data = null)
{
if ($data !== null) {
$this->content($data);
}
if (!$this->locked) {
// Obtain blocking lock or fail.
if (!$this->lock()) {
throw new \RuntimeException('Obtaining write lock failed on file: ' . $this->filename);
}
$lock = true;
}
if (@fwrite($this->handle, $this->raw()) === false) {
$this->unlock();
throw new \RuntimeException('Saving file failed: ' . $this->filename);
}
if (isset($lock)) {
$this->unlock();
}
// Touch the directory as well, thus marking it modified.
@touch(dirname($this->filename));
}
/**
* Delete file from filesystem.
*
* @return bool
*/
public function delete()
{
return unlink($this->filename);
}
/**
* Check contents and make sure it is in correct format.
*
* Override in derived class.
*
* @param string $var
* @return string
*/
protected function check($var)
{
return (string) $var;
}
/**
* Encode contents into RAW string.
*
* Override in derived class.
*
* @param string $var
* @return string
*/
protected function encode($var)
{
return (string) $var;
}
/**
* Decode RAW string into contents.
*
* Override in derived class.
*
* @param string $var
* @return string mixed
*/
protected function decode($var)
{
return (string) $var;
}
/**
* @param string $dir
* @return bool
* @internal
*/
protected function mkdir($dir)
{
return is_dir($dir) || mkdir($dir, 0777, true);
}
/**
* @param string $dir
* @return bool
* @internal
*/
protected function writableDir($dir)
{
if ($dir && !file_exists($dir)) {
return $this->writableDir(dirname($dir));
}
return $dir && is_dir($dir) && is_writable($dir);
}
}

View File

@@ -1,54 +0,0 @@
<?php
namespace Grav\Common\Filesystem\File;
/**
* File handling class for JSON.
*
* @author RocketTheme
* @license MIT
*/
class Json extends General
{
/**
* @var string
*/
protected $extension = '.json';
/**
* @var array|General[]
*/
static protected $instances = array();
/**
* Check contents and make sure it is in correct format.
*
* @param array $var
* @return array
*/
protected function check($var)
{
return (array) $var;
}
/**
* Encode contents into RAW string.
*
* @param string $var
* @return string
*/
protected function encode($var)
{
return (string) json_encode($var);
}
/**
* Decode RAW string into contents.
*
* @param string $var
* @return array mixed
*/
protected function decode($var)
{
return (array) json_decode($var);
}
}

View File

@@ -1,69 +0,0 @@
<?php
namespace Grav\Common\Filesystem\File;
/**
* File handling class for Log files.
*
* @author RocketTheme
* @license MIT
*/
class Log extends General
{
/**
* @var array|General[]
*/
static protected $instances = array();
/**
* Constructor.
*/
protected function __construct()
{
parent::__construct();
$this->extension = '.log';
}
/**
* Check contents and make sure it is in correct format.
*
* @param array $var
* @return array
*/
protected function check($var)
{
return (array) $var;
}
/**
* Encode contents into RAW string (unsupported).
*
* @param string $var
* @throws \Exception
*/
protected function encode($var)
{
throw new \Exception('Saving log file is forbidden.');
}
/**
* Decode RAW string into contents.
*
* @param string $var
* @return array mixed
*/
protected function decode($var)
{
$lines = (array) preg_split('#(\r\n|\n|\r)#', $var);
$results = array();
foreach ($lines as $line) {
preg_match('#^\[(.*)\] (.*) @ (.*) @@ (.*)$#', $line, $matches);
if ($matches) {
$results[] = ['date' => $matches[1], 'message' => $matches[2], 'url' => $matches[3], 'file' => $matches[4]];
}
}
return $results;
}
}

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