Commit graph

202 commits

Author SHA1 Message Date
Daniel Rudolf 2a3e2fa576 Fix typos in class docs/exception messages 2016-03-02 22:10:49 +01:00
Daniel Rudolf 1709b920d1 Add AbstractPicoPlugin::getPluginConfig() method 2016-03-02 21:46:35 +01:00
Daniel Rudolf a8f0fd1f33 Merge branch 'master' into pico-1.1 2016-02-29 21:00:14 +01:00
Daniel Rudolf a2aa46fd0e Don't let dependant plugins automatically enable plugins which should be disabled by default
Follow-up to f10440b and c0a7fdc
2016-02-29 20:58:42 +01:00
Daniel Rudolf c0a7fdc801 Don't always check dependants of a disabled plugin
This isn't necessary because dependant plugins will check their dependencies on their own. Follow-up to f10440b
2016-02-29 20:41:41 +01:00
Daniel Rudolf 5a9c02f7bf Allow plugins to trigger events
You MUST NOT trigger events of Pico's core through a plugin!
2016-02-29 19:51:06 +01:00
Daniel Rudolf 56b2ed6c7d Allow manual plugin loading 2016-02-29 19:50:35 +01:00
Daniel Rudolf 4f487b7ccf AbstractPicoPlugin: Fix typos in exception message 2016-02-29 19:47:02 +01:00
Daniel Rudolf f10440b996 Check dependencies when a plugin is enabled by default 2016-02-29 19:44:25 +01:00
Daniel Rudolf d8be108c5b Suppress PHP warning when using date_default_timezone_get()
Thanks to @nem25 for reporting this
2016-02-04 14:19:14 +01:00
Daniel Rudolf 1c2f6a1b23 Update class docs 2016-01-25 19:31:53 +01:00
Daniel Rudolf 73078a3dc3 Fix code formatting + class docs 2016-01-07 03:00:32 +01:00
Daniel Rudolf c760205d70 Pico::triggerEvent(): Fix method docs typo 2015-12-28 22:41:39 +01:00
Daniel Rudolf 070da6d73f Improve "404.md not found" exception message 2015-12-23 16:18:16 +01:00
Daniel Rudolf 5be2f8e597 Fix path handling on Windows
Fixes #307; thank you @bpgs for reporting!
2015-12-23 16:17:06 +01:00
Daniel Rudolf 9e4af2cba4 Merge pull request #294 from picocms/enhancement/YamlParseError2
Catch YAML parse errors (2)
2015-12-21 04:13:07 +01:00
Daniel Rudolf 43f953b67a Pico::readPages(): Call Pico::parseFileMeta() again when a exception is thrown 2015-12-21 04:08:35 +01:00
Daniel Rudolf 3798cbe478 Remove page title fallback 2015-12-21 04:05:25 +01:00
Daniel Rudolf 329049bd18 Fix empty meta header 2015-12-21 03:42:59 +01:00
Daniel Rudolf dc6ac516a8 Fix Pico::getPageUrl() 2015-12-13 22:27:27 +01:00
Daniel Rudolf a138d23daf Throw LogicException instead of RuntimeException in Pico::setConfig() 2015-12-13 22:19:02 +01:00
Daniel Rudolf 0c85d70820 Adding $queryData parameter to Pico::getPageUrl() method
This allows developers to easily add custom query data to an page URL without the need to check enabled URL rewriting on their own. Since Twigs `link` filter is just an alias for Pico::getPageUrl(), theme designers can do the same with e.g. `{{ "index"|link("foo=bar&baz=42") }}`.

Theme designers, heads up! Don't forget that the result of the `link` filter is never escaped, so the result could contain unescaped ampersands when passing custom query data. You should pass the result to Twigs `escape` filter when using custom query data.
2015-12-13 22:14:05 +01:00
Daniel Rudolf 93f7aaad8b Class docs: Use default markdown table format 2015-12-07 15:17:39 +01:00
Daniel Rudolf be46e19677 Merge branch 'master' into feature/PicoTwigExtension
Conflicts:
	CHANGELOG.md
2015-11-29 22:19:57 +01:00
Daniel Rudolf 2ce422d907 PicoTwigExtension: Refactor error handling 2015-11-29 22:18:41 +01:00
Daniel Rudolf 9aaab5de1a Refactor Pico::parseFileMeta() 2015-11-29 21:58:30 +01:00
Daniel Rudolf 5ea94d06e6 Catch YAML parse errors 2015-11-29 20:58:41 +01:00
Daniel Rudolf 2d9b5aa1a2 Fix operators 2015-11-29 16:39:03 +01:00
Daniel Rudolf 698a249d45 Force Pico::$requestUrl to have no leading/trailing slash
Fixes #291
2015-11-27 22:52:45 +01:00
Daniel Rudolf 2761f8b751 Refactor Pico::isUrlRewritingEnabled() 2015-11-27 20:13:17 +01:00
Daniel Rudolf 86d1f713f2 Move PHP version check to index.php 2015-11-27 19:45:21 +01:00
Daniel Rudolf 81138ce06a Merge branch 'master' of github.com:picocms/Pico 2015-11-27 19:43:47 +01:00
Daniel Rudolf 81821e7811 Improve Pico::getBaseUrl() code styling 2015-11-27 19:28:48 +01:00
theshka 1fae7ab3df * [New] added PHP_VERSION check to Pico::run() 2015-11-27 12:27:45 -06:00
Daniel Rudolf 840d41bca5 Improve type hinting 2015-11-25 04:07:46 +01:00
Daniel Rudolf c34afad4af Fix typo 2015-11-22 14:08:35 +01:00
Daniel Rudolf d252df4b98 Throw RuntimeException on invalid content dirs 2015-11-19 04:48:22 +01:00
Daniel Rudolf f5006c036a Prevent double slashes in base_url when installed to document root
Fixes #274
2015-11-13 22:29:58 +01:00
Daniel Rudolf c72ea0ecec PicoDeprecated: Sanitize content_dir and base_url options when reading config.php in Picos root dir 2015-11-13 19:10:30 +01:00
Daniel Rudolf 10de8efa11 Move markdown filter to PicoTwigExtension 2015-11-13 16:49:53 +01:00
Daniel Rudolf f19adc64b9 Add PicoTwigExtension with map and sort_by filters 2015-11-13 16:48:01 +01:00
Daniel Rudolf 78ceabe878 Various improvements
- Reuse ParsedownExtra object
- Add new markdown Twig filter
- Improve class docs in general
- Document plugin number prefix usage
2015-11-12 15:34:56 +01:00
Daniel Rudolf f9e9642c22 Fix Pico::getPageUrl()
With enabled URL rewriting we must call rawurlencode() on the file path parts rather the whole path
2015-11-08 14:01:35 +01:00
Daniel Rudolf 2ca711ad59 Add missing rawurlencode() to Pico::getPageUrl()
Replace urldecode() in Pico::evaluateRequestUrl() with rawurldecode()
See #272 for details, thanks @smcdougall for spotting!
2015-11-08 03:12:18 +01:00
Daniel Rudolf cd7cd374bb Add content filter to get the parsed contents of a page (lazy loading) 2015-11-06 01:08:31 +01:00
Daniel Rudolf af8de56512 Fix typos 2015-11-04 19:50:44 +01:00
Daniel Rudolf ccac8dd4d3 Force trailing slash of $config['base_url'] and force existance of $config['timezone'] 2015-11-04 19:43:54 +01:00
Daniel Rudolf 90128f4946 Fix possible foreach on null errors 2015-11-03 23:49:34 +01:00
Daniel Rudolf ebe007bd78 Guess content directory
As pointed out by @Lomanic (see https://github.com/picocms/Pico/pull/260#issuecomment-153091890; thank you btw\!) we actually have to explain users how to change the content directory. This runs contrary to our "stupidly simple" claim. So Pico now simply uses the `content` directory when it exists...
2015-11-02 19:48:58 +01:00
Daniel Rudolf 9a702415fb Remove return $config in config/config.php
I always thought that doing this is pretty unusual... But now it simply breaks BC - please refer to @Lomanic's [comment](https://github.com/picocms/Pico/pull/260#issuecomment-152610857). Using a return statement has no advantages, but increases the probability that something goes wrong (e.g. a clueless user removes the return statement). It was introduced with 23b90e2, but we never released it ([v0.9.1](4cb2b24fae/lib/pico.php (L188-L189))). Removing the return statement shouldn't cause any problems even for users which installed Pico in the meantime. As a result we don't break BC and moreover remove a prior BC break 😃
2015-10-31 00:32:08 +01:00
Daniel Rudolf afb55b9cb6 Improve class docs 2015-10-29 18:13:35 +01:00
Daniel Rudolf e6681ea903 Improve class docs
Also add some ToDos to inline docs
2015-10-29 18:07:45 +01:00
Daniel Rudolf 54ce5b9699 Various small improvements
- Improve class docs for phpDocumentor
- Add missing onPagesLoading() event to DummyPlugin
- Add some TODOs to the UPGRADE section of the docs
2015-10-29 02:55:30 +01:00
Daniel Rudolf 647a7b5bb7 Trap empty $requestFileParts 2015-10-28 01:41:26 +01:00
Daniel Rudolf 9e2604af85 Prevent content_dir breakouts using malicious request URLs
It's appalling that nobody (including me!) thought about that!
2015-10-28 01:36:28 +01:00
Daniel Rudolf de6b3a7c28 Fix Markdown %meta.*% replacement
Don't even try to use arrays here...
2015-10-28 01:08:45 +01:00
Daniel Rudolf a654b1585b phpDocumentor 2.8.5 currently doesn't support the Generic notations
This will likely be implemented as soon as the proposed PSR-5: PHPDoc is accepted
2015-10-27 01:48:58 +01:00
Daniel Rudolf 92af554d14 Improve inline code comments; preparing use of phpDocumentor 2015-10-27 01:39:28 +01:00
theshka 01122f2901 fix spelling 2015-10-09 20:41:00 +02:00
theshka fe83d1fa7f fix spelling 2015-10-09 20:41:00 +02:00
Daniel Rudolf b09433a37b Allow multiple calls to Pico::setConfig() 2015-10-06 20:38:34 +02:00
Daniel Rudolf 1419cf1636 Add Pico::setConfig() method
Thanks @dav-m85
2015-10-06 20:23:28 +02:00
Daniel Rudolf 7537159868 Remove the need to register headers during onMetaHeaders()
Why? I'm currently writing the user docs and I really have no idea how to explain this whole process in a non-technical way... It is very likely that a normal user wants to use custom tags and it would be absurd to tell him,that he should learn a programming language to do so. On the other hand, providing a copy-and-paste template makes the whole idea of explicitly registering headers worthless. The only reasonable solution is to remove the need to register headers.

Anyway, I think @PontusHorn is right to say that registering headers makes the whole system more predictable. So plugin developers are still instructed to register their meta headers during . We actually can't check and ensure this, but that's imho the best solution.
2015-10-05 01:50:55 +02:00
Daniel Rudolf 46ef63186a Support $config['<plugin name>']['enabled'] option
... as a alternative to $config['<plugin name>.enabled']; Thanks @theshka for giving this hint
2015-10-04 22:52:08 +02:00
Daniel Rudolf 9d518fd722 Move sorting of $pages from Pico::getPages() to Pico::sortPages() 2015-10-04 22:39:38 +02:00
Daniel Rudolf 4f1e8667c3 Cast AbstractPicoPlugin::$dependsOn to array
Plugin devs could come up with the idea of setting AbstractPicoPlugin::$dependsOn to a string (single dependency) or null (no dependencies)
2015-10-04 22:30:35 +02:00
Daniel Rudolf 27d694697f Fix code formatting 2015-10-04 21:34:37 +02:00
Daniel Rudolf 9aa62b4b44 Improve method docs of Pico::load404Content() 2015-10-04 16:57:57 +02:00
Daniel Rudolf 77f939028c Support per-directory 404.md files 2015-10-04 15:24:38 +02:00
Daniel Rudolf 3a4721a20c SCANDIR_SORT_* constants are available since PHP 5.4
Thanks @Lomanic
2015-10-04 14:15:11 +02:00
Daniel Rudolf 241a52907e Update inline code comments 2015-10-01 22:52:10 +02:00
Daniel Rudolf fd64e4fa5e Add a exception to alpha sorting: List index files first
This guarantees that e.g. sub/index.md is listed before sub/foo.md
2015-10-01 21:54:30 +02:00
Daniel Rudolf 45815e2c6d Don't read file contents of inaccessible pages 2015-10-01 17:22:14 +02:00
Daniel Rudolf 95db5ba1a1 Drop inaccessible pages
e.g. drop sub.md if sub/index.md exists
2015-10-01 15:59:47 +02:00
Daniel Rudolf cdef7a6324 Explicitly treat relative paths to be relative to Picos root dir
This tempers the BC break, we can now recommend to simply remove the ROOT_DIR part
2015-10-01 15:14:45 +02:00
Daniel Rudolf fc7632b0ac Overhaul init of Pico
This may break BC if you're using one of the now deprecated constants (e.g. ROOT_DIR)
2015-10-01 15:05:50 +02:00
Daniel Rudolf 5e77d862bf Remove twig cache dir 2015-09-29 00:42:04 +02:00
Daniel Rudolf 5533b07531 Re-add lost PicoPluginInterface 2015-09-15 13:20:52 +02:00
Daniel Rudolf 70f187fb45 Rename IPicoPlugin to PicoPluginInterface 2015-09-15 13:15:45 +02:00
Daniel Rudolf 5731ede297 Allow omitting config/config.php; Fix write context on return value
Thanks @Lomanic for reporting
2015-09-14 23:01:08 +02:00
Daniel Rudolf 71e7da28cc Various fixes
Thanks @PontusHorn for spotting!
2015-09-13 20:46:09 +02:00
Daniel Rudolf a83b01ef4f Access plugins by class name, not file name
Class name and file name can differ regarding case sensitivity
2015-09-06 14:35:23 +02:00
Daniel Rudolf 533822320e Workaround for webservers omitting QUERY_STRING
Thanks @theshka for spotting
2015-08-30 21:31:47 +02:00
Daniel Rudolf 07ae26789c Add AbstractPicoPlugin
The plugin magic takes place here...
2015-08-28 18:26:56 +02:00
Daniel Rudolf 43a7540f46 Add IPicoPlugin 2015-08-28 18:25:54 +02:00
Daniel Rudolf cd145821ba Remove pull request message 2015-08-28 18:24:06 +02:00
Daniel Rudolf 92c307d8be Pico 1.0
I unfortunately messed up my repo so this is just a single commit... :(
2015-08-28 18:22:32 +02:00
Daniel Rudolf c496297c44 Class files should exactly match the class name 2015-08-28 18:13:50 +02:00
Daniel Rudolf adc356251e Remove index.html
A empty index.html is a solution for nothing...
2015-08-28 18:11:45 +02:00
Tyler Heshka 2fdcacc14b Merge pull request #244 from muja/scandir
Use scandir instead of opendir to ensure alphabetical order.
2015-08-04 11:21:18 -06:00
Daniel Rudolf 399b73aa3b Move config.php to config/; Add CONFIG_DIR and VENDOR_DIR constants 2015-08-01 22:03:54 +02:00
Danyel Bayraktar 8d82cde120 Use scandir instead of opendir to ensure alphabetical order. 2015-07-14 13:31:51 +02:00
theshka f4cc9727ff Fix call on method of an object just created with new/PHP 5.3.10 compatibility error. 2015-06-23 19:06:53 -04:00
Wojciech Grzebieniowski 577160b109 Apply PSR1/PSR2 coding standards.
Mostly - use consistent indentation. Currently some methods in Pico
class are indented with space ( get_files() ), some with tabs.
2015-06-10 11:40:26 +02:00
Wojciech Grzebieniowski 83a3313e53 Fixed indent 2015-06-10 09:10:25 +02:00
Wojciech Grzebieniowski 23b90e2a92 Avoid using global config variable.
Instead config is keeped in Pico::$config private variable, and the
config.php returns $config.
2015-06-09 12:01:11 +02:00
theshka eb368d31e1 fix date_formatted issue 2015-05-29 13:22:52 -04:00
theshka 529e268d5b fix namespace error 2015-05-20 20:44:26 -04:00
theshka 968dc183db Upgrade to Parsedown-extra 2015-04-29 07:09:08 -07:00
theshka 483334170f Merge pull request #131 from Frodox/devel-chris
Don't remove all comments while parse content
2015-04-28 18:47:49 -04:00