From fa50632a9d87c3989566fed3e49c160a132e0d14 Mon Sep 17 00:00:00 2001
From: Agustin Henze
Date: Sun, 9 Mar 2014 03:14:40 +0100
Subject: Imported Upstream version 6.4.0
---
.travis.yml | 14 +-
AUTHORS.txt | 7 +-
CHANGES.txt | 135 ++++++----
docs/creating-a-site.txt | 2 +
docs/creating-a-theme.txt | 2 +
docs/extending.txt | 20 +-
docs/getting-help.txt | 2 +-
docs/internals.txt | 18 +-
docs/man/nikola.1 | 11 +-
docs/manual.txt | 140 +++++-----
docs/social_buttons.txt | 2 +-
docs/sphinx/conf.py | 4 +-
docs/theming.txt | 7 +-
docs/upgrading-to-v6.txt | 4 +-
dodo.py | 14 +-
nikola/__init__.py | 2 +-
nikola/__main__.py | 14 +-
nikola/conf.py.in | 55 ++--
nikola/data/themes/base/messages/messages_bg.py | 2 +
nikola/data/themes/base/messages/messages_ca.py | 2 +
nikola/data/themes/base/messages/messages_cs.py | 2 +
nikola/data/themes/base/messages/messages_de.py | 2 +
nikola/data/themes/base/messages/messages_el.py | 2 +
nikola/data/themes/base/messages/messages_en.py | 2 +
nikola/data/themes/base/messages/messages_eo.py | 2 +
nikola/data/themes/base/messages/messages_es.py | 2 +
nikola/data/themes/base/messages/messages_et.py | 2 +
nikola/data/themes/base/messages/messages_eu.py | 2 +
nikola/data/themes/base/messages/messages_fa.py | 2 +
nikola/data/themes/base/messages/messages_fi.py | 2 +
nikola/data/themes/base/messages/messages_fr.py | 2 +
nikola/data/themes/base/messages/messages_hi.py | 31 +++
nikola/data/themes/base/messages/messages_hr.py | 2 +
nikola/data/themes/base/messages/messages_it.py | 2 +
nikola/data/themes/base/messages/messages_ja.py | 2 +
nikola/data/themes/base/messages/messages_nb.py | 2 +
nikola/data/themes/base/messages/messages_nl.py | 2 +
nikola/data/themes/base/messages/messages_pl.py | 2 +
nikola/data/themes/base/messages/messages_pt_br.py | 2 +
nikola/data/themes/base/messages/messages_ru.py | 2 +
nikola/data/themes/base/messages/messages_sl.py | 2 +
nikola/data/themes/base/messages/messages_tr_tr.py | 2 +
nikola/data/themes/base/messages/messages_ur.py | 4 +-
nikola/data/themes/base/messages/messages_zh_cn.py | 2 +
nikola/data/themes/base/templates/base.tmpl | 5 +
nikola/data/themes/base/templates/base_helper.tmpl | 4 +-
nikola/data/themes/base/templates/crumbs.tmpl | 2 +
nikola/data/themes/base/templates/gallery.tmpl | 4 +
.../data/themes/base/templates/index_helper.tmpl | 5 +
nikola/data/themes/base/templates/list.tmpl | 2 +
nikola/data/themes/base/templates/list_post.tmpl | 2 +
nikola/data/themes/base/templates/listing.tmpl | 2 +
nikola/data/themes/base/templates/post_helper.tmpl | 5 +
.../themes/base/templates/post_list_directive.tmpl | 2 +
nikola/data/themes/base/templates/tag.tmpl | 2 +
nikola/data/themes/bootstrap/templates/base.tmpl | 1 +
.../bootstrap/templates/bootstrap_helper.tmpl | 4 +-
.../data/themes/bootstrap/templates/gallery.tmpl | 4 +
nikola/nikola.py | 283 +++++++++++++++------
nikola/plugin_categories.py | 4 +
nikola/plugins/basic_import.py | 8 +-
nikola/plugins/command/auto.py | 18 +-
nikola/plugins/command/bootswatch_theme.py | 9 +-
nikola/plugins/command/check.py | 56 +++-
nikola/plugins/command/console.py | 2 +-
nikola/plugins/command/deploy.py | 29 +--
nikola/plugins/command/import_blogger.py | 9 +-
nikola/plugins/command/import_feed.py | 13 +-
nikola/plugins/command/import_wordpress.py | 139 ++++++++--
nikola/plugins/command/init.py | 110 ++++----
nikola/plugins/command/install_plugin.py | 15 +-
nikola/plugins/command/install_theme.py | 11 +-
nikola/plugins/command/new_page.plugin | 9 +
nikola/plugins/command/new_page.py | 80 ++++++
nikola/plugins/command/new_post.py | 61 +++--
nikola/plugins/command/planetoid/__init__.py | 14 +-
nikola/plugins/command/serve.py | 19 +-
nikola/plugins/compile/asciidoc.py | 11 +-
nikola/plugins/compile/bbcode.py | 11 +-
nikola/plugins/compile/html.py | 11 +-
nikola/plugins/compile/ipynb/__init__.py | 11 +-
nikola/plugins/compile/markdown/__init__.py | 11 +-
nikola/plugins/compile/misaka.py | 11 +-
nikola/plugins/compile/pandoc.py | 11 +-
nikola/plugins/compile/php.py | 11 +-
nikola/plugins/compile/rest/__init__.py | 43 +++-
nikola/plugins/compile/rest/listing.py | 19 ++
nikola/plugins/compile/textile.py | 11 +-
nikola/plugins/compile/txt2tags.py | 11 +-
nikola/plugins/compile/wiki.py | 11 +-
nikola/plugins/loghandler/stderr.py | 4 +-
nikola/plugins/task/build_less.py | 16 +-
nikola/plugins/task/build_sass.py | 19 +-
nikola/plugins/task/bundles.py | 4 +-
nikola/plugins/task/copy_assets.py | 4 +-
nikola/plugins/task/galleries.py | 6 +-
nikola/plugins/task/listings.py | 2 +-
.../localsearch/files/assets/css/img/search.png | Bin
.../localsearch/files/assets/css/tipuesearch.css | 0
.../task/localsearch/files/tipue_search.html | 0
nikola/plugins/task/rss.py | 5 +
nikola/plugins/task/sitemap/__init__.py | 19 +-
nikola/plugins/task/tags.py | 14 +-
nikola/plugins/template/jinja.py | 5 +
nikola/plugins/template/mako.py | 8 +
nikola/post.py | 5 +-
nikola/utils.py | 81 +++---
requirements-full.txt | 5 +-
requirements-tests.txt | 1 +
requirements.txt | 1 +
scripts/getpyver.py | 25 ++
scripts/import_po.py | 6 +-
scripts/set_version.py | 4 +-
setup.cfg | 3 +
setup.py | 2 +-
tests/test_command_import_wordpress.py | 83 +++++-
tests/test_command_init.py | 12 +-
tests/test_integration.py | 61 +++++
tests/test_rss_feeds.py | 2 +-
tests/test_utils.py | 112 ++++----
tests/wordpress_export_example.xml | 31 +++
translations/nikola.messages/bg.po | 8 +-
translations/nikola.messages/ca.po | 8 +-
translations/nikola.messages/cs.po | 8 +-
translations/nikola.messages/de.po | 10 +-
translations/nikola.messages/el.po | 8 +-
translations/nikola.messages/en.po | 6 +
translations/nikola.messages/eo.po | 8 +-
translations/nikola.messages/es.po | 8 +-
translations/nikola.messages/et.po | 8 +-
translations/nikola.messages/eu.po | 8 +-
translations/nikola.messages/fa.po | 8 +-
translations/nikola.messages/fi.po | 8 +-
translations/nikola.messages/fr.po | 8 +-
translations/nikola.messages/hi.po | 91 +++++++
translations/nikola.messages/hr.po | 8 +-
translations/nikola.messages/it.po | 8 +-
translations/nikola.messages/ja.po | 8 +-
translations/nikola.messages/nb.po | 8 +-
translations/nikola.messages/nl.po | 10 +-
translations/nikola.messages/pl.po | 10 +-
translations/nikola.messages/pt_BR.po | 8 +-
translations/nikola.messages/ru.po | 8 +-
translations/nikola.messages/sl.po | 10 +-
translations/nikola.messages/tr_TR.po | 8 +-
translations/nikola.messages/ur.po | 11 +-
translations/nikola.messages/zh_CN.po | 8 +-
147 files changed, 1810 insertions(+), 682 deletions(-)
create mode 100644 nikola/data/themes/base/messages/messages_hi.py
mode change 100755 => 100644 nikola/data/themes/base/templates/index_helper.tmpl
mode change 100755 => 100644 nikola/data/themes/base/templates/post_helper.tmpl
create mode 100644 nikola/plugins/command/new_page.plugin
create mode 100644 nikola/plugins/command/new_page.py
mode change 100755 => 100644 nikola/plugins/task/localsearch/files/assets/css/img/search.png
mode change 100755 => 100644 nikola/plugins/task/localsearch/files/assets/css/tipuesearch.css
mode change 100755 => 100644 nikola/plugins/task/localsearch/files/tipue_search.html
create mode 100755 scripts/getpyver.py
create mode 100644 translations/nikola.messages/hi.po
diff --git a/.travis.yml b/.travis.yml
index 680496f..fc27848 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,7 @@
before_install:
- "if [[ $NMODE == 'nikola' ]]; then sudo apt-get update -qq || true; fi"
- "if [[ $NMODE == 'nikola' ]]; then sudo apt-get --reinstall install -qq language-pack-en-base language-pack-pl-base; fi"
+ - "pip install --upgrade pip wheel"
language: python
cache: apt
python:
@@ -14,14 +15,17 @@ matrix:
env:
NMODE=nikola
install:
- - "if [[ $NMODE == 'nikola' ]]; then pip install -r requirements-tests.txt --use-mirrors; fi"
- - "if [[ $NMODE == 'nikola' ]]; then pip install . --use-mirrors; fi"
- - "if [[ $NMODE == 'flake8' ]]; then pip install flake8 --use-mirrors; fi"
-# We run tests, nikola (to see if the command is executable) and flake8.
+ - "if [[ $NMODE == 'nikola' ]]; then wget https://github.com/getnikola/wheelhouse/archive/$(scripts/getpyver.py).zip; fi"
+ - "if [[ $NMODE == 'nikola' ]]; then unzip $(scripts/getpyver.py).zip; fi"
+ - "if [[ $NMODE == 'nikola' ]]; then pip install --use-wheel --no-index --find-links=wheelhouse-$(scripts/getpyver.py short) lxml Pillow ipython; fi"
+ - "if [[ $NMODE == 'nikola' ]]; then pip install -r requirements-tests.txt; fi"
+ - "if [[ $NMODE == 'nikola' ]]; then pip install .; fi"
+ - "if [[ $NMODE == 'flake8' ]]; then pip install flake8; fi"
+# We run tests and nikola (to see if the command is executable) OR flake8.
script:
- "if [[ $NMODE == 'nikola' ]]; then nosetests --with-coverage --cover-package=nikola --with-doctest --doctest-options=+NORMALIZE_WHITESPACE --logging-filter=-yapsy; fi"
- "if [[ $NMODE == 'nikola' ]]; then nikola help; fi"
- - "if [[ $NMODE == 'flake8' ]]; then flake8 --ignore=E501 .; fi"
+ - "if [[ $NMODE == 'flake8' ]]; then flake8 .; fi"
after_success:
- "if [[ $NMODE == 'nikola' ]]; then coveralls; fi"
notifications:
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 59dc3db..cfb0ea0 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -13,12 +13,15 @@ Chris “Kwpolska” Warrick
Daniel Aleksandersen
DoctorMalboro
Eduardo Schettino
+Evgeni Golov
Kay Hayen
Niko Wenselowski
+Ondřej Grover
Raimon Esteve
Roberto Alsina
Roman Imankulov
StyXman
+Tim Chase
Tordek
Troy Toman
Zhaojun Meng
@@ -34,6 +37,7 @@ dflock
dhruvbaldawa
dmoisset
edwinsteele
+ermeaney
fisadev
fizyk
ivanov
@@ -48,6 +52,7 @@ marianoguerra
mattgaviota
mgaitan
mrabbitt
+neiesc
neilmb
notfoss
numshub
@@ -64,5 +69,3 @@ snaewe
tolusonaike
wimpr1m
yarko
-neiesc
-ermeaney
diff --git a/CHANGES.txt b/CHANGES.txt
index 59318e3..8454939 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,52 @@
-New in 6.3.0
-============
+New in v6.4.0
+=============
+
+Features
+--------
+
+* Add `nikola new_page` command (equivalent to `nikola new_post -p`) (Issue #1060)
+* Add LESS_OPTIONS and SASS_OPTIONS for specifying additional parameters to LESS/Sass compilers (Issue #1020)
+* Warn users about bootswatch_theme being incompatible with bootstrap3-gradients
+* Add link://filename/foo/bar.rst syntax to refer to the post generated from foo/bar.rst (Issue #1035)
+* Log messages are colorized (colorama is required under Windows) (Issue #1044)
+* Template filters are configurable via the TEMPLATE_FILTERS config variable (Issue #1038)
+* Added Hindi translation by Sean Pue
+* Livereload v2.1.0 is supported and frozen as the version to use due to backwards-incompatible updates (Issue #1023)
+* Support :linenos: and :number-lines: in listings (Issue #1010)
+* Support :linenos: in code blocks for Sphinx compatibility (Issue #1010)
+* New link:///foo links which always point to absolute paths (/foo in that case) (Issue #986)
+* Bootstrap 3 has been updated to v3.1.1 (Issue #1015)
+* New --browser/-b option on the serve command to open instantly in a web browser (Issue #997)
+* SASS/LESS files and targets file will be processed from site root (Issue #941)
+
+Bugfixes
+--------
+
+* lastdeploy time recording was broken, changed to ISO format (Issue #1083)
+* Avoid undefined behaviour if NAVIGATION_LINKS is missing keys for a translation (Issue #1082)
+* Make livereload actually rebuild the site when changes are made (Issue #1067)
+* Fix filename encodings in WordPress imports (Issue #1053)
+* nikola check supports URL_TYPE="absolute" and URL_TYPE="full_path" (Issue #1046)
+* Fix URL_TYPE=absolute and URL_TYPE=full_path on non-root sites (Issue #1046)
+* Avoid running bundle tasks twice (Issue #1032)
+* Fix post links in RSS feeds for sites outside of webserver root (Issue #986)
+* Only run sitemap once (Issue #1032)
+* Fix a bug with some multilingual pages
+* Normalize paths (Issue #1028)
+* Fix drafts being leaked in feeds (Issues #934, #971)
+* If two tags generate the same slug, they are the same tag (Issue #1022)
+* Assume UTF-8 if user's locale doesn't have any encodings attached (Issue #1026 via #1021)
+* Support PRETTY_URLS for tag files (Issue #655)
+* Change code.css and rst.css to have sane output everywhere (Issues #913, #1009, #1050)
+* Fix image URLs in galleries for sites outside of webserver root (Issue #986)
+* Fix link:// in RSS contents (Issue #952)
+* HIDE_SOURCELINK was set to True sometimes (Issue #1004)
+* Properly import cool URIs from WordPress, instead of just slugify-ing the path (Issue #693)
+* Fixed SASS/LESS errors when more than one theme in chain has a targets file (Issue #941)
+* Guard against empty list-items in base templates (Issue #936)
+
+New in v6.3.0
+=============
Features
--------
@@ -59,8 +106,8 @@ Bugfixes
* Remove some unnecessary elements (Issues #969, #970)
* abs_link should return absolute URI
-New in 6.2.1
-============
+New in v6.2.1
+=============
Features
--------
@@ -77,8 +124,8 @@ Bugfixes
* Fixed some locale problems in posix systems (Issues #886, #884, #875)
* Don’t include BLOG_DESCRIPTION as meta tag on tag and gallery pages (Issue #876)
-New in 6.2.0
-============
+New in v6.2.0
+=============
Features
--------
@@ -125,8 +172,8 @@ Other
* the bpython console is now “slightly deprecated”
-New in 6.1.1
-============
+New in v6.1.1
+=============
Features
--------
@@ -141,8 +188,8 @@ Bugfixes
* A standardized way of reporting missing requirements (Issue #797)
* Don’t force requests for compile.rest.gist (Issue #795)
-New in 6.1.0
-============
+New in v6.1.0
+=============
Features
--------
@@ -172,8 +219,8 @@ Bugfixes
* LOGGER was incorrectly imported in planetoid.py
* Order Monthly Archive properly, descending order (Issue #740)
-New in 6.0.4
-============
+New in v6.0.4
+=============
Features
--------
@@ -200,8 +247,8 @@ Bugfixes
* Consider the current theme chain's parent, bundles and engine part of the file_dep for
files created by generic_page_renderer (Issue #711)
-New in 6.0.3
-============
+New in v6.0.3
+=============
Features
--------
@@ -222,8 +269,8 @@ Bugfixes
* Apply filters to files generated by the gallery tasks (Issue #708)
* More robust handling of filter commands' shell quoting (Issue #705)
-New in 6.0.2
-============
+New in v6.0.2
+=============
Features
--------
@@ -238,8 +285,8 @@ Bugfixes
* Make footnote-references keep line height in rst.css
* Make bootswatch_theme work under Python 3 (Issue #695)
-New in 6.0.1
-============
+New in v6.0.1
+=============
Features
--------
@@ -254,8 +301,8 @@ Bugfixes
* Remove decoding errors if files are not proper UTF-8 (Issue #691)
* Stop ignoring \*.JPG and \*.PNG by galleries (Issue #690)
-New in 6.0.0
-============
+New in v6.0.0
+=============
Features
--------
@@ -317,8 +364,8 @@ Bugfixes
* Added LICENSE in the footer (Issue #528)
* Use random IDs for slides so you can have more than one in a page (Issue #572)
-New in 5.5.1
-============
+New in v5.5.1
+=============
Features
--------
@@ -351,8 +398,8 @@ Bugfixes
* Fixed IPython plugin to work with the latest IPython.nbconvert machinery
* Fixed failing build because of hidden folders and files inside post folder
-New in 5.5
-==========
+New in v5.5
+===========
Features
--------
@@ -415,8 +462,8 @@ Bugfixes
* Don't map empty folders, map folders with index.html, and don't map index.html (Issue #430)
* Wordpress import: write correct redirections for URLs not ending in an / (Issue #459)
-New in 5.4.4
-============
+New in v5.4.4
+=============
Features
--------
@@ -448,8 +495,8 @@ Bugfixes
* Fix aspect ratio detection in Vimeo videos (Issue #440)
* Blogger importer was passing wrong options to "nikola init" (Issue #408)
-New in 5.4.3
-============
+New in v5.4.3
+=============
Features
--------
@@ -512,8 +559,8 @@ Bugfixes
* Planetoid requires only 3 runs now ;-)
* Blogger import: imports will not result in an TypeError because str.join expects all it's arguments to be of type str
-New in 5.4.2
-============
+New in v5.4.2
+=============
Bugfixes
--------
@@ -521,8 +568,8 @@ Bugfixes
* Fix relative paths when stories is "dropped to root" (Issue #362)
* Pick translated titles in 1-file posts (Issue #365)
-New in 5.4
-==========
+New in v5.4
+===========
Features
--------
@@ -560,8 +607,8 @@ Bugfixes
* Wordpress Import: Do not break indentation (issue #189)
* Make things work even if SITE_URL has a path (Fix #307)
-New in 5.3
-==========
+New in v5.3
+===========
Features
--------
@@ -588,8 +635,8 @@ Bugfixes
* Inconsistent breadcrumbs in gallery pages (Issue #303)
* Use source files as bundle dependencies instead of outputs (Issue #294)
-New in 5.2
-==========
+New in v5.2
+===========
Features
--------
@@ -703,8 +750,8 @@ Bugfixes
* Fixed Issue 161: webassets setting USE_BUNDLES was ignored (fix by schettino72)
* Fixed Issue 153: index.txt was being ignored in galleries.
-New in Version 4.0.3
-====================
+New in v4.0.3
+=============
Bugfixes
--------
@@ -718,8 +765,8 @@ Bugfixes
* Fix empty tag feeds.
* Refactored Post out of nikola.py
-New in Version 4.0.2
-====================
+New in v4.0.2
+=============
Features
--------
@@ -746,8 +793,8 @@ Bugfixes
* Made jinja-default follow default more closely.
* Don't say "reSt", say "Source" since it can be markdown or other stuff.
-New in Version 4.0.1
-====================
+New in v4.0.1
+=============
Features
--------
@@ -761,8 +808,8 @@ Bugfixes
* "Read More" is translatable.
* Fixed Issue 121: CSS was not found if webassets was not installed.
-New in Version 4
-================
+New in v4
+=========
Features
--------
diff --git a/docs/creating-a-site.txt b/docs/creating-a-site.txt
index 097bfb5..423b2c1 100644
--- a/docs/creating-a-site.txt
+++ b/docs/creating-a-site.txt
@@ -8,6 +8,8 @@
Creating a Site (Not a Blog) with Nikola
========================================
+.. class:: lead
+
One of the most frequent questions I get about Nikola is "but how do
I create a site that's not a blog?". And of course, that's because the
documentation is heavily blog-oriented. This document will change that ;-)
diff --git a/docs/creating-a-theme.txt b/docs/creating-a-theme.txt
index 35c2dbf..40a4566 100644
--- a/docs/creating-a-theme.txt
+++ b/docs/creating-a-theme.txt
@@ -8,6 +8,8 @@
Creating A Theme From Scratch (Almost)
======================================
+.. class:: lead
+
There is some documentation about creating themes for Nikola, but maybe a tutorial is also a useful way
to explain it. So, here it is. I'll explain how to create a theme (almost) from scratch. All themes
in Nikola must inherit from the ``base`` theme. In this case, we will inherit from ``bootstrap``
diff --git a/docs/extending.txt b/docs/extending.txt
index 25d1782..fb216c5 100644
--- a/docs/extending.txt
+++ b/docs/extending.txt
@@ -8,7 +8,7 @@
Extending Nikola
================
-:Version: 6.3.0
+:Version: 6.4.0
:Author: Roberto Alsina
.. class:: alert alert-info pull-right
@@ -16,11 +16,13 @@ Extending Nikola
.. contents::
+.. class:: lead
+
Nikola is extensible. Almost all its functionality is based on plugins,
and you can add your own or replace the provided ones.
Plugins consist of a metadata file (with ``.plugin`` extension) and
-a python module (a ``.py`` file) or package (a folder containing
+a Python module (a ``.py`` file) or package (a folder containing
a ``__init__.py`` file.
To use a plugin in your site, you just have to put it in a ``plugins``
@@ -74,7 +76,7 @@ When you run ``nikola --help`` you will see something like this::
That will give you a list of all available commands in your version of Nikola.
Each and every one of those is a plugin. Let's look at a typical example:
-First, the ``command_serve.plugin`` file:
+First, the ``serve.plugin`` file:
.. code-block:: ini
@@ -94,7 +96,7 @@ First, the ``command_serve.plugin`` file:
(and the .plugin file examples and explanations).
For your own plugin, just change the values in a sensible way. The
-``Module`` will be used to find the matching python module, in this case
+``Module`` will be used to find the matching Python module, in this case
``serve.py``, from which this is the interesting bit:
.. code-block:: python
@@ -104,7 +106,7 @@ For your own plugin, just change the values in a sensible way. The
# You have to inherit Command for this to be a
# command plugin:
- class CommandBuild(Command):
+ class CommandServe(Command):
"""Start test server."""
name = "serve"
@@ -272,9 +274,9 @@ These have access to the ``site`` object which contains your timeline and
your configuration.
The critical bit of Task plugins is their ``gen_tasks`` method, which ``yields``
-`doit tasks `_
+`doit tasks `_.
-The details of how to handle dependencies, etc. are a bit too much for this
+The details of how to handle dependencies, etc., are a bit too much for this
document, so I'll just leave you with an example, the ``copy_assets`` task.
First the ``task_copy_assets.plugin`` file, which you should copy and edit
in the logical ways:
@@ -371,7 +373,7 @@ SignalHandler Plugins
---------------------
These plugins extend the ``SignalHandler`` class and connect to one or more
-signals via `blinker `_
+signals via `blinker `_.
The easiest way to do this is to reimplement ``set_site()`` and just connect to
whatever signals you want there.
@@ -381,7 +383,7 @@ Currently Nikola emits the following signals:
``sighandlers_loaded``
Right after SignalHandler plugin activation.
``initialized``
- Right after plugin activation
+ Right after plugin activation.
``configured``
When all the configuration file is processed. Note that plugins are activated before this is emitted.
``new_post``
diff --git a/docs/getting-help.txt b/docs/getting-help.txt
index 9cad1b3..31edc8d 100644
--- a/docs/getting-help.txt
+++ b/docs/getting-help.txt
@@ -3,7 +3,7 @@
.. date: 1970-01-01 15:00:00
.. description: Get help using Nikola, or contact us.
-:Version: 6.3.0
+:Version: 6.4.0
.. class:: alert alert-info pull-right
diff --git a/docs/internals.txt b/docs/internals.txt
index 75e2a97..06a2747 100644
--- a/docs/internals.txt
+++ b/docs/internals.txt
@@ -8,6 +8,8 @@
Nikola Internals
================
+.. class:: lead
+
When trying to guide someone into adding a feature in Nikola, it hit me that
while the way it's structured makes sense **to me** it is far from obvious.
@@ -52,7 +54,7 @@ actions
What the task **does**. For example, convert a markdown document into HTML.
dependencies
- If this file changes, then we need to redo the actions. If this confguration
+ If this file changes, then we need to redo the actions. If this configuration
option changes, redo it, etc.
targets
@@ -90,7 +92,7 @@ Posts and Stories
Nikola has a concept of posts and stories. Both are more or less the same thing, except
posts are added into RSS feeds and stories are not. All of them are in a list called
-"the timeline" formed by objects of class ``Post``
+"the timeline" formed by objects of class ``Post``.
When you are creating a task that needs the list of posts and/or stories (for example,
the RSS creation plugin), your plugin should call ``self.site.scan_posts()`` to ensure
@@ -115,12 +117,12 @@ The workflow included with nikola is as follows (incomplete!):
fragment is stored in a cache (the ``posts`` plugin).
#. The configured theme has templates (and a template engine), which are applied to the post's
HTML fragment and metadata (the ``pages`` plugin).
-#. The original sources for the post are copied to some accessible place (the ``sources`` plugin)
-#. If the post is tagged, some pages and RSS feeds for each tag are updated (the ``tags`` plugin)
-#. If the post is new, it's included in the blog's RSS feed (the ``rss`` plugin)
-#. The post is added in the right place in the index pages for the blog (the ``indexes`` plugin)
-#. CSS/JS/Images for the theme are put in the right places (the ``copy_assets`` and ``bundles`` plugins)
-#. A File describing the whole site is created (the ``sitemap`` plugin)
+#. The original sources for the post are copied to some accessible place (the ``sources`` plugin).
+#. If the post is tagged, some pages and RSS feeds for each tag are updated (the ``tags`` plugin).
+#. If the post is new, it's included in the blog's RSS feed (the ``rss`` plugin).
+#. The post is added in the right place in the index pages for the blog (the ``indexes`` plugin).
+#. CSS/JS/Images for the theme are put in the right places (the ``copy_assets`` and ``bundles`` plugins).
+#. A File describing the whole site is created (the ``sitemap`` plugin).
You can add whatever you want to that list: just create a plugin for it.
diff --git a/docs/man/nikola.1 b/docs/man/nikola.1
index f794ccb..214a924 100644
--- a/docs/man/nikola.1
+++ b/docs/man/nikola.1
@@ -1,9 +1,9 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3.
-.TH NIKOLA "1" "January 2014" "nikola 6.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.44.1.
+.TH NIKOLA "1" "March 2014" "nikola 6.4.0" "User Commands"
.SH NAME
-nikola \- manual page for nikola 6.3.0
+nikola \- manual page for nikola 6.4.0
.SH DESCRIPTION
-Nikola is a tool to create static websites and blogs. For full documentation and more information, please visit http://getnikola.com
+Nikola is a tool to create static websites and blogs. For full documentation and more information, please visit http://getnikola.com/
.SS "Available commands:"
.TP
nikola auto
@@ -66,6 +66,9 @@ list tasks from dodo file
nikola mincss
apply mincss to the generated site
.TP
+nikola new_page
+create a new page in the site
+.TP
nikola new_post
create a new blog post or site page
.TP
diff --git a/docs/manual.txt b/docs/manual.txt
index d78b4f6..ea080bb 100644
--- a/docs/manual.txt
+++ b/docs/manual.txt
@@ -8,7 +8,7 @@
The Nikola Handbook
===================
-:Version: 6.3.0
+:Version: 6.4.0
.. class:: alert alert-info pull-right
@@ -203,16 +203,6 @@ of how to "get" something for your specific operating system are left to you.
The short version is: ``pip install nikola``
-If you are running Arch Linux, there are AUR packages, available in Python 2/3
-and stable/git master flavors: `python-nikola`__ / `python2-nikola`__ for the
-latest stable release or `python-nikola-git`__ / `python2-nikola-git`__ for the
-GitHub master. (only one package may be installed at the same time.)
-
-__ https://aur.archlinux.org/packages/python-nikola/
-__ https://aur.archlinux.org/packages/python2-nikola/
-__ https://aur.archlinux.org/packages/python-nikola-git/
-__ https://aur.archlinux.org/packages/python2-nikola-git/
-
Note that you need Python v2.6 or newer OR v3.3 or newer.
For some features it may give you an error message telling you that you need to
@@ -257,7 +247,16 @@ Longer version:
After that, run ``nikola init --demo sitename`` and that will create a folder called
``sitename`` containing a functional demo site.
-Nikola is packaged for some Linux distributions, you may get that instead.
+Nikola is packaged for some Linux distributions, you may get that instead. e.g.
+If you are running Arch Linux, there are AUR packages, available in Python 2/3
+and stable/git master flavors: `python-nikola`__ / `python2-nikola`__ for the
+latest stable release or `python-nikola-git`__ / `python2-nikola-git`__ for the
+GitHub master. (only one package may be installed at the same time.)
+
+__ https://aur.archlinux.org/packages/python-nikola/
+__ https://aur.archlinux.org/packages/python2-nikola/
+__ https://aur.archlinux.org/packages/python-nikola-git/
+__ https://aur.archlinux.org/packages/python2-nikola-git/
libxml/libxslt errors
~~~~~~~~~~~~~~~~~~~~~
@@ -310,10 +309,15 @@ Installation on Windows and Windows support
Nikola supports Windows! Keep in mind, though, that there are some
caveats:
-1. ``lxml`` and ``Pillow`` require compiled extensions. Compiling them on
-Windows is hard for most people. Fortunately, compiled packages exist. Check
-their `PyPI `_ pages to find official packages, `the unofficial Gohlke binaries `_ site, or get them somewhere else. If you are using virtualenvs, using those pre-built packages is possible through ``virtualenv --system-site-packages``.
-2. Windows has some differences over POSIX, which may cause some features to work incorrectly under Windows. If any problems occur, please do not hesitate to report them. Some of the differeces include:
+#. ``lxml`` and ``Pillow`` require compiled extensions. Compiling them on
+ Windows is hard for most people. Fortunately, compiled packages exist.
+ Check their `PyPI `_ pages to find official packages,
+ `the unofficial Gohlke binaries `_
+ site, or get them somewhere else. If you are using virtualenvs, using those
+ pre-built packages is possible through ``virtualenv --system-site-packages``.
+#. Windows has some differences over POSIX, which may cause some features to
+ work incorrectly under Windows. If any problems occur, please do not
+ hesitate to report them. Some of the differeces include:
* ``\`` as path separator (instead of ``/``)
* the concept of HDD partitions and letters (instead of
@@ -322,8 +326,8 @@ their `PyPI `_ pages to find official packages, `the u
problems)
* CR+LF (aka ``\r\n``) as the line separator (instead of LF ``\n``)
-3. Windows also dislikes some characters in paths.
-4. Most of our developers run Linux on a daily basis and may not have the full knowledge required to resolve issues relating to Windows.
+#. Most of our developers run Linux on a daily basis and may not have the full
+ knowledge required to resolve issues relating to Windows.
Getting Started
---------------
@@ -397,39 +401,41 @@ and even individual files like ``nikola build output/index.html``
Nikola also has other commands besides ``build``::
$ nikola help
- Nikola is a tool to create static websites and blogs. For full documentation and more information,
- please visit http://getnikola.com
-
-
- Available commands:
- nikola auto automatically detect site changes, rebuild and optionally refresh a browser
- nikola bootswatch_theme given a swatch name from bootswatch.com and a parent theme, creates a custom theme
- nikola build run tasks
- nikola check check links and files in the generated site
- nikola clean clean action / remove targets
- nikola console start an interactive python console with access to your site and configuration
- nikola deploy deploy the site
- nikola dumpdb dump dependency DB
- nikola forget clear successful run status from internal DB
- nikola help show help
- nikola ignore ignore task (skip) on subsequent runs
- nikola import_blogger import a blogger dump
- nikola import_feed import a RSS/Atom dump
- nikola import_wordpress import a WordPress dump
- nikola init create a Nikola site in the specified folder
- nikola install_theme install theme into current site
- nikola list list tasks from dodo file
- nikola mincss apply mincss to the generated site
- nikola new_post create a new blog post or site page
- nikola run run tasks
- nikola serve start the test webserver
- nikola strace use strace to list file_deps and targets
- nikola version print the Nikola version number
-
- nikola help show help / reference
- nikola help show command usage
- nikola help show task usage
-
+ Nikola is a tool to create static websites and blogs. For full documentation and more information, please visit http://getnikola.com/
+
+
+ Available commands:
+ nikola auto automatically detect site changes, rebuild and optionally refresh a browser
+ nikola bootswatch_theme given a swatch name from bootswatch.com and a parent theme, creates a custom theme
+ nikola build run tasks
+ nikola check check links and files in the generated site
+ nikola clean clean action / remove targets
+ nikola console start an interactive Python console with access to your site
+ nikola deploy deploy the site
+ nikola doit_auto automatically execute tasks when a dependency changes
+ nikola dumpdb dump dependency DB
+ nikola forget clear successful run status from internal DB
+ nikola help show help
+ nikola ignore ignore task (skip) on subsequent runs
+ nikola import_blogger import a blogger dump
+ nikola import_feed import a RSS/Atom dump
+ nikola import_wordpress import a WordPress dump
+ nikola init create a Nikola site in the specified folder
+ nikola install_plugin install plugin into current site
+ nikola install_theme install theme into current site
+ nikola list list tasks from dodo file
+ nikola mincss apply mincss to the generated site
+ nikola new_post create a new blog post or site page
+ nikola orphans list all orphans
+ nikola run run tasks
+ nikola serve start the test webserver
+ nikola strace use strace to list file_deps and targets
+ nikola tabcompletion generate script for tab-complention
+ nikola version print the Nikola version number
+
+ nikola help show help / reference
+ nikola help show command usage
+ nikola help show task usage
The ``serve`` command starts a web server so you can see the site you are creating::
@@ -496,7 +502,7 @@ The third line is the post's date, and is set to "now".
The other lines are optional. Tags are comma-separated. The ``link`` is an original
source for the content, and ``description`` is mostly useful for SEO.
``type`` is the post type, whatever you set here (prepended with ``post-``)
-will become a class of the `` element for this post. Defaults to
+will become a CSS class of the ```` element for this post. Defaults to
``text`` (resulting in a ``post-text`` class)
You can add your own metadata fields in the same manner, if you use a theme that
@@ -661,8 +667,10 @@ and ``PAGES`` configuration options::
("stories/*.rst", "stories", "story.tmpl"),
)
-It will use the first location that has the last item in ``POSTS``, or the last
-one in ``PAGES`` if ``POSTS`` is empty.
+``new_post`` will use the *first* path in ``POSTS`` (or ``PAGES`` if ``-p`` is
+supplied) that ends with the extension of your desired markup format (as
+defined in ``COMPILERS`` in conf.py) as the directory that the new post will be
+written into. If no such entry can be found, the post won’t be created.
The ``new_post`` command supports some options::
@@ -798,7 +806,7 @@ Post Types
Nikola supports specifying post types, just like Tumblr does. Post
types affect the look of your posts, by adding a ``post-YOURINPUTHERE``
-class to the post. Each post can have one and exactly one type. Nikola
+CSS class to the post. Each post can have one and exactly one type. Nikola
styles the following types in the default themes:
+-----------------+----------------------------+------------------+
@@ -870,26 +878,38 @@ There are lots of things you can do to personalize your website, but let's see
the easy ones!
CSS tweaking
- The default configuration includes a file, ``themes/default/assets/css/custom.css``
- which is empty. Put your CSS there, for minimal disruption of the provided CSS files.
+ Using the default configuration, you can create a ``assets/css/custom.css``
+ file and then it will be loaded from the ```` blocks of your site
+ pages. Create it and put your CSS code there, for minimal disruption of the
+ provided CSS files.
If you feel tempted to touch other files in assets, you probably will be better off
with a `custom theme `__.
+ If you want to use LESS_ or Sass_ for your custom CSS, or the theme you use
+ contains LESS or Sass code that you want to override, create a ``less`` or
+ ``sass`` directory in your site root, put your ``.less`` or ``.scss`` files
+ there and a targets file containing the files you want compiled. Any
+ ``.less`` or ``.scss`` files from the theme chain that you want to use will
+ need to be included in your files.
+
+.. _LESS: http://lesscss.org/
+.. _Sass: http://sass-lang.com/
+
Template tweaking
If you really want to change the pages radically, you will want to do a
`custom theme `__.
Navigation Links
- The 'NAVIGATION_LINKS' option lets you define what links go in a sidebar or menu
+ The ``NAVIGATION_LINKS`` option lets you define what links go in a sidebar or menu
(depending on your theme) so you can link to important pages, or to other sites.
The format is a language-indexed dictionary, where each element is a tuple of
tuples which are one of:
1. A (url, text) tuple, describing a link
- 2. A ((url, text), (url, text), (url, text), title) tuple, describing a submenu / sublist.
+ 2. A (((url, text), (url, text), (url, text)), title) tuple, describing a submenu / sublist.
Example::
@@ -1148,7 +1168,7 @@ You can apply post processing to the files in your site, in order to optimize th
or change them in arbitrary ways. For example, you may want to compress all CSS
and JS files using yui-compressor.
-To do that, you can use the provided helper adding this in your ``config.py``::
+To do that, you can use the provided helper adding this in your ``conf.py``::
from nikola import filters
diff --git a/docs/social_buttons.txt b/docs/social_buttons.txt
index 61260bc..de7fecf 100644
--- a/docs/social_buttons.txt
+++ b/docs/social_buttons.txt
@@ -8,7 +8,7 @@
Using Alternative Social Buttons with Nikola
============================================
-:Version: 6.3.0
+:Version: 6.4.0
.. class:: alert alert-info pull-right
diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py
index 26080aa..faf2db1 100644
--- a/docs/sphinx/conf.py
+++ b/docs/sphinx/conf.py
@@ -54,9 +54,9 @@ copyright = '2012-2014, The Nikola Contributors'
# built documents.
#
# The short X.Y version.
-version = '6.3.0'
+version = '6.4.0'
# The full version, including alpha/beta/rc tags.
-release = '6.3.0'
+release = '6.4.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/docs/theming.txt b/docs/theming.txt
index 1886741..b370948 100644
--- a/docs/theming.txt
+++ b/docs/theming.txt
@@ -8,13 +8,15 @@
Theming Nikola
==============
-:Version: 6.3.0
+:Version: 6.4.0
:Author: Roberto Alsina
.. class:: alert alert-info pull-right
.. contents::
+.. class:: lead
+
This document is a reference about themes. If you want a tutorial, please read
`Creating a Theme `_
@@ -127,7 +129,8 @@ These are the templates that come with the included themes:
This template handles comments. You should probably never touch it :-)
It uses a bunch of helper templates, one for each supported comment system:
``disqus_helper.tmpl`` ``facebook_helper.tmpl`` ``googleplus_helper.tmpl``
- ``intensedebate_helper.tmpl`` ``livefyre_helper.tmpl`` ``moot_helper.tmpl``
+ ``intensedebate_helper.tmpl`` ``isso_helper.tmpl`` ``livefyre_helper.tmpl``
+ ``moot_helper.tmpl``
``crumbs.tmpl`` ``slides.tmpl``
These templates help render specific UI items, and can be tweaked as needed.
diff --git a/docs/upgrading-to-v6.txt b/docs/upgrading-to-v6.txt
index adcad08..ab89614 100644
--- a/docs/upgrading-to-v6.txt
+++ b/docs/upgrading-to-v6.txt
@@ -8,7 +8,9 @@
Upgrading to v6
===============
-:Version: 6.3.0
+:Version: 6.4.0
+
+.. class:: lead
Nikola tries fairly hard to be compatible between versions. However, there were
a few areas which were getting clunky, and needed fxing. So, here's what you may
diff --git a/dodo.py b/dodo.py
index 7ad61d6..27c39fa 100644
--- a/dodo.py
+++ b/dodo.py
@@ -19,14 +19,10 @@ def recursive_glob(path, pattern):
def task_flake8():
"""flake8 - static check for python files"""
- for fname in recursive_glob('.', '*.py'):
- if fname.startswith('./cache'):
- continue
- yield {
- 'name': fname,
- 'actions': ['flake8 --ignore=E501 {0}'.format(fname)],
- 'file_dep': [fname],
- }
+ yield {
+ 'name': os.getcwd(),
+ 'actions': ['flake8 --ignore=E501 .'],
+ }
def task_locale():
@@ -64,7 +60,7 @@ def task_test():
"""run unit-tests using nose"""
return {
'task_dep': ['locale'],
- 'actions': ['nosetests'],
+ 'actions': ['nosetests --with-doctest --doctest-options=+NORMALIZE_WHITESPACE --logging-filter=-yapsy'],
}
diff --git a/nikola/__init__.py b/nikola/__init__.py
index 0a82198..787ce8e 100644
--- a/nikola/__init__.py
+++ b/nikola/__init__.py
@@ -27,7 +27,7 @@
from __future__ import absolute_import
import os
-__version__ = "6.3.0"
+__version__ = "6.4.0"
DEBUG = bool(os.getenv('NIKOLA_DEBUG'))
from .nikola import Nikola # NOQA
diff --git a/nikola/__main__.py b/nikola/__main__.py
index 6b549b4..715f5b3 100644
--- a/nikola/__main__.py
+++ b/nikola/__main__.py
@@ -60,6 +60,16 @@ def main(args):
quiet = True
global config
+ colorful = False
+ if sys.stderr.isatty():
+ colorful = True
+ try:
+ import colorama
+ colorama.init()
+ except ImportError:
+ if os.name == 'nt':
+ colorful = False
+
root = get_root_dir()
if root:
os.chdir(root)
@@ -76,6 +86,8 @@ def main(args):
sys.exit(1)
config = {}
+ config.update({'__colorful__': colorful})
+
site = Nikola(**config)
return DoitNikola(site, quiet).run(args)
@@ -86,7 +98,7 @@ class Help(DoitHelp):
@staticmethod
def print_usage(cmds):
"""print nikola "usage" (basic help) instructions"""
- print("Nikola is a tool to create static websites and blogs. For full documentation and more information, please visit http://getnikola.com\n\n")
+ print("Nikola is a tool to create static websites and blogs. For full documentation and more information, please visit http://getnikola.com/\n\n")
print("Available commands:")
for cmd in sorted(cmds.values(), key=attrgetter('name')):
print(" nikola %-*s %s" % (20, cmd.name, cmd.doc_purpose))
diff --git a/nikola/conf.py.in b/nikola/conf.py.in
index 6ae0e1d..b398ac3 100644
--- a/nikola/conf.py.in
+++ b/nikola/conf.py.in
@@ -4,21 +4,21 @@
from __future__ import unicode_literals
import time
-##############################################
-# Configuration, please edit
-##############################################
+#!! This is the configuration of Nikola. !!#
+#!! You should edit it to your liking. !!#
+
# Data about this site
-BLOG_AUTHOR = "${BLOG_AUTHOR}"
-BLOG_TITLE = "${BLOG_TITLE}"
+BLOG_AUTHOR = ${BLOG_AUTHOR}
+BLOG_TITLE = ${BLOG_TITLE}
# This is the main URL for your site. It will be used
# in a prominent link
-SITE_URL = "${SITE_URL}"
+SITE_URL = ${SITE_URL}
# This is the URL where nikola's output will be deployed.
# If not set, defaults to SITE_URL
-# BASE_URL = "${SITE_URL}"
-BLOG_EMAIL = "${BLOG_EMAIL}"
-BLOG_DESCRIPTION = "${BLOG_DESCRIPTION}"
+# BASE_URL = ${SITE_URL}
+BLOG_EMAIL = ${BLOG_EMAIL}
+BLOG_DESCRIPTION = ${BLOG_DESCRIPTION}
# Nikola is multilingual!
#
@@ -36,6 +36,7 @@ BLOG_DESCRIPTION = "${BLOG_DESCRIPTION}"
# fa Persian
# fi Finnish
# fr French
+# hi Hindi
# hr Croatian
# it Italian
# ja Japanese [NOT jp!]
@@ -51,12 +52,12 @@ BLOG_DESCRIPTION = "${BLOG_DESCRIPTION}"
#
# If you want to use Nikola with a non-supported language you have to provide
# a module containing the necessary translations
-# (cf. the modules at nikola/data/themes/base/messages/fr.py).
+# (cf. the modules at nikola/data/themes/base/messages/).
# If a specific post is not translated to a language, then the version
# in the default language will be shown instead.
# What is the default language?
-DEFAULT_LANG = "${DEFAULT_LANG}"
+DEFAULT_LANG = ${DEFAULT_LANG}
# What other languages do you have?
# The format is {"translationcode" : "path/to/translation" }
@@ -75,7 +76,7 @@ TRANSLATIONS = {
# this pattern is also used for metadata:
# something.meta -> something.meta.pl
-TRANSLATIONS_PATTERN = "{path}.{ext}.{lang}"
+TRANSLATIONS_PATTERN = ${TRANSLATIONS_PATTERN}
# If you don't want your Polish files to be considered Perl code, use this:
# TRANSLATIONS_PATTERN = "{path}.{lang}.{ext}"
@@ -172,7 +173,8 @@ COMPILERS = ${COMPILERS}
# the posts themselves. If set to False, it will be just a list of links.
# TAG_PAGES_ARE_INDEXES = True
-# Final location is output / TRANSLATION[lang] / INDEX_PATH / index-*.html
+# Final location for the main blog page and sibling paginated pages is
+# output / TRANSLATION[lang] / INDEX_PATH / index-*.html
# INDEX_PATH = ""
# Create per-month archives instead of per-year
@@ -192,7 +194,7 @@ COMPILERS = ${COMPILERS}
# absolute: a complete URL (that includes the SITE_URL)
# URL_TYPE = 'rel_path'
-# Final locations are:
+# Final location for the blog main RSS feed is:
# output / TRANSLATION[lang] / RSS_PATH / rss.xml
# RSS_PATH = ""
@@ -270,9 +272,17 @@ COMPILERS = ${COMPILERS}
# Compiler to process LESS files.
# LESS_COMPILER = 'lessc'
+# A list of options to pass to the LESS compiler.
+# Final command is: LESS_COMPILER LESS_OPTIONS file.less
+# LESS_OPTIONS = []
+
# Compiler to process Sass files.
# SASS_COMPILER = 'sass'
+# A list of options to pass to the Sass compiler.
+# Final command is: SASS_COMPILER SASS_OPTIONS file.s(a|c)ss
+# SASS_OPTIONS = []
+
# #############################################################################
# Image Gallery Options
# #############################################################################
@@ -301,7 +311,7 @@ COMPILERS = ${COMPILERS}
# the main (the newest) index page (index.html)
# Name of the theme to use.
-THEME = "${THEME}"
+THEME = ${THEME}
# Color scheme to be used for code blocks. If your theme provides
# "assets/css/code.css" this is ignored.
@@ -354,7 +364,6 @@ LICENSE = ""
# src="http://i.creativecommons.org/l/by-nc-sa/2.5/ar/88x31.png">"""
# A small copyright notice for the page footer (in HTML).
-# Default is ''
CONTENT_FOOTER = 'Contents © {date} \
{author} - Powered by \
Nikola \
@@ -367,12 +376,12 @@ CONTENT_FOOTER = CONTENT_FOOTER.format(email=BLOG_EMAIL,
# To use comments, you can choose between different third party comment
# systems, one of "disqus", "livefyre", "intensedebate", "moot",
# "googleplus", "facebook" or "isso"
-# COMMENT_SYSTEM = "disqus"
+# COMMENT_SYSTEM = ${COMMENT_SYSTEM}
# And you also need to add your COMMENT_SYSTEM_ID which
# depends on what comment system you use. The default is
# "nikolademo" which is a test account for Disqus. More information
# is in the manual.
-# COMMENT_SYSTEM_ID = "nikolademo"
+# COMMENT_SYSTEM_ID = ${COMMENT_SYSTEM_ID}
# Enable annotations using annotateit.org?
# If set to False, you can still enable them for individual posts and pages
@@ -572,9 +581,9 @@ CONTENT_FOOTER = CONTENT_FOOTER.format(email=BLOG_EMAIL,
# USE_CDN = False
# Extra things you want in the pages HEAD tag. This will be added right
-# before
+# before
# EXTRA_HEAD_DATA = ""
-# Google analytics or whatever else you use. Added to the bottom of
+# Google Analytics or whatever else you use. Added to the bottom of
# in the default template (base.tmpl).
# BODY_END = ""
@@ -680,7 +689,11 @@ LOGGING_HANDLERS = {
#}
}
+# Templates will use those filters, along with the defaults.
+# Consult your engine's documentation on filters if you need help defining
+# those.
+# TEMPLATE_FILTERS = {}
+
# Put in global_context things you want available on all your templates.
# It can be anything, data, functions, modules, etc.
-
GLOBAL_CONTEXT = {}
diff --git a/nikola/data/themes/base/messages/messages_bg.py b/nikola/data/themes/base/messages/messages_bg.py
index d4881b5..6e85212 100644
--- a/nikola/data/themes/base/messages/messages_bg.py
+++ b/nikola/data/themes/base/messages/messages_bg.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Още публикации относно",
"Newer posts": "Нови публикации",
"Next post": "Следваща публикация",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Стари публикации",
"Original site": "Оригиналния сайт",
"Posted": "Публиковано",
diff --git a/nikola/data/themes/base/messages/messages_ca.py b/nikola/data/themes/base/messages/messages_ca.py
index d3a97b5..220d571 100644
--- a/nikola/data/themes/base/messages/messages_ca.py
+++ b/nikola/data/themes/base/messages/messages_ca.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Més entrades sobre",
"Newer posts": "Entrades posteriors",
"Next post": "Entrada següent",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Entrades anteriors",
"Original site": "Lloc original",
"Posted": "Publicat",
diff --git a/nikola/data/themes/base/messages/messages_cs.py b/nikola/data/themes/base/messages/messages_cs.py
index 33482b5..f66c2c4 100644
--- a/nikola/data/themes/base/messages/messages_cs.py
+++ b/nikola/data/themes/base/messages/messages_cs.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Další příspěvky o",
"Newer posts": "Novější příspěvky",
"Next post": "Další příspěvek",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Starší příspěvky",
"Original site": "Původní stránka",
"Posted": "Zveřejněno",
diff --git a/nikola/data/themes/base/messages/messages_de.py b/nikola/data/themes/base/messages/messages_de.py
index 6795031..41fe015 100644
--- a/nikola/data/themes/base/messages/messages_de.py
+++ b/nikola/data/themes/base/messages/messages_de.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Weitere Einträge über",
"Newer posts": "Neuere Einträge",
"Next post": "Nächster Eintrag",
+ "No posts found.": "Keine einträge gefunden.",
+ "Nothing found.": "Nichts gefunden.",
"Older posts": "Ältere Einträge",
"Original site": "Original-Seite",
"Posted": "Veröffentlicht",
diff --git a/nikola/data/themes/base/messages/messages_el.py b/nikola/data/themes/base/messages/messages_el.py
index 710558b..f658fa0 100644
--- a/nikola/data/themes/base/messages/messages_el.py
+++ b/nikola/data/themes/base/messages/messages_el.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Περισσότερες αναρτήσεις για",
"Newer posts": "Νεότερες αναρτήσεις",
"Next post": "Επόμενη ανάρτηση",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Παλαιότερες αναρτήσεις",
"Original site": "Ιστοσελίδα αρχικής ανάρτησης",
"Posted": "Αναρτήθηκε",
diff --git a/nikola/data/themes/base/messages/messages_en.py b/nikola/data/themes/base/messages/messages_en.py
index 021f5e7..e2bff53 100644
--- a/nikola/data/themes/base/messages/messages_en.py
+++ b/nikola/data/themes/base/messages/messages_en.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "More posts about",
"Newer posts": "Newer posts",
"Next post": "Next post",
+ "No posts found.": "No posts found.",
+ "Nothing found.": "Nothing found.",
"Older posts": "Older posts",
"Original site": "Original site",
"Posted": "Posted",
diff --git a/nikola/data/themes/base/messages/messages_eo.py b/nikola/data/themes/base/messages/messages_eo.py
index fdbea88..f59a441 100644
--- a/nikola/data/themes/base/messages/messages_eo.py
+++ b/nikola/data/themes/base/messages/messages_eo.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Pli artikoloj pri",
"Newer posts": "Pli novaj artikoloj",
"Next post": "Venonta artikolo",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Pli malnovaj artikoloj",
"Original site": "Originala interretejo",
"Posted": "Skribita",
diff --git a/nikola/data/themes/base/messages/messages_es.py b/nikola/data/themes/base/messages/messages_es.py
index 6c48fb9..1923683 100644
--- a/nikola/data/themes/base/messages/messages_es.py
+++ b/nikola/data/themes/base/messages/messages_es.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Más posts sobre",
"Newer posts": "Posts posteriores",
"Next post": "Siguiente post",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Posts anteriores",
"Original site": "Sitio original",
"Posted": "Publicado",
diff --git a/nikola/data/themes/base/messages/messages_et.py b/nikola/data/themes/base/messages/messages_et.py
index 314f3b8..058ab5f 100644
--- a/nikola/data/themes/base/messages/messages_et.py
+++ b/nikola/data/themes/base/messages/messages_et.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Veel postitusi kohta",
"Newer posts": "Uued postitused",
"Next post": "Järgmine postitus",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Vanemad postitused",
"Original site": "Algallikas",
"Posted": "Postitatud",
diff --git a/nikola/data/themes/base/messages/messages_eu.py b/nikola/data/themes/base/messages/messages_eu.py
index 18d7575..a8eb743 100644
--- a/nikola/data/themes/base/messages/messages_eu.py
+++ b/nikola/data/themes/base/messages/messages_eu.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "-ri buruzko post gehiago",
"Newer posts": "Post berrienak",
"Next post": "Hurrengo posta",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Post zaharrenak",
"Original site": "Jatorrizko orria",
"Posted": "Argitaratuta",
diff --git a/nikola/data/themes/base/messages/messages_fa.py b/nikola/data/themes/base/messages/messages_fa.py
index bd278ca..4475e1b 100644
--- a/nikola/data/themes/base/messages/messages_fa.py
+++ b/nikola/data/themes/base/messages/messages_fa.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "ارسالهای بیشتر دربارهٔ",
"Newer posts": "ارسالهای جدیدتر",
"Next post": "ارسال بعدی",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "پستهای قدیمیتر",
"Original site": "سایت اصلی",
"Posted": "ارسال شده",
diff --git a/nikola/data/themes/base/messages/messages_fi.py b/nikola/data/themes/base/messages/messages_fi.py
index b24ee2c..42e6fa2 100644
--- a/nikola/data/themes/base/messages/messages_fi.py
+++ b/nikola/data/themes/base/messages/messages_fi.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Lisää postauksia aiheesta",
"Newer posts": "Uudempia postauksia",
"Next post": "Seuraava postaus",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Vanhempia postauksia",
"Original site": "Alkuperäinen sivusto",
"Posted": "Postattu",
diff --git a/nikola/data/themes/base/messages/messages_fr.py b/nikola/data/themes/base/messages/messages_fr.py
index ad4aea0..484d695 100644
--- a/nikola/data/themes/base/messages/messages_fr.py
+++ b/nikola/data/themes/base/messages/messages_fr.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Plus d'articles sur",
"Newer posts": "Billets récents",
"Next post": "Article suivant",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Anciens articles",
"Original site": "Site d'origine",
"Posted": "Publié",
diff --git a/nikola/data/themes/base/messages/messages_hi.py b/nikola/data/themes/base/messages/messages_hi.py
new file mode 100644
index 0000000..f72d5af
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_hi.py
@@ -0,0 +1,31 @@
+# -*- encoding:utf-8 -*-
+from __future__ import unicode_literals
+
+MESSAGES = {
+ "Also available in": "उपलब्ध भाषाएँ",
+ "Also available in:": "उपलब्ध भाषाएँ:",
+ "Archive": "आर्काइव",
+ "Categories": "श्रेणियाँ",
+ "LANGUAGE": "हिन्दी",
+ "More posts about %s": "%s के बारे में अौर पोस्टें",
+ "More posts about": " के बारे में अौर पोस्टें",
+ "Newer posts": "नई पोस्टें",
+ "Next post": "अगली पोस्ट",
+ "No posts found.": "",
+ "Nothing found.": "",
+ "Older posts": "पुरानी पोस्टें",
+ "Original site": "असली साइट",
+ "Posted": "पोस्टेड",
+ "Posted:": "पोस्टेड:",
+ "Posts about %s": "%s के बारे में पोस्टें",
+ "Posts for year %s": "साल %s की पोस्टें",
+ "Posts for {month} {year}": "{month} {year} की पोस्टें",
+ "Previous post": "पिछली पोस्ट",
+ "Read in English": "हिन्दी में पढ़िए",
+ "Read more": "और पढ़िए",
+ "Source": "सोर्स",
+ "Tags and Categories": "टैग्स और श्रेणियाँ",
+ "Tags": "टैग्स",
+ "old posts, page %d": "पुरानी पोस्टें, पृष्ठ %d",
+ "page %d": "पृष्ठ %d",
+}
diff --git a/nikola/data/themes/base/messages/messages_hr.py b/nikola/data/themes/base/messages/messages_hr.py
index ad74078..ee5ce41 100644
--- a/nikola/data/themes/base/messages/messages_hr.py
+++ b/nikola/data/themes/base/messages/messages_hr.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Više postova o",
"Newer posts": "Noviji postovi",
"Next post": "Sljedeći post",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Stariji postovi",
"Original site": "Izvorna stranica",
"Posted": "Objavljeno",
diff --git a/nikola/data/themes/base/messages/messages_it.py b/nikola/data/themes/base/messages/messages_it.py
index 912342e..87e25e5 100644
--- a/nikola/data/themes/base/messages/messages_it.py
+++ b/nikola/data/themes/base/messages/messages_it.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Altri articoli collegati",
"Newer posts": "Articoli recenti",
"Next post": "Articolo successivo",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Articoli precedenti",
"Original site": "Sito originale",
"Posted": "Pubblicato",
diff --git a/nikola/data/themes/base/messages/messages_ja.py b/nikola/data/themes/base/messages/messages_ja.py
index 1bdf168..2df16a4 100644
--- a/nikola/data/themes/base/messages/messages_ja.py
+++ b/nikola/data/themes/base/messages/messages_ja.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "タグ:",
"Newer posts": "新しい記事",
"Next post": "次の記事",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "過去の記事",
"Original site": "元のサイト",
"Posted": "投稿日時",
diff --git a/nikola/data/themes/base/messages/messages_nb.py b/nikola/data/themes/base/messages/messages_nb.py
index 154e329..44fde8a 100644
--- a/nikola/data/themes/base/messages/messages_nb.py
+++ b/nikola/data/themes/base/messages/messages_nb.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Flere innlegg om",
"Newer posts": "Nyere innlegg",
"Next post": "Neste innlegg",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Eldre innlegg",
"Original site": "Opprinnelig side",
"Posted": "Publisert",
diff --git a/nikola/data/themes/base/messages/messages_nl.py b/nikola/data/themes/base/messages/messages_nl.py
index 887e85f..1952d2e 100644
--- a/nikola/data/themes/base/messages/messages_nl.py
+++ b/nikola/data/themes/base/messages/messages_nl.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Meer berichten over",
"Newer posts": "Nieuwere berichten",
"Next post": "Volgend bericht",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Oudere berichten",
"Original site": "Originele site",
"Posted": "Geplaatst",
diff --git a/nikola/data/themes/base/messages/messages_pl.py b/nikola/data/themes/base/messages/messages_pl.py
index 352b0ed..a1183ba 100644
--- a/nikola/data/themes/base/messages/messages_pl.py
+++ b/nikola/data/themes/base/messages/messages_pl.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Więcej postów o",
"Newer posts": "Nowsze posty",
"Next post": "Następny post",
+ "No posts found.": "Nie znaleziono żadnych postów.",
+ "Nothing found.": "Nic nie znaleziono.",
"Older posts": "Starsze posty",
"Original site": "Oryginalna strona",
"Posted": "Opublikowano",
diff --git a/nikola/data/themes/base/messages/messages_pt_br.py b/nikola/data/themes/base/messages/messages_pt_br.py
index 1283a2a..bf515e4 100644
--- a/nikola/data/themes/base/messages/messages_pt_br.py
+++ b/nikola/data/themes/base/messages/messages_pt_br.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Mais posts sobre",
"Newer posts": "Posts mais recentes",
"Next post": "Próximo post",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Posts mais antigos",
"Original site": "Site original",
"Posted": "Publicado",
diff --git a/nikola/data/themes/base/messages/messages_ru.py b/nikola/data/themes/base/messages/messages_ru.py
index 3462292..fb33b85 100644
--- a/nikola/data/themes/base/messages/messages_ru.py
+++ b/nikola/data/themes/base/messages/messages_ru.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Больше записей о",
"Newer posts": "Новые записи",
"Next post": "Следующая запись",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Старые записи",
"Original site": "Оригинальный сайт",
"Posted": "Опубликовано",
diff --git a/nikola/data/themes/base/messages/messages_sl.py b/nikola/data/themes/base/messages/messages_sl.py
index 817bcee..92ad483 100644
--- a/nikola/data/themes/base/messages/messages_sl.py
+++ b/nikola/data/themes/base/messages/messages_sl.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "Več objav o",
"Newer posts": "Novejše objave",
"Next post": "Naslednja objava",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Starejše objave",
"Original site": "Izvorna spletna stran",
"Posted": "Objavljeno",
diff --git a/nikola/data/themes/base/messages/messages_tr_tr.py b/nikola/data/themes/base/messages/messages_tr_tr.py
index 633f057..95c5736 100644
--- a/nikola/data/themes/base/messages/messages_tr_tr.py
+++ b/nikola/data/themes/base/messages/messages_tr_tr.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": " ilgili diğer yazılar",
"Newer posts": "Daha yeni yazılar",
"Next post": "Sonraki yazı",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "Daha eski yazılar",
"Original site": "Orjinal web sayfası",
"Posted": "Yayın tarihi",
diff --git a/nikola/data/themes/base/messages/messages_ur.py b/nikola/data/themes/base/messages/messages_ur.py
index d9c2f2b..794861d 100644
--- a/nikola/data/themes/base/messages/messages_ur.py
+++ b/nikola/data/themes/base/messages/messages_ur.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": " کے بارے میں مزید تحاریر",
"Newer posts": "نئی تحاریر",
"Next post": "اگلی تحریر",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "پرانی تحاریر",
"Original site": "اصلی سائٹ",
"Posted": "اشاعت",
@@ -25,5 +27,5 @@ MESSAGES = {
"Tags and Categories": "ٹیگز اور زمرے",
"Tags": "ٹیگز",
"old posts, page %d": "پرانی تحاریر صفحہ %d",
- "page %d": "",
+ "page %d": "صفحہ %d",
}
diff --git a/nikola/data/themes/base/messages/messages_zh_cn.py b/nikola/data/themes/base/messages/messages_zh_cn.py
index cb9a2f7..2f937c7 100644
--- a/nikola/data/themes/base/messages/messages_zh_cn.py
+++ b/nikola/data/themes/base/messages/messages_zh_cn.py
@@ -11,6 +11,8 @@ MESSAGES = {
"More posts about": "更多相关文章:",
"Newer posts": "新一篇",
"Next post": "后一篇",
+ "No posts found.": "",
+ "Nothing found.": "",
"Older posts": "旧一篇",
"Original site": "原文地址",
"Posted": "发表于",
diff --git a/nikola/data/themes/base/templates/base.tmpl b/nikola/data/themes/base/templates/base.tmpl
index 7c6cc35..8a90349 100644
--- a/nikola/data/themes/base/templates/base.tmpl
+++ b/nikola/data/themes/base/templates/base.tmpl
@@ -30,11 +30,16 @@ lang="${lang}">
${content_footer}
+ %if license:
- ${license}
+ %endif
${base.html_social()}
${base.html_navigation_links()}
+ %if search_form:
- ${search_form}
+ %endif
${base.late_load_js()}
${social_buttons_code}
+
diff --git a/nikola/data/themes/base/templates/base_helper.tmpl b/nikola/data/themes/base/templates/base_helper.tmpl
index 880a998..501c06e 100644
--- a/nikola/data/themes/base/templates/base_helper.tmpl
+++ b/nikola/data/themes/base/templates/base_helper.tmpl
@@ -21,7 +21,9 @@
%endif
%endif
-
+ %if permalink:
+
+ %endif
diff --git a/nikola/data/themes/base/templates/crumbs.tmpl b/nikola/data/themes/base/templates/crumbs.tmpl
index c458cbe..8fbafcf 100644
--- a/nikola/data/themes/base/templates/crumbs.tmpl
+++ b/nikola/data/themes/base/templates/crumbs.tmpl
@@ -1,9 +1,11 @@
## -*- coding: utf-8 -*-
<%def name="bar(crumbs)">
+%if crumbs:
% for link, text in crumbs:
- ${text}
% endfor
+%endif
%def>
diff --git a/nikola/data/themes/base/templates/gallery.tmpl b/nikola/data/themes/base/templates/gallery.tmpl
index e4eab27..731a75a 100644
--- a/nikola/data/themes/base/templates/gallery.tmpl
+++ b/nikola/data/themes/base/templates/gallery.tmpl
@@ -14,18 +14,22 @@
${text}
%endif
+ %if folders:
% for folder, ftitle in folders:
- ${ftitle}
% endfor
+ %endif
+ %if photo_array:
%for image in photo_array:
-
%endfor
+ %endif
%if enable_comments:
${comments.comment_form(None, permalink, title)}
%endif
diff --git a/nikola/data/themes/base/templates/index_helper.tmpl b/nikola/data/themes/base/templates/index_helper.tmpl
old mode 100755
new mode 100644
index 56f5127..c925559
--- a/nikola/data/themes/base/templates/index_helper.tmpl
+++ b/nikola/data/themes/base/templates/index_helper.tmpl
@@ -20,6 +20,11 @@
<%def name="mathjax_script(posts)">
%if any(post.is_mathjax for post in posts):
+
%endif
%def>
diff --git a/nikola/data/themes/base/templates/list.tmpl b/nikola/data/themes/base/templates/list.tmpl
index a60b508..4136eb9 100644
--- a/nikola/data/themes/base/templates/list.tmpl
+++ b/nikola/data/themes/base/templates/list.tmpl
@@ -4,11 +4,13 @@
${title}
+ %if items:
% for text, link in items:
- ${text}
% endfor
+ %endif
%block>
diff --git a/nikola/data/themes/base/templates/list_post.tmpl b/nikola/data/themes/base/templates/list_post.tmpl
index f0e159d..b27f230 100644
--- a/nikola/data/themes/base/templates/list_post.tmpl
+++ b/nikola/data/themes/base/templates/list_post.tmpl
@@ -4,11 +4,13 @@
${title}
+ %if posts:
+ %endif
%block>
diff --git a/nikola/data/themes/base/templates/listing.tmpl b/nikola/data/themes/base/templates/listing.tmpl
index b6ca83f..0662360 100644
--- a/nikola/data/themes/base/templates/listing.tmpl
+++ b/nikola/data/themes/base/templates/listing.tmpl
@@ -3,6 +3,7 @@
<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
<%block name="content">
${ui.bar(crumbs)}
+%if folders or files:
% for name in folders:
- ${name}
@@ -11,6 +12,7 @@ ${ui.bar(crumbs)}
- ${name}
% endfor
+%endif
% if code:
${code}
% endif
diff --git a/nikola/data/themes/base/templates/post_helper.tmpl b/nikola/data/themes/base/templates/post_helper.tmpl
old mode 100755
new mode 100644
index 69784ea..391350d
--- a/nikola/data/themes/base/templates/post_helper.tmpl
+++ b/nikola/data/themes/base/templates/post_helper.tmpl
@@ -85,6 +85,11 @@
<%def name="mathjax_script(post)">
%if post.is_mathjax:
+
%endif
%def>
diff --git a/nikola/data/themes/base/templates/post_list_directive.tmpl b/nikola/data/themes/base/templates/post_list_directive.tmpl
index 3345ae4..b31d242 100644
--- a/nikola/data/themes/base/templates/post_list_directive.tmpl
+++ b/nikola/data/themes/base/templates/post_list_directive.tmpl
@@ -1,6 +1,7 @@
## -*- coding: utf-8 -*-
+ %if posts:
% for post in posts:
-
@@ -10,5 +11,6 @@
% endfor
+ %endif
diff --git a/nikola/data/themes/base/templates/tag.tmpl b/nikola/data/themes/base/templates/tag.tmpl
index 2ca9db4..43afd54 100644
--- a/nikola/data/themes/base/templates/tag.tmpl
+++ b/nikola/data/themes/base/templates/tag.tmpl
@@ -22,11 +22,13 @@
RSS
%endif
+ %if posts:
+ %endif
%block>
diff --git a/nikola/data/themes/bootstrap/templates/base.tmpl b/nikola/data/themes/bootstrap/templates/base.tmpl
index 8cb2e43..65132b7 100644
--- a/nikola/data/themes/bootstrap/templates/base.tmpl
+++ b/nikola/data/themes/bootstrap/templates/base.tmpl
@@ -91,3 +91,4 @@ ${base.html_social()}
% endif
${body_end}