Commit Graph

901 Commits

Author SHA1 Message Date
Daniel Rudolf a192a42de5
Travis CI: Add PHP 7.2 2017-11-25 21:47:20 +01:00
Daniel Rudolf 28d2648ba0
Add Pico::buildPageTree()
Pico's page tree is a list of all the tree's branches (no matter the depth). Thus, by iterating a array element, you get the nodes of a given branch. All leaf nodes do represent a page, but inner nodes may or may not represent a page (e.g. if there's a `sub/page.md`, but neither a `sub/index.md` nor a `sub.md`, the inner node `sub`, that is the parent of the `sub/page` node, represents no page itself).

A page's file path describes its node's path in the tree (e.g. the page `sub/page.md` is represented by the `sub/page` node, thus a child of the `sub` node and a element of the `sub` branch). However, the index page of a folder (e.g. `sub/index.md`), is *not* a node of the `sub` branch, but rather of the `/` branch. The page's node is not `sub/index`, but `sub`. If two pages are described by the same node (e.g. if both a `sub/index.md` and a `sub.md` exist), the index page takes precedence. Pico's main index page (i.e. `index.md`) is represented by the tree's root node `/` and a special case: it is the only node of the `` (i.e. the empty string) branch.

A node is represented by an array with the keys `id`, `page` and `children`. The `id` key contains a string with the node's name. If the node represents a page, the `page` key is a reference to the page's data array. If the node is a inner node, the `children` key is a reference to its matching branch (i.e. a list of the node's children). The order of a node's children matches the order in Pico's pages array.

If you want to walk the whole page tree, start with the tree's root node at `$pageTree[""]["/"]`. The root node's `children` key is a reference to the `/` branch at `$pageTree["/"]`, that is a list of the root node's direct child nodes and their siblings.

You MUST NOT iterate the page tree itself (i.e. the list of the tree's branches), its order is undefined and the array will be replaced by a non-iterable data structure with Pico 3.0.
2017-11-18 18:34:57 +01:00
Daniel Rudolf 3846d3b685
Various small improvements 2017-11-18 18:28:02 +01:00
Daniel Rudolf f5f38a7b0b
DummyPlugin: Improve phpDoc class docs 2017-11-18 18:27:20 +01:00
Daniel Rudolf 22aa688bf4
Version 2.0.0-beta.1 2017-11-05 18:28:25 +01:00
Daniel Rudolf 1cd6e241f0
Prepare v2.0.0-beta.1 2017-11-05 18:28:11 +01:00
Daniel Rudolf 66bb17a419
Build system: Make sure to create release archive in $TRAVIS_BUILD_DIR 2017-11-05 18:28:01 +01:00
Daniel Rudolf 46a6ff183d
Don't ignore index.php.dist when exporting Git repo
We need this file to create Pico's pre-built release archives
2017-11-05 18:02:17 +01:00
Daniel Rudolf 619ae9d0d0
Add Developer Certificate of Origin to CONTRIBUTING.md 2017-11-05 14:08:56 +01:00
Daniel Rudolf 4fb0b408e2
Build system: Improve and fix deployment 2017-11-05 02:36:50 +01:00
Daniel Rudolf 6e88e7ffbb
Build system: Disable Travis IRC notifications 2017-11-04 23:52:20 +01:00
Daniel Rudolf 1afc495584
Build system: Remove cloc release statistics 2017-11-04 22:49:02 +01:00
Daniel Rudolf da0d4c3054
Build system: Add tools/github-commit.sh 2017-11-04 22:47:47 +01:00
Daniel Rudolf ae99e0c2cd
Merge branch 'master' into pico-1.1
Conflicts:
	lib/Pico.php
2017-11-04 21:12:00 +01:00
Daniel Rudolf e8a19cb2f9
Fix Pico::parseFileMeta() 2017-11-04 20:49:41 +01:00
Daniel Rudolf cc47043570
Update README.md screenshot 2017-11-04 18:41:17 +01:00
Daniel Rudolf 2a30c4664f
Build system: Add config/config.yml.template to release archives 2017-11-04 18:41:05 +01:00
Daniel Rudolf dfed9cc51f
Build system: Create GitHub releases as draft 2017-10-28 22:53:25 +02:00
Daniel Rudolf c71169adbe
Update CONTRIBUTING.md 2017-10-28 22:52:47 +02:00
Daniel Rudolf 0532fef5fe
Update composer dependencies 2017-10-28 22:52:18 +02:00
Daniel Rudolf 1dee2c1cf6
Build system: Use 'picocms/pico-composer' to create release archives 2017-10-22 21:27:19 +02:00
Daniel Rudolf 448fff4702
Build system: Add version parser, handle pre-releases differently 2017-10-22 21:24:28 +02:00
Daniel Rudolf 498961b0c6
Build system: Various small improvements 2017-10-22 21:22:11 +02:00
Daniel Rudolf 81ebc4c33e
Build system: Move helper scripts to _build/tools dir 2017-10-22 21:15:29 +02:00
Daniel Rudolf 63616b5888
Add license/copyright file headers to index.php and index.php.dist 2017-10-19 22:26:43 +02:00
Daniel Rudolf 61319b011e
Add license/copyright file header; improve phpDoc class docs 2017-10-19 21:55:41 +02:00
Daniel Rudolf d8a649e6f7
Don't lower meta data unsolicited and flip meta headers array
Don't lower unregistered meta headers on the first level unsolicited (e.g. `SomeNotRegisteredKey: foobar` in the YAML Frontmatter should result in `['SomeNotRegisteredKey']`, not `['somenotregisteredkey']`). Furthermore, Pico no longer compares registered meta headers in a case-insensitive manner. However, you can now register multiple search strings that are used to find a registered meta header. This is achieved by flipping the meta headers array: Pico 2.0 uses the array key to search for a meta value and the array value to store the found meta value. Previously it was the other way round (what didn't make much sense...).
2017-10-14 23:12:16 +02:00
Daniel Rudolf 151908fbad
Remove various event params that are a bit out of place 2017-10-14 22:08:11 +02:00
Daniel Rudolf a231abc4c1
Remove picocms/pico-deprecated and picocms/pico-theme dependencies
In the future we'll use picocms/pico-composer to create Pico's release packages (and picocms/pico-composer depends on picocms/pico-deprecated and picocms/pico-theme by default). Installing picocms/pico-deprecated and picocms/pico-theme is no longer required, but rather suggested. You simply don't need them in any case. You need picocms/pico-deprecated only if you're using old plugins, and picocms/pico-theme is obsolete when using a 3rd-party theme.
2017-10-13 22:06:02 +02:00
Daniel Rudolf 709416328a
Pico::loadPlugins(): Add plugin blacklist and allow disabling local plugins 2017-10-13 21:02:51 +02:00
Daniel Rudolf 867f81a443
Various small improvements 2017-10-12 16:15:58 +02:00
Daniel Rudolf 0318cc25d7
Build system: Add cloc statistics to release deployment 2017-10-12 15:14:21 +02:00
Daniel Rudolf ee013f98ee
Build system: Fix _build/create-release-archive.sh 2017-10-12 15:06:22 +02:00
Daniel Rudolf 9dcb06c258
Pico::sortPlugins(): Fix sorting of non-native plugins 2017-10-12 12:12:37 +02:00
Daniel Rudolf 20297deaec
Pico::loadLocalPlugins(): Don't load plugins case-insensitive
The performance vs. error-proneness trade-off doesn't justify this additional complexity. This is Pico 2.0, we always try to minimize BC-breaking changes, but we're breaking BC anyway by loading plugins from plugins/<plugin name>/<plugin name>.php only...
2017-10-12 12:11:55 +02:00
Daniel Rudolf b6468ca215
Various small improvements 2017-10-08 00:36:29 +02:00
Daniel Rudolf 9a9872fe8e
Add Pico::getPageId() 2017-10-08 00:36:14 +02:00
Daniel Rudolf 7087573aed
Pico::loadPlugins(): Load composer-plugins first and skip conflicting plugins in the plugins/ dir 2017-10-08 00:35:36 +02:00
Daniel Rudolf fc76d37dbc
Improve class docs 2017-08-05 02:49:58 +02:00
Daniel Rudolf 32ae70f398
Add $default param to getConfig() method
- Pico::getConfig()
- AbstractPicoPlugin::getPluginCongif()
2017-08-05 00:19:03 +02:00
Daniel Rudolf 8138212a27
Pico::evaluateRequestUrl(): Improve REQUEST_URI handling
Don't 404 "/index.php" requests
2017-08-03 22:17:48 +02:00
Daniel Rudolf b73e197ccb
Refactor YAML frontmatter date parsing
You can now explicitly specify both the `date_formatted` and `time` meta values to overwrite Pico's page date handling. Specifying `time` doesn't make much sense in general, however, specifying `date_formatted` allows you to use `{{ meta.date_formatted }}` on all systems, even those where `strftime()` doesn't work as wished
2017-07-28 12:16:26 +02:00
Daniel Rudolf 0b7e03b660
Version 1.0.6
```
* [Changed] Improve documentation
* [Changed] Improve handling of Pico's Twig config (`$config['twig_config']`)
* [Changed] Improve PHP platform requirement checks
```
2017-07-25 15:02:25 +02:00
Daniel Rudolf be0828bf2a
Update CHANGELOG.md 2017-07-25 15:02:20 +02:00
Daniel Rudolf 13b167e23a
Pico::loadConfig(): Improve Twig config parsing
Thanks @refeaime for reporting this
2017-07-25 14:43:21 +02:00
Daniel Rudolf 3e88c58ce0
Merge branch 'master' into pico-1.1
Conflicts:
	lib/Pico.php
2017-07-18 21:39:39 +02:00
Daniel Rudolf d3c624777f
Improve guessing whether URL rewriting is enabled
Besides searching for the env var 'PICO_URL_REWRITING', also try 'REDIRECT_PICO_URL_REWRITING'.
2017-07-18 21:36:15 +02:00
Daniel Rudolf 53e9eaa5e4
Fix Pico's REQUEST_URI routing method when installed to / 2017-07-18 21:31:14 +02:00
Daniel Rudolf de74e7d867
Improve class docs 2017-07-14 20:50:38 +02:00
Daniel Rudolf 414f5ac18e
Allow pages to be sorted by arbitrary meta values
This basically works like Pico's `sort_by` Twig filter
2017-07-14 20:37:05 +02:00