Merge branch 'master' into pico-1.1

Conflicts:
	.htaccess
This commit is contained in:
Daniel Rudolf 2016-04-24 20:23:00 +02:00
commit 0e8cd0873d
No known key found for this signature in database
GPG Key ID: A061F02CD8DE4538
8 changed files with 134 additions and 25 deletions

View File

@ -1,11 +1,29 @@
Pico Changelog Pico Changelog
============== ==============
### Version 1.0.2 ### Version 1.0.3
Released: - Released: -
``` ```
* [Changed] Improve documentation
* [Changed] Add CSS rules for definition lists to default theme
* [Changed] Always use `on404Content...` execution path when serving a `404.md`
* [Changed] Deny access to `.git` directory (`.htaccess` file)
* [Changed] Use Pico's `404.md` to deny access to `.git`, `config`, `content`,
* `content-sample`, `lib` and `vendor` dirs (`.htaccess` file)
* [Fixed] #342: Fix responsiveness in default theme
* [Fixed] #344: Improve HTTPS detection with proxies
* [Fixed] #346: Force HTTPS to load Google Fonts in default theme
```
### Version 1.0.2
Released: 2016-03-16
```
* [Changed] Various small improvements and changes...
* [Fixed] Check dependencies when a plugin is enabled by default * [Fixed] Check dependencies when a plugin is enabled by default
* [Fixed] Allow `Pico::$requestFile` to point to somewhere outside `content_dir`
* [Fixed] #336: Fix `Date` meta header parsing with ISO-8601 datetime strings
``` ```
### Version 1.0.1 ### Version 1.0.1

View File

@ -6,8 +6,11 @@ fi
if [ "$DEPLOY_VERSION_BADGE" != "true" ]; then if [ "$DEPLOY_VERSION_BADGE" != "true" ]; then
echo "Skipping version badge deployment because it has been disabled" echo "Skipping version badge deployment because it has been disabled"
fi fi
if [ "$DEPLOY_PHPDOC_RELEASES" != "true" ] || [ "$DEPLOY_VERSION_BADGE" != "true" ]; then if [ "$DEPLOY_VERSION_FILE" != "true" ]; then
[ "$DEPLOY_PHPDOC_RELEASES" != "true" ] && [ "$DEPLOY_VERSION_BADGE" != "true" ] && exit 0 || echo echo "Skipping version file deployment because it has been disabled"
fi
if [ "$DEPLOY_PHPDOC_RELEASES" != "true" ] || [ "$DEPLOY_VERSION_BADGE" != "true" ] || [ "$DEPLOY_VERSION_FILE" != "true" ]; then
[ "$DEPLOY_PHPDOC_RELEASES" != "true" ] && [ "$DEPLOY_VERSION_BADGE" != "true" ] && [ "$DEPLOY_VERSION_FILE" != "true" ] && exit 0 || echo
fi fi
DEPLOYMENT_ID="${TRAVIS_BRANCH//\//_}" DEPLOYMENT_ID="${TRAVIS_BRANCH//\//_}"
@ -51,7 +54,7 @@ if [ "$DEPLOY_VERSION_BADGE" == "true" ]; then
"release" "$TRAVIS_TAG" "blue" "release" "$TRAVIS_TAG" "blue"
# commit version badge # commit version badge
echo "Committing changes..." echo "Committing version badge..."
git add "$DEPLOYMENT_DIR/badges/pico-version.svg" git add "$DEPLOYMENT_DIR/badges/pico-version.svg"
git commit \ git commit \
--message="Update version badge for $TRAVIS_TAG" \ --message="Update version badge for $TRAVIS_TAG" \
@ -60,6 +63,22 @@ if [ "$DEPLOY_VERSION_BADGE" == "true" ]; then
echo echo
fi fi
# update version file
if [ "$DEPLOY_VERSION_FILE" == "true" ]; then
generate-version.sh \
"$DEPLOYMENT_DIR/_data/version.yml" \
"${TRAVIS_TAG#v}"
# commit version file
echo "Committing version file..."
git add "$DEPLOYMENT_DIR/_data/version.yml"
git commit \
--message="Update version file for $TRAVIS_TAG" \
"$DEPLOYMENT_DIR/_data/version.yml"
[ $? -eq 0 ] || exit 1
echo
fi
# deploy # deploy
github-deploy.sh "$TRAVIS_REPO_SLUG" "tags/$TRAVIS_TAG" "$TRAVIS_COMMIT" github-deploy.sh "$TRAVIS_REPO_SLUG" "tags/$TRAVIS_TAG" "$TRAVIS_COMMIT"
[ $? -eq 0 ] || exit 1 [ $? -eq 0 ] || exit 1

57
_build/generate-version.sh Executable file
View File

@ -0,0 +1,57 @@
#!/usr/bin/env bash
##
# Updates the version file
#
# @author Daniel Rudolf
# @link http://picocms.org
# @license http://opensource.org/licenses/MIT
#
set -e
# parameters
VERSION_FILE_PATH="$1" # target file path
VERSION_FULL="$2" # full version string (e.g. 1.0.0-beta.1+7b4ad7f)
# print parameters
echo "Generating version file..."
printf 'VERSION_FILE_PATH="%s"\n' "$VERSION_FILE_PATH"
printf 'VERSION_FULL="%s"\n' "$VERSION_FULL"
echo
# evaluate version constraint (see http://semver.org/)
printf 'Evaluating version constraint...\n'
if [[ "$VERSION_FULL" =~ ^([0-9]+)\.([0-9]{1,2})\.([0-9]{1,2})(-([0-9A-Za-z\.\-]+))?(\+([0-9A-Za-z\.\-]+))?$ ]]; then
VERSION_MAJOR="${BASH_REMATCH[1]}"
VERSION_MINOR="${BASH_REMATCH[2]}"
VERSION_PATCH="${BASH_REMATCH[3]}"
VERSION_SUFFIX="${BASH_REMATCH[5]}"
VERSION_BUILD="${BASH_REMATCH[7]}"
VERSION_MILESTONE="$VERSION_MAJOR.$VERSION_MINOR"
VERSION_NAME="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
VERSION_ID="$VERSION_MAJOR$(printf '%02d' "$VERSION_MINOR")$(printf '%02d' "$VERSION_PATCH")"
else
echo "Invalid version constraint; skipping..." >&2
exit 1
fi
# generate version file
printf 'Updating version file...\n'
echo -n "" > "$VERSION_FILE_PATH"
exec 3> "$VERSION_FILE_PATH"
printf 'full: %s\n' "$VERSION_FULL" >&3
printf 'name: %s\n' "$VERSION_NAME" >&3
printf 'milestone: %s\n' "$VERSION_MILESTONE" >&3
printf 'id: %d\n' "$VERSION_ID" >&3
printf 'major: %d\n' "$VERSION_MAJOR" >&3
printf 'minor: %d\n' "$VERSION_MINOR" >&3
printf 'patch: %d\n' "$VERSION_PATCH" >&3
printf 'suffix: %s\n' "$VERSION_SUFFIX" >&3
printf 'build: %s\n' "$VERSION_BUILD" >&3
exec 3>&-
echo

View File

@ -135,10 +135,10 @@ something like the following:
{% endif %} {% endif %}
{% endfor %} {% endfor %}
``` ```
4. Make sure to exclude the blog articles from your page navigation. You can 4. Make sure to exclude blog articles from your page navigation. You can achieve
achieve this by adding `{% if not page starts with "blog/" %}...{% endif %}` this by adding `{% if not (page.id starts with "blog/") %}...{% endif %}`
to the navigation loop (`{% for page in pages %}...{% endfor %}`) in your to the navigation loop (`{% for page in pages %}...{% endfor %}`) in your
themes `index.twig`. theme's `index.twig`.
## Customization ## Customization
@ -284,13 +284,13 @@ still shows no rewritten URLs, force URL rewriting by setting
`$config['rewrite_url'] = true;` in your `config/config.php`. `$config['rewrite_url'] = true;` in your `config/config.php`.
If you're using Nginx, you can use the following configuration to enable If you're using Nginx, you can use the following configuration to enable
URL rewriting. Don't forget to adjust the path (`/pico/`; line `1` and `4`) URL rewriting. Don't forget to adjust the path (`/pico`; line `1` and `4`)
to match your installation directory. You can then enable URL rewriting by to match your installation directory. You can then enable URL rewriting by
setting `$config['rewrite_url'] = true;` in your `config/config.php`. setting `$config['rewrite_url'] = true;` in your `config/config.php`.
location /pico/ { location ~ ^/pico(.*) {
index index.php; index index.php;
try_files $uri $uri/ /pico/?$uri&$args; try_files $uri $uri/ /pico/?$1&$args;
} }
## Documentation ## Documentation

View File

@ -312,7 +312,8 @@ class Pico
// load raw file content // load raw file content
$this->triggerEvent('onContentLoading', array(&$this->requestFile)); $this->triggerEvent('onContentLoading', array(&$this->requestFile));
if (file_exists($this->requestFile)) { $notFoundFile = '404' . $this->getConfig('content_ext');
if (file_exists($this->requestFile) && (basename($this->requestFile) !== $notFoundFile)) {
$this->rawContent = $this->loadFileContent($this->requestFile); $this->rawContent = $this->loadFileContent($this->requestFile);
} else { } else {
$this->triggerEvent('on404ContentLoading', array(&$this->requestFile)); $this->triggerEvent('on404ContentLoading', array(&$this->requestFile));
@ -925,7 +926,17 @@ class Pico
} }
if (!empty($meta['date'])) { if (!empty($meta['date'])) {
$meta['time'] = strtotime($meta['date']); // workaround for issue #336
// Symfony YAML interprets ISO-8601 datetime strings and returns timestamps instead of the string
// this behavior conforms to the YAML standard, i.e. this is no bug of Symfony YAML
if (is_int($meta['date'])) {
$meta['time'] = $meta['date'];
$rawDateFormat = (date('H:i:s', $meta['time']) === '00:00:00') ? 'Y-m-d' : 'Y-m-d H:i:s';
$meta['date'] = date($rawDateFormat, $meta['time']);
} else {
$meta['time'] = strtotime($meta['date']);
}
$meta['date_formatted'] = utf8_encode(strftime($this->getConfig('date_format'), $meta['time'])); $meta['date_formatted'] = utf8_encode(strftime($this->getConfig('date_format'), $meta['time']));
} else { } else {
$meta['time'] = $meta['date_formatted'] = ''; $meta['time'] = $meta['date_formatted'] = '';
@ -1283,8 +1294,8 @@ class Pico
/** /**
* Registers the twig template engine * Registers the twig template engine
* *
* This method also registers Picos core Twig filters `link` and `content` * This method also registers Pico's core Twig filters `link` and `content`
* as well as Picos {@link PicoTwigExtension} Twig extension. * as well as Pico's {@link PicoTwigExtension} Twig extension.
* *
* @see Pico::getTwig() * @see Pico::getTwig()
* @return void * @return void
@ -1371,12 +1382,13 @@ class Pico
} }
$protocol = 'http'; $protocol = 'http';
if (!empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] !== 'off')) { if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
$secureProxyHeader = strtolower(current(explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO'])));
$protocol = in_array($secureProxyHeader, array('https', 'on', 'ssl', '1')) ? 'https' : 'http';
} elseif (!empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] !== 'off')) {
$protocol = 'https'; $protocol = 'https';
} elseif ($_SERVER['SERVER_PORT'] == 443) { } elseif ($_SERVER['SERVER_PORT'] == 443) {
$protocol = 'https'; $protocol = 'https';
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')) {
$protocol = 'https';
} }
$this->config['base_url'] = $this->config['base_url'] =

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* Picos Twig extension to implement additional filters * Pico's Twig extension to implement additional filters
* *
* @author Daniel Rudolf * @author Daniel Rudolf
* @link http://picocms.org * @link http://picocms.org
@ -54,7 +54,7 @@ class PicoTwigExtension extends Twig_Extension
* Returns the Twig filters markdown, map and sort_by * Returns the Twig filters markdown, map and sort_by
* *
* @see Twig_ExtensionInterface::getFilters() * @see Twig_ExtensionInterface::getFilters()
* @return Twig_SimpleFilter[] array of Picos Twig filters * @return Twig_SimpleFilter[] array of Pico's Twig filters
*/ */
public function getFilters() public function getFilters()
{ {

View File

@ -10,7 +10,7 @@
<meta name="robots" content="{{ meta.robots }}"> <meta name="robots" content="{{ meta.robots }}">
{% endif %} {% endif %}
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,700" type="text/css" /> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700" type="text/css" />
<link rel="stylesheet" href="{{ theme_url }}/style.css" type="text/css" /> <link rel="stylesheet" href="{{ theme_url }}/style.css" type="text/css" />
<script src="{{ theme_url }}/scripts/modernizr-2.6.1.min.js"></script> <script src="{{ theme_url }}/scripts/modernizr-2.6.1.min.js"></script>

View File

@ -137,13 +137,12 @@ h3 {
margin-top: 2em; margin-top: 2em;
} }
p, table { p, table, ol, ul, pre, blockquote, dl {
margin-bottom: 1em; margin-bottom: 1em;
} }
ol, ul { ol, ul {
padding-left: 30px; padding-left: 30px;
margin-bottom: 1em;
} }
b, strong { b, strong {
@ -198,17 +197,20 @@ code {
pre { pre {
background: #eee; background: #eee;
padding: 20px; padding: 20px;
margin-bottom: 1em;
overflow: auto; overflow: auto;
} }
blockquote { blockquote {
font-style: italic; font-style: italic;
margin: 0 0 1em 15px; margin-left: 15px;
padding-left: 10px; padding-left: 10px;
border-left: 5px solid #dddddd; border-left: 5px solid #dddddd;
} }
dd {
margin-left: 2em;
}
/* Structure Styles /* Structure Styles
/*---------------------------------------------*/ /*---------------------------------------------*/
body { body {
@ -223,7 +225,8 @@ body > * {
} }
.inner { .inner {
width: 850px; width: 100%;
max-width: 850px;
margin: 0 auto; margin: 0 auto;
} }