aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/data
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/data')
-rw-r--r--nikola/data/samplesite/galleries/demo/metadata.sample.yml13
-rw-r--r--nikola/data/samplesite/listings/hello.py1
-rw-r--r--nikola/data/samplesite/pages/bootstrap-demo.rst2
-rw-r--r--nikola/data/samplesite/pages/charts.rst (renamed from nikola/data/samplesite/pages/charts.txt)0
l---------nikola/data/samplesite/pages/creating-a-theme.rst2
-rw-r--r--nikola/data/samplesite/pages/dr-nikolas-vendetta.rst936
l---------nikola/data/samplesite/pages/extending.rst1
l---------nikola/data/samplesite/pages/extending.txt1
l---------nikola/data/samplesite/pages/internals.rst1
l---------nikola/data/samplesite/pages/internals.txt1
l---------nikola/data/samplesite/pages/manual.rst2
l---------nikola/data/samplesite/pages/path_handlers.rst1
l---------nikola/data/samplesite/pages/path_handlers.txt1
-rw-r--r--nikola/data/samplesite/pages/quickref.rst6
-rw-r--r--nikola/data/samplesite/pages/quickstart.rst31
-rw-r--r--nikola/data/samplesite/pages/slides-demo.rst17
l---------nikola/data/samplesite/pages/social_buttons.rst1
l---------nikola/data/samplesite/pages/social_buttons.txt1
l---------nikola/data/samplesite/pages/theming.rst2
-rw-r--r--nikola/data/samplesite/posts/1.rst1
-rw-r--r--nikola/data/symlinked.txt167
-rw-r--r--nikola/data/themes/base-jinja/AUTHORS.txt1
-rw-r--r--nikola/data/themes/base-jinja/base-jinja.theme10
-rw-r--r--nikola/data/themes/base-jinja/engine1
-rw-r--r--nikola/data/themes/base-jinja/parent1
-rw-r--r--nikola/data/themes/base-jinja/templates/archive.tmpl1
-rw-r--r--nikola/data/themes/base-jinja/templates/archive_navigation_helper.tmpl27
-rw-r--r--nikola/data/themes/base-jinja/templates/archiveindex.tmpl21
-rw-r--r--nikola/data/themes/base-jinja/templates/author.tmpl33
-rw-r--r--nikola/data/themes/base-jinja/templates/authorindex.tmpl22
-rw-r--r--nikola/data/themes/base-jinja/templates/authors.tmpl8
-rw-r--r--nikola/data/themes/base-jinja/templates/base.tmpl25
-rw-r--r--nikola/data/themes/base-jinja/templates/base_footer.tmpl1
-rw-r--r--nikola/data/themes/base-jinja/templates/base_header.tmpl21
-rw-r--r--nikola/data/themes/base-jinja/templates/base_helper.tmpl94
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper.tmpl28
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_commento.tmpl13
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl2
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_googleplus.tmpl17
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_intensedebate.tmpl4
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_isso.tmpl14
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_livefyre.tmpl33
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_mustache.tmpl5
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_utterances.tmpl23
-rw-r--r--nikola/data/themes/base-jinja/templates/feeds_translations_helper.tmpl124
-rw-r--r--nikola/data/themes/base-jinja/templates/gallery.tmpl82
-rw-r--r--nikola/data/themes/base-jinja/templates/index.tmpl33
-rw-r--r--nikola/data/themes/base-jinja/templates/index_helper.tmpl31
-rw-r--r--nikola/data/themes/base-jinja/templates/list.tmpl8
-rw-r--r--nikola/data/themes/base-jinja/templates/list_post.tmpl8
-rw-r--r--nikola/data/themes/base-jinja/templates/listing.tmpl10
-rw-r--r--nikola/data/themes/base-jinja/templates/math_helper.tmpl69
-rw-r--r--nikola/data/themes/base-jinja/templates/page.tmpl1
-rw-r--r--nikola/data/themes/base-jinja/templates/pagination_helper.tmpl16
-rw-r--r--nikola/data/themes/base-jinja/templates/post.tmpl9
-rw-r--r--nikola/data/themes/base-jinja/templates/post_header.tmpl25
-rw-r--r--nikola/data/themes/base-jinja/templates/post_helper.tmpl63
-rw-r--r--nikola/data/themes/base-jinja/templates/sectionindex.tmpl21
-rw-r--r--nikola/data/themes/base-jinja/templates/slides.tmpl24
-rw-r--r--nikola/data/themes/base-jinja/templates/story.tmpl3
-rw-r--r--nikola/data/themes/base-jinja/templates/tag.tmpl34
-rw-r--r--nikola/data/themes/base-jinja/templates/tagindex.tmpl13
-rw-r--r--nikola/data/themes/base-jinja/templates/tags.tmpl8
-rw-r--r--nikola/data/themes/base-jinja/templates/ui_helper.tmpl (renamed from nikola/data/themes/base-jinja/templates/crumbs.tmpl)3
l---------nikola/data/themes/base/assets/css/baguetteBox.min.css1
-rw-r--r--nikola/data/themes/base/assets/css/html4css1.css1
-rw-r--r--nikola/data/themes/base/assets/css/ipython.min.css4
-rw-r--r--nikola/data/themes/base/assets/css/ipython.min.css.map1
-rw-r--r--nikola/data/themes/base/assets/css/nikola_ipython.css70
-rw-r--r--nikola/data/themes/base/assets/css/nikola_rst.css79
-rw-r--r--nikola/data/themes/base/assets/css/rst.css332
-rw-r--r--nikola/data/themes/base/assets/css/rst_base.css474
-rw-r--r--nikola/data/themes/base/assets/css/theme.css79
l---------nikola/data/themes/base/assets/js/baguetteBox.min.js1
-rw-r--r--nikola/data/themes/base/assets/js/fancydates.js22
-rw-r--r--nikola/data/themes/base/assets/js/fancydates.min.js1
-rw-r--r--nikola/data/themes/base/assets/js/gallery.js32
-rw-r--r--nikola/data/themes/base/assets/js/gallery.min.js1
l---------[-rw-r--r--]nikola/data/themes/base/assets/js/html5.js9
l---------nikola/data/themes/base/assets/js/html5shiv-printshiv.min.js1
l---------nikola/data/themes/base/assets/js/justified-layout.min.js1
l---------nikola/data/themes/base/assets/js/luxon.min.js1
l---------nikola/data/themes/base/assets/js/moment-with-locales.min.js1
-rw-r--r--nikola/data/themes/base/base.theme9
-rw-r--r--nikola/data/themes/base/bundles21
-rw-r--r--nikola/data/themes/base/engine1
-rw-r--r--nikola/data/themes/base/messages/messages_af.py49
-rw-r--r--nikola/data/themes/base/messages/messages_ar.py39
-rw-r--r--nikola/data/themes/base/messages/messages_az.py13
-rw-r--r--nikola/data/themes/base/messages/messages_bg.py11
-rw-r--r--nikola/data/themes/base/messages/messages_br.py (renamed from nikola/data/themes/base/messages/messages_fil.py)11
-rw-r--r--nikola/data/themes/base/messages/messages_bs.py11
-rw-r--r--nikola/data/themes/base/messages/messages_ca.py43
-rw-r--r--nikola/data/themes/base/messages/messages_cs.py11
-rw-r--r--nikola/data/themes/base/messages/messages_da.py11
-rw-r--r--nikola/data/themes/base/messages/messages_de.py13
-rw-r--r--nikola/data/themes/base/messages/messages_el.py11
-rw-r--r--nikola/data/themes/base/messages/messages_en.py11
-rw-r--r--nikola/data/themes/base/messages/messages_eo.py11
-rw-r--r--nikola/data/themes/base/messages/messages_es.py11
-rw-r--r--nikola/data/themes/base/messages/messages_et.py45
-rw-r--r--nikola/data/themes/base/messages/messages_eu.py17
-rw-r--r--nikola/data/themes/base/messages/messages_fa.py11
-rw-r--r--nikola/data/themes/base/messages/messages_fi.py39
-rw-r--r--nikola/data/themes/base/messages/messages_fr.py13
-rw-r--r--nikola/data/themes/base/messages/messages_fur.py49
-rw-r--r--nikola/data/themes/base/messages/messages_gl.py15
-rw-r--r--nikola/data/themes/base/messages/messages_he.py25
-rw-r--r--nikola/data/themes/base/messages/messages_hi.py51
-rw-r--r--nikola/data/themes/base/messages/messages_hr.py11
-rw-r--r--nikola/data/themes/base/messages/messages_hu.py11
-rw-r--r--nikola/data/themes/base/messages/messages_ia.py49
-rw-r--r--nikola/data/themes/base/messages/messages_id.py13
-rw-r--r--nikola/data/themes/base/messages/messages_it.py15
-rw-r--r--nikola/data/themes/base/messages/messages_ja.py41
-rw-r--r--nikola/data/themes/base/messages/messages_ko.py13
-rw-r--r--nikola/data/themes/base/messages/messages_lt.py11
-rw-r--r--nikola/data/themes/base/messages/messages_mi.py49
-rw-r--r--nikola/data/themes/base/messages/messages_ml.py49
-rw-r--r--nikola/data/themes/base/messages/messages_mr.py49
-rw-r--r--nikola/data/themes/base/messages/messages_nb.py11
-rw-r--r--nikola/data/themes/base/messages/messages_nl.py11
-rw-r--r--nikola/data/themes/base/messages/messages_pa.py13
-rw-r--r--nikola/data/themes/base/messages/messages_pl.py11
-rw-r--r--nikola/data/themes/base/messages/messages_pt.py21
-rw-r--r--nikola/data/themes/base/messages/messages_pt_br.py11
-rw-r--r--nikola/data/themes/base/messages/messages_ru.py13
-rw-r--r--nikola/data/themes/base/messages/messages_si_lk.py44
-rw-r--r--nikola/data/themes/base/messages/messages_sk.py21
-rw-r--r--nikola/data/themes/base/messages/messages_sl.py11
-rw-r--r--nikola/data/themes/base/messages/messages_sq.py11
-rw-r--r--nikola/data/themes/base/messages/messages_sr.py11
-rw-r--r--nikola/data/themes/base/messages/messages_sr_latin.py11
-rw-r--r--nikola/data/themes/base/messages/messages_sv.py11
-rw-r--r--nikola/data/themes/base/messages/messages_te.py23
-rw-r--r--nikola/data/themes/base/messages/messages_th.py49
-rw-r--r--nikola/data/themes/base/messages/messages_tl.py44
-rw-r--r--nikola/data/themes/base/messages/messages_tr.py11
-rw-r--r--nikola/data/themes/base/messages/messages_uk.py17
-rw-r--r--nikola/data/themes/base/messages/messages_ur.py13
-rw-r--r--nikola/data/themes/base/messages/messages_vi.py49
-rw-r--r--nikola/data/themes/base/messages/messages_zh_cn.py41
-rw-r--r--nikola/data/themes/base/messages/messages_zh_tw.py11
-rw-r--r--nikola/data/themes/base/templates/archive.tmpl1
-rw-r--r--nikola/data/themes/base/templates/archive_navigation_helper.tmpl27
-rw-r--r--nikola/data/themes/base/templates/archiveindex.tmpl21
-rw-r--r--nikola/data/themes/base/templates/author.tmpl33
-rw-r--r--nikola/data/themes/base/templates/authorindex.tmpl22
-rw-r--r--nikola/data/themes/base/templates/authors.tmpl8
-rw-r--r--nikola/data/themes/base/templates/base.tmpl25
-rw-r--r--nikola/data/themes/base/templates/base_footer.tmpl1
-rw-r--r--nikola/data/themes/base/templates/base_header.tmpl21
-rw-r--r--nikola/data/themes/base/templates/base_helper.tmpl94
-rw-r--r--nikola/data/themes/base/templates/comments_helper.tmpl28
-rw-r--r--nikola/data/themes/base/templates/comments_helper_commento.tmpl13
-rw-r--r--nikola/data/themes/base/templates/comments_helper_disqus.tmpl2
-rw-r--r--nikola/data/themes/base/templates/comments_helper_googleplus.tmpl17
-rw-r--r--nikola/data/themes/base/templates/comments_helper_intensedebate.tmpl4
-rw-r--r--nikola/data/themes/base/templates/comments_helper_isso.tmpl14
-rw-r--r--nikola/data/themes/base/templates/comments_helper_livefyre.tmpl33
-rw-r--r--nikola/data/themes/base/templates/comments_helper_mustache.tmpl5
-rw-r--r--nikola/data/themes/base/templates/comments_helper_utterances.tmpl23
-rw-r--r--nikola/data/themes/base/templates/feeds_translations_helper.tmpl124
-rw-r--r--nikola/data/themes/base/templates/gallery.tmpl84
-rw-r--r--nikola/data/themes/base/templates/index.tmpl33
-rw-r--r--nikola/data/themes/base/templates/index_helper.tmpl31
-rw-r--r--nikola/data/themes/base/templates/list.tmpl8
-rw-r--r--nikola/data/themes/base/templates/list_post.tmpl8
-rw-r--r--nikola/data/themes/base/templates/listing.tmpl10
-rw-r--r--nikola/data/themes/base/templates/math_helper.tmpl69
-rw-r--r--nikola/data/themes/base/templates/page.tmpl1
-rw-r--r--nikola/data/themes/base/templates/pagination_helper.tmpl16
-rw-r--r--nikola/data/themes/base/templates/post.tmpl9
-rw-r--r--nikola/data/themes/base/templates/post_header.tmpl25
-rw-r--r--nikola/data/themes/base/templates/post_helper.tmpl63
-rw-r--r--nikola/data/themes/base/templates/sectionindex.tmpl21
-rw-r--r--nikola/data/themes/base/templates/slides.tmpl24
-rw-r--r--nikola/data/themes/base/templates/story.tmpl3
-rw-r--r--nikola/data/themes/base/templates/tag.tmpl34
-rw-r--r--nikola/data/themes/base/templates/tagindex.tmpl13
-rw-r--r--nikola/data/themes/base/templates/tags.tmpl8
-rw-r--r--nikola/data/themes/base/templates/ui_helper.tmpl (renamed from nikola/data/themes/base/templates/crumbs.tmpl)3
-rw-r--r--nikola/data/themes/bootblog4-jinja/README.md6
l---------nikola/data/themes/bootblog4-jinja/assets/css/bootblog.css1
-rw-r--r--nikola/data/themes/bootblog4-jinja/bootblog4-jinja.theme12
l---------nikola/data/themes/bootblog4-jinja/bundles1
-rw-r--r--nikola/data/themes/bootblog4-jinja/templates/base.tmpl104
-rw-r--r--nikola/data/themes/bootblog4-jinja/templates/base_helper.tmpl169
-rw-r--r--nikola/data/themes/bootblog4-jinja/templates/index.tmpl150
-rw-r--r--nikola/data/themes/bootblog4/README.md6
-rw-r--r--nikola/data/themes/bootblog4/assets/css/bootblog.css225
-rw-r--r--nikola/data/themes/bootblog4/bootblog4.theme12
-rw-r--r--nikola/data/themes/bootblog4/bundles28
-rw-r--r--nikola/data/themes/bootblog4/templates/base.tmpl104
-rw-r--r--nikola/data/themes/bootblog4/templates/base_helper.tmpl169
-rw-r--r--nikola/data/themes/bootblog4/templates/index.tmpl150
-rw-r--r--nikola/data/themes/bootstrap3-jinja/AUTHORS.txt1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/README.md8
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css.map1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css.map1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css.map1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css.map1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/colorbox.css1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/docs.css160
l---------nikola/data/themes/bootstrap3-jinja/assets/css/images/controls.png1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomCenter.pngbin111 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomLeft.pngbin215 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomRight.pngbin217 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleLeft.pngbin108 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleRight.pngbin108 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopCenter.pngbin111 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopLeft.pngbin216 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopRight.pngbin214 -> 0 bytes
l---------nikola/data/themes/bootstrap3-jinja/assets/css/images/loading.gif1
l---------nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.eot1
l---------nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.svg1
l---------nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.ttf1
l---------nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff1
l---------nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff21
l---------nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.min.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ar.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bg.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bn.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ca.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-cs.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-da.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-de.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-es.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-et.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fa.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fi.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fr.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gl.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gr.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-he.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hr.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hu.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-id.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-it.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ja.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-kr.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lt.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lv.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-my.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-nl.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-no.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pl.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ro.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ru.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-si.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sk.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sr.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sv.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-tr.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-uk.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/assets/js/flowr.plugin.js271
l---------nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox-min.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/jquery.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.js1
l---------nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.map1
l---------nikola/data/themes/bootstrap3-jinja/bundles1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/engine1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/parent1
-rw-r--r--nikola/data/themes/bootstrap3-jinja/templates/base.tmpl94
-rw-r--r--nikola/data/themes/bootstrap3-jinja/templates/base_helper.tmpl188
-rw-r--r--nikola/data/themes/bootstrap3-jinja/templates/gallery.tmpl95
-rw-r--r--nikola/data/themes/bootstrap3-jinja/templates/slides.tmpl24
-rw-r--r--nikola/data/themes/bootstrap3/README.md8
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css.map1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css.map1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap.css1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap.css.map1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css.map1
l---------nikola/data/themes/bootstrap3/assets/css/colorbox.css1
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/docs.css160
l---------nikola/data/themes/bootstrap3/assets/css/images/controls.png1
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomCenter.pngbin111 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomLeft.pngbin215 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomRight.pngbin217 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleLeft.pngbin108 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleRight.pngbin108 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopCenter.pngbin111 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopLeft.pngbin216 -> 0 bytes
-rw-r--r--nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopRight.pngbin214 -> 0 bytes
l---------nikola/data/themes/bootstrap3/assets/css/images/loading.gif1
l---------nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.eot1
l---------nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.svg1
l---------nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.ttf1
l---------nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff1
l---------nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff21
l---------nikola/data/themes/bootstrap3/assets/js/bootstrap.js1
l---------nikola/data/themes/bootstrap3/assets/js/bootstrap.min.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ar.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bg.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bn.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ca.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-cs.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-da.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-de.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-es.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-et.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fa.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fi.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fr.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gl.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gr.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-he.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hr.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hu.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-id.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-it.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ja.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-kr.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lt.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lv.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-my.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-nl.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-no.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pl.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ro.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ru.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-si.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sk.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sr.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sv.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-tr.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-uk.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js1
l---------nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js1
-rw-r--r--nikola/data/themes/bootstrap3/assets/js/flowr.plugin.js271
l---------nikola/data/themes/bootstrap3/assets/js/jquery.colorbox-min.js1
l---------nikola/data/themes/bootstrap3/assets/js/jquery.colorbox.js1
l---------nikola/data/themes/bootstrap3/assets/js/jquery.js1
l---------nikola/data/themes/bootstrap3/assets/js/jquery.min.js1
l---------nikola/data/themes/bootstrap3/assets/js/jquery.min.map1
-rw-r--r--nikola/data/themes/bootstrap3/bundles4
-rw-r--r--nikola/data/themes/bootstrap3/engine1
-rw-r--r--nikola/data/themes/bootstrap3/parent1
-rw-r--r--nikola/data/themes/bootstrap3/templates/base.tmpl94
-rw-r--r--nikola/data/themes/bootstrap3/templates/base_helper.tmpl188
-rw-r--r--nikola/data/themes/bootstrap3/templates/gallery.tmpl95
-rw-r--r--nikola/data/themes/bootstrap3/templates/slides.tmpl24
-rw-r--r--nikola/data/themes/bootstrap4-jinja/README.md10
l---------nikola/data/themes/bootstrap4-jinja/assets/css/bootstrap.min.css1
-rw-r--r--nikola/data/themes/bootstrap4-jinja/assets/css/theme.css (renamed from nikola/data/themes/bootstrap3-jinja/assets/css/theme.css)147
l---------nikola/data/themes/bootstrap4-jinja/assets/js/bootstrap.min.js1
l---------nikola/data/themes/bootstrap4-jinja/assets/js/jquery.min.js1
l---------nikola/data/themes/bootstrap4-jinja/assets/js/popper.min.js1
-rw-r--r--nikola/data/themes/bootstrap4-jinja/bootstrap4-jinja.theme12
l---------nikola/data/themes/bootstrap4-jinja/bundles1
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/authors.tmpl (renamed from nikola/data/themes/bootstrap3-jinja/templates/authors.tmpl)8
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/base.tmpl105
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/base_helper.tmpl165
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/index_helper.tmpl13
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/listing.tmpl (renamed from nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl)14
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/pagination_helper.tmpl40
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/post.tmpl (renamed from nikola/data/themes/bootstrap3-jinja/templates/post.tmpl)14
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/tags.tmpl (renamed from nikola/data/themes/bootstrap3-jinja/templates/tags.tmpl)4
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/ui_helper.tmpl24
-rw-r--r--nikola/data/themes/bootstrap4/README.md10
l---------nikola/data/themes/bootstrap4/assets/css/bootstrap.min.css1
-rw-r--r--nikola/data/themes/bootstrap4/assets/css/theme.css (renamed from nikola/data/themes/bootstrap3/assets/css/theme.css)147
l---------nikola/data/themes/bootstrap4/assets/js/bootstrap.min.js1
l---------nikola/data/themes/bootstrap4/assets/js/jquery.min.js1
l---------nikola/data/themes/bootstrap4/assets/js/popper.min.js1
-rw-r--r--nikola/data/themes/bootstrap4/bootstrap4.theme12
-rw-r--r--nikola/data/themes/bootstrap4/bundles26
-rw-r--r--nikola/data/themes/bootstrap4/templates/authors.tmpl (renamed from nikola/data/themes/bootstrap3/templates/authors.tmpl)8
-rw-r--r--nikola/data/themes/bootstrap4/templates/base.tmpl105
-rw-r--r--nikola/data/themes/bootstrap4/templates/base_helper.tmpl165
-rw-r--r--nikola/data/themes/bootstrap4/templates/index_helper.tmpl13
-rw-r--r--nikola/data/themes/bootstrap4/templates/listing.tmpl (renamed from nikola/data/themes/bootstrap3/templates/listing.tmpl)14
-rw-r--r--nikola/data/themes/bootstrap4/templates/pagination_helper.tmpl40
-rw-r--r--nikola/data/themes/bootstrap4/templates/post.tmpl (renamed from nikola/data/themes/bootstrap3/templates/post.tmpl)14
-rw-r--r--nikola/data/themes/bootstrap4/templates/tags.tmpl (renamed from nikola/data/themes/bootstrap3/templates/tags.tmpl)4
-rw-r--r--nikola/data/themes/bootstrap4/templates/ui_helper.tmpl24
389 files changed, 5507 insertions, 4189 deletions
diff --git a/nikola/data/samplesite/galleries/demo/metadata.sample.yml b/nikola/data/samplesite/galleries/demo/metadata.sample.yml
new file mode 100644
index 0000000..f504573
--- /dev/null
+++ b/nikola/data/samplesite/galleries/demo/metadata.sample.yml
@@ -0,0 +1,13 @@
+---
+name: tesla_tower1_lg.jpg
+caption: Wardenclyffe Tower
+built_in: 1904
+order: 2
+---
+name: tesla4_lg.jpg
+order: 0
+---
+name: tesla_conducts_lg.jpg
+caption: Nikola Tesla conducts electricity
+order: 1
+---
diff --git a/nikola/data/samplesite/listings/hello.py b/nikola/data/samplesite/listings/hello.py
index 885acde..5535df8 100644
--- a/nikola/data/samplesite/listings/hello.py
+++ b/nikola/data/samplesite/listings/hello.py
@@ -7,5 +7,6 @@ def hello(name='world'):
greeting = "hello " + name
print(greeting)
+
if __name__ == "__main__":
hello(*sys.argv[1:])
diff --git a/nikola/data/samplesite/pages/bootstrap-demo.rst b/nikola/data/samplesite/pages/bootstrap-demo.rst
index 481140a..35a0265 100644
--- a/nikola/data/samplesite/pages/bootstrap-demo.rst
+++ b/nikola/data/samplesite/pages/bootstrap-demo.rst
@@ -357,7 +357,7 @@
</blockquote>
</div>
<div class="col-lg-6">
- <blockquote class="pull-right">
+ <blockquote class="float-md-right">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<small>Someone famous in <cite title="Source Title">Source Title</cite></small>
</blockquote>
diff --git a/nikola/data/samplesite/pages/charts.txt b/nikola/data/samplesite/pages/charts.rst
index 72fedb1..72fedb1 100644
--- a/nikola/data/samplesite/pages/charts.txt
+++ b/nikola/data/samplesite/pages/charts.rst
diff --git a/nikola/data/samplesite/pages/creating-a-theme.rst b/nikola/data/samplesite/pages/creating-a-theme.rst
index 108a192..66d75d1 120000
--- a/nikola/data/samplesite/pages/creating-a-theme.rst
+++ b/nikola/data/samplesite/pages/creating-a-theme.rst
@@ -1 +1 @@
-../../../../docs/creating-a-theme.txt \ No newline at end of file
+../../../../docs/creating-a-theme.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/dr-nikolas-vendetta.rst b/nikola/data/samplesite/pages/dr-nikolas-vendetta.rst
index 6175355..9342f11 100644
--- a/nikola/data/samplesite/pages/dr-nikolas-vendetta.rst
+++ b/nikola/data/samplesite/pages/dr-nikolas-vendetta.rst
@@ -1,468 +1,468 @@
-.. title: A BID FOR FORTUNE OR; DR. NIKOLA'S VENDETTA
-.. template: book.tmpl
-.. hyphenate: yes
-.. filters: filters.typogrify
-
-.. class:: subtitle
-
-By `GUY BOOTHBY <http://www.gutenberg.org/ebooks/author/3587>`__
-
-Author of "Dr. Nikola," "The Beautiful White Devil," etc., etc.
-
-.. figure:: /images/frontispiece.jpg
- :class: bookfig
-
-.. topic:: The Project Gutenberg EBook of A Bid for Fortune, by Guy Boothby
-
- This eBook is for the use of anyone anywhere at no cost and with
- almost no restrictions whatsoever. You may copy it, give it away or
- re-use it under the terms of the Project Gutenberg License included
- with this eBook or online at www.gutenberg.org
-
-
- Title: A Bid for Fortune
- or Dr. Nikola's Vendetta
-
- Author: `Guy Boothby <http://www.gutenberg.org/ebooks/author/3587>`__
-
- Release Date: May 29, 2007 [EBook #21640]
-
- Language: English
-
- Produced by Marilynda Fraser-Cunliffe, Mary Meehan and the
- Online Distributed Proofreading Team at http://www.pgdp.net
-
- Originally published by:
-
- WARD, LOCK & CO., LIMITED
- LONDON, MELBOURNE AND TORONTO
- 1918
-
-.. figure:: /images/illus_001.jpg
- :class: bookfig
-
-PART I
-======
-
-PROLOGUE
---------
-
-.. role:: smallcaps
-
-
-:smallcaps:`The` manager of the new Imperial Restaurant on the Thames Embankment went
-into his luxurious private office and shut the door. Having done so, he
-first scratched his chin reflectively, and then took a letter from the
-drawer in which it had reposed for more than two months and perused it
-carefully. Though he was not aware of it, this was the thirtieth time he
-had read it since breakfast that morning. And yet he was not a whit
-nearer understanding it than he had been at the beginning. He turned it
-over and scrutinized the back, where not a sign of writing was to be
-seen; he held it up to the window, as if he might hope to discover
-something from the water-mark; but there was nothing in either of these
-places of a nature calculated to set his troubled mind at rest. Then he
-took a magnificent repeater watch from his waistcoat pocket and glanced
-at the dial; the hands stood at half-past seven. He immediately threw
-the letter on the table, and as he did so his anxiety found relief in
-words.
-
-"It's really the most extraordinary affair I ever had to do with," he
-remarked. "And as I've been in the business just three-and-thirty years
-at eleven a.m. next Monday morning, I ought to know something about it.
-I only hope I've done right, that's all."
-
-As he spoke, the chief bookkeeper, who had the treble advantage of being
-tall, pretty, and just eight-and-twenty years of age, entered the room.
-She noticed the open letter and the look upon her chief's face, and her
-curiosity was proportionately excited.
-
-"You seem worried, Mr. McPherson," she said tenderly, as she put down
-the papers she had brought in for his signature.
-
-"You have just hit it, Miss O'Sullivan," he answered, pushing them
-farther on to the table. "I am worried about many things, but
-particularly about this letter."
-
-He handed the epistle to her, and she, being desirous of impressing him
-with her business capabilities, read it with ostentatious care. But it
-was noticeable that when she reached the signature she too turned back
-to the beginning, and then deliberately read it over again. The manager
-rose, crossed to the mantelpiece, and rang for the head waiter. Having
-relieved his feelings in this way, he seated himself again at his
-writing-table, put on his glasses, and stared at his companion, while
-waiting for her to speak.
-
-"It's very funny," she said. "Very funny indeed!"
-
-"It's the most extraordinary communication I have ever received," he
-replied with conviction. "You see it is written from Cuyaba, Brazil. The
-date is three months ago to a day. Now I have taken the trouble to find
-out where and what Cuyaba is."
-
-He made this confession with an air of conscious pride, and having done
-so, laid himself back in his chair, stuck his thumbs into the armholes
-of his waistcoat, and looked at his fair subordinate for approval. Nor
-was he destined to be disappointed. He was a bachelor in possession of a
-snug income, and she, besides being pretty, was a lady with a keen eye
-to the main chance.
-
-"And where *is* Cuyaba?" she asked humbly.
-
-"Cuyaba," he replied, rolling his tongue with considerable relish round
-his unconscious mispronunciation of the name, "is a town almost on the
-western or Bolivian border of Brazil. It is of moderate size, is
-situated on the banks of the river Cuyaba, and is considerably connected
-with the famous Brazilian Diamond Fields."
-
-"And does the writer of this letter live there?"
-
-"I cannot say. He writes from there--that is enough for us."
-
-"And he orders dinner for four--here, in a private room overlooking the
-river, three months ahead--punctually at eight o'clock, gives you a list
-of the things he wants, and even arranges the decoration of the table.
-Says he has never seen either of his three friends before; that one of
-them hails from (here she consulted the letter again) Hang-chow, another
-from Bloemfontein, while the third resides, at present, in England. Each
-one is to present an ordinary visiting card with a red dot on it to the
-porter in the hall, and to be shown to the room at once. I don't
-understand it at all."
-
-The manager paused for a moment, and then said deliberately,--"Hang-chow
-is in China, Bloemfontein is in South Africa."
-
-"What a wonderful man you are, to be sure, Mr. McPherson! I never can
-*think* how you manage to carry so much in your head."
-
-There spoke the true woman. And it was a move in the right direction,
-for the manager was susceptible to her gentle influence, as she had
-occasion to know.
-
-At this juncture the head waiter appeared upon the scene, and took up a
-position just inside the doorway, as if he were afraid of injuring the
-carpet by coming farther.
-
-"Is No. 22 ready, Williams?"
-
-"Quite ready, sir. The wine is on the ice, and cook tells me he'll be
-ready to dish punctual to the moment."
-
-"The letter says, 'no electric light; candles with red shades.' Have you
-put on those shades I got this morning?"
-
-"Just seen it done this very minute, sir."
-
-"And let me see, there was one other thing." He took the letter from the
-chief bookkeeper's hand and glanced at it. "Ah, yes, a porcelain saucer,
-and a small jug of new milk upon the mantelpiece. An extraordinary
-request, but has it been attended to?"
-
-"I put it there myself, sir."
-
-"Who wait?"
-
-"Jones, Edmunds, Brooks, and Tomkins."
-
-"Very good. Then I think that will do. Stay! You had better tell the
-hall porter to look out for three gentlemen presenting plain visiting
-cards with a little red spot on them. Let Brooks wait in the hall, and
-when they arrive tell him to show them straight up to the room."
-
-"It shall be done, sir."
-
-The head waiter left the room, and the manager stretched himself in his
-chair, yawned by way of showing his importance, and then said
-solemnly,--
-
-"I don't believe they'll any of them turn up; but if they do, this Dr.
-Nikola, whoever he may be, won't be able to find fault with my
-arrangements."
-
-Then, leaving the dusty high road of Business, he and his companion
-wandered in the shady bridle-paths of Love--to the end that when the
-chief bookkeeper returned to her own department she had forgotten the
-strange dinner party about to take place upstairs, and was busily
-engaged upon a calculation as to how she would look in white satin and
-orange blossoms, and, that settled, fell to wondering whether it was
-true, as Miss Joyce, a subordinate, had been heard to declare, that the
-manager had once shown himself partial to a certain widow with reputed
-savings and a share in an extensive egg and dairy business.
-
-At ten minutes to eight precisely a hansom drew up at the steps of the
-hotel. As soon as it stopped, an undersized gentleman, with a clean
-shaven countenance, a canonical corporation, and bow legs, dressed in a
-decidedly clerical garb, alighted. He paid and discharged his cabman,
-and then took from his ticket pocket an ordinary white visiting card,
-which he presented to the gold-laced individual who had opened the
-apron. The latter, having noted the red spot, called a waiter, and the
-reverend gentleman was immediately escorted upstairs.
-
-Hardly had the attendant time to return to his station in the hall,
-before a second cab made its appearance, closely followed by a third.
-Out of the second jumped a tall, active, well-built man of about thirty
-years of age. He was dressed in evening dress of the latest fashion, and
-to conceal it from the vulgar gaze, wore a large Inverness cape of heavy
-texture. He also in his turn handed a white card to the porter, and,
-having done so, proceeded into the hall, followed by the occupant of the
-last cab, who had closely copied his example. This individual was also
-in evening dress, but it was of a different stamp. It was old-fashioned
-and had seen much use. The wearer, too, was taller than the ordinary run
-of men, while it was noticeable that his hair was snow-white, and that
-his face was deeply pitted with smallpox. After disposing of their hats
-and coats in an ante-room, they reached room No. 22, where they found
-the gentleman in clerical costume pacing impatiently up and down.
-
-Left alone, the tallest of the trio, who for want of a better title we
-may call the Best Dressed Man, took out his watch, and having glanced at
-it, looked at his companions. "Gentlemen," he said, with a slight
-American accent, "it is three minutes to eight o'clock. My name is
-Eastover!"
-
-"I'm glad to hear it, for I'm most uncommonly hungry," said the next
-tallest, whom I have already described as being so marked by disease.
-"My name is Prendergast!"
-
-"We only wait for our friend and host," remarked the clerical gentleman,
-as if he felt he ought to take a share in the conversation, and then, as
-an afterthought, he continued, "My name is Baxter!"
-
-They shook hands all round with marked cordiality, seated themselves
-again, and took it in turns to examine the clock.
-
-"Have you ever had the pleasure of meeting our host before?" asked Mr.
-Baxter of Mr. Prendergast.
-
-"Never," replied that gentleman, with a shake of his head. "Perhaps Mr.
-Eastover has been more fortunate?"
-
-"Not I," was the brief rejoinder. "I've had to do with him off and on
-for longer than I care to reckon, but I've never set eyes on him up to
-date."
-
-"And where may he have been the first time you heard from him?"
-
-"In Nashville, Tennessee," said Eastover. "After that, Tahupapa, New
-Zealand; after that, Papeete, in the Society Islands; then Pekin, China.
-And you?"
-
-"First time, Brussels; second, Monte Video; third, Mandalay, and then
-the Gold Coast, Africa. It's your turn, Mr. Baxter."
-
-The clergyman glanced at the timepiece. It was exactly eight o'clock.
-"First time, Cabul, Afghanistan; second, Nijni Novgorod, Russia; third,
-Wilcannia, Darling River, Australia; fourth, Valparaiso, Chili; fifth,
-Nagasaki, Japan."
-
-"He is evidently a great traveller and a most mysterious person."
-
-"He is more than that," said Eastover with conviction; "he is late for
-dinner!"
-
-Prendergast looked at his watch.
-
-"That clock is two minutes fast. Hark, there goes Big Ben! Eight
-exactly."
-
-As he spoke the door was thrown open and a voice announced "Dr. Nikola."
-
-The three men sprang to their feet simultaneously, with exclamations of
-astonishment, as the man they had been discussing made his appearance.
-
-It would take more time than I can spare the subject to give you an
-adequate and inclusive description of the person who entered the room at
-that moment. In stature he was slightly above the ordinary, his
-shoulders were broad, his limbs perfectly shaped and plainly muscular,
-but very slim. His head, which was magnificently set upon his shoulders,
-was adorned with a profusion of glossy black hair; his face was
-destitute of beard or moustache, and was of oval shape and handsome
-moulding; while his skin was of a dark olive hue, a colour which
-harmonized well with his piercing black eyes and pearly teeth. His hands
-and feet were small, and the greatest dandy must have admitted that he
-was irreproachably dressed, with a neatness that bordered on the
-puritanical. In age he might have been anything from eight-and-twenty to
-forty; in reality he was thirty-three. He advanced into the room and
-walked with out-stretched hand directly across to where Eastover was
-standing by the fireplace.
-
-"Mr. Eastover, I feel certain," he said, fixing his glittering eyes upon
-the man he addressed, and allowing a curious smile to play upon his
-face.
-
-"That is my name, Dr. Nikola," the other answered with evident surprise.
-"But how on earth can you distinguish me from your other guests?"
-
-"Ah! it would surprise you if you knew. And Mr. Prendergast, and Mr.
-Baxter. This is delightful; I hope I am not late. We had a collision in
-the Channel this morning, and I was almost afraid I might not be up to
-time. Dinner seems ready; shall we sit down to it?" They seated
-themselves, and the meal commenced. The Imperial Restaurant has earned
-an enviable reputation for doing things well, and the dinner that night
-did not in any way detract from its lustre. But, delightful as it all
-was, it was noticeable that the three guests paid more attention to
-their host than to his excellent *menu*. As they had said before his
-arrival, they had all had dealings with him for several years, but what
-those dealings were they were careful not to describe. It was more than
-possible that they hardly liked to remember them themselves.
-
-When coffee had been served and the servants had withdrawn, Dr. Nikola
-rose from the table, and went across to the massive sideboard. On it
-stood a basket of very curious shape and workmanship. This he opened,
-and as he did so, to the astonishment of his guests, an enormous cat, as
-black as his master's coat, leaped out on to the floor. The reason for
-the saucer and jug of milk became evident.
-
-Seating himself at the table again, the host followed the example of his
-guests and lit a cigar, blowing a cloud of smoke luxuriously through his
-delicately chiselled nostrils. His eyes wandered round the cornice of
-the room, took in the pictures and decorations, and then came down to
-meet the faces of his companions. As they did so, the black cat, having
-finished its meal, sprang on to his shoulder to crouch there, watching
-the three men through the curling smoke drift with its green blinking,
-fiendish eyes. Dr. Nikola smiled as he noticed the effect the animal had
-upon his guests.
-
-"Now shall we get to business?" he said briskly.
-
-The others almost simultaneously knocked the ashes off their cigars and
-brought themselves to attention. Dr. Nikola's dainty, languid manner
-seemed to drop from him like a cloak, his eyes brightened, and his
-voice, when he spoke, was clean cut as chiselled silver.
-
-"You are doubtless anxious to be informed why I summoned you from all
-parts of the globe to meet me here to-night? And it is very natural you
-should be. But then, from what you know of me, you should not be
-surprised at anything I do."
-
-His voice dropped back into its old tone of gentle languor. He drew in a
-great breath of smoke and then sent it slowly out from his lips again.
-His eyes were half closed, and he drummed with one finger on the table
-edge. The cat looked through the smoke at the three men, and it seemed
-to them that he grew every moment larger and more ferocious. Presently
-his owner took him from his perch, and seating him on his knee fell to
-stroking his fur, from head to tail, with his long slim fingers. It was
-as if he were drawing inspiration for some deadly mischief from the
-uncanny beast.
-
-"To preface what I have to say to you, let me tell you that this is by
-far the most important business for which I have ever required your
-help. (Three slow strokes down the centre of the back, and one round
-each ear.) When it first came into my mind I was at a loss who to trust
-in the matter. I thought of Vendon, but I found Vendon was dead. I
-thought of Brownlow, but Brownlow was no longer faithful. (Two strokes
-down the back and two on the throat.) Then bit by bit I remembered you.
-I was in Brazil at the time. So I sent for you. You came. So far so
-good."
-
-He rose, and crossed over to the fireplace. As he went the cat crawled
-back to its original position on his shoulder. Then his voice changed
-once more to its former business-like tone.
-
-"I am not going to tell you very much about it. But from what I do tell
-you, you will be able to gather a great deal and imagine the rest. To
-begin with, there is a man living in this world to-day who has done me a
-great and lasting injury. What that injury is is no concern of yours.
-You would not understand if I told you. So we'll leave that out of the
-question. He is immensely rich. His cheque for £300,000 would be
-honoured by his bank at any minute. Obviously he is a power. He has had
-reason to know that I am pitting my wits against his, and he flatters
-himself that so far he has got the better of me. That is because I am
-drawing him on. I am maturing a plan which will make him a poor and a
-very miserable man at one and the same time. If that scheme succeeds,
-and I am satisfied with the way you three men have performed the parts I
-shall call on you to play in it, I shall pay to each of you the sum of
-£10,000. If it doesn't succeed, then you will each receive a thousand
-and your expenses. Do you follow me?"
-
-It was evident from their faces that they hung upon his every word.
-
-"But, remember, I demand from you your whole and entire labour. While
-you are serving me you are mine body and soul. I know you are
-trustworthy. I have had good proof that you are--pardon the
-expression--unscrupulous, and I flatter myself you are silent. What is
-more, I shall tell you nothing beyond what is necessary for the carrying
-out of my scheme, so that you could not betray me if you would. Now for
-my plans!"
-
-He sat down again and took a paper from his pocket. Having perused it,
-he turned to Eastover.
-
-"You will leave at once--that is to say, by the boat on Wednesday--for
-Sydney. You will book your passage to-morrow morning, first thing, and
-join her in Plymouth. You will meet me to-morrow evening at an address I
-will send you, and receive your final instructions. Good-night."
-
-Seeing that he was expected to go, Eastover rose, shook hands, and left
-the room without a word. He was too astonished to hesitate or to say
-anything.
-
-Nikola took another letter from his pocket and turned to Prendergast.
-"*You* will go down to Dover to-night, cross to Paris to-morrow morning,
-and leave this letter personally at the address you will find written on
-it. On Thursday, at half-past two precisely, you will deliver me an
-answer in the porch at Charing Cross. You will find sufficient money in
-that envelope to pay all your expenses. Now go!"
-
-"At half-past two you shall have your answer. Good-night."
-
-"Good-night."
-
-When Prendergast had left the room, Dr. Nikola lit another cigar and
-turned his attentions to Mr. Baxter.
-
-"Six months ago, Mr. Baxter, I found for you a situation as tutor to the
-young Marquis of Beckenham. You still hold it, I suppose?"
-
-"I do."
-
-"Is the father well disposed towards you?"
-
-"In every way. I have done my best to ingratiate myself with him. That
-was one of your instructions."
-
-"Yes, yes! But I was not certain that you would succeed. If the old man
-is anything like what he was when I last met him he must still be a
-difficult person to deal with. Does the boy like you?"
-
-"I hope so."
-
-"Have you brought me his photograph as I directed?"
-
-"I have. Here it is."
-
-Baxter took a photograph from his pocket and handed it across the table.
-
-"Good. You have done very well, Mr. Baxter. I am pleased with you.
-To-morrow morning you will go back to Yorkshire----"
-
-"I beg your pardon, Bournemouth. His Grace owns a house near
-Bournemouth, which he occupies during the summer months."
-
-"Very well--then to-morrow morning you will go back to Bournemouth and
-continue to ingratiate yourself with father and son. You will also begin
-to implant in the boy's mind a desire for travel. Don't let him become
-aware that his desire has its source in you--but do not fail to foster
-it all you can. I will communicate with you further in a day or two. Now
-go."
-
-Baxter in his turn left the room. The door closed. Dr. Nikola picked up
-the photograph and studied it.
-
-"The likeness is unmistakable--or it ought to be. My friend, my very
-dear friend, Wetherell, my toils are closing on you. My arrangements are
-perfecting themselves admirably. Presently, when all is complete, I
-shall press the lever, the machinery will be set in motion, and you will
-find yourself being slowly but surely ground into powder. Then you will
-hand over what I want, and be sorry you thought fit to baulk Dr.
-Nikola!"
-
-He rang the bell and ordered his bill. This duty discharged, he placed
-the cat back in its prison, shut the lid, descended with the basket to
-the hall, and called a hansom. The porter inquired to what address he
-should order the cabman to drive. Dr. Nikola did not reply for a moment,
-then he said, as if he had been thinking something out: "The *Green
-Sailor* public-house, East India Dock Road."
-
-
-------------------------
-
-You can read the rest of "A Bid For Fortune; Or, Dr. Nikola's Vendetta" at `Open Library <https://archive.org/stream/bidforfortunenov00bootiala#page/12/mode/2up>`__
+.. title: A BID FOR FORTUNE OR; DR. NIKOLA'S VENDETTA
+.. template: book.tmpl
+.. hyphenate: yes
+.. filters: filters.typogrify
+
+.. class:: subtitle
+
+By `GUY BOOTHBY <http://www.gutenberg.org/ebooks/author/3587>`__
+
+Author of "Dr. Nikola," "The Beautiful White Devil," etc., etc.
+
+.. figure:: /images/frontispiece.jpg
+ :class: bookfig
+
+.. topic:: The Project Gutenberg EBook of A Bid for Fortune, by Guy Boothby
+
+ This eBook is for the use of anyone anywhere at no cost and with
+ almost no restrictions whatsoever. You may copy it, give it away or
+ re-use it under the terms of the Project Gutenberg License included
+ with this eBook or online at www.gutenberg.org
+
+
+ Title: A Bid for Fortune
+ or Dr. Nikola's Vendetta
+
+ Author: `Guy Boothby <http://www.gutenberg.org/ebooks/author/3587>`__
+
+ Release Date: May 29, 2007 [EBook #21640]
+
+ Language: English
+
+ Produced by Marilynda Fraser-Cunliffe, Mary Meehan and the
+ Online Distributed Proofreading Team at http://www.pgdp.net
+
+ Originally published by:
+
+ WARD, LOCK & CO., LIMITED
+ LONDON, MELBOURNE AND TORONTO
+ 1918
+
+.. figure:: /images/illus_001.jpg
+ :class: bookfig
+
+PART I
+======
+
+PROLOGUE
+--------
+
+.. role:: smallcaps
+
+
+:smallcaps:`The` manager of the new Imperial Restaurant on the Thames Embankment went
+into his luxurious private office and shut the door. Having done so, he
+first scratched his chin reflectively, and then took a letter from the
+drawer in which it had reposed for more than two months and perused it
+carefully. Though he was not aware of it, this was the thirtieth time he
+had read it since breakfast that morning. And yet he was not a whit
+nearer understanding it than he had been at the beginning. He turned it
+over and scrutinized the back, where not a sign of writing was to be
+seen; he held it up to the window, as if he might hope to discover
+something from the water-mark; but there was nothing in either of these
+places of a nature calculated to set his troubled mind at rest. Then he
+took a magnificent repeater watch from his waistcoat pocket and glanced
+at the dial; the hands stood at half-past seven. He immediately threw
+the letter on the table, and as he did so his anxiety found relief in
+words.
+
+"It's really the most extraordinary affair I ever had to do with," he
+remarked. "And as I've been in the business just three-and-thirty years
+at eleven a.m. next Monday morning, I ought to know something about it.
+I only hope I've done right, that's all."
+
+As he spoke, the chief bookkeeper, who had the treble advantage of being
+tall, pretty, and just eight-and-twenty years of age, entered the room.
+She noticed the open letter and the look upon her chief's face, and her
+curiosity was proportionately excited.
+
+"You seem worried, Mr. McPherson," she said tenderly, as she put down
+the papers she had brought in for his signature.
+
+"You have just hit it, Miss O'Sullivan," he answered, pushing them
+farther on to the table. "I am worried about many things, but
+particularly about this letter."
+
+He handed the epistle to her, and she, being desirous of impressing him
+with her business capabilities, read it with ostentatious care. But it
+was noticeable that when she reached the signature she too turned back
+to the beginning, and then deliberately read it over again. The manager
+rose, crossed to the mantelpiece, and rang for the head waiter. Having
+relieved his feelings in this way, he seated himself again at his
+writing-table, put on his glasses, and stared at his companion, while
+waiting for her to speak.
+
+"It's very funny," she said. "Very funny indeed!"
+
+"It's the most extraordinary communication I have ever received," he
+replied with conviction. "You see it is written from Cuyaba, Brazil. The
+date is three months ago to a day. Now I have taken the trouble to find
+out where and what Cuyaba is."
+
+He made this confession with an air of conscious pride, and having done
+so, laid himself back in his chair, stuck his thumbs into the armholes
+of his waistcoat, and looked at his fair subordinate for approval. Nor
+was he destined to be disappointed. He was a bachelor in possession of a
+snug income, and she, besides being pretty, was a lady with a keen eye
+to the main chance.
+
+"And where *is* Cuyaba?" she asked humbly.
+
+"Cuyaba," he replied, rolling his tongue with considerable relish round
+his unconscious mispronunciation of the name, "is a town almost on the
+western or Bolivian border of Brazil. It is of moderate size, is
+situated on the banks of the river Cuyaba, and is considerably connected
+with the famous Brazilian Diamond Fields."
+
+"And does the writer of this letter live there?"
+
+"I cannot say. He writes from there--that is enough for us."
+
+"And he orders dinner for four--here, in a private room overlooking the
+river, three months ahead--punctually at eight o'clock, gives you a list
+of the things he wants, and even arranges the decoration of the table.
+Says he has never seen either of his three friends before; that one of
+them hails from (here she consulted the letter again) Hang-chow, another
+from Bloemfontein, while the third resides, at present, in England. Each
+one is to present an ordinary visiting card with a red dot on it to the
+porter in the hall, and to be shown to the room at once. I don't
+understand it at all."
+
+The manager paused for a moment, and then said deliberately,--"Hang-chow
+is in China, Bloemfontein is in South Africa."
+
+"What a wonderful man you are, to be sure, Mr. McPherson! I never can
+*think* how you manage to carry so much in your head."
+
+There spoke the true woman. And it was a move in the right direction,
+for the manager was susceptible to her gentle influence, as she had
+occasion to know.
+
+At this juncture the head waiter appeared upon the scene, and took up a
+position just inside the doorway, as if he were afraid of injuring the
+carpet by coming farther.
+
+"Is No. 22 ready, Williams?"
+
+"Quite ready, sir. The wine is on the ice, and cook tells me he'll be
+ready to dish punctual to the moment."
+
+"The letter says, 'no electric light; candles with red shades.' Have you
+put on those shades I got this morning?"
+
+"Just seen it done this very minute, sir."
+
+"And let me see, there was one other thing." He took the letter from the
+chief bookkeeper's hand and glanced at it. "Ah, yes, a porcelain saucer,
+and a small jug of new milk upon the mantelpiece. An extraordinary
+request, but has it been attended to?"
+
+"I put it there myself, sir."
+
+"Who wait?"
+
+"Jones, Edmunds, Brooks, and Tomkins."
+
+"Very good. Then I think that will do. Stay! You had better tell the
+hall porter to look out for three gentlemen presenting plain visiting
+cards with a little red spot on them. Let Brooks wait in the hall, and
+when they arrive tell him to show them straight up to the room."
+
+"It shall be done, sir."
+
+The head waiter left the room, and the manager stretched himself in his
+chair, yawned by way of showing his importance, and then said
+solemnly,--
+
+"I don't believe they'll any of them turn up; but if they do, this Dr.
+Nikola, whoever he may be, won't be able to find fault with my
+arrangements."
+
+Then, leaving the dusty high road of Business, he and his companion
+wandered in the shady bridle-paths of Love--to the end that when the
+chief bookkeeper returned to her own department she had forgotten the
+strange dinner party about to take place upstairs, and was busily
+engaged upon a calculation as to how she would look in white satin and
+orange blossoms, and, that settled, fell to wondering whether it was
+true, as Miss Joyce, a subordinate, had been heard to declare, that the
+manager had once shown himself partial to a certain widow with reputed
+savings and a share in an extensive egg and dairy business.
+
+At ten minutes to eight precisely a hansom drew up at the steps of the
+hotel. As soon as it stopped, an undersized gentleman, with a clean
+shaven countenance, a canonical corporation, and bow legs, dressed in a
+decidedly clerical garb, alighted. He paid and discharged his cabman,
+and then took from his ticket pocket an ordinary white visiting card,
+which he presented to the gold-laced individual who had opened the
+apron. The latter, having noted the red spot, called a waiter, and the
+reverend gentleman was immediately escorted upstairs.
+
+Hardly had the attendant time to return to his station in the hall,
+before a second cab made its appearance, closely followed by a third.
+Out of the second jumped a tall, active, well-built man of about thirty
+years of age. He was dressed in evening dress of the latest fashion, and
+to conceal it from the vulgar gaze, wore a large Inverness cape of heavy
+texture. He also in his turn handed a white card to the porter, and,
+having done so, proceeded into the hall, followed by the occupant of the
+last cab, who had closely copied his example. This individual was also
+in evening dress, but it was of a different stamp. It was old-fashioned
+and had seen much use. The wearer, too, was taller than the ordinary run
+of men, while it was noticeable that his hair was snow-white, and that
+his face was deeply pitted with smallpox. After disposing of their hats
+and coats in an ante-room, they reached room No. 22, where they found
+the gentleman in clerical costume pacing impatiently up and down.
+
+Left alone, the tallest of the trio, who for want of a better title we
+may call the Best Dressed Man, took out his watch, and having glanced at
+it, looked at his companions. "Gentlemen," he said, with a slight
+American accent, "it is three minutes to eight o'clock. My name is
+Eastover!"
+
+"I'm glad to hear it, for I'm most uncommonly hungry," said the next
+tallest, whom I have already described as being so marked by disease.
+"My name is Prendergast!"
+
+"We only wait for our friend and host," remarked the clerical gentleman,
+as if he felt he ought to take a share in the conversation, and then, as
+an afterthought, he continued, "My name is Baxter!"
+
+They shook hands all round with marked cordiality, seated themselves
+again, and took it in turns to examine the clock.
+
+"Have you ever had the pleasure of meeting our host before?" asked Mr.
+Baxter of Mr. Prendergast.
+
+"Never," replied that gentleman, with a shake of his head. "Perhaps Mr.
+Eastover has been more fortunate?"
+
+"Not I," was the brief rejoinder. "I've had to do with him off and on
+for longer than I care to reckon, but I've never set eyes on him up to
+date."
+
+"And where may he have been the first time you heard from him?"
+
+"In Nashville, Tennessee," said Eastover. "After that, Tahupapa, New
+Zealand; after that, Papeete, in the Society Islands; then Pekin, China.
+And you?"
+
+"First time, Brussels; second, Monte Video; third, Mandalay, and then
+the Gold Coast, Africa. It's your turn, Mr. Baxter."
+
+The clergyman glanced at the timepiece. It was exactly eight o'clock.
+"First time, Cabul, Afghanistan; second, Nijni Novgorod, Russia; third,
+Wilcannia, Darling River, Australia; fourth, Valparaiso, Chili; fifth,
+Nagasaki, Japan."
+
+"He is evidently a great traveller and a most mysterious person."
+
+"He is more than that," said Eastover with conviction; "he is late for
+dinner!"
+
+Prendergast looked at his watch.
+
+"That clock is two minutes fast. Hark, there goes Big Ben! Eight
+exactly."
+
+As he spoke the door was thrown open and a voice announced "Dr. Nikola."
+
+The three men sprang to their feet simultaneously, with exclamations of
+astonishment, as the man they had been discussing made his appearance.
+
+It would take more time than I can spare the subject to give you an
+adequate and inclusive description of the person who entered the room at
+that moment. In stature he was slightly above the ordinary, his
+shoulders were broad, his limbs perfectly shaped and plainly muscular,
+but very slim. His head, which was magnificently set upon his shoulders,
+was adorned with a profusion of glossy black hair; his face was
+destitute of beard or moustache, and was of oval shape and handsome
+moulding; while his skin was of a dark olive hue, a colour which
+harmonized well with his piercing black eyes and pearly teeth. His hands
+and feet were small, and the greatest dandy must have admitted that he
+was irreproachably dressed, with a neatness that bordered on the
+puritanical. In age he might have been anything from eight-and-twenty to
+forty; in reality he was thirty-three. He advanced into the room and
+walked with out-stretched hand directly across to where Eastover was
+standing by the fireplace.
+
+"Mr. Eastover, I feel certain," he said, fixing his glittering eyes upon
+the man he addressed, and allowing a curious smile to play upon his
+face.
+
+"That is my name, Dr. Nikola," the other answered with evident surprise.
+"But how on earth can you distinguish me from your other guests?"
+
+"Ah! it would surprise you if you knew. And Mr. Prendergast, and Mr.
+Baxter. This is delightful; I hope I am not late. We had a collision in
+the Channel this morning, and I was almost afraid I might not be up to
+time. Dinner seems ready; shall we sit down to it?" They seated
+themselves, and the meal commenced. The Imperial Restaurant has earned
+an enviable reputation for doing things well, and the dinner that night
+did not in any way detract from its lustre. But, delightful as it all
+was, it was noticeable that the three guests paid more attention to
+their host than to his excellent *menu*. As they had said before his
+arrival, they had all had dealings with him for several years, but what
+those dealings were they were careful not to describe. It was more than
+possible that they hardly liked to remember them themselves.
+
+When coffee had been served and the servants had withdrawn, Dr. Nikola
+rose from the table, and went across to the massive sideboard. On it
+stood a basket of very curious shape and workmanship. This he opened,
+and as he did so, to the astonishment of his guests, an enormous cat, as
+black as his master's coat, leaped out on to the floor. The reason for
+the saucer and jug of milk became evident.
+
+Seating himself at the table again, the host followed the example of his
+guests and lit a cigar, blowing a cloud of smoke luxuriously through his
+delicately chiselled nostrils. His eyes wandered round the cornice of
+the room, took in the pictures and decorations, and then came down to
+meet the faces of his companions. As they did so, the black cat, having
+finished its meal, sprang on to his shoulder to crouch there, watching
+the three men through the curling smoke drift with its green blinking,
+fiendish eyes. Dr. Nikola smiled as he noticed the effect the animal had
+upon his guests.
+
+"Now shall we get to business?" he said briskly.
+
+The others almost simultaneously knocked the ashes off their cigars and
+brought themselves to attention. Dr. Nikola's dainty, languid manner
+seemed to drop from him like a cloak, his eyes brightened, and his
+voice, when he spoke, was clean cut as chiselled silver.
+
+"You are doubtless anxious to be informed why I summoned you from all
+parts of the globe to meet me here to-night? And it is very natural you
+should be. But then, from what you know of me, you should not be
+surprised at anything I do."
+
+His voice dropped back into its old tone of gentle languor. He drew in a
+great breath of smoke and then sent it slowly out from his lips again.
+His eyes were half closed, and he drummed with one finger on the table
+edge. The cat looked through the smoke at the three men, and it seemed
+to them that he grew every moment larger and more ferocious. Presently
+his owner took him from his perch, and seating him on his knee fell to
+stroking his fur, from head to tail, with his long slim fingers. It was
+as if he were drawing inspiration for some deadly mischief from the
+uncanny beast.
+
+"To preface what I have to say to you, let me tell you that this is by
+far the most important business for which I have ever required your
+help. (Three slow strokes down the centre of the back, and one round
+each ear.) When it first came into my mind I was at a loss who to trust
+in the matter. I thought of Vendon, but I found Vendon was dead. I
+thought of Brownlow, but Brownlow was no longer faithful. (Two strokes
+down the back and two on the throat.) Then bit by bit I remembered you.
+I was in Brazil at the time. So I sent for you. You came. So far so
+good."
+
+He rose, and crossed over to the fireplace. As he went the cat crawled
+back to its original position on his shoulder. Then his voice changed
+once more to its former business-like tone.
+
+"I am not going to tell you very much about it. But from what I do tell
+you, you will be able to gather a great deal and imagine the rest. To
+begin with, there is a man living in this world to-day who has done me a
+great and lasting injury. What that injury is is no concern of yours.
+You would not understand if I told you. So we'll leave that out of the
+question. He is immensely rich. His cheque for £300,000 would be
+honoured by his bank at any minute. Obviously he is a power. He has had
+reason to know that I am pitting my wits against his, and he flatters
+himself that so far he has got the better of me. That is because I am
+drawing him on. I am maturing a plan which will make him a poor and a
+very miserable man at one and the same time. If that scheme succeeds,
+and I am satisfied with the way you three men have performed the parts I
+shall call on you to play in it, I shall pay to each of you the sum of
+£10,000. If it doesn't succeed, then you will each receive a thousand
+and your expenses. Do you follow me?"
+
+It was evident from their faces that they hung upon his every word.
+
+"But, remember, I demand from you your whole and entire labour. While
+you are serving me you are mine body and soul. I know you are
+trustworthy. I have had good proof that you are--pardon the
+expression--unscrupulous, and I flatter myself you are silent. What is
+more, I shall tell you nothing beyond what is necessary for the carrying
+out of my scheme, so that you could not betray me if you would. Now for
+my plans!"
+
+He sat down again and took a paper from his pocket. Having perused it,
+he turned to Eastover.
+
+"You will leave at once--that is to say, by the boat on Wednesday--for
+Sydney. You will book your passage to-morrow morning, first thing, and
+join her in Plymouth. You will meet me to-morrow evening at an address I
+will send you, and receive your final instructions. Good-night."
+
+Seeing that he was expected to go, Eastover rose, shook hands, and left
+the room without a word. He was too astonished to hesitate or to say
+anything.
+
+Nikola took another letter from his pocket and turned to Prendergast.
+"*You* will go down to Dover to-night, cross to Paris to-morrow morning,
+and leave this letter personally at the address you will find written on
+it. On Thursday, at half-past two precisely, you will deliver me an
+answer in the porch at Charing Cross. You will find sufficient money in
+that envelope to pay all your expenses. Now go!"
+
+"At half-past two you shall have your answer. Good-night."
+
+"Good-night."
+
+When Prendergast had left the room, Dr. Nikola lit another cigar and
+turned his attentions to Mr. Baxter.
+
+"Six months ago, Mr. Baxter, I found for you a situation as tutor to the
+young Marquis of Beckenham. You still hold it, I suppose?"
+
+"I do."
+
+"Is the father well disposed towards you?"
+
+"In every way. I have done my best to ingratiate myself with him. That
+was one of your instructions."
+
+"Yes, yes! But I was not certain that you would succeed. If the old man
+is anything like what he was when I last met him he must still be a
+difficult person to deal with. Does the boy like you?"
+
+"I hope so."
+
+"Have you brought me his photograph as I directed?"
+
+"I have. Here it is."
+
+Baxter took a photograph from his pocket and handed it across the table.
+
+"Good. You have done very well, Mr. Baxter. I am pleased with you.
+To-morrow morning you will go back to Yorkshire----"
+
+"I beg your pardon, Bournemouth. His Grace owns a house near
+Bournemouth, which he occupies during the summer months."
+
+"Very well--then to-morrow morning you will go back to Bournemouth and
+continue to ingratiate yourself with father and son. You will also begin
+to implant in the boy's mind a desire for travel. Don't let him become
+aware that his desire has its source in you--but do not fail to foster
+it all you can. I will communicate with you further in a day or two. Now
+go."
+
+Baxter in his turn left the room. The door closed. Dr. Nikola picked up
+the photograph and studied it.
+
+"The likeness is unmistakable--or it ought to be. My friend, my very
+dear friend, Wetherell, my toils are closing on you. My arrangements are
+perfecting themselves admirably. Presently, when all is complete, I
+shall press the lever, the machinery will be set in motion, and you will
+find yourself being slowly but surely ground into powder. Then you will
+hand over what I want, and be sorry you thought fit to baulk Dr.
+Nikola!"
+
+He rang the bell and ordered his bill. This duty discharged, he placed
+the cat back in its prison, shut the lid, descended with the basket to
+the hall, and called a hansom. The porter inquired to what address he
+should order the cabman to drive. Dr. Nikola did not reply for a moment,
+then he said, as if he had been thinking something out: "The *Green
+Sailor* public-house, East India Dock Road."
+
+
+------------------------
+
+You can read the rest of "A Bid For Fortune; Or, Dr. Nikola's Vendetta" at `Open Library <https://archive.org/stream/bidforfortunenov00bootiala#page/12/mode/2up>`__
diff --git a/nikola/data/samplesite/pages/extending.rst b/nikola/data/samplesite/pages/extending.rst
new file mode 120000
index 0000000..aab25e2
--- /dev/null
+++ b/nikola/data/samplesite/pages/extending.rst
@@ -0,0 +1 @@
+../../../../docs/extending.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/extending.txt b/nikola/data/samplesite/pages/extending.txt
deleted file mode 120000
index f545532..0000000
--- a/nikola/data/samplesite/pages/extending.txt
+++ /dev/null
@@ -1 +0,0 @@
-../../../../docs/extending.txt \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/internals.rst b/nikola/data/samplesite/pages/internals.rst
new file mode 120000
index 0000000..23b276d
--- /dev/null
+++ b/nikola/data/samplesite/pages/internals.rst
@@ -0,0 +1 @@
+../../../../docs/internals.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/internals.txt b/nikola/data/samplesite/pages/internals.txt
deleted file mode 120000
index b955b57..0000000
--- a/nikola/data/samplesite/pages/internals.txt
+++ /dev/null
@@ -1 +0,0 @@
-../../../../docs/internals.txt \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/manual.rst b/nikola/data/samplesite/pages/manual.rst
index 9992900..4d5f0a1 120000
--- a/nikola/data/samplesite/pages/manual.rst
+++ b/nikola/data/samplesite/pages/manual.rst
@@ -1 +1 @@
-../../../../docs/manual.txt \ No newline at end of file
+../../../../docs/manual.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/path_handlers.rst b/nikola/data/samplesite/pages/path_handlers.rst
new file mode 120000
index 0000000..23193d7
--- /dev/null
+++ b/nikola/data/samplesite/pages/path_handlers.rst
@@ -0,0 +1 @@
+../../../../docs/path_handlers.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/path_handlers.txt b/nikola/data/samplesite/pages/path_handlers.txt
deleted file mode 120000
index cce056b..0000000
--- a/nikola/data/samplesite/pages/path_handlers.txt
+++ /dev/null
@@ -1 +0,0 @@
-../../../../docs/path_handlers.txt \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/quickref.rst b/nikola/data/samplesite/pages/quickref.rst
index 7cc91bd..152fbd0 100644
--- a/nikola/data/samplesite/pages/quickref.rst
+++ b/nikola/data/samplesite/pages/quickref.rst
@@ -8,7 +8,7 @@
.. raw:: html
- <div class="alert alert-info pull-right" style="margin-left: 2em;">
+ <div class="alert alert-primary float-md-right" style="margin-left: 2em;">
<h2><a name="contents">Contents</a></h2>
<ul>
@@ -1214,11 +1214,11 @@
<td>
<samp>Titles&nbsp;are&nbsp;targets,&nbsp;too</samp>
<br><samp>=======================</samp>
- <br><samp>Implict&nbsp;references,&nbsp;like&nbsp;`Titles&nbsp;are</samp>
+ <br><samp>Implicit&nbsp;references,&nbsp;like&nbsp;`Titles&nbsp;are</samp>
<br><samp>targets,&nbsp;too`_.</samp>
<td>
<font size="+2"><strong><a name="title">Titles are targets, too</a></strong></font>
- <p>Implict references, like <a href="#title">Titles are
+ <p>Implicit references, like <a href="#title">Titles are
targets, too</a>.
</table>
diff --git a/nikola/data/samplesite/pages/quickstart.rst b/nikola/data/samplesite/pages/quickstart.rst
index 5937e56..28a452d 100644
--- a/nikola/data/samplesite/pages/quickstart.rst
+++ b/nikola/data/samplesite/pages/quickstart.rst
@@ -1,12 +1,9 @@
.. title: A reStructuredText Primer
.. slug: quickstart
.. date: 2012-03-30 23:00:00 UTC-03:00
-.. tags:
-.. link:
-.. description:
-
-A ReStructuredText Primer
-=========================
+.. tags:
+.. link:
+.. description:
:Author: Richard Jones
:Version: $Revision: 5801 $
@@ -23,7 +20,7 @@ reference. If these links don't work, please refer to the `master
quick reference`_ document.
__
-.. _Quick reStructuredText: quickref.html
+.. _Quick reStructuredText: ../quickref/
.. _master quick reference:
http://docutils.sourceforge.net/docs/user/rst/quickref.html
@@ -65,7 +62,7 @@ Results in:
This is another one.
-__ quickref.html#paragraphs
+__ ../quickref/#paragraphs
Text styles
@@ -73,7 +70,7 @@ Text styles
(quickref__)
-__ quickref.html#inline-markup
+__ ../quickref/#inline-markup
Inside paragraphs and other bodies of text, you may additionally mark
text for *italics* with "``*italics*``" or **bold** with
@@ -95,7 +92,7 @@ by enclosing it in double back-quotes (inline literals), like this::
``*``
-__ quickref.html#escaping
+__ ../quickref/#escaping
.. Tip:: Think of inline markup as a form of (parentheses) and use it
the same way: immediately before and after the text being marked
@@ -119,7 +116,7 @@ Lists must always start a new paragraph -- that is, they must appear
after a blank line.
**enumerated** lists (numbers, letters or roman numerals; quickref__)
- __ quickref.html#enumerated-lists
+ __ ../quickref/#enumerated-lists
Start a line off with a number or letter followed by a period ".",
right bracket ")" or surrounded by brackets "( )" -- whatever you're
@@ -170,7 +167,7 @@ after a blank line.
1) and again
**bulleted** lists (quickref__)
- __ quickref.html#bullet-lists
+ __ ../quickref/#bullet-lists
Just like enumerated lists, start the line off with a bullet point
character - either "-", "+" or "*"::
@@ -194,7 +191,7 @@ after a blank line.
- another item
**definition** lists (quickref__)
- __ quickref.html#definition-lists
+ __ ../quickref/#definition-lists
Unlike the other two, the definition lists consist of a term, and
the definition of that term. The format of a definition list is::
@@ -222,7 +219,7 @@ Preformatting (code samples)
----------------------------
(quickref__)
-__ quickref.html#literal-blocks
+__ ../quickref/#literal-blocks
To just include a chunk of preformatted, never-to-be-fiddled-with
text, finish the prior paragraph with "``::``". The preformatted
@@ -270,7 +267,7 @@ Sections
(quickref__)
-__ quickref.html#section-structure
+__ ../quickref/#section-structure
To break longer text up into sections, you use **section headers**.
These are a single line of text (one or more words) with adornment: an
@@ -364,9 +361,9 @@ Images
(quickref__)
-__ quickref.html#directives
+__ ../quickref/#directives
-To include an image in your document, you use the the ``image`` directive__.
+To include an image in your document, you use the ``image`` directive__.
For example::
.. image:: /images/nikola.png
diff --git a/nikola/data/samplesite/pages/slides-demo.rst b/nikola/data/samplesite/pages/slides-demo.rst
deleted file mode 100644
index 0d07bbc..0000000
--- a/nikola/data/samplesite/pages/slides-demo.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-.. title: Slides Demo
-.. slug: slides-demo
-.. date: 2012-12-27 10:16:20 UTC-03:00
-.. tags:
-.. link:
-.. description:
-
-Nikola intends to let you do slideshows easily:
-
-.. slides::
-
- /galleries/demo/tesla_conducts_lg.jpg
- /galleries/demo/tesla_lightning2_lg.jpg
- /galleries/demo/tesla4_lg.jpg
- /galleries/demo/tesla_lightning1_lg.jpg
- /galleries/demo/tesla_tower1_lg.jpg
-
diff --git a/nikola/data/samplesite/pages/social_buttons.rst b/nikola/data/samplesite/pages/social_buttons.rst
new file mode 120000
index 0000000..df8d07c
--- /dev/null
+++ b/nikola/data/samplesite/pages/social_buttons.rst
@@ -0,0 +1 @@
+../../../../docs/social_buttons.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/social_buttons.txt b/nikola/data/samplesite/pages/social_buttons.txt
deleted file mode 120000
index b60d598..0000000
--- a/nikola/data/samplesite/pages/social_buttons.txt
+++ /dev/null
@@ -1 +0,0 @@
-../../../../docs/social_buttons.txt \ No newline at end of file
diff --git a/nikola/data/samplesite/pages/theming.rst b/nikola/data/samplesite/pages/theming.rst
index d2dddb6..d004aa8 120000
--- a/nikola/data/samplesite/pages/theming.rst
+++ b/nikola/data/samplesite/pages/theming.rst
@@ -1 +1 @@
-../../../../docs/theming.txt \ No newline at end of file
+../../../../docs/theming.rst \ No newline at end of file
diff --git a/nikola/data/samplesite/posts/1.rst b/nikola/data/samplesite/posts/1.rst
index 386251b..628dfd7 100644
--- a/nikola/data/samplesite/posts/1.rst
+++ b/nikola/data/samplesite/posts/1.rst
@@ -21,7 +21,6 @@ Next steps:
* `Visit the Nikola website to learn more <https://getnikola.com>`__
* `See a demo photo gallery <link://gallery/demo>`__
* :doc:`See a demo listing <listings-demo>`
-* :doc:`See a demo slideshow <slides-demo>`
* :doc:`See a demo of a longer text <dr-nikolas-vendetta>`
Send feedback to info@getnikola.com!
diff --git a/nikola/data/symlinked.txt b/nikola/data/symlinked.txt
index c0d37eb..477335e 100644
--- a/nikola/data/symlinked.txt
+++ b/nikola/data/symlinked.txt
@@ -1,142 +1,37 @@
-docs/sphinx/creating-a-site.txt
-docs/sphinx/creating-a-theme.txt
-docs/sphinx/extending.txt
-docs/sphinx/internals.txt
-docs/sphinx/manual.txt
-docs/sphinx/path_handlers.txt
-docs/sphinx/social_buttons.txt
-docs/sphinx/theming.txt
+docs/sphinx/creating-a-site.rst
+docs/sphinx/creating-a-theme.rst
+docs/sphinx/extending.rst
+docs/sphinx/internals.rst
+docs/sphinx/manual.rst
+docs/sphinx/path_handlers.rst
+docs/sphinx/social_buttons.rst
+docs/sphinx/support.rst
+docs/sphinx/template-variables.rst
+docs/sphinx/theming.rst
nikola/data/samplesite/pages/creating-a-theme.rst
-nikola/data/samplesite/pages/extending.txt
-nikola/data/samplesite/pages/internals.txt
+nikola/data/samplesite/pages/extending.rst
+nikola/data/samplesite/pages/internals.rst
nikola/data/samplesite/pages/manual.rst
-nikola/data/samplesite/pages/path_handlers.txt
-nikola/data/samplesite/pages/social_buttons.txt
+nikola/data/samplesite/pages/path_handlers.rst
+nikola/data/samplesite/pages/social_buttons.rst
nikola/data/samplesite/pages/theming.rst
nikola/data/symlink-test-link.txt
-nikola/data/themes/base/assets/js/moment-with-locales.min.js
+nikola/data/themes/base/assets/css/baguetteBox.min.css
+nikola/data/themes/base/assets/js/baguetteBox.min.js
+nikola/data/themes/base/assets/js/html5.js
+nikola/data/themes/base/assets/js/html5shiv-printshiv.min.js
+nikola/data/themes/base/assets/js/justified-layout.min.js
+nikola/data/themes/base/assets/js/luxon.min.js
nikola/data/themes/base/messages/messages_cz.py
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css.map
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css.map
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css.map
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css
-nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css.map
-nikola/data/themes/bootstrap3-jinja/assets/css/colorbox.css
-nikola/data/themes/bootstrap3-jinja/assets/css/images/controls.png
-nikola/data/themes/bootstrap3-jinja/assets/css/images/loading.gif
-nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.eot
-nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.svg
-nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.ttf
-nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff
-nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff2
-nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.js
-nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.min.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ar.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bg.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bn.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ca.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-cs.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-da.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-de.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-es.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-et.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fa.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fi.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fr.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gl.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gr.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-he.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hr.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hu.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-id.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-it.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ja.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-kr.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lt.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lv.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-my.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-nl.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-no.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pl.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ro.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ru.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-si.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sk.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sr.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sv.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-tr.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-uk.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js
-nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js
-nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox-min.js
-nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox.js
-nikola/data/themes/bootstrap3-jinja/assets/js/jquery.js
-nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.js
-nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.map
-nikola/data/themes/bootstrap3-jinja/bundles
-nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css
-nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css.map
-nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css
-nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css.map
-nikola/data/themes/bootstrap3/assets/css/bootstrap.css
-nikola/data/themes/bootstrap3/assets/css/bootstrap.css.map
-nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css
-nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css.map
-nikola/data/themes/bootstrap3/assets/css/colorbox.css
-nikola/data/themes/bootstrap3/assets/css/images/controls.png
-nikola/data/themes/bootstrap3/assets/css/images/loading.gif
-nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.eot
-nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.svg
-nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.ttf
-nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff
-nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff2
-nikola/data/themes/bootstrap3/assets/js/bootstrap.js
-nikola/data/themes/bootstrap3/assets/js/bootstrap.min.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ar.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bg.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bn.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ca.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-cs.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-da.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-de.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-es.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-et.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fa.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fi.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fr.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gl.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gr.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-he.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hr.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hu.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-id.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-it.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ja.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-kr.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lt.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lv.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-my.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-nl.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-no.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pl.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ro.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ru.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-si.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sk.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sr.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sv.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-tr.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-uk.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js
-nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js
-nikola/data/themes/bootstrap3/assets/js/jquery.colorbox-min.js
-nikola/data/themes/bootstrap3/assets/js/jquery.colorbox.js
-nikola/data/themes/bootstrap3/assets/js/jquery.js
-nikola/data/themes/bootstrap3/assets/js/jquery.min.js
-nikola/data/themes/bootstrap3/assets/js/jquery.min.map
+nikola/data/themes/bootblog4-jinja/assets/css/bootblog.css
+nikola/data/themes/bootblog4-jinja/bundles
+nikola/data/themes/bootstrap4-jinja/assets/css/bootstrap.min.css
+nikola/data/themes/bootstrap4-jinja/assets/js/bootstrap.min.js
+nikola/data/themes/bootstrap4-jinja/assets/js/jquery.min.js
+nikola/data/themes/bootstrap4-jinja/assets/js/popper.min.js
+nikola/data/themes/bootstrap4-jinja/bundles
+nikola/data/themes/bootstrap4/assets/css/bootstrap.min.css
+nikola/data/themes/bootstrap4/assets/js/bootstrap.min.js
+nikola/data/themes/bootstrap4/assets/js/jquery.min.js
+nikola/data/themes/bootstrap4/assets/js/popper.min.js
nikola/plugins/command/auto/livereload.js
diff --git a/nikola/data/themes/base-jinja/AUTHORS.txt b/nikola/data/themes/base-jinja/AUTHORS.txt
deleted file mode 100644
index 043d497..0000000
--- a/nikola/data/themes/base-jinja/AUTHORS.txt
+++ /dev/null
@@ -1 +0,0 @@
-Roberto Alsina <https://github.com/ralsina>
diff --git a/nikola/data/themes/base-jinja/base-jinja.theme b/nikola/data/themes/base-jinja/base-jinja.theme
new file mode 100644
index 0000000..64dc002
--- /dev/null
+++ b/nikola/data/themes/base-jinja/base-jinja.theme
@@ -0,0 +1,10 @@
+[Theme]
+engine = jinja
+parent = base
+author = The Nikola Contributors
+author_url = https://getnikola.com/
+license = MIT
+
+[Family]
+family = base
+mako_version = base
diff --git a/nikola/data/themes/base-jinja/engine b/nikola/data/themes/base-jinja/engine
deleted file mode 100644
index 6f04b30..0000000
--- a/nikola/data/themes/base-jinja/engine
+++ /dev/null
@@ -1 +0,0 @@
-jinja
diff --git a/nikola/data/themes/base-jinja/parent b/nikola/data/themes/base-jinja/parent
deleted file mode 100644
index df967b9..0000000
--- a/nikola/data/themes/base-jinja/parent
+++ /dev/null
@@ -1 +0,0 @@
-base
diff --git a/nikola/data/themes/base-jinja/templates/archive.tmpl b/nikola/data/themes/base-jinja/templates/archive.tmpl
new file mode 100644
index 0000000..f2b715d
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/archive.tmpl
@@ -0,0 +1 @@
+{% extends 'list_post.tmpl' %}
diff --git a/nikola/data/themes/base-jinja/templates/archive_navigation_helper.tmpl b/nikola/data/themes/base-jinja/templates/archive_navigation_helper.tmpl
new file mode 100644
index 0000000..ce913a3
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/archive_navigation_helper.tmpl
@@ -0,0 +1,27 @@
+{# -*- coding: utf-8 -*- #}
+
+{% macro archive_navigation() %}
+{% if 'archive_page' in pagekind %}
+ {% if has_archive_navigation %}
+ <nav class="archivenav">
+ <ul class="pager">
+ {% if previous_archive %}
+ <li class="previous"><a href="{{ previous_archive }}" rel="prev">{{ messages("Previous") }}</a></li>
+ {% else %}
+ <li class="previous disabled"><a href="#" rel="prev">{{ messages("Previous") }}</a></li>
+ {% endif %}
+ {% if up_archive %}
+ <li class="up"><a href="{{ up_archive }}" rel="up">{{ messages("Up") }}</a></li>
+ {% else %}
+ <li class="up disabled"><a href="#" rel="up">{{ messages("Up") }}</a></li>
+ {% endif %}
+ {% if next_archive %}
+ <li class="next"><a href="{{ next_archive }}" rel="next">{{ messages("Next") }}</a></li>
+ {% else %}
+ <li class="next disabled"><a href="#" rel="next">{{ messages("Next") }}</a></li>
+ {% endif %}
+ </ul>
+ </nav>
+ {% endif %}
+{% endif %}
+{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/archiveindex.tmpl b/nikola/data/themes/base-jinja/templates/archiveindex.tmpl
index 8b9286e..a8bc9c6 100644
--- a/nikola/data/themes/base-jinja/templates/archiveindex.tmpl
+++ b/nikola/data/themes/base-jinja/templates/archiveindex.tmpl
@@ -1,13 +1,20 @@
{# -*- coding: utf-8 -*- #}
{% extends 'index.tmpl' %}
+{% import 'archive_navigation_helper.tmpl' as archive_nav with context %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% block extra_head %}
{{ super() }}
- {% if translations|length > 1 and generate_atom %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ archive_name }} section ({{ language }})" href="{{ _link("archive_atom", archive_name, language) }}">
- {% endfor %}
- {% elif generate_atom %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ archive_name }} archive" href="{{ _link("archive_atom", archive_name) }}">
- {% endif %}
+ {{ feeds_translations.head(archive_name, kind, rss_override=False) }}
+{% endblock %}
+
+{% block content_header %}
+ <header>
+ <h1>{{ title|e }}</h1>
+ {{ archive_nav.archive_navigation() }}
+ <div class="metadata">
+ {{ feeds_translations.feed_link(archive, kind) }}
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
+ </header>
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/author.tmpl b/nikola/data/themes/base-jinja/templates/author.tmpl
index 327debe..4d8a876 100644
--- a/nikola/data/themes/base-jinja/templates/author.tmpl
+++ b/nikola/data/themes/base-jinja/templates/author.tmpl
@@ -1,43 +1,28 @@
{# -*- coding: utf-8 -*- #}
{% extends 'list_post.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% block extra_head %}
- {{ super() }}
- {% if translations|length > 1 and generate_rss %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ author|e }} ({{ language }})" href="{{ _link(kind + "_rss", author, language) }}">
- {% endfor %}
- {% elif generate_rss %}
- <link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ author|e }}" href="{{ _link(kind + "_rss", author) }}">
- {% endif %}
+ {{ feeds_translations.head(author, kind, rss_override=False) }}
{% endblock %}
-
{% block content %}
<article class="authorpage">
<header>
<h1>{{ title|e }}</h1>
{% if description %}
- <p>{{ description }}</p>
+ <p>{{ description }}</p>
{% endif %}
<div class="metadata">
- {% if translations|length > 1 and generate_rss %}
- {% for language in translations|sort %}
- <p class="feedlink">
- <a href="{{ _link(kind + "_rss", author, language) }}" hreflang="{{ language }}" type="application/rss+xml">{{ messages('RSS feed', language) }} ({{ language }})</a>&nbsp;
- </p>
- {% endfor %}
- {% elif generate_rss %}
- <p class="feedlink"><a href="{{ _link(kind + "_rss", author) }}" type="application/rss+xml">{{ messages('RSS feed') }}</a></p>
- {% endif %}
+ {{ feeds_translations.feed_link(author, kind) }}
</div>
</header>
{% if posts %}
- <ul class="postlist">
- {% for post in posts %}
- <li><time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time> <a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}</a></li>
- {% endfor %}
- </ul>
+ <ul class="postlist">
+ {% for post in posts %}
+ <li><time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time> <a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}</a></li>
+ {% endfor %}
+ </ul>
{% endif %}
</article>
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/authorindex.tmpl b/nikola/data/themes/base-jinja/templates/authorindex.tmpl
index 3c40ee1..4b2fcbf 100644
--- a/nikola/data/themes/base-jinja/templates/authorindex.tmpl
+++ b/nikola/data/themes/base-jinja/templates/authorindex.tmpl
@@ -1,13 +1,21 @@
{# -*- coding: utf-8 -*- #}
{% extends 'index.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block content_header %}
+ <header>
+ <h1>{{ title|e }}</h1>
+ {% if description %}
+ <p>{{ description }}</p>
+ {% endif %}
+ <div class="metadata">
+ {{ feeds_translations.feed_link(author, kind) }}
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
+ </header>
+{% endblock %}
{% block extra_head %}
{{ super() }}
- {% if tranlations|length > 1 and generate_atom %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ author|e }} section ({{ language }})" href="{{ _link(kind + "_atom", author, language) }}">
- {% endfor %}
- {% elif generate_atom %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ author|e }} section" href="{{ _link("author" + "_atom", author) }}">
- {% endif %}
+ {{ feeds_translations.head(author, kind, rss_override=False) }}
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/authors.tmpl b/nikola/data/themes/base-jinja/templates/authors.tmpl
index 8b6ea64..c8e05ff 100644
--- a/nikola/data/themes/base-jinja/templates/authors.tmpl
+++ b/nikola/data/themes/base-jinja/templates/authors.tmpl
@@ -1,10 +1,18 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block extra_head %}
+ {{ feeds_translations.head(kind=kind, feeds=False) }}
+{% endblock %}
{% block content %}
<article class="authorindex">
{% if items %}
<h2>{{ messages("Authors") }}</h2>
+ <div class="metadata">
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
<ul class="postlist">
{% for text, link in items %}
{% if text not in hidden_authors %}
diff --git a/nikola/data/themes/base-jinja/templates/base.tmpl b/nikola/data/themes/base-jinja/templates/base.tmpl
index 5412326..8b057db 100644
--- a/nikola/data/themes/base-jinja/templates/base.tmpl
+++ b/nikola/data/themes/base-jinja/templates/base.tmpl
@@ -2,8 +2,8 @@
{% import 'base_helper.tmpl' as base with context %}
{% import 'base_header.tmpl' as header with context %}
{% import 'base_footer.tmpl' as footer with context %}
-{% import 'annotation_helper.tmpl' as annotations with context %}
{{ set_locale(lang) }}
+{# <html> tag is included by base.html_headstart #}
{{ base.html_headstart() }}
{% block extra_head %}
{# Leave this block alone. #}
@@ -11,16 +11,29 @@
{{ template_hooks['extra_head']() }}
</head>
<body>
-<a href="#content" class="sr-only sr-only-focusable">{{ messages("Skip to main content") }}</a>
+ <a href="#content" class="sr-only sr-only-focusable">{{ messages("Skip to main content") }}</a>
<div id="container">
- {{ header.html_header() }}
- <main id="content">
+ {{ header.html_header() }}
+ <main id="content">
{% block content %}{% endblock %}
- </main>
- {{ footer.html_footer() }}
+ </main>
+ {{ footer.html_footer() }}
</div>
{{ base.late_load_js() }}
+ {% if date_fanciness != 0 %}
+ <!-- fancy dates -->
+ <script>
+ luxon.Settings.defaultLocale = "{{ luxon_locales[lang] }}";
+ fancydates({{ date_fanciness }}, {{ luxon_date_format }});
+ </script>
+ <!-- end fancy dates -->
+ {% endif %}
{% block extra_js %}{% endblock %}
+ <script>
+ baguetteBox.run('div#content', {
+ ignoreClass: 'islink',
+ captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
+ </script>
{{ body_end }}
{{ template_hooks['body_end']() }}
</body>
diff --git a/nikola/data/themes/base-jinja/templates/base_footer.tmpl b/nikola/data/themes/base-jinja/templates/base_footer.tmpl
index 2e541a6..db44a67 100644
--- a/nikola/data/themes/base-jinja/templates/base_footer.tmpl
+++ b/nikola/data/themes/base-jinja/templates/base_footer.tmpl
@@ -1,5 +1,4 @@
{# -*- coding: utf-8 -*- #}
-{% import 'base_helper.tmpl' as base with context %}
{% macro html_footer() %}
{% if content_footer %}
diff --git a/nikola/data/themes/base-jinja/templates/base_header.tmpl b/nikola/data/themes/base-jinja/templates/base_header.tmpl
index d9370d7..bfbd447 100644
--- a/nikola/data/themes/base-jinja/templates/base_header.tmpl
+++ b/nikola/data/themes/base-jinja/templates/base_header.tmpl
@@ -16,7 +16,7 @@
{% endmacro %}
{% macro html_site_title() %}
- <h1 id="brand"><a href="{{ abs_link(_link("root", None, lang)) }}" title="{{ blog_title|e }}" rel="home">
+ <h1 id="brand"><a href="{{ _link("root", None, lang) }}" title="{{ blog_title|e }}" rel="home">
{% if logo_url %}
<img src="{{ logo_url }}" alt="{{ blog_title|e }}" id="logo">
{% endif %}
@@ -30,13 +30,22 @@
{% macro html_navigation_links() %}
<nav id="menu">
<ul>
- {% for url, text in navigation_links[lang] %}
+ {{ html_navigation_links_entries(navigation_links) }}
+ {{ html_navigation_links_entries(navigation_alt_links) }}
+ {{ template_hooks['menu']() }}
+ {{ template_hooks['menu_alt']() }}
+ </ul>
+ </nav>
+{% endmacro %}
+
+{% macro html_navigation_links_entries(navigation_links_source) %}
+ {% for url, text in navigation_links_source[lang] %}
{% if isinstance(url, tuple) %}
<li> {{ text }}
<ul>
{% for suburl, text in url %}
{% if rel_link(permalink, suburl) == "#" %}
- <li class="active"><a href="{{ permalink }}">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a></li>
+ <li class="active"><a href="{{ permalink }}">{{ text }}<span class="sr-only"> {{ messages("(active)", lang) }}</span></a></li>
{% else %}
<li><a href="{{ suburl }}">{{ text }}</a></li>
{% endif %}
@@ -44,16 +53,12 @@
</ul>
{% else %}
{% if rel_link(permalink, url) == "#" %}
- <li class="active"><a href="{{ permalink }}">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a></li>
+ <li class="active"><a href="{{ permalink }}">{{ text }}<span class="sr-only"> {{ messages("(active)", lang) }}</span></a></li>
{% else %}
<li><a href="{{ url }}">{{ text }}</a></li>
{% endif %}
{% endif %}
{% endfor %}
- {{ template_hooks['menu']() }}
- {{ template_hooks['menu_alt']() }}
- </ul>
- </nav>
{% endmacro %}
{% macro html_translation_header() %}
diff --git a/nikola/data/themes/base-jinja/templates/base_helper.tmpl b/nikola/data/themes/base-jinja/templates/base_helper.tmpl
index 04f49fe..a05abb9 100644
--- a/nikola/data/themes/base-jinja/templates/base_helper.tmpl
+++ b/nikola/data/themes/base-jinja/templates/base_helper.tmpl
@@ -1,31 +1,25 @@
{# -*- coding: utf-8 -*- #}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% macro html_headstart() %}
<!DOCTYPE html>
<html \
-prefix='
-{% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) %}
-og: http://ogp.me/ns# article: http://ogp.me/ns/article#
-{% endif %}
-{% if comment_system == 'facebook' %}
-fb: http://ogp.me/ns/fb#
-{% endif %}
-' \
-{% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) %}
-vocab="http://ogp.me/ns" \
-{% endif %}
+ prefix='
+ og: http://ogp.me/ns# article: http://ogp.me/ns/article#
+ {% if comment_system == 'facebook' %}
+ fb: http://ogp.me/ns/fb#
+ {% endif %}
+ ' \
+ vocab="http://ogp.me/ns" \
{% if is_rtl %}
-dir="rtl"
+ dir="rtl"
{% endif %}
lang="{{ lang }}">
<head>
<meta charset="utf-8">
- {% if use_base_tag %}
- <base href="{{ abs_link(permalink) }}">
- {% endif %}
{% if description %}
- <meta name="description" content="{{ description|e }}">
+ <meta name="description" content="{{ description|e }}">
{% endif %}
<meta name="viewport" content="width=device-width">
{% if title == blog_title %}
@@ -35,8 +29,11 @@ lang="{{ lang }}">
{% endif %}
{{ html_stylesheets() }}
- <meta content="{{ theme_color }}" name="theme-color">
- {{ html_feedlinks() }}
+ <meta name="theme-color" content="{{ theme_color }}">
+ {% if meta_generator_tag %}
+ <meta name="generator" content="Nikola (getnikola.com)">
+ {% endif %}
+ {{ feeds_translations.head(classification=None, kind='index', other=False) }}
<link rel="canonical" href="{{ abs_link(permalink) }}">
{% if favicons %}
@@ -56,29 +53,58 @@ lang="{{ lang }}">
<link rel="next" href="{{ nextlink }}" type="text/html">
{% endif %}
- {{ mathjax_config }}
{% if use_cdn %}
- <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ <!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script><![endif]-->
{% else %}
- <!--[if lt IE 9]><script src="{{ url_replacer(permalink, '/assets/js/html5.js', lang) }}"></script><![endif]-->
+ <!--[if lt IE 9]><script src="{{ url_replacer(permalink, '/assets/js/html5shiv-printshiv.min.js', lang, url_type) }}"></script><![endif]-->
{% endif %}
{{ extra_head_data }}
{% endmacro %}
{% macro late_load_js() %}
+ {% if use_bundles %}
+ {% if use_cdn %}
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ <script src="/assets/js/all.js"></script>
+ {% else %}
+ <script src="/assets/js/all-nocdn.js"></script>
+ {% endif %}
+ {% else %}
+ {% if use_cdn %}
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ {% else %}
+ <script src="/assets/js/baguetteBox.min.js"></script>
+ {% endif %}
+ {% endif %}
+ {% if date_fanciness != 0 %}
+ {% if date_fanciness == 2 %}
+ <script src="https://polyfill.io/v3/polyfill.js?features=Intl.RelativeTimeFormat.%7Elocale.{{ luxon_locales[lang] }}"></script>
+ {% endif %}
+ {% if use_cdn %}
+ <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js" integrity="sha256-OVk2fwTRcXYlVFxr/ECXsakqelJbOg5WCj1dXSIb+nU=" crossorigin="anonymous"></script>
+ {% else %}
+ <script src="/assets/js/luxon.min.js"></script>
+ {% endif %}
+ {% if not use_bundles %}
+ <script src="/assets/js/fancydates.min.js"></script>
+ {% endif %}
+ {% endif %}
{{ social_buttons_code }}
{% endmacro %}
{% macro html_stylesheets() %}
{% if use_bundles %}
{% if use_cdn %}
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" integrity="sha256-cLMYWYYutHkt+KpNqjg7NVkYSQ+E2VbrXsEvOqU7mL0=" crossorigin="anonymous">
<link href="/assets/css/all.css" rel="stylesheet" type="text/css">
{% else %}
<link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
{% endif %}
{% else %}
- <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/baguetteBox.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/rst_base.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/nikola_rst.css" rel="stylesheet" type="text/css">
<link href="/assets/css/code.css" rel="stylesheet" type="text/css">
<link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
{% if has_custom_css %}
@@ -91,34 +117,16 @@ lang="{{ lang }}">
{% endif %}
{% endmacro %}
+{# This function is deprecated; use feed_helper directly. #}
{% macro html_feedlinks() %}
- {% if rss_link %}
- {{ rss_link }}
- {% elif generate_rss %}
- {% if translations|length > 1 %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/rss+xml" title="RSS ({{ language }})" href="{{ _link('rss', None, language) }}">
- {% endfor %}
- {% else %}
- <link rel="alternate" type="application/rss+xml" title="RSS" href="{{ _link('rss', None) }}">
- {% endif %}
- {% endif %}
- {% if generate_atom %}
- {% if translations|length > 1 %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/atom+xml" title="Atom ({{ language }})" href="{{ _link('index_atom', None, language) }}">
- {% endfor %}
- {% else %}
- <link rel="alternate" type="application/atom+xml" title="Atom" href="{{ _link('index_atom', None) }}">
- {% endif %}
- {% endif %}
+ {{ feeds_translations.head(classification=None, kind='index', other=False) }}
{% endmacro %}
{% macro html_translations() %}
<ul class="translations">
{% for langname in translations|sort %}
{% if langname != lang %}
- <li><a href="{{ abs_link(_link("root", None, langname)) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></li>
+ <li><a href="{{ _link("root", None, langname) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></li>
{% endif %}
{% endfor %}
</ul>
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper.tmpl
index aba7294..2a7d8dc 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper.tmpl
@@ -1,63 +1,63 @@
{# -*- coding: utf-8 -*- #}
{% import 'comments_helper_disqus.tmpl' as disqus with context %}
-{% import 'comments_helper_livefyre.tmpl' as livefyre with context %}
{% import 'comments_helper_intensedebate.tmpl' as intensedebate with context %}
{% import 'comments_helper_muut.tmpl' as muut with context %}
-{% import 'comments_helper_googleplus.tmpl' as googleplus with context %}
{% import 'comments_helper_facebook.tmpl' as facebook with context %}
{% import 'comments_helper_isso.tmpl' as isso with context %}
+{% import 'comments_helper_commento.tmpl' as commento with context %}
+{% import 'comments_helper_utterances.tmpl' as utterances with context %}
{% macro comment_form(url, title, identifier) %}
{% if comment_system == 'disqus' %}
{{ disqus.comment_form(url, title, identifier) }}
- {% elif comment_system == 'livefyre' %}
- {{ livefyre.comment_form(url, title, identifier) }}
{% elif comment_system == 'intensedebate' %}
{{ intensedebate.comment_form(url, title, identifier) }}
{% elif comment_system == 'muut' %}
{{ muut.comment_form(url, title, identifier) }}
- {% elif comment_system == 'googleplus' %}
- {{ googleplus.comment_form(url, title, identifier) }}
{% elif comment_system == 'facebook' %}
{{ facebook.comment_form(url, title, identifier) }}
{% elif comment_system == 'isso' %}
{{ isso.comment_form(url, title, identifier) }}
+ {% elif comment_system == 'commento' %}
+ {{ commento.comment_form(url, title, identifier) }}
+ {% elif comment_system == 'utterances' %}
+ {{ utterances.comment_form(url, title, identifier) }}
{% endif %}
{% endmacro %}
{% macro comment_link(link, identifier) %}
{% if comment_system == 'disqus' %}
{{ disqus.comment_link(link, identifier) }}
- {% elif comment_system == 'livefyre' %}
- {{ livefyre.comment_link(link, identifier) }}
{% elif comment_system == 'intensedebate' %}
{{ intensedebate.comment_link(link, identifier) }}
{% elif comment_system == 'muut' %}
{{ muut.comment_link(link, identifier) }}
- {% elif comment_system == 'googleplus' %}
- {{ googleplus.comment_link(link, identifier) }}
{% elif comment_system == 'facebook' %}
{{ facebook.comment_link(link, identifier) }}
{% elif comment_system == 'isso' %}
{{ isso.comment_link(link, identifier) }}
+ {% elif comment_system == 'commento' %}
+ {{ commento.comment_link(link, identifier) }}
+ {% elif comment_system == 'utterances' %}
+ {{ utterances.comment_link(link, identifier) }}
{% endif %}
{% endmacro %}
{% macro comment_link_script() %}
{% if comment_system == 'disqus' %}
{{ disqus.comment_link_script() }}
- {% elif comment_system == 'livefyre' %}
- {{ livefyre.comment_link_script() }}
{% elif comment_system == 'intensedebate' %}
{{ intensedebate.comment_link_script() }}
{% elif comment_system == 'muut' %}
{{ muut.comment_link_script() }}
- {% elif comment_system == 'googleplus' %}
- {{ googleplus.comment_link_script() }}
{% elif comment_system == 'facebook' %}
{{ facebook.comment_link_script() }}
{% elif comment_system == 'isso' %}
{{ isso.comment_link_script() }}
+ {% elif comment_system == 'commento' %}
+ {{ commento.comment_link_script() }}
+ {% elif comment_system == 'utterances' %}
+ {{ utterances.comment_link_script() }}
{% endif %}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_commento.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_commento.tmpl
new file mode 100644
index 0000000..25857d9
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_commento.tmpl
@@ -0,0 +1,13 @@
+{# -*- coding: utf-8 -*- #}
+{% macro comment_form(url, title, identifier) %}
+ <div id="commento"></div>
+
+ <script defer src="{{ comment_system_id }}/js/commento.js"></script>
+{% endmacro %}
+
+{% macro comment_link(link, identifier) %}
+ <a href="{{ link }}#commento">{{ messages("Comments") }}</a>
+{% endmacro %}
+
+{% macro comment_link_script() %}
+{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl
index 981453d..4aa42fa 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl
@@ -30,7 +30,7 @@
{% macro comment_link(link, identifier) %}
{% if comment_system_id %}
- <a href="{{ link }}#disqus_thread" data-disqus-identifier="{{ identifier }}">Comments</a>
+ <a href="{{ link }}#disqus_thread" data-disqus-identifier="{{ identifier }}">{{ messages("Comments") }}</a>
{% endif %}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_googleplus.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_googleplus.tmpl
deleted file mode 100644
index cf153e0..0000000
--- a/nikola/data/themes/base-jinja/templates/comments_helper_googleplus.tmpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% macro comment_form(url, title, identifier) %}
-<script src="https://apis.google.com/js/plusone.js"></script>
-<div class="g-comments"
- data-href="{{ url }}"
- data-first_party_property="BLOGGER"
- data-view_type="FILTERED_POSTMOD">
-</div>
-{% endmacro %}
-
-{% macro comment_link(link, identifier) %}
-<div class="g-commentcount" data-href="{{ link }}"></div>
-<script src="https://apis.google.com/js/plusone.js"></script>
-{% endmacro %}
-
-{% macro comment_link_script() %}
-{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_intensedebate.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_intensedebate.tmpl
index 042409b..d649d31 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper_intensedebate.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_intensedebate.tmpl
@@ -6,7 +6,7 @@ var idcomments_post_id = "{{ identifier }}";
var idcomments_post_url = "{{ url }}";
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
-<script src='http://www.intensedebate.com/js/genericCommentWrapperV2.js'></script>
+<script src="https://www.intensedebate.com/js/genericCommentWrapperV2.js"></script>
</script>
{% endmacro %}
@@ -17,7 +17,7 @@ var idcomments_acct = '{{ comment_system_id }}';
var idcomments_post_id = "{{ identifier }}";
var idcomments_post_url = "{{ link }}";
</script>
-<script src="http://www.intensedebate.com/js/genericLinkWrapperV2.js"></script>
+<script src="https://www.intensedebate.com/js/genericLinkWrapperV2.js"></script>
</a>
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_isso.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_isso.tmpl
index b40b5e4..43995c5 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper_isso.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_isso.tmpl
@@ -1,20 +1,26 @@
{# -*- coding: utf-8 -*- #}
{% macro comment_form(url, title, identifier) %}
{% if comment_system_id %}
- <div data-title="{{ title|urlencode }}" id="isso-thread"></div>
- <script src="{{ comment_system_id }}js/embed.min.js" data-isso="{{ comment_system_id }}"></script>
+ <div data-title="{{ title|e }}" id="isso-thread"></div>
+ <script src="{{ comment_system_id }}js/embed.min.js" data-isso="{{ comment_system_id }}" data-isso-lang="{{ lang }}"
+ {% if isso_config %}
+ {% for k, v in isso_config.items() %}
+ data-isso-{{ k }}="{{ v }}"
+ {% endfor %}
+ {% endif %}
+ ></script>
{% endif %}
{% endmacro %}
{% macro comment_link(link, identifier) %}
{% if comment_system_id %}
- <a href="{{ link }}#isso-thread">Comments</a>
+ <a href="{{ link }}#isso-thread">{{ messages("Comments") }}</a>
{% endif %}
{% endmacro %}
{% macro comment_link_script() %}
{% if comment_system_id and 'index' in pagekind %}
- <script src="{{ comment_system_id }}js/count.min.js" data-isso="{{ comment_system_id }}"></script>
+ <script src="{{ comment_system_id }}js/count.min.js" data-isso="{{ comment_system_id }}" data-isso-lang="{{ lang }}"></script>
{% endif %}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_livefyre.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_livefyre.tmpl
deleted file mode 100644
index 5b01fbf..0000000
--- a/nikola/data/themes/base-jinja/templates/comments_helper_livefyre.tmpl
+++ /dev/null
@@ -1,33 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% macro comment_form(url, title, identifier) %}
-<div id="livefyre-comments"></div>
-<script src="http://zor.livefyre.com/wjs/v3.0/javascripts/livefyre.js"></script>
-<script>
-(function () {
- var articleId = "{{ identifier }}";
- fyre.conv.load({}, [{
- el: 'livefyre-comments',
- network: "livefyre.com",
- siteId: "{{ comment_system_id }}",
- articleId: articleId,
- signed: false,
- collectionMeta: {
- articleId: articleId,
- url: fyre.conv.load.makeCollectionUrl(),
- }
- }], function() {});
-}());
-</script>
-{% endmacro %}
-
-{% macro comment_link(link, identifier) %}
- <a href="{{ link }}">
- <span class="livefyre-commentcount" data-lf-site-id="{{ comment_system_id }}" data-lf-article-id="{{ identifier }}">
- 0 Comments
- </span>
-{% endmacro %}
-
-
-{% macro comment_link_script() %}
-<script src="http://zor.livefyre.com/wjs/v1.0/javascripts/CommentCount.js"></script>
-{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_mustache.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_mustache.tmpl
deleted file mode 100644
index 8912e19..0000000
--- a/nikola/data/themes/base-jinja/templates/comments_helper_mustache.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% import 'comments_helper.tmpl' as comments with context %}
-{% if not post.meta('nocomments') %}
- {{ comments.comment_form(post.permalink(absolute=True), post.title(), post.base_path) }}
-{% endif %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_utterances.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_utterances.tmpl
new file mode 100644
index 0000000..e1c03c2
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_utterances.tmpl
@@ -0,0 +1,23 @@
+{# -*- coding: utf-8 -*- #}
+{% macro comment_form(url, title, identifier) %}
+ {% if comment_system_id %}
+ <div data-title="{{ title|e }}" id="utterances-thread"></div>
+ <script src="https://utteranc.es/client.js" repo="{{ comment_system_id }}"
+ {% if utterances_config %}
+ {% for k, v in utterances_config.items() %}
+ {{ k }}="{{ v }}"
+ {% endfor %}
+ {% endif %}
+ ></script>
+ {% endif %}
+{% endmacro %}
+
+{% macro comment_link(link, identifier) %}
+ {% if comment_system_id %}
+ <a href="{{ link }}#utterances-thread">{{ messages("Comments") }}</a>
+ {% endif %}
+{% endmacro %}
+
+
+{% macro comment_link_script() %}
+{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/feeds_translations_helper.tmpl b/nikola/data/themes/base-jinja/templates/feeds_translations_helper.tmpl
new file mode 100644
index 0000000..278e1c4
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/feeds_translations_helper.tmpl
@@ -0,0 +1,124 @@
+{# -*- coding: utf-8 -*- #}
+
+{% macro _head_feed_link(link_type, link_name, link_postfix, classification, kind, language) %}
+ {% if translations|length > 1 %}
+ <link rel="alternate" type="{{ link_type }}" title="{{ link_name|e }} ({{ language }})" hreflang="{{ language }}" href="{{ _link(kind + '_' + link_postfix, classification, language) }}">
+ {% else %}
+ <link rel="alternate" type="{{ link_type }}" title="{{ link_name|e }}" hreflang="{{ language }}" href="{{ _link(kind + '_' + link_postfix, classification, language) }}">
+ {% endif %}
+{% endmacro %}
+
+{% macro _html_feed_link(link_type, link_name, link_postfix, classification, kind, language, name=None) %}
+ {% if translations|length > 1 %}
+ {% if name and kind != "archive" and kind != "author" %}
+ <a href="{{ _link(kind + '_' + link_postfix, classification, language) }}" hreflang="{{ language }}" type="{{ link_type }}">{{ messages(link_name, language) }} ({{ name|e }}, {{ language }})</a>
+ {% else %}
+ <a href="{{ _link(kind + '_' + link_postfix, classification, language) }}" hreflang="{{ language }}" type="{{ link_type }}">{{ messages(link_name, language) }} ({{ language }})</a>
+ {% endif %}
+ {% else %}
+ {% if name and kind != "archive" and kind != "author" %}
+ <a href="{{ _link(kind + '_' + link_postfix, classification, language) }}" hreflang="{{ language }}" type="{{ link_type }}">{{ messages(link_name, language) }} ({{ name|e }})</a>
+ {% else %}
+ <a href="{{ _link(kind + '_' + link_postfix, classification, language) }}" hreflang="{{ language }}" type="{{ link_type }}">{{ messages(link_name, language) }}</a>
+ {% endif %}
+ {% endif %}
+{% endmacro %}
+
+{% macro _html_translation_link(classification, kind, language, name=None) %}
+ {% if name and kind != "archive" and kind != "author" %}
+ <a href="{{ _link(kind, classification, language) }}" hreflang="{{ language }}" rel="alternate">{{ messages("LANGUAGE", language) }} ({{ name|e }})</a>
+ {% else %}
+ <a href="{{ _link(kind, classification, language) }}" hreflang="{{ language }}" rel="alternate">{{ messages("LANGUAGE", language) }}</a>
+ {% endif %}
+{% endmacro %}
+
+{% macro _head_rss(classification=None, kind='index', rss_override=True) %}
+ {% if rss_link and rss_override %}
+ {{ rss_link }}
+ {% endif %}
+ {% if generate_rss and not (rss_link and rss_override) and kind != 'archive' %}
+ {% if translations|length > 1 and has_other_languages and classification and kind != 'index' %}
+ {% for language, classification, name in all_languages %}
+ <link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ name|e }} ({{ language }})" hreflang="{{ language }}" href="{{ _link(kind + "_rss", classification, language) }}">
+ {% endfor %}
+ {% else %}
+ {% for language in translations_feedorder %}
+ {% if (classification or classification == '') and kind != 'index' %}
+ {{ _head_feed_link('application/rss+xml', 'RSS for ' + kind + ' ' + classification, 'rss', classification, kind, language) }}
+ {% else %}
+ {{ _head_feed_link('application/rss+xml', 'RSS', 'rss', classification, 'index', language) }}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+{% endmacro %}
+
+{% macro _head_atom(classification=None, kind='index') %}
+ {% if generate_atom %}
+ {% if translations|length > 1 and has_other_languages and classification and kind != 'index' %}
+ {% for language, classification, name in all_languages %}
+ <link rel="alternate" type="application/atom+xml" title="Atom for {{ kind }} {{ name|e }} ({{ language }})" hreflang="{{ language }}" href="{{ _link(kind + "_atom", classification, language) }}">
+ {% endfor %}
+ {% else %}
+ {% for language in translations_feedorder %}
+ {% if (classification or classification == '') and kind != 'index' %}
+ {{ _head_feed_link('application/atom+xml', 'Atom for ' + kind + ' ' + classification, 'atom', classification, kind, language) }}
+ {% else %}
+ {{ _head_feed_link('application/atom+xml', 'Atom', 'atom', classification, 'index', language) }}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+{% endmacro %}
+
+{# Handles both feeds and translations #}
+{% macro head(classification=None, kind='index', feeds=True, other=True, rss_override=True, has_no_feeds=False) %}
+ {% if feeds and not has_no_feeds %}
+ {{ _head_rss(classification, 'index' if (kind == 'archive' and rss_override) else kind, rss_override) }}
+ {{ _head_atom(classification, kind) }}
+ {% endif %}
+ {% if other and has_other_languages and other_languages %}
+ {% for language, classification, _ in other_languages %}
+ <link rel="alternate" hreflang="{{ language }}" href="{{ _link(kind, classification, language) }}">
+ {% endfor %}
+ {% endif %}
+{% endmacro %}
+
+{% macro feed_link(classification, kind) %}
+ {% if generate_atom or generate_rss %}
+ {% if translations|length > 1 and has_other_languages and kind != 'index' %}
+ {% for language, classification, name in all_languages %}
+ <p class="feedlink">
+ {% if generate_atom %}
+ {{ _html_feed_link('application/atom+xml', 'Atom feed', 'atom', classification, kind, language, name) }}
+ {% endif %}
+ {% if generate_rss and kind != 'archive' %}
+ {{ _html_feed_link('application/rss+xml', 'RSS feed', 'rss', classification, kind, language, name) }}
+ {% endif %}
+ </p>
+ {% endfor %}
+ {% else %}
+ {% for language in translations_feedorder %}
+ <p class="feedlink">
+ {% if generate_atom %}
+ {{ _html_feed_link('application/atom+xml', 'Atom feed', 'atom', classification, kind, language) }}
+ {% endif %}
+ {% if generate_rss and kind != 'archive' %}
+ {{ _html_feed_link('application/rss+xml', 'RSS feed', 'rss', classification, kind, language) }}
+ {% endif %}
+ </p>
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+{% endmacro %}
+
+{% macro translation_link(kind) %}
+ {% if has_other_languages and other_languages %}
+ <div class="translationslist translations">
+ <h3 class="translationslist-intro">{{ messages("Also available in:") }}</h3>
+ {% for language, classification, name in other_languages %}
+ <p>{{ _html_translation_link(classification, kind, language, name) }}</p>
+ {% endfor %}
+ </div>
+ {% endif %}
+{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/gallery.tmpl b/nikola/data/themes/base-jinja/templates/gallery.tmpl
index 977dea1..d425106 100644
--- a/nikola/data/themes/base-jinja/templates/gallery.tmpl
+++ b/nikola/data/themes/base-jinja/templates/gallery.tmpl
@@ -1,11 +1,12 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
{% import 'comments_helper.tmpl' as comments with context %}
-{% import 'crumbs.tmpl' as ui with context %}
+{% import 'ui_helper.tmpl' as ui with context %}
+{% import 'post_helper.tmpl' as post_helper with context %}
{% block sourcelink %}{% endblock %}
{% block content %}
- {{ ui.bar(crumbs) }}
+ {{ ui.breadcrumbs(crumbs) }}
{% if title %}
<h1>{{ title|e }}</h1>
{% endif %}
@@ -15,21 +16,39 @@
</p>
{% endif %}
{% if folders %}
- <ul>
- {% for folder, ftitle in folders %}
- <li><a href="{{ folder }}"><i
- class="icon-folder-open"></i>&nbsp;{{ ftitle|e }}</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- {% if photo_array %}
- <ul class="thumbnails">
- {% for image in photo_array %}
- <li><a href="{{ image['url'] }}" class="thumbnail image-reference" title="{{ image['title'] }}">
- <img src="{{ image['url_thumb'] }}" alt="{{ image['title']|e }}" /></a>
- {% endfor %}
- </ul>
+ {% if galleries_use_thumbnail %}
+ {% for (folder, ftitle, fpost) in folders %}
+ <div class="thumnbnail-container">
+ <a href="{{ folder }}" class="thumbnail image-reference" title="{{ ftitle|e }}">
+ {% if fpost and fpost.previewimage %}
+ <img src="{{ fpost.previewimage }}" alt="{{ ftitle|e }}" loading="lazy" style="max-width:{{ thumbnail_size }}px; max-height:{{ thumbnail_size }}px;" />
+ {% else %}
+ <div style="height: {{ thumbnail_size }}px; width: {{ thumbnail_size }}px; background-color: #eee;"></div>
+ {% endif %}
+ <p class="thumbnail-caption">{{ ftitle|e }}</p>
+ </a>
+ </div>
+ {% endfor %}
+ {% else %}
+ <ul>
+ {% for folder, ftitle in folders %}
+ <li><a href="{{ folder }}">📂&nbsp;{{ ftitle|e }}</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
{% endif %}
+
+<div id="gallery_container"></div>
+{% if photo_array %}
+<noscript>
+<ul class="thumbnails">
+ {% for image in photo_array %}
+ <li><a href="{{ image['url'] }}" class="thumbnail image-reference" title="{{ image['title']|e }}">
+ <img src="{{ image['url_thumb'] }}" alt="{{ image['title']|e }}" loading="lazy" /></a>
+ {% endfor %}
+</ul>
+</noscript>
+{% endif %}
{% if site_has_comments and enable_comments %}
{{ comments.comment_form(None, permalink, title) }}
{% endif %}
@@ -38,4 +57,35 @@
{% block extra_head %}
{{ super() }}
<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
+<style type="text/css">
+ #gallery_container {
+ position: relative;
+ }
+ .image-block {
+ position: absolute;
+ }
+</style>
+{% if translations|length > 1 %}
+ {% for langname in translations.keys() %}
+ {% if langname != lang %}
+ <link rel="alternate" hreflang="{{ langname }}" href="{{ _link('gallery', gallery_path, langname) }}">
+ {% endif %}
+ {% endfor %}
+{% endif %}
+<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
+{% if post %}
+ {{ post_helper.open_graph_metadata(post) }}
+ {{ post_helper.twitter_card_information(post) }}
+{% endif %}
+{% endblock %}
+
+{% block extra_js %}
+<script src="/assets/js/justified-layout.min.js"></script>
+<script src="/assets/js/gallery.min.js"></script>
+<script>
+var jsonContent = {{ photo_array_json }};
+var thumbnailSize = {{ thumbnail_size }};
+renderGallery(jsonContent, thumbnailSize);
+window.addEventListener('resize', function(){renderGallery(jsonContent, thumbnailSize)});
+</script>
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/index.tmpl b/nikola/data/themes/base-jinja/templates/index.tmpl
index f982091..55ae9aa 100644
--- a/nikola/data/themes/base-jinja/templates/index.tmpl
+++ b/nikola/data/themes/base-jinja/templates/index.tmpl
@@ -1,6 +1,9 @@
{# -*- coding: utf-8 -*- #}
{% import 'index_helper.tmpl' as helper with context %}
+{% import 'math_helper.tmpl' as math with context %}
{% import 'comments_helper.tmpl' as comments with context %}
+{% import 'pagination_helper.tmpl' as pagination with context %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% extends 'base.tmpl' %}
{% block extra_head %}
@@ -8,27 +11,45 @@
{% if posts and (permalink == '/' or permalink == '/' + index_file) %}
<link rel="prefetch" href="{{ posts[0].permalink() }}" type="text/html">
{% endif %}
+ {{ math.math_styles_ifposts(posts) }}
{% endblock %}
{% block content %}
-{% block content_header %}{% endblock %}
+{% block content_header %}
+ {{ feeds_translations.translation_link(kind) }}
+{% endblock %}
{% if 'main_index' in pagekind %}
{{ front_index_header }}
{% endif %}
+{% if page_links %}
+ {{ pagination.page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed) }}
+{% endif %}
<div class="postindex">
{% for post in posts %}
- <article class="h-entry post-{{ post.meta('type') }}">
+ <article class="h-entry post-{{ post.meta('type') }}" itemscope="itemscope" itemtype="http://schema.org/Article">
<header>
<h1 class="p-name entry-title"><a href="{{ post.permalink() }}" class="u-url">{{ post.title()|e }}</a></h1>
<div class="metadata">
- <p class="byline author vcard"><span class="byline-name fn">
- {% if author_pages_generated %}
+ <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
+ {% if author_pages_generated and multiple_authors_per_post %}
+ {% for author in post.authors() %}
+ <a href="{{ _link('author', author) }}">{{ author|e }}</a>
+ {% endfor %}
+ {% elif author_pages_generated %}
<a href="{{ _link('author', post.author()) }}">{{ post.author()|e }}</a>
{% else %}
{{ post.author()|e }}
{% endif %}
</span></p>
- <p class="dateline"><a href="{{ post.permalink() }}" rel="bookmark"><time class="published dt-published" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time></a></p>
+ <p class="dateline">
+ <a href="{{ post.permalink() }}" rel="bookmark">
+ <time class="published dt-published" datetime="{{ post.formatted_date('webiso') }}" itemprop="datePublished" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time>
+ {% if post.updated and post.updated != post.date %}
+ <span class="updated"> ({{ messages("updated") }}
+ <time class="dt-updated" datetime="{{ post.formatted_updated('webiso') }}" itemprop="dateUpdated" title="{{ post.formatted_updated(date_format)|e }}">{{ post.formatted_updated(date_format)|e }}</time>)</span>
+ {% endif %}
+ </a>
+ </p>
{% if not post.meta('nocomments') and site_has_comments %}
<p class="commentline">{{ comments.comment_link(post.permalink(), post._base_path) }}
{% endif %}
@@ -47,5 +68,5 @@
</div>
{{ helper.html_pager() }}
{{ comments.comment_link_script() }}
-{{ helper.mathjax_script(posts) }}
+{{ math.math_scripts_ifposts(posts) }}
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/index_helper.tmpl b/nikola/data/themes/base-jinja/templates/index_helper.tmpl
index 704c635..bc57734 100644
--- a/nikola/data/themes/base-jinja/templates/index_helper.tmpl
+++ b/nikola/data/themes/base-jinja/templates/index_helper.tmpl
@@ -1,4 +1,5 @@
{# -*- coding: utf-8 -*- #}
+{% import 'math_helper.tmpl' as math with context %}
{% macro html_pager() %}
{% if prevlink or nextlink %}
<nav class="postindexpager">
@@ -18,33 +19,7 @@
{% endif %}
{% endmacro %}
+{# This function is deprecated; use math_helper directly. #}
{% macro mathjax_script(posts) %}
- {% if posts|selectattr("is_mathjax")|list %}
- {% if use_katex %}
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/contrib/auto-render.min.js"></script>
- {% if katex_auto_render %}
- <script>
- renderMathInElement(document.body,
- {
- {{ katex_auto_render }}
- }
- );
- </script>
- {% else %}
- <script>
- renderMathInElement(document.body);
- </script>
- {% endif %}
- {% else %}
- <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>
- {% if mathjax_config %}
- {{ mathjax_config }}
- {% else %}
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
- </script>
- {% endif %}
- {% endif %}
- {% endif %}
+ {{ math.math_scripts_ifposts(posts) }}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/list.tmpl b/nikola/data/themes/base-jinja/templates/list.tmpl
index c9c330b..5f8ddea 100644
--- a/nikola/data/themes/base-jinja/templates/list.tmpl
+++ b/nikola/data/themes/base-jinja/templates/list.tmpl
@@ -1,11 +1,19 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
+{% import 'archive_navigation_helper.tmpl' as archive_nav with context %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block extra_head %}
+ {{ feeds_translations.head(kind=kind, rss_override=False, has_no_feeds=has_no_feeds) }}
+{% endblock %}
{% block content %}
<article class="listpage">
<header>
<h1>{{ title|e }}</h1>
</header>
+ {{ archive_nav.archive_navigation() }}
+ {{ feeds_translations.translation_link(kind) }}
{% if items %}
<ul class="postlist">
{% for text, link, count in items %}
diff --git a/nikola/data/themes/base-jinja/templates/list_post.tmpl b/nikola/data/themes/base-jinja/templates/list_post.tmpl
index 1dd2605..e6b2080 100644
--- a/nikola/data/themes/base-jinja/templates/list_post.tmpl
+++ b/nikola/data/themes/base-jinja/templates/list_post.tmpl
@@ -1,11 +1,19 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
+{% import 'archive_navigation_helper.tmpl' as archive_nav with context %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block extra_head %}
+ {{ feeds_translations.head(kind=kind, rss_override=False) }}
+{% endblock %}
{% block content %}
<article class="listpage">
<header>
<h1>{{ title|e }}</h1>
</header>
+ {{ archive_nav.archive_navigation() }}
+ {{ feeds_translations.translation_link(kind) }}
{% if posts %}
<ul class="postlist">
{% for post in posts %}
diff --git a/nikola/data/themes/base-jinja/templates/listing.tmpl b/nikola/data/themes/base-jinja/templates/listing.tmpl
index 9b6d76d..7b6b3a6 100644
--- a/nikola/data/themes/base-jinja/templates/listing.tmpl
+++ b/nikola/data/themes/base-jinja/templates/listing.tmpl
@@ -1,15 +1,15 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
-{% import 'crumbs.tmpl' as ui with context %}
+{% import 'ui_helper.tmpl' as ui with context %}
{% block content %}
-{{ ui.bar(crumbs) }}
+{{ ui.breadcrumbs(crumbs) }}
{% if folders or files %}
<ul>
{% for name in folders %}
- <li><a href="{{ name|urlencode }}"><i class="icon-folder-open"></i> {{ name|e }}</a>
+ <li><a href="{{ name|e }}" class="listing-folder">{{ name|e }}</a>
{% endfor %}
{% for name in files %}
- <li><a href="{{ name|urlencode }}.html"><i class="icon-file"></i> {{ name|e }}</a>
+ <li><a href="{{ name|e }}.html" class="listing-file">{{ name|e }}</a>
{% endfor %}
</ul>
{% endif %}
@@ -22,5 +22,3 @@
{{ code }}
{% endif %}
{% endblock %}
-
-
diff --git a/nikola/data/themes/base-jinja/templates/math_helper.tmpl b/nikola/data/themes/base-jinja/templates/math_helper.tmpl
new file mode 100644
index 0000000..c16f9b8
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/math_helper.tmpl
@@ -0,0 +1,69 @@
+{# Note: at present, MathJax and KaTeX do not respect the USE_CDN configuration option #}
+{% macro math_scripts() %}
+ {% if use_katex %}
+ <script src="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.js" integrity="sha384-9Nhn55MVVN0/4OFx7EE5kpFBPsEMZxKTCnA+4fqDmg12eCTqGi6+BB2LjY8brQxJ" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"></script>
+ {% if katex_auto_render %}
+ <script>
+ renderMathInElement(document.body,
+ {
+ {{ katex_auto_render }}
+ }
+ );
+ </script>
+ {% else %}
+ <script>
+ renderMathInElement(document.body,
+ {
+ delimiters: [
+ {left: "$$", right: "$$", display: true},
+ {left: "\\[", right: "\\]", display: true},
+ {left: "\\begin{equation*}", right: "\\end{equation*}", display: true},
+ {left: "\\(", right: "\\)", display: false}
+ ]
+ }
+ );
+ </script>
+ {% endif %}
+ {% else %}
+{# Note: given the size of MathJax; nikola will retrieve MathJax from a CDN regardless of use_cdn configuration #}
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" integrity="sha384-3lJUsx1TJHt7BA4udB5KPnDrlkO8T6J6v/op7ui0BbCjvZ9WqV4Xm6DTP6kQ/iBH" crossorigin="anonymous"></script>
+ {% if mathjax_config %}
+ {{ mathjax_config }}
+ {% else %}
+ <script type="text/x-mathjax-config">
+ MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
+ </script>
+ {% endif %}
+ {% endif %}
+{% endmacro %}
+
+{% macro math_styles() %}
+ {% if use_katex %}
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.css" integrity="sha384-yFRtMMDnQtDRO8rLpMIKrtPCD5jdktao2TV19YiZYWMDkUR5GQZR/NOVTdquEx1j" crossorigin="anonymous">
+ {% endif %}
+{% endmacro %}
+
+{% macro math_scripts_ifpost(post) %}
+ {% if post.has_math %}
+ {{ math_scripts() }}
+ {% endif %}
+{% endmacro %}
+
+{% macro math_scripts_ifposts(posts) %}
+ {% if posts|selectattr("has_math")|list %}
+ {{ math_scripts() }}
+ {% endif %}
+{% endmacro %}
+
+{% macro math_styles_ifpost(post) %}
+ {% if post.has_math %}
+ {{ math_styles() }}
+ {% endif %}
+{% endmacro %}
+
+{% macro math_styles_ifposts(posts) %}
+ {% if posts|selectattr("has_math")|list %}
+ {{ math_styles() }}
+ {% endif %}
+{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/page.tmpl b/nikola/data/themes/base-jinja/templates/page.tmpl
new file mode 100644
index 0000000..c2f3f7a
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/page.tmpl
@@ -0,0 +1 @@
+{% extends 'story.tmpl' %}
diff --git a/nikola/data/themes/base-jinja/templates/pagination_helper.tmpl b/nikola/data/themes/base-jinja/templates/pagination_helper.tmpl
new file mode 100644
index 0000000..73cf699
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/pagination_helper.tmpl
@@ -0,0 +1,16 @@
+{# -*- coding: utf-8 -*- #}
+{% macro page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed, surrounding=5) %}
+<div class="page-navigation">
+ {% for i, link in enumerate(page_links) %}
+ {% if (i - current_page)|abs <= surrounding or i == 0 or i == page_links|length - 1 %}
+ {% if i == current_page %}
+ <span class="current-page">{{ i+1 }}</span>
+ {% else %}
+ <a href="{{ page_links[i] }}">{{ i+1 }}</a>
+ {% endif %}
+ {% elif i == current_page - surrounding - 1 or i == current_page + surrounding + 1 %}
+ <span class="ellipsis">…</span>
+ {% endif %}
+ {% endfor %}
+</div>
+{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/post.tmpl b/nikola/data/themes/base-jinja/templates/post.tmpl
index 5e4d9a5..484a2e0 100644
--- a/nikola/data/themes/base-jinja/templates/post.tmpl
+++ b/nikola/data/themes/base-jinja/templates/post.tmpl
@@ -2,15 +2,13 @@
{% import 'post_helper.tmpl' as helper with context %}
{% import 'post_header.tmpl' as pheader with context %}
{% import 'comments_helper.tmpl' as comments with context %}
+{% import 'math_helper.tmpl' as math with context %}
{% extends 'base.tmpl' %}
{% block extra_head %}
{{ super() }}
{% if post.meta('keywords') %}
- <meta name="keywords" content="{{ post.meta('keywords')|e }}">
- {% endif %}
- {% if post.description() %}
- <meta name="description" content="{{ post.description()|e }}">
+ <meta name="keywords" content="{{ smartjoin(', ', post.meta('keywords'))|e }}">
{% endif %}
<meta name="author" content="{{ post.author()|e }}">
{% if post.prev_post %}
@@ -25,6 +23,7 @@
{{ helper.open_graph_metadata(post) }}
{{ helper.twitter_card_information(post) }}
{{ helper.meta_translations(post) }}
+ {{ math.math_styles_ifpost(post) }}
{% endblock %}
{% block content %}
@@ -45,7 +44,7 @@
{{ comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path) }}
</section>
{% endif %}
- {{ helper.mathjax_script(post) }}
+ {{ math.math_scripts_ifpost(post) }}
</article>
{{ comments.comment_link_script() }}
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/post_header.tmpl b/nikola/data/themes/base-jinja/templates/post_header.tmpl
index 6b81120..d3c5d3e 100644
--- a/nikola/data/themes/base-jinja/templates/post_header.tmpl
+++ b/nikola/data/themes/base-jinja/templates/post_header.tmpl
@@ -23,7 +23,7 @@
{% macro html_sourcelink() %}
{% if show_sourcelink %}
- <p class="sourceline"><a href="{{ post.source_link() }}" id="sourcelink">{{ messages("Source") }}</a></p>
+ <p class="sourceline"><a href="{{ post.source_link() }}" class="sourcelink">{{ messages("Source") }}</a></p>
{% endif %}
{% endmacro %}
@@ -31,14 +31,26 @@
<header>
{{ html_title() }}
<div class="metadata">
- <p class="byline author vcard"><span class="byline-name fn">
- {% if author_pages_generated %}
- <a href="{{ _link('author', post.author()) }}">{{ post.author()|e }}</a>
+ <p class="byline author vcard p-author h-card"><span class="byline-name fn p-name" itemprop="author">
+ {% if author_pages_generated and multiple_authors_per_post %}
+ {% for author in post.authors() %}
+ <a class="u-url" href="{{ _link('author', author) }}">{{ author|e }}</a>
+ {% endfor %}
+ {% elif author_pages_generated %}
+ <a class="u-url" href="{{ _link('author', post.author()) }}">{{ post.author()|e }}</a>
{% else %}
{{ post.author()|e }}
{% endif %}
</span></p>
- <p class="dateline"><a href="{{ post.permalink() }}" rel="bookmark"><time class="published dt-published" datetime="{{ post.formatted_date('webiso') }}" itemprop="datePublished" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time></a></p>
+ <p class="dateline">
+ <a href="{{ post.permalink() }}" rel="bookmark">
+ <time class="published dt-published" datetime="{{ post.formatted_date('webiso') }}" itemprop="datePublished" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time>
+ {% if post.updated and post.updated != post.date %}
+ <span class="updated"> ({{ messages("updated") }}
+ <time class="updated dt-updated" datetime="{{ post.formatted_updated('webiso') }}" itemprop="dateUpdated" title="{{ post.formatted_updated(date_format)|e }}">{{ post.formatted_updated(date_format)|e }}</time>)</span>
+ {% endif %}
+ </a>
+ </p>
{% if not post.meta('nocomments') and site_has_comments %}
<p class="commentline">{{ comments.comment_link(post.permalink(), post._base_path) }}
{% endif %}
@@ -46,9 +58,6 @@
{% if post.meta('link') %}
<p class="linkline"><a href="{{ post.meta('link') }}">{{ messages("Original site") }}</a></p>
{% endif %}
- {% if post.description() %}
- <meta name="description" itemprop="description" content="{{ post.description()|e }}">
- {% endif %}
</div>
{{ html_translations(post) }}
</header>
diff --git a/nikola/data/themes/base-jinja/templates/post_helper.tmpl b/nikola/data/themes/base-jinja/templates/post_helper.tmpl
index e2dcf59..94b3c05 100644
--- a/nikola/data/themes/base-jinja/templates/post_helper.tmpl
+++ b/nikola/data/themes/base-jinja/templates/post_helper.tmpl
@@ -1,4 +1,5 @@
{# -*- coding: utf-8 -*- #}
+{% import 'math_helper.tmpl' as math with context %}
{% macro meta_translations(post) %}
{% if translations|length > 1 %}
@@ -40,31 +41,29 @@
{% endmacro %}
{% macro open_graph_metadata(post) %}
-{% if use_open_graph %}
- <meta property="og:site_name" content="{{ blog_title|e }}">
- <meta property="og:title" content="{{ post.title()[:70]|e }}">
- <meta property="og:url" content="{{ abs_link(permalink) }}">
- {% if post.description() %}
+<meta property="og:site_name" content="{{ blog_title|e }}">
+<meta property="og:title" content="{{ post.title()[:70]|e }}">
+<meta property="og:url" content="{{ abs_link(permalink) }}">
+{% if post.description() %}
<meta property="og:description" content="{{ post.description()[:200]|e }}">
- {% else %}
+{% else %}
<meta property="og:description" content="{{ post.text(strip_html=True)[:200]|e }}">
- {% endif %}
- {% if post.previewimage %}
+{% endif %}
+{% if post.previewimage %}
<meta property="og:image" content="{{ url_replacer(permalink, post.previewimage, lang, 'absolute') }}">
- {% endif %}
- <meta property="og:type" content="article">
+{% endif %}
+<meta property="og:type" content="article">
{# Will only work with Pintrest and breaks everywhere else who expect a [Facebook] URI. #}
{# %if post.author(): #}
{# <meta property="article:author" content="{{ post.author()|e }}"> #}
{# %endif #}
- {% if post.date.isoformat() %}
+{% if post.date.isoformat() %}
<meta property="article:published_time" content="{{ post.formatted_date('webiso') }}">
- {% endif %}
- {% if post.tags %}
- {% for tag in post.tags %}
- <meta property="article:tag" content="{{ tag|e }}">
- {% endfor %}
- {% endif %}
+{% endif %}
+{% if post.tags %}
+ {% for tag in post.tags %}
+ <meta property="article:tag" content="{{ tag|e }}">
+ {% endfor %}
{% endif %}
{% endmacro %}
@@ -84,33 +83,7 @@
{% endif %}
{% endmacro %}
+{# This function is deprecated; use math_helper directly. #}
{% macro mathjax_script(post) %}
- {% if post.is_mathjax %}
- {% if use_katex %}
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/contrib/auto-render.min.js"></script>
- {% if katex_auto_render %}
- <script>
- renderMathInElement(document.body,
- {
- {{ katex_auto_render }}
- }
- );
- </script>
- {% else %}
- <script>
- renderMathInElement(document.body);
- </script>
- {% endif %}
- {% else %}
- <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>
- {% if mathjax_config %}
- {{ mathjax_config }}
- {% else %}
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
- </script>
- {% endif %}
- {% endif %}
- {% endif %}
+ {{ math.math_scripts_ifpost(post) }}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/sectionindex.tmpl b/nikola/data/themes/base-jinja/templates/sectionindex.tmpl
deleted file mode 100644
index f1d3d5b..0000000
--- a/nikola/data/themes/base-jinja/templates/sectionindex.tmpl
+++ /dev/null
@@ -1,21 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% extends 'index.tmpl' %}
-
-{% block extra_head %}
- {{ super() }}
- {% if generate_atom %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ posts[0].section_name()|e }} section" href="{{ _link('section_index_atom', posts[0].section_slug()) }}">
- {% endif %}
-{% endblock %}
-
-{% block content %}
-<div class="sectionindex">
- <header>
- <h2><a href="{{ _link('section_index', posts[0].section_slug()) }}">{{ title|e }}</a></h2>
- {% if generate_atom %}
- <p class="feedlink"><a href="{{ _link('section_index_atom', posts[0].section_slug()) }}" type="application/atom+xml">{{ messages('Updates') }}</a></p>
- {% endif %}
- </header>
- {{ super() }}
-</div>
-{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/slides.tmpl b/nikola/data/themes/base-jinja/templates/slides.tmpl
deleted file mode 100644
index 0ae8fe8..0000000
--- a/nikola/data/themes/base-jinja/templates/slides.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-{% block content %}
-<div id="{{ carousel_id }}" class="carousel slide">
- <ol class="carousel-indicators">
- {% for i in range(slides_content|length) %}
- {% if i == 0 %}
- <li data-target="#{{ carousel_id }}" data-slide-to="{{ i }}" class="active"></li>
- {% else %}
- <li data-target="#{{ carousel_id }}" data-slide-to="{{ i }}"></li>
- {% endif %}
- {% endfor %}
- </ol>
- <div class="carousel-inner">
- {% for i, image in enumerate(slides_content) %}
- {% if i == 0 %}
- <div class="item active"><img src="{{ image }}" alt="" style="margin: 0 auto 0 auto;"></div>
- {% else %}
- <div class="item"><img src="{{ image }}" alt="" style="margin: 0 auto 0 auto;"></div>
- {% endif %}
- {% endfor %}
- </div>
- <a class="left carousel-control" href="#{{ carousel_id }}" data-slide="prev">&lsaquo;</a>
- <a class="right carousel-control" href="#{{ carousel_id }}" data-slide="next">&rsaquo;</a>
-</div>
-{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/story.tmpl b/nikola/data/themes/base-jinja/templates/story.tmpl
index 1269724..5c93256 100644
--- a/nikola/data/themes/base-jinja/templates/story.tmpl
+++ b/nikola/data/themes/base-jinja/templates/story.tmpl
@@ -2,6 +2,7 @@
{% import 'post_helper.tmpl' as helper with context %}
{% import 'post_header.tmpl' as pheader with context %}
{% import 'comments_helper.tmpl' as comments with context %}
+{% import 'math_helper.tmpl' as math with context %}
{% extends 'post.tmpl' %}
{% block content %}
@@ -19,6 +20,6 @@
{{ comments.comment_form(post.permalink(absolute=True), post.title(), post.base_path) }}
</section>
{% endif %}
- {{ helper.mathjax_script(post) }}
+ {{ math.math_scripts_ifpost(post) }}
</article>
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/tag.tmpl b/nikola/data/themes/base-jinja/templates/tag.tmpl
index 363019b..fd5acbf 100644
--- a/nikola/data/themes/base-jinja/templates/tag.tmpl
+++ b/nikola/data/themes/base-jinja/templates/tag.tmpl
@@ -1,24 +1,17 @@
{# -*- coding: utf-8 -*- #}
{% extends 'list_post.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% block extra_head %}
- {{ super() }}
- {% if translations|length > 1 and generate_rss %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ tag|e }} ({{ language }})" href="{{ _link(kind + "_rss", tag, language) }}">
- {% endfor %}
- {% elif generate_rss %}
- <link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ tag|e }}" href="{{ _link(kind + "_rss", tag) }}">
- {% endif %}
+ {{ feeds_translations.head(tag, kind, rss_override=False) }}
{% endblock %}
-
{% block content %}
<article class="tagpage">
<header>
<h1>{{ title|e }}</h1>
{% if description %}
- <p>{{ description }}</p>
+ <p>{{ description }}</p>
{% endif %}
{% if subcategories %}
{{ messages('Subcategories:') }}
@@ -29,23 +22,16 @@
</ul>
{% endif %}
<div class="metadata">
- {% if translations|length > 1 and generate_rss %}
- {% for language in translations|sort %}
- <p class="feedlink">
- <a href="{{ _link(kind + "_rss", tag, language) }}" hreflang="{{ language }}" type="application/rss+xml">{{ messages('RSS feed', language) }} ({{ language }})</a>&nbsp;
- </p>
- {% endfor %}
- {% elif generate_rss %}
- <p class="feedlink"><a href="{{ _link(kind + "_rss", tag) }}" type="application/rss+xml">{{ messages('RSS feed') }}</a></p>
- {% endif %}
+ {{ feeds_translations.feed_link(tag, kind=kind) }}
</div>
+ {{ feeds_translations.translation_link(kind) }}
</header>
{% if posts %}
- <ul class="postlist">
- {% for post in posts %}
- <li><time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time> <a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}<a></li>
- {% endfor %}
- </ul>
+ <ul class="postlist">
+ {% for post in posts %}
+ <li><time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time> <a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}<a></li>
+ {% endfor %}
+ </ul>
{% endif %}
</article>
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/tagindex.tmpl b/nikola/data/themes/base-jinja/templates/tagindex.tmpl
index 624961d..8ea6a4b 100644
--- a/nikola/data/themes/base-jinja/templates/tagindex.tmpl
+++ b/nikola/data/themes/base-jinja/templates/tagindex.tmpl
@@ -1,5 +1,6 @@
{# -*- coding: utf-8 -*- #}
{% extends 'index.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% block content_header %}
<header>
@@ -15,16 +16,14 @@
{% endfor %}
</ul>
{% endif %}
+ <div class="metadata">
+ {{ feeds_translations.feed_link(tag, kind) }}
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
</header>
{% endblock %}
{% block extra_head %}
{{ super() }}
- {% if translations|length > 1 and generate_atom %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ tag|e }} section ({{ language }})" href="{{ _link(kind + "_atom", tag, language) }}">
- {% endfor %}
- {% elif generate_atom %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ tag|e }} section" href="{{ _link("tag" + "_atom", tag) }}">
- {% endif %}
+ {{ feeds_translations.head(tag, kind, rss_override=False) }}
{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/tags.tmpl b/nikola/data/themes/base-jinja/templates/tags.tmpl
index 936ed21..931ee71 100644
--- a/nikola/data/themes/base-jinja/templates/tags.tmpl
+++ b/nikola/data/themes/base-jinja/templates/tags.tmpl
@@ -1,10 +1,18 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block extra_head %}
+ {{ feeds_translations.head(kind=kind, feeds=False) }}
+{% endblock %}
{% block content %}
<article class="tagindex">
<header>
<h1>{{ title|e }}</h1>
+ <div class="metadata">
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
</header>
{% if cat_items %}
{% if items %}
diff --git a/nikola/data/themes/base-jinja/templates/crumbs.tmpl b/nikola/data/themes/base-jinja/templates/ui_helper.tmpl
index 970d509..9eb5697 100644
--- a/nikola/data/themes/base-jinja/templates/crumbs.tmpl
+++ b/nikola/data/themes/base-jinja/templates/ui_helper.tmpl
@@ -1,6 +1,5 @@
{# -*- coding: utf-8 -*- #}
-
-{% macro bar(crumbs) %}
+{% macro breadcrumbs(crumbs) %}
{% if crumbs %}
<nav class="breadcrumbs">
<ul class="breadcrumb">
diff --git a/nikola/data/themes/base/assets/css/baguetteBox.min.css b/nikola/data/themes/base/assets/css/baguetteBox.min.css
new file mode 120000
index 0000000..601d72f
--- /dev/null
+++ b/nikola/data/themes/base/assets/css/baguetteBox.min.css
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/baguettebox.js/dist/baguetteBox.min.css \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/css/html4css1.css b/nikola/data/themes/base/assets/css/html4css1.css
new file mode 100644
index 0000000..cc29335
--- /dev/null
+++ b/nikola/data/themes/base/assets/css/html4css1.css
@@ -0,0 +1 @@
+@import url("rst_base.css");
diff --git a/nikola/data/themes/base/assets/css/ipython.min.css b/nikola/data/themes/base/assets/css/ipython.min.css
index f9934c2..c1c6bc4 100644
--- a/nikola/data/themes/base/assets/css/ipython.min.css
+++ b/nikola/data/themes/base/assets/css/ipython.min.css
@@ -2,8 +2,8 @@
*
* IPython base
*
-*/.modal.fade .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}code{color:#000}pre{font-size:inherit;line-height:inherit}label{font-weight:normal}.border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.corner-all{border-radius:2px}.no-padding{padding:0}.hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none}.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none}.hbox.reverse,.vbox.reverse,.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;flex-direction:row-reverse}.hbox.box-flex0,.vbox.box-flex0,.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none;width:auto}.hbox.box-flex1,.vbox.box-flex1,.box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.hbox.box-flex,.vbox.box-flex,.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.hbox.box-flex2,.vbox.box-flex2,.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2}.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1}.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2}.hbox.start,.vbox.start,.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start}.hbox.end,.vbox.end,.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;justify-content:flex-end}.hbox.center,.vbox.center,.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;justify-content:center}.hbox.baseline,.vbox.baseline,.baseline{-webkit-box-pack:baseline;-moz-box-pack:baseline;box-pack:baseline;justify-content:baseline}.hbox.stretch,.vbox.stretch,.stretch{-webkit-box-pack:stretch;-moz-box-pack:stretch;box-pack:stretch;justify-content:stretch}.hbox.align-start,.vbox.align-start,.align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.hbox.align-end,.vbox.align-end,.align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end;align-items:flex-end}.hbox.align-center,.vbox.align-center,.align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center;align-items:center}.hbox.align-baseline,.vbox.align-baseline,.align-baseline{-webkit-box-align:baseline;-moz-box-align:baseline;box-align:baseline;align-items:baseline}.hbox.align-stretch,.vbox.align-stretch,.align-stretch{-webkit-box-align:stretch;-moz-box-align:stretch;box-align:stretch;align-items:stretch}div.error{margin:2em;text-align:center}div.error>h1{font-size:500%;line-height:normal}div.error>p{font-size:200%;line-height:normal}div.traceback-wrapper{text-align:left;max-width:800px;margin:auto}/*!
+*/.modal.fade .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}code{color:#000}pre{font-size:inherit;line-height:inherit}label{font-weight:normal}.border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.corner-all{border-radius:2px}.no-padding{padding:0}.hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none}.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none}.hbox.reverse,.vbox.reverse,.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;flex-direction:row-reverse}.hbox.box-flex0,.vbox.box-flex0,.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none;width:auto}.hbox.box-flex1,.vbox.box-flex1,.box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.hbox.box-flex,.vbox.box-flex,.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.hbox.box-flex2,.vbox.box-flex2,.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2}.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1}.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2}.hbox.start,.vbox.start,.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start}.hbox.end,.vbox.end,.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;justify-content:flex-end}.hbox.center,.vbox.center,.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;justify-content:center}.hbox.baseline,.vbox.baseline,.baseline{-webkit-box-pack:baseline;-moz-box-pack:baseline;box-pack:baseline;justify-content:baseline}.hbox.stretch,.vbox.stretch,.stretch{-webkit-box-pack:stretch;-moz-box-pack:stretch;box-pack:stretch;justify-content:stretch}.hbox.align-start,.vbox.align-start,.align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.hbox.align-end,.vbox.align-end,.align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end;align-items:flex-end}.hbox.align-center,.vbox.align-center,.align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center;align-items:center}.hbox.align-baseline,.vbox.align-baseline,.align-baseline{-webkit-box-align:baseline;-moz-box-align:baseline;box-align:baseline;align-items:baseline}.hbox.align-stretch,.vbox.align-stretch,.align-stretch{-webkit-box-align:stretch;-moz-box-align:stretch;box-align:stretch;align-items:stretch}div.error{margin:2em;text-align:center}div.error>h1{font-size:500%;line-height:normal}div.error>p{font-size:200%;line-height:normal}div.traceback-wrapper{text-align:left;max-width:800px;margin:auto}div.traceback-wrapper pre.traceback{max-height:600px;overflow:auto}/*!
*
* IPython notebook
*
-*/.ansibold{font-weight:bold}.ansiblack{color:black}.ansired{color:darkred}.ansigreen{color:darkgreen}.ansiyellow{color:#c4a000}.ansiblue{color:darkblue}.ansipurple{color:darkviolet}.ansicyan{color:steelblue}.ansigray{color:gray}.ansibgblack{background-color:black}.ansibgred{background-color:red}.ansibggreen{background-color:green}.ansibgyellow{background-color:yellow}.ansibgblue{background-color:blue}.ansibgpurple{background-color:magenta}.ansibgcyan{background-color:cyan}.ansibggray{background-color:gray}div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;border-radius:2px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-width:thin;border-style:solid;width:100%;padding:5px;margin:0;outline:none}div.cell.selected{border-color:#ababab}@media print{div.cell.selected{border-color:transparent}}.edit_mode div.cell.selected{border-color:green}@media print{.edit_mode div.cell.selected{border-color:transparent}}.prompt{min-width:14ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em}@media (max-width:540px){.prompt{text-align:left}}div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}@-moz-document url-prefix(){div.inner_cell{overflow-x:hidden}}div.input_area{border:1px solid #cfcfcf;border-radius:2px;background:#f7f7f7;line-height:1.21429em}div.prompt:empty{padding-top:0;padding-bottom:0}div.unrecognized_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.unrecognized_cell .inner_cell{border-radius:2px;padding:5px;font-weight:bold;color:red;border:1px solid #cfcfcf;background:#eaeaea}div.unrecognized_cell .inner_cell a{color:inherit;text-decoration:none}div.unrecognized_cell .inner_cell a:hover{color:inherit;text-decoration:none}@media (max-width:540px){div.unrecognized_cell>div.prompt{display:none}}@media print{div.code_cell{page-break-inside:avoid}}div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}@media (max-width:540px){div.input{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}}div.input_prompt{color:navy;border-top:1px solid transparent}div.input_area>div.highlight{margin:.4em;border:none;padding:0;background-color:transparent}div.input_area>div.highlight>pre{margin:0;border:none;padding:0;background-color:transparent}.CodeMirror{line-height:1.21429em;font-size:14px;height:auto;background:none}.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}.CodeMirror-lines{padding:.4em}.CodeMirror-linenumber{padding:0 8px 0 4px}.CodeMirror-gutters{border-bottom-left-radius:2px;border-top-left-radius:2px}.CodeMirror pre{padding:0;border:0;border-radius:0}.highlight-base{color:#000}.highlight-variable{color:#000}.highlight-variable-2{color:#1a1a1a}.highlight-variable-3{color:#333}.highlight-string{color:#ba2121}.highlight-comment{color:#408080;font-style:italic}.highlight-number{color:#080}.highlight-atom{color:#88f}.highlight-keyword{color:#008000;font-weight:bold}.highlight-builtin{color:#008000}.highlight-error{color:#f00}.highlight-operator{color:#a2f;font-weight:bold}.highlight-meta{color:#a2f}.highlight-def{color:#00f}.highlight-string-2{color:#f50}.highlight-qualifier{color:#555}.highlight-bracket{color:#997}.highlight-tag{color:#170}.highlight-attribute{color:#00c}.highlight-header{color:blue}.highlight-quote{color:#090}.highlight-link{color:#00c}.cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold}.cm-s-ipython span.cm-atom{color:#88f}.cm-s-ipython span.cm-number{color:#080}.cm-s-ipython span.cm-def{color:#00f}.cm-s-ipython span.cm-variable{color:#000}.cm-s-ipython span.cm-operator{color:#a2f;font-weight:bold}.cm-s-ipython span.cm-variable-2{color:#1a1a1a}.cm-s-ipython span.cm-variable-3{color:#333}.cm-s-ipython span.cm-comment{color:#408080;font-style:italic}.cm-s-ipython span.cm-string{color:#ba2121}.cm-s-ipython span.cm-string-2{color:#f50}.cm-s-ipython span.cm-meta{color:#a2f}.cm-s-ipython span.cm-qualifier{color:#555}.cm-s-ipython span.cm-builtin{color:#008000}.cm-s-ipython span.cm-bracket{color:#997}.cm-s-ipython span.cm-tag{color:#170}.cm-s-ipython span.cm-attribute{color:#00c}.cm-s-ipython span.cm-header{color:blue}.cm-s-ipython span.cm-quote{color:#090}.cm-s-ipython span.cm-link{color:#00c}.cm-s-ipython span.cm-error{color:#f00}.cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat}div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;z-index:1}div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:2px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);display:block}div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:2px}div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,0.5)}div.output_prompt{color:darkred}div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.output_area .MathJax_Display{text-align:left !important}div.output_area .rendered_html table{margin-left:0;margin-right:0}div.output_area .rendered_html img{margin-left:0;margin-right:0}div.output_area img,div.output_area svg{max-width:100%;height:auto}div.output_area img.unconfined,div.output_area svg.unconfined{max-width:none}.output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}@media (max-width:540px){div.output_area{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}}div.output_area pre{margin:0;padding:0;border:0;vertical-align:baseline;color:black;background-color:transparent;border-radius:0}div.output_subarea{overflow-x:auto;padding:.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;max-width:calc(100% - 14ex)}div.output_text{text-align:left;color:#000;line-height:1.21429em}div.output_stderr{background:#fdd}div.output_latex{text-align:left}div.output_javascript:empty{padding:0}.js-error{color:darkred}div.raw_input_container{font-family:monospace;padding-top:5px}input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;vertical-align:baseline;padding:0 .25em;margin:0 .25em}input.raw_input:focus{box-shadow:none}p.p-space{margin-bottom:10px}div.output_unrecognized{padding:5px;font-weight:bold;color:red}div.output_unrecognized a{color:inherit;text-decoration:none}div.output_unrecognized a:hover{color:inherit;text-decoration:none}.rendered_html{color:#000}.rendered_html em{font-style:italic}.rendered_html strong{font-weight:bold}.rendered_html u{text-decoration:underline}.rendered_html :link{text-decoration:underline}.rendered_html :visited{text-decoration:underline}.rendered_html h1{font-size:185.7%;margin:1.08em 0 0 0;font-weight:bold;line-height:1}.rendered_html h2{font-size:157.1%;margin:1.27em 0 0 0;font-weight:bold;line-height:1}.rendered_html h3{font-size:128.6%;margin:1.55em 0 0 0;font-weight:bold;line-height:1}.rendered_html h4{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1}.rendered_html h5{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic}.rendered_html h6{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic}.rendered_html h1:first-child{margin-top:.538em}.rendered_html h2:first-child{margin-top:.636em}.rendered_html h3:first-child{margin-top:.777em}.rendered_html h4:first-child{margin-top:1em}.rendered_html h5:first-child{margin-top:1em}.rendered_html h6:first-child{margin-top:1em}.rendered_html ul{list-style:disc;margin:0 2em;padding-left:0}.rendered_html ul ul{list-style:square;margin:0 2em}.rendered_html ul ul ul{list-style:circle;margin:0 2em}.rendered_html ol{list-style:decimal;margin:0 2em;padding-left:0}.rendered_html ol ol{list-style:upper-alpha;margin:0 2em}.rendered_html ol ol ol{list-style:lower-alpha;margin:0 2em}.rendered_html ol ol ol ol{list-style:lower-roman;margin:0 2em}.rendered_html ol ol ol ol ol{list-style:decimal;margin:0 2em}.rendered_html *+ul{margin-top:1em}.rendered_html *+ol{margin-top:1em}.rendered_html hr{color:black;background-color:black}.rendered_html pre{margin:1em 2em}.rendered_html pre,.rendered_html code{border:0;background-color:#fff;color:#000;font-size:100%;padding:0}.rendered_html blockquote{margin:1em 2em}.rendered_html table{margin-left:auto;margin-right:auto;border:1px solid black;border-collapse:collapse}.rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em}.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px}.rendered_html th{font-weight:bold}.rendered_html *+table{margin-top:1em}.rendered_html p{text-align:left}.rendered_html *+p{margin-top:1em}.rendered_html img{display:block;margin-left:auto;margin-right:auto}.rendered_html *+img{margin-top:1em}.rendered_html img,.rendered_html svg{max-width:100%;height:auto}.rendered_html img.unconfined,.rendered_html svg.unconfined{max-width:none}div.text_cell{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}@media (max-width:540px){div.text_cell>div.prompt{display:none}}div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden}h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible}.text_cell.rendered .input_area{display:none}.text_cell.rendered .rendered_html{overflow-x:auto}.text_cell.unrendered .text_cell_render{display:none}.cm-header-1,.cm-header-2,.cm-header-3,.cm-header-4,.cm-header-5,.cm-header-6{font-weight:bold;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.cm-header-1{font-size:185.7%}.cm-header-2{font-size:157.1%}.cm-header-3{font-size:128.6%}.cm-header-4{font-size:110%}.cm-header-5{font-size:100%;font-style:italic}.cm-header-6{font-size:100%;font-style:italic}.widget-interact>div,.widget-interact>input{padding:2.5px}.widget-area{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-area .widget-subarea{padding:.44em .4em .4em 1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.widget-area.connection-problems .prompt:after{content:"\f127";font-family:'FontAwesome';color:#d9534f;font-size:14px;top:3px;padding:3px}.slide-track{border:1px solid #ccc;background:#fff;border-radius:2px}.widget-hslider{padding-left:8px;padding-right:2px;overflow:visible;width:350px;height:5px;max-height:5px;margin-top:13px;margin-bottom:10px;border:1px solid #ccc;background:#fff;border-radius:2px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hslider .ui-slider{border:0;background:none;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.widget-hslider .ui-slider .ui-slider-handle{width:12px;height:28px;margin-top:-8px;border-radius:2px}.widget-hslider .ui-slider .ui-slider-range{height:12px;margin-top:-4px;background:#eee}.widget-vslider{padding-bottom:5px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px solid #ccc;background:#fff;border-radius:2px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-vslider .ui-slider{border:0;background:none;margin-left:-4px;margin-top:5px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.widget-vslider .ui-slider .ui-slider-handle{width:28px;height:12px;margin-left:-9px;border-radius:2px}.widget-vslider .ui-slider .ui-slider-range{width:12px;margin-left:-1px;background:#eee}.widget-text{width:350px;margin:0}.widget-listbox{width:350px;margin-bottom:0}.widget-numeric-text{width:150px;margin:0}.widget-progress{margin-top:6px;min-width:350px}.widget-progress .progress-bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.widget-combo-btn{min-width:125px}.widget_item .dropdown-menu li a{color:inherit}.widget-hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hbox input[type="checkbox"]{margin-top:9px;margin-bottom:10px}.widget-hbox .widget-label{min-width:10ex;padding-right:8px;padding-top:5px;text-align:right;vertical-align:text-top}.widget-hbox .widget-readout{padding-left:8px;padding-top:5px;text-align:left;vertical-align:text-top}.widget-vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-vbox .widget-label{padding-bottom:5px;text-align:center;vertical-align:text-bottom}.widget-vbox .widget-readout{padding-top:5px;text-align:center;vertical-align:text-top}.widget-box{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.widget-radio-box{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:4px}.widget-radio-box label{margin-top:0;margin-left:20px}/*# sourceMappingURL=ipython.min.css.map */ \ No newline at end of file
+*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}.ansi-inverse{outline:.5px dotted}.ansibold{font-weight:bold}.ansiblack{color:black}.ansired{color:darkred}.ansigreen{color:darkgreen}.ansiyellow{color:#c4a000}.ansiblue{color:darkblue}.ansipurple{color:darkviolet}.ansicyan{color:steelblue}.ansigray{color:gray}.ansibgblack{background-color:black}.ansibgred{background-color:red}.ansibggreen{background-color:green}.ansibgyellow{background-color:yellow}.ansibgblue{background-color:blue}.ansibgpurple{background-color:magenta}.ansibgcyan{background-color:cyan}.ansibggray{background-color:gray}div.cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;border-radius:2px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-width:1px;border-style:solid;border-color:transparent;width:100%;padding:5px;margin:0;outline:0;position:relative;overflow:visible}div.cell:before{position:absolute;display:block;top:-1px;left:-1px;width:5px;height:calc(100%+2px);content:'';background:transparent}div.cell.jupyter-soft-selected{border-left-color:#e3f2fd;border-left-width:1px;padding-left:5px;border-right-color:#e3f2fd;border-right-width:1px;background:#e3f2fd}@media print{div.cell.jupyter-soft-selected{border-color:transparent}}div.cell.selected,div.cell.selected.jupyter-soft-selected{border-color:#ababab}div.cell.selected:before,div.cell.selected.jupyter-soft-selected:before{position:absolute;display:block;top:-1px;left:-1px;width:5px;height:calc(100%+2px);content:'';background:#42a5f5}@media print{div.cell.selected,div.cell.selected.jupyter-soft-selected{border-color:transparent}}.edit_mode div.cell.selected{border-color:#66bb6a}.edit_mode div.cell.selected:before{position:absolute;display:block;top:-1px;left:-1px;width:5px;height:calc(100%+2px);content:'';background:#66bb6a}@media print{.edit_mode div.cell.selected{border-color:transparent}}.prompt{min-width:14ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}@media(max-width:540px){.prompt{text-align:left}}div.inner_cell{min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}div.input_area>div.highlight>pre{border:1px solid #cfcfcf;line-height:1.21429em}div.prompt:empty{padding-top:0;padding-bottom:0}div.unrecognized_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.unrecognized_cell .inner_cell{border-radius:2px;padding:5px;font-weight:bold;color:red;border:1px solid #cfcfcf;background:#eaeaea}div.unrecognized_cell .inner_cell a{color:inherit;text-decoration:none}div.unrecognized_cell .inner_cell a:hover{color:inherit;text-decoration:none}@media(max-width:540px){div.unrecognized_cell>div.prompt{display:none}}@media print{div.code_cell{page-break-inside:avoid}}div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}@media(max-width:540px){div.input{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}}div.input_prompt{color:#303f9f;border-top:1px solid transparent}div.input_area>div.highlight{margin:0;border:0;padding:0;background-color:transparent}div.input_area>div.highlight>pre{margin:0;border:0;padding:.4em}.CodeMirror{line-height:1.21429em;font-size:14px;height:auto;background:0}.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}.CodeMirror-lines{padding:.4em}.CodeMirror-linenumber{padding:0 8px 0 4px}.CodeMirror-gutters{border-bottom-left-radius:2px;border-top-left-radius:2px}.CodeMirror pre{padding:0;border:0;border-radius:0}.highlight-base{color:#000}.highlight-variable{color:#000}.highlight-variable-2{color:#1a1a1a}.highlight-variable-3{color:#333}.highlight-string{color:#ba2121}.highlight-comment{color:#408080;font-style:italic}.highlight-number{color:#080}.highlight-atom{color:#88F}.highlight-keyword{color:#008000;font-weight:bold}.highlight-builtin{color:#008000}.highlight-error{color:red}.highlight-operator{color:#a2f;font-weight:bold}.highlight-meta{color:#a2f}.highlight-def{color:#00f}.highlight-string-2{color:#f50}.highlight-qualifier{color:#555}.highlight-bracket{color:#997}.highlight-tag{color:#170}.highlight-attribute{color:#00c}.highlight-header{color:blue}.highlight-quote{color:#090}.highlight-link{color:#00c}.cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold}.cm-s-ipython span.cm-atom{color:#88F}.cm-s-ipython span.cm-number{color:#080}.cm-s-ipython span.cm-def{color:#00f}.cm-s-ipython span.cm-variable{color:#000}.cm-s-ipython span.cm-operator{color:#a2f;font-weight:bold}.cm-s-ipython span.cm-variable-2{color:#1a1a1a}.cm-s-ipython span.cm-variable-3{color:#333}.cm-s-ipython span.cm-comment{color:#408080;font-style:italic}.cm-s-ipython span.cm-string{color:#ba2121}.cm-s-ipython span.cm-string-2{color:#f50}.cm-s-ipython span.cm-meta{color:#a2f}.cm-s-ipython span.cm-qualifier{color:#555}.cm-s-ipython span.cm-builtin{color:#008000}.cm-s-ipython span.cm-bracket{color:#997}.cm-s-ipython span.cm-tag{color:#170}.cm-s-ipython span.cm-attribute{color:#00c}.cm-s-ipython span.cm-header{color:blue}.cm-s-ipython span.cm-quote{color:#090}.cm-s-ipython span.cm-link{color:#00c}.cm-s-ipython span.cm-error{color:red}.cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat}div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;z-index:1}div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:2px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);display:block}div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:2px}div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,0.5)}div.output_prompt{color:#d84315}div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.output_area .MathJax_Display{text-align:left !important}div.output_area .rendered_html table{margin-left:0;margin-right:0}div.output_area .rendered_html img{margin-left:0;margin-right:0}div.output_area img,div.output_area svg{max-width:100%;height:auto}div.output_area img.unconfined,div.output_area svg.unconfined{max-width:none}div.output_area .mglyph>img{max-width:none}.output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}@media(max-width:540px){div.output_area{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}}div.output_area pre{margin:0;padding:0;border:0;vertical-align:baseline;color:black;background-color:transparent;border-radius:0}div.output_subarea{overflow-x:auto;padding:.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;max-width:calc(100% - 14ex)}div.output_scroll div.output_subarea{overflow-x:visible}div.output_text{text-align:left;color:#000;line-height:1.21429em}div.output_stderr{background:#fdd}div.output_latex{text-align:left}div.output_javascript:empty{padding:0}.js-error{color:darkred}div.raw_input_container{line-height:1.21429em;padding-top:5px}input.raw_input{font-family:monospace;font-size:inherit;color:inherit;width:auto;vertical-align:baseline;padding:0 .25em;margin:0 .25em}input.raw_input:focus{box-shadow:none}p.p-space{margin-bottom:10px}div.output_unrecognized{padding:5px;font-weight:bold;color:red}div.output_unrecognized a{color:inherit;text-decoration:none}div.output_unrecognized a:hover{color:inherit;text-decoration:none}.rendered_html{color:#000}.rendered_html em{font-style:italic}.rendered_html strong{font-weight:bold}.rendered_html u{text-decoration:underline}.rendered_html :link{text-decoration:underline}.rendered_html :visited{text-decoration:underline}.rendered_html h1{font-size:185.7%;margin:1.08em 0 0 0;font-weight:bold;line-height:1.0}.rendered_html h2{font-size:157.1%;margin:1.27em 0 0 0;font-weight:bold;line-height:1.0}.rendered_html h3{font-size:128.6%;margin:1.55em 0 0 0;font-weight:bold;line-height:1.0}.rendered_html h4{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1.0}.rendered_html h5{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1.0;font-style:italic}.rendered_html h6{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1.0;font-style:italic}.rendered_html h1:first-child{margin-top:.538em}.rendered_html h2:first-child{margin-top:.636em}.rendered_html h3:first-child{margin-top:.777em}.rendered_html h4:first-child{margin-top:1em}.rendered_html h5:first-child{margin-top:1em}.rendered_html h6:first-child{margin-top:1em}.rendered_html ul:not(.list-inline),.rendered_html ol:not(.list-inline){padding-left:2em}.rendered_html ul{list-style:disc}.rendered_html ul ul{list-style:square}.rendered_html ul ul ul{list-style:circle}.rendered_html ol{list-style:decimal}.rendered_html ol ol{list-style:upper-alpha}.rendered_html ol ol ol{list-style:lower-alpha}.rendered_html ol ol ol ol{list-style:lower-roman}.rendered_html ol ol ol ol ol{list-style:decimal}.rendered_html *+ul{margin-top:1em}.rendered_html *+ol{margin-top:1em}.rendered_html hr{color:black;background-color:black}.rendered_html pre{margin:1em 2em}.rendered_html pre,.rendered_html code{border:0;background-color:#fff;color:#000;font-size:100%;padding:0}.rendered_html blockquote{margin:1em 2em}.rendered_html table{margin-left:auto;margin-right:auto;border:0;border-collapse:collapse;border-spacing:0;color:black;font-size:12px;table-layout:fixed}.rendered_html thead{border-bottom:1px solid black;vertical-align:bottom}.rendered_html tr,.rendered_html th,.rendered_html td{text-align:right;vertical-align:middle;padding:.5em .5em;line-height:normal;white-space:normal;max-width:none;border:0}.rendered_html th{font-weight:bold}.rendered_html tbody tr:nth-child(odd){background:#f5f5f5}.rendered_html tbody tr:hover{background:rgba(66,165,245,0.2)}.rendered_html *+table{margin-top:1em}.rendered_html p{text-align:left}.rendered_html *+p{margin-top:1em}.rendered_html img{display:block;margin-left:auto;margin-right:auto}.rendered_html *+img{margin-top:1em}.rendered_html img,.rendered_html svg{max-width:100%;height:auto}.rendered_html img.unconfined,.rendered_html svg.unconfined{max-width:none}.rendered_html .alert{margin-bottom:initial}.rendered_html *+.alert{margin-top:1em}div.text_cell{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}@media(max-width:540px){div.text_cell>div.prompt{display:none}}div.text_cell_render{outline:0;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden}h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible}.text_cell.rendered .input_area{display:none}.text_cell.rendered .rendered_html{overflow-x:auto;overflow-y:hidden}.text_cell.rendered .rendered_html tr,.text_cell.rendered .rendered_html th,.text_cell.rendered .rendered_html td{max-width:none}.text_cell.unrendered .text_cell_render{display:none}.text_cell .dropzone .input_area{border:2px dashed #bababa;margin:-1px}.cm-header-1,.cm-header-2,.cm-header-3,.cm-header-4,.cm-header-5,.cm-header-6{font-weight:bold;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.cm-header-1{font-size:185.7%}.cm-header-2{font-size:157.1%}.cm-header-3{font-size:128.6%}.cm-header-4{font-size:110%}.cm-header-5{font-size:100%;font-style:italic}.cm-header-6{font-size:100%;font-style:italic}
diff --git a/nikola/data/themes/base/assets/css/ipython.min.css.map b/nikola/data/themes/base/assets/css/ipython.min.css.map
deleted file mode 100644
index 3e36e5e..0000000
--- a/nikola/data/themes/base/assets/css/ipython.min.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../base/less/variables.less","../components/bootstrap/less/mixins/vendor-prefixes.less","../base/less/mixins.less","../base/less/flexbox.less","../base/less/error.less","../notebook/less/ansicolors.less","../notebook/less/cell.less","../notebook/less/codecell.less","../notebook/less/codemirror.less","../notebook/less/highlight.less","../components/codemirror/lib/codemirror.css","../notebook/less/outputarea.less","../notebook/less/renderedhtml.less","../notebook/less/textcell.less","../components/bootstrap/less/variables.less","../widgets/less/widgets.less","../components/font-awesome/less/variables.less"],"names":[],"mappings":";;;;EAqBE,MAAC,KAAM,eCyHP,kBAAmB,eAAnB,CACI,cAAe,eAAf,CACC,aAAc,eAAd,CACG,UAAW,gBDtHrB,KACE,WAIF,IAGE,iBAAA,CACA,oBAIF,MACI,mBEvCJ,mBACI,qBAAA,CACA,0BAAA,CACA,8BAGJ,YACI,kBAOJ,YACI,UCGJ,MAEI,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBAGJ,KAAM,GAEF,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,UAGJ,MAEI,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,oBAGJ,KAAM,GAEF,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,UAGJ,KAAK,SACL,KAAK,SACL,SAEI,6BAAA,CACA,0BAAA,CACA,qBAAA,CAGA,2BAGJ,KAAK,WACL,KAAK,WACL,WAEI,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,SAAA,CACA,WAGJ,KAAK,WACL,KAAK,WACL,WAEI,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,OAGJ,KAAK,UACL,KAAK,UACL,UAVI,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,OAUJ,KAAK,WACL,KAAK,WACL,WAEI,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,OAGJ,YAEI,wBAAA,CACA,qBAAA,CACA,iBAGJ,YAEI,wBAAA,CACA,qBAAA,CACA,iBAGJ,KAAK,OACL,KAAK,OACL,OAEI,sBAAA,CACA,mBAAA,CACA,cAAA,CAGA,2BAGJ,KAAK,KACL,KAAK,KACL,KAEI,oBAAA,CACA,iBAAA,CACA,YAAA,CAGA,yBAGJ,KAAK,QACL,KAAK,QACL,QAEI,uBAAA,CACA,oBAAA,CACA,eAAA,CAGA,uBAGJ,KAAK,UACL,KAAK,UACL,UAEI,yBAAA,CACA,sBAAA,CACA,iBAAA,CAGA,yBAGJ,KAAK,SACL,KAAK,SACL,SAEI,wBAAA,CACA,qBAAA,CACA,gBAAA,CAGA,wBAGJ,KAAK,aACL,KAAK,aACL,aAEI,uBAAA,CACA,oBAAA,CACA,eAAA,CAGA,uBAGJ,KAAK,WACL,KAAK,WACL,WAEI,qBAAA,CACA,kBAAA,CACA,aAAA,CAGA,qBAGJ,KAAK,cACL,KAAK,cACL,cAEI,wBAAA,CACA,qBAAA,CACA,gBAAA,CAGA,mBAGJ,KAAK,gBACL,KAAK,gBACL,gBAEI,0BAAA,CACA,uBAAA,CACA,kBAAA,CAGA,qBAGJ,KAAK,eACL,KAAK,eACL,eAEI,yBAAA,CACA,sBAAA,CACA,iBAAA,CAGA,oBC3QJ,GAAG,OACD,UAAA,CACA,kBAGF,GAAG,MAAO,IACN,cAAA,CACA,mBAGJ,GAAG,MAAO,GACN,cAAA,CACA,mBAGJ,GAAG,mBACC,eAAA,CACA,eAAA,CACA;;;;EChBJ,UAAW,iBAGX,WAAY,YACZ,SAAU,cACV,WAAY,gBACZ,YAAa,cACb,UAAW,eACX,YAAa,iBACb,UAAW,gBACX,UAAW,WAGX,aAAc,uBACd,WAAY,qBACZ,aAAc,uBACd,cAAe,wBACf,YAAa,sBACb,cAAe,yBACf,YAAa,sBACb,YAAa,sBCtBb,GAAG,MACC,4BAAA,CHmDA,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,mBAAA,CD1DA,iBAAA,CANA,qBAAA,CACA,0BAAA,CACA,6BAAA,CIAA,iBAAA,CACA,kBAAA,CAkBA,UAAA,CACA,WAAA,CAEA,QAAA,CACA,aApBA,GARD,KAQE,UACG,qBAKJ,aAAA,GAdD,KAQE,UAIO,0BAIR,UAAW,IAhBZ,KAgBa,UACR,mBAKJ,aAAA,UANW,IAhBZ,KAgBa,UAIJ,0BAWZ,QAEI,cAAA,CAEA,YAAA,CACA,QAAA,CACA,qBAAA,CACA,gBAAA,CAEA,sBAWJ,QARmC,iBAG/B,QACI,iBAIR,GAAG,YHCC,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,mBAAA,CA0CA,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,OG1DJ,4BACI,GAAG,YAGC,mBAKR,GAAG,YACC,wBAAA,CJzDA,iBAAA,CI2DA,kBAAA,CACA,sBAMJ,GAAG,OAAO,OACN,aAAA,CACA,iBAGJ,GAAG,mBAEC,qBAAA,CH5DA,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBG2CJ,GAAG,kBAKC,aJxEF,iBAAA,CI0EM,WAAA,CACA,gBAAA,CACA,SAAA,CACA,wBAAA,CACA,mBAXR,GAAG,kBAKC,YAQI,GACI,aAAA,CACA,qBAEA,GAjBT,kBAKC,YAQI,EAIK,OACG,aAAA,CACA,qBAWhB,QANmC,iBAE/B,GAAG,kBAAmB,IAAK,QACvB,cCtGR,aAAA,GALG,WAGK,yBAQR,GAAG,OACC,uBAAA,CJUA,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBIbJ,QARmC,iBAE/B,GAAG,OJkCH,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,qBI3CJ,GAAG,cACC,UAAA,CACA,iCAQJ,GAAG,WAAY,IAAK,WAChB,WAAA,CACA,WAAA,CACA,SAAA,CACA,6BAGJ,GAAG,WAAY,IAAK,UAAW,KAC3B,QAAA,CACA,WAAA,CACA,SAAA,CACA,6BClCJ,YACI,qBAAA,CACA,cAAA,CACA,WAAA,CACA,gBAGJ,mBAGI,iBAAA,CACA,gBAGJ,kBAGI,aAGJ,uBAGI,oBAGJ,oBAGI,6BAAA,CACA,2BAGJ,WAAY,KAGR,SAAA,CACA,QAAA,CNnCF,gBOFF,gBACE,WAGF,oBAHE,WAOF,sBACE,cAGF,sBACE,WAGF,kBACE,cAGF,mBACE,aAAA,CACA,kBAGF,kBACE,WAGF,gBACE,WAGF,mBACE,aAAA,CACA,iBAGF,mBACE,cAGF,iBACE,WAGF,oBACE,UAAA,CACA,iBAGF,gBACE,WAIF,eC8BuB,WD3BvB,oBCoC4B,WDnC5B,qBCqC6B,WDpC7B,mBCsC2B,WDrC3B,eCsCuB,WDrCvB,qBCsC6B,WDrC7B,kBCsC0B,WDrC1B,iBCsCyB,WDrCzB,gBCuCwB,WDlCtB,aADY,KACX,YArCD,aAAA,CACA,iBAqCA,aAFY,KAEX,SA1CD,WA2CA,aAHY,KAGX,WA/CD,WAgDA,aAJY,KAIX,QCYoB,WDXrB,aALY,KAKX,aA1ED,WA6EA,aARY,KAQX,aA/BD,UAAA,CACA,iBA+BA,aATY,KASX,eAtED,cAuEA,aAVY,KAUX,eAnED,WAoEA,aAXY,KAWX,YA5DD,aAAA,CACA,kBA4DA,aAZY,KAYX,WAjED,cAkEA,aAbY,KAaX,aCYyB,WDX1B,aAdY,KAcX,SAhCD,WAiCA,aAfY,KAeX,cCY0B,WDX3B,aAhBY,KAgBX,YA/CD,cAgDA,aAjBY,KAiBX,YCYwB,WDXzB,aAlBY,KAkBX,QCYoB,WDXrB,aAnBY,KAmBX,cCY0B,WDX3B,aApBY,KAoBX,WCYuB,WDXxB,aArBY,KAqBX,UCYsB,WDXvB,aAtBY,KAsBX,SCaqB,WDZtB,aAvBY,KAuBX,UAlDD,WAoDA,aAzBY,KAyBX,QACC,sQAAA,CACA,yBAAA,CACA,4BE7GJ,GAAG,gBAEC,iBAAA,CRkDA,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,mBAAA,CQ9DA,UAIJ,GAAG,eAEC,WAAA,CAEA,UAAA,CAEA,aAAA,CTNA,iBAAA,CD2DF,kDAAA,CACQ,0CAAA,CUnDN,cAIJ,GAAG,kBACC,QAAA,CACA,SAAA,CR4BA,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,oBQvCJ,GAAG,oBACC,WAAA,CACA,cAAA,CACA,iBAAA,CTtBA,kBS0BJ,GAAG,mBAAmB,OViCpB,qCAAA,CACQ,6BAAA,CU/BN,iCAGJ,GAAG,eACC,cAIJ,GAAG,aACC,SAAA,CACA,uBAAA,CR1BA,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBQSJ,GAAG,YAKC,kBAEI,eAAA,YAPR,GAAG,YAUC,eAEI,OACI,aAAA,CACA,eAdZ,GAAG,YAUC,eAOI,KACI,aAAA,CACA,eAnBZ,GAAG,YAuBC,KAvBJ,GAAG,YAuBM,KACD,cAAA,CACA,YACA,GA1BL,YAuBC,IAGK,YAAD,GA1BL,YAuBM,IAGA,YACG,eAOZ,QR5BI,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,oBQwBJ,QAPmC,iBAE/B,GAAG,aRlCH,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,qBQwBJ,GAAG,YAAa,KACZ,QAAA,CACA,SAAA,CACA,QAAA,CACA,uBAAA,CACA,WAAA,CACA,4BAAA,CTpFF,gBS0FF,GAAG,gBAEC,eAAA,CACA,YAAA,CRGA,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,MAAA,CQLA,UAAW,kBAOf,GAAG,aACC,eAAA,CACA,UAAA,CAEA,sBAUJ,GAAG,eACC,gBAGJ,GAAG,cACC,gBAaJ,GAAG,kBAAkB,OACjB,UAGJ,UACI,cAKJ,GAAG,qBACC,qBAAA,CAGA,gBAOJ,KAAK,WACD,mBAAA,CACA,iBAAA,CACA,aAAA,CACA,UAAA,CAEA,uBAAA,CAEA,eAAA,CACA,eAGJ,KAAK,UAAU,OACX,gBAGJ,CAAC,SACG,mBAGJ,GAAG,qBACD,WAAA,CACA,gBAAA,CACA,UAHF,GAAG,oBAKD,GACI,aAAA,CACA,qBAEA,GATH,oBAKD,EAIK,OACG,aAAA,CACA,qBCxMV,eAEI,WAFJ,cAGI,IAAI,kBAHR,cAII,QAAQ,iBAJZ,cAKI,GAAG,0BALP,cAMI,OAAO,0BANX,cAOI,UAAU,0BAPd,cAYI,IAAI,gBAAA,CAAmB,mBAAA,CAAsB,gBAAA,CAAmB,cAZpE,cAaI,IAAI,gBAAA,CAAmB,mBAAA,CAAsB,gBAAA,CAAmB,cAbpE,cAcI,IAAI,gBAAA,CAAmB,mBAAA,CAAsB,gBAAA,CAAmB,cAdpE,cAeI,IAAI,cAAA,CAAiB,gBAAA,CAAmB,gBAAA,CAAmB,cAf/D,cAgBI,IAAI,cAAA,CAAiB,gBAAA,CAAmB,gBAAA,CAAmB,aAAA,CAAkB,kBAhBjF,cAiBI,IAAI,cAAA,CAAiB,gBAAA,CAAmB,gBAAA,CAAmB,aAAA,CAAkB,kBAjBjF,cAoBI,GAAE,aAAc,kBApBpB,cAqBI,GAAE,aAAc,kBArBpB,cAsBI,GAAE,aAAc,kBAtBpB,cAuBI,GAAE,aAAc,eAvBpB,cAwBI,GAAE,aAAc,eAxBpB,cAyBI,GAAE,aAAc,eAzBpB,cA2BI,IAAI,eAAA,CAAiB,YAAA,CAAiB,eA3B1C,cA4BI,GAAG,IAAI,iBAAA,CAAmB,aA5B9B,cA6BI,GAAG,GAAG,IAAI,iBAAA,CAAmB,aA7BjC,cA8BI,IAAI,kBAAA,CAAoB,YAAA,CAAiB,eA9B7C,cA+BI,GAAG,IAAI,sBAAA,CAAwB,aA/BnC,cAgCI,GAAG,GAAG,IAAI,sBAAA,CAAwB,aAhCtC,cAiCI,GAAG,GAAG,GAAG,IAAI,sBAAA,CAAwB,aAjCzC,cAmCI,GAAG,GAAG,GAAG,GAAG,IAAI,kBAAA,CAAoB,aAnCxC,cAoCI,EAAE,IAAM,eApCZ,cAqCI,EAAE,IAAM,eArCZ,cAuCI,IACI,WAAA,CACA,uBAzCR,cA4CI,KAAK,eA5CT,cA8CI,KA9CJ,cA8CS,MACD,QAAA,CACA,qBAAA,CACA,UAAA,CACA,cAAA,CACA,UAnDR,cAsDI,YAAY,eAtDhB,cAwDI,OACI,gBAAA,CACA,iBAAA,CACA,sBAAA,CACA,yBA5DR,cA8DI,IA9DJ,cA8DQ,IA9DR,cA8DY,IACJ,sBAAA,CACA,wBAAA,CACA,eAjER,cAmEI,IAnEJ,cAmEQ,IACA,eAAA,CACA,qBAAA,CACA,YAtER,cAwEI,IAAI,iBAxER,cAyEI,EAAE,OAAS,eAzEf,cA2EI,GAAG,gBA3EP,cA4EI,EAAE,GAAK,eA5EX,cA8EI,KACI,aAAA,CACA,gBAAA,CACA,kBAjFR,cAmFI,EAAE,KAAO,eAnFb,cAqFI,KArFJ,cAqFS,KACD,cAAA,CACA,YACA,cAHJ,IAGK,YAAD,cAHC,IAGA,YACG,eCzFZ,GAAG,WVsBC,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBU3BJ,QAPmC,iBAE/B,GAAG,UAAW,IAAK,QACf,cAIR,GAAG,kBAEC,YAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CACA,2BAAA,CACA,UAAA,CXdA,qBAAA,CACA,0BAAA,CACA,8BWgBJ,CAAC,YAAY,MACX,oBAAA,CACA,cAAA,CACA,kBAIE,EAAC,MAAO,cAAR,EAAC,MAAO,cAAR,EAAC,MAAO,cAAR,EAAC,MAAO,cAAR,EAAC,MAAO,cAAR,EAAC,MAAO,cACJ,mBAIR,UAAU,SAAU,aAChB,aAGJ,UAAU,SAAU,gBAChB,gBAGJ,UAAU,WAAY,mBAClB,aAGJ,aACA,aACA,aACA,aACA,aACA,aACI,gBAAA,CACA,YCRsB,4CDW1B,aAAe,iBACf,aAAe,iBACf,aAAe,iBACf,aAAe,eACf,aACI,cAAA,CACA,kBAEJ,aACI,cAAA,CACA,kBE7DJ,gBACI,KADJ,gBACU,OACF,cAIR,aAgBI,uBAAA,CZJA,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBY3BJ,YAmBI,iBACI,2BAAA,CACA,eAAA,Cb5BJ,qBAAA,CACA,0BAAA,CACA,6BAAA,CC+CA,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,mBAAA,CA6DA,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,MAAA,CAiFA,uBAAA,CACA,oBAAA,CACA,eAAA,CAGA,uBYpLA,YAAC,oBAAqB,QAAO,OACzB,QC0Ec,OD1Ed,CACA,YAAa,aAAb,CACA,aAAA,CACA,cAAA,CACA,OAAA,CACA,YAOR,aAEI,qBAAA,CACA,eAAA,Cb9CA,kBamDJ,gBAuBI,gBAAA,CACA,iBAAA,CACA,gBAAA,CAGA,WAAA,CACA,UAAA,CACA,cAAA,CACA,eAAA,CACA,kBAAA,CAtCA,qBAAA,CACA,eAAA,Cb9CA,iBAAA,CCaA,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBYuBJ,eAwCI,YAEI,QAAA,CACA,eAAA,CZjFJ,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,mBAAA,CAwEA,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,OYtDJ,eAwCI,WAQI,mBACI,UAAA,CACA,WAAA,CACA,eAAA,CACA,kBApDZ,eAwCI,WAeI,kBACI,WAAA,CACA,eAAA,CACA,gBAKZ,gBAKI,kBAAA,CACA,gBAAA,CAGA,SAAA,CACA,aAAA,CACA,YAAA,CACA,gBAAA,CAjFA,qBAAA,CACA,eAAA,Cb9CA,iBAAA,CC2CA,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,oBYwDJ,eAoBI,YAEI,QAAA,CACA,eAAA,CACA,gBAAA,CACA,cAAA,CZhGJ,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,mBAAA,CA0CA,kBAAA,CACA,eAAA,CACA,UAAA,CAGA,OYSJ,eAoBI,WAUI,mBACI,UAAA,CACA,WAAA,CACA,gBAAA,CACA,kBAlCZ,eAoBI,WAiBI,kBACI,UAAA,CACA,gBAAA,CACA,gBAKZ,aAEI,WAAA,CACA,SAGJ,gBAEI,WAAA,CACA,gBAGJ,qBAEI,WAAA,CACA,SAGJ,iBAEI,cAAA,CACA,gBAHJ,gBAKI,eAEI,uBAAA,CACA,oBAAA,CACA,mBAAA,CACA,kBAAA,CACA,gBAIR,kBAGI,gBAGJ,YAAa,eAAe,GAAG,GAC3B,cAGJ,aZ7LI,mBAAA,CACA,6BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,0BAAA,CACA,sBAAA,CAEA,WAAA,CACA,qBAAA,CACA,iBAAA,CAGA,YAAA,CACA,kBAAA,CACA,oBY8KJ,YAII,MAAK,kBACD,cAAA,CACA,mBANR,YASI,eAEI,cAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,wBAfR,YAkBI,iBACI,gBAAA,CACA,eAAA,CACA,eAAA,CACA,wBAIR,aZzLI,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,oBY0KJ,YAKI,eAEI,kBAAA,CACA,iBAAA,CACA,2BATR,YAYI,iBAEI,eAAA,CACA,iBAAA,CACA,wBAKR,Yb/PI,qBAAA,CACA,0BAAA,CACA,6BAAA,CCiNA,uBAAA,CACA,oBAAA,CACA,eAAA,CAGA,uBY6CJ,kBZpNI,mBAAA,CACA,2BAAA,CACA,yBAAA,CAEA,gBAAA,CACA,wBAAA,CACA,sBAAA,CAEA,WAAA,CACA,mBAAA,CACA,iBAAA,CAGA,YAAA,CACA,qBAAA,CACA,mBAAA,CDhEA,qBAAA,CACA,0BAAA,CACA,6BAAA,CawQA,gBALJ,iBAOI,OACI,YAAA,CACA","file":"ipython.min.css"} \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/css/nikola_ipython.css b/nikola/data/themes/base/assets/css/nikola_ipython.css
index 5ae5189..aba37da 100644
--- a/nikola/data/themes/base/assets/css/nikola_ipython.css
+++ b/nikola/data/themes/base/assets/css/nikola_ipython.css
@@ -40,77 +40,17 @@ div.text_cell_render {
.rendered_html pre, .rendered_html code {
background-color: #DDDDDD;
+ margin: 1em 0em;
+ font-size: 14px;
+}
+
+.rendered_html pre {
padding-left: 0.5em;
padding-right: 0.5em;
padding-top: 0.05em;
padding-bottom: 0.05em;
- margin: 1em 0em;
- font-size: 14px;
}
.page-content > .content p {
margin: 0 0 0px;
}
-
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #408080; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #008000; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
-.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #008000 } /* Keyword.Pseudo */
-.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #B00040 } /* Keyword.Type */
-.highlight .m { color: #666666 } /* Literal.Number */
-.highlight .s { color: #BA2121 } /* Literal.String */
-.highlight .na { color: #7D9029 } /* Name.Attribute */
-.highlight .nb { color: #008000 } /* Name.Builtin */
-.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
-.highlight .no { color: #880000 } /* Name.Constant */
-.highlight .nd { color: #AA22FF } /* Name.Decorator */
-.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0000FF } /* Name.Function */
-.highlight .nl { color: #A0A000 } /* Name.Label */
-.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #19177C } /* Name.Variable */
-.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #666666 } /* Literal.Number.Float */
-.highlight .mh { color: #666666 } /* Literal.Number.Hex */
-.highlight .mi { color: #666666 } /* Literal.Number.Integer */
-.highlight .mo { color: #666666 } /* Literal.Number.Oct */
-.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
-.highlight .sc { color: #BA2121 } /* Literal.String.Char */
-.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
-.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
-.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.highlight .sx { color: #008000 } /* Literal.String.Other */
-.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
-.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
-.highlight .ss { color: #19177C } /* Literal.String.Symbol */
-.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #19177C } /* Name.Variable.Class */
-.highlight .vg { color: #19177C } /* Name.Variable.Global */
-.highlight .vi { color: #19177C } /* Name.Variable.Instance */
-.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/nikola/data/themes/base/assets/css/nikola_rst.css b/nikola/data/themes/base/assets/css/nikola_rst.css
new file mode 100644
index 0000000..71a0f84
--- /dev/null
+++ b/nikola/data/themes/base/assets/css/nikola_rst.css
@@ -0,0 +1,79 @@
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning, div.sidebar,
+div.system-message {
+/* stolen from Boostrap 4 (.card) */
+ margin-bottom: 2rem;
+ position: relative;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ min-width: 0;
+ word-wrap: break-word;
+ background-color: #fff;
+ color: #212529;
+ background-clip: border-box;
+ border: 1px solid rgba(0,0,0,.125);
+ border-radius: .25rem;
+ padding: 0;
+}
+
+div.attention, div.caution, div.danger, div.error, div.warning {
+ /* stolen from Boostrap 3 (.border-danger) */
+ border-color: #dc3545!important;
+}
+
+div.admonition p, div.hint p,
+div.important p, div.note p,
+div.tip p, div.sidebar p,
+div.attention p, div.caution p,
+div.danger p, div.error p,
+div.warning p, div.system-message p {
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title, div.sidebar p.sidebar-title,
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title, div.system-message p.system-message-title {
+/* stolen from Boostrap 4 (.card .card-header) */
+ font-weight: 400;
+ font-size: 1.25rem;
+ padding: .75rem 1.25rem;
+ margin-bottom: 1rem;
+ background-color: rgba(0,0,0,.03);
+ border-bottom: 1px solid rgba(0,0,0,.125);
+}
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title, div.system-message p.system-message-title {
+ /* stolen from Boostrap 4 (.card .card-header .bg-danger) */
+ background-color: #dc3545;
+ color: white;
+}
+
+div.sidebar {
+ margin-right: 0;
+}
+
+/* Improved margin overrides */
+div.topic,
+pre.literal-block,
+pre.doctest-block,
+pre.math,
+pre.code,
+div.code {
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+div.code {
+ margin-bottom: 1rem;
+}
diff --git a/nikola/data/themes/base/assets/css/rst.css b/nikola/data/themes/base/assets/css/rst.css
index a1efa1a..03424a8 100644
--- a/nikola/data/themes/base/assets/css/rst.css
+++ b/nikola/data/themes/base/assets/css/rst.css
@@ -1,330 +1,2 @@
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning, div.sidebar {
-/* stolen from Boostrap 3 (.panel .panel-default) */
- margin-bottom: 20px;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
- box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
- padding: 0 15px 15px 15px;
-}
-
-div.attention, div.caution, div.danger, div.error, div.warning {
- /* stolen from Boostrap 3 (.panel .panel-danger) */
- border-color: #EBCCD1;
-}
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title, div.sidebar p.sidebar-title,
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
-/* stolen from Boostrap 3 (.panel .panel-default .panel-heading) */
- font-size: 16px;
- color: #333;
- background-color: #F5F5F5;
- padding: 10px 15px;
- margin-left: -15px;
- margin-right: -15px;
- border-bottom: 1px solid rgba(0, 0, 0, 0);
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
- color: #333;
- background-color: #F5F5F5;
- border-color: #DDD;
-}
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
- /* stolen from Boostrap 3 (.panel .panel-danger) */
- color: #A94442;
- background-color: #F2DEDE;
- border-color: #EBCCD1;
-}
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-
-html[dir="rtl"] div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-right: 1.5em ;
- margin-left: 0 ;
-}
-
-div.sidebar {
- margin-left: 2em;
- min-height: 20px;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: #a94442 }
-
-div.system-message {
- border: 1px solid #ebccd1;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: #a94442 ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-img.align-left, .figure.align-left, object.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-.figure.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-subtitle {
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.code .ln { color: grey; } /* line numbers */
-/*
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-*/
-
-span.classifier {
- font-style: italic }
-
-span.classifier-delimiter {
- font-weight: bold }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-a.footnote-reference {
- line-height: 0px;
-}
+@import url("rst_base.css");
+@import url("nikola_rst.css");
diff --git a/nikola/data/themes/base/assets/css/rst_base.css b/nikola/data/themes/base/assets/css/rst_base.css
new file mode 100644
index 0000000..429f7b5
--- /dev/null
+++ b/nikola/data/themes/base/assets/css/rst_base.css
@@ -0,0 +1,474 @@
+/* Minimal style sheet for the HTML output of Docutils. */
+/* */
+/* :Author: Günter Milde, based on html4css1.css by David Goodger */
+/* :Id: $Id: minimal.css 7952 2016-07-26 18:15:59Z milde $ */
+/* :Copyright: © 2015 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+
+/* This CSS2.1_ stylesheet defines rules for Docutils elements without */
+/* HTML equivalent. It is required to make the document semantic visible. */
+/* */
+/* .. _CSS2.1: http://www.w3.org/TR/CSS2 */
+/* .. _validates: http://jigsaw.w3.org/css-validator/validator$link */
+
+/* alignment of text and inline objects inside block objects*/
+.align-left { text-align: left; }
+.align-right { text-align: right; }
+.align-center { clear: both; text-align: center; }
+.align-top { vertical-align: top; }
+.align-middle { vertical-align: middle; }
+.align-bottom { vertical-align: bottom; }
+
+/* titles */
+h1.title, p.subtitle {
+ text-align: center;
+}
+p.admonition-title,
+p.topic-title,
+p.sidebar-title,
+p.rubric,
+p.system-message-title {
+ font-weight: bold;
+}
+h1 + p.subtitle,
+h1 + p.section-subtitle {
+ font-size: 1.6em;
+}
+h2 + p.section-subtitle { font-size: 1.28em; }
+p.subtitle,
+p.section-subtitle,
+p.sidebar-subtitle {
+ font-weight: bold;
+ margin-top: -0.5em;
+}
+p.sidebar-title,
+p.rubric {
+ font-size: larger;
+}
+p.rubric { color: maroon; }
+a.toc-backref {
+ color: black;
+ text-decoration: none; }
+
+/* Warnings, Errors */
+div.caution p.admonition-title,
+div.attention p.admonition-title,
+div.danger p.admonition-title,
+div.error p.admonition-title,
+div.warning p.admonition-title,
+div.system-messages h1,
+div.error,
+span.problematic,
+p.system-message-title {
+ color: red;
+}
+
+/* inline literals */
+span.docutils.literal {
+ font-family: monospace;
+ white-space: pre-wrap;
+}
+/* do not wraph at hyphens and similar: */
+.literal > span.pre { white-space: nowrap; }
+
+/* Lists */
+
+/* compact and simple lists: no margin between items */
+.simple li, .compact li,
+.simple ul, .compact ul,
+.simple ol, .compact ol,
+.simple > li p, .compact > li p,
+dl.simple > dd, dl.compact > dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+/* Table of Contents */
+/*div.topic.contents { margin: 0; }*/
+ul.auto-toc {
+ list-style-type: none;
+ padding-left: 1.5em; }
+
+/* Enumerated Lists */
+ol.arabic { list-style: decimal }
+ol.loweralpha { list-style: lower-alpha }
+ol.upperalpha { list-style: upper-alpha }
+ol.lowerroman { list-style: lower-roman }
+ol.upperroman { list-style: upper-roman }
+
+dt span.classifier { font-style: italic }
+dt span.classifier:before {
+ font-style: normal;
+ margin: 0.5em;
+ content: ":";
+}
+
+/* Field Lists and drivatives */
+/* bold field name, content starts on the same line */
+dl.field-list > dt,
+dl.option-list > dt,
+dl.docinfo > dt,
+dl.footnote > dt,
+dl.citation > dt {
+ font-weight: bold;
+ clear: left;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.5em;
+}
+/* Offset for field content (corresponds to the --field-name-limit option) */
+dl.field-list > dd,
+dl.option-list > dd,
+dl.docinfo > dd {
+ margin-left: 9em; /* ca. 14 chars in the test examples */
+}
+/* start field-body on a new line after long field names */
+dl.field-list > dd > *:first-child,
+dl.option-list > dd > *:first-child
+{
+ display: inline-block;
+ width: 100%;
+ margin: 0;
+}
+/* field names followed by a colon */
+dl.field-list > dt:after,
+dl.docinfo > dt:after {
+ content: ":";
+}
+
+/* Bibliographic Fields (docinfo) */
+pre.address { font: inherit; }
+dd.authors > p { margin: 0; }
+
+/* Option Lists */
+dl.option-list { margin-left: 40px; }
+dl.option-list > dt { font-weight: normal; }
+span.option { white-space: nowrap; }
+
+/* Footnotes and Citations */
+dl.footnote.superscript > dd {margin-left: 1em; }
+dl.footnote.brackets > dd {margin-left: 2em; }
+dl > dt.label { font-weight: normal; }
+a.footnote-reference.brackets:before,
+dt.label > span.brackets:before { content: "["; }
+a.footnote-reference.brackets:after,
+dt.label > span.brackets:after { content: "]"; }
+a.footnote-reference.superscript,
+dl.footnote.superscript > dt.label {
+ vertical-align: super;
+ font-size: smaller;
+}
+dt.label > span.fn-backref { margin-left: 0.2em; }
+dt.label > span.fn-backref > a { font-style: italic; }
+
+/* Line Blocks */
+div.line-block { display: block; }
+div.line-block div.line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 40px;
+}
+
+/* Figures, Images, and Tables */
+.figure.align-left,
+img.align-left,
+object.align-left,
+table.align-left {
+ margin-right: auto;
+}
+.figure.align-center,
+img.align-center,
+object.align-center {
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+}
+table.align-center {
+ margin-left: auto;
+ margin-right: auto;
+}
+.figure.align-right,
+img.align-right,
+object.align-right,
+table.align-right {
+ margin-left: auto;
+}
+/* reset inner alignment in figures and tables */
+div.align-left, div.align-center, div.align-right,
+table.align-left, table.align-center, table.align-right
+{ text-align: inherit }
+
+/* Admonitions and System Messages */
+div.admonition,
+div.system-message,
+div.sidebar{
+ margin: 40px;
+ border: medium outset;
+ padding-right: 1em;
+ padding-left: 1em;
+}
+
+/* Sidebar */
+div.sidebar {
+ width: 30%;
+ max-width: 26em;
+ float: right;
+ clear: right;
+}
+
+/* Text Blocks */
+div.topic,
+pre.literal-block,
+pre.doctest-block,
+pre.math,
+pre.code {
+ margin-right: 40px;
+ margin-left: 40px;
+}
+pre.code .ln { color: gray; } /* line numbers */
+
+/* Tables */
+table.docutils { border-collapse: collapse; }
+table.docutils > td, table.docutils > th {
+ border-style: solid;
+ border-color: silver;
+ padding: 0 1ex;
+ border-width: thin;
+}
+table.docutils > td > p:first-child, table.docutils > th > p:first-child { margin-top: 0; }
+table.docutils > td > p, table.docutils > th > p { margin-bottom: 0; }
+
+table.docutils > caption {
+ text-align: left;
+ margin-bottom: 0.25em
+}
+
+table.borderless td, table.borderless th {
+ border: 0;
+ padding: 0;
+ padding-right: 0.5em /* separate table cells */
+}
+
+/* CSS31_ style sheet for the output of Docutils HTML writers. */
+/* Rules for easy reading and pre-defined style variants. */
+/* */
+/* :Author: Günter Milde, based on html4css1.css by David Goodger */
+/* :Id: $Id: plain.css 7952 2016-07-26 18:15:59Z milde $ */
+/* :Copyright: © 2015 Günter Milde. */
+/* :License: Released under the terms of the `2-Clause BSD license`_, */
+/* in short: */
+/* */
+/* Copying and distribution of this file, with or without modification, */
+/* are permitted in any medium without royalty provided the copyright */
+/* notice and this notice are preserved. */
+/* */
+/* This file is offered as-is, without any warranty. */
+/* */
+/* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause */
+/* .. _CSS3: http://www.w3.org/TR/CSS3 */
+
+
+/* Document Structure */
+/* ****************** */
+
+/* Sections */
+
+/* Transitions */
+
+hr.docutils {
+ width: 80%;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ clear: both;
+}
+
+/* Paragraphs */
+/* ========== */
+
+/* vertical space (parskip) */
+/*p, ol, ul, dl,*/
+/*div.line-block,*/
+/*table{*/
+ /*margin-top: 0.5em;*/
+ /*margin-bottom: 0.5em;*/
+/*}*/
+/*h1, h2, h3, h4, h5, h6, */
+dl > dd {
+ margin-bottom: 0.5em;
+}
+
+/* Lists */
+/* ========== */
+
+/* Definition Lists */
+
+dl > dd p:first-child { margin-top: 0; }
+/* :last-child is not part of CSS 2.1 (introduced in CSS 3) */
+/* dl > dd p:last-child { margin-bottom: 0; } */
+
+/* lists nested in definition lists */
+/* :only-child is not part of CSS 2.1 (introduced in CSS 3) */
+dd > ul:only-child, dd > ol:only-child { padding-left: 1em; }
+
+/* Description Lists */
+/* styled like in most dictionaries, encyclopedias etc. */
+dl.description > dt {
+ font-weight: bold;
+ clear: left;
+ float: left;
+ margin: 0;
+ padding: 0;
+ padding-right: 0.5em;
+}
+
+/* Field Lists */
+
+/* example for custom field-name width */
+dl.field-list.narrow > dd {
+ margin-left: 5em;
+}
+/* run-in: start field-body on same line after long field names */
+dl.field-list.run-in > dd p {
+ display: block;
+}
+
+/* Bibliographic Fields */
+
+/* generally, bibliographic fields use special definition list dl.docinfo */
+/* but dedication and abstract are placed into "topic" divs */
+div.abstract p.topic-title {
+ text-align: center;
+}
+div.dedication {
+ margin: 2em 5em;
+ text-align: center;
+ font-style: italic;
+}
+div.dedication p.topic-title {
+ font-style: normal;
+}
+
+/* Citations */
+dl.citation dt.label {
+ font-weight: bold;
+}
+span.fn-backref {
+ font-weight: normal;
+}
+
+/* Text Blocks */
+/* ============ */
+
+/* Literal Blocks */
+pre.literal-block, pre.doctest-block,
+pre.math, pre.code {
+ margin-left: 1.5em;
+ margin-right: 1.5em
+}
+
+/* Block Quotes */
+
+blockquote,
+div.topic {
+ margin-left: 1.5em;
+ margin-right: 1.5em
+}
+blockquote > table,
+div.topic > table {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+blockquote p.attribution,
+div.topic p.attribution {
+ text-align: right;
+ margin-left: 20%;
+}
+
+/* Tables */
+/* ====== */
+
+/* th { vertical-align: bottom; } */
+
+table tr { text-align: left; }
+
+/* "booktabs" style (no vertical lines) */
+table.booktabs {
+ border: 0;
+ border-top: 2px solid;
+ border-bottom: 2px solid;
+ border-collapse: collapse;
+}
+table.booktabs * {
+ border: 0;
+}
+table.booktabs th {
+ border-bottom: thin solid;
+}
+
+/* numbered tables (counter defined in div.document) */
+table.numbered > caption:before {
+ counter-increment: table;
+ content: "Table " counter(table) ": ";
+ font-weight: bold;
+}
+
+/* Explicit Markup Blocks */
+/* ====================== */
+
+/* Footnotes and Citations */
+/* ----------------------- */
+
+/* line on the left */
+dl.footnote {
+ padding-left: 1ex;
+ border-left: solid;
+ border-left-width: thin;
+}
+
+/* Directives */
+/* ---------- */
+
+/* Body Elements */
+/* ~~~~~~~~~~~~~ */
+
+/* Images and Figures */
+
+/* let content flow to the side of aligned images and figures */
+.figure.align-left,
+img.align-left,
+object.align-left {
+ display: block;
+ clear: left;
+ float: left;
+ margin-right: 1em
+}
+.figure.align-right,
+img.align-right,
+object.align-right {
+ display: block;
+ clear: right;
+ float: right;
+ margin-left: 1em
+}
+
+/* Sidebar */
+
+/* Move into the margin. In a layout with fixed margins, */
+/* it can be moved into the margin completely. */
+div.sidebar {
+ width: 30%;
+ max-width: 26em;
+ margin-left: 1em;
+ margin-right: -5.5%;
+ background-color: #ffffee ;
+}
diff --git a/nikola/data/themes/base/assets/css/theme.css b/nikola/data/themes/base/assets/css/theme.css
index 4842a3f..076351f 100644
--- a/nikola/data/themes/base/assets/css/theme.css
+++ b/nikola/data/themes/base/assets/css/theme.css
@@ -1,7 +1,7 @@
@charset "UTF-8";
/*
- Copyright © 2014-2016 Daniel Aleksandersen and others.
+ Copyright © 2014-2020 Daniel Aleksandersen and others.
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
@@ -67,9 +67,9 @@ body {
margin-right: 1.5em;
}
-#menu ul li:dir(rtl),
-#toptranslations ul li:dir(rtl),
-#toptranslations h2:dir(rtl) {
+html[dir="rtl"] #menu ul li,
+html[dir="rtl"] #toptranslations ul li,
+html[dir="rtl"] #toptranslations h2 {
margin-left: 1.5em;
margin-right: 0;
}
@@ -79,12 +79,12 @@ body {
float: right;
}
-#toptranslations:dir(rtl) {
+html[dir="rtl"] #toptranslations {
text-align: left;
float: left;
}
-.posttranslations h3 {
+.posttranslations h3, .translationslist h3 {
display: inline;
font-size: 1em;
}
@@ -93,7 +93,7 @@ body {
font-size: 2em;
}
-.posttranslations h3:last-child {
+.posttranslations h3:last-child, .translationslist h3:last-child {
display: none;
}
@@ -120,35 +120,50 @@ body {
}
.metadata p:before,
.postpromonav .tags li:before,
-.postlist .listdate:after {
+.postlist .listdate:after,
+.translationslist p:before {
content: " — ";
}
.postlist li {
margin-bottom: .33em;
}
+.byline a:not(:last-child):after {
+ content: ",";
+}
/* Post and archive pagers */
.postindexpager .pager .next:before {
content: "↓ ";
}
-.postindexpager .pager .previous:before {
+.postindexpager .pager .previous:before,
+.archivenav .pager .up:before {
content: "↑ ";
}
-.postpromonav .pager .next:after {
+.postpromonav .pager .next:after,
+.archivenav .pager .next:after {
content: " →";
}
-.postpromonav .pager .previous:dir(rtl):after {
+html[dir="rtl"] .postpromonav .pager .previous:after,
+html[dir="rtl"] .archivenav .pager .previous:after {
content: " →";
}
-.postpromonav .pager .previous:before {
+.postpromonav .pager .previous:before,
+.archivenav .pager .previous:before {
content: "← ";
}
-.postpromonav .pager .next:dir(rtl):before {
+html[dir="rtl"] .postpromonav .pager .next:before,
+html[dir="rtl"] .archivenav .pager .next:before {
content: "← ";
}
-
+html[dir="rtl"] .postpromonav .pager .next:after,
+html[dir="rtl"] .archivenav .pager .next:after,
+html[dir="rtl"] .postpromonav .pager .previous:before,
+html[dir="rtl"] .archivenav .pager .previous:before {
+ content: "";
+}
.metadata p:first-of-type:before,
-.postpromonav .tags li:first-of-type:before {
+.postpromonav .tags li:first-of-type:before,
+.translationslist p:first-of-type:before {
content: "";
}
.postpromonav .pager {
@@ -156,24 +171,40 @@ body {
height: 1em;
}
.postpromonav .tags li,
-.postpromonav .pager li {
+.postpromonav .pager li,
+.archivenav .pager li {
display: inline-block;
}
-.postpromonav .pager .next {
+.archivenav .pager {
+ text-align: center
+}
+.postpromonav .pager .next,
+.archivenav .pager .next {
float: right;
}
-.postpromonav .pager .next:dir(rtl) {
+html[dir="rtl"] .postpromonav .pager .next,
+html[dir="rtl"] .archivenav .pager .next {
float: left;
}
-.postpromonav .pager .previous {
+.postpromonav .pager .previous,
+.archivenav .pager .previous {
float: left;
}
-.postpromonav .pager .previous:dir(rtl) {
+html[dir="rtl"] .postpromonav .pager .previous,
+html[dir="rtl"] .archivenav .pager .previous {
float: right;
}
-.metadata p {
+.archivenav .pager .disabled,
+.archivenav .pager .disabled a,
+.archivenav .pager .disabled:link {
+ color: #888;
+ cursor: not-allowed;
+}
+
+.metadata p,
+.translationslist p {
display: inline;
}
@@ -254,10 +285,6 @@ img {
margin-right: 0;
}
-.codetable .linenos {
- padding-right: 10px;
-}
-
.sr-only {
position: absolute;
width: 1px;
@@ -280,7 +307,7 @@ img {
}
pre.code, code {
- white-space: pre;
+ white-space: pre-wrap;
word-wrap: normal;
overflow: auto;
}
diff --git a/nikola/data/themes/base/assets/js/baguetteBox.min.js b/nikola/data/themes/base/assets/js/baguetteBox.min.js
new file mode 120000
index 0000000..dda9b55
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/baguetteBox.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/baguettebox.js/dist/baguetteBox.min.js \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/js/fancydates.js b/nikola/data/themes/base/assets/js/fancydates.js
index d13b11b..dc7906d 100644
--- a/nikola/data/themes/base/assets/js/fancydates.js
+++ b/nikola/data/themes/base/assets/js/fancydates.js
@@ -1,19 +1,21 @@
-function fancydates(fanciness, date_format) {
- if (fanciness == 0) {
+function fancydates(fanciness, luxonDateFormat) {
+ if (fanciness === 0) {
return;
}
- dates = $('time.published.dt-published');
+ var dates = document.querySelectorAll('.dt-published, .dt-updated, .listdate');
- i = 0;
- l = dates.length;
+ var l = dates.length;
- for (i = 0; i < l; i++) {
- d = moment(dates[i].attributes.datetime.value);
- if (fanciness == 1) {
- o = d.local().format(date_format);
+ for (var i = 0; i < l; i++) {
+ var d = luxon.DateTime.fromISO(dates[i].attributes.datetime.value);
+ var o;
+ if (fanciness === 1 && luxonDateFormat.preset) {
+ o = d.toLocal().toLocaleString(luxon.DateTime[luxonDateFormat.format]);
+ } else if (fanciness === 1) {
+ o = d.toLocal().toFormat(luxonDateFormat.format);
} else {
- o = d.fromNow();
+ o = d.toRelative();
}
dates[i].innerHTML = o;
}
diff --git a/nikola/data/themes/base/assets/js/fancydates.min.js b/nikola/data/themes/base/assets/js/fancydates.min.js
new file mode 100644
index 0000000..bb0b07b
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/fancydates.min.js
@@ -0,0 +1 @@
+function fancydates(t,e){if(0!==t)for(var a=document.querySelectorAll(".dt-published, .dt-updated, .listdate"),o=a.length,l=0;l<o;l++){var r,i=luxon.DateTime.fromISO(a[l].attributes.datetime.value);r=1===t&&e.preset?i.toLocal().toLocaleString(luxon.DateTime[e.format]):1===t?i.toLocal().toFormat(e.format):i.toRelative(),a[l].innerHTML=r}}
diff --git a/nikola/data/themes/base/assets/js/gallery.js b/nikola/data/themes/base/assets/js/gallery.js
new file mode 100644
index 0000000..af29f47
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/gallery.js
@@ -0,0 +1,32 @@
+function renderGallery(jsonContent, thumbnailSize) {
+ var container = document.getElementById("gallery_container");
+ container.innerHTML = '';
+ var layoutGeometry = require('justified-layout')(jsonContent, {
+ "containerWidth": container.offsetWidth,
+ "targetRowHeight": thumbnailSize * 0.6,
+ "boxSpacing": 5});
+ container.style.height = layoutGeometry.containerHeight + 'px';
+ var boxes = layoutGeometry.boxes;
+ for (var i = 0; i < boxes.length; i++) {
+ var img = document.createElement("img");
+ img.setAttribute('src', jsonContent[i].url_thumb);
+ img.setAttribute('alt', jsonContent[i].title);
+ img.style.width = boxes[i].width + 'px';
+ img.style.height = boxes[i].height + 'px';
+ link = document.createElement("a");
+ link.setAttribute('href', jsonContent[i].url);
+ link.setAttribute('class', 'image-reference');
+ div = document.createElement("div");
+ div.setAttribute('class', 'image-block');
+ div.setAttribute('title', jsonContent[i].title);
+ div.setAttribute('data-toggle', "tooltip")
+ div.style.width = boxes[i].width + 'px';
+ div.style.height = boxes[i].height + 'px';
+ div.style.top = boxes[i].top + 'px';
+ div.style.left = boxes[i].left + 'px';
+ link.appendChild(img);
+ div.appendChild(link);
+ container.appendChild(div);
+ }
+}
+
diff --git a/nikola/data/themes/base/assets/js/gallery.min.js b/nikola/data/themes/base/assets/js/gallery.min.js
new file mode 100644
index 0000000..c434155
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/gallery.min.js
@@ -0,0 +1 @@
+function renderGallery(t,e){var i=document.getElementById("gallery_container");i.innerHTML="";var l=require("justified-layout")(t,{containerWidth:i.offsetWidth,targetRowHeight:.6*e,boxSpacing:5});i.style.height=l.containerHeight+"px";for(var n=l.boxes,r=0;r<n.length;r++){var a=document.createElement("img");a.setAttribute("src",t[r].url_thumb),a.setAttribute("alt",t[r].title),a.style.width=n[r].width+"px",a.style.height=n[r].height+"px",link=document.createElement("a"),link.setAttribute("href",t[r].url),link.setAttribute("class","image-reference"),div=document.createElement("div"),div.setAttribute("class","image-block"),div.setAttribute("title",t[r].title),div.setAttribute("data-toggle","tooltip"),div.style.width=n[r].width+"px",div.style.height=n[r].height+"px",div.style.top=n[r].top+"px",div.style.left=n[r].left+"px",link.appendChild(a),div.appendChild(link),i.appendChild(div)}}
diff --git a/nikola/data/themes/base/assets/js/html5.js b/nikola/data/themes/base/assets/js/html5.js
index 448cebd..31340f0 100644..120000
--- a/nikola/data/themes/base/assets/js/html5.js
+++ b/nikola/data/themes/base/assets/js/html5.js
@@ -1,8 +1 @@
-/*
- HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
-a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
-c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
-"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
-if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
+../../../../../../npm_assets/node_modules/html5shiv/dist/html5shiv-printshiv.min.js \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/js/html5shiv-printshiv.min.js b/nikola/data/themes/base/assets/js/html5shiv-printshiv.min.js
new file mode 120000
index 0000000..31340f0
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/html5shiv-printshiv.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/html5shiv/dist/html5shiv-printshiv.min.js \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/js/justified-layout.min.js b/nikola/data/themes/base/assets/js/justified-layout.min.js
new file mode 120000
index 0000000..d067ee6
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/justified-layout.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/justified-layout/dist/justified-layout.min.js \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/js/luxon.min.js b/nikola/data/themes/base/assets/js/luxon.min.js
new file mode 120000
index 0000000..a8a639d
--- /dev/null
+++ b/nikola/data/themes/base/assets/js/luxon.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/luxon/build/global/luxon.min.js \ No newline at end of file
diff --git a/nikola/data/themes/base/assets/js/moment-with-locales.min.js b/nikola/data/themes/base/assets/js/moment-with-locales.min.js
deleted file mode 120000
index 1caedc6..0000000
--- a/nikola/data/themes/base/assets/js/moment-with-locales.min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/moment/min/moment-with-locales.min.js \ No newline at end of file
diff --git a/nikola/data/themes/base/base.theme b/nikola/data/themes/base/base.theme
new file mode 100644
index 0000000..3dd0fd1
--- /dev/null
+++ b/nikola/data/themes/base/base.theme
@@ -0,0 +1,9 @@
+[Theme]
+engine = mako
+author = The Nikola Contributors
+author_url = https://getnikola.com/
+license = MIT
+
+[Family]
+family = base
+jinja_version = base-jinja
diff --git a/nikola/data/themes/base/bundles b/nikola/data/themes/base/bundles
index 4760181..186e40e 100644
--- a/nikola/data/themes/base/bundles
+++ b/nikola/data/themes/base/bundles
@@ -1,2 +1,19 @@
-assets/css/all.css=rst.css,code.css,theme.css
-assets/css/all-nocdn.css=rst.css,code.css,theme.css
+; css bundles
+assets/css/all.css=
+ rst_base.css,
+ nikola_rst.css,
+ code.css,
+ theme.css,
+assets/css/all-nocdn.css=
+ rst_base.css,
+ nikola_rst.css,
+ code.css,
+ theme.css,
+ baguetteBox.min.css,
+
+; javascript bundles
+assets/js/all.js=
+ fancydates.js,
+assets/js/all-nocdn.js=
+ baguetteBox.min.js,
+ fancydates.js,
diff --git a/nikola/data/themes/base/engine b/nikola/data/themes/base/engine
deleted file mode 100644
index 2951cdd..0000000
--- a/nikola/data/themes/base/engine
+++ /dev/null
@@ -1 +0,0 @@
-mako
diff --git a/nikola/data/themes/base/messages/messages_af.py b/nikola/data/themes/base/messages/messages_af.py
new file mode 100644
index 0000000..650676b
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_af.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "%d min oor om te lees",
+ "(active)": "(aktief)",
+ "Also available in:": "Ook beskikbaar in:",
+ "Archive": "Argief",
+ "Atom feed": "Atom-voer",
+ "Authors": "Outeurs",
+ "Categories": "Kategorieë",
+ "Comments": "Opmerkings",
+ "LANGUAGE": "Afrikaans",
+ "Languages:": "Tale:",
+ "More posts about %s": "Meer plasings oor %s",
+ "Newer posts": "Jonger plasings",
+ "Next post": "Volgende plasing",
+ "Next": "Volgende",
+ "No posts found.": "Geen plasings gevind nie.",
+ "Nothing found.": "Niks gevind nie.",
+ "Older posts": "Ouer plasings",
+ "Original site": "Oorspronklike werf",
+ "Posted:": "Geplaas:",
+ "Posts about %s": "Plasings oor %s",
+ "Posts by %s": "Plasings deur %s",
+ "Posts for year %s": "Plasings vir %s",
+ "Posts for {month_day_year}": "Plasings vir {month_day_year}",
+ "Posts for {month_year}": "Plasings vir {month_year}",
+ "Previous post": "Vorige plasing",
+ "Previous": "Vorige",
+ "Publication date": "Publikasiedatum",
+ "RSS feed": "RSS-voer",
+ "Read in English": "Lees in Afrikaans",
+ "Read more": "Lees meer",
+ "Skip to main content": "Spring na die hoofinhoud",
+ "Source": "Bron",
+ "Subcategories:": "Subkategorieë:",
+ "Tags and Categories": "Etikette en kategorieë",
+ "Tags": "Etikette",
+ "Toggle navigation": "Wissel navigasie",
+ "Uncategorized": "Ongekategoriseerd",
+ "Up": "Op",
+ "Updates": "Bywerkings",
+ "Write your page here.": "Skryf die bladsy hier.",
+ "Write your post here.": "Skryf die plasing hier.",
+ "old posts, page %d": "ou plasings, bladsy %d",
+ "page %d": "bladsy %d",
+ "updated": "bygewerk",
+}
diff --git a/nikola/data/themes/base/messages/messages_ar.py b/nikola/data/themes/base/messages/messages_ar.py
index 4990ad4..72c137b 100644
--- a/nikola/data/themes/base/messages/messages_ar.py
+++ b/nikola/data/themes/base/messages/messages_ar.py
@@ -1,44 +1,49 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
- "%d min remaining to read": "",
- "(active)": "",
+ "%d min remaining to read": "%d دقائق متبقية للقراءة",
+ "(active)": "(نشط)",
"Also available in:": "أيضا متوفر في:",
"Archive": "الأرشيف",
- "Authors": "",
+ "Atom feed": "روابط Atom",
+ "Authors": "المؤلفون",
"Categories": "فئات",
"Comments": "التّعليقات",
"LANGUAGE": "العربيّة",
- "Languages:": "اللغات",
+ "Languages:": "اللُغَات",
"More posts about %s": "المزيد من المقالات حول %s",
"Newer posts": "مقالات أحدث",
"Next post": "المقالة التالية",
+ "Next": "التالي",
"No posts found.": "لم يوجد مقالات.",
- "Nothing found.": "لم يوجد شيء.",
+ "Nothing found.": "لا يوجد شيء.",
"Older posts": "مقالات أقدم",
"Original site": "الموقع الأصلي",
"Posted:": "نشر:",
"Posts about %s": "مقالات عن %s",
- "Posts by %s": "",
+ "Posts by %s": "مقالات بواسطة %s",
"Posts for year %s": "مقالات سنة %s",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "",
+ "Posts for {month_day_year}": "مقال لـ {شَهْر - يَوْم - سَنَة}",
+ "Posts for {month_year}": "مقالـ {شَهْر - سَنَة }",
"Previous post": "المقالة السابقة",
- "Publication date": "تاريخ النشر",
- "RSS feed": "",
+ "Previous": "السابق",
+ "Publication date": "تاريخ النَشْر",
+ "RSS feed": "روابط التغذية ",
"Read in English": "اقرأ بالعربية",
"Read more": "قراءة المزيد",
"Skip to main content": "انتقل إلى المحتوى الرئيسي",
"Source": "المصدر",
- "Subcategories:": "",
+ "Subcategories:": "فئات فرعية",
"Tags and Categories": "تصنيفات و فئات",
"Tags": "تصنيفات",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
- "Write your page here.": "",
- "Write your post here.": "",
+ "Toggle navigation": "تَفْعيل وَضْع التَنَقُلْ",
+ "Uncategorized": "غير مصنف",
+ "Up": "أعلى",
+ "Updates": "التَحْدِيثَات",
+ "Write your page here.": "اكْتُب صَفْحَتك هُنَا ",
+ "Write your post here.": "اكْتُب مَقَالَك هُنَا",
"old posts, page %d": "مقالات قديمة, صفحة %d",
"page %d": "صفحة %d",
+ "updated": "مُحدَّثة",
}
diff --git a/nikola/data/themes/base/messages/messages_az.py b/nikola/data/themes/base/messages/messages_az.py
index 11e45ba..b7913f2 100644
--- a/nikola/data/themes/base/messages/messages_az.py
+++ b/nikola/data/themes/base/messages/messages_az.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d dəqiqəlik oxuma",
"(active)": "(aktiv)",
"Also available in:": "Həmçinin mövcuddur:",
"Archive": "Arxiv",
+ "Atom feed": "Atom feed",
"Authors": "Müəlliflər",
"Categories": "Kateqoriyalar",
"Comments": "Şərhlər",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "%s ilə bağlı digər yazılar",
"Newer posts": "Yeni yazılar",
"Next post": "Növbəti yazı",
+ "Next": "Növbəti",
"No posts found.": "Heç bir yazı tapılmadı",
"Nothing found.": "Heç nə tapılmadı",
"Older posts": "Köhnə yazılar",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "%s ilə bağlı yazılar",
"Posts by %s": "%s tərəfindən yazılmış yazılar",
"Posts for year %s": "%s ilindəki yazılar",
- "Posts for {month} {day}, {year}": "{month} {day}, {year} üçün yazılar",
- "Posts for {month} {year}": "{month} {year} üçün yazılar",
+ "Posts for {month_day_year}": "{month_day_year} üçün yazılar",
+ "Posts for {month_year}": "{month_year} üçün yazılar",
"Previous post": "Əvvəlki yazı",
+ "Previous": "Öncəki",
"Publication date": "Buraxılış tarixi",
"RSS feed": "RSS",
"Read in English": "Azərbaycan dilində oxu",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Subkateqoriyalar",
"Tags and Categories": "Teqlər və Kateqoriyalar",
"Tags": "Teqlər",
- "Toggle navigation": "",
+ "Toggle navigation": "Naviqasiya keçidi",
"Uncategorized": "Kateqoriyasız",
+ "Up": "Yuxarı",
"Updates": "Yenilənmələr",
"Write your page here.": "Öz səhifəni bura yaz",
"Write your post here.": "Öz məqaləni bura yaz",
"old posts, page %d": "köhnə yazılar, səhifə %s",
"page %d": "səhifə %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_bg.py b/nikola/data/themes/base/messages/messages_bg.py
index 2e4d400..3344e04 100644
--- a/nikola/data/themes/base/messages/messages_bg.py
+++ b/nikola/data/themes/base/messages/messages_bg.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d минути до прочитане",
"(active)": "(активно)",
"Also available in:": "Достъпно също на:",
"Archive": "Архив",
+ "Atom feed": "",
"Authors": "Автори",
"Categories": "Категории",
"Comments": "Коментари",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Още публикации относно %s",
"Newer posts": "Нови публикации",
"Next post": "Следваща публикация",
+ "Next": "",
"No posts found.": "Не са намерени публикации.",
"Nothing found.": "Нищо не е намерено.",
"Older posts": "Стари публикации",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Публикации относно %s",
"Posts by %s": "Публикации от %s",
"Posts for year %s": "Публикации за %s година",
- "Posts for {month} {day}, {year}": "Публикации от {day} {month} {year}",
- "Posts for {month} {year}": "Публикации за {month} {year}",
+ "Posts for {month_day_year}": "Публикации от {month_day_year}",
+ "Posts for {month_year}": "Публикации за {month_year}",
"Previous post": "Предишна публикация",
+ "Previous": "",
"Publication date": "Дата на публикуване",
"RSS feed": "RSS поток",
"Read in English": "Прочетете на български",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Тагове",
"Toggle navigation": "",
"Uncategorized": "Без категория",
+ "Up": "",
"Updates": "Обновления",
"Write your page here.": "Напиши тук текста на твоята страница.",
"Write your post here.": "Напиши тук текста на твоята публикация.",
"old posts, page %d": "стари публикации, страница %d",
"page %d": "страница %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_fil.py b/nikola/data/themes/base/messages/messages_br.py
index 6107c54..316e4ec 100644
--- a/nikola/data/themes/base/messages/messages_fil.py
+++ b/nikola/data/themes/base/messages/messages_br.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "",
"(active)": "",
"Also available in:": "",
"Archive": "",
+ "Atom feed": "",
"Authors": "",
"Categories": "",
"Comments": "",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "",
"Newer posts": "",
"Next post": "",
+ "Next": "",
"No posts found.": "",
"Nothing found.": "",
"Older posts": "",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "",
"Posts by %s": "",
"Posts for year %s": "",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "",
+ "Posts for {month_day_year}": "",
+ "Posts for {month_year}": "",
"Previous post": "",
+ "Previous": "",
"Publication date": "",
"RSS feed": "",
"Read in English": "",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "",
"Write your post here.": "",
"old posts, page %d": "",
"page %d": "",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_bs.py b/nikola/data/themes/base/messages/messages_bs.py
index 9d7ac6f..2d537e6 100644
--- a/nikola/data/themes/base/messages/messages_bs.py
+++ b/nikola/data/themes/base/messages/messages_bs.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minuta preostalo za čitanje",
"(active)": "(aktivno)",
"Also available in:": "Takođe dostupan u:",
"Archive": "Arhiva",
+ "Atom feed": "",
"Authors": "Autori",
"Categories": "Kategorije",
"Comments": "Komentari",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Više članaka o %s",
"Newer posts": "Novije objave",
"Next post": "Naredni članak",
+ "Next": "",
"No posts found.": "Nema članaka.",
"Nothing found.": "Ništa nije pronađeno.",
"Older posts": "Starije objave",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Objave o %s",
"Posts by %s": "Objave prema %s",
"Posts for year %s": "Objave u godini %s",
- "Posts for {month} {day}, {year}": "Objave za {day}.{month}.{year}",
- "Posts for {month} {year}": "Objave za {month} {year}",
+ "Posts for {month_day_year}": "Objave za {month_day_year}",
+ "Posts for {month_year}": "Objave za {month_year}",
"Previous post": "Prethodni članak",
+ "Previous": "",
"Publication date": "Datum objavljivanja",
"RSS feed": "RSS feed",
"Read in English": "Pročitaj na bosanskom",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Oznake",
"Toggle navigation": "",
"Uncategorized": "Bez kategorije",
+ "Up": "",
"Updates": "Ažuriranja",
"Write your page here.": "Vašu stranicu napišite ovdje.",
"Write your post here.": "Vaš članak napišite ovdje.",
"old posts, page %d": "stare objave, strana %d",
"page %d": "strana %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_ca.py b/nikola/data/themes/base/messages/messages_ca.py
index f3aebdf..0143a85 100644
--- a/nikola/data/themes/base/messages/messages_ca.py
+++ b/nikola/data/themes/base/messages/messages_ca.py
@@ -1,44 +1,49 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
- "%d min remaining to read": "% min recordar per a llegir",
- "(active)": "",
- "Also available in:": "També disponibles en:",
+ "%d min remaining to read": "% min restants per a llegir",
+ "(active)": "(actiu)",
+ "Also available in:": "També disponible en:",
"Archive": "Arxiu",
- "Authors": "",
+ "Atom feed": "Canal Atom",
+ "Authors": "Autors",
"Categories": "Categories",
"Comments": "Comentaris",
"LANGUAGE": "Català",
- "Languages:": "Llenguatges:",
+ "Languages:": "Idiomes:",
"More posts about %s": "Més entrades sobre %s",
- "Newer posts": "Entrades posteriors",
+ "Newer posts": "Entrades més recents",
"Next post": "Entrada següent",
+ "Next": "Següent",
"No posts found.": "Publicació no trobada",
"Nothing found.": "No trobat",
- "Older posts": "Entrades anteriors",
+ "Older posts": "Entrades més antigues",
"Original site": "Lloc original",
"Posted:": "Publicat:",
"Posts about %s": "Entrades sobre %s",
- "Posts by %s": "",
+ "Posts by %s": "Entrades per %s",
"Posts for year %s": "Entrades de l'any %s",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "Publicat en {month} {year}",
+ "Posts for {month_day_year}": "Entrades per {month_day_year}",
+ "Posts for {month_year}": "Publicat en {month_year}",
"Previous post": "Entrada anterior",
+ "Previous": "Anterior",
"Publication date": "Data de publicació",
- "RSS feed": "Feed RSS",
+ "RSS feed": "Canal RSS",
"Read in English": "Llegeix-ho en català",
"Read more": "Llegeix-ne més",
"Skip to main content": "Vés al comentari principal",
"Source": "Codi",
- "Subcategories:": "",
- "Tags and Categories": "Etiquetes i Categories",
+ "Subcategories:": "Subcategories:",
+ "Tags and Categories": "Etiquetes i categories",
"Tags": "Etiquetes",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
- "Write your page here.": "",
- "Write your post here.": "",
+ "Toggle navigation": "Commuta la navegació",
+ "Uncategorized": "Sense categoria",
+ "Up": "Amunt",
+ "Updates": "Actualitzacions",
+ "Write your page here.": "Escriviu la vostra pàgina aquí.",
+ "Write your post here.": "Escriviu la vostra entrada aquí.",
"old posts, page %d": "entrades antigues, pàgina %d",
"page %d": "pàgina %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_cs.py b/nikola/data/themes/base/messages/messages_cs.py
index 42fb1c1..dcff7e6 100644
--- a/nikola/data/themes/base/messages/messages_cs.py
+++ b/nikola/data/themes/base/messages/messages_cs.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min zbývajících",
"(active)": "",
"Also available in:": "Dostupné také v",
"Archive": "Archiv",
+ "Atom feed": "",
"Authors": "",
"Categories": "Kategorie",
"Comments": "Komentáře",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Další příspěvky o %s",
"Newer posts": "Novější příspěvky",
"Next post": "Další příspěvek",
+ "Next": "",
"No posts found.": "Nebyly nalezeny žádné příspěvky.",
"Nothing found.": "Nic nebylo nalezeno.",
"Older posts": "Starší příspěvky",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Příspěvky o %s",
"Posts by %s": "",
"Posts for year %s": "Příspěvky v roce %s",
- "Posts for {month} {day}, {year}": "Příspěvky v {month} {day}, {year}",
- "Posts for {month} {year}": "Příspěvky v {month} {year}",
+ "Posts for {month_day_year}": "Příspěvky v {month_day_year}",
+ "Posts for {month_year}": "Příspěvky v {month_year}",
"Previous post": "Předchozí příspěvek",
+ "Previous": "",
"Publication date": "Datum zveřejnění",
"RSS feed": "RSS zdroj",
"Read in English": "Číst v češtině",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Štítky",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "",
"Write your post here.": "",
"old posts, page %d": "staré příspěvky, strana %d",
"page %d": "strana %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_da.py b/nikola/data/themes/base/messages/messages_da.py
index 08b3d15..b070db5 100644
--- a/nikola/data/themes/base/messages/messages_da.py
+++ b/nikola/data/themes/base/messages/messages_da.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min. tilbage at læse",
"(active)": "",
"Also available in:": "Fås også i:",
"Archive": "Arkiv",
+ "Atom feed": "",
"Authors": "",
"Categories": "Kategorier",
"Comments": "Kommentarer",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Yderligere indlæg om %s",
"Newer posts": "Nyere indlæg",
"Next post": "Næste indlæg",
+ "Next": "",
"No posts found.": "Søgningen gav ingen resultater.",
"Nothing found.": "Søgningen gav ingen resultater.",
"Older posts": "Ældre indlæg",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Indlæg om %s",
"Posts by %s": "",
"Posts for year %s": "Indlæg for %s",
- "Posts for {month} {day}, {year}": "Indlæs for {month} {day}, {year}",
- "Posts for {month} {year}": "Indlæg for {month} {year}",
+ "Posts for {month_day_year}": "Indlæs for {month_day_year}",
+ "Posts for {month_year}": "Indlæg for {month_year}",
"Previous post": "Tidligere indlæg",
+ "Previous": "",
"Publication date": "Udgivelsesdato",
"RSS feed": "RSS-nyhedskilde",
"Read in English": "Læs på dansk",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Nøgleord",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "",
"Write your post here.": "",
"old posts, page %d": "gamle indlæg, side %d",
"page %d": "side %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_de.py b/nikola/data/themes/base/messages/messages_de.py
index 7981c69..1ba4dd4 100644
--- a/nikola/data/themes/base/messages/messages_de.py
+++ b/nikola/data/themes/base/messages/messages_de.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min verbleiben zum Lesen",
"(active)": "(aktiv)",
"Also available in:": "Auch verfügbar in:",
"Archive": "Archiv",
+ "Atom feed": "Atom-Feed",
"Authors": "Autoren",
"Categories": "Kategorien",
"Comments": "Kommentare",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Weitere Einträge über %s",
"Newer posts": "Neuere Einträge",
"Next post": "Nächster Eintrag",
+ "Next": "Nächster Eintrag",
"No posts found.": "Keine Einträge gefunden.",
"Nothing found.": "Nichts gefunden.",
"Older posts": "Ältere Einträge",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Einträge über %s",
"Posts by %s": "Einträge von %s",
"Posts for year %s": "Einträge aus dem Jahr %s",
- "Posts for {month} {day}, {year}": "Einträge vom {day}. {month} {year}",
- "Posts for {month} {year}": "Einträge aus {month} {year}",
+ "Posts for {month_day_year}": "Einträge vom {month_day_year}",
+ "Posts for {month_year}": "Einträge aus {month_year}",
"Previous post": "Vorheriger Eintrag",
+ "Previous": "Vorheriger Eintrag",
"Publication date": "Veröffentlichungsdatum",
"RSS feed": "RSS-Feed",
"Read in English": "Auf Deutsch lesen",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Unterkategorien:",
"Tags and Categories": "Tags und Kategorien",
"Tags": "Tags",
- "Toggle navigation": "",
+ "Toggle navigation": "Navigation umschalten",
"Uncategorized": "Nicht kategorisiert",
+ "Up": "Nach oben",
"Updates": "Updates",
"Write your page here.": "Schreibe hier deinen Seiteninhalt hin.",
"Write your post here.": "Schreibe hier deinen Eintrag hin.",
"old posts, page %d": "Ältere Einträge, Seite %d",
"page %d": "Seite %d",
+ "updated": "aktualisiert",
}
diff --git a/nikola/data/themes/base/messages/messages_el.py b/nikola/data/themes/base/messages/messages_el.py
index 7e32afa..7021d84 100644
--- a/nikola/data/themes/base/messages/messages_el.py
+++ b/nikola/data/themes/base/messages/messages_el.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "",
"(active)": "",
"Also available in:": "Διαθέσιμο και στα:",
"Archive": "Αρχείο",
+ "Atom feed": "",
"Authors": "",
"Categories": "Κατηγορίες",
"Comments": "Σχόλια",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Περισσότερες αναρτήσεις για %s",
"Newer posts": "Νεότερες αναρτήσεις",
"Next post": "Επόμενη ανάρτηση",
+ "Next": "",
"No posts found.": "Δε βρέθηκαν αναρτήσεις",
"Nothing found.": "Δε βρέθηκε περιεχόμενο",
"Older posts": "Παλαιότερες αναρτήσεις",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Αναρτήσεις για %s",
"Posts by %s": "",
"Posts for year %s": "Αναρτήσεις για το έτος %s",
- "Posts for {month} {day}, {year}": "Αναρτήσεις στις {day} {month}, {year}",
- "Posts for {month} {year}": "Αναρτήσεις για τον {month} του {year}",
+ "Posts for {month_day_year}": "Αναρτήσεις στις {month_day_year}",
+ "Posts for {month_year}": "Αναρτήσεις για τον {month_year}",
"Previous post": "Προηγούμενη ανάρτηση",
+ "Previous": "",
"Publication date": "Ημερομηνία δημοσίευσης",
"RSS feed": "",
"Read in English": "Διαβάστε στα Ελληνικά",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Ετικέτες",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "",
"Write your post here.": "",
"old posts, page %d": "σελίδα παλαιότερων αναρτήσεων %d",
"page %d": "σελίδα %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_en.py b/nikola/data/themes/base/messages/messages_en.py
index 3c39f55..a6beb5e 100644
--- a/nikola/data/themes/base/messages/messages_en.py
+++ b/nikola/data/themes/base/messages/messages_en.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min remaining to read",
"(active)": "(active)",
"Also available in:": "Also available in:",
"Archive": "Archive",
+ "Atom feed": "Atom feed",
"Authors": "Authors",
"Categories": "Categories",
"Comments": "Comments",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "More posts about %s",
"Newer posts": "Newer posts",
"Next post": "Next post",
+ "Next": "Next",
"No posts found.": "No posts found.",
"Nothing found.": "Nothing found.",
"Older posts": "Older posts",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Posts about %s",
"Posts by %s": "Posts by %s",
"Posts for year %s": "Posts for year %s",
- "Posts for {month} {day}, {year}": "Posts for {month} {day}, {year}",
- "Posts for {month} {year}": "Posts for {month} {year}",
+ "Posts for {month_day_year}": "Posts for {month_day_year}",
+ "Posts for {month_year}": "Posts for {month_year}",
"Previous post": "Previous post",
+ "Previous": "Previous",
"Publication date": "Publication date",
"RSS feed": "RSS feed",
"Read in English": "Read in English",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Tags",
"Toggle navigation": "Toggle navigation",
"Uncategorized": "Uncategorized",
+ "Up": "Up",
"Updates": "Updates",
"Write your page here.": "Write your page here.",
"Write your post here.": "Write your post here.",
"old posts, page %d": "old posts, page %d",
"page %d": "page %d",
+ "updated": "updated",
}
diff --git a/nikola/data/themes/base/messages/messages_eo.py b/nikola/data/themes/base/messages/messages_eo.py
index 9d1ae72..2793ff5 100644
--- a/nikola/data/themes/base/messages/messages_eo.py
+++ b/nikola/data/themes/base/messages/messages_eo.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minutoj por legi",
"(active)": "(aktiva)",
"Also available in:": "Ankaŭ disponebla en:",
"Archive": "Arkivo",
+ "Atom feed": "Atom fluo",
"Authors": "Aŭtoroj",
"Categories": "Kategorioj",
"Comments": "Komentoj",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Pli da artikoloj pri %s",
"Newer posts": "Pli novaj artikoloj",
"Next post": "Venonta artikolo",
+ "Next": "Venonta",
"No posts found.": "Neniu artikoloj trovitaj.",
"Nothing found.": "Nenio trovita.",
"Older posts": "Pli malnovaj artikoloj",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Artikoloj pri %s",
"Posts by %s": "Artikoloj de %s",
"Posts for year %s": "Artikoloj de la jaro %s",
- "Posts for {month} {day}, {year}": "Artikoloj de la {day}a de {month} {year}",
- "Posts for {month} {year}": "Artikoloj de {month} {year}",
+ "Posts for {month_day_year}": "Artikoloj de la {month_day_year}",
+ "Posts for {month_year}": "Artikoloj de {month_year}",
"Previous post": "Antaŭa artikolo",
+ "Previous": "Antaŭa",
"Publication date": "Eldona dato",
"RSS feed": "RSS fluo",
"Read in English": "Legu ĝin en Esperanto",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Etikedoj",
"Toggle navigation": "Ŝalti menuon",
"Uncategorized": "Sen kategorioj",
+ "Up": "Supren",
"Updates": "Ĝisdatigoj",
"Write your page here.": "Skribu tie vian paĝon.",
"Write your post here.": "Skribu tie vian artikolon.",
"old posts, page %d": "%da paĝo de malnovaj artikoloj",
"page %d": "paĝo %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_es.py b/nikola/data/themes/base/messages/messages_es.py
index c590a64..bb58c82 100644
--- a/nikola/data/themes/base/messages/messages_es.py
+++ b/nikola/data/themes/base/messages/messages_es.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "quedan %d minutos de lectura",
"(active)": "(activo)",
"Also available in:": "También disponible en:",
"Archive": "Archivo",
+ "Atom feed": "Canal Atom",
"Authors": "Autores",
"Categories": "Categorías",
"Comments": "Comentarios",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Más publicaciones sobre %s",
"Newer posts": "Publicaciones posteriores",
"Next post": "Siguiente publicación",
+ "Next": "Siguiente",
"No posts found.": "No se encontraron publicaciones.",
"Nothing found.": "No se encontró nada.",
"Older posts": "Publicaciones anteriores",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Publicaciones sobre %s",
"Posts by %s": "Publicaciones de %s",
"Posts for year %s": "Publicaciones del año %s",
- "Posts for {month} {day}, {year}": "Publicaciones del {day} de {month} de {year}",
- "Posts for {month} {year}": "Posts de {month} de {year}",
+ "Posts for {month_day_year}": "Publicaciones del {month_day_year}",
+ "Posts for {month_year}": "Posts de {month_year}",
"Previous post": "Publicación anterior",
+ "Previous": "Anterior",
"Publication date": "Fecha de publicación",
"RSS feed": "Canal RSS",
"Read in English": "Leer en español",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Etiquetas",
"Toggle navigation": "Mostrar navegación",
"Uncategorized": "Sin categoría",
+ "Up": "Arriba",
"Updates": "Actualizaciones",
"Write your page here.": "Escriba su página aquí.",
"Write your post here.": "Escriba su publicación aquí.",
"old posts, page %d": "publicaciones antiguas, página %d",
"page %d": "página %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_et.py b/nikola/data/themes/base/messages/messages_et.py
index 9b3ba9c..e2a6e30 100644
--- a/nikola/data/themes/base/messages/messages_et.py
+++ b/nikola/data/themes/base/messages/messages_et.py
@@ -1,44 +1,49 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
- "%d min remaining to read": "",
- "(active)": "",
+ "%d min remaining to read": "%d minutit veel lugeda",
+ "(active)": "(aktiivne)",
"Also available in:": "Saadaval ka:",
"Archive": "Arhiiv",
- "Authors": "",
+ "Atom feed": "Atom uudisvoog",
+ "Authors": "Autorid",
"Categories": "Kategooriad",
- "Comments": "",
+ "Comments": "Kommentaarid",
"LANGUAGE": "Eesti",
- "Languages:": "",
+ "Languages:": "Keeled:",
"More posts about %s": "Veel postitusi %s kohta",
"Newer posts": "Uued postitused",
"Next post": "Järgmine postitus",
- "No posts found.": "",
- "Nothing found.": "",
+ "Next": "Järgmine",
+ "No posts found.": "Postitusi ei leitud.",
+ "Nothing found.": "Midagi ei leitud.",
"Older posts": "Vanemad postitused",
"Original site": "Algallikas",
"Posted:": "Postitatud:",
"Posts about %s": "Postitused %s kohta",
- "Posts by %s": "",
+ "Posts by %s": "Postitus kasutajalt %s",
"Posts for year %s": "Postitused aastast %s",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "Postitused {year} aasta kuust {month} ",
+ "Posts for {month_day_year}": "Postitused {month_day_year}",
+ "Posts for {month_year}": "Postitused {month_year}",
"Previous post": "Eelmine postitus",
- "Publication date": "",
- "RSS feed": "",
+ "Previous": "Eelmine",
+ "Publication date": "Avaldamise kuupäev",
+ "RSS feed": "RSS uudisvoog",
"Read in English": "Loe eesti keeles",
"Read more": "Loe veel",
- "Skip to main content": "",
+ "Skip to main content": "Otse peamise sisu juurde",
"Source": "Lähtekood",
- "Subcategories:": "",
+ "Subcategories:": "Alamkategooriad:",
"Tags and Categories": "Sildid ja kategooriad",
"Tags": "Märksõnad",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
- "Write your page here.": "",
- "Write your post here.": "",
+ "Toggle navigation": "Näita või peida menüüd",
+ "Uncategorized": "Kategooriata",
+ "Up": "Üles",
+ "Updates": "Uuendused",
+ "Write your page here.": "Kirjuta oma lehekülje sisu siia.",
+ "Write your post here.": "Kirjuta oma postitus siia.",
"old posts, page %d": "vanade postituste, leht %d",
"page %d": "leht %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_eu.py b/nikola/data/themes/base/messages/messages_eu.py
index 68d7162..dd39991 100644
--- a/nikola/data/themes/base/messages/messages_eu.py
+++ b/nikola/data/themes/base/messages/messages_eu.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minutu gelditzen dira irakurtzeko",
"(active)": "(aktibo)",
"Also available in:": "Eskuragarria hizkuntza hauetan ere:",
"Archive": "Artxiboa",
+ "Atom feed": "",
"Authors": "Egileak",
"Categories": "Kategoriak",
"Comments": "Iruzkinak",
@@ -14,17 +15,19 @@ MESSAGES = {
"More posts about %s": "%s-ri buruzko argitalpen gehiago",
"Newer posts": "Argitalpen berriagoak",
"Next post": "Hurrengo argitalpena",
+ "Next": "",
"No posts found.": "Ez da argitalpenik aurkitu",
"Nothing found.": "Ez da ezer aurkitu",
- "Older posts": "Post zaharragoak",
- "Original site": "Jatorrizko orria",
+ "Older posts": "Argitalpen zaharragoak",
+ "Original site": "Jatorrizko gunea",
"Posted:": "Argitaratuta:",
"Posts about %s": "%s-ri buruzko argitalpenak",
"Posts by %s": "%s-ek idatzitako argitalpenak",
"Posts for year %s": "%s. urteko argitalpenak",
- "Posts for {month} {day}, {year}": "{year}ko {month}aren {day}ko argitalpenak",
- "Posts for {month} {year}": "{year}ko {month}ren argitalpenak",
+ "Posts for {month_day_year}": "{month_day_year} argitalpenak",
+ "Posts for {month_year}": "{month_year} argitalpenak",
"Previous post": "Aurreko argitalpena",
+ "Previous": "",
"Publication date": "Argitaratze-data",
"RSS feed": "RSS jarioa",
"Read in English": "Euskaraz irakurri",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Etiketak",
"Toggle navigation": "",
"Uncategorized": "Kategorizatu-gabeak",
+ "Up": "",
"Updates": "Eguneraketak",
"Write your page here.": "Idatzi zure orria hemen",
"Write your post here.": "Idatzi zure argitalpena hemen",
- "old posts, page %d": "Argitalpen zaharragoak,%d. orria",
+ "old posts, page %d": "Argitalpen zaharragoak, %d. orria",
"page %d": "%d. orria",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_fa.py b/nikola/data/themes/base/messages/messages_fa.py
index b2abad6..ade3276 100644
--- a/nikola/data/themes/base/messages/messages_fa.py
+++ b/nikola/data/themes/base/messages/messages_fa.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d دقیقه برای خواندن باقی مانده",
"(active)": "(فعال)",
"Also available in:": "همچنین قابل دسترس از:",
"Archive": "آرشیو",
+ "Atom feed": "",
"Authors": "نویسنده‌ها",
"Categories": "دسته‌ها",
"Comments": "دیدگاه‌‌‌ها",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "ارسال‌های بیشتر دربارهٔ%s",
"Newer posts": "ارسال‌های جدید‌تر",
"Next post": "ارسال بعدی",
+ "Next": "بعدی",
"No posts found.": "هیچ پستی پیدا نشد.",
"Nothing found.": "هیچ‌چیزی پیدا نشد.",
"Older posts": "پست‌های قدیمی‌تر",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "ارسال‌ها دربارهٔ %s",
"Posts by %s": "ارسال‌های %s",
"Posts for year %s": "ارسال‌ها برای سال %s",
- "Posts for {month} {day}, {year}": "ارسال برای {month} {day}. {year}",
- "Posts for {month} {year}": "ارسال برای {month} {year}",
+ "Posts for {month_day_year}": "ارسال برای {month_day_year}",
+ "Posts for {month_year}": "ارسال برای {month_year}",
"Previous post": "ارسال پیشین",
+ "Previous": "قبلی",
"Publication date": "تاریخ انتشار",
"RSS feed": "خوراک",
"Read in English": "به فارسی بخوانید",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "برچسب‌ها",
"Toggle navigation": "",
"Uncategorized": "دسته‌بندی نشده",
+ "Up": "",
"Updates": "بروزرسانی‌ها",
"Write your page here.": "من صفحه را این‌جا بنویسید. ",
"Write your post here.": "متن پست‌تان را این‌جا بنویسید.",
"old posts, page %d": "صفحهٔ ارسال‌های قدیمی %d",
"page %d": "برگه %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_fi.py b/nikola/data/themes/base/messages/messages_fi.py
index 9a70ede..e29db48 100644
--- a/nikola/data/themes/base/messages/messages_fi.py
+++ b/nikola/data/themes/base/messages/messages_fi.py
@@ -1,30 +1,33 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minuuttia lukuaikaa",
"(active)": "(aktiivinen)",
"Also available in:": "Saatavilla myös:",
"Archive": "Arkisto",
+ "Atom feed": "Atom-syöte",
"Authors": "Kirjoittajat",
"Categories": "Kategoriat",
"Comments": "Kommentit",
"LANGUAGE": "Suomi",
"Languages:": "Kielet:",
- "More posts about %s": "Lisää postauksia aiheesta %s",
- "Newer posts": "Uudempia postauksia",
- "Next post": "Seuraava postaus",
- "No posts found.": "Postauksia ei löytynyt.",
+ "More posts about %s": "Lisää kirjoituksia aiheesta %s",
+ "Newer posts": "Uudempia kirjoituksia",
+ "Next post": "Seuraava kirjoitus",
+ "Next": "Seuraava",
+ "No posts found.": "Kirjoituksia ei löytynyt.",
"Nothing found.": "Ei hakutuloksia.",
- "Older posts": "Vanhempia postauksia",
+ "Older posts": "Vanhempia kirjoituksia",
"Original site": "Alkuperäinen sivusto",
- "Posted:": "Postattu:",
- "Posts about %s": "Postauksia aiheesta %s",
- "Posts by %s": "Postaukset kirjoittajalta %s",
- "Posts for year %s": "Postauksia vuodelta %s",
- "Posts for {month} {day}, {year}": "Kirjoituksia ajalta {day}. {month}ta {year}",
- "Posts for {month} {year}": "Postauksia ajalle {month} {year}",
- "Previous post": "Edellinen postaus",
+ "Posted:": "Kirjoitettu:",
+ "Posts about %s": "Kirjoituksia aiheesta %s",
+ "Posts by %s": "Artikkelit kirjoittajalta %s",
+ "Posts for year %s": "Kirjoituksia vuodelta %s",
+ "Posts for {month_day_year}": "Kirjoituksia ajalta {month_day_year}",
+ "Posts for {month_year}": "Kirjoituksia ajalta {month_year}",
+ "Previous post": "Edellinen kirjoitus",
+ "Previous": "Edellinen",
"Publication date": "Julkaisupäivämäärä",
"RSS feed": "RSS-syöte",
"Read in English": "Lue suomeksi",
@@ -32,13 +35,15 @@ MESSAGES = {
"Skip to main content": "Hyppää sisältöön",
"Source": "Lähde",
"Subcategories:": "Alakategoriat:",
- "Tags and Categories": "Tagit ja kategoriat",
- "Tags": "Tagit",
- "Toggle navigation": "",
+ "Tags and Categories": "Avainsanat ja kategoriat",
+ "Tags": "Avainsanat",
+ "Toggle navigation": "Vaihda navigointia",
"Uncategorized": "Luokittelematon",
+ "Up": "Ylös",
"Updates": "Päivitykset",
"Write your page here.": "Kirjoita sisältö tähän.",
"Write your post here.": "Kirjoita sisältö tähän.",
- "old posts, page %d": "vanhoja postauksia, sivu %d",
+ "old posts, page %d": "vanhoja kirjoituksia, sivu %d",
"page %d": "sivu %d",
+ "updated": "päivitetty",
}
diff --git a/nikola/data/themes/base/messages/messages_fr.py b/nikola/data/themes/base/messages/messages_fr.py
index 6be1422..971d607 100644
--- a/nikola/data/themes/base/messages/messages_fr.py
+++ b/nikola/data/themes/base/messages/messages_fr.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "Il reste encore %d min. de lecture",
"(active)": "(actif)",
"Also available in:": "Également disponible en :",
"Archive": "Archives",
+ "Atom feed": "Flux Atom",
"Authors": "Auteurs",
"Categories": "Catégories",
"Comments": "Commentaires",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Plus d'articles sur %s",
"Newer posts": "Articles récents",
"Next post": "Article suivant",
+ "Next": "Article suivant",
"No posts found.": "Pas d'articles.",
"Nothing found.": "Pas de résultats.",
"Older posts": "Anciens articles",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Articles sur %s",
"Posts by %s": "Publiés par %s",
"Posts for year %s": "Articles de l'année %s",
- "Posts for {month} {day}, {year}": "Articles du {day} {month} {year}",
- "Posts for {month} {year}": "Articles de {month} {year}",
+ "Posts for {month_day_year}": "Articles du {month_day_year}",
+ "Posts for {month_year}": "Articles de {month_year}",
"Previous post": "Article précédent",
+ "Previous": "Article précédent",
"Publication date": "Date de publication",
"RSS feed": "Flux RSS",
"Read in English": "Lire en français",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Sous-catégories",
"Tags and Categories": "Étiquettes et catégories",
"Tags": "Étiquettes",
- "Toggle navigation": "",
+ "Toggle navigation": "Basculer en navigation",
"Uncategorized": "Sans catégorie",
+ "Up": "Retour en haut",
"Updates": "Mises à jour",
"Write your page here.": "Écrivez votre page ici.",
"Write your post here.": "Écrivez votre billet ici.",
"old posts, page %d": "anciens articles, page %d",
"page %d": "page %d",
+ "updated": "mis à jour",
}
diff --git a/nikola/data/themes/base/messages/messages_fur.py b/nikola/data/themes/base/messages/messages_fur.py
new file mode 100644
index 0000000..6f75b66
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_fur.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "a restin altris %d minûts di leture",
+ "(active)": "(atîf)",
+ "Also available in:": "Disponibil ancje in:",
+ "Archive": "Archivi",
+ "Atom feed": "Feed Atom",
+ "Authors": "Autôrs",
+ "Categories": "Categoriis",
+ "Comments": "Coments",
+ "LANGUAGE": "Furlan",
+ "Languages:": "Lenghis:",
+ "More posts about %s": "Altris articui su %s",
+ "Newer posts": "Articui plui resints",
+ "Next post": "Prossim articul",
+ "Next": "Prossim",
+ "No posts found.": "Nissun articul cjatât.",
+ "Nothing found.": "Nol è stât cjatât nuie.",
+ "Older posts": "Articui precedents",
+ "Original site": "Sît originâl",
+ "Posted:": "Publicât:",
+ "Posts about %s": "Articui su %s",
+ "Posts by %s": "Articui di %s",
+ "Posts for year %s": "Articui par an %s",
+ "Posts for {month_day_year}": "Articui par {month_day_year}",
+ "Posts for {month_year}": "Articui par {month_year}",
+ "Previous post": "Articul precedent",
+ "Previous": "Precedent",
+ "Publication date": "Date di publicazion",
+ "RSS feed": "Feed RSS",
+ "Read in English": "Lei par furlan",
+ "Read more": "Continue la leture",
+ "Skip to main content": "Va al test principâl",
+ "Source": "Document origjinâl",
+ "Subcategories:": "Subcategoriis:",
+ "Tags and Categories": "Tags e categoriis",
+ "Tags": "Tags",
+ "Toggle navigation": "Ativâ la navigazion",
+ "Uncategorized": "Cence categorie",
+ "Up": "Su",
+ "Updates": "Inzornaments",
+ "Write your page here.": "Scrîf ca la tô pagjine.",
+ "Write your post here.": "Scrîf ca il to articul.",
+ "old posts, page %d": "articui vecjos, pagjine %d",
+ "page %d": "pagjine %d",
+ "updated": "inzornât",
+}
diff --git a/nikola/data/themes/base/messages/messages_gl.py b/nikola/data/themes/base/messages/messages_gl.py
index 11ac1cf..c41d61f 100644
--- a/nikola/data/themes/base/messages/messages_gl.py
+++ b/nikola/data/themes/base/messages/messages_gl.py
@@ -1,19 +1,21 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min restantes para ler",
"(active)": "(activo)",
"Also available in:": "Tamén dispoñible en:",
"Archive": "Arquivo",
+ "Atom feed": "",
"Authors": "Autores",
"Categories": "Categorías",
"Comments": "Comentarios",
- "LANGUAGE": "Inglés",
+ "LANGUAGE": "Galego",
"Languages:": "Linguas:",
"More posts about %s": "Máis artigos sobre %s",
"Newer posts": "Últimos artigos",
"Next post": "Seguinte artigo",
+ "Next": "",
"No posts found.": "Non se atoparon artigos.",
"Nothing found.": "Non se atopou nada.",
"Older posts": "Artigos vellos",
@@ -22,12 +24,13 @@ MESSAGES = {
"Posts about %s": "Artigos sobre %s",
"Posts by %s": "Publicacións de %s",
"Posts for year %s": "Artigos do ano %s",
- "Posts for {month} {day}, {year}": "Artigos de {month} {day}, {year}",
- "Posts for {month} {year}": "Artigos de {month} {year}",
+ "Posts for {month_day_year}": "Artigos de {month_day_year}",
+ "Posts for {month_year}": "Artigos de {month_year}",
"Previous post": "Artigo anterior",
+ "Previous": "",
"Publication date": "Data de publicación",
"RSS feed": "Sindicación RSS",
- "Read in English": "Ler en Inglés",
+ "Read in English": "Ler en Galego",
"Read more": "Ler máis",
"Skip to main content": "Saltar ó contido principal",
"Source": "Fonte",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Etiquetas",
"Toggle navigation": "",
"Uncategorized": "Sen categoría",
+ "Up": "",
"Updates": "Actualizacións",
"Write your page here.": "Escribe a túa páxina aquí.",
"Write your post here.": "Escribe o teu artigo aquí.",
"old posts, page %d": "Artigos vellos, páxina %d",
"page %d": "páxina %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_he.py b/nikola/data/themes/base/messages/messages_he.py
index 106e35e..2de9796 100644
--- a/nikola/data/themes/base/messages/messages_he.py
+++ b/nikola/data/themes/base/messages/messages_he.py
@@ -1,30 +1,33 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
- "%d min remaining to read": "d% דקות נותרים לסיום קריאה",
+ "%d min remaining to read": "%d דקות נותרים לסיום קריאה",
"(active)": "(פעיל)",
"Also available in:": "זמין גם ב:",
"Archive": "ארכיב",
+ "Atom feed": "",
"Authors": "מחברים",
"Categories": "קטגוריות",
"Comments": "הערות",
"LANGUAGE": "אנגלית",
"Languages:": "שפות:",
- "More posts about %s": "עוד פוסטים אודות s%",
+ "More posts about %s": "עוד פוסטים אודות %s",
"Newer posts": "פוסטים חדשים",
"Next post": "לפוסט הבא",
+ "Next": "",
"No posts found.": "לא נמצאו פוסטים",
"Nothing found.": "לא נמצא",
"Older posts": "פוסטים ישנים",
"Original site": "אתר המקורי",
"Posted:": "פורסם:",
- "Posts about %s": "פוסטים אודות s%",
- "Posts by %s": "פוסטים ע״י s%",
- "Posts for year %s": "פוסטים לשנת s%",
- "Posts for {month} {day}, {year}": "פוסטים עבוד {year},{day}{month}",
- "Posts for {month} {year}": "פוסטים עבוד {year}{month}",
+ "Posts about %s": "פוסטים אודות %s",
+ "Posts by %s": "פוסטים ע״י %s",
+ "Posts for year %s": "פוסטים לשנת %s",
+ "Posts for {month_day_year}": "פוסטים עבוד {month_day_year}",
+ "Posts for {month_year}": "פוסטים עבוד {month_year}",
"Previous post": "פוסט הקודם",
+ "Previous": "",
"Publication date": "תאריך פרסום",
"RSS feed": "פיד RSS",
"Read in English": "קרא באנגלית",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "תגים",
"Toggle navigation": "החלף מצב ניווט",
"Uncategorized": "לא משויך לקטגוריה",
+ "Up": "",
"Updates": "עדכונים",
"Write your page here.": "תכתוב את העמוד שלך פה.",
"Write your post here.": "תכתוב את הפוסט שלך פה.",
- "old posts, page %d": "פוסטים קודמים, דף d%",
- "page %d": "עמוד d%",
+ "old posts, page %d": "פוסטים קודמים, דף %d",
+ "page %d": "עמוד %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_hi.py b/nikola/data/themes/base/messages/messages_hi.py
index 551a9df..25c3d2e 100644
--- a/nikola/data/themes/base/messages/messages_hi.py
+++ b/nikola/data/themes/base/messages/messages_hi.py
@@ -1,44 +1,49 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
- "%d min remaining to read": "पढ़ने में %d मिनट बाकी",
+ "%d min remaining to read": "पढ़ने के लिए %d मिनट शेष",
"(active)": "(सक्रिय)",
"Also available in:": "उपलब्ध भाषाएँ:",
- "Archive": "आर्काइव",
+ "Archive": "संग्रह",
+ "Atom feed": "एटम फीड",
"Authors": "लेखक",
"Categories": "श्रेणियाँ",
"Comments": "टिप्पणियाँ",
"LANGUAGE": "हिन्दी",
"Languages:": "भाषाएँ:",
- "More posts about %s": "%s के बारे में अौर पोस्टें",
- "Newer posts": "नई पोस्टें",
- "Next post": "अगली पोस्ट",
- "No posts found.": "कोई पोस्ट नहीं मिल सकी",
- "Nothing found.": "कुछ नहीं मिल सका",
- "Older posts": "पुरानी पोस्टें",
- "Original site": "असली साइट",
+ "More posts about %s": "%s के बारे में और पोस्ट",
+ "Newer posts": "नई पोस्ट",
+ "Next post": "अगला पोस्ट",
+ "Next": "अगला",
+ "No posts found.": "कोई पोस्ट नहीं मिला",
+ "Nothing found.": "कुछ नहीं मिला",
+ "Older posts": "पुरानी पोस्ट",
+ "Original site": "मूल साइट",
"Posted:": "पोस्टेड:",
- "Posts about %s": "%s के बारे में पोस्टें",
- "Posts by %s": "%s की पोस्टें",
- "Posts for year %s": "साल %s की पोस्टें",
- "Posts for {month} {day}, {year}": "{day} {month} {year} की पोस्टें",
- "Posts for {month} {year}": "{month} {year} की पोस्टें",
+ "Posts about %s": "%s के बारे में पोस्ट",
+ "Posts by %s": "%s द्वारा पोस्ट",
+ "Posts for year %s": "वर्ष %s के पोस्ट",
+ "Posts for {month_day_year}": "{month_day_year} के पोस्ट",
+ "Posts for {month_year}": "{month_year} के पोस्ट",
"Previous post": "पिछली पोस्ट",
- "Publication date": "प्रकाशन की तारीख",
+ "Previous": "पिछला",
+ "Publication date": "प्रकाशन तिथि",
"RSS feed": "आर एस एस फ़ीड",
"Read in English": "हिन्दी में पढ़िए",
"Read more": "और पढ़िए",
- "Skip to main content": "मुख्य सामग्री पर जाएँ",
- "Source": "सोर्स",
+ "Skip to main content": "मुख्य विषयवस्तु में जाएं",
+ "Source": "स्रोत",
"Subcategories:": "उपश्रेणी",
"Tags and Categories": "टैग्स और श्रेणियाँ",
"Tags": "टैग्स",
- "Toggle navigation": "",
- "Uncategorized": "बिना श्रेणी",
+ "Toggle navigation": "टॉगल नेविगेशन",
+ "Uncategorized": "अवर्गीकृत",
+ "Up": "ऊपर",
"Updates": "अपडेट्स",
- "Write your page here.": "अपना पेज यहाँ लिखिए",
- "Write your post here.": "अपनी पोस्ट यहाँ लिखिए",
- "old posts, page %d": "पुरानी पोस्टें, पृष्‍ठ %d",
+ "Write your page here.": "अपना पेज यहाँ लिखें",
+ "Write your post here.": "अपनी पोस्ट यहाँ लिखें",
+ "old posts, page %d": "पुराने पोस्ट, पृष्‍ठ %d",
"page %d": "पृष्‍ठ %d",
+ "updated": "संशोधित",
}
diff --git a/nikola/data/themes/base/messages/messages_hr.py b/nikola/data/themes/base/messages/messages_hr.py
index 933bafc..7c72f3b 100644
--- a/nikola/data/themes/base/messages/messages_hr.py
+++ b/nikola/data/themes/base/messages/messages_hr.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minuta preostalo za čitanje",
"(active)": "(aktivno)",
"Also available in:": "Također dostupno i u:",
"Archive": "Arhiva",
+ "Atom feed": "",
"Authors": "Autori",
"Categories": "Kategorije",
"Comments": "Komentari",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Više postova o %s",
"Newer posts": "Noviji postovi",
"Next post": "Sljedeći post",
+ "Next": "",
"No posts found.": "Nema postova.",
"Nothing found.": "Nema ničeg.",
"Older posts": "Stariji postovi",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Postovi o %s",
"Posts by %s": "Objave od %s",
"Posts for year %s": "Postovi za godinu %s",
- "Posts for {month} {day}, {year}": "Objave za {month} {day}, {year}",
- "Posts for {month} {year}": "Postovi za {month} {year}",
+ "Posts for {month_day_year}": "Postovi za {month_day_year}",
+ "Posts for {month_year}": "Postovi za {month_year}",
"Previous post": "Prethodni post",
+ "Previous": "",
"Publication date": "Nadnevak objave",
"RSS feed": "RSS kanal",
"Read in English": "Čitaj na hrvatskom",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Tagovi",
"Toggle navigation": "",
"Uncategorized": "Nekategorizirano",
+ "Up": "",
"Updates": "Nadopune",
"Write your page here.": "Napiši svoju stranicu ovdje",
"Write your post here.": "Napiši svoju objavu ovdje",
"old posts, page %d": "stari postovi, stranice %d",
"page %d": "stranice %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_hu.py b/nikola/data/themes/base/messages/messages_hu.py
index 0b137fc..8b0ac86 100644
--- a/nikola/data/themes/base/messages/messages_hu.py
+++ b/nikola/data/themes/base/messages/messages_hu.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d perc van hátra olvasni",
"(active)": "(aktív)",
"Also available in:": "Olvasható még:",
"Archive": "Archív",
+ "Atom feed": "Atom",
"Authors": "Szerzők",
"Categories": "Kategóriák",
"Comments": "Hozzászólások",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Több bejegyzés erről: %s",
"Newer posts": "Újabb bejegyzések",
"Next post": "A következő bejegyzés",
+ "Next": "Következő",
"No posts found.": "Nincs ilyen bejegyzés.",
"Nothing found.": "Nincs találat.",
"Older posts": "Régebbi bejegyzések",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Bejegyzések erről: %s",
"Posts by %s": "Bejegyzések %s által",
"Posts for year %s": "%s. bejegyzések",
- "Posts for {month} {day}, {year}": "{year}. {month}. {day}.-i bejegyzések",
- "Posts for {month} {year}": "{year}. {month}.-i bejegyzések",
+ "Posts for {month_day_year}": "{month_day_year} bejegyzések",
+ "Posts for {month_year}": "{month_year} bejegyzések",
"Previous post": "Az előző bejegyzés ",
+ "Previous": "Előző",
"Publication date": "A megjelenés dátuma",
"RSS feed": "RSS",
"Read in English": "Olvass magyarul",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Címkék",
"Toggle navigation": "",
"Uncategorized": "Nincs kategorizálva",
+ "Up": "Fel",
"Updates": "Frissítések",
"Write your page here.": "Ide írd az oldalad.",
"Write your post here.": "Ide írd a bejegyzésed.",
"old posts, page %d": "régi bejegyzések, %d. oldal",
"page %d": "%d. oldal",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_ia.py b/nikola/data/themes/base/messages/messages_ia.py
new file mode 100644
index 0000000..34868ba
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_ia.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "%dminutas de lectura remanente",
+ "(active)": "(active)",
+ "Also available in:": "Anque disponibile in:",
+ "Archive": "Archivo",
+ "Atom feed": "Fluxo Atom",
+ "Authors": "Authores",
+ "Categories": "Categorias",
+ "Comments": "Commentos",
+ "LANGUAGE": "Interlingua",
+ "Languages:": "Linguas:",
+ "More posts about %s": "Plure entratas super %s",
+ "Newer posts": "Entratas plus recente",
+ "Next post": "Entrata successive",
+ "Next": "Successive",
+ "No posts found.": "Nulle entrata esseva trovate.",
+ "Nothing found.": "Nihil esseva trovate.",
+ "Older posts": "Entratas plus vetule",
+ "Original site": "Sito original",
+ "Posted:": "Publicate:",
+ "Posts about %s": "Entratas super %s",
+ "Posts by %s": "Entratas per %s",
+ "Posts for year %s": "Entratas del anno %s",
+ "Posts for {month_day_year}": "Entratas de {month_day_year}",
+ "Posts for {month_year}": "Entratas de {month_year}",
+ "Previous post": "Entrata precedente",
+ "Previous": "Precendente",
+ "Publication date": "Data de publication",
+ "RSS feed": "Fluxo RSS",
+ "Read in English": "Lege in interlingua",
+ "Read more": "Lege plus",
+ "Skip to main content": "Salta al contento principal",
+ "Source": "Sorgente",
+ "Subcategories:": "Subcategorias:",
+ "Tags and Categories": "Etiquettas e categorias",
+ "Tags": "Etiquettas",
+ "Toggle navigation": "Commuta navigation",
+ "Uncategorized": "Sin categoria",
+ "Up": "In alto",
+ "Updates": "Actualisationes",
+ "Write your page here.": "Scribe tu pagina hic.",
+ "Write your post here.": "Scribe tu entrata hic.",
+ "old posts, page %d": "Vetule entratas, pagina %d",
+ "page %d": "pagina %d",
+ "updated": "actualisate",
+}
diff --git a/nikola/data/themes/base/messages/messages_id.py b/nikola/data/themes/base/messages/messages_id.py
index ec60f9a..d6c53ae 100644
--- a/nikola/data/themes/base/messages/messages_id.py
+++ b/nikola/data/themes/base/messages/messages_id.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d menit tersisa untuk membaca",
"(active)": "(aktif)",
"Also available in:": "Juga tersedia dalam:",
"Archive": "Arsip",
+ "Atom feed": "Umpan Atom",
"Authors": "Penulis",
"Categories": "Kategori",
"Comments": "Komentar",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Lebih banyak tulisan tentang %s",
"Newer posts": "Tulisan lebih baru",
"Next post": "Tulisan berikutnya",
+ "Next": "Sesudah",
"No posts found.": "Tidak ada tulisan yang ditemukan.",
"Nothing found.": "Tidak ditemukan.",
"Older posts": "Tulisan lebih lama",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Tulisan tentang %s",
"Posts by %s": "Tulisan oleh %s",
"Posts for year %s": "Tulisan untuk tahun %s",
- "Posts for {month} {day}, {year}": "Tulisan untuk {month} {day}, {year}",
- "Posts for {month} {year}": "Tulisan untuk {month} {year}",
+ "Posts for {month_day_year}": "Tulisan untuk {month_day_year}",
+ "Posts for {month_year}": "Tulisan untuk {month_year}",
"Previous post": "Tulisan sebelumnya",
+ "Previous": "Sebelum",
"Publication date": "Tanggal publikasi",
"RSS feed": "Sindikasi RSS",
"Read in English": "Baca dalam Bahasa Indonesia",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Sub kategori:",
"Tags and Categories": "Tag dan Kategori",
"Tags": "Tag",
- "Toggle navigation": "",
+ "Toggle navigation": "Alih navigasi",
"Uncategorized": "Tanpa kategori",
+ "Up": "Atas",
"Updates": "Update",
"Write your page here.": "Tulis halaman Anda disini.",
"Write your post here.": "Tulis tulisan Anda disini.",
"old posts, page %d": "tulisan lama, halaman %d",
"page %d": "halaman %d",
+ "updated": "diperbarui",
}
diff --git a/nikola/data/themes/base/messages/messages_it.py b/nikola/data/themes/base/messages/messages_it.py
index 08a65d5..2af1a62 100644
--- a/nikola/data/themes/base/messages/messages_it.py
+++ b/nikola/data/themes/base/messages/messages_it.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "ulteriori %d minuti di lettura",
"(active)": "(attivo)",
"Also available in:": "Disponibile anche in:",
"Archive": "Archivio",
+ "Atom feed": "Feed Atom",
"Authors": "Autori",
"Categories": "Categorie",
"Comments": "Commenti",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Altri articoli collegati %s",
"Newer posts": "Articoli più recenti",
"Next post": "Articolo successivo",
+ "Next": "Successivo",
"No posts found.": "Nessun articolo trovato.",
"Nothing found.": "Non trovato.",
"Older posts": "Articoli precedenti",
@@ -22,23 +24,26 @@ MESSAGES = {
"Posts about %s": "Articoli su %s",
"Posts by %s": "Articoli di %s",
"Posts for year %s": "Articoli per l'anno %s",
- "Posts for {month} {day}, {year}": "Articoli per il {day} {month} {year}",
- "Posts for {month} {year}": "Articoli per {month} {year}",
+ "Posts for {month_day_year}": "Articoli per il {month_day_year}",
+ "Posts for {month_year}": "Articoli per {month_year}",
"Previous post": "Articolo precedente",
+ "Previous": "Precedente",
"Publication date": "Data di pubblicazione",
"RSS feed": "Feed RSS",
- "Read in English": "Leggi in inglese",
+ "Read in English": "Leggi in italiano",
"Read more": "Continua la lettura",
"Skip to main content": "Vai al testo principale",
"Source": "Sorgente",
"Subcategories:": "Sottocategorie:",
"Tags and Categories": "Tag e categorie",
"Tags": "Tag",
- "Toggle navigation": "",
+ "Toggle navigation": "Attiva la navigazione",
"Uncategorized": "Senza categorie",
+ "Up": "Su",
"Updates": "Aggiornamenti",
"Write your page here.": "Scrivi qui la tua pagina.",
"Write your post here.": "Scrivi qui il tuo post.",
"old posts, page %d": "vecchi articoli, pagina %d",
"page %d": "pagina %d",
+ "updated": "aggiornato",
}
diff --git a/nikola/data/themes/base/messages/messages_ja.py b/nikola/data/themes/base/messages/messages_ja.py
index f0d752e..fd563ad 100644
--- a/nikola/data/themes/base/messages/messages_ja.py
+++ b/nikola/data/themes/base/messages/messages_ja.py
@@ -1,30 +1,33 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "残りを読むのに必要な時間は%d分",
"(active)": "(有効)",
"Also available in:": "他の言語で読む:",
- "Archive": "文書一覧",
+ "Archive": "過去記事一覧",
+ "Atom feed": "Atomフィード",
"Authors": "著者一覧",
"Categories": "カテゴリ",
"Comments": "コメント",
"LANGUAGE": "日本語",
"Languages:": "言語:",
- "More posts about %s": "%sに関する文書一覧",
- "Newer posts": "新しい文書",
- "Next post": "次の文書",
- "No posts found.": "文書はありません。",
+ "More posts about %s": "%sに関する記事一覧",
+ "Newer posts": "新しい記事",
+ "Next post": "次の記事",
+ "Next": "次",
+ "No posts found.": "記事はありません。",
"Nothing found.": "なにも見つかりませんでした。",
- "Older posts": "過去の文書",
+ "Older posts": "過去の記事",
"Original site": "翻訳元のサイト",
"Posted:": "公開日時:",
- "Posts about %s": "%sについての文書",
- "Posts by %s": "%sの文書一覧",
- "Posts for year %s": "%s年の文書",
- "Posts for {month} {day}, {year}": "{year}年{month}{day}日の文書",
- "Posts for {month} {year}": "{year}年{month}の文書",
- "Previous post": "一つ前の文書",
+ "Posts about %s": "%sについての記事",
+ "Posts by %s": "%sの記事一覧",
+ "Posts for year %s": "%s年の記事",
+ "Posts for {month_day_year}": "{month_day_year}の記事",
+ "Posts for {month_year}": "{month_year}の記事",
+ "Previous post": "一つ前の記事",
+ "Previous": "前",
"Publication date": "公開日",
"RSS feed": "RSSフィード",
"Read in English": "日本語で読む",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "サブカテゴリ",
"Tags and Categories": "カテゴリおよびタグ一覧",
"Tags": "タグ",
- "Toggle navigation": "",
- "Uncategorized": "uncategorized",
+ "Toggle navigation": "ナビゲーションを隠す",
+ "Uncategorized": "カテゴリなし",
+ "Up": "上",
"Updates": "フィード",
- "Write your page here.": "ここに文書を記述してください。",
- "Write your post here.": "ここに文書を記述してください。",
- "old posts, page %d": "過去の文書 %dページ目",
+ "Write your page here.": "ここに記事を記述してください。",
+ "Write your post here.": "ここに記事を記述してください。",
+ "old posts, page %d": "過去の記事 %dページ目",
"page %d": "ページ%d",
+ "updated": "更新日時",
}
diff --git a/nikola/data/themes/base/messages/messages_ko.py b/nikola/data/themes/base/messages/messages_ko.py
index 9a87aef..57b6cb9 100644
--- a/nikola/data/themes/base/messages/messages_ko.py
+++ b/nikola/data/themes/base/messages/messages_ko.py
@@ -1,19 +1,21 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "읽기 %d분 남음.",
"(active)": "(활성됨)",
"Also available in:": "이곳에서도 가능함:",
"Archive": "저장소",
+ "Atom feed": "",
"Authors": "작성자",
"Categories": "분류",
"Comments": "댓글",
- "LANGUAGE": "영어",
+ "LANGUAGE": "한국어",
"Languages:": "언어:",
"More posts about %s": "%s에 대한 또다른 포스트",
"Newer posts": "최신 포스트",
"Next post": "다음 포스트",
+ "Next": "다음",
"No posts found.": "검색된 포스트 없음.",
"Nothing found.": "검색 결과 없음.",
"Older posts": "옛날 포스트",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "%s에 대한 포스트",
"Posts by %s": "%s에 의해 작성된 글",
"Posts for year %s": "%s년도 포스트",
- "Posts for {month} {day}, {year}": " {year}년 {month}월 {day}일에 작성된 포스트",
- "Posts for {month} {year}": "{year}년 {month}월에 쓴 포스트",
+ "Posts for {month_day_year}": "{month_day_year}에 작성된 포스트",
+ "Posts for {month_year}": "{month_year}에 쓴 포스트",
"Previous post": "이전 포스트",
+ "Previous": "이전",
"Publication date": "발간일",
"RSS feed": "RSS 목록",
"Read in English": "영어로 읽기",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "태그",
"Toggle navigation": "",
"Uncategorized": "카테고리 없음",
+ "Up": "",
"Updates": "업데이트",
"Write your page here.": "여기에 페이지를 작성하세요.",
"Write your post here.": "이곳에 글을 작성하세요.",
"old posts, page %d": "이전 포스트, 페이지 %d",
"page %d": "페이지 %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_lt.py b/nikola/data/themes/base/messages/messages_lt.py
index 54b61d1..d79b940 100644
--- a/nikola/data/themes/base/messages/messages_lt.py
+++ b/nikola/data/themes/base/messages/messages_lt.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "liko %d min skaitymo",
"(active)": "(aktyvi)",
"Also available in:": "Taip pat turimas šiomis kalbomis:",
"Archive": "Archyvas",
+ "Atom feed": "",
"Authors": "Autoriai",
"Categories": "Kategorijos",
"Comments": "Komentarai",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Daugiau įrašų apie %s",
"Newer posts": "Naujesni įrašai",
"Next post": "Sekantis įrašas",
+ "Next": "",
"No posts found.": "Įrašų nerasta.",
"Nothing found.": "Nieko nerasta.",
"Older posts": "Senesni įrašai",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Įrašai apie %s",
"Posts by %s": "Autoriaus %s įrašai",
"Posts for year %s": "%s metų įrašai",
- "Posts for {month} {day}, {year}": "{month} {day}, {year} įrašai",
- "Posts for {month} {year}": "{month} {year} įrašai",
+ "Posts for {month_day_year}": "{month_day_year} įrašai",
+ "Posts for {month_year}": "{month_year} įrašai",
"Previous post": "Ankstesnis įrašas",
+ "Previous": "",
"Publication date": "Publikavimo data",
"RSS feed": "RSS srautas",
"Read in English": "Skaityti lietuviškai",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Žymės",
"Toggle navigation": "",
"Uncategorized": "Nekategorizuota",
+ "Up": "",
"Updates": "Atnaujinimai",
"Write your page here.": "Čia rašykite puslapio tekstą.",
"Write your post here.": "Čia rašykite įrašo tekstą.",
"old posts, page %d": "seni įrašai, %d puslapis",
"page %d": "%d puslapis",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_mi.py b/nikola/data/themes/base/messages/messages_mi.py
new file mode 100644
index 0000000..21f9739
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_mi.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "",
+ "(active)": "(mātātoa)",
+ "Also available in:": "",
+ "Archive": "Pūranga",
+ "Atom feed": "",
+ "Authors": "Kaituhi",
+ "Categories": "Kāwai",
+ "Comments": "Kōrerohia",
+ "LANGUAGE": " Māori",
+ "Languages:": "Reo",
+ "More posts about %s": "",
+ "Newer posts": "",
+ "Next post": "",
+ "Next": "Panuku",
+ "No posts found.": "",
+ "Nothing found.": "Kīhai i kitea",
+ "Older posts": "",
+ "Original site": "",
+ "Posted:": "",
+ "Posts about %s": "",
+ "Posts by %s": "",
+ "Posts for year %s": "",
+ "Posts for {month_day_year}": "",
+ "Posts for {month_year}": "",
+ "Previous post": "",
+ "Previous": "Whakamuri",
+ "Publication date": "",
+ "RSS feed": "Whāngai RSS",
+ "Read in English": "",
+ "Read more": "",
+ "Skip to main content": "",
+ "Source": "Matapuna",
+ "Subcategories:": "",
+ "Tags and Categories": "Tūtohu me nga kāwai",
+ "Tags": "Tūtohu",
+ "Toggle navigation": "",
+ "Uncategorized": "",
+ "Up": "Ki runga",
+ "Updates": "Whakahou",
+ "Write your page here.": "",
+ "Write your post here.": "",
+ "old posts, page %d": "",
+ "page %d": "whārangi %d",
+ "updated": "whakahoutia",
+}
diff --git a/nikola/data/themes/base/messages/messages_ml.py b/nikola/data/themes/base/messages/messages_ml.py
new file mode 100644
index 0000000..a818320
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_ml.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "%d മിനിട്ട് കൂടി വായിച്ചു തീരാന്‍ ",
+ "(active)": "(സജീവം)",
+ "Also available in:": "ലഭ്യമായ ഭാഷകള്‍:",
+ "Archive": "ആര്‍കൈവ്",
+ "Atom feed": "ആറ്റം ഫിഡ്",
+ "Authors": "രചയിതാക്കള്‍",
+ "Categories": "വിഭാഗങ്ങള്‍",
+ "Comments": "കമന്റുകള്‍",
+ "LANGUAGE": "മലയാളം",
+ "Languages:": "ഭാഷകള്‍:",
+ "More posts about %s": "%s-നെ കുറിച്ചുള്ള കൂടുതല്‍ രചനകള്‍",
+ "Newer posts": "പുതിയ രചനകള്‍",
+ "Next post": "അടുത്ത രചന",
+ "Next": "അടുത്തത്",
+ "No posts found.": "രചനകള്‍ ലഭ്യമല്ല.",
+ "Nothing found.": "ഒന്നും ലഭ്യമല്ല.",
+ "Older posts": "പഴയ രചനകള്‍",
+ "Original site": "യഥാര്‍ഥ സൈറ്റ്",
+ "Posted:": "എഴുതിയത്:",
+ "Posts about %s": "%s -നെ കുറിച്ചുള്ള രചനകള്‍",
+ "Posts by %s": "%s എഴുതിയ രചനകള്‍",
+ "Posts for year %s": "%s-ാം ആണ്ടിലെ രചനകള്‍",
+ "Posts for {month_day_year}": "{month_day_year} ലെ രചനകള്‍",
+ "Posts for {month_year}": "{month_year} ലെ രചനകള്‍",
+ "Previous post": "മുമ്പിലെ രചന",
+ "Previous": "കഴിഞ്ഞത്",
+ "Publication date": "പ്രസിദ്ധീകരിച്ച തീയതി",
+ "RSS feed": "ആര്‍ എസ് എസ് ഫീഡ്",
+ "Read in English": "മലയാളത്തില്‍ വായിക്കുക",
+ "Read more": "കൂടുതല്‍ വായിക്കുക",
+ "Skip to main content": "പ്രധാന ഉള്ളടക്കത്തിലേക്ക് നേരെ പോവുക",
+ "Source": "സ്രോതസ്സ്‌",
+ "Subcategories:": "ഉപവിഭാഗങ്ങള്‍:",
+ "Tags and Categories": "ടാഗുകളും വിഭാഗങ്ങളും",
+ "Tags": "ടാഗുകള്‍",
+ "Toggle navigation": "നാവിഗേഷൻ മാറ്റുക",
+ "Uncategorized": "വേര്‍തിരിക്കാത്തവ",
+ "Up": "മുകളിലേക്ക്",
+ "Updates": "അപ്ഡേറ്റുകൾ",
+ "Write your page here.": "താങ്കളുടെ താള്‍ ഇവിടെ എഴുതുക.",
+ "Write your post here.": "താങ്കളുടെ രചന ഇവിടെ എഴുതുക.",
+ "old posts, page %d": "പഴയ രചനകള്‍, താള്‍ %d",
+ "page %d": "താള്‍ %d",
+ "updated": "പുതുക്കിയത്",
+}
diff --git a/nikola/data/themes/base/messages/messages_mr.py b/nikola/data/themes/base/messages/messages_mr.py
new file mode 100644
index 0000000..49e4fb6
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_mr.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "वाचण्यासाठी %d मिनिटे शिल्लक आहेत",
+ "(active)": "(सक्रिय)",
+ "Also available in:": "मध्ये देखील उपलब्ध:",
+ "Archive": "संग्रह",
+ "Atom feed": "अ‍ॅटम फीड",
+ "Authors": "लेखक",
+ "Categories": "श्रेणी",
+ "Comments": "टिप्पण्या",
+ "LANGUAGE": "मराठी",
+ "Languages:": "भाषा:",
+ "More posts about %s": "%s बद्दल अधिक पोस्ट",
+ "Newer posts": "नवीन पोस्ट्स",
+ "Next post": "पुढील पोस्ट",
+ "Next": "पुढे",
+ "No posts found.": "कोणतीही पोस्ट आढळली नाहीत",
+ "Nothing found.": "काहीही सापडले नाही.",
+ "Older posts": "जुने पोस्ट",
+ "Original site": "मूळ साइट",
+ "Posted:": "पोस्ट केले:",
+ "Posts about %s": "%s बद्दल पोस्ट",
+ "Posts by %s": "%s द्वारा पोस्ट केलेले",
+ "Posts for year %s": "%s वर्षासाठी पोस्ट",
+ "Posts for {month_day_year}": "{month_day_year} साठी पोस्ट्स",
+ "Posts for {month_year}": "{month_year} साठी पोस्ट्स",
+ "Previous post": "मागील पोस्ट",
+ "Previous": "मागील",
+ "Publication date": "प्रकाशन तारीख",
+ "RSS feed": "आरएसएस फीड",
+ "Read in English": "मराठी मध्ये वाचा",
+ "Read more": "अधिक वाचा",
+ "Skip to main content": "मुख्य सामग्रीकडे जा",
+ "Source": "स्रोत",
+ "Subcategories:": "उपश्रेणी:",
+ "Tags and Categories": "टॅग्ज आणि श्रेण्या",
+ "Tags": "टॅग्ज",
+ "Toggle navigation": "नेव्हिगेशन टॉगल करा",
+ "Uncategorized": "अवर्गीकृत",
+ "Up": "वर",
+ "Updates": "अद्यतने",
+ "Write your page here.": "आपले पृष्ठ येथे लिहा.",
+ "Write your post here.": "आपले पोस्ट येथे लिहा.",
+ "old posts, page %d": "जुने पोस्ट, पृष्ठ %d",
+ "page %d": "पृष्ठ %d",
+ "updated": "अद्यतनित",
+}
diff --git a/nikola/data/themes/base/messages/messages_nb.py b/nikola/data/themes/base/messages/messages_nb.py
index 8ab0911..599d6ed 100644
--- a/nikola/data/themes/base/messages/messages_nb.py
+++ b/nikola/data/themes/base/messages/messages_nb.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min gjenstår å lese",
"(active)": "(aktiv)",
"Also available in:": "Også tilgjengelig på:",
"Archive": "Arkiv",
+ "Atom feed": "",
"Authors": "",
"Categories": "Kategorier",
"Comments": "Kommentarer",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Flere innlegg om %s",
"Newer posts": "Nyere innlegg",
"Next post": "Neste innlegg",
+ "Next": "",
"No posts found.": "Fant ingen innlegg.",
"Nothing found.": "Fant ingenting.",
"Older posts": "Eldre innlegg",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Innlegg om %s",
"Posts by %s": "",
"Posts for year %s": "Innlegg fra %s",
- "Posts for {month} {day}, {year}": "Innlegg fra {day}. {month} {year}",
- "Posts for {month} {year}": "Innlegg fra {month} {year}",
+ "Posts for {month_day_year}": "Innlegg fra {month_day_year}",
+ "Posts for {month_year}": "Innlegg fra {month_year}",
"Previous post": "Forrige innlegg",
+ "Previous": "",
"Publication date": "Publiseringsdato",
"RSS feed": "RSS-nyhetskanal",
"Read in English": "Les på norsk",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Merker",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "Skriv siden din her.",
"Write your post here.": "Skriv innlegget din her.",
"old posts, page %d": "eldre innlegg, side %d",
"page %d": "side %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_nl.py b/nikola/data/themes/base/messages/messages_nl.py
index 7c5698d..ee98121 100644
--- a/nikola/data/themes/base/messages/messages_nl.py
+++ b/nikola/data/themes/base/messages/messages_nl.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min resterende leestijd ",
"(active)": "(actief)",
"Also available in:": "Ook beschikbaar in:",
"Archive": "Archief",
+ "Atom feed": "Atom-feed",
"Authors": "Auteurs",
"Categories": "Categorieën",
"Comments": "Commentaar",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Meer berichten over %s",
"Newer posts": "Nieuwere berichten",
"Next post": "Volgend bericht",
+ "Next": "Volgende",
"No posts found.": "Geen berichten gevonden.",
"Nothing found.": "Niets gevonden.",
"Older posts": "Oudere berichten",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Berichten over %s",
"Posts by %s": "Berichten van %s",
"Posts for year %s": "Berichten voor het jaar %s",
- "Posts for {month} {day}, {year}": "Berichten voor {month} {day}, {year}",
- "Posts for {month} {year}": "Berichten voor {month} {year}",
+ "Posts for {month_day_year}": "Berichten voor {month_day_year}",
+ "Posts for {month_year}": "Berichten voor {month_year}",
"Previous post": "Vorig bericht",
+ "Previous": "Vorige",
"Publication date": "Publicatiedatum",
"RSS feed": "RSS-feed",
"Read in English": "Lees in het Nederlands",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Tags",
"Toggle navigation": "Toggle navigatie",
"Uncategorized": "Ongeordend",
+ "Up": "Omhoog",
"Updates": "Bijgewerkte versies",
"Write your page here.": "Schrijf hier je pagina.",
"Write your post here.": "Schrijf hier je bericht.",
"old posts, page %d": "oude berichten, pagina %d",
"page %d": "pagina %d",
+ "updated": "bijgewerkt",
}
diff --git a/nikola/data/themes/base/messages/messages_pa.py b/nikola/data/themes/base/messages/messages_pa.py
index 5eb76f1..8a0be76 100644
--- a/nikola/data/themes/base/messages/messages_pa.py
+++ b/nikola/data/themes/base/messages/messages_pa.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "ਪੜਣ ਲਈ %d ਮਿੰਟ ਬਾਕੀ",
"(active)": "(ਚਲੰਤ)",
"Also available in:": "ਹੋਰ ਉਪਲਬਧ ਬੋਲੀਆਂ:",
"Archive": "ਆਰਕਾਈਵ",
+ "Atom feed": "ਐਟਮ ਫੀਡ",
"Authors": "ਲੇਖਕ",
"Categories": "ਸ਼੍ਰੇਣੀ",
"Comments": "ਟਿੱਪਣੀਆਂ",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "%s ਬਾਰੇ ਹੋਰ ਲਿਖਤਾਂ",
"Newer posts": "ਨਵੀਆਂ ਲਿਖਤਾਂ",
"Next post": "ਅਗਲੀ ਲਿਖਤ",
+ "Next": "ਅੱਗੇ ",
"No posts found.": "ਕੋਈ ਲਿਖਤ ਨਹੀਂ ਲੱਭੀ |",
"Nothing found.": "ਕੁਝ ਨਹੀਂ ਲੱਭਿਆ |",
"Older posts": "ਪੁਰਾਣੀਆਂ ਲਿਖਤਾਂ",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "%s ਬਾਰੇ ਲਿਖਤਾਂ",
"Posts by %s": "%s ਦੀ ਲਿਖਤਾਂ",
"Posts for year %s": "ਸਾਲ %s ਦੀਆਂ ਲਿਖਤਾਂ",
- "Posts for {month} {day}, {year}": "{day} {month} {year} ਦੀਆਂ ਲਿਖਤਾਂ",
- "Posts for {month} {year}": "{month} {year} ਦੀਆਂ ਲਿਖਤਾਂ",
+ "Posts for {month_day_year}": "{month_day_year} ਦੀਆਂ ਲਿਖਤਾਂ",
+ "Posts for {month_year}": "{month_year} ਦੀਆਂ ਲਿਖਤਾਂ",
"Previous post": "ਪਿਛਲੀ ਲਿਖਤ",
+ "Previous": "ਪਿੱਛੇ ",
"Publication date": "ਛਪਾਈ ਦੀ ਤਰੀਕ",
"RSS feed": "ਆਰ ਐੱਸ ਐੱਸ ਫੀਡ",
"Read in English": "ਪੰਜਾਬੀ ਵਿੱਚ ਪੜ੍ਹੋ",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "ਉਪਸ਼੍ਰੇਣੀਆਂ:",
"Tags and Categories": "ਟੈਗ ਅਤੇ ਸ਼੍ਰੇਣੀਆਂ",
"Tags": "ਟੈਗ",
- "Toggle navigation": "",
+ "Toggle navigation": "ਨੈਵੀਗੇਸ਼ਨ ਬਦਲੋ ",
"Uncategorized": "ਇਤਾਹਾਸ",
+ "Up": "ਉੱਤੇ ",
"Updates": "ਅੱਪਡੇਟਸ",
"Write your page here.": "ਆਪਣਾ ਸਫ਼ਾ ਏਥੇ ਲਿਖੋ |",
"Write your post here.": "ਆਪਣੀ ਲਿਖਤ ਏਥੇ ਲਿਖੋ |",
"old posts, page %d": "ਪੁਰਾਣੀਆਂ ਲਿਖਤਾਂ , ਸਫ਼ਾ %d",
"page %d": "ਸਫ਼ਾ %d",
+ "updated": "ਅੱਪਡੇਟ ਕੀਤਾ",
}
diff --git a/nikola/data/themes/base/messages/messages_pl.py b/nikola/data/themes/base/messages/messages_pl.py
index 257a31a..2d13e32 100644
--- a/nikola/data/themes/base/messages/messages_pl.py
+++ b/nikola/data/themes/base/messages/messages_pl.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "zostało %d minut czytania",
"(active)": "(aktywne)",
"Also available in:": "Również dostępny w językach:",
"Archive": "Archiwum",
+ "Atom feed": "Kanał Atom",
"Authors": "Autorzy",
"Categories": "Kategorie",
"Comments": "Komentarze",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Więcej postów o %s",
"Newer posts": "Nowsze posty",
"Next post": "Następny post",
+ "Next": "Następne",
"No posts found.": "Nie znaleziono żadnych postów.",
"Nothing found.": "Nic nie znaleziono.",
"Older posts": "Starsze posty",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Posty o %s",
"Posts by %s": "Posty autora %s",
"Posts for year %s": "Posty z roku %s",
- "Posts for {month} {day}, {year}": "Posty z {day} {month} {year}",
- "Posts for {month} {year}": "Posty z {month} {year}",
+ "Posts for {month_day_year}": "Posty z {month_day_year}",
+ "Posts for {month_year}": "Posty z {month_year:MMMM yyyy}",
"Previous post": "Poprzedni post",
+ "Previous": "Poprzednie",
"Publication date": "Data publikacji",
"RSS feed": "Kanał RSS",
"Read in English": "Czytaj po polsku",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Tagi",
"Toggle navigation": "Pokaż/ukryj menu",
"Uncategorized": "Nieskategoryzowane",
+ "Up": "Do góry",
"Updates": "Aktualności",
"Write your page here.": "Tu wpisz treść strony.",
"Write your post here.": "Tu wpisz treść postu.",
"old posts, page %d": "stare posty, strona %d",
"page %d": "strona %d",
+ "updated": "aktualizacja",
}
diff --git a/nikola/data/themes/base/messages/messages_pt.py b/nikola/data/themes/base/messages/messages_pt.py
index 4a184bd..92c56a2 100644
--- a/nikola/data/themes/base/messages/messages_pt.py
+++ b/nikola/data/themes/base/messages/messages_pt.py
@@ -1,12 +1,13 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minutos restante para leitura",
"(active)": "(ativo)",
"Also available in:": "Também disponível em:",
"Archive": "Arquivo",
- "Authors": "",
+ "Atom feed": "Feed Atom",
+ "Authors": "Autores",
"Categories": "Categorias",
"Comments": "Comentários",
"LANGUAGE": "Português",
@@ -14,17 +15,19 @@ MESSAGES = {
"More posts about %s": "Mais textos publicados sobre %s",
"Newer posts": "Textos publicados mais recentes",
"Next post": "Próximo texto publicado",
+ "Next": "Próximo",
"No posts found.": "Nenhum texto publicado foi encontrado",
"Nothing found.": "Nada encontrado.",
"Older posts": "Textos publicados mais antigos",
"Original site": "Sítio original",
"Posted:": "Publicado:",
"Posts about %s": "Textos publicados sobre %s",
- "Posts by %s": "",
+ "Posts by %s": "Textos publicados por %s",
"Posts for year %s": "Textos publicados do ano %s",
- "Posts for {month} {day}, {year}": "Textos publicados de {day} {month} {year}",
- "Posts for {month} {year}": "Textos publicados de {month} {year}",
+ "Posts for {month_day_year}": "Textos publicados de {month_day_year}",
+ "Posts for {month_year}": "Textos publicados de {month_year}",
"Previous post": "Texto publicado anterior",
+ "Previous": "Anterior",
"Publication date": "Data de publicação",
"RSS feed": "Feed RSS",
"Read in English": "Ler em português",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Sub-Categorias:",
"Tags and Categories": "Etiquetas e Categorias",
"Tags": "Etiqueta",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
+ "Toggle navigation": "Alternar Navegação",
+ "Uncategorized": "Sem Categoria",
+ "Up": "Cima",
+ "Updates": "Actualizaçōes",
"Write your page here.": "Escreva a sua página aqui.",
"Write your post here.": "Escreva o seu texto para publicar aqui.",
"old posts, page %d": "Textos publicados antigos, página %d",
"page %d": "página %d",
+ "updated": "Actualizado",
}
diff --git a/nikola/data/themes/base/messages/messages_pt_br.py b/nikola/data/themes/base/messages/messages_pt_br.py
index b2877e4..f33abcc 100644
--- a/nikola/data/themes/base/messages/messages_pt_br.py
+++ b/nikola/data/themes/base/messages/messages_pt_br.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d mín restante para leitura",
"(active)": "(ativo)",
"Also available in:": "Também disponível em:",
"Archive": "Arquivo",
+ "Atom feed": "Feed Atom",
"Authors": "Autores",
"Categories": "Categorias",
"Comments": "Comentários",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Mais posts sobre %s",
"Newer posts": "Posts mais recentes",
"Next post": "Próximo post",
+ "Next": "Próximo",
"No posts found.": "Nenhum tópico encontrado.",
"Nothing found.": "Nada encontrado.",
"Older posts": "Posts mais antigos",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Posts sobre %s",
"Posts by %s": "Postado por %s",
"Posts for year %s": "Posts do ano %s",
- "Posts for {month} {day}, {year}": "Posts do {day} {month}, {year}",
- "Posts for {month} {year}": "Posts de {month} {year}",
+ "Posts for {month_day_year}": "Posts do {month_day_year}",
+ "Posts for {month_year}": "Posts de {month_year}",
"Previous post": "Post anterior",
+ "Previous": "Anterior",
"Publication date": "Data de publicação",
"RSS feed": "Feed RSS",
"Read in English": "Ler em português",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Tags",
"Toggle navigation": "Alternar navegação",
"Uncategorized": "Sem categoria",
+ "Up": "acima",
"Updates": "Atualizações",
"Write your page here.": "Insira a sua página aqui",
"Write your post here.": "Escreva o seu comentário aqui.",
"old posts, page %d": "Posts antigos, página %d",
"page %d": "página %d",
+ "updated": "Atualizado",
}
diff --git a/nikola/data/themes/base/messages/messages_ru.py b/nikola/data/themes/base/messages/messages_ru.py
index 0070b94..f2f33cc 100644
--- a/nikola/data/themes/base/messages/messages_ru.py
+++ b/nikola/data/themes/base/messages/messages_ru.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d минут чтения осталось",
"(active)": "(активная)",
"Also available in:": "Также доступно на:",
"Archive": "Архив",
+ "Atom feed": "",
"Authors": "Разработчики",
"Categories": "Категории",
"Comments": "Комментарии",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Больше записей о %s",
"Newer posts": "Новые записи",
"Next post": "Следующая запись",
+ "Next": "Следующая",
"No posts found.": "Записей не найдено.",
"Nothing found.": "Ничего не найдено.",
"Older posts": "Старые записи",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Записи о %s",
"Posts by %s": "Запись %s",
"Posts for year %s": "Записи за %s год",
- "Posts for {month} {day}, {year}": "Записи за {day} {month} {year}",
- "Posts for {month} {year}": "Записи за {month} {year}",
+ "Posts for {month_day_year}": "Записи за {month_day_year}",
+ "Posts for {month_year}": "Записи за {month_year}",
"Previous post": "Предыдущая запись",
+ "Previous": "Предыдущая",
"Publication date": "Дата опубликования",
"RSS feed": "RSS лента",
"Read in English": "Прочесть по-русски",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Подкатегории:",
"Tags and Categories": "Тэги и категории",
"Tags": "Тэги",
- "Toggle navigation": "",
+ "Toggle navigation": "Включить навигацию",
"Uncategorized": "Несортированное",
+ "Up": "Наверх",
"Updates": "Обновления",
"Write your page here.": "Создайте Вашу страницу здесь.",
"Write your post here.": "Создайте Вашу запись здесь.",
"old posts, page %d": "%d страница со старыми записями",
"page %d": "%d страница",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_si_lk.py b/nikola/data/themes/base/messages/messages_si_lk.py
deleted file mode 100644
index 6107c54..0000000
--- a/nikola/data/themes/base/messages/messages_si_lk.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
-
-MESSAGES = {
- "%d min remaining to read": "",
- "(active)": "",
- "Also available in:": "",
- "Archive": "",
- "Authors": "",
- "Categories": "",
- "Comments": "",
- "LANGUAGE": "",
- "Languages:": "",
- "More posts about %s": "",
- "Newer posts": "",
- "Next post": "",
- "No posts found.": "",
- "Nothing found.": "",
- "Older posts": "",
- "Original site": "",
- "Posted:": "",
- "Posts about %s": "",
- "Posts by %s": "",
- "Posts for year %s": "",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "",
- "Previous post": "",
- "Publication date": "",
- "RSS feed": "",
- "Read in English": "",
- "Read more": "",
- "Skip to main content": "",
- "Source": "",
- "Subcategories:": "",
- "Tags and Categories": "",
- "Tags": "",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "",
- "page %d": "",
-}
diff --git a/nikola/data/themes/base/messages/messages_sk.py b/nikola/data/themes/base/messages/messages_sk.py
index 7b7df6f..aea46f2 100644
--- a/nikola/data/themes/base/messages/messages_sk.py
+++ b/nikola/data/themes/base/messages/messages_sk.py
@@ -1,12 +1,13 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "zostáva %d minút na čítanie",
"(active)": "(aktívne)",
"Also available in:": "Tiež dostupné v:",
"Archive": "Archív",
- "Authors": "",
+ "Atom feed": "Atom kanál",
+ "Authors": "Autori",
"Categories": "Kategórie",
"Comments": "Komentáre",
"LANGUAGE": "Slovenčina",
@@ -14,17 +15,19 @@ MESSAGES = {
"More posts about %s": "Viac príspevkov o %s",
"Newer posts": "Novšie príspevky",
"Next post": "Nasledujúci príspevok",
+ "Next": "Nasledujúci",
"No posts found.": "Žiadne príspevky nenájdené",
"Nothing found.": "Nič nenájdené.",
"Older posts": "Staršie príspevky",
"Original site": "Pôvodná stránka",
"Posted:": "Zverejnené:",
"Posts about %s": "Príspevky o %s",
- "Posts by %s": "",
+ "Posts by %s": "Príspevky od %s",
"Posts for year %s": "Príspevky z roku %s",
- "Posts for {month} {day}, {year}": "Príspevky zo dňa {day}. {month} {year}",
- "Posts for {month} {year}": "Príspevky za mesiac {month} z roku {year}",
+ "Posts for {month_day_year}": "Príspevky zo dňa {day}. {month_year}",
+ "Posts for {month_year}": "Príspevky za mesiac {month} z roku {year}",
"Previous post": "Predchádzajúci príspevok",
+ "Previous": "Predchádzajúci",
"Publication date": "Dátum zverejnenia",
"RSS feed": "RSS kanál",
"Read in English": "Čítať v slovenčine",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Podkategórie:",
"Tags and Categories": "Štítky a kategórie",
"Tags": "Štítky",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
+ "Toggle navigation": "Prepnúť navigáciu",
+ "Uncategorized": "Nekategorizované",
+ "Up": "Dohora",
+ "Updates": "Aktualizácie",
"Write your page here.": "Tu napíšte svoju stránku.",
"Write your post here.": "Tu napíšte svoj príspevok.",
"old posts, page %d": "staré príspevky, strana %d",
"page %d": "stránka %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_sl.py b/nikola/data/themes/base/messages/messages_sl.py
index 31f3a58..6bd6370 100644
--- a/nikola/data/themes/base/messages/messages_sl.py
+++ b/nikola/data/themes/base/messages/messages_sl.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "še %d min za branje preostanka",
"(active)": "",
"Also available in:": "Na voljo tudi v:",
"Archive": "Arhiv",
+ "Atom feed": "",
"Authors": "",
"Categories": "Kategorije",
"Comments": "Komentarji",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Več objav o %s",
"Newer posts": "Novejše objave",
"Next post": "Naslednja objava",
+ "Next": "",
"No posts found.": "Ni najdenih objav.",
"Nothing found.": "Brez zadetkov.",
"Older posts": "Starejše objave",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Objave o %s",
"Posts by %s": "",
"Posts for year %s": "Objave za leto %s",
- "Posts for {month} {day}, {year}": "Objave za {day}. {month}, {year}",
- "Posts for {month} {year}": "Objave za {month} {year}",
+ "Posts for {month_day_year}": "Objave za {month_day_year}",
+ "Posts for {month_year}": "Objave za {month_year}",
"Previous post": "Prejšnja objava",
+ "Previous": "",
"Publication date": "Datum objave",
"RSS feed": "vir RSS",
"Read in English": "Beri v slovenščini",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Značke",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "",
"Write your post here.": "",
"old posts, page %d": "stare objave, stran %d",
"page %d": "stran %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_sq.py b/nikola/data/themes/base/messages/messages_sq.py
index 6d5e39a..088cdcb 100644
--- a/nikola/data/themes/base/messages/messages_sq.py
+++ b/nikola/data/themes/base/messages/messages_sq.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d min ngelen për tu lexuar",
"(active)": "(aktiv)",
"Also available in:": "Gjithashtu e disponueshme në:",
"Archive": "Arkiva",
+ "Atom feed": "",
"Authors": "Autorë",
"Categories": "Kategori",
"Comments": "Komente",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Më shumë postime rreth %s",
"Newer posts": "Postime më të reja",
"Next post": "Postimi i rradhës",
+ "Next": "",
"No posts found.": "Nuk është gjetur asnjë post.",
"Nothing found.": "Nuk është gjetur asgjë.",
"Older posts": "Postime më të vjetra",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Postime rreth %s",
"Posts by %s": "Postime nga %s",
"Posts for year %s": "Postime për vitin %s",
- "Posts for {month} {day}, {year}": "Postime për {month} {day}, {year}",
- "Posts for {month} {year}": "Postime për {month} {year}",
+ "Posts for {month_day_year}": "Postime për {month_day_year}",
+ "Posts for {month_year}": "Postime për {month_year}",
"Previous post": "Postim i kaluar",
+ "Previous": "",
"Publication date": "Data e publikimit",
"RSS feed": "Furnizim RSS",
"Read in English": "Lexo në Shqip",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Etiketa",
"Toggle navigation": "",
"Uncategorized": "E pa kategorizuar",
+ "Up": "",
"Updates": "Përditësime",
"Write your page here.": "Shkruaj faqen tënde këtu.",
"Write your post here.": "Shkruaj postin tënd këtu.",
"old posts, page %d": "Postime të kaluara, faqe %d",
"page %d": "faqe %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_sr.py b/nikola/data/themes/base/messages/messages_sr.py
index 03f1024..98e023e 100644
--- a/nikola/data/themes/base/messages/messages_sr.py
+++ b/nikola/data/themes/base/messages/messages_sr.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d минута је преостало за читање",
"(active)": "(активно)",
"Also available in:": "Такође доступан у:",
"Archive": "Архива",
+ "Atom feed": "",
"Authors": "",
"Categories": "Категорије",
"Comments": "Коментари",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Више постова о %s",
"Newer posts": "Новији постови",
"Next post": "Следећи пост",
+ "Next": "",
"No posts found.": "Нема постова.",
"Nothing found.": "Није ништа пронађено.",
"Older posts": "Старији постови",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Постови о %s",
"Posts by %s": "",
"Posts for year %s": "Постови за годину %s",
- "Posts for {month} {day}, {year}": "Објаве за {month} {day}, {year}",
- "Posts for {month} {year}": "Постови за {month} {year}",
+ "Posts for {month_day_year}": "Објаве за {month_day_year}",
+ "Posts for {month_year}": "Постови за {month_year}",
"Previous post": "Претходни пост",
+ "Previous": "",
"Publication date": "Датум објаве",
"RSS feed": "RSS feed",
"Read in English": "Прочитај на српском",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Тагови",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "Вашу страницу напишите овдје.",
"Write your post here.": "Вашу објаву напишите овдје.",
"old posts, page %d": "стари постови, страна %d",
"page %d": "страна %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_sr_latin.py b/nikola/data/themes/base/messages/messages_sr_latin.py
index f7f3727..4b1e827 100644
--- a/nikola/data/themes/base/messages/messages_sr_latin.py
+++ b/nikola/data/themes/base/messages/messages_sr_latin.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minuta preostalo za čitanje",
"(active)": "(aktivno)",
"Also available in:": "Takođe dostupan u:",
"Archive": "Arhiva",
+ "Atom feed": "",
"Authors": "",
"Categories": "Kategorije",
"Comments": "Komentari",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Više objava o %s",
"Newer posts": "Novije objave",
"Next post": "Naredna objava",
+ "Next": "",
"No posts found.": "Nema objava.",
"Nothing found.": "Ništa nije pronađeno.",
"Older posts": "Starije objave",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Objave o %s",
"Posts by %s": "",
"Posts for year %s": "Objave u godini %s",
- "Posts for {month} {day}, {year}": "Objave za {month} {day}, {year}",
- "Posts for {month} {year}": "Objave za {month} {year}",
+ "Posts for {month_day_year}": "Objave za {month_day_year}",
+ "Posts for {month_year}": "Objave za {month_year}",
"Previous post": "Prethodne objave",
+ "Previous": "",
"Publication date": "Datum objavljivanja",
"RSS feed": "RSS feed",
"Read in English": "Pročitaj na bosanskom",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Oznake",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "Vašu stranicu napišite ovdje.",
"Write your post here.": "Vašu objavu napišite ovdje.",
"old posts, page %d": "stare objave, strana %d",
"page %d": "strana %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_sv.py b/nikola/data/themes/base/messages/messages_sv.py
index 106138f..ce56b11 100644
--- a/nikola/data/themes/base/messages/messages_sv.py
+++ b/nikola/data/themes/base/messages/messages_sv.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d minuter kvar att läsa",
"(active)": "(aktiv)",
"Also available in:": "Även tillgänglig på:",
"Archive": "Arkiv",
+ "Atom feed": "",
"Authors": "",
"Categories": "Kategorier",
"Comments": "Kommentarer",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "Fler inlägg om %s",
"Newer posts": "Nya inlägg",
"Next post": "Nästa inlägg",
+ "Next": "",
"No posts found.": "Inga inlägg hittade.",
"Nothing found.": "Inget hittat.",
"Older posts": "Äldre inlägg",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "Inlägg om %s",
"Posts by %s": "",
"Posts for year %s": "Inlägg för år %s",
- "Posts for {month} {day}, {year}": "Inlägg för {month} {day}, {year}",
- "Posts for {month} {year}": "Inlägg för {month} {year}",
+ "Posts for {month_day_year}": "Inlägg för {month_day_year}",
+ "Posts for {month_year}": "Inlägg för {month_year}",
"Previous post": "Föregående inlägg",
+ "Previous": "",
"Publication date": "Publiceringsdatum",
"RSS feed": "RSS-flöde",
"Read in English": "Läs på svenska",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Taggar",
"Toggle navigation": "",
"Uncategorized": "",
+ "Up": "",
"Updates": "",
"Write your page here.": "Skriv din sida här.",
"Write your post here.": "Skriv ditt inlägg här.",
"old posts, page %d": "gamla inlägg, sida %d",
"page %d": "sida %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_te.py b/nikola/data/themes/base/messages/messages_te.py
index 70d8150..385ff0b 100644
--- a/nikola/data/themes/base/messages/messages_te.py
+++ b/nikola/data/themes/base/messages/messages_te.py
@@ -1,44 +1,49 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d నిమిషాలు చదవడానికి కావలెను ",
"(active)": "(క్రియాశీల)",
"Also available in:": "ఇందులో కూడా లభించును:",
"Archive": "అభిలేఖలు ",
+ "Atom feed": "అటామ్ ఫీడ్",
"Authors": "రచయితలు",
"Categories": "వర్గాలు",
"Comments": "వ్యాఖ్యలు",
- "LANGUAGE": "ఆంగ్లం ",
+ "LANGUAGE": "తెలుగు",
"Languages:": "భాషలు:",
"More posts about %s": "%s గూర్చి మరిన్ని టపాలు",
"Newer posts": "కొత్త టపాలు",
- "Next post": "తరువాత టపా",
- "No posts found.": "",
- "Nothing found.": "",
+ "Next post": "తరువాతి టపా",
+ "Next": "తరువాతి",
+ "No posts found.": "టపాలు ఏవీ కనుగొనబడలేదు.",
+ "Nothing found.": "ఏదీ కనుగొనబడలేదు.",
"Older posts": "పాత టపాలు",
"Original site": "వాస్తవ సైట్",
"Posted:": "ప్రచురుంచిన తేదీ:",
"Posts about %s": "%s గూర్చి టపాలు",
"Posts by %s": "%s యొక్క టపాలు",
"Posts for year %s": "%s సంవత్సర టపాలు",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "",
+ "Posts for {month_day_year}": "{month_day_year} యొక్క టపాలు",
+ "Posts for {month_year}": "{month_year} యొక్క టపాలు",
"Previous post": "మునుపటి టపా",
+ "Previous": "మునుపటి",
"Publication date": "ప్రచురణ తేదీ",
"RSS feed": "RSS ఫీడ్",
- "Read in English": "ఆంగ్లంలో చదవండి",
+ "Read in English": "తెలుగులో చదవండి",
"Read more": "ఇంకా చదవండి",
"Skip to main content": "ప్రధాన విషయానికి వెళ్ళు",
"Source": "మూలం",
"Subcategories:": "ఉపవర్గాలు:",
"Tags and Categories": "ట్యాగ్లు మరియు వర్గాలు",
"Tags": "ట్యాగ్లు",
- "Toggle navigation": "",
+ "Toggle navigation": "నావిగేషన్‌ను టోగుల్ చేయండి",
"Uncategorized": "వర్గీకరించని",
+ "Up": "పైకి",
"Updates": "నవీకరణలు",
"Write your page here.": "మీ పేజీ ఇక్కడ రాయండి.",
"Write your post here.": "ఇక్కడ మీ టపా ను వ్రాయండి.",
"old posts, page %d": "పాత టపాలు, పేజీ %d",
"page %d": "పేజీ %d",
+ "updated": "నవీకరించబడింది",
}
diff --git a/nikola/data/themes/base/messages/messages_th.py b/nikola/data/themes/base/messages/messages_th.py
new file mode 100644
index 0000000..a46f9ca
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_th.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "ใช้เวลาอ่านอีก %d นาที",
+ "(active)": "(ถูกใช้งาน)",
+ "Also available in:": "ภาษาอื่นๆ:",
+ "Archive": "คลังโพสต์",
+ "Atom feed": "ฟีด Atom",
+ "Authors": "ผู้เขียน",
+ "Categories": "หมวดหมู่",
+ "Comments": "ความคิดเห็น",
+ "LANGUAGE": "ภาษาไทย",
+ "Languages:": "ภาษา:",
+ "More posts about %s": "โพสต์เพิ่มเติมเกี่ยวกับ %s",
+ "Newer posts": "โพสต์มาใหม่",
+ "Next post": "โพสต์ถัดไป",
+ "Next": "ถัดไป",
+ "No posts found.": "ไม่พบโพสต์.",
+ "Nothing found.": "ไม่พบ",
+ "Older posts": "โพสต์เก่า",
+ "Original site": "เว็บไซต์ที่มา",
+ "Posted:": "โพสต์เมื่อ:",
+ "Posts about %s": "โพสต์เกี่ยวกับ %s",
+ "Posts by %s": "โพสต์โดย %s",
+ "Posts for year %s": "โพสต์เมื่อปี %s",
+ "Posts for {month_day_year}": "โพสต์เมื่อ {month_day_year}",
+ "Posts for {month_year}": "โพสต์เมื่อ {month_year}",
+ "Previous post": "โพสต์ก่อนหน้า",
+ "Previous": "ก่อนหน้า",
+ "Publication date": "วันที่ตีพิมพ์",
+ "RSS feed": "ฟีด RSS",
+ "Read in English": "อ่านเป็นภาษาไทย",
+ "Read more": "อ่านเพิ่มเติม",
+ "Skip to main content": "ข้ามไปหน้าหลัก",
+ "Source": "แหล่งที่มา",
+ "Subcategories:": "หมวดหมู่ย่อย:",
+ "Tags and Categories": "แท็กและหมวดหมู่",
+ "Tags": "แท็ก",
+ "Toggle navigation": "เมนูบาร์",
+ "Uncategorized": "ไม่มีหมวดหมู่",
+ "Up": "ขึ้นด้านบน",
+ "Updates": "อัพเดด",
+ "Write your page here.": "เขียนเพจที่นี่",
+ "Write your post here.": "เขียนโพสต์ที่นี่",
+ "old posts, page %d": "โพสต์เก่า, หน้า %d",
+ "page %d": "หน้า %d",
+ "updated": "",
+}
diff --git a/nikola/data/themes/base/messages/messages_tl.py b/nikola/data/themes/base/messages/messages_tl.py
deleted file mode 100644
index 1b85eb4..0000000
--- a/nikola/data/themes/base/messages/messages_tl.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
-
-MESSAGES = {
- "%d min remaining to read": "",
- "(active)": "",
- "Also available in:": "",
- "Archive": "",
- "Authors": "",
- "Categories": "",
- "Comments": "",
- "LANGUAGE": "Ingles",
- "Languages:": "Mga Wika:",
- "More posts about %s": "",
- "Newer posts": "",
- "Next post": "Susunod",
- "No posts found.": "",
- "Nothing found.": "",
- "Older posts": "",
- "Original site": "",
- "Posted:": "",
- "Posts about %s": "",
- "Posts by %s": "",
- "Posts for year %s": "",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "",
- "Previous post": "",
- "Publication date": "",
- "RSS feed": "",
- "Read in English": "",
- "Read more": "",
- "Skip to main content": "",
- "Source": "",
- "Subcategories:": "",
- "Tags and Categories": "",
- "Tags": "Mga Tag",
- "Toggle navigation": "",
- "Uncategorized": "",
- "Updates": "",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "",
- "page %d": "",
-}
diff --git a/nikola/data/themes/base/messages/messages_tr.py b/nikola/data/themes/base/messages/messages_tr.py
index e09dcb8..8249f42 100644
--- a/nikola/data/themes/base/messages/messages_tr.py
+++ b/nikola/data/themes/base/messages/messages_tr.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d dakikalık okuma",
"(active)": "(etkin)",
"Also available in:": "Şu dilde de mevcut:",
"Archive": "Arşiv",
+ "Atom feed": "",
"Authors": "Yazarlar",
"Categories": "Kategoriler",
"Comments": "Yorumlar",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "%s hakkında diğer yazılar",
"Newer posts": "Daha yeni yazılar",
"Next post": "Sonraki yazı",
+ "Next": "",
"No posts found.": "Yazı bulunamadı.",
"Nothing found.": "Hiçbir şey bulunamadı.",
"Older posts": "Daha eski yazılar",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "%s ile ilgili yazılar",
"Posts by %s": "%s tarafından yazılanlar",
"Posts for year %s": "%s yılındaki yazılar",
- "Posts for {month} {day}, {year}": "{month} {day}, {year} tarihinden itibaren yazılar",
- "Posts for {month} {year}": "{month} {year} göre yazılar",
+ "Posts for {month_day_year}": "{month_day_year} tarihinden itibaren yazılar",
+ "Posts for {month_year}": "{month_year} göre yazılar",
"Previous post": "Önceki yazı",
+ "Previous": "",
"Publication date": "Yayınlanma tarihi",
"RSS feed": "RSS kaynağı",
"Read in English": "Türkçe olarak oku",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "Etiketler",
"Toggle navigation": "",
"Uncategorized": "Kategorisiz",
+ "Up": "",
"Updates": "Güncellemeler",
"Write your page here.": "Sayfanızı buraya yazın.",
"Write your post here.": "Yazınızı buraya yazın.",
"old posts, page %d": "eski yazılar, sayfa %d",
"page %d": "sayfa %d",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/messages/messages_uk.py b/nikola/data/themes/base/messages/messages_uk.py
index 327a5d9..2a6d84f 100644
--- a/nikola/data/themes/base/messages/messages_uk.py
+++ b/nikola/data/themes/base/messages/messages_uk.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "Залишилось читати %d хвилин",
"(active)": "(активне)",
"Also available in:": "Іншою мовою:",
"Archive": "Архів",
+ "Atom feed": "Стрічка у форматі Atom",
"Authors": "Автори",
"Categories": "Категорії",
"Comments": "Коментарі",
@@ -14,19 +15,21 @@ MESSAGES = {
"More posts about %s": "Більше статей про %s",
"Newer posts": "Новіші статті",
"Next post": "Наступна стаття",
+ "Next": "Вперед",
"No posts found.": "Не знайдено жодної статті",
"Nothing found.": "Нічого не знайдено",
- "Older posts": "Більш старі статті",
+ "Older posts": "Старіші статті",
"Original site": "Оригінал сайту",
"Posted:": "Опублікована:",
"Posts about %s": "Статті про %s",
"Posts by %s": "Статті %s",
"Posts for year %s": "Статті за %s рік",
- "Posts for {month} {day}, {year}": "Статті за {month} {day}, {year}",
- "Posts for {month} {year}": "Статті за {month} {year}",
+ "Posts for {month_day_year}": "Статті за {month_day_year}",
+ "Posts for {month_year}": "Статті за {month_year}",
"Previous post": "Попередня стаття",
+ "Previous": "Назад",
"Publication date": "Дата публікації",
- "RSS feed": "RSS-стрічка",
+ "RSS feed": "Стрічка у форматі RSS",
"Read in English": "Читати українською",
"Read more": "Читати далі",
"Skip to main content": "Перейти до основного матеріалу",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "Підкатегорії:",
"Tags and Categories": "Теги і категорії",
"Tags": "Теги",
- "Toggle navigation": "",
+ "Toggle navigation": "Перемкнути навігацію",
"Uncategorized": "Без категорії",
+ "Up": "Нагору",
"Updates": "Підписки",
"Write your page here.": "Напишіть Вашу сторінку тут.",
"Write your post here.": "Напишить Вашу статтю тут.",
"old posts, page %d": "старі статті, сторінка %d",
"page %d": "сторінка %d",
+ "updated": "оновлено",
}
diff --git a/nikola/data/themes/base/messages/messages_ur.py b/nikola/data/themes/base/messages/messages_ur.py
index 055f72e..2e6cd49 100644
--- a/nikola/data/themes/base/messages/messages_ur.py
+++ b/nikola/data/themes/base/messages/messages_ur.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "%d منٹ کا مطالعہ باقی",
"(active)": "(فعال)",
"Also available in:": "ان میں بھی دستیاب:",
"Archive": "آرکائیو",
+ "Atom feed": "ایٹم فِیڈ",
"Authors": "مصنفین",
"Categories": "زمرے",
"Comments": "تبصرے",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "%s کے بارے میں مزید تحاریر",
"Newer posts": "نئی تحاریر",
"Next post": "اگلی تحریر",
+ "Next": "آگے",
"No posts found.": "کوئی تحریر نہیں مل سکی۔",
"Nothing found.": "کچھ نہیں مل سکا۔",
"Older posts": "پرانی تحاریر",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "%s کے بارے میں تحاریر",
"Posts by %s": "%s کی تحاریر",
"Posts for year %s": "سال %s کی تحاریر",
- "Posts for {month} {day}, {year}": "{day} {month}، {year} کی تحاریر",
- "Posts for {month} {year}": "{month} {year} کی تحاریر",
+ "Posts for {month_day_year}": "{month_day_year} کی تحاریر",
+ "Posts for {month_year}": "{month_year} کی تحاریر",
"Previous post": "پچھلی تحریر",
+ "Previous": "پیچھے",
"Publication date": "تاریخِ اشاعت",
"RSS feed": "آر ایس ایس فیڈ",
"Read in English": "اردو میں پڑھیں",
@@ -34,11 +37,13 @@ MESSAGES = {
"Subcategories:": "ذیلی زمرے",
"Tags and Categories": "ٹیگز اور زمرے",
"Tags": "ٹیگز",
- "Toggle navigation": "",
+ "Toggle navigation": "نیویگیشن ہٹائیں/دکھائیں",
"Uncategorized": "بے زمرہ",
+ "Up": "اوپر",
"Updates": "تازہ ترین",
"Write your page here.": "اپنے صفحے کا متن یہاں لکھیں۔",
"Write your post here.": "اپنی تحریر یہاں لکھیں۔",
"old posts, page %d": "پرانی تحاریر صفحہ %d",
"page %d": "صفحہ %d",
+ "updated": "تازہ کاری",
}
diff --git a/nikola/data/themes/base/messages/messages_vi.py b/nikola/data/themes/base/messages/messages_vi.py
new file mode 100644
index 0000000..5ec8bbe
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_vi.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
+
+MESSAGES = {
+ "%d min remaining to read": "Cần %d phút để đọc",
+ "(active)": "(active)",
+ "Also available in:": "Cũng có sẵn trong:",
+ "Archive": "Kho",
+ "Atom feed": "Nguồn cung cấp dữ liệu Atom",
+ "Authors": "Tác giả",
+ "Categories": "Thể loại",
+ "Comments": "Bình luận",
+ "LANGUAGE": "Tiếng Việt",
+ "Languages:": "Ngôn ngữ:",
+ "More posts about %s": "Các bài đăng khác về %s",
+ "Newer posts": "Bài viết gần đây",
+ "Next post": "Bài viết tiếp theo",
+ "Next": "Kế tiếp",
+ "No posts found.": "Không tìm thấy bài viết.",
+ "Nothing found.": "Không có kết quả.",
+ "Older posts": "Bài viết trước đây",
+ "Original site": "Trang gốc",
+ "Posted:": "Đã đăng:",
+ "Posts about %s": "Bài viết về %s",
+ "Posts by %s": "Bài đăng bởi %s",
+ "Posts for year %s": "Các bài viết trong năm %s",
+ "Posts for {month_day_year}": "Các bài đã đăng {month_day_year}",
+ "Posts for {month_year}": "Các bài đã đăng {month_year}",
+ "Previous post": "Bài viết trước",
+ "Previous": "Trước",
+ "Publication date": "Ngày phát hành",
+ "RSS feed": "Nguồn cung cấp dữ liệu RSS",
+ "Read in English": "Phiên bản Tiếng Việt",
+ "Read more": "Đọc thêm",
+ "Skip to main content": "Chuyển đến nội dung chính",
+ "Source": "Nguồn",
+ "Subcategories:": "Thể loại con:",
+ "Tags and Categories": "Thẻ và Thể loại",
+ "Tags": "Thẻ",
+ "Toggle navigation": "Chuyển điều hướng",
+ "Uncategorized": "Chưa được phân loại",
+ "Up": "Trở lên",
+ "Updates": "Cập nhật",
+ "Write your page here.": "Bắt đầu viết nội dung của trang ở đây.",
+ "Write your post here.": "Bắt đầu viết bài ở đây.",
+ "old posts, page %d": "các bài viết trước đây, trang %d",
+ "page %d": "trang %d",
+ "updated": "Đã được cập nhật",
+}
diff --git a/nikola/data/themes/base/messages/messages_zh_cn.py b/nikola/data/themes/base/messages/messages_zh_cn.py
index 84e4317..df8570b 100644
--- a/nikola/data/themes/base/messages/messages_zh_cn.py
+++ b/nikola/data/themes/base/messages/messages_zh_cn.py
@@ -1,44 +1,49 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
- "%d min remaining to read": "剩余 %d 分钟去阅读",
+ "%d min remaining to read": "剩余阅读时间 %d 分钟",
"(active)": "(活跃)",
- "Also available in:": "其他语言版本:",
- "Archive": "文章存档",
+ "Also available in:": "也可用于:",
+ "Archive": "文章归档",
+ "Atom feed": "Atom 源",
"Authors": "作者",
"Categories": "分类",
- "Comments": "注释",
+ "Comments": "评论",
"LANGUAGE": "简体中文",
"Languages:": "语言:",
- "More posts about %s": "更多 %s 相关文章",
- "Newer posts": "新一篇",
- "Next post": "后一篇",
+ "More posts about %s": "关于%s 的更多文章 ",
+ "Newer posts": "较新的文章",
+ "Next post": "下一篇文章",
+ "Next": "项下",
"No posts found.": "没有找到文章",
"Nothing found.": "没有找到。",
- "Older posts": "旧一篇",
+ "Older posts": "以前的文章",
"Original site": "原文地址",
"Posted:": "发表于:",
- "Posts about %s": "文章分类:%s",
- "Posts by %s": "%s 发布",
+ "Posts about %s": "关于文章 %s",
+ "Posts by %s": "文章有%s发布",
"Posts for year %s": "%s年文章",
- "Posts for {month} {day}, {year}": "{year}年{month}月{day}日文章",
- "Posts for {month} {year}": "{year}年{month}月文章",
- "Previous post": "前一篇",
+ "Posts for {month_day_year}": "{month_day_year}文章",
+ "Posts for {month_year}": "{month_year}文章",
+ "Previous post": "上一篇文章",
+ "Previous": "以前",
"Publication date": "发布日期",
"RSS feed": "RSS 源",
- "Read in English": "中文版",
- "Read more": "更多",
+ "Read in English": "阅读简体中文",
+ "Read more": "阅读更多",
"Skip to main content": "跳到主内容",
- "Source": "源代码",
+ "Source": "源文件",
"Subcategories:": "子类别:",
"Tags and Categories": "标签和分类",
"Tags": "标签",
- "Toggle navigation": "",
+ "Toggle navigation": "展开导航栏",
"Uncategorized": "未分类",
+ "Up": "向上",
"Updates": "更新",
"Write your page here.": "在这里书写你的页面。",
"Write your post here.": "在这里书写你的文章。",
"old posts, page %d": "旧文章页 %d",
"page %d": "第 %d 页",
+ "updated": "更新",
}
diff --git a/nikola/data/themes/base/messages/messages_zh_tw.py b/nikola/data/themes/base/messages/messages_zh_tw.py
index e6de0ff..ee4befd 100644
--- a/nikola/data/themes/base/messages/messages_zh_tw.py
+++ b/nikola/data/themes/base/messages/messages_zh_tw.py
@@ -1,11 +1,12 @@
# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
+"""Autogenerated file, do not edit. Submit translations on Transifex."""
MESSAGES = {
"%d min remaining to read": "尚餘 %d 分鐘",
"(active)": "(啟用)",
"Also available in:": "其他語言版本:",
"Archive": "彙整",
+ "Atom feed": "",
"Authors": "作者",
"Categories": "分類",
"Comments": "迴響",
@@ -14,6 +15,7 @@ MESSAGES = {
"More posts about %s": "更多 %s 的文章",
"Newer posts": "較新的文章",
"Next post": "下一篇",
+ "Next": "下一篇",
"No posts found.": "沒有找到文章。",
"Nothing found.": "沒有找到。",
"Older posts": "較舊的文章",
@@ -22,9 +24,10 @@ MESSAGES = {
"Posts about %s": "文章分類:%s",
"Posts by %s": "%s 發佈",
"Posts for year %s": "%s 年的文章",
- "Posts for {month} {day}, {year}": "{year}年{month}月{day}日的文章",
- "Posts for {month} {year}": "{year}年{month}月的文章",
+ "Posts for {month_day_year}": "{month_day_year}的文章",
+ "Posts for {month_year}": "{month_year}的文章",
"Previous post": "上一篇",
+ "Previous": "上一篇",
"Publication date": "發佈日期",
"RSS feed": "RSS 訂閱",
"Read in English": "繁體中文版",
@@ -36,9 +39,11 @@ MESSAGES = {
"Tags": "標籤",
"Toggle navigation": "切換導航",
"Uncategorized": "未分類",
+ "Up": "向上",
"Updates": "更新",
"Write your page here.": "從這裡開始編輯頁面",
"Write your post here.": "從這裡開始編輯文章",
"old posts, page %d": "舊文章,第 %d 頁",
"page %d": "第 %d 頁",
+ "updated": "",
}
diff --git a/nikola/data/themes/base/templates/archive.tmpl b/nikola/data/themes/base/templates/archive.tmpl
new file mode 100644
index 0000000..d6f107c
--- /dev/null
+++ b/nikola/data/themes/base/templates/archive.tmpl
@@ -0,0 +1 @@
+<%inherit file="list_post.tmpl"/>
diff --git a/nikola/data/themes/base/templates/archive_navigation_helper.tmpl b/nikola/data/themes/base/templates/archive_navigation_helper.tmpl
new file mode 100644
index 0000000..506629f
--- /dev/null
+++ b/nikola/data/themes/base/templates/archive_navigation_helper.tmpl
@@ -0,0 +1,27 @@
+## -*- coding: utf-8 -*-
+
+<%def name="archive_navigation()">
+%if 'archive_page' in pagekind:
+ %if has_archive_navigation:
+ <nav class="archivenav">
+ <ul class="pager">
+ %if previous_archive:
+ <li class="previous"><a href="${previous_archive}" rel="prev">${messages("Previous")}</a></li>
+ %else:
+ <li class="previous disabled"><a href="#" rel="prev">${messages("Previous")}</a></li>
+ % endif
+ %if up_archive:
+ <li class="up"><a href="${up_archive}" rel="up">${messages("Up")}</a></li>
+ %else:
+ <li class="up disabled"><a href="#" rel="up">${messages("Up")}</a></li>
+ %endif
+ %if next_archive:
+ <li class="next"><a href="${next_archive}" rel="next">${messages("Next")}</a></li>
+ %else:
+ <li class="next disabled"><a href="#" rel="next">${messages("Next")}</a></li>
+ %endif
+ </ul>
+ </nav>
+ %endif
+% endif
+</%def>
diff --git a/nikola/data/themes/base/templates/archiveindex.tmpl b/nikola/data/themes/base/templates/archiveindex.tmpl
index 8c58f13..eb4dd27 100644
--- a/nikola/data/themes/base/templates/archiveindex.tmpl
+++ b/nikola/data/themes/base/templates/archiveindex.tmpl
@@ -1,13 +1,20 @@
## -*- coding: utf-8 -*-
<%inherit file="index.tmpl"/>
+<%namespace name="archive_nav" file="archive_navigation_helper.tmpl" import="*"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%block name="extra_head">
${parent.extra_head()}
- %if len(translations) > 1 and generate_atom:
- %for language in sorted(translations):
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${archive_name} section (${language})" href="${_link("archive_atom", archive_name, language)}">
- %endfor
- %elif generate_atom:
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${archive_name} archive" href="${_link("archive_atom", archive_name)}">
- %endif
+ ${feeds_translations.head(archive_name, kind, rss_override=False)}
+</%block>
+
+<%block name="content_header">
+ <header>
+ <h1>${title|h}</h1>
+ ${archive_nav.archive_navigation()}
+ <div class="metadata">
+ ${feeds_translations.feed_link(archive, kind)}
+ ${feeds_translations.translation_link(kind)}
+ </div>
+ </header>
</%block>
diff --git a/nikola/data/themes/base/templates/author.tmpl b/nikola/data/themes/base/templates/author.tmpl
index 21d8d64..983f118 100644
--- a/nikola/data/themes/base/templates/author.tmpl
+++ b/nikola/data/themes/base/templates/author.tmpl
@@ -1,43 +1,28 @@
## -*- coding: utf-8 -*-
<%inherit file="list_post.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%block name="extra_head">
- ${parent.extra_head()}
- %if len(translations) > 1 and generate_rss:
- %for language in sorted(translations):
- <link rel="alternate" type="application/rss+xml" title="RSS for ${kind} ${author|h} (${language})" href="${_link(kind + "_rss", author, language)}">
- %endfor
- %elif generate_rss:
- <link rel="alternate" type="application/rss+xml" title="RSS for ${kind} ${author|h}" href="${_link(kind + "_rss", author)}">
- %endif
+ ${feeds_translations.head(author, kind, rss_override=False)}
</%block>
-
<%block name="content">
<article class="authorpage">
<header>
<h1>${title|h}</h1>
%if description:
- <p>${description}</p>
+ <p>${description}</p>
%endif
<div class="metadata">
- %if len(translations) > 1 and generate_rss:
- %for language in sorted(translations):
- <p class="feedlink">
- <a href="${_link(kind + "_rss", author, language)}" hreflang="${language}" type="application/rss+xml">${messages('RSS feed', language)} (${language})</a>&nbsp;
- </p>
- %endfor
- %elif generate_rss:
- <p class="feedlink"><a href="${_link(kind + "_rss", author)}" type="application/rss+xml">${messages('RSS feed')}</a></p>
- %endif
+ ${feeds_translations.feed_link(author, kind)}
</div>
</header>
%if posts:
- <ul class="postlist">
- % for post in posts:
- <li><time class="listdate" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time> <a href="${post.permalink()}" class="listtitle">${post.title()|h}</a></li>
- % endfor
- </ul>
+ <ul class="postlist">
+ % for post in posts:
+ <li><time class="listdate" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time> <a href="${post.permalink()}" class="listtitle">${post.title()|h}</a></li>
+ % endfor
+ </ul>
%endif
</article>
</%block>
diff --git a/nikola/data/themes/base/templates/authorindex.tmpl b/nikola/data/themes/base/templates/authorindex.tmpl
index 34cb20b..fe9d39e 100644
--- a/nikola/data/themes/base/templates/authorindex.tmpl
+++ b/nikola/data/themes/base/templates/authorindex.tmpl
@@ -1,13 +1,21 @@
## -*- coding: utf-8 -*-
<%inherit file="index.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="content_header">
+ <header>
+ <h1>${title|h}</h1>
+ %if description:
+ <p>${description}</p>
+ %endif
+ <div class="metadata">
+ ${feeds_translations.feed_link(author, kind)}
+ ${feeds_translations.translation_link(kind)}
+ </div>
+ </header>
+</%block>
<%block name="extra_head">
${parent.extra_head()}
- %if len(tranlations) > 1 and generate_atom:
- %for language in sorted(translations):
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${author|h} section (${language})" href="${_link(kind + "_atom", author, language)}">
- %endfor
- %elif generate_atom:
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${author|h} section" href="${_link("author" + "_atom", author)}">
- %endif
+ ${feeds_translations.head(author, kind, rss_override=False)}
</%block>
diff --git a/nikola/data/themes/base/templates/authors.tmpl b/nikola/data/themes/base/templates/authors.tmpl
index 141c560..8503bd4 100644
--- a/nikola/data/themes/base/templates/authors.tmpl
+++ b/nikola/data/themes/base/templates/authors.tmpl
@@ -1,10 +1,18 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="extra_head">
+ ${feeds_translations.head(kind=kind, feeds=False)}
+</%block>
<%block name="content">
<article class="authorindex">
%if items:
<h2>${messages("Authors")}</h2>
+ <div class="metadata">
+ ${feeds_translations.translation_link(kind)}
+ </div>
<ul class="postlist">
% for text, link in items:
% if text not in hidden_authors:
diff --git a/nikola/data/themes/base/templates/base.tmpl b/nikola/data/themes/base/templates/base.tmpl
index 2b0cbfd..f071c95 100644
--- a/nikola/data/themes/base/templates/base.tmpl
+++ b/nikola/data/themes/base/templates/base.tmpl
@@ -2,8 +2,8 @@
<%namespace name="base" file="base_helper.tmpl" import="*"/>
<%namespace name="header" file="base_header.tmpl" import="*"/>
<%namespace name="footer" file="base_footer.tmpl" import="*"/>
-<%namespace name="annotations" file="annotation_helper.tmpl"/>
${set_locale(lang)}
+### <html> tag is included by base.html_headstart
${base.html_headstart()}
<%block name="extra_head">
### Leave this block alone.
@@ -11,16 +11,29 @@ ${base.html_headstart()}
${template_hooks['extra_head']()}
</head>
<body>
-<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
+ <a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
<div id="container">
- ${header.html_header()}
- <main id="content">
+ ${header.html_header()}
+ <main id="content">
<%block name="content"></%block>
- </main>
- ${footer.html_footer()}
+ </main>
+ ${footer.html_footer()}
</div>
${base.late_load_js()}
+ % if date_fanciness != 0:
+ <!-- fancy dates -->
+ <script>
+ luxon.Settings.defaultLocale = "${luxon_locales[lang]}";
+ fancydates(${date_fanciness}, ${luxon_date_format});
+ </script>
+ <!-- end fancy dates -->
+ % endif
<%block name="extra_js"></%block>
+ <script>
+ baguetteBox.run('div#content', {
+ ignoreClass: 'islink',
+ captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
+ </script>
${body_end}
${template_hooks['body_end']()}
</body>
diff --git a/nikola/data/themes/base/templates/base_footer.tmpl b/nikola/data/themes/base/templates/base_footer.tmpl
index cd41d37..7e44c75 100644
--- a/nikola/data/themes/base/templates/base_footer.tmpl
+++ b/nikola/data/themes/base/templates/base_footer.tmpl
@@ -1,5 +1,4 @@
## -*- coding: utf-8 -*-
-<%namespace name="base" file="base_helper.tmpl" import="*"/>
<%def name="html_footer()">
%if content_footer:
diff --git a/nikola/data/themes/base/templates/base_header.tmpl b/nikola/data/themes/base/templates/base_header.tmpl
index 2ffcfee..b45744a 100644
--- a/nikola/data/themes/base/templates/base_header.tmpl
+++ b/nikola/data/themes/base/templates/base_header.tmpl
@@ -16,7 +16,7 @@
</%def>
<%def name="html_site_title()">
- <h1 id="brand"><a href="${abs_link(_link("root", None, lang))}" title="${blog_title|h}" rel="home">
+ <h1 id="brand"><a href="${_link("root", None, lang)}" title="${blog_title|h}" rel="home">
%if logo_url:
<img src="${logo_url}" alt="${blog_title|h}" id="logo">
%endif
@@ -30,13 +30,22 @@
<%def name="html_navigation_links()">
<nav id="menu">
<ul>
- %for url, text in navigation_links[lang]:
+ ${html_navigation_links_entries(navigation_links)}
+ ${html_navigation_links_entries(navigation_alt_links)}
+ ${template_hooks['menu']()}
+ ${template_hooks['menu_alt']()}
+ </ul>
+ </nav>
+</%def>
+
+<%def name="html_navigation_links_entries(navigation_links_source)">
+ %for url, text in navigation_links_source[lang]:
% if isinstance(url, tuple):
<li> ${text}
<ul>
%for suburl, text in url:
% if rel_link(permalink, suburl) == "#":
- <li class="active"><a href="${permalink}">${text} <span class="sr-only">${messages("(active)", lang)}</span></a></li>
+ <li class="active"><a href="${permalink}">${text}<span class="sr-only"> ${messages("(active)", lang)}</span></a></li>
%else:
<li><a href="${suburl}">${text}</a></li>
%endif
@@ -44,16 +53,12 @@
</ul>
% else:
% if rel_link(permalink, url) == "#":
- <li class="active"><a href="${permalink}">${text} <span class="sr-only">${messages("(active)", lang)}</span></a></li>
+ <li class="active"><a href="${permalink}">${text}<span class="sr-only"> ${messages("(active)", lang)}</span></a></li>
%else:
<li><a href="${url}">${text}</a></li>
%endif
% endif
%endfor
- ${template_hooks['menu']()}
- ${template_hooks['menu_alt']()}
- </ul>
- </nav>
</%def>
<%def name="html_translation_header()">
diff --git a/nikola/data/themes/base/templates/base_helper.tmpl b/nikola/data/themes/base/templates/base_helper.tmpl
index e2ffab2..18801ed 100644
--- a/nikola/data/themes/base/templates/base_helper.tmpl
+++ b/nikola/data/themes/base/templates/base_helper.tmpl
@@ -1,31 +1,25 @@
## -*- coding: utf-8 -*-
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%def name="html_headstart()">
<!DOCTYPE html>
<html \
-prefix='\
-%if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']):
-og: http://ogp.me/ns# article: http://ogp.me/ns/article# \
-%endif
-%if comment_system == 'facebook':
-fb: http://ogp.me/ns/fb#
-%endif
-' \
-%if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']):
-vocab="http://ogp.me/ns" \
-%endif
+ prefix='\
+ og: http://ogp.me/ns# article: http://ogp.me/ns/article# \
+ %if comment_system == 'facebook':
+ fb: http://ogp.me/ns/fb# \
+ %endif
+ ' \
+ vocab="http://ogp.me/ns" \
% if is_rtl:
-dir="rtl" \
+ dir="rtl" \
% endif
\
lang="${lang}">
<head>
<meta charset="utf-8">
- % if use_base_tag:
- <base href="${abs_link(permalink)}">
- % endif
%if description:
- <meta name="description" content="${description|h}">
+ <meta name="description" content="${description|h}">
%endif
<meta name="viewport" content="width=device-width">
%if title == blog_title:
@@ -35,8 +29,11 @@ lang="${lang}">
%endif
${html_stylesheets()}
- <meta content="${theme_color}" name="theme-color">
- ${html_feedlinks()}
+ <meta name="theme-color" content="${theme_color}">
+ % if meta_generator_tag:
+ <meta name="generator" content="Nikola (getnikola.com)">
+ % endif
+ ${feeds_translations.head(classification=None, kind='index', other=False)}
<link rel="canonical" href="${abs_link(permalink)}">
%if favicons:
@@ -56,29 +53,58 @@ lang="${lang}">
<link rel="next" href="${nextlink}" type="text/html">
%endif
- ${mathjax_config}
%if use_cdn:
- <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ <!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script><![endif]-->
%else:
- <!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5.js', lang)}"></script><![endif]-->
+ <!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5shiv-printshiv.min.js', lang, url_type)}"></script><![endif]-->
%endif
${extra_head_data}
</%def>
<%def name="late_load_js()">
+ % if use_bundles:
+ % if use_cdn:
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ <script src="/assets/js/all.js"></script>
+ % else:
+ <script src="/assets/js/all-nocdn.js"></script>
+ % endif
+ % else:
+ % if use_cdn:
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ % else:
+ <script src="/assets/js/baguetteBox.min.js"></script>
+ % endif
+ % endif
+ % if date_fanciness != 0:
+ % if date_fanciness == 2:
+ <script src="https://polyfill.io/v3/polyfill.js?features=Intl.RelativeTimeFormat.%7Elocale.${luxon_locales[lang]}"></script>
+ % endif
+ % if use_cdn:
+ <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js" integrity="sha256-OVk2fwTRcXYlVFxr/ECXsakqelJbOg5WCj1dXSIb+nU=" crossorigin="anonymous"></script>
+ % else:
+ <script src="/assets/js/luxon.min.js"></script>
+ % endif
+ % if not use_bundles:
+ <script src="/assets/js/fancydates.min.js"></script>
+ % endif
+ % endif
${social_buttons_code}
</%def>
<%def name="html_stylesheets()">
%if use_bundles:
%if use_cdn:
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" integrity="sha256-cLMYWYYutHkt+KpNqjg7NVkYSQ+E2VbrXsEvOqU7mL0=" crossorigin="anonymous">
<link href="/assets/css/all.css" rel="stylesheet" type="text/css">
%else:
<link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
%endif
%else:
- <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/baguetteBox.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/rst_base.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/nikola_rst.css" rel="stylesheet" type="text/css">
<link href="/assets/css/code.css" rel="stylesheet" type="text/css">
<link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
%if has_custom_css:
@@ -91,34 +117,16 @@ lang="${lang}">
% endif
</%def>
+### This function is deprecated; use feed_helper directly.
<%def name="html_feedlinks()">
- %if rss_link:
- ${rss_link}
- %elif generate_rss:
- %if len(translations) > 1:
- %for language in sorted(translations):
- <link rel="alternate" type="application/rss+xml" title="RSS (${language})" href="${_link('rss', None, language)}">
- %endfor
- %else:
- <link rel="alternate" type="application/rss+xml" title="RSS" href="${_link('rss', None)}">
- %endif
- %endif
- %if generate_atom:
- %if len(translations) > 1:
- %for language in sorted(translations):
- <link rel="alternate" type="application/atom+xml" title="Atom (${language})" href="${_link('index_atom', None, language)}">
- %endfor
- %else:
- <link rel="alternate" type="application/atom+xml" title="Atom" href="${_link('index_atom', None)}">
- %endif
- %endif
+ ${feeds_translations.head(classification=None, kind='index', other=False)}
</%def>
<%def name="html_translations()">
<ul class="translations">
%for langname in sorted(translations):
%if langname != lang:
- <li><a href="${abs_link(_link("root", None, langname))}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
+ <li><a href="${_link("root", None, langname)}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
%endif
%endfor
</ul>
diff --git a/nikola/data/themes/base/templates/comments_helper.tmpl b/nikola/data/themes/base/templates/comments_helper.tmpl
index 1459888..002499e 100644
--- a/nikola/data/themes/base/templates/comments_helper.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper.tmpl
@@ -1,63 +1,63 @@
## -*- coding: utf-8 -*-
<%namespace name="disqus" file="comments_helper_disqus.tmpl"/>
-<%namespace name="livefyre" file="comments_helper_livefyre.tmpl"/>
<%namespace name="intensedebate" file="comments_helper_intensedebate.tmpl"/>
<%namespace name="muut" file="comments_helper_muut.tmpl"/>
-<%namespace name="googleplus" file="comments_helper_googleplus.tmpl"/>
<%namespace name="facebook" file="comments_helper_facebook.tmpl"/>
<%namespace name="isso" file="comments_helper_isso.tmpl"/>
+<%namespace name="commento" file="comments_helper_commento.tmpl"/>
+<%namespace name="utterances" file="comments_helper_utterances.tmpl"/>
<%def name="comment_form(url, title, identifier)">
%if comment_system == 'disqus':
${disqus.comment_form(url, title, identifier)}
- % elif comment_system == 'livefyre':
- ${livefyre.comment_form(url, title, identifier)}
% elif comment_system == 'intensedebate':
${intensedebate.comment_form(url, title, identifier)}
% elif comment_system == 'muut':
${muut.comment_form(url, title, identifier)}
- % elif comment_system == 'googleplus':
- ${googleplus.comment_form(url, title, identifier)}
% elif comment_system == 'facebook':
${facebook.comment_form(url, title, identifier)}
% elif comment_system == 'isso':
${isso.comment_form(url, title, identifier)}
+ % elif comment_system == 'commento':
+ ${commento.comment_form(url, title, identifier)}
+ % elif comment_system == 'utterances':
+ ${utterances.comment_form(url, title, identifier)}
%endif
</%def>
<%def name="comment_link(link, identifier)">
%if comment_system == 'disqus':
${disqus.comment_link(link, identifier)}
- % elif comment_system == 'livefyre':
- ${livefyre.comment_link(link, identifier)}
% elif comment_system == 'intensedebate':
${intensedebate.comment_link(link, identifier)}
% elif comment_system == 'muut':
${muut.comment_link(link, identifier)}
- % elif comment_system == 'googleplus':
- ${googleplus.comment_link(link, identifier)}
% elif comment_system == 'facebook':
${facebook.comment_link(link, identifier)}
% elif comment_system == 'isso':
${isso.comment_link(link, identifier)}
+ % elif comment_system == 'commento':
+ ${commento.comment_link(link, identifier)}
+ % elif comment_system == 'utterances':
+ ${utterances.comment_link(link, identifier)}
%endif
</%def>
<%def name="comment_link_script()">
%if comment_system == 'disqus':
${disqus.comment_link_script()}
- % elif comment_system == 'livefyre':
- ${livefyre.comment_link_script()}
% elif comment_system == 'intensedebate':
${intensedebate.comment_link_script()}
% elif comment_system == 'muut':
${muut.comment_link_script()}
- % elif comment_system == 'googleplus':
- ${googleplus.comment_link_script()}
% elif comment_system == 'facebook':
${facebook.comment_link_script()}
% elif comment_system == 'isso':
${isso.comment_link_script()}
+ % elif comment_system == 'commento':
+ ${commento.comment_link_script()}
+ % elif comment_system == 'utterances':
+ ${utterances.comment_link_script()}
%endif
</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_commento.tmpl b/nikola/data/themes/base/templates/comments_helper_commento.tmpl
new file mode 100644
index 0000000..793a6d4
--- /dev/null
+++ b/nikola/data/themes/base/templates/comments_helper_commento.tmpl
@@ -0,0 +1,13 @@
+## -*- coding: utf-8 -*-
+<%def name="comment_form(url, title, identifier)">
+ <div id="commento"></div>
+
+ <script defer src="${comment_system_id}/js/commento.js"></script>
+</%def>
+
+<%def name="comment_link(link, identifier)">
+ <a href="${link}#commento">${messages("Comments")}</a>
+</%def>
+
+<%def name="comment_link_script()">
+</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_disqus.tmpl b/nikola/data/themes/base/templates/comments_helper_disqus.tmpl
index b842871..f17777c 100644
--- a/nikola/data/themes/base/templates/comments_helper_disqus.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper_disqus.tmpl
@@ -32,7 +32,7 @@
<%def name="comment_link(link, identifier)">
%if comment_system_id:
- <a href="${link}#disqus_thread" data-disqus-identifier="${identifier}">Comments</a>
+ <a href="${link}#disqus_thread" data-disqus-identifier="${identifier}">${messages("Comments")}</a>
%endif
</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_googleplus.tmpl b/nikola/data/themes/base/templates/comments_helper_googleplus.tmpl
deleted file mode 100644
index 5a5c4d7..0000000
--- a/nikola/data/themes/base/templates/comments_helper_googleplus.tmpl
+++ /dev/null
@@ -1,17 +0,0 @@
-## -*- coding: utf-8 -*-
-<%def name="comment_form(url, title, identifier)">
-<script src="https://apis.google.com/js/plusone.js"></script>
-<div class="g-comments"
- data-href="${url}"
- data-first_party_property="BLOGGER"
- data-view_type="FILTERED_POSTMOD">
-</div>
-</%def>
-
-<%def name="comment_link(link, identifier)">
-<div class="g-commentcount" data-href="${link}"></div>
-<script src="https://apis.google.com/js/plusone.js"></script>
-</%def>
-
-<%def name="comment_link_script()">
-</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_intensedebate.tmpl b/nikola/data/themes/base/templates/comments_helper_intensedebate.tmpl
index c47b6c7..0a51328 100644
--- a/nikola/data/themes/base/templates/comments_helper_intensedebate.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper_intensedebate.tmpl
@@ -6,7 +6,7 @@ var idcomments_post_id = "${identifier}";
var idcomments_post_url = "${url}";
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
-<script src='http://www.intensedebate.com/js/genericCommentWrapperV2.js'></script>
+<script src="https://www.intensedebate.com/js/genericCommentWrapperV2.js"></script>
</script>
</%def>
@@ -17,7 +17,7 @@ var idcomments_acct = '${comment_system_id}';
var idcomments_post_id = "${identifier}";
var idcomments_post_url = "${link}";
</script>
-<script src="http://www.intensedebate.com/js/genericLinkWrapperV2.js"></script>
+<script src="https://www.intensedebate.com/js/genericLinkWrapperV2.js"></script>
</a>
</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_isso.tmpl b/nikola/data/themes/base/templates/comments_helper_isso.tmpl
index 95f93ae..c733bbe 100644
--- a/nikola/data/themes/base/templates/comments_helper_isso.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper_isso.tmpl
@@ -1,20 +1,26 @@
## -*- coding: utf-8 -*-
<%def name="comment_form(url, title, identifier)">
%if comment_system_id:
- <div data-title="${title|u}" id="isso-thread"></div>
- <script src="${comment_system_id}js/embed.min.js" data-isso="${comment_system_id}"></script>
+ <div data-title="${title|h}" id="isso-thread"></div>
+ <script src="${comment_system_id}js/embed.min.js" data-isso="${comment_system_id}" data-isso-lang="${lang}"
+ % if isso_config:
+ % for k, v in isso_config.items():
+ data-isso-${k}="${v}"
+ % endfor
+ % endif
+ ></script>
%endif
</%def>
<%def name="comment_link(link, identifier)">
%if comment_system_id:
- <a href="${link}#isso-thread">Comments</a>
+ <a href="${link}#isso-thread">${messages("Comments")}</a>
%endif
</%def>
<%def name="comment_link_script()">
%if comment_system_id and 'index' in pagekind:
- <script src="${comment_system_id}js/count.min.js" data-isso="${comment_system_id}"></script>
+ <script src="${comment_system_id}js/count.min.js" data-isso="${comment_system_id}" data-isso-lang="${lang}"></script>
%endif
</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_livefyre.tmpl b/nikola/data/themes/base/templates/comments_helper_livefyre.tmpl
deleted file mode 100644
index 68d99e5..0000000
--- a/nikola/data/themes/base/templates/comments_helper_livefyre.tmpl
+++ /dev/null
@@ -1,33 +0,0 @@
-## -*- coding: utf-8 -*-
-<%def name="comment_form(url, title, identifier)">
-<div id="livefyre-comments"></div>
-<script src="http://zor.livefyre.com/wjs/v3.0/javascripts/livefyre.js"></script>
-<script>
-(function () {
- var articleId = "${identifier}";
- fyre.conv.load({}, [{
- el: 'livefyre-comments',
- network: "livefyre.com",
- siteId: "${comment_system_id}",
- articleId: articleId,
- signed: false,
- collectionMeta: {
- articleId: articleId,
- url: fyre.conv.load.makeCollectionUrl(),
- }
- }], function() {});
-}());
-</script>
-</%def>
-
-<%def name="comment_link(link, identifier)">
- <a href="${link}">
- <span class="livefyre-commentcount" data-lf-site-id="${comment_system_id}" data-lf-article-id="${identifier}">
- 0 Comments
- </span>
-</%def>
-
-
-<%def name="comment_link_script()">
-<script src="http://zor.livefyre.com/wjs/v1.0/javascripts/CommentCount.js"></script>
-</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_mustache.tmpl b/nikola/data/themes/base/templates/comments_helper_mustache.tmpl
deleted file mode 100644
index 593d0aa..0000000
--- a/nikola/data/themes/base/templates/comments_helper_mustache.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-## -*- coding: utf-8 -*-
-<%namespace name="comments" file="comments_helper.tmpl"/>
-% if not post.meta('nocomments'):
- ${comments.comment_form(post.permalink(absolute=True), post.title(), post.base_path)}
-% endif
diff --git a/nikola/data/themes/base/templates/comments_helper_utterances.tmpl b/nikola/data/themes/base/templates/comments_helper_utterances.tmpl
new file mode 100644
index 0000000..9b68917
--- /dev/null
+++ b/nikola/data/themes/base/templates/comments_helper_utterances.tmpl
@@ -0,0 +1,23 @@
+## -*- coding: utf-8 -*-
+<%def name="comment_form(url, title, identifier)">
+ %if comment_system_id:
+ <div data-title="${title|h}" id="utterances-thread"></div>
+ <script src="https://utteranc.es/client.js" repo="${comment_system_id}"
+ % if utterances_config:
+ % for k, v in utterances_config.items():
+ ${k}="${v}"
+ % endfor
+ % endif
+ ></script>
+ %endif
+</%def>
+
+<%def name="comment_link(link, identifier)">
+ %if comment_system_id:
+ <a href="${link}#utterances-thread">${messages("Comments")}</a>
+ %endif
+</%def>
+
+
+<%def name="comment_link_script()">
+</%def>
diff --git a/nikola/data/themes/base/templates/feeds_translations_helper.tmpl b/nikola/data/themes/base/templates/feeds_translations_helper.tmpl
new file mode 100644
index 0000000..10e704d
--- /dev/null
+++ b/nikola/data/themes/base/templates/feeds_translations_helper.tmpl
@@ -0,0 +1,124 @@
+## -*- coding: utf-8 -*-
+
+<%def name="_head_feed_link(link_type, link_name, link_postfix, classification, kind, language)">
+ % if len(translations) > 1:
+ <link rel="alternate" type="${link_type}" title="${link_name|h} (${language})" hreflang="${language}" href="${_link(kind + '_' + link_postfix, classification, language)}">
+ % else:
+ <link rel="alternate" type="${link_type}" title="${link_name|h}" hreflang="${language}" href="${_link(kind + '_' + link_postfix, classification, language)}">
+ % endif
+</%def>
+
+<%def name="_html_feed_link(link_type, link_name, link_postfix, classification, kind, language, name=None)">
+ % if len(translations) > 1:
+ % if name and kind != "archive" and kind != "author":
+ <a href="${_link(kind + '_' + link_postfix, classification, language)}" hreflang="${language}" type="${link_type}">${messages(link_name, language)} (${name|h}, ${language})</a>
+ % else:
+ <a href="${_link(kind + '_' + link_postfix, classification, language)}" hreflang="${language}" type="${link_type}">${messages(link_name, language)} (${language})</a>
+ % endif
+ % else:
+ % if name and kind != "archive" and kind != "author":
+ <a href="${_link(kind + '_' + link_postfix, classification, language)}" hreflang="${language}" type="${link_type}">${messages(link_name, language)} (${name|h})</a>
+ % else:
+ <a href="${_link(kind + '_' + link_postfix, classification, language)}" hreflang="${language}" type="${link_type}">${messages(link_name, language)}</a>
+ % endif
+ % endif
+</%def>
+
+<%def name="_html_translation_link(classification, kind, language, name=None)">
+ % if name and kind != "archive" and kind != "author":
+ <a href="${_link(kind, classification, language)}" hreflang="${language}" rel="alternate">${messages("LANGUAGE", language)} (${name|h})</a>
+ % else:
+ <a href="${_link(kind, classification, language)}" hreflang="${language}" rel="alternate">${messages("LANGUAGE", language)}</a>
+ % endif
+</%def>
+
+<%def name="_head_rss(classification=None, kind='index', rss_override=True)">
+ % if rss_link and rss_override:
+ ${rss_link}
+ % endif
+ % if generate_rss and not (rss_link and rss_override) and kind != 'archive':
+ % if len(translations) > 1 and has_other_languages and classification and kind != 'index':
+ % for language, classification, name in all_languages:
+ <link rel="alternate" type="application/rss+xml" title="RSS for ${kind} ${name|h} (${language})" hreflang="${language}" href="${_link(kind + "_rss", classification, language)}">
+ % endfor
+ % else:
+ % for language in translations_feedorder:
+ % if (classification or classification == '') and kind != 'index':
+ ${_head_feed_link('application/rss+xml', 'RSS for ' + kind + ' ' + classification, 'rss', classification, kind, language)}
+ % else:
+ ${_head_feed_link('application/rss+xml', 'RSS', 'rss', classification, 'index', language)}
+ % endif
+ % endfor
+ % endif
+ % endif
+</%def>
+
+<%def name="_head_atom(classification=None, kind='index')">
+ % if generate_atom:
+ % if len(translations) > 1 and has_other_languages and classification and kind != 'index':
+ % for language, classification, name in all_languages:
+ <link rel="alternate" type="application/atom+xml" title="Atom for ${kind} ${name|h} (${language})" hreflang="${language}" href="${_link(kind + "_atom", classification, language)}">
+ % endfor
+ % else:
+ % for language in translations_feedorder:
+ % if (classification or classification == '') and kind != 'index':
+ ${_head_feed_link('application/atom+xml', 'Atom for ' + kind + ' ' + classification, 'atom', classification, kind, language)}
+ % else:
+ ${_head_feed_link('application/atom+xml', 'Atom', 'atom', classification, 'index', language)}
+ % endif
+ % endfor
+ % endif
+ % endif
+</%def>
+
+## Handles both feeds and translations
+<%def name="head(classification=None, kind='index', feeds=True, other=True, rss_override=True, has_no_feeds=False)">
+ % if feeds and not has_no_feeds:
+ ${_head_rss(classification, 'index' if (kind == 'archive' and rss_override) else kind, rss_override)}
+ ${_head_atom(classification, kind)}
+ % endif
+ % if other and has_other_languages and other_languages:
+ % for language, classification, _ in other_languages:
+ <link rel="alternate" hreflang="${language}" href="${_link(kind, classification, language)}">
+ % endfor
+ % endif
+</%def>
+
+<%def name="feed_link(classification, kind)">
+ % if generate_atom or generate_rss:
+ % if len(translations) > 1 and has_other_languages and kind != 'index':
+ % for language, classification, name in all_languages:
+ <p class="feedlink">
+ % if generate_atom:
+ ${_html_feed_link('application/atom+xml', 'Atom feed', 'atom', classification, kind, language, name)}
+ % endif
+ % if generate_rss and kind != 'archive':
+ ${_html_feed_link('application/rss+xml', 'RSS feed', 'rss', classification, kind, language, name)}
+ % endif
+ </p>
+ % endfor
+ % else:
+ % for language in translations_feedorder:
+ <p class="feedlink">
+ % if generate_atom:
+ ${_html_feed_link('application/atom+xml', 'Atom feed', 'atom', classification, kind, language)}
+ % endif
+ % if generate_rss and kind != 'archive':
+ ${_html_feed_link('application/rss+xml', 'RSS feed', 'rss', classification, kind, language)}
+ % endif
+ </p>
+ % endfor
+ % endif
+ % endif
+</%def>
+
+<%def name="translation_link(kind)">
+ % if has_other_languages and other_languages:
+ <div class="translationslist translations">
+ <h3 class="translationslist-intro">${messages("Also available in:")}</h3>
+ % for language, classification, name in other_languages:
+ <p>${_html_translation_link(classification, kind, language, name)}</p>
+ % endfor
+ </div>
+ % endif
+</%def>
diff --git a/nikola/data/themes/base/templates/gallery.tmpl b/nikola/data/themes/base/templates/gallery.tmpl
index f9bbd1b..fef3a86 100644
--- a/nikola/data/themes/base/templates/gallery.tmpl
+++ b/nikola/data/themes/base/templates/gallery.tmpl
@@ -1,11 +1,12 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
-<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
+<%namespace name="ui" file="ui_helper.tmpl"/>
+<%namespace name="post_helper" file="post_helper.tmpl"/>
<%block name="sourcelink"></%block>
<%block name="content">
- ${ui.bar(crumbs)}
+ ${ui.breadcrumbs(crumbs)}
%if title:
<h1>${title|h}</h1>
%endif
@@ -15,21 +16,39 @@
</p>
%endif
%if folders:
- <ul>
- % for folder, ftitle in folders:
- <li><a href="${folder}"><i
- class="icon-folder-open"></i>&nbsp;${ftitle|h}</a></li>
- % endfor
- </ul>
- %endif
- %if photo_array:
- <ul class="thumbnails">
- %for image in photo_array:
- <li><a href="${image['url']}" class="thumbnail image-reference" title="${image['title']}">
- <img src="${image['url_thumb']}" alt="${image['title']|h}" /></a>
- %endfor
- </ul>
- %endif
+ % if galleries_use_thumbnail:
+ % for (folder, ftitle, fpost) in folders:
+ <div class="thumnbnail-container">
+ <a href="${folder}" class="thumbnail image-reference" title="${ftitle|h}">
+ % if fpost and fpost.previewimage:
+ <img src="${fpost.previewimage}" alt="${ftitle|h}" loading="lazy" style="max-width:${thumbnail_size}px; max-height:${thumbnail_size}px;" />
+ % else:
+ <div style="height: ${thumbnail_size}px; width: ${thumbnail_size}px; background-color: #eee;"></div>
+ % endif
+ <p class="thumbnail-caption">${ftitle|h}</p>
+ </a>
+ </div>
+ % endfor
+ % else:
+ <ul>
+ % for folder, ftitle in folders:
+ <li><a href="${folder}">📂&nbsp;${ftitle|h}</a></li>
+ % endfor
+ </ul>
+ % endif
+ % endif
+
+<div id="gallery_container"></div>
+%if photo_array:
+<noscript>
+<ul class="thumbnails">
+ %for image in photo_array:
+ <li><a href="${image['url']}" class="thumbnail image-reference" title="${image['title']|h}">
+ <img src="${image['url_thumb']}" alt="${image['title']|h}" loading="lazy" /></a>
+ %endfor
+</ul>
+</noscript>
+%endif
%if site_has_comments and enable_comments:
${comments.comment_form(None, permalink, title)}
%endif
@@ -38,4 +57,35 @@
<%block name="extra_head">
${parent.extra_head()}
<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
+<style type="text/css">
+ #gallery_container {
+ position: relative;
+ }
+ .image-block {
+ position: absolute;
+ }
+</style>
+%if len(translations) > 1:
+ %for langname in translations.keys():
+ %if langname != lang:
+ <link rel="alternate" hreflang="${langname}" href="${_link('gallery', gallery_path, langname)}">
+ %endif
+ %endfor
+%endif
+<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
+%if post:
+ ${post_helper.open_graph_metadata(post)}
+ ${post_helper.twitter_card_information(post)}
+%endif
+</%block>
+
+<%block name="extra_js">
+<script src="/assets/js/justified-layout.min.js"></script>
+<script src="/assets/js/gallery.min.js"></script>
+<script>
+var jsonContent = ${photo_array_json};
+var thumbnailSize = ${thumbnail_size};
+renderGallery(jsonContent, thumbnailSize);
+window.addEventListener('resize', function(){renderGallery(jsonContent, thumbnailSize)});
+</script>
</%block>
diff --git a/nikola/data/themes/base/templates/index.tmpl b/nikola/data/themes/base/templates/index.tmpl
index f74d2e4..b8e4f8c 100644
--- a/nikola/data/themes/base/templates/index.tmpl
+++ b/nikola/data/themes/base/templates/index.tmpl
@@ -1,6 +1,9 @@
## -*- coding: utf-8 -*-
<%namespace name="helper" file="index_helper.tmpl"/>
+<%namespace name="math" file="math_helper.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
+<%namespace name="pagination" file="pagination_helper.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%inherit file="base.tmpl"/>
<%block name="extra_head">
@@ -8,27 +11,45 @@
% if posts and (permalink == '/' or permalink == '/' + index_file):
<link rel="prefetch" href="${posts[0].permalink()}" type="text/html">
% endif
+ ${math.math_styles_ifposts(posts)}
</%block>
<%block name="content">
-<%block name="content_header"></%block>
+<%block name="content_header">
+ ${feeds_translations.translation_link(kind)}
+</%block>
% if 'main_index' in pagekind:
${front_index_header}
% endif
+% if page_links:
+ ${pagination.page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed)}
+% endif
<div class="postindex">
% for post in posts:
- <article class="h-entry post-${post.meta('type')}">
+ <article class="h-entry post-${post.meta('type')}" itemscope="itemscope" itemtype="http://schema.org/Article">
<header>
<h1 class="p-name entry-title"><a href="${post.permalink()}" class="u-url">${post.title()|h}</a></h1>
<div class="metadata">
- <p class="byline author vcard"><span class="byline-name fn">
- % if author_pages_generated:
+ <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
+ % if author_pages_generated and multiple_authors_per_post:
+ % for author in post.authors():
+ <a href="${_link('author', author)}">${author|h}</a>
+ % endfor
+ % elif author_pages_generated:
<a href="${_link('author', post.author())}">${post.author()|h}</a>
% else:
${post.author()|h}
% endif
</span></p>
- <p class="dateline"><a href="${post.permalink()}" rel="bookmark"><time class="published dt-published" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time></a></p>
+ <p class="dateline">
+ <a href="${post.permalink()}" rel="bookmark">
+ <time class="published dt-published" datetime="${post.formatted_date('webiso')}" itemprop="datePublished" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time>
+ % if post.updated and post.updated != post.date:
+ <span class="updated"> (${messages("updated")}
+ <time class="dt-updated" datetime="${post.formatted_updated('webiso')}" itemprop="dateUpdated" title="${post.formatted_updated(date_format)|h}">${post.formatted_updated(date_format)|h}</time>)</span>
+ % endif
+ </a>
+ </p>
% if not post.meta('nocomments') and site_has_comments:
<p class="commentline">${comments.comment_link(post.permalink(), post._base_path)}
% endif
@@ -47,5 +68,5 @@
</div>
${helper.html_pager()}
${comments.comment_link_script()}
-${helper.mathjax_script(posts)}
+${math.math_scripts_ifposts(posts)}
</%block>
diff --git a/nikola/data/themes/base/templates/index_helper.tmpl b/nikola/data/themes/base/templates/index_helper.tmpl
index 0e98016..e400e3b 100644
--- a/nikola/data/themes/base/templates/index_helper.tmpl
+++ b/nikola/data/themes/base/templates/index_helper.tmpl
@@ -1,4 +1,5 @@
## -*- coding: utf-8 -*-
+<%namespace name="math" file="math_helper.tmpl"/>
<%def name="html_pager()">
%if prevlink or nextlink:
<nav class="postindexpager">
@@ -18,33 +19,7 @@
%endif
</%def>
+### This function is deprecated; use math_helper directly.
<%def name="mathjax_script(posts)">
- %if any(post.is_mathjax for post in posts):
- %if use_katex:
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/contrib/auto-render.min.js"></script>
- % if katex_auto_render:
- <script>
- renderMathInElement(document.body,
- {
- ${katex_auto_render}
- }
- );
- </script>
- % else:
- <script>
- renderMathInElement(document.body);
- </script>
- % endif
- %else:
- <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>
- % if mathjax_config:
- ${mathjax_config}
- % else:
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
- </script>
- % endif
- %endif
- %endif
+ ${math.math_scripts_ifposts(posts)}
</%def>
diff --git a/nikola/data/themes/base/templates/list.tmpl b/nikola/data/themes/base/templates/list.tmpl
index 5a8843d..ca6c421 100644
--- a/nikola/data/themes/base/templates/list.tmpl
+++ b/nikola/data/themes/base/templates/list.tmpl
@@ -1,11 +1,19 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
+<%namespace name="archive_nav" file="archive_navigation_helper.tmpl" import="*"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="extra_head">
+ ${feeds_translations.head(kind=kind, rss_override=False, has_no_feeds=has_no_feeds)}
+</%block>
<%block name="content">
<article class="listpage">
<header>
<h1>${title|h}</h1>
</header>
+ ${archive_nav.archive_navigation()}
+ ${feeds_translations.translation_link(kind)}
%if items:
<ul class="postlist">
% for text, link, count in items:
diff --git a/nikola/data/themes/base/templates/list_post.tmpl b/nikola/data/themes/base/templates/list_post.tmpl
index bc52385..8cd9336 100644
--- a/nikola/data/themes/base/templates/list_post.tmpl
+++ b/nikola/data/themes/base/templates/list_post.tmpl
@@ -1,11 +1,19 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
+<%namespace name="archive_nav" file="archive_navigation_helper.tmpl" import="*"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="extra_head">
+ ${feeds_translations.head(kind=kind, rss_override=False)}
+</%block>
<%block name="content">
<article class="listpage">
<header>
<h1>${title|h}</h1>
</header>
+ ${archive_nav.archive_navigation()}
+ ${feeds_translations.translation_link(kind)}
%if posts:
<ul class="postlist">
% for post in posts:
diff --git a/nikola/data/themes/base/templates/listing.tmpl b/nikola/data/themes/base/templates/listing.tmpl
index fae7607..ef2dfd6 100644
--- a/nikola/data/themes/base/templates/listing.tmpl
+++ b/nikola/data/themes/base/templates/listing.tmpl
@@ -1,15 +1,15 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
-<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
+<%namespace name="ui" file="ui_helper.tmpl"/>
<%block name="content">
-${ui.bar(crumbs)}
+${ui.breadcrumbs(crumbs)}
%if folders or files:
<ul>
% for name in folders:
- <li><a href="${name|u}"><i class="icon-folder-open"></i> ${name|h}</a>
+ <li><a href="${name|h}" class="listing-folder">${name|h}</a>
% endfor
% for name in files:
- <li><a href="${name|u}.html"><i class="icon-file"></i> ${name|h}</a>
+ <li><a href="${name|h}.html" class="listing-file">${name|h}</a>
% endfor
</ul>
%endif
@@ -22,5 +22,3 @@ ${ui.bar(crumbs)}
${code}
% endif
</%block>
-
-
diff --git a/nikola/data/themes/base/templates/math_helper.tmpl b/nikola/data/themes/base/templates/math_helper.tmpl
new file mode 100644
index 0000000..961b7ce
--- /dev/null
+++ b/nikola/data/themes/base/templates/math_helper.tmpl
@@ -0,0 +1,69 @@
+### Note: at present, MathJax and KaTeX do not respect the USE_CDN configuration option
+<%def name="math_scripts()">
+ %if use_katex:
+ <script src="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.js" integrity="sha384-9Nhn55MVVN0/4OFx7EE5kpFBPsEMZxKTCnA+4fqDmg12eCTqGi6+BB2LjY8brQxJ" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"></script>
+ % if katex_auto_render:
+ <script>
+ renderMathInElement(document.body,
+ {
+ ${katex_auto_render}
+ }
+ );
+ </script>
+ % else:
+ <script>
+ renderMathInElement(document.body,
+ {
+ delimiters: [
+ {left: "$$", right: "$$", display: true},
+ {left: "\\[", right: "\\]", display: true},
+ {left: "\\begin{equation*}", right: "\\end{equation*}", display: true},
+ {left: "\\(", right: "\\)", display: false}
+ ]
+ }
+ );
+ </script>
+ % endif
+ %else:
+### Note: given the size of MathJax; nikola will retrieve MathJax from a CDN regardless of use_cdn configuration
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" integrity="sha384-3lJUsx1TJHt7BA4udB5KPnDrlkO8T6J6v/op7ui0BbCjvZ9WqV4Xm6DTP6kQ/iBH" crossorigin="anonymous"></script>
+ % if mathjax_config:
+ ${mathjax_config}
+ % else:
+ <script type="text/x-mathjax-config">
+ MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
+ </script>
+ % endif
+ %endif
+</%def>
+
+<%def name="math_styles()">
+ % if use_katex:
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.css" integrity="sha384-yFRtMMDnQtDRO8rLpMIKrtPCD5jdktao2TV19YiZYWMDkUR5GQZR/NOVTdquEx1j" crossorigin="anonymous">
+ % endif
+</%def>
+
+<%def name="math_scripts_ifpost(post)">
+ %if post.has_math:
+ ${math_scripts()}
+ %endif
+</%def>
+
+<%def name="math_scripts_ifposts(posts)">
+ %if any(post.has_math for post in posts):
+ ${math_scripts()}
+ %endif
+</%def>
+
+<%def name="math_styles_ifpost(post)">
+ %if post.has_math:
+ ${math_styles()}
+ %endif
+</%def>
+
+<%def name="math_styles_ifposts(posts)">
+ %if any(post.has_math for post in posts):
+ ${math_styles()}
+ %endif
+</%def>
diff --git a/nikola/data/themes/base/templates/page.tmpl b/nikola/data/themes/base/templates/page.tmpl
new file mode 100644
index 0000000..b2cd756
--- /dev/null
+++ b/nikola/data/themes/base/templates/page.tmpl
@@ -0,0 +1 @@
+<%inherit file="story.tmpl"/>
diff --git a/nikola/data/themes/base/templates/pagination_helper.tmpl b/nikola/data/themes/base/templates/pagination_helper.tmpl
new file mode 100644
index 0000000..91c1115
--- /dev/null
+++ b/nikola/data/themes/base/templates/pagination_helper.tmpl
@@ -0,0 +1,16 @@
+## -*- coding: utf-8 -*-
+<%def name="page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed, surrounding=5)">
+<div class="page-navigation">
+ % for i, link in enumerate(page_links):
+ % if abs(i - current_page) <= surrounding or i == 0 or i == len(page_links) - 1:
+ % if i == current_page:
+ <span class="current-page">${i+1}</span>
+ % else:
+ <a href="${page_links[i]}">${i+1}</a>
+ % endif
+ % elif i == current_page - surrounding - 1 or i == current_page + surrounding + 1:
+ <span class="ellipsis">…</span>
+ % endif
+ % endfor
+</div>
+</%def>
diff --git a/nikola/data/themes/base/templates/post.tmpl b/nikola/data/themes/base/templates/post.tmpl
index da616bf..1f2f0a4 100644
--- a/nikola/data/themes/base/templates/post.tmpl
+++ b/nikola/data/themes/base/templates/post.tmpl
@@ -2,16 +2,14 @@
<%namespace name="helper" file="post_helper.tmpl"/>
<%namespace name="pheader" file="post_header.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
+<%namespace name="math" file="math_helper.tmpl"/>
<%inherit file="base.tmpl"/>
<%block name="extra_head">
${parent.extra_head()}
% if post.meta('keywords'):
- <meta name="keywords" content="${post.meta('keywords')|h}">
+ <meta name="keywords" content="${smartjoin(', ', post.meta('keywords'))|h}">
% endif
- %if post.description():
- <meta name="description" content="${post.description()|h}">
- %endif
<meta name="author" content="${post.author()|h}">
%if post.prev_post:
<link rel="prev" href="${post.prev_post.permalink()}" title="${post.prev_post.title()|h}" type="text/html">
@@ -25,6 +23,7 @@
${helper.open_graph_metadata(post)}
${helper.twitter_card_information(post)}
${helper.meta_translations(post)}
+ ${math.math_styles_ifpost(post)}
</%block>
<%block name="content">
@@ -45,7 +44,7 @@
${comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path)}
</section>
% endif
- ${helper.mathjax_script(post)}
+ ${math.math_scripts_ifpost(post)}
</article>
${comments.comment_link_script()}
</%block>
diff --git a/nikola/data/themes/base/templates/post_header.tmpl b/nikola/data/themes/base/templates/post_header.tmpl
index 480c36a..617a156 100644
--- a/nikola/data/themes/base/templates/post_header.tmpl
+++ b/nikola/data/themes/base/templates/post_header.tmpl
@@ -23,7 +23,7 @@
<%def name="html_sourcelink()">
% if show_sourcelink:
- <p class="sourceline"><a href="${post.source_link()}" id="sourcelink">${messages("Source")}</a></p>
+ <p class="sourceline"><a href="${post.source_link()}" class="sourcelink">${messages("Source")}</a></p>
% endif
</%def>
@@ -31,14 +31,26 @@
<header>
${html_title()}
<div class="metadata">
- <p class="byline author vcard"><span class="byline-name fn">
- % if author_pages_generated:
- <a href="${_link('author', post.author())}">${post.author()|h}</a>
+ <p class="byline author vcard p-author h-card"><span class="byline-name fn p-name" itemprop="author">
+ % if author_pages_generated and multiple_authors_per_post:
+ % for author in post.authors():
+ <a class="u-url" href="${_link('author', author)}">${author|h}</a>
+ % endfor
+ % elif author_pages_generated:
+ <a class="u-url" href="${_link('author', post.author())}">${post.author()|h}</a>
% else:
${post.author()|h}
% endif
</span></p>
- <p class="dateline"><a href="${post.permalink()}" rel="bookmark"><time class="published dt-published" datetime="${post.formatted_date('webiso')}" itemprop="datePublished" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time></a></p>
+ <p class="dateline">
+ <a href="${post.permalink()}" rel="bookmark">
+ <time class="published dt-published" datetime="${post.formatted_date('webiso')}" itemprop="datePublished" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time>
+ % if post.updated and post.updated != post.date:
+ <span class="updated"> (${messages("updated")}
+ <time class="updated dt-updated" datetime="${post.formatted_updated('webiso')}" itemprop="dateUpdated" title="${post.formatted_updated(date_format)|h}">${post.formatted_updated(date_format)|h}</time>)</span>
+ % endif
+ </a>
+ </p>
% if not post.meta('nocomments') and site_has_comments:
<p class="commentline">${comments.comment_link(post.permalink(), post._base_path)}
% endif
@@ -46,9 +58,6 @@
% if post.meta('link'):
<p class="linkline"><a href="${post.meta('link')}">${messages("Original site")}</a></p>
% endif
- %if post.description():
- <meta name="description" itemprop="description" content="${post.description()|h}">
- %endif
</div>
${html_translations(post)}
</header>
diff --git a/nikola/data/themes/base/templates/post_helper.tmpl b/nikola/data/themes/base/templates/post_helper.tmpl
index 47bf9b3..9ae4489 100644
--- a/nikola/data/themes/base/templates/post_helper.tmpl
+++ b/nikola/data/themes/base/templates/post_helper.tmpl
@@ -1,4 +1,5 @@
## -*- coding: utf-8 -*-
+<%namespace name="math" file="math_helper.tmpl"/>
<%def name="meta_translations(post)">
%if len(translations) > 1:
@@ -40,31 +41,29 @@
</%def>
<%def name="open_graph_metadata(post)">
-%if use_open_graph:
- <meta property="og:site_name" content="${blog_title|h}">
- <meta property="og:title" content="${post.title()[:70]|h}">
- <meta property="og:url" content="${abs_link(permalink)}">
- %if post.description():
+<meta property="og:site_name" content="${blog_title|h}">
+<meta property="og:title" content="${post.title()[:70]|h}">
+<meta property="og:url" content="${abs_link(permalink)}">
+%if post.description():
<meta property="og:description" content="${post.description()[:200]|h}">
- %else:
+%else:
<meta property="og:description" content="${post.text(strip_html=True)[:200]|h}">
- %endif
- %if post.previewimage:
+%endif
+%if post.previewimage:
<meta property="og:image" content="${url_replacer(permalink, post.previewimage, lang, 'absolute')}">
- %endif
- <meta property="og:type" content="article">
+%endif
+<meta property="og:type" content="article">
### Will only work with Pintrest and breaks everywhere else who expect a [Facebook] URI.
### %if post.author():
### <meta property="article:author" content="${post.author()|h}">
### %endif
- %if post.date.isoformat():
+%if post.date.isoformat():
<meta property="article:published_time" content="${post.formatted_date('webiso')}">
- %endif
- %if post.tags:
- %for tag in post.tags:
- <meta property="article:tag" content="${tag|h}">
- %endfor
- %endif
+%endif
+%if post.tags:
+ %for tag in post.tags:
+ <meta property="article:tag" content="${tag|h}">
+ %endfor
%endif
</%def>
@@ -84,33 +83,7 @@
%endif
</%def>
+### This function is deprecated; use math_helper directly.
<%def name="mathjax_script(post)">
- %if post.is_mathjax:
- %if use_katex:
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/contrib/auto-render.min.js"></script>
- % if katex_auto_render:
- <script>
- renderMathInElement(document.body,
- {
- ${katex_auto_render}
- }
- );
- </script>
- % else:
- <script>
- renderMathInElement(document.body);
- </script>
- % endif
- %else:
- <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>
- % if mathjax_config:
- ${mathjax_config}
- % else:
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});
- </script>
- % endif
- %endif
- %endif
+ ${math.math_scripts_ifpost(post)}
</%def>
diff --git a/nikola/data/themes/base/templates/sectionindex.tmpl b/nikola/data/themes/base/templates/sectionindex.tmpl
deleted file mode 100644
index 7fb4f1e..0000000
--- a/nikola/data/themes/base/templates/sectionindex.tmpl
+++ /dev/null
@@ -1,21 +0,0 @@
-## -*- coding: utf-8 -*-
-<%inherit file="index.tmpl"/>
-
-<%block name="extra_head">
- ${parent.extra_head()}
- % if generate_atom:
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${posts[0].section_name()|h} section" href="${_link('section_index_atom', posts[0].section_slug())}">
- % endif
-</%block>
-
-<%block name="content">
-<div class="sectionindex">
- <header>
- <h2><a href="${_link('section_index', posts[0].section_slug())}">${title|h}</a></h2>
- % if generate_atom:
- <p class="feedlink"><a href="${_link('section_index_atom', posts[0].section_slug())}" type="application/atom+xml">${messages('Updates')}</a></p>
- % endif
- </header>
- ${parent.content()}
-</div>
-</%block>
diff --git a/nikola/data/themes/base/templates/slides.tmpl b/nikola/data/themes/base/templates/slides.tmpl
deleted file mode 100644
index 048fb7e..0000000
--- a/nikola/data/themes/base/templates/slides.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<%block name="content">
-<div id="${carousel_id}" class="carousel slide">
- <ol class="carousel-indicators">
- % for i in range(len(slides_content)):
- % if i == 0:
- <li data-target="#${carousel_id}" data-slide-to="${i}" class="active"></li>
- % else:
- <li data-target="#${carousel_id}" data-slide-to="${i}"></li>
- % endif
- % endfor
- </ol>
- <div class="carousel-inner">
- % for i, image in enumerate(slides_content):
- % if i == 0:
- <div class="item active"><img src="${image}" alt="" style="margin: 0 auto 0 auto;"></div>
- % else:
- <div class="item"><img src="${image}" alt="" style="margin: 0 auto 0 auto;"></div>
- % endif
- % endfor
- </div>
- <a class="left carousel-control" href="#${carousel_id}" data-slide="prev">&lsaquo;</a>
- <a class="right carousel-control" href="#${carousel_id}" data-slide="next">&rsaquo;</a>
-</div>
-</%block>
diff --git a/nikola/data/themes/base/templates/story.tmpl b/nikola/data/themes/base/templates/story.tmpl
index b8fb7ed..aeac04f 100644
--- a/nikola/data/themes/base/templates/story.tmpl
+++ b/nikola/data/themes/base/templates/story.tmpl
@@ -2,6 +2,7 @@
<%namespace name="helper" file="post_helper.tmpl"/>
<%namespace name="pheader" file="post_header.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
+<%namespace name="math" file="math_helper.tmpl"/>
<%inherit file="post.tmpl"/>
<%block name="content">
@@ -19,6 +20,6 @@
${comments.comment_form(post.permalink(absolute=True), post.title(), post.base_path)}
</section>
%endif
- ${helper.mathjax_script(post)}
+ ${math.math_scripts_ifpost(post)}
</article>
</%block>
diff --git a/nikola/data/themes/base/templates/tag.tmpl b/nikola/data/themes/base/templates/tag.tmpl
index 50c5bf2..ac40876 100644
--- a/nikola/data/themes/base/templates/tag.tmpl
+++ b/nikola/data/themes/base/templates/tag.tmpl
@@ -1,24 +1,17 @@
## -*- coding: utf-8 -*-
<%inherit file="list_post.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%block name="extra_head">
- ${parent.extra_head()}
- %if len(translations) > 1 and generate_rss:
- %for language in sorted(translations):
- <link rel="alternate" type="application/rss+xml" title="RSS for ${kind} ${tag|h} (${language})" href="${_link(kind + "_rss", tag, language)}">
- %endfor
- %elif generate_rss:
- <link rel="alternate" type="application/rss+xml" title="RSS for ${kind} ${tag|h}" href="${_link(kind + "_rss", tag)}">
- %endif
+ ${feeds_translations.head(tag, kind, rss_override=False)}
</%block>
-
<%block name="content">
<article class="tagpage">
<header>
<h1>${title|h}</h1>
%if description:
- <p>${description}</p>
+ <p>${description}</p>
%endif
%if subcategories:
${messages('Subcategories:')}
@@ -29,23 +22,16 @@
</ul>
%endif
<div class="metadata">
- %if len(translations) > 1 and generate_rss:
- %for language in sorted(translations):
- <p class="feedlink">
- <a href="${_link(kind + "_rss", tag, language)}" hreflang="${language}" type="application/rss+xml">${messages('RSS feed', language)} (${language})</a>&nbsp;
- </p>
- %endfor
- %elif generate_rss:
- <p class="feedlink"><a href="${_link(kind + "_rss", tag)}" type="application/rss+xml">${messages('RSS feed')}</a></p>
- %endif
+ ${feeds_translations.feed_link(tag, kind=kind)}
</div>
+ ${feeds_translations.translation_link(kind)}
</header>
%if posts:
- <ul class="postlist">
- % for post in posts:
- <li><time class="listdate" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time> <a href="${post.permalink()}" class="listtitle">${post.title()|h}<a></li>
- % endfor
- </ul>
+ <ul class="postlist">
+ % for post in posts:
+ <li><time class="listdate" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time> <a href="${post.permalink()}" class="listtitle">${post.title()|h}<a></li>
+ % endfor
+ </ul>
%endif
</article>
</%block>
diff --git a/nikola/data/themes/base/templates/tagindex.tmpl b/nikola/data/themes/base/templates/tagindex.tmpl
index c3c51b0..232d093 100644
--- a/nikola/data/themes/base/templates/tagindex.tmpl
+++ b/nikola/data/themes/base/templates/tagindex.tmpl
@@ -1,5 +1,6 @@
## -*- coding: utf-8 -*-
<%inherit file="index.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%block name="content_header">
<header>
@@ -15,16 +16,14 @@
%endfor
</ul>
%endif
+ <div class="metadata">
+ ${feeds_translations.feed_link(tag, kind)}
+ ${feeds_translations.translation_link(kind)}
+ </div>
</header>
</%block>
<%block name="extra_head">
${parent.extra_head()}
- %if len(translations) > 1 and generate_atom:
- %for language in sorted(translations):
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${tag|h} section (${language})" href="${_link(kind + "_atom", tag, language)}">
- %endfor
- %elif generate_atom:
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${tag|h} section" href="${_link("tag" + "_atom", tag)}">
- %endif
+ ${feeds_translations.head(tag, kind, rss_override=False)}
</%block>
diff --git a/nikola/data/themes/base/templates/tags.tmpl b/nikola/data/themes/base/templates/tags.tmpl
index 6c329d9..c54559a 100644
--- a/nikola/data/themes/base/templates/tags.tmpl
+++ b/nikola/data/themes/base/templates/tags.tmpl
@@ -1,10 +1,18 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="extra_head">
+ ${feeds_translations.head(kind=kind, feeds=False)}
+</%block>
<%block name="content">
<article class="tagindex">
<header>
<h1>${title|h}</h1>
+ <div class="metadata">
+ ${feeds_translations.translation_link(kind)}
+ </div>
</header>
% if cat_items:
% if items:
diff --git a/nikola/data/themes/base/templates/crumbs.tmpl b/nikola/data/themes/base/templates/ui_helper.tmpl
index 49c5e1e..173027c 100644
--- a/nikola/data/themes/base/templates/crumbs.tmpl
+++ b/nikola/data/themes/base/templates/ui_helper.tmpl
@@ -1,6 +1,5 @@
## -*- coding: utf-8 -*-
-
-<%def name="bar(crumbs)">
+<%def name="breadcrumbs(crumbs)">
%if crumbs:
<nav class="breadcrumbs">
<ul class="breadcrumb">
diff --git a/nikola/data/themes/bootblog4-jinja/README.md b/nikola/data/themes/bootblog4-jinja/README.md
new file mode 100644
index 0000000..6a9226e
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/README.md
@@ -0,0 +1,6 @@
+This is a theme based on Bootstrap 4 and the [blog example](https://getbootstrap.com/docs/4.0/examples/blog/) by @mdo.
+
+Note that unlike previous versions of Bootstrap, icon fonts are not built-in.
+You can use Font Awesome for this.
+
+This theme **does not** support Bootswatch font/color schemes.
diff --git a/nikola/data/themes/bootblog4-jinja/assets/css/bootblog.css b/nikola/data/themes/bootblog4-jinja/assets/css/bootblog.css
new file mode 120000
index 0000000..c8bd66a
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/assets/css/bootblog.css
@@ -0,0 +1 @@
+../../../bootblog4/assets/css/bootblog.css \ No newline at end of file
diff --git a/nikola/data/themes/bootblog4-jinja/bootblog4-jinja.theme b/nikola/data/themes/bootblog4-jinja/bootblog4-jinja.theme
new file mode 100644
index 0000000..8a5e55f
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/bootblog4-jinja.theme
@@ -0,0 +1,12 @@
+[Theme]
+engine = jinja
+parent = bootstrap4-jinja
+author = The Nikola Contributors
+author_url = https://getnikola.com/
+license = MIT
+based_on = Bootstrap 4 <http://getbootstrap.com/>, Bootstrap 4 blog example <http://getbootstrap.com/docs/4.0/examples/blog/>
+tags = bootstrap
+
+[Family]
+family = bootblog4
+mako-version = bootstrap4
diff --git a/nikola/data/themes/bootblog4-jinja/bundles b/nikola/data/themes/bootblog4-jinja/bundles
new file mode 120000
index 0000000..94a0160
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/bundles
@@ -0,0 +1 @@
+../bootblog4/bundles \ No newline at end of file
diff --git a/nikola/data/themes/bootblog4-jinja/templates/base.tmpl b/nikola/data/themes/bootblog4-jinja/templates/base.tmpl
new file mode 100644
index 0000000..0adf447
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/templates/base.tmpl
@@ -0,0 +1,104 @@
+{# -*- coding: utf-8 -*- #}
+{% import 'base_helper.tmpl' as base with context %}
+{% import 'annotation_helper.tmpl' as notes with context %}
+{{ set_locale(lang) }}
+{{ base.html_headstart() }}
+{% block extra_head %}
+{# Leave this block alone. #}
+{% endblock %}
+{{ template_hooks['extra_head']() }}
+</head>
+<body>
+<a href="#content" class="sr-only sr-only-focusable">{{ messages("Skip to main content") }}</a>
+
+<!-- Header and menu bar -->
+<div class="container">
+ <header class="blog-header py-3">
+ <div class="row nbb-header align-items-center">
+ <div class="col-md-3 col-xs-2 col-sm-2" style="width: auto;">
+ <button class="navbar-toggler navbar-light bg-light nbb-navbar-toggler" type="button" data-toggle="collapse" data-target=".bs-nav-collapsible" aria-controls="bs-navbar" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="collapse bs-nav-collapsible bootblog4-search-form-holder">
+ {{ search_form }}
+ </div>
+ </div>
+ <div class="col-md-6 col-xs-10 col-sm-10 bootblog4-brand" style="width: auto;">
+ <a class="navbar-brand blog-header-logo text-dark" href="{{ _link("root", None, lang) }}">
+ {% if logo_url %}
+ <img src="{{ logo_url }}" alt="{{ blog_title|e }}" id="logo" class="d-inline-block align-top">
+ {% endif %}
+
+ {% if show_blog_title %}
+ <span id="blog-title">{{ blog_title|e }}</span>
+ {% endif %}
+ </a>
+ </div>
+ <div class="col-md-3 justify-content-end align-items-center bs-nav-collapsible collapse flex-collapse bootblog4-right-nav">
+ <nav class="navbar navbar-light bg-white">
+ <ul class="navbar-nav bootblog4-right-nav">
+ {{ base.html_navigation_links_entries(navigation_alt_links) }}
+ {% block belowtitle %}
+ {% if translations|length > 1 %}
+ {{ base.html_translations() }}
+ {% endif %}
+ {% endblock %}
+ {% block sourcelink %}{% endblock %}
+ {{ template_hooks['menu_alt']() }}
+ </ul></nav>
+ </div>
+ </div>
+</header>
+
+<nav class="navbar navbar-expand-md navbar-light bg-white static-top">
+ <div class="collapse navbar-collapse bs-nav-collapsible" id="bs-navbar">
+ <ul class="navbar-nav nav-fill d-flex w-100">
+ {{ base.html_navigation_links_entries(navigation_links) }}
+ {{ template_hooks['menu']() }}
+ </ul>
+ </div><!-- /.navbar-collapse -->
+</nav>
+{% block before_content %}{% endblock %}
+</div>
+
+<div class="container" id="content" role="main">
+ <div class="body-content">
+ {% if theme_config.get('sidebar') %}
+ <div class="row"><div class="col-md-8 blog-main">
+ {% endif %}
+ <!--Body content-->
+ {{ template_hooks['page_header']() }}
+ {% block extra_header %}{% endblock %}
+ {% block content %}{% endblock %}
+ <!--End of body content-->
+ {% if theme_config.get('sidebar') %}
+ </div><aside class="col-md-4 blog-sidebar">{{ theme_config.get('sidebar') }}</aside></div>
+ {% endif %}
+
+ <footer id="footer">
+ {{ content_footer }}
+ {{ template_hooks['page_footer']() }}
+ {% block extra_footer %}{% endblock %}
+ </footer>
+ </div>
+</div>
+
+{{ base.late_load_js() }}
+ {% if date_fanciness != 0 %}
+ <!-- fancy dates -->
+ <script>
+ luxon.Settings.defaultLocale = "{{ luxon_locales[lang] }}";
+ fancydates({{ date_fanciness }}, {{ luxon_date_format }});
+ </script>
+ <!-- end fancy dates -->
+ {% endif %}
+ {% block extra_js %}{% endblock %}
+ <script>
+ baguetteBox.run('div#content', {
+ ignoreClass: 'islink',
+ captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
+ </script>
+{{ body_end }}
+{{ template_hooks['body_end']() }}
+</body>
+</html>
diff --git a/nikola/data/themes/bootblog4-jinja/templates/base_helper.tmpl b/nikola/data/themes/bootblog4-jinja/templates/base_helper.tmpl
new file mode 100644
index 0000000..0b74696
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/templates/base_helper.tmpl
@@ -0,0 +1,169 @@
+{# -*- coding: utf-8 -*- #}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% macro html_headstart() %}
+<!DOCTYPE html>
+<html
+
+prefix='
+og: http://ogp.me/ns# article: http://ogp.me/ns/article#
+{% if comment_system == 'facebook' %}
+fb: http://ogp.me/ns/fb#
+{% endif %}
+'
+{% if is_rtl %}
+dir="rtl"
+{% endif %}
+
+lang="{{ lang }}">
+ <head>
+ <meta charset="utf-8">
+ {% if description %}
+ <meta name="description" content="{{ description|e }}">
+ {% endif %}
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ {% if title == blog_title %}
+ <title>{{ blog_title|e }}</title>
+ {% else %}
+ <title>{{ title|e }} | {{ blog_title|e }}</title>
+ {% endif %}
+
+ {{ html_stylesheets() }}
+ <meta name="theme-color" content="{{ theme_color }}">
+ {% if meta_generator_tag %}
+ <meta name="generator" content="Nikola (getnikola.com)">
+ {% endif %}
+ {{ html_feedlinks() }}
+ <link rel="canonical" href="{{ abs_link(permalink) }}">
+
+ {% if favicons %}
+ {% for name, file, size in favicons %}
+ <link rel="{{ name }}" href="{{ file }}" sizes="{{ size }}"/>
+ {% endfor %}
+ {% endif %}
+
+ {% if comment_system == 'facebook' %}
+ <meta property="fb:app_id" content="{{ comment_system_id }}">
+ {% endif %}
+
+ {% if prevlink %}
+ <link rel="prev" href="{{ prevlink }}" type="text/html">
+ {% endif %}
+ {% if nextlink %}
+ <link rel="next" href="{{ nextlink }}" type="text/html">
+ {% endif %}
+
+ {% if use_cdn %}
+ <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ {% else %}
+ <!--[if lt IE 9]><script src="{{ url_replacer(permalink, '/assets/js/html5.js', lang, url_type) }}"></script><![endif]-->
+ {% endif %}
+
+ {{ extra_head_data }}
+{% endmacro %}
+
+{% macro late_load_js() %}
+ {% if use_cdn %}
+ <script src="http://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ {% endif %}
+ {% if use_bundles and use_cdn %}
+ <script src="/assets/js/all.js"></script>
+ {% elif use_bundles %}
+ <script src="/assets/js/all-nocdn.js"></script>
+ {% else %}
+ {% if not use_cdn %}
+ <script src="/assets/js/jquery.min.js"></script>
+ <script src="/assets/js/popper.min.js"></script>
+ <script src="/assets/js/bootstrap.min.js"></script>
+ <script src="/assets/js/baguetteBox.min.js"></script>
+ {% endif %}
+ {% endif %}
+ {% if date_fanciness != 0 %}
+ {% if date_fanciness == 2 %}
+ <script src="https://polyfill.io/v3/polyfill.js?features=Intl.RelativeTimeFormat.%7Elocale.{{ luxon_locales[lang] }}"></script>
+ {% endif %}
+ {% if use_cdn %}
+ <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js" integrity="sha256-OVk2fwTRcXYlVFxr/ECXsakqelJbOg5WCj1dXSIb+nU=" crossorigin="anonymous"></script>
+ {% else %}
+ <script src="/assets/js/luxon.min.js"></script>
+ {% endif %}
+ {% if not use_bundles %}
+ <script src="/assets/js/fancydates.min.js"></script>
+ {% endif %}
+ {% endif %}
+ {{ social_buttons_code }}
+{% endmacro %}
+
+
+{% macro html_stylesheets() %}
+ {% if use_cdn %}
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" integrity="sha256-cLMYWYYutHkt+KpNqjg7NVkYSQ+E2VbrXsEvOqU7mL0=" crossorigin="anonymous">
+ {% endif %}
+ {% if use_bundles and use_cdn %}
+ <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
+ {% elif use_bundles %}
+ <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
+ {% else %}
+ {% if not use_cdn %}
+ <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/baguetteBox.min.css" rel="stylesheet" type="text/css">
+ {% endif %}
+ <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/bootblog.css" rel="stylesheet" type="text/css">
+ {% if has_custom_css %}
+ <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
+ {% endif %}
+ {% endif %}
+ {% if needs_ipython_css %}
+ <link href="/assets/css/ipython.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
+ {% endif %}
+ <link href="https://fonts.googleapis.com/css?family=Playfair+Display:700,900" rel="stylesheet">
+{% endmacro %}
+
+{% macro html_navigation_links() %}
+ {{ html_navigation_links_entries(navigation_links) }}
+{% endmacro %}
+
+{% macro html_navigation_links_entries(navigation_links_source) %}
+ {% for url, text in navigation_links_source[lang] %}
+ {% if isinstance(url, tuple) %}
+ <li class="nav-item dropdown"><a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ text }}</a>
+ <div class="dropdown-menu">
+ {% for suburl, text in url %}
+ {% if rel_link(permalink, suburl) == "#" %}
+ <a href="{{ permalink }}" class="dropdown-item active">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a>
+ {% else %}
+ <a href="{{ suburl }}" class="dropdown-item">{{ text }}</a>
+ {% endif %}
+ {% endfor %}
+ </div>
+ {% else %}
+ {% if rel_link(permalink, url) == "#" %}
+ <li class="nav-item active"><a href="{{ permalink }}" class="nav-link">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a>
+ {% else %}
+ <li class="nav-item"><a href="{{ url }}" class="nav-link">{{ text }}</a>
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+{% endmacro %}
+
+
+
+{% macro html_feedlinks() %}
+ {{ feeds_translations.head(classification=None, kind='index', other=False) }}
+{% endmacro %}
+
+{% macro html_translations() %}
+ {% for langname in translations|sort %}
+ {% if langname != lang %}
+ <li class="nav-item"><a href="{{ _link("root", None, langname) }}" rel="alternate" hreflang="{{ langname }}" class="nav-link">{{ messages("LANGUAGE", langname) }}</a></li>
+ {% endif %}
+ {% endfor %}
+{% endmacro %}
diff --git a/nikola/data/themes/bootblog4-jinja/templates/index.tmpl b/nikola/data/themes/bootblog4-jinja/templates/index.tmpl
new file mode 100644
index 0000000..efc4e58
--- /dev/null
+++ b/nikola/data/themes/bootblog4-jinja/templates/index.tmpl
@@ -0,0 +1,150 @@
+{# -*- coding: utf-8 -*- #}
+{% import 'index_helper.tmpl' as helper with context %}
+{% import 'math_helper.tmpl' as math with context %}
+{% import 'comments_helper.tmpl' as comments with context %}
+{% import 'pagination_helper.tmpl' as pagination with context %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+{% extends 'base.tmpl' %}
+
+{% block extra_head %}
+ {{ super() }}
+ {% if posts and (permalink == '/' or permalink == '/' + index_file) %}
+ <link rel="prefetch" href="{{ posts[0].permalink() }}" type="text/html">
+ {% endif %}
+ {{ math.math_styles_ifposts(posts) }}
+{% endblock %}
+
+{% block content %}
+ {% block content_header %}
+ {{ feeds_translations.translation_link(kind) }}
+ {% endblock %}
+ {% if 'main_index' in pagekind %}
+ {{ front_index_header }}
+ {% endif %}
+ {% if page_links %}
+ {{ pagination.page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed) }}
+ {% endif %}
+ <div class="postindex">
+ {% for post in posts %}
+ <article class="h-entry post-{{ post.meta('type') }}" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <header>
+ <h1 class="p-name entry-title"><a href="{{ post.permalink() }}" class="u-url">{{ post.title()|e }}</a></h1>
+ <div class="metadata">
+ <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
+ {% if author_pages_generated and multiple_authors_per_post %}
+ {% for author in post.authors() %}
+ <a href="{{ _link('author', author) }}">{{ author|e }}</a>
+ {% endfor %}
+ {% elif author_pages_generated %}
+ <a href="{{ _link('author', post.author()) }}">{{ post.author()|e }}</a>
+ {% else %}
+ {{ post.author()|e }}
+ {% endif %}
+ </span></p>
+ <p class="dateline">
+ <a href="{{ post.permalink() }}" rel="bookmark">
+ <time class="published dt-published" datetime="{{ post.formatted_date('webiso') }}" itemprop="datePublished" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time>
+ {% if post.updated and post.updated != post.date %}
+ <span class="updated"> ({{ messages("updated") }}
+ <time class="dt-updated" datetime="{{ post.formatted_updated('webiso') }}" itemprop="dateUpdated" title="{{ post.formatted_updated(date_format)|e }}">{{ post.formatted_updated(date_format)|e }}</time>)</span>
+ {% endif %}
+ </a>
+ </p>
+ {% if not post.meta('nocomments') and site_has_comments %}
+ <p class="commentline">{{ comments.comment_link(post.permalink(), post._base_path) }}
+ {% endif %}
+ </div>
+ </header>
+ {% if index_teasers %}
+ <div class="p-summary entry-summary">
+ {{ post.text(teaser_only=True) }}
+ </div>
+ {% else %}
+ <div class="e-content entry-content">
+ {{ post.text(teaser_only=False) }}
+ </div>
+ {% endif %}
+ </article>
+ {% endfor %}
+ </div>
+ {{ helper.html_pager() }}
+ {{ comments.comment_link_script() }}
+ {{ math.math_scripts_ifposts(posts) }}
+{% endblock %}
+
+{% block before_content %}
+ {% if 'main_index' in pagekind and is_frontmost_index and featured and (theme_config.get('featured_large') or theme_config.get('featured_small')) %}
+ {% if theme_config.get('featured_on_mobile') %}
+ <div class="d-block">
+ {% else %}
+ <div class="d-none d-md-block">
+ {% endif %}
+ {% if featured and theme_config.get('featured_large') %}
+ <div class="jumbotron p-0 text-white rounded bg-dark">
+ <div class="row bootblog4-featured-jumbotron-row">
+ <div class="col-md-6 p-3 p-md-4 pr-0 h-md-250 bootblog4-featured-text">
+ <h1 class="display-4 font-italic"><a class="text-white" href="{{ featured[0].permalink() }}">{{ featured[0].title() }}</a></h1>
+ {% if featured[0].previewimage %}
+ <div class="lead my-3 mb-0">{{ featured[0].text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True)) }}</div>
+ </div>
+ {% if theme_config.get('featured_large_image_on_mobile') %}
+ <div class="col-md-6 p-0 h-md-250 text-right">
+ {% else %}
+ <div class="col-md-6 p-0 h-md-250 text-right d-none d-md-block">
+ {% endif %}
+ <img class="bootblog4-featured-large-image" src="{{ featured[0].previewimage }}" alt="{{ featured.pop(0).title() }}">
+ </div>
+ {% else %}
+ <div class="lead my-3 mb-0">{{ featured.pop(0).text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True)) }}</div>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ {% endif %}
+
+ {% if featured and theme_config.get('featured_small') %}
+ <div class="row mb-2">
+ {% if featured|length == 1 %}
+ <div class="col-md-12">
+ {% else %}
+ <div class="col-md-6">
+ {% endif %}
+ <div class="card flex-md-row mb-4 box-shadow h-md-250">
+ <div class="card-body d-flex flex-column align-items-start">
+ <h3 class="mb-0">
+ <a class="text-dark" href="{{ featured[0].permalink() }}">{{ featured[0].title() }}</a>
+ </h3>
+ {% if featured[0].previewimage %}
+ <div class="card-text mb-auto bootblog4-featured-text">{{ featured[0].text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True)) }}</div>
+ </div>
+ <img class="card-img-right flex-auto d-none d-lg-block" src="{{ featured[0].previewimage }}" alt="{{ featured.pop(0).title() }}">
+ {% else %}
+ <div class="card-text mb-auto bootblog4-featured-text">{{ featured.pop(0).text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True)) }}</div>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+
+ {% if featured %}
+ <div class="col-md-6">
+ <div class="card flex-md-row mb-4 box-shadow h-md-250">
+ <div class="card-body d-flex flex-column align-items-start">
+ <h3 class="mb-0">
+ <a class="text-dark" href="{{ featured[0].permalink() }}">{{ featured[0].title() }}</a>
+ </h3>
+ {% if featured[0].previewimage %}
+ <div class="card-text mb-auto bootblog4-featured-text">{{ featured[0].text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True)) }}</div>
+ </div>
+ <img class="card-img-right flex-auto d-none d-lg-block" src="{{ featured[0].previewimage }}" alt="{{ featured.pop(0).title() }}">
+ {% else %}
+ <div class="card-text mb-auto bootblog4-featured-text">{{ featured.pop(0).text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True)) }}</div>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ {% endif %}
+ </div>
+ {% endif %}
+ </div>
+{% endif %}
+{% endblock %}
diff --git a/nikola/data/themes/bootblog4/README.md b/nikola/data/themes/bootblog4/README.md
new file mode 100644
index 0000000..6a9226e
--- /dev/null
+++ b/nikola/data/themes/bootblog4/README.md
@@ -0,0 +1,6 @@
+This is a theme based on Bootstrap 4 and the [blog example](https://getbootstrap.com/docs/4.0/examples/blog/) by @mdo.
+
+Note that unlike previous versions of Bootstrap, icon fonts are not built-in.
+You can use Font Awesome for this.
+
+This theme **does not** support Bootswatch font/color schemes.
diff --git a/nikola/data/themes/bootblog4/assets/css/bootblog.css b/nikola/data/themes/bootblog4/assets/css/bootblog.css
new file mode 100644
index 0000000..96d4b92
--- /dev/null
+++ b/nikola/data/themes/bootblog4/assets/css/bootblog.css
@@ -0,0 +1,225 @@
+/* stylelint-disable selector-list-comma-newline-after */
+
+.blog-header {
+ line-height: 1;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+.blog-header-logo {
+ font-family: "Playfair Display", Georgia, "Times New Roman", serif;
+ font-size: 2.25rem;
+}
+
+.blog-header-logo:hover {
+ text-decoration: none;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: "Playfair Display", Georgia, "Times New Roman", serif;
+}
+
+.display-4 {
+ font-size: 2.5rem;
+}
+@media (min-width: 768px) {
+ .display-4 {
+ font-size: 3rem;
+ }
+}
+
+.nav-scroller {
+ position: relative;
+ z-index: 2;
+ height: 2.75rem;
+ overflow-y: hidden;
+}
+
+.nav-scroller .nav {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ padding-bottom: 1rem;
+ margin-top: -1px;
+ overflow-x: auto;
+ text-align: center;
+ white-space: nowrap;
+ -webkit-overflow-scrolling: touch;
+}
+
+.nav-scroller .nav-link {
+ padding-top: .75rem;
+ padding-bottom: .75rem;
+ font-size: .875rem;
+}
+
+.card-img-right {
+ height: 100%;
+ border-radius: 0 3px 3px 0;
+}
+
+.flex-auto {
+ -ms-flex: 0 0 auto;
+ -webkit-box-flex: 0;
+ flex: 0 0 auto;
+}
+
+.h-150 { height: 150px; }
+@media (min-width: 768px) {
+ .h-md-150 { height: 150px; }
+}
+
+.h-250 { height: 250px; }
+@media (min-width: 768px) {
+ .h-md-250 { height: 250px; }
+}
+
+.border-top { border-top: 1px solid #e5e5e5; }
+.border-bottom { border-bottom: 1px solid #e5e5e5; }
+
+.box-shadow { box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); }
+
+/*
+ * Blog name and description
+ */
+.blog-title {
+ margin-bottom: 0;
+ font-size: 2rem;
+ font-weight: 400;
+}
+.blog-description {
+ font-size: 1.1rem;
+ color: #999;
+}
+
+@media (min-width: 40em) {
+ .blog-title {
+ font-size: 3.5rem;
+ }
+}
+
+/* Pagination */
+.blog-pagination {
+ margin-bottom: 4rem;
+}
+.blog-pagination > .btn {
+ border-radius: 2rem;
+}
+
+/*
+ * Blog posts
+ */
+article {
+ margin-bottom: 4rem;
+}
+article:last-child {
+ margin-bottom: 0;
+}
+.entry-title {
+ margin-bottom: .25rem;
+ font-size: 2.5rem;
+}
+article .metadata {
+ margin-bottom: 1.25rem;
+ color: #999;
+}
+
+/*
+ * Footer
+ */
+.blog-footer {
+ padding: 2.5rem 0;
+ color: #999;
+ text-align: center;
+ background-color: #f9f9f9;
+ border-top: .05rem solid #e5e5e5;
+}
+.blog-footer p:last-child {
+ margin-bottom: 0;
+}
+
+@media (min-width: 576px) {
+ .nbb-navbar-toggler {
+ display: none;
+ }
+
+ .nbb-header {
+ -webkit-box-pack: justify!important;
+ -ms-flex-pack: justify!important;
+ justify-content: space-between!important;
+ }
+}
+
+/* Various fixes that make this theme look better for Nikola's needs */
+.navbar-brand {
+ padding: 0;
+ white-space: initial;
+}
+
+.bootblog4-featured-large-image {
+ height: 100%;
+ border-top-right-radius: .25rem!important;
+ border-bottom-right-radius: .25rem!important;
+}
+
+.bootblog4-featured-jumbotron-row {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.bootblog4-right-nav {
+ flex-direction: row;
+}
+
+.bootblog4-right-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem;
+}
+
+.bootblog4-featured-text {
+ overflow: auto;
+}
+/* extend the mobile appearance to `sm`, because otherwise weird things happen */
+@media (min-width: 576px) {
+ .nbb-navbar-toggler {
+ display: block;
+ }
+}
+
+@media (max-width: 767px) {
+ .bootblog4-right-nav {
+ margin-top: 1rem;
+ }
+
+ .bootblog4-search-form-holder {
+ position: absolute;
+ top: 2.75rem;
+ }
+
+ .bootblog4-search-form-holder input.form-control {
+ width: 6rem;
+ }
+
+ .bootblog4-brand {
+ text-align: left;
+ }
+}
+
+@media (min-width: 768px) {
+ .nbb-navbar-toggler {
+ display: none;
+ }
+
+ .flex-collapse {
+ display: flex !important;
+ }
+
+ .bootblog4-search-form-holder {
+ display: block !important;
+ }
+
+ .bootblog4-brand {
+ text-align: center;
+ }
+}
diff --git a/nikola/data/themes/bootblog4/bootblog4.theme b/nikola/data/themes/bootblog4/bootblog4.theme
new file mode 100644
index 0000000..46db4ea
--- /dev/null
+++ b/nikola/data/themes/bootblog4/bootblog4.theme
@@ -0,0 +1,12 @@
+[Theme]
+engine = mako
+parent = bootstrap4
+author = The Nikola Contributors
+author_url = https://getnikola.com/
+license = MIT
+based_on = Bootstrap 4 <http://getbootstrap.com/>, Bootstrap 4 blog example <http://getbootstrap.com/docs/4.0/examples/blog/>
+tags = bootstrap
+
+[Family]
+family = bootblog4
+jinja_version = bootblog4-jinja
diff --git a/nikola/data/themes/bootblog4/bundles b/nikola/data/themes/bootblog4/bundles
new file mode 100644
index 0000000..76ffd4b
--- /dev/null
+++ b/nikola/data/themes/bootblog4/bundles
@@ -0,0 +1,28 @@
+; css bundles
+assets/css/all-nocdn.css=
+ bootstrap.min.css,
+ rst_base.css,
+ nikola_rst.css,
+ code.css,
+ baguetteBox.min.css,
+ theme.css,
+ bootblog.css,
+ custom.css,
+assets/css/all.css=
+ rst_base.css,
+ nikola_rst.css,
+ code.css,
+ baguetteBox.min.css,
+ theme.css,
+ bootblog.css,
+ custom.css,
+
+; javascript bundles
+assets/js/all-nocdn.js=
+ jquery.min.js,
+ popper.min.js,
+ bootstrap.min.js,
+ baguetteBox.min.js,
+ fancydates.min.js,
+assets/js/all.js=
+ fancydates.min.js,
diff --git a/nikola/data/themes/bootblog4/templates/base.tmpl b/nikola/data/themes/bootblog4/templates/base.tmpl
new file mode 100644
index 0000000..69b9d30
--- /dev/null
+++ b/nikola/data/themes/bootblog4/templates/base.tmpl
@@ -0,0 +1,104 @@
+## -*- coding: utf-8 -*-
+<%namespace name="base" file="base_helper.tmpl" import="*" />
+<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
+${set_locale(lang)}
+${base.html_headstart()}
+<%block name="extra_head">
+### Leave this block alone.
+</%block>
+${template_hooks['extra_head']()}
+</head>
+<body>
+<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
+
+<!-- Header and menu bar -->
+<div class="container">
+ <header class="blog-header py-3">
+ <div class="row nbb-header align-items-center">
+ <div class="col-md-3 col-xs-2 col-sm-2" style="width: auto;">
+ <button class="navbar-toggler navbar-light bg-light nbb-navbar-toggler" type="button" data-toggle="collapse" data-target=".bs-nav-collapsible" aria-controls="bs-navbar" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="collapse bs-nav-collapsible bootblog4-search-form-holder">
+ ${search_form}
+ </div>
+ </div>
+ <div class="col-md-6 col-xs-10 col-sm-10 bootblog4-brand" style="width: auto;">
+ <a class="navbar-brand blog-header-logo text-dark" href="${_link("root", None, lang)}">
+ %if logo_url:
+ <img src="${logo_url}" alt="${blog_title|h}" id="logo" class="d-inline-block align-top">
+ %endif
+
+ % if show_blog_title:
+ <span id="blog-title">${blog_title|h}</span>
+ % endif
+ </a>
+ </div>
+ <div class="col-md-3 justify-content-end align-items-center bs-nav-collapsible collapse flex-collapse bootblog4-right-nav">
+ <nav class="navbar navbar-light bg-white">
+ <ul class="navbar-nav bootblog4-right-nav">
+ ${base.html_navigation_links_entries(navigation_alt_links)}
+ <%block name="belowtitle">
+ %if len(translations) > 1:
+ ${base.html_translations()}
+ %endif
+ </%block>
+ <%block name="sourcelink"></%block>
+ ${template_hooks['menu_alt']()}
+ </ul></nav>
+ </div>
+ </div>
+</header>
+
+<nav class="navbar navbar-expand-md navbar-light bg-white static-top">
+ <div class="collapse navbar-collapse bs-nav-collapsible" id="bs-navbar">
+ <ul class="navbar-nav nav-fill d-flex w-100">
+ ${base.html_navigation_links_entries(navigation_links)}
+ ${template_hooks['menu']()}
+ </ul>
+ </div><!-- /.navbar-collapse -->
+</nav>
+<%block name="before_content"></%block>
+</div>
+
+<div class="container" id="content" role="main">
+ <div class="body-content">
+ % if theme_config.get('sidebar'):
+ <div class="row"><div class="col-md-8 blog-main">
+ % endif
+ <!--Body content-->
+ ${template_hooks['page_header']()}
+ <%block name="extra_header"></%block>
+ <%block name="content"></%block>
+ <!--End of body content-->
+ % if theme_config.get('sidebar'):
+ </div><aside class="col-md-4 blog-sidebar">${theme_config.get('sidebar')}</aside></div>
+ % endif
+
+ <footer id="footer">
+ ${content_footer}
+ ${template_hooks['page_footer']()}
+ <%block name="extra_footer"></%block>
+ </footer>
+ </div>
+</div>
+
+${base.late_load_js()}
+ %if date_fanciness != 0:
+ <!-- fancy dates -->
+ <script>
+ luxon.Settings.defaultLocale = "${luxon_locales[lang]}";
+ fancydates(${date_fanciness}, ${luxon_date_format});
+ </script>
+ <!-- end fancy dates -->
+ %endif
+ <%block name="extra_js"></%block>
+ <script>
+ baguetteBox.run('div#content', {
+ ignoreClass: 'islink',
+ captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
+ </script>
+${body_end}
+${template_hooks['body_end']()}
+</body>
+</html>
diff --git a/nikola/data/themes/bootblog4/templates/base_helper.tmpl b/nikola/data/themes/bootblog4/templates/base_helper.tmpl
new file mode 100644
index 0000000..3c919b4
--- /dev/null
+++ b/nikola/data/themes/bootblog4/templates/base_helper.tmpl
@@ -0,0 +1,169 @@
+## -*- coding: utf-8 -*-
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%def name="html_headstart()">
+<!DOCTYPE html>
+<html
+\
+prefix='\
+og: http://ogp.me/ns# article: http://ogp.me/ns/article# \
+%if comment_system == 'facebook':
+fb: http://ogp.me/ns/fb# \
+%endif
+'\
+% if is_rtl:
+dir="rtl" \
+% endif
+\
+lang="${lang}">
+ <head>
+ <meta charset="utf-8">
+ %if description:
+ <meta name="description" content="${description|h}">
+ %endif
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ %if title == blog_title:
+ <title>${blog_title|h}</title>
+ %else:
+ <title>${title|h} | ${blog_title|h}</title>
+ %endif
+
+ ${html_stylesheets()}
+ <meta name="theme-color" content="${theme_color}">
+ % if meta_generator_tag:
+ <meta name="generator" content="Nikola (getnikola.com)">
+ % endif
+ ${html_feedlinks()}
+ <link rel="canonical" href="${abs_link(permalink)}">
+
+ %if favicons:
+ %for name, file, size in favicons:
+ <link rel="${name}" href="${file}" sizes="${size}"/>
+ %endfor
+ %endif
+
+ % if comment_system == 'facebook':
+ <meta property="fb:app_id" content="${comment_system_id}">
+ % endif
+
+ %if prevlink:
+ <link rel="prev" href="${prevlink}" type="text/html">
+ %endif
+ %if nextlink:
+ <link rel="next" href="${nextlink}" type="text/html">
+ %endif
+
+ %if use_cdn:
+ <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ %else:
+ <!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5.js', lang, url_type)}"></script><![endif]-->
+ %endif
+
+ ${extra_head_data}
+</%def>
+
+<%def name="late_load_js()">
+ %if use_cdn:
+ <script src="http://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ % endif
+ %if use_bundles and use_cdn:
+ <script src="/assets/js/all.js"></script>
+ %elif use_bundles:
+ <script src="/assets/js/all-nocdn.js"></script>
+ %else:
+ %if not use_cdn:
+ <script src="/assets/js/jquery.min.js"></script>
+ <script src="/assets/js/popper.min.js"></script>
+ <script src="/assets/js/bootstrap.min.js"></script>
+ <script src="/assets/js/baguetteBox.min.js"></script>
+ %endif
+ %endif
+ %if date_fanciness != 0:
+ %if date_fanciness == 2:
+ <script src="https://polyfill.io/v3/polyfill.js?features=Intl.RelativeTimeFormat.%7Elocale.${luxon_locales[lang]}"></script>
+ %endif
+ %if use_cdn:
+ <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js" integrity="sha256-OVk2fwTRcXYlVFxr/ECXsakqelJbOg5WCj1dXSIb+nU=" crossorigin="anonymous"></script>
+ %else:
+ <script src="/assets/js/luxon.min.js"></script>
+ %endif
+ %if not use_bundles:
+ <script src="/assets/js/fancydates.min.js"></script>
+ %endif
+ %endif
+ ${social_buttons_code}
+</%def>
+
+
+<%def name="html_stylesheets()">
+ % if use_cdn:
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" integrity="sha256-cLMYWYYutHkt+KpNqjg7NVkYSQ+E2VbrXsEvOqU7mL0=" crossorigin="anonymous">
+ % endif
+ %if use_bundles and use_cdn:
+ <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
+ %elif use_bundles:
+ <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
+ %else:
+ %if not use_cdn:
+ <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/baguetteBox.min.css" rel="stylesheet" type="text/css">
+ %endif
+ <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/bootblog.css" rel="stylesheet" type="text/css">
+ %if has_custom_css:
+ <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
+ %endif
+ %endif
+ % if needs_ipython_css:
+ <link href="/assets/css/ipython.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
+ % endif
+ <link href="https://fonts.googleapis.com/css?family=Playfair+Display:700,900" rel="stylesheet">
+</%def>
+
+<%def name="html_navigation_links()">
+ ${html_navigation_links_entries(navigation_links)}
+</%def>
+
+<%def name="html_navigation_links_entries(navigation_links_source)">
+ %for url, text in navigation_links_source[lang]:
+ % if isinstance(url, tuple):
+ <li class="nav-item dropdown"><a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">${text}</a>
+ <div class="dropdown-menu">
+ %for suburl, text in url:
+ % if rel_link(permalink, suburl) == "#":
+ <a href="${permalink}" class="dropdown-item active">${text} <span class="sr-only">${messages("(active)", lang)}</span></a>
+ %else:
+ <a href="${suburl}" class="dropdown-item">${text}</a>
+ %endif
+ %endfor
+ </div>
+ % else:
+ % if rel_link(permalink, url) == "#":
+ <li class="nav-item active"><a href="${permalink}" class="nav-link">${text} <span class="sr-only">${messages("(active)", lang)}</span></a>
+ %else:
+ <li class="nav-item"><a href="${url}" class="nav-link">${text}</a>
+ %endif
+ % endif
+ %endfor
+</%def>
+
+
+
+<%def name="html_feedlinks()">
+ ${feeds_translations.head(classification=None, kind='index', other=False)}
+</%def>
+
+<%def name="html_translations()">
+ %for langname in sorted(translations):
+ %if langname != lang:
+ <li class="nav-item"><a href="${_link("root", None, langname)}" rel="alternate" hreflang="${langname}" class="nav-link">${messages("LANGUAGE", langname)}</a></li>
+ %endif
+ %endfor
+</%def>
diff --git a/nikola/data/themes/bootblog4/templates/index.tmpl b/nikola/data/themes/bootblog4/templates/index.tmpl
new file mode 100644
index 0000000..449c5ec
--- /dev/null
+++ b/nikola/data/themes/bootblog4/templates/index.tmpl
@@ -0,0 +1,150 @@
+## -*- coding: utf-8 -*-
+<%namespace name="helper" file="index_helper.tmpl"/>
+<%namespace name="math" file="math_helper.tmpl"/>
+<%namespace name="comments" file="comments_helper.tmpl"/>
+<%namespace name="pagination" file="pagination_helper.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+<%inherit file="base.tmpl"/>
+
+<%block name="extra_head">
+ ${parent.extra_head()}
+ % if posts and (permalink == '/' or permalink == '/' + index_file):
+ <link rel="prefetch" href="${posts[0].permalink()}" type="text/html">
+ % endif
+ ${math.math_styles_ifposts(posts)}
+</%block>
+
+<%block name="content">
+ <%block name="content_header">
+ ${feeds_translations.translation_link(kind)}
+ </%block>
+ % if 'main_index' in pagekind:
+ ${front_index_header}
+ % endif
+ % if page_links:
+ ${pagination.page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed)}
+ % endif
+ <div class="postindex">
+ % for post in posts:
+ <article class="h-entry post-${post.meta('type')}" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <header>
+ <h1 class="p-name entry-title"><a href="${post.permalink()}" class="u-url">${post.title()|h}</a></h1>
+ <div class="metadata">
+ <p class="byline author vcard"><span class="byline-name fn" itemprop="author">
+ % if author_pages_generated and multiple_authors_per_post:
+ % for author in post.authors():
+ <a href="${_link('author', author)}">${author|h}</a>
+ % endfor
+ % elif author_pages_generated:
+ <a href="${_link('author', post.author())}">${post.author()|h}</a>
+ % else:
+ ${post.author()|h}
+ % endif
+ </span></p>
+ <p class="dateline">
+ <a href="${post.permalink()}" rel="bookmark">
+ <time class="published dt-published" datetime="${post.formatted_date('webiso')}" itemprop="datePublished" title="${post.formatted_date(date_format)|h}">${post.formatted_date(date_format)|h}</time>
+ % if post.updated and post.updated != post.date:
+ <span class="updated"> (${messages("updated")}
+ <time class="dt-updated" datetime="${post.formatted_updated('webiso')}" itemprop="dateUpdated" title="${post.formatted_updated(date_format)|h}">${post.formatted_updated(date_format)|h}</time>)</span>
+ % endif
+ </a>
+ </p>
+ % if not post.meta('nocomments') and site_has_comments:
+ <p class="commentline">${comments.comment_link(post.permalink(), post._base_path)}
+ % endif
+ </div>
+ </header>
+ %if index_teasers:
+ <div class="p-summary entry-summary">
+ ${post.text(teaser_only=True)}
+ </div>
+ %else:
+ <div class="e-content entry-content">
+ ${post.text(teaser_only=False)}
+ </div>
+ %endif
+ </article>
+ % endfor
+ </div>
+ ${helper.html_pager()}
+ ${comments.comment_link_script()}
+ ${math.math_scripts_ifposts(posts)}
+</%block>
+
+<%block name="before_content">
+ % if 'main_index' in pagekind and is_frontmost_index and featured and (theme_config.get('featured_large') or theme_config.get('featured_small')):
+ % if theme_config.get('featured_on_mobile'):
+ <div class="d-block">
+ % else:
+ <div class="d-none d-md-block">
+ % endif
+ % if featured and theme_config.get('featured_large'):
+ <div class="jumbotron p-0 text-white rounded bg-dark">
+ <div class="row bootblog4-featured-jumbotron-row">
+ <div class="col-md-6 p-3 p-md-4 pr-0 h-md-250 bootblog4-featured-text">
+ <h1 class="display-4 font-italic"><a class="text-white" href="${featured[0].permalink()}">${featured[0].title()}</a></h1>
+ % if featured[0].previewimage:
+ <div class="lead my-3 mb-0">${featured[0].text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True))}</div>
+ </div>
+ % if theme_config.get('featured_large_image_on_mobile'):
+ <div class="col-md-6 p-0 h-md-250 text-right">
+ % else:
+ <div class="col-md-6 p-0 h-md-250 text-right d-none d-md-block">
+ % endif
+ <img class="bootblog4-featured-large-image" src="${featured[0].previewimage}" alt="${featured.pop(0).title()}">
+ </div>
+ % else:
+ <div class="lead my-3 mb-0">${featured.pop(0).text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True))}</div>
+ </div>
+ % endif
+ </div>
+ </div>
+ % endif
+
+ % if featured and theme_config.get('featured_small'):
+ <div class="row mb-2">
+ % if len(featured) == 1:
+ <div class="col-md-12">
+ % else:
+ <div class="col-md-6">
+ % endif
+ <div class="card flex-md-row mb-4 box-shadow h-md-250">
+ <div class="card-body d-flex flex-column align-items-start">
+ <h3 class="mb-0">
+ <a class="text-dark" href="${featured[0].permalink()}">${featured[0].title()}</a>
+ </h3>
+ % if featured[0].previewimage:
+ <div class="card-text mb-auto bootblog4-featured-text">${featured[0].text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True))}</div>
+ </div>
+ <img class="card-img-right flex-auto d-none d-lg-block" src="${featured[0].previewimage}" alt="${featured.pop(0).title()}">
+ % else:
+ <div class="card-text mb-auto bootblog4-featured-text">${featured.pop(0).text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True))}</div>
+ </div>
+ % endif
+ </div>
+ </div>
+
+ % if featured:
+ <div class="col-md-6">
+ <div class="card flex-md-row mb-4 box-shadow h-md-250">
+ <div class="card-body d-flex flex-column align-items-start">
+ <h3 class="mb-0">
+ <a class="text-dark" href="${featured[0].permalink()}">${featured[0].title()}</a>
+ </h3>
+ % if featured[0].previewimage:
+ <div class="card-text mb-auto bootblog4-featured-text">${featured[0].text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True))}</div>
+ </div>
+ <img class="card-img-right flex-auto d-none d-lg-block" src="${featured[0].previewimage}" alt="${featured.pop(0).title()}">
+ % else:
+ <div class="card-text mb-auto bootblog4-featured-text">${featured.pop(0).text(teaser_only=True, strip_html=theme_config.get('featured_strip_html', True))}</div>
+ </div>
+ % endif
+ </div>
+ </div>
+ % endif
+ </div>
+ %endif
+ </div>
+% endif
+</%block>
diff --git a/nikola/data/themes/bootstrap3-jinja/AUTHORS.txt b/nikola/data/themes/bootstrap3-jinja/AUTHORS.txt
deleted file mode 100644
index 043d497..0000000
--- a/nikola/data/themes/bootstrap3-jinja/AUTHORS.txt
+++ /dev/null
@@ -1 +0,0 @@
-Roberto Alsina <https://github.com/ralsina>
diff --git a/nikola/data/themes/bootstrap3-jinja/README.md b/nikola/data/themes/bootstrap3-jinja/README.md
deleted file mode 100644
index 10e673a..0000000
--- a/nikola/data/themes/bootstrap3-jinja/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-A theme based on Bootstrap 3.
-
-There is a variant called bootstrap3-gradients which uses an extra CSS
-file for a *visually enhanced experience* (according to Bootstrap
-developers at least). This one uses the default bootstrap3 flat look.
-
-This theme supports Bootswtach font/color schemes (unlike
-bootstrap3-gradients) through the `nikola bootswatch_theme` command.
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css
deleted file mode 120000
index 78d39af..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css.map b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css.map
deleted file mode 120000
index 639bdc1..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css
deleted file mode 120000
index 200c765..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.min.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css.map b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css.map
deleted file mode 120000
index fcd3722..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap-theme.min.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css
deleted file mode 120000
index 013623e..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css.map b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css.map
deleted file mode 120000
index 8448a3d..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css
deleted file mode 120000
index 5bc6076..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.min.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css.map b/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css.map
deleted file mode 120000
index 5914aca..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.min.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.min.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/colorbox.css b/nikola/data/themes/bootstrap3-jinja/assets/css/colorbox.css
deleted file mode 120000
index 5f8b3b0..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/colorbox.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery-colorbox/example3/colorbox.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/docs.css b/nikola/data/themes/bootstrap3-jinja/assets/css/docs.css
deleted file mode 100644
index 189ea89..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/docs.css
+++ /dev/null
@@ -1,160 +0,0 @@
-body {
- font-weight: 300;
-}
-
-a:hover,
-a:focus {
- text-decoration: none;
-}
-
-.container {
- max-width: 700px;
-}
-
-h2 {
- text-align: center;
- font-weight: 300;
-}
-
-
-/* Header
--------------------------------------------------- */
-
-.jumbotron {
- position: relative;
- font-size: 16px;
- color: #fff;
- color: rgba(255,255,255,.75);
- text-align: center;
- background-color: #b94a48;
- border-radius: 0;
-}
-.jumbotron h1,
-.jumbotron .glyphicon-ok {
- margin-bottom: 15px;
- font-weight: 300;
- letter-spacing: -1px;
- color: #fff;
-}
-.jumbotron .glyphicon-ok {
- font-size: 40px;
- line-height: 1;
-}
-.btn-outline {
- margin-top: 15px;
- margin-bottom: 15px;
- padding: 18px 24px;
- font-size: inherit;
- font-weight: 500;
- color: #fff; /* redeclare to override the `.jumbotron a` */
- background-color: transparent;
- border-color: #fff;
- border-color: rgba(255,255,255,.5);
- transition: all .1s ease-in-out;
-}
-.btn-outline:hover,
-.btn-outline:active {
- color: #b94a48;
- background-color: #fff;
- border-color: #fff;
-}
-
-.jumbotron:after {
- position: absolute;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 10;
- display: block;
- content: "";
- height: 30px;
- background-image: -moz-linear-gradient(rgba(0, 0, 0, 0), rgba(0,0,0,.1));
- background-image: -webkit-linear-gradient(rgba(0, 0, 0, 0), rgba(0,0,0,.1));
-}
-
-.jumbotron p a,
-.jumbotron-links a {
- font-weight: 500;
- color: #fff;
- transition: all .1s ease-in-out;
-}
-.jumbotron p a:hover,
-.jumbotron-links a:hover {
- text-shadow: 0 0 10px rgba(255,255,255,.55);
-}
-
-/* Textual links */
-.jumbotron-links {
- margin-top: 15px;
- margin-bottom: 0;
- padding-left: 0;
- list-style: none;
- font-size: 14px;
-}
-.jumbotron-links li {
- display: inline;
-}
-.jumbotron-links li + li {
- margin-left: 20px;
-}
-
-@media (min-width: 768px) {
- .jumbotron {
- padding-top: 100px;
- padding-bottom: 100px;
- font-size: 21px;
- }
- .jumbotron h1,
- .jumbotron .glyphicon-ok {
- font-size: 50px;
- }
-}
-
-/* Steps for setup
--------------------------------------------------- */
-
-.how-to {
- padding: 50px 20px;
- border-top: 1px solid #eee;
-}
-.how-to li {
- font-size: 21px;
- line-height: 1.5;
- margin-top: 20px;
-}
-.how-to li p {
- font-size: 16px;
- color: #555;
-}
-.how-to code {
- font-size: 85%;
- color: #b94a48;
- background-color: #fcf3f2;
- word-wrap: break-word;
- white-space: normal;
-}
-
-/* Icons
--------------------------------------------------- */
-
-.the-icons {
- padding: 40px 10px;
- font-size: 20px;
- line-height: 2;
- color: #333;
- text-align: center;
-}
-.the-icons .glyphicon {
- padding-left: 15px;
- padding-right: 15px;
-}
-
-/* Footer
--------------------------------------------------- */
-
-.footer {
- padding: 50px 30px;
- color: #777;
- text-align: center;
- border-top: 1px solid #eee;
-}
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/controls.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/controls.png
deleted file mode 120000
index 841a726..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/controls.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/example3/images/controls.png \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomCenter.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 0d4475e..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomCenter.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomLeft.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomLeft.png
deleted file mode 100644
index 2775eba..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomLeft.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomRight.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomRight.png
deleted file mode 100644
index f7f5137..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderBottomRight.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleLeft.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index a2d63d1..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleLeft.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleRight.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleRight.png
deleted file mode 100644
index fd7c3e8..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderMiddleRight.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopCenter.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopCenter.png
deleted file mode 100644
index 2937a9c..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopCenter.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopLeft.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopLeft.png
deleted file mode 100644
index f9d458b..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopLeft.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopRight.png b/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopRight.png
deleted file mode 100644
index 74b8583..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/ie6/borderTopRight.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/images/loading.gif b/nikola/data/themes/bootstrap3-jinja/assets/css/images/loading.gif
deleted file mode 120000
index b192a75..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/images/loading.gif
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/example3/images/loading.gif \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.eot b/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.eot
deleted file mode 120000
index c2dfd17..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.eot
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.svg b/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.svg
deleted file mode 120000
index 30abe9d..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.ttf b/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.ttf
deleted file mode 120000
index 93e3bf3..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.ttf
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff b/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff
deleted file mode 120000
index f7595ae..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff2 b/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff2
deleted file mode 120000
index 8c1e4d3..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/fonts/glyphicons-halflings-regular.woff2
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.js b/nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.js
deleted file mode 120000
index 26aa1fd..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/js/bootstrap.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.min.js b/nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.min.js
deleted file mode 120000
index c4cdf6c..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/bootstrap.min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/js/bootstrap.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ar.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ar.js
deleted file mode 120000
index f83073f..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ar.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ar.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bg.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bg.js
deleted file mode 120000
index bafc4e0..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bg.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-bg.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bn.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bn.js
deleted file mode 120000
index 9b995d8..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-bn.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-bn.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ca.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ca.js
deleted file mode 120000
index a749232..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ca.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ca.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-cs.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-cs.js
deleted file mode 120000
index e4a595c..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-cs.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-cs.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-da.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-da.js
deleted file mode 120000
index 1e9a1d6..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-da.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-da.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-de.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-de.js
deleted file mode 120000
index 748f53b..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-de.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-de.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-es.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-es.js
deleted file mode 120000
index 1154fb5..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-es.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-es.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-et.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-et.js
deleted file mode 120000
index 483e192..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-et.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-et.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fa.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fa.js
deleted file mode 120000
index a30b13c..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fa.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-fa.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fi.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fi.js
deleted file mode 120000
index 2a7e8ad..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fi.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-fi.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fr.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fr.js
deleted file mode 120000
index e359290..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-fr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-fr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gl.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gl.js
deleted file mode 120000
index 04fa276..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gl.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-gl.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gr.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gr.js
deleted file mode 120000
index d8105ab..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-gr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-gr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-he.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-he.js
deleted file mode 120000
index 72dddf5..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-he.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-he.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hr.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hr.js
deleted file mode 120000
index 34aa3c0..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-hr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hu.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hu.js
deleted file mode 120000
index a87f03c..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-hu.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-hu.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-id.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-id.js
deleted file mode 120000
index 31053b8..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-id.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-id.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-it.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-it.js
deleted file mode 120000
index aad9d22..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-it.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-it.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ja.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ja.js
deleted file mode 120000
index 3ea27c2..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ja.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ja.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-kr.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-kr.js
deleted file mode 120000
index 3e23b4a..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-kr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-kr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lt.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lt.js
deleted file mode 120000
index 374b9bb..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lt.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-lt.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lv.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lv.js
deleted file mode 120000
index 101b476..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-lv.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-lv.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-my.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-my.js
deleted file mode 120000
index 8e14f15..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-my.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-my.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-nl.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-nl.js
deleted file mode 120000
index 2d03d48..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-nl.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-nl.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-no.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-no.js
deleted file mode 120000
index 9af0ba7..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-no.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-no.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pl.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pl.js
deleted file mode 120000
index 34f8ab1..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pl.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-pl.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js
deleted file mode 120000
index e20bd38..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-pt-BR.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ro.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ro.js
deleted file mode 120000
index 555f2e6..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ro.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ro.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ru.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ru.js
deleted file mode 120000
index bac4855..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-ru.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ru.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-si.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-si.js
deleted file mode 120000
index 65b0492..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-si.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-si.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sk.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sk.js
deleted file mode 120000
index 99859fd..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sk.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-sk.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sr.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sr.js
deleted file mode 120000
index c4fd9d5..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-sr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sv.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sv.js
deleted file mode 120000
index d7f26e0..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-sv.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-sv.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-tr.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-tr.js
deleted file mode 120000
index 86fd98f..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-tr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-tr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-uk.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-uk.js
deleted file mode 120000
index 7cd1336..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-uk.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-uk.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js
deleted file mode 120000
index e6c5965..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-zh-CN.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js b/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js
deleted file mode 120000
index bd2254c..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-zh-TW.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/flowr.plugin.js b/nikola/data/themes/bootstrap3-jinja/assets/js/flowr.plugin.js
deleted file mode 100644
index 732fa3d..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/flowr.plugin.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/**
- * Flowr.js - Simple jQuery plugin to emulate Flickr's justified view
- * For usage information refer to http://github.com/kalyan02/flowr-js
- *
- *
- * @author: Kalyan Chakravarthy (http://KalyanChakravarthy.net)
- * @version: v0.1
- */
-(function($) {
- //$("#container2").css( 'border', '1px solid #ccc');
- $.fn.flowr = function(options) {
-
- $this = this;
- var ROW_CLASS_NAME = 'flowr-row'; // Class name for the row of flowy
- var MAX_LAST_ROW_GAP = 25; // If the width of last row is lesser than max-width, recalculation is needed
- var NO_COPY_FIELDS = ['complete', 'data', 'responsive']; // these attributes will not be carried forward for append related calls
- var DEFAULTS = {
- 'data': [],
- 'padding': 5, // whats the padding between flowy items
- 'height': 240, // Minimum height an image row should take
- 'render': null, // callback function to get the tag
- 'append': false, // TODO
- 'widthAttr': 'width', // a custom data structure can specify which attribute refers to height/width
- 'heightAttr': 'height',
- 'maxScale': 1.5, // In case there is only 1 elment in last row
- 'maxWidth': this.width() - 1, // 1px is just for offset
- 'itemWidth': null, // callback function for width
- 'itemHeight': null, // callback function for height
- 'complete': null, // complete callback
- 'rowClassName': ROW_CLASS_NAME,
- 'rows': -1, // Maximum number of rows to render. -1 for no limit.
- 'responsive': true // make content responsive
- };
- var settings = $.extend(DEFAULTS, options);
-
- // If data is being appended, we already have settings
- // If we already have settings, retrieve them
- if (settings.append && $this.data('lastSettings')) {
- lastSettings = $this.data('lastSettings');
-
- // Copy over the settings from previous init
- for (attr in DEFAULTS) {
- if (NO_COPY_FIELDS.indexOf(attr) < 0 && settings[attr] == DEFAULTS[attr]) {
- settings[attr] = lastSettings[attr];
- }
- }
-
- // Check if we have an incomplete last row
- lastRow = $this.data('lastRow');
- if (lastRow.data.length > 0 && settings.maxWidth - lastRow.width > MAX_LAST_ROW_GAP) {
- // Prepend the incomplete row to newly loaded data and redraw
- lastRowData = lastSettings.data.slice(lastSettings.data.length - lastRow.data.length - 1);
- settings.data = lastRowData.concat(settings.data);
-
- // Remove the incomplete row
- // TODO: Don't reload this stuff later. Reattach to new row.
- $('.' + settings.rowClassName + ':last', $this).detach();
- } else {
- // console.log( lastRow.data.length );
- // console.log( lastRow.width );
- }
- }
-
- // only on the first initial call
- if (!settings.responsive && !settings.append)
- $this.width($this.width());
-
- // Basic sanity checks
- if (!(settings.data instanceof Array))
- return;
-
- if (typeof(settings.padding) != 'number')
- settings.padding = parseInt(settings.padding);
-
- if (typeof(settings.itemWidth) != 'function') {
- settings.itemWidth = function(data) {
- return data[settings.widthAttr];
- }
- }
-
- if (typeof(settings.itemHeight) != 'function') {
- settings.itemHeight = function(data) {
- return data[settings.heightAttr];
- }
- }
-
- // A standalone utility to calculate the item widths for a particular row
- // Returns rowWidth: width occupied & data : the items in the new row
- var utils = {
- getNextRow: function(data, settings) {
- var itemIndex = 0;
- var itemsLength = data.length;
- var lineItems = [];
- var lineWidth = 0;
- var maxWidth = settings.maxWidth;
- var paddingSize = settings.padding;
-
- // console.log( 'maxItems=' + data.length );
-
- requiredPadding = function() {
- var extraPads = arguments.length == 1 ? arguments[0] : 0;
- return (lineItems.length - 1 + extraPads) * settings.padding;
- }
-
- while (lineWidth + requiredPadding() < settings.maxWidth && (itemIndex < itemsLength)) {
- var itemData = data[itemIndex];
- var itemWidth = settings.itemWidth.call($this, itemData);
- var itemHeight = settings.itemHeight.call($this, itemData);
-
- var minHeight = settings.height;
- var minWidth = Math.floor(itemWidth * settings.height / itemHeight);
-
-
- if (minWidth > settings.maxWidth) {
- // very short+wide images like panoramas
- // show them even if ugly, as wide as possible
- minWidth = settings.maxWidth - 1 - requiredPadding(1);
- minHeight = settings.height * minHeight / minWidth;
- }
- var newLineWidth = lineWidth + minWidth;
-
- // console.log( 'lineWidth = ' + lineWidth );
- // console.log( 'newLineWidth = ' + newLineWidth );
- if (newLineWidth < settings.maxWidth) {
- lineItems.push({
- 'height': minHeight,
- 'width': minWidth,
- 'itemData': itemData
- });
-
- lineWidth += minWidth;
- itemIndex++;
- } else {
- // We'd have exceeded width. So break off to scale.
- // console.log( 'breaking off = ' + itemIndex );
- // console.log( 'leave off size = ' + lineItems.length );
- break;
- }
- } //while
-
- // Scale the size to max width
- testWidth = 0;
- if (lineWidth < settings.maxWidth) {
- var fullScaleWidth = settings.maxWidth - requiredPadding() - 10;
- var currScaleWidth = lineWidth;
- var scaleFactor = fullScaleWidth / currScaleWidth;
- if (scaleFactor > settings.maxScale)
- scaleFactor = 1;
-
- var newHeight = Math.round(settings.height * scaleFactor);
- for (i = 0; i < lineItems.length; i++) {
- var lineItem = lineItems[i];
- lineItem.width = Math.floor(lineItem.width * scaleFactor);
- lineItem.height = newHeight;
-
- testWidth += lineItem.width;
- }
- }
-
- return {
- data: lineItems,
- width: testWidth + requiredPadding()
- };
- }, //getNextRow
- reorderContent: function() {
- /*
- TODO: optimize for faster resizing by reusing dom objects instead of killing the dom
- */
- var _initialWidth = $this.data('width');
- var _newWidth = $this.width();
- var _change = _initialWidth - _newWidth;
-
- if (_initialWidth != _newWidth) {
- $this.html('');
- var _settings = $this.data('lastSettings');
- _settings.data = $this.data('data');
- _settings.maxWidth = $this.width() - 1;
- $this.flowr(_settings);
- }
- }
- } //utils
-
- // If the responsive var is set to true then listen for resize method
- // and prevent resizing from happening twice if responsive is set again during append phase!
- if (settings.responsive && !$this.data('__responsive')) {
- $(window).resize(function() {
- initialWidth = $this.data('width');
- newWidth = $this.width();
-
- //initiate resize
- if (initialWidth != newWidth) {
- var task_id = $this.data('task_id');
- if (task_id) {
- task_id = clearTimeout(task_id);
- task_id = null;
- }
- task_id = setTimeout(utils.reorderContent, 80);
- $this.data('task_id', task_id);
- }
- });
- $this.data('__responsive', true);
- }
-
-
- return this.each(function() {
-
- // Get a copy of original data. 1 level deep copy is sufficient.
- var data = settings.data.slice(0);
- var rowData = null;
- var currentRow = 0;
- var currentItem = 0;
-
- // Store all the data
- var allData = [];
- for (i = 0; i < data.length; i++) {
- allData.push(data[i]);
- }
- $this.data('data', allData);
-
- // While we have a new row
- while ((rowData = utils.getNextRow(data, settings)) != null && rowData.data.length > 0) {
- if (settings.rows > 0 && currentRow >= settings.rows)
- break;
- // remove the number of elements in the new row from the top of data stack
- data.splice(0, rowData.data.length);
-
- // Create a new row div, add class, append the htmls and insert the flowy items
- var $row = $('<div>').addClass(settings.rowClassName);
- var slack = $this[0].clientWidth - rowData.width - 2 * settings.padding
- for (i = 0; i < rowData.data.length; i++) {
- var displayData = rowData.data[i];
- // Get the HTML object from custom render function passed as argument
- var displayObject = settings.render.call($this, displayData);
- displayObject = $(displayObject);
- extraw = Math.floor(slack/rowData.data.length)
- if (i == 0) {
- extraw += slack % rowData.data.length
- }
- // Set some basic stuff
- displayObject
- .css('width', displayData.width + extraw)
- .css('height', displayData.height)
- .css('margin-bottom', settings.padding + "px")
- .css('margin-left', i == 0 ? '0' : settings.padding + "px"); //TODO:Refactor
- $row.append(displayObject);
-
- currentItem++;
- }
- $this.append($row);
- // console.log ( "I> rowData.data.length="+rowData.data.length +" rowData.width="+rowData.width );
-
- currentRow++;
- $this.data('lastRow', rowData);
- }
- // store the current state of settings and the items in last row
- // we'll need this info when we append more items
- $this.data('lastSettings', settings);
-
- // onComplete callback
- // pass back info about list of rows and items rendered
- if (typeof(settings.complete) == 'function') {
- var completeData = {
- renderedRows: currentRow,
- renderedItems: currentItem
- }
- settings.complete.call($this, completeData);
- }
- });
- };
-
-})(jQuery);
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox-min.js b/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox-min.js
deleted file mode 120000
index 9e40fd4..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox-min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery-colorbox/jquery.colorbox-min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox.js b/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox.js
deleted file mode 120000
index 5ee7a90..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.colorbox.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery-colorbox/jquery.colorbox.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.js b/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.js
deleted file mode 120000
index 966173b..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery/dist/jquery.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.js b/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.js
deleted file mode 120000
index 5c080da..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery/dist/jquery.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.map b/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.map
deleted file mode 120000
index 7e2c217..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/jquery.min.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery/dist/jquery.min.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/bundles b/nikola/data/themes/bootstrap3-jinja/bundles
deleted file mode 120000
index 8cb3e06..0000000
--- a/nikola/data/themes/bootstrap3-jinja/bundles
+++ /dev/null
@@ -1 +0,0 @@
-../bootstrap3/bundles \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/engine b/nikola/data/themes/bootstrap3-jinja/engine
deleted file mode 100644
index 6f04b30..0000000
--- a/nikola/data/themes/bootstrap3-jinja/engine
+++ /dev/null
@@ -1 +0,0 @@
-jinja
diff --git a/nikola/data/themes/bootstrap3-jinja/parent b/nikola/data/themes/bootstrap3-jinja/parent
deleted file mode 100644
index e9ed660..0000000
--- a/nikola/data/themes/bootstrap3-jinja/parent
+++ /dev/null
@@ -1 +0,0 @@
-base-jinja
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/base.tmpl b/nikola/data/themes/bootstrap3-jinja/templates/base.tmpl
deleted file mode 100644
index 4ce46d0..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/base.tmpl
+++ /dev/null
@@ -1,94 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% import 'base_helper.tmpl' as base with context %}
-{% import 'annotation_helper.tmpl' as notes with context %}
-{{ set_locale(lang) }}
-{{ base.html_headstart() }}
-{% block extra_head %}
-{# Leave this block alone. #}
-{% endblock %}
-{{ template_hooks['extra_head']() }}
-</head>
-<body>
-<a href="#content" class="sr-only sr-only-focusable">{{ messages("Skip to main content") }}</a>
-
-<!-- Menubar -->
-
-<nav class="navbar navbar-inverse navbar-static-top">
- <div class="container"><!-- This keeps the margins nice -->
- <div class="navbar-header">
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false">
- <span class="sr-only">{{ messages("Toggle navigation") }}</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="navbar-brand" href="{{ abs_link(_link("root", None, lang)) }}">
- {% if logo_url %}
- <img src="{{ logo_url }}" alt="{{ blog_title|e }}" id="logo">
- {% endif %}
-
- {% if show_blog_title %}
- <span id="blog-title">{{ blog_title|e }}</span>
- {% endif %}
- </a>
- </div><!-- /.navbar-header -->
- <div class="collapse navbar-collapse" id="bs-navbar" aria-expanded="false">
- <ul class="nav navbar-nav">
- {{ base.html_navigation_links() }}
- {{ template_hooks['menu']() }}
- </ul>
- {% if search_form %}
- {{ search_form }}
- {% endif %}
-
- <ul class="nav navbar-nav navbar-right">
- {% block belowtitle %}
- {% if translations|length > 1 %}
- <li>{{ base.html_translations() }}</li>
- {% endif %}
- {% endblock %}
- {% if show_sourcelink %}
- {% block sourcelink %}{% endblock %}
- {% endif %}
- {{ template_hooks['menu_alt']() }}
- </ul>
- </div><!-- /.navbar-collapse -->
- </div><!-- /.container -->
-</nav>
-
-<!-- End of Menubar -->
-
-<div class="container" id="content" role="main">
- <div class="body-content">
- <!--Body content-->
- <div class="row">
- {{ template_hooks['page_header']() }}
- {% block content %}{% endblock %}
- </div>
- <!--End of body content-->
-
- <footer id="footer">
- {{ content_footer }}
- {{ template_hooks['page_footer']() }}
- </footer>
- </div>
-</div>
-
-{{ base.late_load_js() }}
- <script>$('a.image-reference:not(.islink) img:not(.islink)').parent().colorbox({rel:"gal",maxWidth:"100%",maxHeight:"100%",scalePhotos:true});</script>
- <!-- fancy dates -->
- <script>
- moment.locale("{{ momentjs_locales[lang] }}");
- fancydates({{ date_fanciness }}, {{ js_date_format }});
- </script>
- <!-- end fancy dates -->
- {% block extra_js %}{% endblock %}
- {% if annotations and post and not post.meta('noannotations') %}
- {{ notes.code() }}
- {% elif not annotations and post and post.meta('annotations') %}
- {{ notes.code() }}
- {% endif %}
-{{ body_end }}
-{{ template_hooks['body_end']() }}
-</body>
-</html>
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/base_helper.tmpl b/nikola/data/themes/bootstrap3-jinja/templates/base_helper.tmpl
deleted file mode 100644
index 1d1802f..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/base_helper.tmpl
+++ /dev/null
@@ -1,188 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-
-{% import 'annotation_helper.tmpl' as notes with context %}
-{% macro html_headstart() %}
-<!DOCTYPE html>
-<html
-
-{% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) or (comment_system == 'facebook') %}
-prefix='
-{% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) %}
-og: http://ogp.me/ns#
-{% endif %}
-{% if use_open_graph %}
-article: http://ogp.me/ns/article#
-{% endif %}
-{% if comment_system == 'facebook' %}
-fb: http://ogp.me/ns/fb#
-{% endif %}
-'
-{% endif %}
-
-{% if is_rtl %}
-dir="rtl"
-{% endif %}
-
-lang="{{ lang }}">
- <head>
- <meta charset="utf-8">
- {% if use_base_tag %}
- <base href="{{ abs_link(permalink) }}">
- {% endif %}
- {% if description %}
- <meta name="description" content="{{ description|e }}">
- {% endif %}
- <meta name="viewport" content="width=device-width, initial-scale=1">
- {% if title == blog_title %}
- <title>{{ blog_title|e }}</title>
- {% else %}
- <title>{{ title|e }} | {{ blog_title|e }}</title>
- {% endif %}
-
- {{ html_stylesheets() }}
- <meta content="{{ theme_color }}" name="theme-color">
- {{ html_feedlinks() }}
- <link rel="canonical" href="{{ abs_link(permalink) }}">
-
- {% if favicons %}
- {% for name, file, size in favicons %}
- <link rel="{{ name }}" href="{{ file }}" sizes="{{ size }}"/>
- {% endfor %}
- {% endif %}
-
- {% if comment_system == 'facebook' %}
- <meta property="fb:app_id" content="{{ comment_system_id }}">
- {% endif %}
-
- {% if prevlink %}
- <link rel="prev" href="{{ prevlink }}" type="text/html">
- {% endif %}
- {% if nextlink %}
- <link rel="next" href="{{ nextlink }}" type="text/html">
- {% endif %}
-
- {{ mathjax_config }}
- {% if use_cdn %}
- <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
- {% else %}
- <!--[if lt IE 9]><script src="{{ url_replacer(permalink, '/assets/js/html5.js', lang) }}"></script><![endif]-->
- {% endif %}
-
- {{ extra_head_data }}
-{% endmacro %}
-
-{% macro late_load_js() %}
- {% if use_bundles %}
- {% if use_cdn %}
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
-
- <script src="/assets/js/all.js"></script>
- {% else %}
- <script src="/assets/js/all-nocdn.js"></script>
- {% endif %}
- {% else %}
- {% if use_cdn %}
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
- {% else %}
- <script src="/assets/js/jquery.min.js"></script>
- <script src="/assets/js/bootstrap.min.js"></script>
- <script src="/assets/js/moment-with-locales.min.js"></script>
- <script src="/assets/js/fancydates.js"></script>
- {% endif %}
- <script src="/assets/js/jquery.colorbox-min.js"></script>
- {% endif %}
- {% if colorbox_locales[lang] %}
- <script src="/assets/js/colorbox-i18n/jquery.colorbox-{{ colorbox_locales[lang] }}.js"></script>
- {% endif %}
- {{ social_buttons_code }}
-{% endmacro %}
-
-
-{% macro html_stylesheets() %}
- {% if use_bundles %}
- {% if use_cdn %}
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
- {% else %}
- <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
- {% endif %}
- {% else %}
- {% if use_cdn %}
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- {% else %}
- <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
- {% endif %}
- <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/colorbox.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
- {% if has_custom_css %}
- <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
- {% endif %}
- {% endif %}
- {% if needs_ipython_css %}
- <link href="/assets/css/ipython.min.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
- {% endif %}
- {% if annotations and post and not post.meta('noannotations') %}
- {{ notes.css() }}
- {% elif not annotations and post and post.meta('annotations') %}
- {{ notes.css() }}
- {% endif %}
-{% endmacro %}
-
-{% macro html_navigation_links() %}
- {% for url, text in navigation_links[lang] %}
- {% if isinstance(url, tuple) %}
- <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ text }} <b class="caret"></b></a>
- <ul class="dropdown-menu">
- {% for suburl, text in url %}
- {% if rel_link(permalink, suburl) == "#" %}
- <li class="active"><a href="{{ permalink }}">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a>
- {% else %}
- <li><a href="{{ suburl }}">{{ text }}</a>
- {% endif %}
- {% endfor %}
- </ul>
- {% else %}
- {% if rel_link(permalink, url) == "#" %}
- <li class="active"><a href="{{ permalink }}">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a>
- {% else %}
- <li><a href="{{ url }}">{{ text }}</a>
- {% endif %}
- {% endif %}
- {% endfor %}
-{% endmacro %}
-
-{% macro html_feedlinks() %}
- {% if rss_link %}
- {{ rss_link }}
- {% elif generate_rss %}
- {% if translations|length > 1 %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/rss+xml" title="RSS ({{ language }})" href="{{ _link('rss', None, language) }}">
- {% endfor %}
- {% else %}
- <link rel="alternate" type="application/rss+xml" title="RSS" href="{{ _link('rss', None) }}">
- {% endif %}
- {% endif %}
- {% if generate_atom %}
- {% if translations|length > 1 %}
- {% for language in translations|sort %}
- <link rel="alternate" type="application/atom+xml" title="Atom ({{ language }})" href="{{ _link('index_atom', None, language) }}">
- {% endfor %}
- {% else %}
- <link rel="alternate" type="application/atom+xml" title="Atom" href="{{ _link('index_atom', None) }}">
- {% endif %}
- {% endif %}
-{% endmacro %}
-
-{% macro html_translations() %}
- {% for langname in translations|sort %}
- {% if langname != lang %}
- <li><a href="{{ abs_link(_link("root", None, langname)) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></li>
- {% endif %}
- {% endfor %}
-{% endmacro %}
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/gallery.tmpl b/nikola/data/themes/bootstrap3-jinja/templates/gallery.tmpl
deleted file mode 100644
index cd9a5ed..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/gallery.tmpl
+++ /dev/null
@@ -1,95 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% extends 'base.tmpl' %}
-{% import 'comments_helper.tmpl' as comments with context %}
-{% import 'crumbs.tmpl' as ui with context %}
-{% block sourcelink %}{% endblock %}
-
-{% block content %}
- {{ ui.bar(crumbs) }}
- {% if title %}
- <h1>{{ title|e }}</h1>
- {% endif %}
- {% if post %}
- <p>
- {{ post.text() }}
- </p>
- {% endif %}
- {% if folders %}
- <ul>
- {% for folder, ftitle in folders %}
- <li><a href="{{ folder }}"><i class="glyphicon glyphicon-folder-open"></i>&nbsp;{{ ftitle|e }}</a></li>
- {% endfor %}
- </ul>
- {% endif %}
-
-<div id="gallery_container"></div>
-{% if photo_array %}
-<noscript>
-<ul class="thumbnails">
- {% for image in photo_array %}
- <li><a href="{{ image['url'] }}" class="thumbnail image-reference" title="{{ image['title']|e }}">
- <img src="{{ image['url_thumb'] }}" alt="{{ image['title']|e }}" /></a>
- {% endfor %}
-</ul>
-</noscript>
-{% endif %}
-{% if site_has_comments and enable_comments %}
-{{ comments.comment_form(None, permalink, title) }}
-{% endif %}
-{% endblock %}
-
-{% block extra_head %}
-{{ super() }}
-<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
-<style type="text/css">
- .image-block {
- display: inline-block;
- }
- .flowr_row {
- width: 100%;
- }
- </style>
-{% endblock %}
-
-
-{% block extra_js %}
-<script src="/assets/js/flowr.plugin.js"></script>
-<script>
-jsonContent = {{ photo_array_json }};
-$("#gallery_container").flowr({
- data : jsonContent,
- height : {{ thumbnail_size }}*.6,
- padding: 5,
- rows: -1,
- render : function(params) {
- // Just return a div, string or a dom object, anything works fine
- img = $("<img />").attr({
- 'src': params.itemData.url_thumb,
- 'width' : params.width,
- 'height' : params.height
- }).css('max-width', '100%');
- link = $( "<a></a>").attr({
- 'href': params.itemData.url,
- 'class': 'image-reference'
- });
- div = $("<div />").addClass('image-block').attr({
- 'title': params.itemData.title,
- 'data-toggle': "tooltip",
- });
- link.append(img);
- div.append(link);
- div.hover(div.tooltip());
- return div;
- },
- itemWidth : function(data) { return data.size.w; },
- itemHeight : function(data) { return data.size.h; },
- complete : function(params) {
- if( jsonContent.length > params.renderedItems ) {
- nextRenderList = jsonContent.slice( params.renderedItems );
- }
- }
- });
-$("a.image-reference").colorbox({rel:"gal", maxWidth:"100%",maxHeight:"100%",scalePhotos:true});
-$('a.image-reference[href="'+window.location.hash.substring(1,1000)+'"]').click();
-</script>
-{% endblock %}
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/slides.tmpl b/nikola/data/themes/bootstrap3-jinja/templates/slides.tmpl
deleted file mode 100644
index 342ed27..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/slides.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-{% block content %}
-<div id="{{ carousel_id }}" class="carousel slide">
- <ol class="carousel-indicators">
- {% for i in range(slides_content|length) %}
- {% if i == 0 %}
- <li data-target="#{{ carousel_id }}" data-slide-to="{{ i }}" class="active"></li>
- {% else %}
- <li data-target="#{{ carousel_id }}" data-slide-to="{{ i }}"></li>
- {% endif %}
- {% endfor %}
- </ol>
- <div class="carousel-inner">
- {% for i, image in enumerate(slides_content) %}
- {% if i == 0 %}
- <div class="item active"><img src="{{ image }}" alt="" style="margin: 0 auto 0 auto;"></div>
- {% else %}
- <div class="item"><img src="{{ image }}" alt="" style="margin: 0 auto 0 auto;"></div>
- {% endif %}
- {% endfor %}
- </div>
- <a class="left carousel-control" href="#{{ carousel_id }}" data-slide="prev"><span class="icon-prev"></span></a>
- <a class="right carousel-control" href="#{{ carousel_id }}" data-slide="next"><span class="icon-next"></span></a>
-</div>
-{% endblock %}
diff --git a/nikola/data/themes/bootstrap3/README.md b/nikola/data/themes/bootstrap3/README.md
deleted file mode 100644
index 10e673a..0000000
--- a/nikola/data/themes/bootstrap3/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-A theme based on Bootstrap 3.
-
-There is a variant called bootstrap3-gradients which uses an extra CSS
-file for a *visually enhanced experience* (according to Bootstrap
-developers at least). This one uses the default bootstrap3 flat look.
-
-This theme supports Bootswtach font/color schemes (unlike
-bootstrap3-gradients) through the `nikola bootswatch_theme` command.
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css b/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css
deleted file mode 120000
index 78d39af..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css.map b/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css.map
deleted file mode 120000
index 639bdc1..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css b/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css
deleted file mode 120000
index 200c765..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.min.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css.map b/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css.map
deleted file mode 120000
index fcd3722..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap-theme.min.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap.css b/nikola/data/themes/bootstrap3/assets/css/bootstrap.css
deleted file mode 120000
index 013623e..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap.css.map b/nikola/data/themes/bootstrap3/assets/css/bootstrap.css.map
deleted file mode 120000
index 8448a3d..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css b/nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css
deleted file mode 120000
index 5bc6076..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.min.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css.map b/nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css.map
deleted file mode 120000
index 5914aca..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/bootstrap.min.css.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/css/bootstrap.min.css.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/colorbox.css b/nikola/data/themes/bootstrap3/assets/css/colorbox.css
deleted file mode 120000
index 5f8b3b0..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/colorbox.css
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery-colorbox/example3/colorbox.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/docs.css b/nikola/data/themes/bootstrap3/assets/css/docs.css
deleted file mode 100644
index 189ea89..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/docs.css
+++ /dev/null
@@ -1,160 +0,0 @@
-body {
- font-weight: 300;
-}
-
-a:hover,
-a:focus {
- text-decoration: none;
-}
-
-.container {
- max-width: 700px;
-}
-
-h2 {
- text-align: center;
- font-weight: 300;
-}
-
-
-/* Header
--------------------------------------------------- */
-
-.jumbotron {
- position: relative;
- font-size: 16px;
- color: #fff;
- color: rgba(255,255,255,.75);
- text-align: center;
- background-color: #b94a48;
- border-radius: 0;
-}
-.jumbotron h1,
-.jumbotron .glyphicon-ok {
- margin-bottom: 15px;
- font-weight: 300;
- letter-spacing: -1px;
- color: #fff;
-}
-.jumbotron .glyphicon-ok {
- font-size: 40px;
- line-height: 1;
-}
-.btn-outline {
- margin-top: 15px;
- margin-bottom: 15px;
- padding: 18px 24px;
- font-size: inherit;
- font-weight: 500;
- color: #fff; /* redeclare to override the `.jumbotron a` */
- background-color: transparent;
- border-color: #fff;
- border-color: rgba(255,255,255,.5);
- transition: all .1s ease-in-out;
-}
-.btn-outline:hover,
-.btn-outline:active {
- color: #b94a48;
- background-color: #fff;
- border-color: #fff;
-}
-
-.jumbotron:after {
- position: absolute;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 10;
- display: block;
- content: "";
- height: 30px;
- background-image: -moz-linear-gradient(rgba(0, 0, 0, 0), rgba(0,0,0,.1));
- background-image: -webkit-linear-gradient(rgba(0, 0, 0, 0), rgba(0,0,0,.1));
-}
-
-.jumbotron p a,
-.jumbotron-links a {
- font-weight: 500;
- color: #fff;
- transition: all .1s ease-in-out;
-}
-.jumbotron p a:hover,
-.jumbotron-links a:hover {
- text-shadow: 0 0 10px rgba(255,255,255,.55);
-}
-
-/* Textual links */
-.jumbotron-links {
- margin-top: 15px;
- margin-bottom: 0;
- padding-left: 0;
- list-style: none;
- font-size: 14px;
-}
-.jumbotron-links li {
- display: inline;
-}
-.jumbotron-links li + li {
- margin-left: 20px;
-}
-
-@media (min-width: 768px) {
- .jumbotron {
- padding-top: 100px;
- padding-bottom: 100px;
- font-size: 21px;
- }
- .jumbotron h1,
- .jumbotron .glyphicon-ok {
- font-size: 50px;
- }
-}
-
-/* Steps for setup
--------------------------------------------------- */
-
-.how-to {
- padding: 50px 20px;
- border-top: 1px solid #eee;
-}
-.how-to li {
- font-size: 21px;
- line-height: 1.5;
- margin-top: 20px;
-}
-.how-to li p {
- font-size: 16px;
- color: #555;
-}
-.how-to code {
- font-size: 85%;
- color: #b94a48;
- background-color: #fcf3f2;
- word-wrap: break-word;
- white-space: normal;
-}
-
-/* Icons
--------------------------------------------------- */
-
-.the-icons {
- padding: 40px 10px;
- font-size: 20px;
- line-height: 2;
- color: #333;
- text-align: center;
-}
-.the-icons .glyphicon {
- padding-left: 15px;
- padding-right: 15px;
-}
-
-/* Footer
--------------------------------------------------- */
-
-.footer {
- padding: 50px 30px;
- color: #777;
- text-align: center;
- border-top: 1px solid #eee;
-}
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/controls.png b/nikola/data/themes/bootstrap3/assets/css/images/controls.png
deleted file mode 120000
index 841a726..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/controls.png
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/example3/images/controls.png \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomCenter.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 0d4475e..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomCenter.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomLeft.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomLeft.png
deleted file mode 100644
index 2775eba..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomLeft.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomRight.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomRight.png
deleted file mode 100644
index f7f5137..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderBottomRight.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleLeft.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index a2d63d1..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleLeft.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleRight.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleRight.png
deleted file mode 100644
index fd7c3e8..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderMiddleRight.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopCenter.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopCenter.png
deleted file mode 100644
index 2937a9c..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopCenter.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopLeft.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopLeft.png
deleted file mode 100644
index f9d458b..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopLeft.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopRight.png b/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopRight.png
deleted file mode 100644
index 74b8583..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/ie6/borderTopRight.png
+++ /dev/null
Binary files differ
diff --git a/nikola/data/themes/bootstrap3/assets/css/images/loading.gif b/nikola/data/themes/bootstrap3/assets/css/images/loading.gif
deleted file mode 120000
index b192a75..0000000
--- a/nikola/data/themes/bootstrap3/assets/css/images/loading.gif
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/example3/images/loading.gif \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.eot b/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.eot
deleted file mode 120000
index c2dfd17..0000000
--- a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.eot
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.svg b/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.svg
deleted file mode 120000
index 30abe9d..0000000
--- a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.ttf b/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.ttf
deleted file mode 120000
index 93e3bf3..0000000
--- a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.ttf
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff b/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff
deleted file mode 120000
index f7595ae..0000000
--- a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff2 b/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff2
deleted file mode 120000
index 8c1e4d3..0000000
--- a/nikola/data/themes/bootstrap3/assets/fonts/glyphicons-halflings-regular.woff2
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/bootstrap.js b/nikola/data/themes/bootstrap3/assets/js/bootstrap.js
deleted file mode 120000
index 26aa1fd..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/bootstrap.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/js/bootstrap.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/bootstrap.min.js b/nikola/data/themes/bootstrap3/assets/js/bootstrap.min.js
deleted file mode 120000
index c4cdf6c..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/bootstrap.min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/bootstrap/dist/js/bootstrap.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ar.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ar.js
deleted file mode 120000
index f83073f..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ar.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ar.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bg.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bg.js
deleted file mode 120000
index bafc4e0..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bg.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-bg.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bn.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bn.js
deleted file mode 120000
index 9b995d8..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-bn.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-bn.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ca.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ca.js
deleted file mode 120000
index a749232..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ca.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ca.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-cs.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-cs.js
deleted file mode 120000
index e4a595c..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-cs.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-cs.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-da.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-da.js
deleted file mode 120000
index 1e9a1d6..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-da.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-da.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-de.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-de.js
deleted file mode 120000
index 748f53b..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-de.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-de.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-es.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-es.js
deleted file mode 120000
index 1154fb5..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-es.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-es.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-et.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-et.js
deleted file mode 120000
index 483e192..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-et.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-et.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fa.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fa.js
deleted file mode 120000
index a30b13c..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fa.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-fa.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fi.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fi.js
deleted file mode 120000
index 2a7e8ad..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fi.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-fi.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fr.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fr.js
deleted file mode 120000
index e359290..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-fr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-fr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gl.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gl.js
deleted file mode 120000
index 04fa276..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gl.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-gl.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gr.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gr.js
deleted file mode 120000
index d8105ab..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-gr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-gr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-he.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-he.js
deleted file mode 120000
index 72dddf5..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-he.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-he.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hr.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hr.js
deleted file mode 120000
index 34aa3c0..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-hr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hu.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hu.js
deleted file mode 120000
index a87f03c..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-hu.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-hu.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-id.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-id.js
deleted file mode 120000
index 31053b8..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-id.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-id.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-it.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-it.js
deleted file mode 120000
index aad9d22..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-it.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-it.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ja.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ja.js
deleted file mode 120000
index 3ea27c2..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ja.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ja.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-kr.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-kr.js
deleted file mode 120000
index 3e23b4a..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-kr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-kr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lt.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lt.js
deleted file mode 120000
index 374b9bb..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lt.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-lt.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lv.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lv.js
deleted file mode 120000
index 101b476..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-lv.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-lv.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-my.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-my.js
deleted file mode 120000
index 8e14f15..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-my.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-my.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-nl.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-nl.js
deleted file mode 120000
index 2d03d48..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-nl.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-nl.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-no.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-no.js
deleted file mode 120000
index 9af0ba7..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-no.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-no.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pl.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pl.js
deleted file mode 120000
index 34f8ab1..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pl.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-pl.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js
deleted file mode 120000
index e20bd38..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-pt-BR.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-pt-BR.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ro.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ro.js
deleted file mode 120000
index 555f2e6..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ro.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ro.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ru.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ru.js
deleted file mode 120000
index bac4855..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-ru.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-ru.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-si.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-si.js
deleted file mode 120000
index 65b0492..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-si.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-si.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sk.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sk.js
deleted file mode 120000
index 99859fd..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sk.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-sk.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sr.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sr.js
deleted file mode 120000
index c4fd9d5..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-sr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sv.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sv.js
deleted file mode 120000
index d7f26e0..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-sv.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-sv.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-tr.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-tr.js
deleted file mode 120000
index 86fd98f..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-tr.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-tr.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-uk.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-uk.js
deleted file mode 120000
index 7cd1336..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-uk.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-uk.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js
deleted file mode 120000
index e6c5965..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-CN.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-zh-CN.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js b/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js
deleted file mode 120000
index bd2254c..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/colorbox-i18n/jquery.colorbox-zh-TW.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../../bower_components/jquery-colorbox/i18n/jquery.colorbox-zh-TW.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/flowr.plugin.js b/nikola/data/themes/bootstrap3/assets/js/flowr.plugin.js
deleted file mode 100644
index 732fa3d..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/flowr.plugin.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/**
- * Flowr.js - Simple jQuery plugin to emulate Flickr's justified view
- * For usage information refer to http://github.com/kalyan02/flowr-js
- *
- *
- * @author: Kalyan Chakravarthy (http://KalyanChakravarthy.net)
- * @version: v0.1
- */
-(function($) {
- //$("#container2").css( 'border', '1px solid #ccc');
- $.fn.flowr = function(options) {
-
- $this = this;
- var ROW_CLASS_NAME = 'flowr-row'; // Class name for the row of flowy
- var MAX_LAST_ROW_GAP = 25; // If the width of last row is lesser than max-width, recalculation is needed
- var NO_COPY_FIELDS = ['complete', 'data', 'responsive']; // these attributes will not be carried forward for append related calls
- var DEFAULTS = {
- 'data': [],
- 'padding': 5, // whats the padding between flowy items
- 'height': 240, // Minimum height an image row should take
- 'render': null, // callback function to get the tag
- 'append': false, // TODO
- 'widthAttr': 'width', // a custom data structure can specify which attribute refers to height/width
- 'heightAttr': 'height',
- 'maxScale': 1.5, // In case there is only 1 elment in last row
- 'maxWidth': this.width() - 1, // 1px is just for offset
- 'itemWidth': null, // callback function for width
- 'itemHeight': null, // callback function for height
- 'complete': null, // complete callback
- 'rowClassName': ROW_CLASS_NAME,
- 'rows': -1, // Maximum number of rows to render. -1 for no limit.
- 'responsive': true // make content responsive
- };
- var settings = $.extend(DEFAULTS, options);
-
- // If data is being appended, we already have settings
- // If we already have settings, retrieve them
- if (settings.append && $this.data('lastSettings')) {
- lastSettings = $this.data('lastSettings');
-
- // Copy over the settings from previous init
- for (attr in DEFAULTS) {
- if (NO_COPY_FIELDS.indexOf(attr) < 0 && settings[attr] == DEFAULTS[attr]) {
- settings[attr] = lastSettings[attr];
- }
- }
-
- // Check if we have an incomplete last row
- lastRow = $this.data('lastRow');
- if (lastRow.data.length > 0 && settings.maxWidth - lastRow.width > MAX_LAST_ROW_GAP) {
- // Prepend the incomplete row to newly loaded data and redraw
- lastRowData = lastSettings.data.slice(lastSettings.data.length - lastRow.data.length - 1);
- settings.data = lastRowData.concat(settings.data);
-
- // Remove the incomplete row
- // TODO: Don't reload this stuff later. Reattach to new row.
- $('.' + settings.rowClassName + ':last', $this).detach();
- } else {
- // console.log( lastRow.data.length );
- // console.log( lastRow.width );
- }
- }
-
- // only on the first initial call
- if (!settings.responsive && !settings.append)
- $this.width($this.width());
-
- // Basic sanity checks
- if (!(settings.data instanceof Array))
- return;
-
- if (typeof(settings.padding) != 'number')
- settings.padding = parseInt(settings.padding);
-
- if (typeof(settings.itemWidth) != 'function') {
- settings.itemWidth = function(data) {
- return data[settings.widthAttr];
- }
- }
-
- if (typeof(settings.itemHeight) != 'function') {
- settings.itemHeight = function(data) {
- return data[settings.heightAttr];
- }
- }
-
- // A standalone utility to calculate the item widths for a particular row
- // Returns rowWidth: width occupied & data : the items in the new row
- var utils = {
- getNextRow: function(data, settings) {
- var itemIndex = 0;
- var itemsLength = data.length;
- var lineItems = [];
- var lineWidth = 0;
- var maxWidth = settings.maxWidth;
- var paddingSize = settings.padding;
-
- // console.log( 'maxItems=' + data.length );
-
- requiredPadding = function() {
- var extraPads = arguments.length == 1 ? arguments[0] : 0;
- return (lineItems.length - 1 + extraPads) * settings.padding;
- }
-
- while (lineWidth + requiredPadding() < settings.maxWidth && (itemIndex < itemsLength)) {
- var itemData = data[itemIndex];
- var itemWidth = settings.itemWidth.call($this, itemData);
- var itemHeight = settings.itemHeight.call($this, itemData);
-
- var minHeight = settings.height;
- var minWidth = Math.floor(itemWidth * settings.height / itemHeight);
-
-
- if (minWidth > settings.maxWidth) {
- // very short+wide images like panoramas
- // show them even if ugly, as wide as possible
- minWidth = settings.maxWidth - 1 - requiredPadding(1);
- minHeight = settings.height * minHeight / minWidth;
- }
- var newLineWidth = lineWidth + minWidth;
-
- // console.log( 'lineWidth = ' + lineWidth );
- // console.log( 'newLineWidth = ' + newLineWidth );
- if (newLineWidth < settings.maxWidth) {
- lineItems.push({
- 'height': minHeight,
- 'width': minWidth,
- 'itemData': itemData
- });
-
- lineWidth += minWidth;
- itemIndex++;
- } else {
- // We'd have exceeded width. So break off to scale.
- // console.log( 'breaking off = ' + itemIndex );
- // console.log( 'leave off size = ' + lineItems.length );
- break;
- }
- } //while
-
- // Scale the size to max width
- testWidth = 0;
- if (lineWidth < settings.maxWidth) {
- var fullScaleWidth = settings.maxWidth - requiredPadding() - 10;
- var currScaleWidth = lineWidth;
- var scaleFactor = fullScaleWidth / currScaleWidth;
- if (scaleFactor > settings.maxScale)
- scaleFactor = 1;
-
- var newHeight = Math.round(settings.height * scaleFactor);
- for (i = 0; i < lineItems.length; i++) {
- var lineItem = lineItems[i];
- lineItem.width = Math.floor(lineItem.width * scaleFactor);
- lineItem.height = newHeight;
-
- testWidth += lineItem.width;
- }
- }
-
- return {
- data: lineItems,
- width: testWidth + requiredPadding()
- };
- }, //getNextRow
- reorderContent: function() {
- /*
- TODO: optimize for faster resizing by reusing dom objects instead of killing the dom
- */
- var _initialWidth = $this.data('width');
- var _newWidth = $this.width();
- var _change = _initialWidth - _newWidth;
-
- if (_initialWidth != _newWidth) {
- $this.html('');
- var _settings = $this.data('lastSettings');
- _settings.data = $this.data('data');
- _settings.maxWidth = $this.width() - 1;
- $this.flowr(_settings);
- }
- }
- } //utils
-
- // If the responsive var is set to true then listen for resize method
- // and prevent resizing from happening twice if responsive is set again during append phase!
- if (settings.responsive && !$this.data('__responsive')) {
- $(window).resize(function() {
- initialWidth = $this.data('width');
- newWidth = $this.width();
-
- //initiate resize
- if (initialWidth != newWidth) {
- var task_id = $this.data('task_id');
- if (task_id) {
- task_id = clearTimeout(task_id);
- task_id = null;
- }
- task_id = setTimeout(utils.reorderContent, 80);
- $this.data('task_id', task_id);
- }
- });
- $this.data('__responsive', true);
- }
-
-
- return this.each(function() {
-
- // Get a copy of original data. 1 level deep copy is sufficient.
- var data = settings.data.slice(0);
- var rowData = null;
- var currentRow = 0;
- var currentItem = 0;
-
- // Store all the data
- var allData = [];
- for (i = 0; i < data.length; i++) {
- allData.push(data[i]);
- }
- $this.data('data', allData);
-
- // While we have a new row
- while ((rowData = utils.getNextRow(data, settings)) != null && rowData.data.length > 0) {
- if (settings.rows > 0 && currentRow >= settings.rows)
- break;
- // remove the number of elements in the new row from the top of data stack
- data.splice(0, rowData.data.length);
-
- // Create a new row div, add class, append the htmls and insert the flowy items
- var $row = $('<div>').addClass(settings.rowClassName);
- var slack = $this[0].clientWidth - rowData.width - 2 * settings.padding
- for (i = 0; i < rowData.data.length; i++) {
- var displayData = rowData.data[i];
- // Get the HTML object from custom render function passed as argument
- var displayObject = settings.render.call($this, displayData);
- displayObject = $(displayObject);
- extraw = Math.floor(slack/rowData.data.length)
- if (i == 0) {
- extraw += slack % rowData.data.length
- }
- // Set some basic stuff
- displayObject
- .css('width', displayData.width + extraw)
- .css('height', displayData.height)
- .css('margin-bottom', settings.padding + "px")
- .css('margin-left', i == 0 ? '0' : settings.padding + "px"); //TODO:Refactor
- $row.append(displayObject);
-
- currentItem++;
- }
- $this.append($row);
- // console.log ( "I> rowData.data.length="+rowData.data.length +" rowData.width="+rowData.width );
-
- currentRow++;
- $this.data('lastRow', rowData);
- }
- // store the current state of settings and the items in last row
- // we'll need this info when we append more items
- $this.data('lastSettings', settings);
-
- // onComplete callback
- // pass back info about list of rows and items rendered
- if (typeof(settings.complete) == 'function') {
- var completeData = {
- renderedRows: currentRow,
- renderedItems: currentItem
- }
- settings.complete.call($this, completeData);
- }
- });
- };
-
-})(jQuery);
diff --git a/nikola/data/themes/bootstrap3/assets/js/jquery.colorbox-min.js b/nikola/data/themes/bootstrap3/assets/js/jquery.colorbox-min.js
deleted file mode 120000
index 9e40fd4..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/jquery.colorbox-min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery-colorbox/jquery.colorbox-min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/jquery.colorbox.js b/nikola/data/themes/bootstrap3/assets/js/jquery.colorbox.js
deleted file mode 120000
index 5ee7a90..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/jquery.colorbox.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery-colorbox/jquery.colorbox.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/jquery.js b/nikola/data/themes/bootstrap3/assets/js/jquery.js
deleted file mode 120000
index 966173b..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/jquery.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery/dist/jquery.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/jquery.min.js b/nikola/data/themes/bootstrap3/assets/js/jquery.min.js
deleted file mode 120000
index 5c080da..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/jquery.min.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery/dist/jquery.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/js/jquery.min.map b/nikola/data/themes/bootstrap3/assets/js/jquery.min.map
deleted file mode 120000
index 7e2c217..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/jquery.min.map
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../bower_components/jquery/dist/jquery.min.map \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/bundles b/nikola/data/themes/bootstrap3/bundles
deleted file mode 100644
index 8bdc591..0000000
--- a/nikola/data/themes/bootstrap3/bundles
+++ /dev/null
@@ -1,4 +0,0 @@
-assets/css/all-nocdn.css=bootstrap.css,rst.css,code.css,colorbox.css,theme.css,custom.css
-assets/css/all.css=rst.css,code.css,colorbox.css,theme.css,custom.css
-assets/js/all-nocdn.js=jquery.min.js,bootstrap.min.js,jquery.colorbox-min.js,moment-with-locales.min.js,fancydates.js
-assets/js/all.js=jquery.colorbox-min.js,moment-with-locales.min.js,fancydates.js
diff --git a/nikola/data/themes/bootstrap3/engine b/nikola/data/themes/bootstrap3/engine
deleted file mode 100644
index 2951cdd..0000000
--- a/nikola/data/themes/bootstrap3/engine
+++ /dev/null
@@ -1 +0,0 @@
-mako
diff --git a/nikola/data/themes/bootstrap3/parent b/nikola/data/themes/bootstrap3/parent
deleted file mode 100644
index df967b9..0000000
--- a/nikola/data/themes/bootstrap3/parent
+++ /dev/null
@@ -1 +0,0 @@
-base
diff --git a/nikola/data/themes/bootstrap3/templates/base.tmpl b/nikola/data/themes/bootstrap3/templates/base.tmpl
deleted file mode 100644
index 2f7a290..0000000
--- a/nikola/data/themes/bootstrap3/templates/base.tmpl
+++ /dev/null
@@ -1,94 +0,0 @@
-## -*- coding: utf-8 -*-
-<%namespace name="base" file="base_helper.tmpl" import="*" />
-<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
-${set_locale(lang)}
-${base.html_headstart()}
-<%block name="extra_head">
-### Leave this block alone.
-</%block>
-${template_hooks['extra_head']()}
-</head>
-<body>
-<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
-
-<!-- Menubar -->
-
-<nav class="navbar navbar-inverse navbar-static-top">
- <div class="container"><!-- This keeps the margins nice -->
- <div class="navbar-header">
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false">
- <span class="sr-only">${messages("Toggle navigation")}</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- <a class="navbar-brand" href="${abs_link(_link("root", None, lang))}">
- %if logo_url:
- <img src="${logo_url}" alt="${blog_title|h}" id="logo">
- %endif
-
- % if show_blog_title:
- <span id="blog-title">${blog_title|h}</span>
- % endif
- </a>
- </div><!-- /.navbar-header -->
- <div class="collapse navbar-collapse" id="bs-navbar" aria-expanded="false">
- <ul class="nav navbar-nav">
- ${base.html_navigation_links()}
- ${template_hooks['menu']()}
- </ul>
- %if search_form:
- ${search_form}
- %endif
-
- <ul class="nav navbar-nav navbar-right">
- <%block name="belowtitle">
- %if len(translations) > 1:
- <li>${base.html_translations()}</li>
- %endif
- </%block>
- % if show_sourcelink:
- <%block name="sourcelink"></%block>
- %endif
- ${template_hooks['menu_alt']()}
- </ul>
- </div><!-- /.navbar-collapse -->
- </div><!-- /.container -->
-</nav>
-
-<!-- End of Menubar -->
-
-<div class="container" id="content" role="main">
- <div class="body-content">
- <!--Body content-->
- <div class="row">
- ${template_hooks['page_header']()}
- <%block name="content"></%block>
- </div>
- <!--End of body content-->
-
- <footer id="footer">
- ${content_footer}
- ${template_hooks['page_footer']()}
- </footer>
- </div>
-</div>
-
-${base.late_load_js()}
- <script>$('a.image-reference:not(.islink) img:not(.islink)').parent().colorbox({rel:"gal",maxWidth:"100%",maxHeight:"100%",scalePhotos:true});</script>
- <!-- fancy dates -->
- <script>
- moment.locale("${momentjs_locales[lang]}");
- fancydates(${date_fanciness}, ${js_date_format});
- </script>
- <!-- end fancy dates -->
- <%block name="extra_js"></%block>
- % if annotations and post and not post.meta('noannotations'):
- ${notes.code()}
- % elif not annotations and post and post.meta('annotations'):
- ${notes.code()}
- % endif
-${body_end}
-${template_hooks['body_end']()}
-</body>
-</html>
diff --git a/nikola/data/themes/bootstrap3/templates/base_helper.tmpl b/nikola/data/themes/bootstrap3/templates/base_helper.tmpl
deleted file mode 100644
index 20b135b..0000000
--- a/nikola/data/themes/bootstrap3/templates/base_helper.tmpl
+++ /dev/null
@@ -1,188 +0,0 @@
-## -*- coding: utf-8 -*-
-
-<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
-<%def name="html_headstart()">
-<!DOCTYPE html>
-<html
-\
-% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) or (comment_system == 'facebook'):
-prefix='\
-%if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']):
-og: http://ogp.me/ns# \
-%endif
-%if use_open_graph:
-article: http://ogp.me/ns/article# \
-%endif
-%if comment_system == 'facebook':
-fb: http://ogp.me/ns/fb# \
-%endif
-'\
-%endif
-\
-% if is_rtl:
-dir="rtl" \
-% endif
-\
-lang="${lang}">
- <head>
- <meta charset="utf-8">
- % if use_base_tag:
- <base href="${abs_link(permalink)}">
- % endif
- %if description:
- <meta name="description" content="${description|h}">
- %endif
- <meta name="viewport" content="width=device-width, initial-scale=1">
- %if title == blog_title:
- <title>${blog_title|h}</title>
- %else:
- <title>${title|h} | ${blog_title|h}</title>
- %endif
-
- ${html_stylesheets()}
- <meta content="${theme_color}" name="theme-color">
- ${html_feedlinks()}
- <link rel="canonical" href="${abs_link(permalink)}">
-
- %if favicons:
- %for name, file, size in favicons:
- <link rel="${name}" href="${file}" sizes="${size}"/>
- %endfor
- %endif
-
- % if comment_system == 'facebook':
- <meta property="fb:app_id" content="${comment_system_id}">
- % endif
-
- %if prevlink:
- <link rel="prev" href="${prevlink}" type="text/html">
- %endif
- %if nextlink:
- <link rel="next" href="${nextlink}" type="text/html">
- %endif
-
- ${mathjax_config}
- %if use_cdn:
- <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
- %else:
- <!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5.js', lang)}"></script><![endif]-->
- %endif
-
- ${extra_head_data}
-</%def>
-
-<%def name="late_load_js()">
- %if use_bundles:
- %if use_cdn:
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
-
- <script src="/assets/js/all.js"></script>
- %else:
- <script src="/assets/js/all-nocdn.js"></script>
- %endif
- %else:
- %if use_cdn:
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
- %else:
- <script src="/assets/js/jquery.min.js"></script>
- <script src="/assets/js/bootstrap.min.js"></script>
- <script src="/assets/js/moment-with-locales.min.js"></script>
- <script src="/assets/js/fancydates.js"></script>
- %endif
- <script src="/assets/js/jquery.colorbox-min.js"></script>
- %endif
- %if colorbox_locales[lang]:
- <script src="/assets/js/colorbox-i18n/jquery.colorbox-${colorbox_locales[lang]}.js"></script>
- %endif
- ${social_buttons_code}
-</%def>
-
-
-<%def name="html_stylesheets()">
- %if use_bundles:
- %if use_cdn:
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
- %else:
- <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
- %endif
- %else:
- %if use_cdn:
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- %else:
- <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
- %endif
- <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/colorbox.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
- %if has_custom_css:
- <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
- %endif
- %endif
- % if needs_ipython_css:
- <link href="/assets/css/ipython.min.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
- % endif
- % if annotations and post and not post.meta('noannotations'):
- ${notes.css()}
- % elif not annotations and post and post.meta('annotations'):
- ${notes.css()}
- % endif
-</%def>
-
-<%def name="html_navigation_links()">
- %for url, text in navigation_links[lang]:
- % if isinstance(url, tuple):
- <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">${text} <b class="caret"></b></a>
- <ul class="dropdown-menu">
- %for suburl, text in url:
- % if rel_link(permalink, suburl) == "#":
- <li class="active"><a href="${permalink}">${text} <span class="sr-only">${messages("(active)", lang)}</span></a>
- %else:
- <li><a href="${suburl}">${text}</a>
- %endif
- %endfor
- </ul>
- % else:
- % if rel_link(permalink, url) == "#":
- <li class="active"><a href="${permalink}">${text} <span class="sr-only">${messages("(active)", lang)}</span></a>
- %else:
- <li><a href="${url}">${text}</a>
- %endif
- % endif
- %endfor
-</%def>
-
-<%def name="html_feedlinks()">
- %if rss_link:
- ${rss_link}
- %elif generate_rss:
- %if len(translations) > 1:
- %for language in sorted(translations):
- <link rel="alternate" type="application/rss+xml" title="RSS (${language})" href="${_link('rss', None, language)}">
- %endfor
- %else:
- <link rel="alternate" type="application/rss+xml" title="RSS" href="${_link('rss', None)}">
- %endif
- %endif
- %if generate_atom:
- %if len(translations) > 1:
- %for language in sorted(translations):
- <link rel="alternate" type="application/atom+xml" title="Atom (${language})" href="${_link('index_atom', None, language)}">
- %endfor
- %else:
- <link rel="alternate" type="application/atom+xml" title="Atom" href="${_link('index_atom', None)}">
- %endif
- %endif
-</%def>
-
-<%def name="html_translations()">
- %for langname in sorted(translations):
- %if langname != lang:
- <li><a href="${abs_link(_link("root", None, langname))}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
- %endif
- %endfor
-</%def>
diff --git a/nikola/data/themes/bootstrap3/templates/gallery.tmpl b/nikola/data/themes/bootstrap3/templates/gallery.tmpl
deleted file mode 100644
index 3dbfa82..0000000
--- a/nikola/data/themes/bootstrap3/templates/gallery.tmpl
+++ /dev/null
@@ -1,95 +0,0 @@
-## -*- coding: utf-8 -*-
-<%inherit file="base.tmpl"/>
-<%namespace name="comments" file="comments_helper.tmpl"/>
-<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
-<%block name="sourcelink"></%block>
-
-<%block name="content">
- ${ui.bar(crumbs)}
- %if title:
- <h1>${title|h}</h1>
- %endif
- %if post:
- <p>
- ${post.text()}
- </p>
- %endif
- %if folders:
- <ul>
- % for folder, ftitle in folders:
- <li><a href="${folder}"><i class="glyphicon glyphicon-folder-open"></i>&nbsp;${ftitle|h}</a></li>
- % endfor
- </ul>
- %endif
-
-<div id="gallery_container"></div>
-%if photo_array:
-<noscript>
-<ul class="thumbnails">
- %for image in photo_array:
- <li><a href="${image['url']}" class="thumbnail image-reference" title="${image['title']|h}">
- <img src="${image['url_thumb']}" alt="${image['title']|h}" /></a>
- %endfor
-</ul>
-</noscript>
-%endif
-%if site_has_comments and enable_comments:
-${comments.comment_form(None, permalink, title)}
-%endif
-</%block>
-
-<%block name="extra_head">
-${parent.extra_head()}
-<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
-<style type="text/css">
- .image-block {
- display: inline-block;
- }
- .flowr_row {
- width: 100%;
- }
- </style>
-</%block>
-
-
-<%block name="extra_js">
-<script src="/assets/js/flowr.plugin.js"></script>
-<script>
-jsonContent = ${photo_array_json};
-$("#gallery_container").flowr({
- data : jsonContent,
- height : ${thumbnail_size}*.6,
- padding: 5,
- rows: -1,
- render : function(params) {
- // Just return a div, string or a dom object, anything works fine
- img = $("<img />").attr({
- 'src': params.itemData.url_thumb,
- 'width' : params.width,
- 'height' : params.height
- }).css('max-width', '100%');
- link = $( "<a></a>").attr({
- 'href': params.itemData.url,
- 'class': 'image-reference'
- });
- div = $("<div />").addClass('image-block').attr({
- 'title': params.itemData.title,
- 'data-toggle': "tooltip",
- });
- link.append(img);
- div.append(link);
- div.hover(div.tooltip());
- return div;
- },
- itemWidth : function(data) { return data.size.w; },
- itemHeight : function(data) { return data.size.h; },
- complete : function(params) {
- if( jsonContent.length > params.renderedItems ) {
- nextRenderList = jsonContent.slice( params.renderedItems );
- }
- }
- });
-$("a.image-reference").colorbox({rel:"gal", maxWidth:"100%",maxHeight:"100%",scalePhotos:true});
-$('a.image-reference[href="'+window.location.hash.substring(1,1000)+'"]').click();
-</script>
-</%block>
diff --git a/nikola/data/themes/bootstrap3/templates/slides.tmpl b/nikola/data/themes/bootstrap3/templates/slides.tmpl
deleted file mode 100644
index a73848a..0000000
--- a/nikola/data/themes/bootstrap3/templates/slides.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<%block name="content">
-<div id="${carousel_id}" class="carousel slide">
- <ol class="carousel-indicators">
- % for i in range(len(slides_content)):
- % if i == 0:
- <li data-target="#${carousel_id}" data-slide-to="${i}" class="active"></li>
- % else:
- <li data-target="#${carousel_id}" data-slide-to="${i}"></li>
- % endif
- % endfor
- </ol>
- <div class="carousel-inner">
- % for i, image in enumerate(slides_content):
- % if i == 0:
- <div class="item active"><img src="${image}" alt="" style="margin: 0 auto 0 auto;"></div>
- % else:
- <div class="item"><img src="${image}" alt="" style="margin: 0 auto 0 auto;"></div>
- % endif
- % endfor
- </div>
- <a class="left carousel-control" href="#${carousel_id}" data-slide="prev"><span class="icon-prev"></span></a>
- <a class="right carousel-control" href="#${carousel_id}" data-slide="next"><span class="icon-next"></span></a>
-</div>
-</%block>
diff --git a/nikola/data/themes/bootstrap4-jinja/README.md b/nikola/data/themes/bootstrap4-jinja/README.md
new file mode 100644
index 0000000..bb1b484
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/README.md
@@ -0,0 +1,10 @@
+This is a theme based on Bootstrap 4.
+
+The theme is a good building block for a site. It is based on a simple navbar +
+content layout. For a more blog-style layout, check out `bootblog4`.
+
+Note that unlike previous versions of Bootstrap, icon fonts are not built-in.
+You can use Font Awesome for this.
+
+This theme supports Bootswatch font/color schemes through the `nikola
+bootwatch_theme` command.
diff --git a/nikola/data/themes/bootstrap4-jinja/assets/css/bootstrap.min.css b/nikola/data/themes/bootstrap4-jinja/assets/css/bootstrap.min.css
new file mode 120000
index 0000000..8c8dc62
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/assets/css/bootstrap.min.css
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/bootstrap/dist/css/bootstrap.min.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/assets/css/theme.css b/nikola/data/themes/bootstrap4-jinja/assets/css/theme.css
index 52466de..20eee8e 100644
--- a/nikola/data/themes/bootstrap3-jinja/assets/css/theme.css
+++ b/nikola/data/themes/bootstrap4-jinja/assets/css/theme.css
@@ -1,29 +1,11 @@
-#container {
- width: 960px;
- margin: 0 auto;
-}
-
-#contentcolumn {
- max-width: 760px;
-}
-#q {
- width: 150px;
-}
-
img {
- max-width: 90%;
-}
-
-.postbox {
- border-bottom: 2px solid darkgrey;
- margin-bottom: 12px;
+ max-width: 100%;
}
.titlebox {
text-align: right;
}
-#addthisbox {margin-bottom: 12px;}
td.label {
/* Issue #290 */
@@ -36,7 +18,6 @@ td.label {
font-size: xx-small;
}
-
.caption {
/* Issue 292 */
text-align: center;
@@ -52,7 +33,7 @@ div.figure > a > img {
}
blockquote p, blockquote {
- font-size: 17.5px;
+ font-size: 1.25rem;
font-weight: 300;
line-height: 1.25;
}
@@ -67,10 +48,6 @@ ul.bricks > li {
margin: 3px;
}
-.at300b, .stMainServices, .stButton, .stButton_gradient {
- box-sizing: content-box;
-}
-
pre, pre code {
white-space: pre;
word-wrap: normal;
@@ -86,10 +63,6 @@ article.post-micro {
display: inline-block;
}
-.flowr_row {
- width: 100%;
-}
-
.tags {
padding-left: 0;
margin-left: -5px;
@@ -100,21 +73,25 @@ article.post-micro {
.tags > li {
display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: bold;
+}
+.tags > li a {
+ display: inline-block;
+ padding: .25em .4em;
+ font-size: 75%;
+ font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
- background-color: #999;
- border-radius: 10px;
+ border-radius: .25rem;
+ background-color: #868e96;
}
-.tags > li a {
+.tags > li a:hover {
color: #fff;
+ text-decoration: none;
+ background-color: #6c757d;
}
.metadata p:before,
@@ -144,27 +121,6 @@ article.post-micro {
margin-top: 1em;
}
-.navbar-brand {
- padding: 0 15px;
-}
-
-.navbar-brand #blog-title {
- padding: 15px 0;
- display: inline-block;
-}
-
-.navbar-brand #logo {
- max-width: 100%;
-}
-
-.navbar-brand>img {
- display: inline;
-}
-
-.row {
- margin: 0;
-}
-
/* for alignment with Bootstrap's .entry-content styling */
.entry-summary {
margin-top: 1em;
@@ -177,14 +133,6 @@ article.post-micro {
border-top: 1px solid #e5e5e5;
}
-.codetable {
- table-layout: fixed;
-}
-
-.codetable pre {
- overflow-x: scroll;
-}
-
/* hat tip bootstrap/html5 boilerplate */
@media print {
*, *:before, *:after {
@@ -213,3 +161,72 @@ article.post-micro {
display: none;
}
}
+
+pre, .codetable {
+ border: 1px solid #ccc;
+ border-radius: 0.25rem;
+ margin-bottom: 1rem;
+}
+
+pre {
+ padding: 0.75rem;
+}
+
+.codetable tr:first-child td.linenos {
+ border-top-left-radius: 0.25rem;
+}
+
+.codetable tr:last-child td.linenos {
+ border-bottom-left-radius: 0.25rem;
+}
+
+.postindexpager {
+ padding-bottom: 1rem;
+}
+
+ul.navbar-nav {
+ margin-top: 0;
+}
+
+ul.pager {
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+ border-radius: .25rem;
+ padding-left: 0;
+ margin: 0.5rem 0;
+}
+
+ul.pager li.previous {
+ margin-right: auto;
+ display: inline;
+}
+
+ul.pager li.next {
+ margin-left: auto;
+ display: inline;
+}
+
+
+ul.pager li a {
+ display: inline;
+ position: relative;
+ padding: .5rem .75rem;
+ margin-left: -1px;
+ line-height: 1.25;
+ border: 1px solid #ddd;
+ border-radius: .25rem;
+}
+
+pre.code {
+ white-space: pre-wrap;
+}
+
+.byline a:not(:last-child):after {
+ content: ",";
+}
+
+/* Override incorrect Bootstrap 4 default */
+html[dir="rtl"] body {
+ text-align: right;
+}
diff --git a/nikola/data/themes/bootstrap4-jinja/assets/js/bootstrap.min.js b/nikola/data/themes/bootstrap4-jinja/assets/js/bootstrap.min.js
new file mode 120000
index 0000000..593bffb
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/assets/js/bootstrap.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/bootstrap/dist/js/bootstrap.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap4-jinja/assets/js/jquery.min.js b/nikola/data/themes/bootstrap4-jinja/assets/js/jquery.min.js
new file mode 120000
index 0000000..2a592f6
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/assets/js/jquery.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/jquery/dist/jquery.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap4-jinja/assets/js/popper.min.js b/nikola/data/themes/bootstrap4-jinja/assets/js/popper.min.js
new file mode 120000
index 0000000..43fca04
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/assets/js/popper.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/popper.js/dist/umd/popper.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap4-jinja/bootstrap4-jinja.theme b/nikola/data/themes/bootstrap4-jinja/bootstrap4-jinja.theme
new file mode 100644
index 0000000..be27ebc
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/bootstrap4-jinja.theme
@@ -0,0 +1,12 @@
+[Theme]
+engine = jinja
+parent = base-jinja
+author = The Nikola Contributors
+author_url = https://getnikola.com/
+license = MIT
+based_on = Bootstrap 4 <http://getbootstrap.com/>
+tags = bootstrap
+
+[Family]
+family = bootstrap4
+mako-version = bootstrap4
diff --git a/nikola/data/themes/bootstrap4-jinja/bundles b/nikola/data/themes/bootstrap4-jinja/bundles
new file mode 120000
index 0000000..500c93e
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/bundles
@@ -0,0 +1 @@
+../bootstrap4/bundles \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/authors.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/authors.tmpl
index d65c727..922de74 100644
--- a/nikola/data/themes/bootstrap3-jinja/templates/authors.tmpl
+++ b/nikola/data/themes/bootstrap4-jinja/templates/authors.tmpl
@@ -1,9 +1,17 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block extra_head %}
+ {{ feeds_translations.head(kind=kind, feeds=False) }}
+{% endblock %}
{% block content %}
{% if items %}
<h2>{{ messages("Authors") }}</h2>
+ <div class="metadata">
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
{% endif %}
{% if items %}
<ul class="list-inline">
diff --git a/nikola/data/themes/bootstrap4-jinja/templates/base.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/base.tmpl
new file mode 100644
index 0000000..0748bb2
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/base.tmpl
@@ -0,0 +1,105 @@
+{# -*- coding: utf-8 -*- #}
+{% import 'base_helper.tmpl' as base with context %}
+{% import 'annotation_helper.tmpl' as notes with context %}
+{{ set_locale(lang) }}
+{{ base.html_headstart() }}
+{% block extra_head %}
+{# Leave this block alone. #}
+{% endblock %}
+{{ template_hooks['extra_head']() }}
+</head>
+<body>
+<a href="#content" class="sr-only sr-only-focusable">{{ messages("Skip to main content") }}</a>
+
+<!-- Menubar -->
+
+<nav class="navbar navbar-expand-md static-top mb-4
+{% if theme_config.get('navbar_light') %}
+navbar-light
+{% else %}
+navbar-dark
+{% endif %}
+{% if theme_config.get('navbar_custom_bg') %}
+{{ theme_config['navbar_custom_bg'] }}
+{% elif theme_config.get('navbar_light') %}
+bg-light
+{% else %}
+bg-dark
+{% endif %}
+">
+ <div class="container"><!-- This keeps the margins nice -->
+ <a class="navbar-brand" href="{{ _link("root", None, lang) }}">
+ {% if logo_url %}
+ <img src="{{ logo_url }}" alt="{{ blog_title|e }}" id="logo" class="d-inline-block align-top">
+ {% endif %}
+
+ {% if show_blog_title %}
+ <span id="blog-title">{{ blog_title|e }}</span>
+ {% endif %}
+ </a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+ <div class="collapse navbar-collapse" id="bs-navbar">
+ <ul class="navbar-nav mr-auto">
+ {{ base.html_navigation_links_entries(navigation_links) }}
+ {{ template_hooks['menu']() }}
+ </ul>
+ {% if search_form %}
+ {{ search_form }}
+ {% endif %}
+
+ <ul class="navbar-nav navbar-right">
+ {{ base.html_navigation_links_entries(navigation_alt_links) }}
+ {% block belowtitle %}
+ {% if translations|length > 1 %}
+ <li>{{ base.html_translations() }}</li>
+ {% endif %}
+ {% endblock %}
+ {% if show_sourcelink %}
+ {% block sourcelink %}{% endblock %}
+ {% endif %}
+ {{ template_hooks['menu_alt']() }}
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container -->
+</nav>
+
+<!-- End of Menubar -->
+
+<div class="container" id="content" role="main">
+ <div class="body-content">
+ <!--Body content-->
+ {{ template_hooks['page_header']() }}
+ {% block extra_header %}{% endblock %}
+ {% block content %}{% endblock %}
+ <!--End of body content-->
+
+ <footer id="footer">
+ {{ content_footer }}
+ {{ template_hooks['page_footer']() }}
+ {% block extra_footer %}{% endblock %}
+ </footer>
+ </div>
+</div>
+
+{{ base.late_load_js() }}
+ {% if date_fanciness != 0 %}
+ <!-- fancy dates -->
+ <script>
+ luxon.Settings.defaultLocale = "{{ luxon_locales[lang] }}";
+ fancydates({{ date_fanciness }}, {{ luxon_date_format }});
+ </script>
+ <!-- end fancy dates -->
+ {% endif %}
+ {% block extra_js %}{% endblock %}
+ <script>
+ baguetteBox.run('div#content', {
+ ignoreClass: 'islink',
+ captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
+ </script>
+{{ body_end }}
+{{ template_hooks['body_end']() }}
+</body>
+</html>
diff --git a/nikola/data/themes/bootstrap4-jinja/templates/base_helper.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/base_helper.tmpl
new file mode 100644
index 0000000..b4bcf85
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/base_helper.tmpl
@@ -0,0 +1,165 @@
+{# -*- coding: utf-8 -*- #}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% macro html_headstart() %}
+<!DOCTYPE html>
+<html
+
+prefix='
+og: http://ogp.me/ns# article: http://ogp.me/ns/article#
+{% if comment_system == 'facebook' %}
+fb: http://ogp.me/ns/fb#
+{% endif %}
+'
+{% if is_rtl %}
+dir="rtl"
+{% endif %}
+
+lang="{{ lang }}">
+ <head>
+ <meta charset="utf-8">
+ {% if description %}
+ <meta name="description" content="{{ description|e }}">
+ {% endif %}
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ {% if title == blog_title %}
+ <title>{{ blog_title|e }}</title>
+ {% else %}
+ <title>{{ title|e }} | {{ blog_title|e }}</title>
+ {% endif %}
+
+ {{ html_stylesheets() }}
+ <meta name="theme-color" content="{{ theme_color }}">
+ {% if meta_generator_tag %}
+ <meta name="generator" content="Nikola (getnikola.com)">
+ {% endif %}
+ {{ html_feedlinks() }}
+ <link rel="canonical" href="{{ abs_link(permalink) }}">
+
+ {% if favicons %}
+ {% for name, file, size in favicons %}
+ <link rel="{{ name }}" href="{{ file }}" sizes="{{ size }}"/>
+ {% endfor %}
+ {% endif %}
+
+ {% if comment_system == 'facebook' %}
+ <meta property="fb:app_id" content="{{ comment_system_id }}">
+ {% endif %}
+
+ {% if prevlink %}
+ <link rel="prev" href="{{ prevlink }}" type="text/html">
+ {% endif %}
+ {% if nextlink %}
+ <link rel="next" href="{{ nextlink }}" type="text/html">
+ {% endif %}
+
+ {% if use_cdn %}
+ <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ {% else %}
+ <!--[if lt IE 9]><script src="{{ url_replacer(permalink, '/assets/js/html5.js', lang, url_type) }}"></script><![endif]-->
+ {% endif %}
+
+ {{ extra_head_data }}
+{% endmacro %}
+
+{% macro late_load_js() %}
+ {% if use_cdn %}
+ <script src="http://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ {% endif %}
+ {% if use_bundles and use_cdn %}
+ <script src="/assets/js/all.js"></script>
+ {% elif use_bundles %}
+ <script src="/assets/js/all-nocdn.js"></script>
+ {% else %}
+ {% if not use_cdn %}
+ <script src="/assets/js/jquery.min.js"></script>
+ <script src="/assets/js/popper.min.js"></script>
+ <script src="/assets/js/bootstrap.min.js"></script>
+ <script src="/assets/js/baguetteBox.min.js"></script>
+ {% endif %}
+ {% endif %}
+ {% if date_fanciness != 0 %}
+ {% if date_fanciness == 2 %}
+ <script src="https://polyfill.io/v3/polyfill.js?features=Intl.RelativeTimeFormat.%7Elocale.{{ luxon_locales[lang] }}"></script>
+ {% endif %}
+ {% if use_cdn %}
+ <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js" integrity="sha256-OVk2fwTRcXYlVFxr/ECXsakqelJbOg5WCj1dXSIb+nU=" crossorigin="anonymous"></script>
+ {% else %}
+ <script src="/assets/js/luxon.min.js"></script>
+ {% endif %}
+ {% if not use_bundles %}
+ <script src="/assets/js/fancydates.min.js"></script>
+ {% endif %}
+ {% endif %}
+ {{ social_buttons_code }}
+{% endmacro %}
+
+
+{% macro html_stylesheets() %}
+ {% if use_cdn %}
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" integrity="sha256-cLMYWYYutHkt+KpNqjg7NVkYSQ+E2VbrXsEvOqU7mL0=" crossorigin="anonymous">
+ {% endif %}
+ {% if use_bundles and use_cdn %}
+ <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
+ {% elif use_bundles %}
+ <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
+ {% else %}
+ {% if not use_cdn %}
+ <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/baguetteBox.min.css" rel="stylesheet" type="text/css">
+ {% endif %}
+ <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
+ {% if has_custom_css %}
+ <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
+ {% endif %}
+ {% endif %}
+ {% if needs_ipython_css %}
+ <link href="/assets/css/ipython.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
+ {% endif %}
+{% endmacro %}
+
+{% macro html_navigation_links() %}
+ {{ html_navigation_links_entries(navigation_links) }}
+{% endmacro %}
+
+{% macro html_navigation_links_entries(navigation_links_source) %}
+ {% for url, text in navigation_links_source[lang] %}
+ {% if isinstance(url, tuple) %}
+ <li class="nav-item dropdown"><a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ text }}</a>
+ <div class="dropdown-menu">
+ {% for suburl, text in url %}
+ {% if rel_link(permalink, suburl) == "#" %}
+ <a href="{{ permalink }}" class="dropdown-item active">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a>
+ {% else %}
+ <a href="{{ suburl }}" class="dropdown-item">{{ text }}</a>
+ {% endif %}
+ {% endfor %}
+ </div>
+ {% else %}
+ {% if rel_link(permalink, url) == "#" %}
+ <li class="nav-item active"><a href="{{ permalink }}" class="nav-link">{{ text }} <span class="sr-only">{{ messages("(active)", lang) }}</span></a>
+ {% else %}
+ <li class="nav-item"><a href="{{ url }}" class="nav-link">{{ text }}</a>
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+{% endmacro %}
+
+{% macro html_feedlinks() %}
+ {{ feeds_translations.head(classification=None, kind='index', other=False) }}
+{% endmacro %}
+
+{% macro html_translations() %}
+ {% for langname in translations|sort %}
+ {% if langname != lang %}
+ <li class="nav-item"><a href="{{ _link("root", None, langname) }}" rel="alternate" hreflang="{{ langname }}" class="nav-link">{{ messages("LANGUAGE", langname) }}</a></li>
+ {% endif %}
+ {% endfor %}
+{% endmacro %}
diff --git a/nikola/data/themes/bootstrap4-jinja/templates/index_helper.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/index_helper.tmpl
new file mode 100644
index 0000000..2fec2c6
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/index_helper.tmpl
@@ -0,0 +1,13 @@
+{# -*- coding: utf-8 -*- #}
+{% macro html_pager() %}
+ {% if prevlink or nextlink %}
+ <ul class="pager postindexpager clearfix">
+ {% if prevlink %}
+ <li class="previous"><a href="{{ prevlink }}" rel="prev">{{ messages("Newer posts") }}</a></li>
+ {% endif %}
+ {% if nextlink %}
+ <li class="next"><a href="{{ nextlink }}" rel="next">{{ messages("Older posts") }}</a></li>
+ {% endif %}
+ </ul>
+ {% endif %}
+{% endmacro %}
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/listing.tmpl
index ed99410..56a1b4f 100644
--- a/nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl
+++ b/nikola/data/themes/bootstrap4-jinja/templates/listing.tmpl
@@ -1,15 +1,15 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
-{% import 'crumbs.tmpl' as ui with context %}
+{% import 'ui_helper.tmpl' as ui with context %}
{% block content %}
-{{ ui.bar(crumbs) }}
+{{ ui.breadcrumbs(crumbs) }}
{% if folders or files %}
<ul>
{% for name in folders %}
- <li><a href="{{ name|urlencode }}"><i class="glyphicon glyphicon-folder-open"></i> {{ name|e }}</a>
+ <li><a href="{{ name|e }}">📂&nbsp;{{ name|e }}</a>
{% endfor %}
{% for name in files %}
- <li><a href="{{ name|urlencode }}.html"><i class="glyphicon glyphicon-file"></i> {{ name|e }}</a>
+ <li><a href="{{ name|e }}.html">📄&nbsp;{{ name|e }}</a>
{% endfor %}
</ul>
{% endif %}
@@ -24,9 +24,7 @@
{% endblock %}
{% block sourcelink %}
-{% if source_link %}
- <li>
- <a href="{{ source_link }}" id="sourcelink">{{ messages("Source") }}</a>
- </li>
+{% if source_link and show_sourcelink %}
+ {{ ui.show_sourcelink(source_link) }}
{% endif %}
{% endblock %}
diff --git a/nikola/data/themes/bootstrap4-jinja/templates/pagination_helper.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/pagination_helper.tmpl
new file mode 100644
index 0000000..30fe534
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/pagination_helper.tmpl
@@ -0,0 +1,40 @@
+{# -*- coding: utf-8 -*- #}
+{% macro page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed, surrounding=5) %}
+<nav aria-label="Page navigation">
+ <ul class="pagination">
+ {% if prev_next_links_reversed %}
+ {% if nextlink %}
+ <li class="page-item"><a href="{{ nextlink }}" class="page-link" aria-label="{{ messages("Older posts") }}"><span aria-hidden="true">&laquo;</span></a></li>
+ {% else %}
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="{{ messages("Older posts") }}"><span aria-hidden="true">&laquo;</span></a></li>
+ {% endif %}
+ {% else %}
+ {% if prevlink %}
+ <li class="page-item"><a href="{{ prevlink }}" class="page-link" aria-label="{{ messages("Newer posts") }}"><span aria-hidden="true">&laquo;</span></a></li>
+ {% else %}
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="{{ messages("Newer posts") }}"><span aria-hidden="true">&laquo;</span></a></li>
+ {% endif %}
+ {% endif %}
+ {% for i, link in enumerate(page_links) %}
+ {% if (i - current_page)|abs <= surrounding or i == 0 or i == page_links|length - 1 %}
+ <li class="page-item {{ 'active' if i == current_page else '' }}"><a href="{{ link }}" class="page-link">{{ i + 1 }}{{ ' <span class="sr-only">(current)</span>' if i == current_page else '' }}</a></li>
+ {% elif i == current_page - surrounding - 1 or i == current_page + surrounding + 1 %}
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="…"><span aria-hidden="true">…</span></a></li>
+ {% endif %}
+ {% endfor %}
+ {% if prev_next_links_reversed %}
+ {% if prevlink %}
+ <li class="page-item"><a href="{{ prevlink }}" class="page-link" aria-label="{{ messages("Newer posts") }}"><span aria-hidden="true">&raquo;</span></a></li>
+ {% else %}
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="{{ messages("Newer posts") }}"><span aria-hidden="true">&raquo;</span></a></li>
+ {% endif %}
+ {% else %}
+ {% if nextlink %}
+ <li class="page-item"><a href="{{ nextlink }}" class="page-link" aria-label="{{ messages("Older posts") }}"><span aria-hidden="true">&raquo;</span></a></li>
+ {% else %}
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="{{ messages("Older posts") }}"><span aria-hidden="true">&raquo;</span></a></li>
+ {% endif %}
+ {% endif %}
+ </ul>
+</nav>
+{% endmacro %}
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/post.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/post.tmpl
index 3cf4c4b..7e18f90 100644
--- a/nikola/data/themes/bootstrap3-jinja/templates/post.tmpl
+++ b/nikola/data/themes/bootstrap4-jinja/templates/post.tmpl
@@ -2,15 +2,14 @@
{% import 'post_helper.tmpl' as helper with context %}
{% import 'post_header.tmpl' as pheader with context %}
{% import 'comments_helper.tmpl' as comments with context %}
+{% import 'math_helper.tmpl' as math with context %}
+{% import 'ui_helper.tmpl' as ui with context %}
{% extends 'base.tmpl' %}
{% block extra_head %}
{{ super() }}
{% if post.meta('keywords') %}
- <meta name="keywords" content="{{ post.meta('keywords')|e }}">
- {% endif %}
- {% if post.description() %}
- <meta name="description" itemprop="description" content="{{ post.description()|e }}">
+ <meta name="keywords" content="{{ smartjoin(', ', post.meta('keywords'))|e }}">
{% endif %}
<meta name="author" content="{{ post.author()|e }}">
{% if post.prev_post %}
@@ -25,6 +24,7 @@
{{ helper.open_graph_metadata(post) }}
{{ helper.twitter_card_information(post) }}
{{ helper.meta_translations(post) }}
+ {{ math.math_styles_ifpost(post) }}
{% endblock %}
{% block content %}
@@ -45,15 +45,13 @@
{{ comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path) }}
</section>
{% endif %}
- {{ helper.mathjax_script(post) }}
+ {{ math.math_scripts_ifpost(post) }}
</article>
{{ comments.comment_link_script() }}
{% endblock %}
{% block sourcelink %}
{% if show_sourcelink %}
- <li>
- <a href="{{ post.source_link() }}" id="sourcelink">{{ messages("Source") }}</a>
- </li>
+ {{ ui.show_sourcelink(post.source_link()) }}
{% endif %}
{% endblock %}
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/tags.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/tags.tmpl
index 4afd4d2..0eadff6 100644
--- a/nikola/data/themes/bootstrap3-jinja/templates/tags.tmpl
+++ b/nikola/data/themes/bootstrap4-jinja/templates/tags.tmpl
@@ -11,7 +11,7 @@
{% for i in range(indent_change_before) %}
<ul class="list-inline">
{% endfor %}
- <li><a class="reference badge" href="{{ link }}">{{ text|e }}</a>
+ <li class="list-inline-item"><a class="reference badge badge-secondary" href="{{ link }}">{{ text|e }}</a>
{% if indent_change_after <= 0 %}
</li>
{% endif %}
@@ -30,7 +30,7 @@
<ul class="list-inline">
{% for text, link in items %}
{% if text not in hidden_tags %}
- <li><a class="reference badge" href="{{ link }}">{{ text|e }}</a></li>
+ <li class="list-inline-item"><a class="reference badge badge-secondary" href="{{ link }}">{{ text|e }}</a></li>
{% endif %}
{% endfor %}
</ul>
diff --git a/nikola/data/themes/bootstrap4-jinja/templates/ui_helper.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/ui_helper.tmpl
new file mode 100644
index 0000000..d8c8d4d
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/ui_helper.tmpl
@@ -0,0 +1,24 @@
+{# -*- coding: utf-8 -*- #}
+{% macro breadcrumbs(crumbs) %}
+{% if crumbs %}
+<nav class="breadcrumbs">
+<ul class="breadcrumb">
+ {% for link, text in crumbs %}
+ {% if text != index_file %}
+ {% if link == '#' %}
+ <li class="breadcrumb-item active">{{ text.rsplit('.html', 1)[0] }}</li>
+ {% else %}
+ <li class="breadcrumb-item"><a href="{{ link }}">{{ text }}</a></li>
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+</ul>
+</nav>
+{% endif %}
+{% endmacro %}
+
+{% macro show_sourcelink(sourcelink_href) %}
+ <li class="nav-item">
+ <a href="{{ sourcelink_href }}" id="sourcelink" class="nav-link">{{ messages("Source") }}</a>
+ </li>
+{% endmacro %}
diff --git a/nikola/data/themes/bootstrap4/README.md b/nikola/data/themes/bootstrap4/README.md
new file mode 100644
index 0000000..bb1b484
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/README.md
@@ -0,0 +1,10 @@
+This is a theme based on Bootstrap 4.
+
+The theme is a good building block for a site. It is based on a simple navbar +
+content layout. For a more blog-style layout, check out `bootblog4`.
+
+Note that unlike previous versions of Bootstrap, icon fonts are not built-in.
+You can use Font Awesome for this.
+
+This theme supports Bootswatch font/color schemes through the `nikola
+bootwatch_theme` command.
diff --git a/nikola/data/themes/bootstrap4/assets/css/bootstrap.min.css b/nikola/data/themes/bootstrap4/assets/css/bootstrap.min.css
new file mode 120000
index 0000000..8c8dc62
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/assets/css/bootstrap.min.css
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/bootstrap/dist/css/bootstrap.min.css \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap3/assets/css/theme.css b/nikola/data/themes/bootstrap4/assets/css/theme.css
index 52466de..20eee8e 100644
--- a/nikola/data/themes/bootstrap3/assets/css/theme.css
+++ b/nikola/data/themes/bootstrap4/assets/css/theme.css
@@ -1,29 +1,11 @@
-#container {
- width: 960px;
- margin: 0 auto;
-}
-
-#contentcolumn {
- max-width: 760px;
-}
-#q {
- width: 150px;
-}
-
img {
- max-width: 90%;
-}
-
-.postbox {
- border-bottom: 2px solid darkgrey;
- margin-bottom: 12px;
+ max-width: 100%;
}
.titlebox {
text-align: right;
}
-#addthisbox {margin-bottom: 12px;}
td.label {
/* Issue #290 */
@@ -36,7 +18,6 @@ td.label {
font-size: xx-small;
}
-
.caption {
/* Issue 292 */
text-align: center;
@@ -52,7 +33,7 @@ div.figure > a > img {
}
blockquote p, blockquote {
- font-size: 17.5px;
+ font-size: 1.25rem;
font-weight: 300;
line-height: 1.25;
}
@@ -67,10 +48,6 @@ ul.bricks > li {
margin: 3px;
}
-.at300b, .stMainServices, .stButton, .stButton_gradient {
- box-sizing: content-box;
-}
-
pre, pre code {
white-space: pre;
word-wrap: normal;
@@ -86,10 +63,6 @@ article.post-micro {
display: inline-block;
}
-.flowr_row {
- width: 100%;
-}
-
.tags {
padding-left: 0;
margin-left: -5px;
@@ -100,21 +73,25 @@ article.post-micro {
.tags > li {
display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: bold;
+}
+.tags > li a {
+ display: inline-block;
+ padding: .25em .4em;
+ font-size: 75%;
+ font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
- background-color: #999;
- border-radius: 10px;
+ border-radius: .25rem;
+ background-color: #868e96;
}
-.tags > li a {
+.tags > li a:hover {
color: #fff;
+ text-decoration: none;
+ background-color: #6c757d;
}
.metadata p:before,
@@ -144,27 +121,6 @@ article.post-micro {
margin-top: 1em;
}
-.navbar-brand {
- padding: 0 15px;
-}
-
-.navbar-brand #blog-title {
- padding: 15px 0;
- display: inline-block;
-}
-
-.navbar-brand #logo {
- max-width: 100%;
-}
-
-.navbar-brand>img {
- display: inline;
-}
-
-.row {
- margin: 0;
-}
-
/* for alignment with Bootstrap's .entry-content styling */
.entry-summary {
margin-top: 1em;
@@ -177,14 +133,6 @@ article.post-micro {
border-top: 1px solid #e5e5e5;
}
-.codetable {
- table-layout: fixed;
-}
-
-.codetable pre {
- overflow-x: scroll;
-}
-
/* hat tip bootstrap/html5 boilerplate */
@media print {
*, *:before, *:after {
@@ -213,3 +161,72 @@ article.post-micro {
display: none;
}
}
+
+pre, .codetable {
+ border: 1px solid #ccc;
+ border-radius: 0.25rem;
+ margin-bottom: 1rem;
+}
+
+pre {
+ padding: 0.75rem;
+}
+
+.codetable tr:first-child td.linenos {
+ border-top-left-radius: 0.25rem;
+}
+
+.codetable tr:last-child td.linenos {
+ border-bottom-left-radius: 0.25rem;
+}
+
+.postindexpager {
+ padding-bottom: 1rem;
+}
+
+ul.navbar-nav {
+ margin-top: 0;
+}
+
+ul.pager {
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+ border-radius: .25rem;
+ padding-left: 0;
+ margin: 0.5rem 0;
+}
+
+ul.pager li.previous {
+ margin-right: auto;
+ display: inline;
+}
+
+ul.pager li.next {
+ margin-left: auto;
+ display: inline;
+}
+
+
+ul.pager li a {
+ display: inline;
+ position: relative;
+ padding: .5rem .75rem;
+ margin-left: -1px;
+ line-height: 1.25;
+ border: 1px solid #ddd;
+ border-radius: .25rem;
+}
+
+pre.code {
+ white-space: pre-wrap;
+}
+
+.byline a:not(:last-child):after {
+ content: ",";
+}
+
+/* Override incorrect Bootstrap 4 default */
+html[dir="rtl"] body {
+ text-align: right;
+}
diff --git a/nikola/data/themes/bootstrap4/assets/js/bootstrap.min.js b/nikola/data/themes/bootstrap4/assets/js/bootstrap.min.js
new file mode 120000
index 0000000..593bffb
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/assets/js/bootstrap.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/bootstrap/dist/js/bootstrap.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap4/assets/js/jquery.min.js b/nikola/data/themes/bootstrap4/assets/js/jquery.min.js
new file mode 120000
index 0000000..2a592f6
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/assets/js/jquery.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/jquery/dist/jquery.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap4/assets/js/popper.min.js b/nikola/data/themes/bootstrap4/assets/js/popper.min.js
new file mode 120000
index 0000000..43fca04
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/assets/js/popper.min.js
@@ -0,0 +1 @@
+../../../../../../npm_assets/node_modules/popper.js/dist/umd/popper.min.js \ No newline at end of file
diff --git a/nikola/data/themes/bootstrap4/bootstrap4.theme b/nikola/data/themes/bootstrap4/bootstrap4.theme
new file mode 100644
index 0000000..0f3f9ef
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/bootstrap4.theme
@@ -0,0 +1,12 @@
+[Theme]
+engine = mako
+parent = base
+author = The Nikola Contributors
+author_url = https://getnikola.com/
+license = MIT
+based_on = Bootstrap 4 <http://getbootstrap.com/>
+tags = bootstrap
+
+[Family]
+family = bootstrap4
+jinja_version = bootstrap4-jinja
diff --git a/nikola/data/themes/bootstrap4/bundles b/nikola/data/themes/bootstrap4/bundles
new file mode 100644
index 0000000..71d458b
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/bundles
@@ -0,0 +1,26 @@
+; css bundles
+assets/css/all-nocdn.css=
+ bootstrap.min.css,
+ rst_base.css,
+ nikola_rst.css,
+ code.css,
+ baguetteBox.min.css,
+ theme.css,
+ custom.css,
+assets/css/all.css=
+ rst_base.css,
+ nikola_rst.css,
+ code.css,
+ baguetteBox.min.css,
+ theme.css,
+ custom.css,
+
+; javascript bundles
+assets/js/all-nocdn.js=
+ jquery.min.js,
+ popper.min.js,
+ bootstrap.min.js,
+ baguetteBox.min.js,
+ fancydates.min.js,
+assets/js/all.js=
+ fancydates.min.js
diff --git a/nikola/data/themes/bootstrap3/templates/authors.tmpl b/nikola/data/themes/bootstrap4/templates/authors.tmpl
index 2d3bbf5..300377d 100644
--- a/nikola/data/themes/bootstrap3/templates/authors.tmpl
+++ b/nikola/data/themes/bootstrap4/templates/authors.tmpl
@@ -1,9 +1,17 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="extra_head">
+ ${feeds_translations.head(kind=kind, feeds=False)}
+</%block>
<%block name="content">
% if items:
<h2>${messages("Authors")}</h2>
+ <div class="metadata">
+ ${feeds_translations.translation_link(kind)}
+ </div>
% endif
% if items:
<ul class="list-inline">
diff --git a/nikola/data/themes/bootstrap4/templates/base.tmpl b/nikola/data/themes/bootstrap4/templates/base.tmpl
new file mode 100644
index 0000000..21b6141
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/base.tmpl
@@ -0,0 +1,105 @@
+## -*- coding: utf-8 -*-
+<%namespace name="base" file="base_helper.tmpl" import="*" />
+<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
+${set_locale(lang)}
+${base.html_headstart()}
+<%block name="extra_head">
+### Leave this block alone.
+</%block>
+${template_hooks['extra_head']()}
+</head>
+<body>
+<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
+
+<!-- Menubar -->
+
+<nav class="navbar navbar-expand-md static-top mb-4
+% if theme_config.get('navbar_light'):
+navbar-light
+% else:
+navbar-dark
+% endif
+% if theme_config.get('navbar_custom_bg'):
+${theme_config['navbar_custom_bg']}
+% elif theme_config.get('navbar_light'):
+bg-light
+% else:
+bg-dark
+%endif
+">
+ <div class="container"><!-- This keeps the margins nice -->
+ <a class="navbar-brand" href="${_link("root", None, lang)}">
+ %if logo_url:
+ <img src="${logo_url}" alt="${blog_title|h}" id="logo" class="d-inline-block align-top">
+ %endif
+
+ % if show_blog_title:
+ <span id="blog-title">${blog_title|h}</span>
+ % endif
+ </a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+
+ <div class="collapse navbar-collapse" id="bs-navbar">
+ <ul class="navbar-nav mr-auto">
+ ${base.html_navigation_links_entries(navigation_links)}
+ ${template_hooks['menu']()}
+ </ul>
+ %if search_form:
+ ${search_form}
+ %endif
+
+ <ul class="navbar-nav navbar-right">
+ ${base.html_navigation_links_entries(navigation_alt_links)}
+ <%block name="belowtitle">
+ %if len(translations) > 1:
+ <li>${base.html_translations()}</li>
+ %endif
+ </%block>
+ % if show_sourcelink:
+ <%block name="sourcelink"></%block>
+ %endif
+ ${template_hooks['menu_alt']()}
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div><!-- /.container -->
+</nav>
+
+<!-- End of Menubar -->
+
+<div class="container" id="content" role="main">
+ <div class="body-content">
+ <!--Body content-->
+ ${template_hooks['page_header']()}
+ <%block name="extra_header"></%block>
+ <%block name="content"></%block>
+ <!--End of body content-->
+
+ <footer id="footer">
+ ${content_footer}
+ ${template_hooks['page_footer']()}
+ <%block name="extra_footer"></%block>
+ </footer>
+ </div>
+</div>
+
+${base.late_load_js()}
+ %if date_fanciness != 0:
+ <!-- fancy dates -->
+ <script>
+ luxon.Settings.defaultLocale = "${luxon_locales[lang]}";
+ fancydates(${date_fanciness}, ${luxon_date_format});
+ </script>
+ <!-- end fancy dates -->
+ %endif
+ <%block name="extra_js"></%block>
+ <script>
+ baguetteBox.run('div#content', {
+ ignoreClass: 'islink',
+ captions: function(element){var i=element.getElementsByTagName('img')[0];return i===undefined?'':i.alt;}});
+ </script>
+${body_end}
+${template_hooks['body_end']()}
+</body>
+</html>
diff --git a/nikola/data/themes/bootstrap4/templates/base_helper.tmpl b/nikola/data/themes/bootstrap4/templates/base_helper.tmpl
new file mode 100644
index 0000000..f551116
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/base_helper.tmpl
@@ -0,0 +1,165 @@
+## -*- coding: utf-8 -*-
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%def name="html_headstart()">
+<!DOCTYPE html>
+<html
+\
+prefix='\
+og: http://ogp.me/ns# article: http://ogp.me/ns/article#
+%if comment_system == 'facebook':
+fb: http://ogp.me/ns/fb# \
+%endif
+'\
+% if is_rtl:
+dir="rtl" \
+% endif
+\
+lang="${lang}">
+ <head>
+ <meta charset="utf-8">
+ %if description:
+ <meta name="description" content="${description|h}">
+ %endif
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ %if title == blog_title:
+ <title>${blog_title|h}</title>
+ %else:
+ <title>${title|h} | ${blog_title|h}</title>
+ %endif
+
+ ${html_stylesheets()}
+ <meta name="theme-color" content="${theme_color}">
+ % if meta_generator_tag:
+ <meta name="generator" content="Nikola (getnikola.com)">
+ % endif
+ ${html_feedlinks()}
+ <link rel="canonical" href="${abs_link(permalink)}">
+
+ %if favicons:
+ %for name, file, size in favicons:
+ <link rel="${name}" href="${file}" sizes="${size}"/>
+ %endfor
+ %endif
+
+ % if comment_system == 'facebook':
+ <meta property="fb:app_id" content="${comment_system_id}">
+ % endif
+
+ %if prevlink:
+ <link rel="prev" href="${prevlink}" type="text/html">
+ %endif
+ %if nextlink:
+ <link rel="next" href="${nextlink}" type="text/html">
+ %endif
+
+ %if use_cdn:
+ <!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+ %else:
+ <!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5.js', lang, url_type)}"></script><![endif]-->
+ %endif
+
+ ${extra_head_data}
+</%def>
+
+<%def name="late_load_js()">
+ %if use_cdn:
+ <script src="http://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" integrity="sha256-ULQV01VS9LCI2ePpLsmka+W0mawFpEA0rtxnezUj4A4=" crossorigin="anonymous"></script>
+ % endif
+ %if use_bundles and use_cdn:
+ <script src="/assets/js/all.js"></script>
+ %elif use_bundles:
+ <script src="/assets/js/all-nocdn.js"></script>
+ %else:
+ %if not use_cdn:
+ <script src="/assets/js/jquery.min.js"></script>
+ <script src="/assets/js/popper.min.js"></script>
+ <script src="/assets/js/bootstrap.min.js"></script>
+ <script src="/assets/js/baguetteBox.min.js"></script>
+ %endif
+ %endif
+ %if date_fanciness != 0:
+ %if date_fanciness == 2:
+ <script src="https://polyfill.io/v3/polyfill.js?features=Intl.RelativeTimeFormat.%7Elocale.${luxon_locales[lang]}"></script>
+ %endif
+ %if use_cdn:
+ <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js" integrity="sha256-OVk2fwTRcXYlVFxr/ECXsakqelJbOg5WCj1dXSIb+nU=" crossorigin="anonymous"></script>
+ %else:
+ <script src="/assets/js/luxon.min.js"></script>
+ %endif
+ %if not use_bundles:
+ <script src="/assets/js/fancydates.min.js"></script>
+ %endif
+ %endif
+ ${social_buttons_code}
+</%def>
+
+
+<%def name="html_stylesheets()">
+ %if use_cdn:
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" integrity="sha256-cLMYWYYutHkt+KpNqjg7NVkYSQ+E2VbrXsEvOqU7mL0=" crossorigin="anonymous">
+ % endif
+ %if use_bundles and use_cdn:
+ <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
+ %elif use_bundles:
+ <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
+ %else:
+ %if not use_cdn:
+ <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/baguetteBox.min.css" rel="stylesheet" type="text/css">
+ %endif
+ <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
+ %if has_custom_css:
+ <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
+ %endif
+ %endif
+ % if needs_ipython_css:
+ <link href="/assets/css/ipython.min.css" rel="stylesheet" type="text/css">
+ <link href="/assets/css/nikola_ipython.css" rel="stylesheet" type="text/css">
+ % endif
+</%def>
+
+<%def name="html_navigation_links()">
+ ${html_navigation_links_entries(navigation_links)}
+</%def>
+
+<%def name="html_navigation_links_entries(navigation_links_source)">
+ %for url, text in navigation_links_source[lang]:
+ % if isinstance(url, tuple):
+ <li class="nav-item dropdown"><a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">${text}</a>
+ <div class="dropdown-menu">
+ %for suburl, text in url:
+ % if rel_link(permalink, suburl) == "#":
+ <a href="${permalink}" class="dropdown-item active">${text} <span class="sr-only">${messages("(active)", lang)}</span></a>
+ %else:
+ <a href="${suburl}" class="dropdown-item">${text}</a>
+ %endif
+ %endfor
+ </div>
+ % else:
+ % if rel_link(permalink, url) == "#":
+ <li class="nav-item active"><a href="${permalink}" class="nav-link">${text} <span class="sr-only">${messages("(active)", lang)}</span></a>
+ %else:
+ <li class="nav-item"><a href="${url}" class="nav-link">${text}</a>
+ %endif
+ % endif
+ %endfor
+</%def>
+
+<%def name="html_feedlinks()">
+ ${feeds_translations.head(classification=None, kind='index', other=False)}
+</%def>
+
+<%def name="html_translations()">
+ %for langname in sorted(translations):
+ %if langname != lang:
+ <li class="nav-item"><a href="${_link("root", None, langname)}" rel="alternate" hreflang="${langname}" class="nav-link">${messages("LANGUAGE", langname)}</a></li>
+ %endif
+ %endfor
+</%def>
diff --git a/nikola/data/themes/bootstrap4/templates/index_helper.tmpl b/nikola/data/themes/bootstrap4/templates/index_helper.tmpl
new file mode 100644
index 0000000..e6b0089
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/index_helper.tmpl
@@ -0,0 +1,13 @@
+## -*- coding: utf-8 -*-
+<%def name="html_pager()">
+ %if prevlink or nextlink:
+ <ul class="pager postindexpager clearfix">
+ %if prevlink:
+ <li class="previous"><a href="${prevlink}" rel="prev">${messages("Newer posts")}</a></li>
+ %endif
+ %if nextlink:
+ <li class="next"><a href="${nextlink}" rel="next">${messages("Older posts")}</a></li>
+ %endif
+ </ul>
+ %endif
+</%def>
diff --git a/nikola/data/themes/bootstrap3/templates/listing.tmpl b/nikola/data/themes/bootstrap4/templates/listing.tmpl
index 44809d0..d9a4c56 100644
--- a/nikola/data/themes/bootstrap3/templates/listing.tmpl
+++ b/nikola/data/themes/bootstrap4/templates/listing.tmpl
@@ -1,15 +1,15 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
-<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
+<%namespace name="ui" file="ui_helper.tmpl"/>
<%block name="content">
-${ui.bar(crumbs)}
+${ui.breadcrumbs(crumbs)}
%if folders or files:
<ul>
% for name in folders:
- <li><a href="${name|u}"><i class="glyphicon glyphicon-folder-open"></i> ${name|h}</a>
+ <li><a href="${name|h}">📂&nbsp;${name|h}</a>
% endfor
% for name in files:
- <li><a href="${name|u}.html"><i class="glyphicon glyphicon-file"></i> ${name|h}</a>
+ <li><a href="${name|h}.html">📄&nbsp;${name|h}</a>
% endfor
</ul>
%endif
@@ -24,9 +24,7 @@ ${ui.bar(crumbs)}
</%block>
<%block name="sourcelink">
-% if source_link:
- <li>
- <a href="${source_link}" id="sourcelink">${messages("Source")}</a>
- </li>
+% if source_link and show_sourcelink:
+ ${ui.show_sourcelink(source_link)}
% endif
</%block>
diff --git a/nikola/data/themes/bootstrap4/templates/pagination_helper.tmpl b/nikola/data/themes/bootstrap4/templates/pagination_helper.tmpl
new file mode 100644
index 0000000..da0e920
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/pagination_helper.tmpl
@@ -0,0 +1,40 @@
+## -*- coding: utf-8 -*-
+<%def name="page_navigation(current_page, page_links, prevlink, nextlink, prev_next_links_reversed, surrounding=5)">
+<nav aria-label="Page navigation">
+ <ul class="pagination">
+ % if prev_next_links_reversed:
+ % if nextlink:
+ <li class="page-item"><a href="${nextlink}" class="page-link" aria-label="${messages("Older posts")}"><span aria-hidden="true">&laquo;</span></a></li>
+ % else:
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="${messages("Older posts")}"><span aria-hidden="true">&laquo;</span></a></li>
+ % endif
+ % else:
+ % if prevlink:
+ <li class="page-item"><a href="${prevlink}" class="page-link" aria-label="${messages("Newer posts")}"><span aria-hidden="true">&laquo;</span></a></li>
+ % else:
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="${messages("Newer posts")}"><span aria-hidden="true">&laquo;</span></a></li>
+ % endif
+ % endif
+ % for i, link in enumerate(page_links):
+ % if abs(i - current_page) <= surrounding or i == 0 or i == len(page_links) - 1:
+ <li class="page-item ${'active' if i == current_page else ''}"><a href="${link}" class="page-link">${i + 1}${' <span class="sr-only">(current)</span>' if i == current_page else ''}</a></li>
+ % elif i == current_page - surrounding - 1 or i == current_page + surrounding + 1:
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="…"><span aria-hidden="true">…</span></a></li>
+ % endif
+ % endfor
+ % if prev_next_links_reversed:
+ % if prevlink:
+ <li class="page-item"><a href="${prevlink}" class="page-link" aria-label="${messages("Newer posts")}"><span aria-hidden="true">&raquo;</span></a></li>
+ % else:
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="${messages("Newer posts")}"><span aria-hidden="true">&raquo;</span></a></li>
+ % endif
+ % else:
+ % if nextlink:
+ <li class="page-item"><a href="${nextlink}" class="page-link" aria-label="${messages("Older posts")}"><span aria-hidden="true">&raquo;</span></a></li>
+ % else:
+ <li class="page-item disabled"><a href="#" class="page-link" aria-label="${messages("Older posts")}"><span aria-hidden="true">&raquo;</span></a></li>
+ % endif
+ % endif
+ </ul>
+</nav>
+</%def>
diff --git a/nikola/data/themes/bootstrap3/templates/post.tmpl b/nikola/data/themes/bootstrap4/templates/post.tmpl
index 469c1e1..0d4248e 100644
--- a/nikola/data/themes/bootstrap3/templates/post.tmpl
+++ b/nikola/data/themes/bootstrap4/templates/post.tmpl
@@ -2,16 +2,15 @@
<%namespace name="helper" file="post_helper.tmpl"/>
<%namespace name="pheader" file="post_header.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
+<%namespace name="math" file="math_helper.tmpl"/>
+<%namespace name="ui" file="ui_helper.tmpl"/>
<%inherit file="base.tmpl"/>
<%block name="extra_head">
${parent.extra_head()}
% if post.meta('keywords'):
- <meta name="keywords" content="${post.meta('keywords')|h}">
+ <meta name="keywords" content="${smartjoin(', ', post.meta('keywords'))|h}">
% endif
- %if post.description():
- <meta name="description" itemprop="description" content="${post.description()|h}">
- %endif
<meta name="author" content="${post.author()|h}">
%if post.prev_post:
<link rel="prev" href="${post.prev_post.permalink()}" title="${post.prev_post.title()|h}" type="text/html">
@@ -25,6 +24,7 @@
${helper.open_graph_metadata(post)}
${helper.twitter_card_information(post)}
${helper.meta_translations(post)}
+ ${math.math_styles_ifpost(post)}
</%block>
<%block name="content">
@@ -45,15 +45,13 @@
${comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path)}
</section>
% endif
- ${helper.mathjax_script(post)}
+ ${math.math_scripts_ifpost(post)}
</article>
${comments.comment_link_script()}
</%block>
<%block name="sourcelink">
% if show_sourcelink:
- <li>
- <a href="${post.source_link()}" id="sourcelink">${messages("Source")}</a>
- </li>
+ ${ui.show_sourcelink(post.source_link())}
% endif
</%block>
diff --git a/nikola/data/themes/bootstrap3/templates/tags.tmpl b/nikola/data/themes/bootstrap4/templates/tags.tmpl
index 061bb39..f1870f6 100644
--- a/nikola/data/themes/bootstrap3/templates/tags.tmpl
+++ b/nikola/data/themes/bootstrap4/templates/tags.tmpl
@@ -11,7 +11,7 @@
% for i in range(indent_change_before):
<ul class="list-inline">
% endfor
- <li><a class="reference badge" href="${link}">${text|h}</a>
+ <li class="list-inline-item"><a class="reference badge badge-secondary" href="${link}">${text|h}</a>
% if indent_change_after <= 0:
</li>
% endif
@@ -30,7 +30,7 @@
<ul class="list-inline">
% for text, link in items:
% if text not in hidden_tags:
- <li><a class="reference badge" href="${link}">${text|h}</a></li>
+ <li class="list-inline-item"><a class="reference badge badge-secondary" href="${link}">${text|h}</a></li>
% endif
% endfor
</ul>
diff --git a/nikola/data/themes/bootstrap4/templates/ui_helper.tmpl b/nikola/data/themes/bootstrap4/templates/ui_helper.tmpl
new file mode 100644
index 0000000..7e884f9
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/ui_helper.tmpl
@@ -0,0 +1,24 @@
+## -*- coding: utf-8 -*-
+<%def name="breadcrumbs(crumbs)">
+%if crumbs:
+<nav class="breadcrumbs">
+<ul class="breadcrumb">
+ % for link, text in crumbs:
+ % if text != index_file:
+ % if link == '#':
+ <li class="breadcrumb-item active">${text.rsplit('.html', 1)[0]}</li>
+ % else:
+ <li class="breadcrumb-item"><a href="${link}">${text}</a></li>
+ % endif
+ % endif
+ % endfor
+</ul>
+</nav>
+%endif
+</%def>
+
+<%def name="show_sourcelink(sourcelink_href)">
+ <li class="nav-item">
+ <a href="${sourcelink_href}" id="sourcelink" class="nav-link">${messages("Source")}</a>
+ </li>
+</%def>