Commit graph

851 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