Commit graph

866 commits

Author SHA1 Message Date
Daniel Rudolf
c697ec2e5c
Update CHANGELOG.md for Pico v2.0.0-beta.1 and upcoming v2.0.0-beta.2 2018-01-21 23:07:10 +01:00
Daniel Rudolf
888190f15a
Various small improvements 2018-01-21 23:06:38 +01:00
Daniel Rudolf
b129a4fb12
Various small improvements 2017-12-27 21:36:56 +01:00
Daniel Rudolf
afd0a4d7a3
Change AbstractPicoPlugin::$enabled's behavior
AbstractPicoPlugin::$enabled now defaults to NULL what leaves the decision whether a plugin should be enabled or disabled by default up to Pico (precisely AbstractPicoPlugin::triggerEvent()). If all dependencies of a plugin are fulfilled, Pico enables the plugin by default. Otherwise the plugin is silently disabled (this was the behavior when AbstractPicoPlugin::$enabled was set to TRUE previously).

If a plugin should never be disabled *silently* (e.g. when dealing with security-relevant stuff like access control, or similar), set AbstractPicoPlugin::$enabled to TRUE. If Pico can't fulfill all the plugin's dependencies, it will throw an RuntimeException.

If a plugin rather does some "crazy stuff" a user should really be aware of before using it, you can set AbstractPicoPlugin::$enabled to FALSE. The user will then have to enable the plugin manually. However, if another plugin depends on this plugin, it might get enabled silently nevertheless.

No matter what, the user can always explicitly enable or disable a plugin in Pico's config.
2017-12-27 21:36:08 +01:00
Daniel Rudolf
1ce1780a86
Build system: Fix release deployment 2017-12-24 14:21:32 +01:00
Daniel Rudolf
e517eac396
Improve .htaccess regex
Deny access to all dot files and dirs by default (except .well-known)

Update nginx rules accordingly and pass denied requests to Pico rather than letting nginx send a 404 response
2017-12-24 13:58:42 +01:00
Daniel Rudolf
a1dcf54683
Add .github/PULL_REQUEST_TEMPLATE.md 2017-12-02 17:55:29 +01:00
Daniel Rudolf
68b71103e9
Merge branch 'master' into pico-1.1
Conflicts:
	.gitattributes
	CONTRIBUTING.md
2017-12-02 17:48:34 +01:00
Daniel Rudolf
722de2a1e5
Build system: Refactor scripts to use picocms/ci-tools 2017-12-02 17:21:03 +01:00
Daniel Rudolf
0c83f360a8
Build system: Move _build/tools directory to a separate repo
See https://github.com/picocms/ci-tools
2017-12-02 17:03:25 +01:00
Daniel Rudolf
d2055d0e28
Update CONTRIBUTING.md 2017-11-28 18:23:48 +01:00
Daniel Rudolf
6dd41abf7a
Add '/.github export-ignore' to .gitattributes 2017-11-28 17:20:22 +01:00
Daniel Rudolf
9834e839ef
Update CONTRIBUTING.md 2017-11-28 17:18:18 +01:00
Daniel Rudolf
4c7de5b97e
Add .github/stale.yml
After resolving a issue, we usually keep it open for about a week to give users some more time for feedback and further questions. This is especially true for issues with the `type: Notice`, `type: Question`, `type: Discussion` and `type: Invalid` labels. After 7 days with no interaction, [Probot](https://probot.github.io/)'s [Stale](https://probot.github.io/apps/stale/) bot (@probot-stale) adds the `info: Stale` label to the issue to ask the participants whether the issue has been resolved. If no more activity occurs, the issue will be automatically closed by @probot-stale 2 days later.
2017-11-28 17:12:00 +01:00
Daniel Rudolf
37dfe0e6ef
Force themes to use .twig as file extension
We recommend plugin developers to use templates when serving HTML contents (like the UI of PicoAdmin), however, by supporting multiple file extensions for themes, we make it pretty hard to overwrite a plugin's template with a theme. As always, we preserve BC using PicoDeprecated.
2017-11-25 21:52:03 +01:00
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