summaryrefslogtreecommitdiffstats
path: root/nikola/data/themes
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2021-02-03 19:17:00 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2021-02-03 19:17:00 -0500
commit3a0d66f07b112b6d2bdc2b57bbf717a89a351ce6 (patch)
treea7cf56282e54f05785243bc1e903d6594f2c06ba /nikola/data/themes
parent787b97a4cb24330b36f11297c6d3a7a473a907d0 (diff)
New upstream version 8.1.2.upstream/8.1.2
Diffstat (limited to 'nikola/data/themes')
-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/bundles2
-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.tmpl28
-rw-r--r--nikola/data/themes/base-jinja/templates/authorindex.tmpl21
-rw-r--r--nikola/data/themes/base-jinja/templates/authors.tmpl25
-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.tmpl25
-rw-r--r--nikola/data/themes/base-jinja/templates/base_helper.tmpl91
-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.tmpl10
-rw-r--r--nikola/data/themes/base-jinja/templates/comments_helper_facebook.tmpl4
-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.tmpl16
-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_muut.tmpl2
-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.tmpl40
-rw-r--r--nikola/data/themes/base-jinja/templates/index_helper.tmpl8
-rw-r--r--nikola/data/themes/base-jinja/templates/list.tmpl17
-rw-r--r--nikola/data/themes/base-jinja/templates/list_post.tmpl12
-rw-r--r--nikola/data/themes/base-jinja/templates/listing.tmpl17
-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.tmpl11
-rw-r--r--nikola/data/themes/base-jinja/templates/post_header.tmpl29
-rw-r--r--nikola/data/themes/base-jinja/templates/post_helper.tmpl46
-rw-r--r--nikola/data/themes/base-jinja/templates/post_list_directive.tmpl8
-rw-r--r--nikola/data/themes/base-jinja/templates/slides.tmpl24
-rw-r--r--nikola/data/themes/base-jinja/templates/story.tmpl5
-rw-r--r--nikola/data/themes/base-jinja/templates/tag.tmpl36
-rw-r--r--nikola/data/themes/base-jinja/templates/tagindex.tmpl35
-rw-r--r--nikola/data/themes/base-jinja/templates/tags.tmpl12
-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.css9
-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
-rw-r--r--nikola/data/themes/base/assets/js/mathjax.js11
-rw-r--r--nikola/data/themes/base/assets/xml/atom.xsl2
-rw-r--r--nikola/data/themes/base/assets/xml/rss.xsl2
-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.py42
-rw-r--r--nikola/data/themes/base/messages/messages_az.py24
-rw-r--r--nikola/data/themes/base/messages/messages_bg.py48
-rw-r--r--nikola/data/themes/base/messages/messages_br.py (renamed from nikola/data/themes/base/messages/messages_fil.py)16
-rw-r--r--nikola/data/themes/base/messages/messages_bs.py26
-rw-r--r--nikola/data/themes/base/messages/messages_ca.py38
-rw-r--r--nikola/data/themes/base/messages/messages_cs.py16
-rw-r--r--nikola/data/themes/base/messages/messages_da.py16
-rw-r--r--nikola/data/themes/base/messages/messages_de.py22
-rw-r--r--nikola/data/themes/base/messages/messages_el.py16
-rw-r--r--nikola/data/themes/base/messages/messages_en.py16
-rw-r--r--nikola/data/themes/base/messages/messages_eo.py54
-rw-r--r--nikola/data/themes/base/messages/messages_es.py20
-rw-r--r--nikola/data/themes/base/messages/messages_et.py40
-rw-r--r--nikola/data/themes/base/messages/messages_eu.py62
-rw-r--r--nikola/data/themes/base/messages/messages_fa.py24
-rw-r--r--nikola/data/themes/base/messages/messages_fi.py44
-rw-r--r--nikola/data/themes/base/messages/messages_fr.py26
-rw-r--r--nikola/data/themes/base/messages/messages_fur.py49
-rw-r--r--nikola/data/themes/base/messages/messages_gl.py80
-rw-r--r--nikola/data/themes/base/messages/messages_he.py49
-rw-r--r--nikola/data/themes/base/messages/messages_hi.py54
-rw-r--r--nikola/data/themes/base/messages/messages_hr.py20
-rw-r--r--nikola/data/themes/base/messages/messages_hu.py49
-rw-r--r--nikola/data/themes/base/messages/messages_ia.py49
-rw-r--r--nikola/data/themes/base/messages/messages_id.py24
-rw-r--r--nikola/data/themes/base/messages/messages_it.py18
-rw-r--r--nikola/data/themes/base/messages/messages_ja.py58
-rw-r--r--nikola/data/themes/base/messages/messages_ko.py30
-rw-r--r--nikola/data/themes/base/messages/messages_lt.py49
-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.py16
-rw-r--r--nikola/data/themes/base/messages/messages_nl.py20
-rw-r--r--nikola/data/themes/base/messages/messages_pa.py20
-rw-r--r--nikola/data/themes/base/messages/messages_pl.py16
-rw-r--r--nikola/data/themes/base/messages/messages_pt.py16
-rw-r--r--nikola/data/themes/base/messages/messages_pt_br.py24
-rw-r--r--nikola/data/themes/base/messages/messages_ru.py24
-rw-r--r--nikola/data/themes/base/messages/messages_si_lk.py39
-rw-r--r--nikola/data/themes/base/messages/messages_sk.py16
-rw-r--r--nikola/data/themes/base/messages/messages_sl.py16
-rw-r--r--nikola/data/themes/base/messages/messages_sq.py49
-rw-r--r--nikola/data/themes/base/messages/messages_sr.py16
-rw-r--r--nikola/data/themes/base/messages/messages_sr_latin.py (renamed from nikola/data/themes/base/messages/messages_sr@latin.py)16
-rw-r--r--nikola/data/themes/base/messages/messages_sv.py16
-rw-r--r--nikola/data/themes/base/messages/messages_te.py49
-rw-r--r--nikola/data/themes/base/messages/messages_th.py49
-rw-r--r--nikola/data/themes/base/messages/messages_tl.py39
-rw-r--r--nikola/data/themes/base/messages/messages_tr.py26
-rw-r--r--nikola/data/themes/base/messages/messages_uk.py30
-rw-r--r--nikola/data/themes/base/messages/messages_ur.py18
-rw-r--r--nikola/data/themes/base/messages/messages_vi.py49
-rw-r--r--nikola/data/themes/base/messages/messages_zh_cn.py64
-rw-r--r--nikola/data/themes/base/messages/messages_zh_tw.py80
-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.tmpl28
-rw-r--r--nikola/data/themes/base/templates/authorindex.tmpl21
-rw-r--r--nikola/data/themes/base/templates/authors.tmpl25
-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.tmpl25
-rw-r--r--nikola/data/themes/base/templates/base_helper.tmpl91
-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.tmpl10
-rw-r--r--nikola/data/themes/base/templates/comments_helper_facebook.tmpl4
-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.tmpl16
-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_muut.tmpl2
-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.tmpl40
-rw-r--r--nikola/data/themes/base/templates/index_helper.tmpl8
-rw-r--r--nikola/data/themes/base/templates/list.tmpl17
-rw-r--r--nikola/data/themes/base/templates/list_post.tmpl12
-rw-r--r--nikola/data/themes/base/templates/listing.tmpl17
-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.tmpl11
-rw-r--r--nikola/data/themes/base/templates/post_header.tmpl29
-rw-r--r--nikola/data/themes/base/templates/post_helper.tmpl46
-rw-r--r--nikola/data/themes/base/templates/post_list_directive.tmpl8
-rw-r--r--nikola/data/themes/base/templates/slides.tmpl24
-rw-r--r--nikola/data/themes/base/templates/story.tmpl5
-rw-r--r--nikola/data/themes/base/templates/tag.tmpl36
-rw-r--r--nikola/data/themes/base/templates/tagindex.tmpl35
-rw-r--r--nikola/data/themes/base/templates/tags.tmpl12
-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.css.map1
l---------nikola/data/themes/bootstrap3-jinja/assets/css/bootstrap.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/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.js265
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/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.tmpl184
-rw-r--r--nikola/data/themes/bootstrap3-jinja/templates/gallery.tmpl94
-rw-r--r--nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl28
-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.css.map1
l---------nikola/data/themes/bootstrap3/assets/css/bootstrap.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/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.js265
l---------nikola/data/themes/bootstrap3/assets/js/jquery.colorbox.js1
l---------nikola/data/themes/bootstrap3/assets/js/jquery.js1
-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.tmpl184
-rw-r--r--nikola/data/themes/bootstrap3/templates/gallery.tmpl94
-rw-r--r--nikola/data/themes/bootstrap3/templates/listing.tmpl28
-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)141
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.tmpl25
-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.tmpl30
-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)16
-rw-r--r--nikola/data/themes/bootstrap4-jinja/templates/tags.tmpl (renamed from nikola/data/themes/bootstrap3-jinja/templates/tags.tmpl)8
-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)141
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.tmpl25
-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.tmpl30
-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)16
-rw-r--r--nikola/data/themes/bootstrap4/templates/tags.tmpl (renamed from nikola/data/themes/bootstrap3/templates/tags.tmpl)8
-rw-r--r--nikola/data/themes/bootstrap4/templates/ui_helper.tmpl24
354 files changed, 5837 insertions, 3527 deletions
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/bundles b/nikola/data/themes/base-jinja/bundles
deleted file mode 100644
index 4760181..0000000
--- a/nikola/data/themes/base-jinja/bundles
+++ /dev/null
@@ -1,2 +0,0 @@
-assets/css/all.css=rst.css,code.css,theme.css
-assets/css/all-nocdn.css=rst.css,code.css,theme.css
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
new file mode 100644
index 0000000..4d8a876
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/author.tmpl
@@ -0,0 +1,28 @@
+{# -*- coding: utf-8 -*- #}
+{% extends 'list_post.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
+
+{% block extra_head %}
+ {{ feeds_translations.head(author, kind, rss_override=False) }}
+{% endblock %}
+
+{% block content %}
+<article class="authorpage">
+ <header>
+ <h1>{{ title|e }}</h1>
+ {% if description %}
+ <p>{{ description }}</p>
+ {% endif %}
+ <div class="metadata">
+ {{ 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>
+ {% endif %}
+</article>
+{% endblock %}
diff --git a/nikola/data/themes/base-jinja/templates/authorindex.tmpl b/nikola/data/themes/base-jinja/templates/authorindex.tmpl
new file mode 100644
index 0000000..4b2fcbf
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/authorindex.tmpl
@@ -0,0 +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() }}
+ {{ 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
new file mode 100644
index 0000000..c8e05ff
--- /dev/null
+++ b/nikola/data/themes/base-jinja/templates/authors.tmpl
@@ -0,0 +1,25 @@
+{# -*- 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 %}
+ <li><a class="reference listtitle" href="{{ link }}">{{ text|e }}</a></li>
+ {% endif %}
+ {% endfor %}
+ </ul>
+ {% endif %}
+</article>
+{% endblock %}
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 092abd8..bfbd447 100644
--- a/nikola/data/themes/base-jinja/templates/base_header.tmpl
+++ b/nikola/data/themes/base-jinja/templates/base_header.tmpl
@@ -16,13 +16,13 @@
{% endmacro %}
{% macro html_site_title() %}
- <h1 id="brand"><a href="{{ abs_link(_link("root", None, lang)) }}" title="{{ blog_title }}" 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 }}" id="logo">
+ <img src="{{ logo_url }}" alt="{{ blog_title|e }}" id="logo">
{% endif %}
{% if show_blog_title %}
- <span id="blog-title">{{ blog_title }}</span>
+ <span id="blog-title">{{ blog_title|e }}</span>
{% endif %}
</a></h1>
{% endmacro %}
@@ -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 8b4ed97..a05abb9 100644
--- a/nikola/data/themes/base-jinja/templates/base_helper.tmpl
+++ b/nikola/data/themes/base-jinja/templates/base_helper.tmpl
@@ -1,29 +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">
- <base href="{{ abs_link(permalink) }}">
{% if description %}
- <meta name="description" content="{{ description }}">
+ <meta name="description" content="{{ description|e }}">
{% endif %}
<meta name="viewport" content="width=device-width">
{% if title == blog_title %}
@@ -33,7 +29,11 @@ lang="{{ lang }}">
{% endif %}
{{ html_stylesheets() }}
- {{ 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 %}
@@ -53,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="//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 %}
@@ -88,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 0d40b0b..4aa42fa 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_disqus.tmpl
@@ -19,24 +19,24 @@
};
(function() {
var dsq = document.createElement('script'); dsq.async = true;
- dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+ dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
- <noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
- <a href="//disqus.com" class="dsq-brlink" rel="nofollow">Comments powered by <span class="logo-disqus">Disqus</span></a>
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
+ <a href="https://disqus.com" class="dsq-brlink" rel="nofollow">Comments powered by <span class="logo-disqus">Disqus</span></a>
{% endif %}
{% endmacro %}
{% 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 %}
{% macro comment_link_script() %}
{% if comment_system_id %}
- <script>var disqus_shortname="{{ comment_system_id }}";(function(){var a=document.createElement("script");a.async=true;a.src="//"+disqus_shortname+".disqus.com/count.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a)}());</script>
+ <script>var disqus_shortname="{{ comment_system_id }}";(function(){var a=document.createElement("script");a.async=true;a.src="https://"+disqus_shortname+".disqus.com/count.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a)}());</script>
{% endif %}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/comments_helper_facebook.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_facebook.tmpl
index 21dac2a..0b0808a 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper_facebook.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_facebook.tmpl
@@ -17,7 +17,7 @@
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
- js.src = "//connect.facebook.net/en_US/all.js";
+ js.src = "https://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
@@ -55,7 +55,7 @@
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
- js.src = "//connect.facebook.net/en_US/all.js";
+ js.src = "https://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
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 22a9595..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 %}
- <script src="{{ comment_system_id }}js/count.min.js" data-isso="{{ comment_system_id }}"></script>
+ {% if comment_system_id and 'index' in pagekind %}
+ <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_muut.tmpl b/nikola/data/themes/base-jinja/templates/comments_helper_muut.tmpl
index 79ae523..ebc0541 100644
--- a/nikola/data/themes/base-jinja/templates/comments_helper_muut.tmpl
+++ b/nikola/data/themes/base-jinja/templates/comments_helper_muut.tmpl
@@ -9,5 +9,5 @@
{% macro comment_link_script() %}
-<script src="//cdn.muut.com/1/moot.min.js"></script>
+<script src="https://cdn.muut.com/1/moot.min.js"></script>
{% endmacro %}
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 0a53ebe..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 }}</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'] }}" /></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 222da43..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,18 +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">{{ post.author() }}</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) }}">{{ post.formatted_date(date_format) }}</time></a></p>
+ <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 %}
@@ -38,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 2f9e8ea..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,10 +19,7 @@
{% endif %}
{% endmacro %}
+{# This function is deprecated; use math_helper directly. #}
{% macro mathjax_script(posts) %}
- {% if posts|selectattr("is_mathjax")|list %}
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});</script>
- <script src="/assets/js/mathjax.js"></script>
- {% 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 e442864..5f8ddea 100644
--- a/nikola/data/themes/base-jinja/templates/list.tmpl
+++ b/nikola/data/themes/base-jinja/templates/list.tmpl
@@ -1,15 +1,26 @@
{# -*- 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 }}</h1>
+ <h1>{{ title|e }}</h1>
</header>
+ {{ archive_nav.archive_navigation() }}
+ {{ feeds_translations.translation_link(kind) }}
{% if items %}
<ul class="postlist">
- {% for text, link in items %}
- <li><a href="{{ link }}">{{ text }}</a>
+ {% for text, link, count in items %}
+ <li><a href="{{ link }}">{{ text|e }}</a>
+ {% if count %}
+ ({{ count }})
+ {% endif %}
{% endfor %}
</ul>
{% else %}
diff --git a/nikola/data/themes/base-jinja/templates/list_post.tmpl b/nikola/data/themes/base-jinja/templates/list_post.tmpl
index 919d6f0..e6b2080 100644
--- a/nikola/data/themes/base-jinja/templates/list_post.tmpl
+++ b/nikola/data/themes/base-jinja/templates/list_post.tmpl
@@ -1,15 +1,23 @@
{# -*- 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 }}</h1>
+ <h1>{{ title|e }}</h1>
</header>
+ {{ archive_nav.archive_navigation() }}
+ {{ feeds_translations.translation_link(kind) }}
{% if posts %}
<ul class="postlist">
{% for post in posts %}
- <li><a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}</a> <time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format) }}">{{ post.formatted_date(date_format) }}</time></li>
+ <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>
{% else %}
diff --git a/nikola/data/themes/base-jinja/templates/listing.tmpl b/nikola/data/themes/base-jinja/templates/listing.tmpl
index ccbc5ba..7b6b3a6 100644
--- a/nikola/data/themes/base-jinja/templates/listing.tmpl
+++ b/nikola/data/themes/base-jinja/templates/listing.tmpl
@@ -1,23 +1,24 @@
{# -*- 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 }}"><i class="icon-folder-open"></i> {{ name }}</a>
+ <li><a href="{{ name|e }}" class="listing-folder">{{ name|e }}</a>
{% endfor %}
{% for name in files %}
- <li><a href="{{ name }}.html"><i class="icon-file"></i> {{ name }}</a>
+ <li><a href="{{ name|e }}.html" class="listing-file">{{ name|e }}</a>
{% endfor %}
</ul>
{% endif %}
{% if code %}
+ <h1>{{ title }}
+ {% if source_link %}
+ <small><a href="{{ source_link }}">({{ messages("Source") }})</a></small>
+ {% endif %}
+ </h1>
{{ code }}
{% endif %}
-{% if source_link %}
- <p class="sourceline"><a href="{{ source_link }}" id="sourcelink">{{ messages("Source") }}</a></p>
-{% 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 28da35e..484a2e0 100644
--- a/nikola/data/themes/base-jinja/templates/post.tmpl
+++ b/nikola/data/themes/base-jinja/templates/post.tmpl
@@ -2,17 +2,15 @@
{% 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 }}">
+ <meta name="keywords" content="{{ smartjoin(', ', post.meta('keywords'))|e }}">
{% endif %}
- {% if post.description() %}
- <meta name="description" content="{{ post.description() }}">
- {% endif %}
- <meta name="author" content="{{ post.author() }}">
+ <meta name="author" content="{{ post.author()|e }}">
{% if post.prev_post %}
<link rel="prev" href="{{ post.prev_post.permalink() }}" title="{{ post.prev_post.title()|e }}" type="text/html">
{% endif %}
@@ -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 dc844e3..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,17 +31,32 @@
<header>
{{ html_title() }}
<div class="metadata">
- <p class="byline author vcard"><span class="byline-name fn">{{ post.author() }}</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) }}">{{ post.formatted_date(date_format) }}</time></a></p>
+ <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>
+ {% 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 %}
{{ html_sourcelink() }}
{% 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() }}">
+ <p class="linkline"><a href="{{ post.meta('link') }}">{{ messages("Original site") }}</a></p>
{% endif %}
</div>
{{ html_translations(post) }}
diff --git a/nikola/data/themes/base-jinja/templates/post_helper.tmpl b/nikola/data/themes/base-jinja/templates/post_helper.tmpl
index b4826eb..94b3c05 100644
--- a/nikola/data/themes/base-jinja/templates/post_helper.tmpl
+++ b/nikola/data/themes/base-jinja/templates/post_helper.tmpl
@@ -1,9 +1,10 @@
{# -*- coding: utf-8 -*- #}
+{% import 'math_helper.tmpl' as math with context %}
{% macro meta_translations(post) %}
{% if translations|length > 1 %}
{% for langname in translations|sort %}
- {% if langname != lang and post.is_translation_available(langname) %}
+ {% if langname != lang and ((not post.skip_untranslated) or post.is_translation_available(langname)) %}
<link rel="alternate" hreflang="{{ langname }}" href="{{ post.permalink(langname) }}">
{% endif %}
{% endfor %}
@@ -15,7 +16,7 @@
<ul itemprop="keywords" class="tags">
{% for tag in post.tags %}
{% if tag not in hidden_tags %}
- <li><a class="tag p-category" href="{{ _link('tag', tag) }}" rel="tag">{{ tag }}</a></li>
+ <li><a class="tag p-category" href="{{ _link('tag', tag) }}" rel="tag">{{ tag|e }}</a></li>
{% endif %}
{% endfor %}
</ul>
@@ -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() }}"> #}
+{# <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 }}">
- {% endfor %}
- {% endif %}
+{% endif %}
+{% if post.tags %}
+ {% for tag in post.tags %}
+ <meta property="article:tag" content="{{ tag|e }}">
+ {% endfor %}
{% endif %}
{% endmacro %}
@@ -84,10 +83,7 @@
{% endif %}
{% endmacro %}
+{# This function is deprecated; use math_helper directly. #}
{% macro mathjax_script(post) %}
- {% if post.is_mathjax %}
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});</script>
- <script src="/assets/js/mathjax.js"></script>
- {% endif %}
+ {{ math.math_scripts_ifpost(post) }}
{% endmacro %}
diff --git a/nikola/data/themes/base-jinja/templates/post_list_directive.tmpl b/nikola/data/themes/base-jinja/templates/post_list_directive.tmpl
index 92c1b7d..40cf1ce 100644
--- a/nikola/data/themes/base-jinja/templates/post_list_directive.tmpl
+++ b/nikola/data/themes/base-jinja/templates/post_list_directive.tmpl
@@ -6,10 +6,10 @@
<ul class="post-list">
{% for post in posts %}
<li class="post-list-item">
- {{ post.formatted_date(date_format) }}
- &nbsp;
- <a href="{{ post.permalink(lang) }}">{{ post.title(lang)|e }}</a>
- </li>
+ {{ post.formatted_date(date_format)|e }}
+ &nbsp;
+ <a href="{{ post.permalink(lang) }}">{{ post.title(lang)|e }}</a>
+ </li>
{% endfor %}
</ul>
{% endif %}
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 11973f1..5c93256 100644
--- a/nikola/data/themes/base-jinja/templates/story.tmpl
+++ b/nikola/data/themes/base-jinja/templates/story.tmpl
@@ -2,10 +2,11 @@
{% 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 %}
-<article class="storypage" itemscope="itemscope" itemtype="http://schema.org/Article">
+<article class="post-{{ post.meta('type') }} storypage" itemscope="itemscope" itemtype="http://schema.org/Article">
<header>
{{ pheader.html_title() }}
{{ pheader.html_translations(post) }}
@@ -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 0928a5f..fd5acbf 100644
--- a/nikola/data/themes/base-jinja/templates/tag.tmpl
+++ b/nikola/data/themes/base-jinja/templates/tag.tmpl
@@ -1,51 +1,37 @@
{# -*- 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" type="application/rss+xml" title="RSS for {{ kind }} {{ tag }} ({{ language }})" href="{{ _link(kind + "_rss", tag, language) }}">
- {% endfor %}
- {% elif generate_rss %}
- <link rel="alternate" type="application/rss+xml" type="application/rss+xml" title="RSS for {{ kind }} {{ tag }}" 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:') }}
<ul>
{% for name, link in subcategories %}
- <li><a href="{{ link }}">{{ name }}</a></li>
+ <li><a href="{{ link }}">{{ name|e }}</a></li>
{% endfor %}
</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><a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}</a> <time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format) }}">{{ post.formatted_date(date_format) }}</time></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 f2d2d7a..8ea6a4b 100644
--- a/nikola/data/themes/base-jinja/templates/tagindex.tmpl
+++ b/nikola/data/themes/base-jinja/templates/tagindex.tmpl
@@ -1,24 +1,29 @@
{# -*- coding: utf-8 -*- #}
{% extends 'index.tmpl' %}
+{% import 'feeds_translations_helper.tmpl' as feeds_translations with context %}
{% block content_header %}
- {% if subcategories %}
- {{ messages('Subcategories:') }}
- <ul>
- {% for name, link in subcategories %}
- <li><a href="{{ link }}">{{ name }}</a></li>
- {% endfor %}
- </ul>
- {% endif %}
+ <header>
+ <h1>{{ title|e }}</h1>
+ {% if description %}
+ <p>{{ description }}</p>
+ {% endif %}
+ {% if subcategories %}
+ {{ messages('Subcategories:') }}
+ <ul>
+ {% for name, link in subcategories %}
+ <li><a href="{{ link }}">{{ name|e }}</a></li>
+ {% 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 }} section ({{ language }})" href="{{ _link(kind + "_atom", tag, language) }}">
- {% endfor %}
- {% elif generate_atom %}
- <link rel="alternate" type="application/atom+xml" title="Atom for the {{ tag }} 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 4605fc9..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 }}</h1>
+ <h1>{{ title|e }}</h1>
+ <div class="metadata">
+ {{ feeds_translations.translation_link(kind) }}
+ </div>
</header>
{% if cat_items %}
{% if items %}
@@ -33,7 +41,7 @@
<ul class="postlist">
{% for text, link in items %}
{% if text not in hidden_tags %}
- <li><a class="reference listtitle" href="{{ link }}">{{ text }}</a></li>
+ <li><a class="reference listtitle" href="{{ link }}">{{ text|e }}</a></li>
{% endif %}
{% endfor %}
</ul>
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
new file mode 100644
index 0000000..c1c6bc4
--- /dev/null
+++ b/nikola/data/themes/base/assets/css/ipython.min.css
@@ -0,0 +1,9 @@
+/*!
+*
+* 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}div.traceback-wrapper pre.traceback{max-height:600px;overflow:auto}/*!
+*
+* IPython notebook
+*
+*/.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/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 0fbab76..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 */
-div.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 5c7c86d..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-2015 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:before {
+.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/mathjax.js b/nikola/data/themes/base/assets/js/mathjax.js
deleted file mode 100644
index 6ef2dd7..0000000
--- a/nikola/data/themes/base/assets/js/mathjax.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// We wait for the onload function to load MathJax after the page is completely loaded.
-// MathJax is loaded 1 unit of time after the page is ready.
-// This hack prevent problems when you use social button from addthis.
-//
-window.onload = function () {
- setTimeout(function () {
- var script = document.createElement("script");
- script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
- document.getElementsByTagName("body")[0].appendChild(script);
- },1)
-}
diff --git a/nikola/data/themes/base/assets/xml/atom.xsl b/nikola/data/themes/base/assets/xml/atom.xsl
index cc052e0..7b18344 100644
--- a/nikola/data/themes/base/assets/xml/atom.xsl
+++ b/nikola/data/themes/base/assets/xml/atom.xsl
@@ -14,7 +14,7 @@
<p>This is an Atom feed. To subscribe to it, copy its address and paste it when your feed reader asks for it. It will be updated periodically in your reader. New to feeds? <a href="https://duckduckgo.com/?q=how+to+get+started+with+rss+feeds" title="Search on the web to learn more">Learn more</a>.</p>
<p>
<label for="address">Atom feed address:</label>
-<input><xsl:attribute name="id">address</xsl:attribute><xsl:attribute name="spellcheck">false</xsl:attribute><xsl:attribute name="value"><xsl:value-of select="feed/link[@rel='self']/@href"/></xsl:attribute></input>
+<input><xsl:attribute name="type">url</xsl:attribute><xsl:attribute name="id">address</xsl:attribute><xsl:attribute name="spellcheck">false</xsl:attribute><xsl:attribute name="value"><xsl:value-of select="feed/link[@rel='self']/@href"/></xsl:attribute></input>
</p>
<p>Preview of the feed’s current headlines:</p>
<ol>
diff --git a/nikola/data/themes/base/assets/xml/rss.xsl b/nikola/data/themes/base/assets/xml/rss.xsl
index ee72301..f34b3b1 100644
--- a/nikola/data/themes/base/assets/xml/rss.xsl
+++ b/nikola/data/themes/base/assets/xml/rss.xsl
@@ -14,7 +14,7 @@
<p>This is an <abbr title="Really Simple Syndication">RSS</abbr> feed. To subscribe to it, copy its address and paste it when your feed reader asks for it. It will be updated periodically in your reader. New to feeds? <a href="https://duckduckgo.com/?q=how+to+get+started+with+rss+feeds" title="Search on the web to learn more">Learn more</a>.</p>
<p>
<label for="address">RSS address:</label>
-<input><xsl:attribute name="id">address</xsl:attribute><xsl:attribute name="spellcheck">false</xsl:attribute><xsl:attribute name="value"><xsl:value-of select="rss/channel/atom:link[@rel='self']/@href"/></xsl:attribute></input>
+<input><xsl:attribute name="type">url</xsl:attribute><xsl:attribute name="id">address</xsl:attribute><xsl:attribute name="spellcheck">false</xsl:attribute><xsl:attribute name="value"><xsl:value-of select="rss/channel/atom:link[@rel='self']/@href"/></xsl:attribute></input>
</p>
<p>Preview of the feed’s current headlines:</p>
<ol>
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 d87b458..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,custom.css
-assets/css/all-nocdn.css=rst.css,code.css,theme.css,custom.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 07c38b2..72c137b 100644
--- a/nikola/data/themes/base/messages/messages_ar.py
+++ b/nikola/data/themes/base/messages/messages_ar.py
@@ -1,39 +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": "الأرشيف",
+ "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 for year %s": "مقالات سنة s%",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "",
+ "Posts about %s": "مقالات عن %s",
+ "Posts by %s": "مقالات بواسطة %s",
+ "Posts for year %s": "مقالات سنة %s",
+ "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": "تصنيفات",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "مقالات قديمة, صفحة d%",
- "page %d": "صفحة d%",
+ "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 76c15fc..b7913f2 100644
--- a/nikola/data/themes/base/messages/messages_az.py
+++ b/nikola/data/themes/base/messages/messages_az.py
@@ -1,11 +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 dəqiqəlik oxuma",
- "(active)": "",
+ "(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",
"LANGUAGE": "Azərbaycan dili",
@@ -13,27 +15,35 @@ 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",
"Original site": "Original sayt",
"Posted:": "yazılma tarixi:",
"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",
"Read more": "Davamı",
"Skip to main content": "Əsas mövzuya keç",
"Source": "Mənbə",
- "Subcategories:": "",
+ "Subcategories:": "Subkateqoriyalar",
"Tags and Categories": "Teqlər və Kateqoriyalar",
"Tags": "Teqlər",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 96ac878..3344e04 100644
--- a/nikola/data/themes/base/messages/messages_bg.py
+++ b/nikola/data/themes/base/messages/messages_bg.py
@@ -1,39 +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)": "",
- "Also available in:": "Също достъпно в:",
+ "%d min remaining to read": "%d минути до прочитане",
+ "(active)": "(активно)",
+ "Also available in:": "Достъпно също на:",
"Archive": "Архив",
+ "Atom feed": "",
+ "Authors": "Автори",
"Categories": "Категории",
- "Comments": "",
+ "Comments": "Коментари",
"LANGUAGE": "Български",
- "Languages:": "",
+ "Languages:": "Езици:",
"More posts about %s": "Още публикации относно %s",
"Newer posts": "Нови публикации",
"Next post": "Следваща публикация",
- "No posts found.": "",
- "Nothing found.": "",
+ "Next": "",
+ "No posts found.": "Не са намерени публикации.",
+ "Nothing found.": "Нищо не е намерено.",
"Older posts": "Стари публикации",
"Original site": "Оригиналния сайт",
- "Posted:": "Публиковано:",
+ "Posted:": "Публикyвано:",
"Posts about %s": "Публикации относно %s",
+ "Posts by %s": "Публикации от %s",
"Posts for year %s": "Публикации за %s година",
- "Posts for {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": "Предишна публикация",
- "Publication date": "",
- "RSS feed": "",
+ "Previous": "",
+ "Publication date": "Дата на публикуване",
+ "RSS feed": "RSS поток",
"Read in English": "Прочетете на български",
- "Read more": "Прочети още",
- "Skip to main content": "",
- "Source": "Source",
- "Subcategories:": "",
+ "Read more": "Чети нататък",
+ "Skip to main content": "Прескочи до основното съдържание",
+ "Source": "Изходен код",
+ "Subcategories:": "Подкатегории:",
"Tags and Categories": "Тагове и Категории",
"Tags": "Тагове",
- "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_fil.py b/nikola/data/themes/base/messages/messages_br.py
index fd26d77..316e4ec 100644
--- a/nikola/data/themes/base/messages/messages_fil.py
+++ b/nikola/data/themes/base/messages/messages_br.py
@@ -1,11 +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": "",
"(active)": "",
"Also available in:": "",
"Archive": "",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "",
"Comments": "",
"LANGUAGE": "",
@@ -13,16 +15,19 @@ MESSAGES = {
"More posts about %s": "",
"Newer posts": "",
"Next post": "",
+ "Next": "",
"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}": "",
+ "Posts for {month_day_year}": "",
+ "Posts for {month_year}": "",
"Previous post": "",
+ "Previous": "",
"Publication date": "",
"RSS feed": "",
"Read in English": "",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "",
"Tags and Categories": "",
"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 23a1f64..2d537e6 100644
--- a/nikola/data/themes/base/messages/messages_bs.py
+++ b/nikola/data/themes/base/messages/messages_bs.py
@@ -1,28 +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 minuta preostalo za čitanje",
"(active)": "(aktivno)",
"Also available in:": "Takođe dostupan u:",
"Archive": "Arhiva",
+ "Atom feed": "",
+ "Authors": "Autori",
"Categories": "Kategorije",
"Comments": "Komentari",
"LANGUAGE": "Bosanski",
"Languages:": "Jezici:",
- "More posts about %s": "Više objava o %s",
+ "More posts about %s": "Više članaka o %s",
"Newer posts": "Novije objave",
- "Next post": "Naredna objava",
- "No posts found.": "Nema objava.",
+ "Next post": "Naredni članak",
+ "Next": "",
+ "No posts found.": "Nema članaka.",
"Nothing found.": "Ništa nije pronađeno.",
"Older posts": "Starije objave",
"Original site": "Izvorni sajt",
"Posted:": "Objavljeno:",
"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 {month} {day}, {year}",
- "Posts for {month} {year}": "Objave za {month} {year}",
- "Previous post": "Prethodne objave",
+ "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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Podkategorije:",
"Tags and Categories": "Oznake i kategorije",
"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šu objavu 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 f45b1a6..0143a85 100644
--- a/nikola/data/themes/base/messages/messages_ca.py
+++ b/nikola/data/themes/base/messages/messages_ca.py
@@ -1,39 +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",
+ "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": "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",
- "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 6e1bdd2..dcff7e6 100644
--- a/nikola/data/themes/base/messages/messages_cs.py
+++ b/nikola/data/themes/base/messages/messages_cs.py
@@ -1,11 +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 min zbývajících",
"(active)": "",
"Also available in:": "Dostupné také v",
"Archive": "Archiv",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Kategorie",
"Comments": "Komentáře",
"LANGUAGE": "Čeština",
@@ -13,16 +15,19 @@ 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",
"Original site": "Původní stránka",
"Posted:": "Zveřejněno:",
"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ě",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "",
"Tags and Categories": "Štítky a kategorie",
"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 73b71cb..b070db5 100644
--- a/nikola/data/themes/base/messages/messages_da.py
+++ b/nikola/data/themes/base/messages/messages_da.py
@@ -1,11 +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 min. tilbage at læse",
"(active)": "",
"Also available in:": "Fås også i:",
"Archive": "Arkiv",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Kategorier",
"Comments": "Kommentarer",
"LANGUAGE": "Dansk",
@@ -13,16 +15,19 @@ 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",
"Original site": "Oprindeligt hjemmeside",
"Posted:": "Opslået:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "",
"Tags and Categories": "Nøgleord og kategorier",
"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 324dd14..1ba4dd4 100644
--- a/nikola/data/themes/base/messages/messages_de.py
+++ b/nikola/data/themes/base/messages/messages_de.py
@@ -1,11 +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 min verbleiben zum Lesen",
- "(active)": "",
+ "(active)": "(aktiv)",
"Also available in:": "Auch verfügbar in:",
"Archive": "Archiv",
+ "Atom feed": "Atom-Feed",
+ "Authors": "Autoren",
"Categories": "Kategorien",
"Comments": "Kommentare",
"LANGUAGE": "Deutsch",
@@ -13,16 +15,19 @@ 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",
"Original site": "Original-Seite",
"Posted:": "Veröffentlicht:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Unterkategorien:",
"Tags and Categories": "Tags und Kategorien",
"Tags": "Tags",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 68cf91f..7021d84 100644
--- a/nikola/data/themes/base/messages/messages_el.py
+++ b/nikola/data/themes/base/messages/messages_el.py
@@ -1,11 +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": "",
"(active)": "",
"Also available in:": "Διαθέσιμο και στα:",
"Archive": "Αρχείο",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Κατηγορίες",
"Comments": "Σχόλια",
"LANGUAGE": "Ελληνικά",
@@ -13,16 +15,19 @@ MESSAGES = {
"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": "",
"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": "Διαβάστε στα Ελληνικά",
@@ -32,8 +37,13 @@ MESSAGES = {
"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_en.py b/nikola/data/themes/base/messages/messages_en.py
index 29af257..a6beb5e 100644
--- a/nikola/data/themes/base/messages/messages_en.py
+++ b/nikola/data/themes/base/messages/messages_en.py
@@ -1,11 +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 min remaining to read",
"(active)": "(active)",
"Also available in:": "Also available in:",
"Archive": "Archive",
+ "Atom feed": "Atom feed",
+ "Authors": "Authors",
"Categories": "Categories",
"Comments": "Comments",
"LANGUAGE": "English",
@@ -13,16 +15,19 @@ 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",
"Original site": "Original site",
"Posted:": "Posted:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Subcategories:",
"Tags and Categories": "Tags and Categories",
"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 8938707..2793ff5 100644
--- a/nikola/data/themes/base/messages/messages_eo.py
+++ b/nikola/data/themes/base/messages/messages_eo.py
@@ -1,39 +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 minutoj por legi",
+ "(active)": "(aktiva)",
"Also available in:": "Ankaŭ disponebla en:",
- "Archive": "Arĥivo",
+ "Archive": "Arkivo",
+ "Atom feed": "Atom fluo",
+ "Authors": "Aŭtoroj",
"Categories": "Kategorioj",
- "Comments": "",
- "LANGUAGE": "Anglalingve",
- "Languages:": "",
- "More posts about %s": "Pli artikoloj pri %s",
+ "Comments": "Komentoj",
+ "LANGUAGE": "Esperante",
+ "Languages:": "Lingvoj:",
+ "More posts about %s": "Pli da artikoloj pri %s",
"Newer posts": "Pli novaj artikoloj",
"Next post": "Venonta artikolo",
- "No posts found.": "",
- "Nothing found.": "",
+ "Next": "Venonta",
+ "No posts found.": "Neniu artikoloj trovitaj.",
+ "Nothing found.": "Nenio trovita.",
"Older posts": "Pli malnovaj artikoloj",
- "Original site": "Originala interretejo",
+ "Original site": "Originala retejo",
"Posted:": "Skribita:",
"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}": "",
- "Posts for {month} {year}": "Artikoloj skribitaj en {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",
- "Publication date": "",
- "RSS feed": "",
+ "Previous": "Antaŭa",
+ "Publication date": "Eldona dato",
+ "RSS feed": "RSS fluo",
"Read in English": "Legu ĝin en Esperanto",
- "Read more": "Legu plu",
- "Skip to main content": "",
+ "Read more": "Legu pli",
+ "Skip to main content": "Salti al ĉefenhavo",
"Source": "Fonto",
- "Subcategories:": "",
- "Tags and Categories": "Etikedoj kaj Kategorioj",
+ "Subcategories:": "Subkategorioj:",
+ "Tags and Categories": "Etikedoj kaj kategorioj",
"Tags": "Etikedoj",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "paĝo de malnovaj artikoloj %d",
+ "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 e3f0f03..bb58c82 100644
--- a/nikola/data/themes/base/messages/messages_es.py
+++ b/nikola/data/themes/base/messages/messages_es.py
@@ -1,11 +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": "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",
"LANGUAGE": "Español",
@@ -13,16 +15,19 @@ 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",
"Original site": "Sitio original",
"Posted:": "Publicado:",
"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 de {day}, {month}, {year}",
- "Posts for {month} {year}": "Posts de {month} {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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Subcategorías:",
"Tags and Categories": "Etiquetas y Categorías",
"Tags": "Etiquetas",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 c67cbb2..e2a6e30 100644
--- a/nikola/data/themes/base/messages/messages_et.py
+++ b/nikola/data/themes/base/messages/messages_et.py
@@ -1,39 +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",
+ "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": "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",
- "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 1588cd6..dd39991 100644
--- a/nikola/data/themes/base/messages/messages_eu.py
+++ b/nikola/data/themes/base/messages/messages_eu.py
@@ -1,39 +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)": "",
- "Also available in:": "Eskuragarria hemen ere:",
+ "%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": "",
+ "Comments": "Iruzkinak",
"LANGUAGE": "Euskara",
- "Languages:": "",
- "More posts about %s": "%s-ri buruzko post gehiago",
- "Newer posts": "Post berrienak",
- "Next post": "Hurrengo posta",
- "No posts found.": "",
- "Nothing found.": "",
- "Older posts": "Post zaharrenak",
- "Original site": "Jatorrizko orria",
+ "Languages:": "Hizkuntzak:",
+ "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": "Argitalpen zaharragoak",
+ "Original site": "Jatorrizko gunea",
"Posted:": "Argitaratuta:",
- "Posts about %s": "%s-ri buruzko postak",
- "Posts for year %s": "%s. urteko postak",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "{year}ko {month}ren postak",
- "Previous post": "Aurreko posta",
- "Publication date": "",
- "RSS feed": "",
+ "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}": "{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",
"Read more": "Irakurri gehiago",
- "Skip to main content": "",
+ "Skip to main content": "Joan eduki nagusira",
"Source": "Iturria",
- "Subcategories:": "",
+ "Subcategories:": "Azpikategoriak:",
"Tags and Categories": "Etiketak eta Kategoriak",
"Tags": "Etiketak",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "Post zaharren, orria %d",
- "page %d": "orria %d",
+ "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",
+ "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 b69d57a..ade3276 100644
--- a/nikola/data/themes/base/messages/messages_fa.py
+++ b/nikola/data/themes/base/messages/messages_fa.py
@@ -1,11 +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 دقیقه برای خواندن باقی مانده",
- "(active)": "",
+ "(active)": "(فعال)",
"Also available in:": "همچنین قابل دسترس از:",
"Archive": "آرشیو",
+ "Atom feed": "",
+ "Authors": "نویسنده‌ها",
"Categories": "دسته‌ها",
"Comments": "دیدگاه‌‌‌ها",
"LANGUAGE": "فارسی",
@@ -13,27 +15,35 @@ MESSAGES = {
"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}",
+ "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:": "",
+ "Subcategories:": "زیر بخش‌ها:",
"Tags and Categories": "برچسب‌ها و دسته‌ها",
"Tags": "برچسب‌ها",
- "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_fi.py b/nikola/data/themes/base/messages/messages_fi.py
index 1bcd6ad..e29db48 100644
--- a/nikola/data/themes/base/messages/messages_fi.py
+++ b/nikola/data/themes/base/messages/messages_fi.py
@@ -1,28 +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 for year %s": "Postauksia vuodelta %s",
- "Posts for {month} {day}, {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",
@@ -30,10 +35,15 @@ MESSAGES = {
"Skip to main content": "Hyppää sisältöön",
"Source": "Lähde",
"Subcategories:": "Alakategoriat:",
- "Tags and Categories": "Tagit ja kategoriat",
- "Tags": "Tagit",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "vanhoja postauksia, sivu %d",
+ "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 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 327b3f7..971d607 100644
--- a/nikola/data/themes/base/messages/messages_fr.py
+++ b/nikola/data/themes/base/messages/messages_fr.py
@@ -1,28 +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": "Il reste encore %d min. de lecture",
"(active)": "(actif)",
- "Also available in:": "Également disponible en:",
+ "Also available in:": "Également disponible en :",
"Archive": "Archives",
+ "Atom feed": "Flux Atom",
+ "Authors": "Auteurs",
"Categories": "Catégories",
"Comments": "Commentaires",
"LANGUAGE": "Français",
- "Languages:": "Langues:",
+ "Languages:": "Langues :",
"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",
"Original site": "Site d'origine",
- "Posted:": "Publié:",
+ "Posted:": "Publié :",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Sous-catégories",
"Tags and Categories": "Étiquettes et catégories",
"Tags": "Étiquettes",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 fd26d77..c41d61f 100644
--- a/nikola/data/themes/base/messages/messages_gl.py
+++ b/nikola/data/themes/base/messages/messages_gl.py
@@ -1,39 +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)": "",
- "Also available in:": "",
- "Archive": "",
- "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 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": "",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "",
- "page %d": "",
+ "%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": "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",
+ "Original site": "Sitio orixinal",
+ "Posted:": "Publicado:",
+ "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}",
+ "Previous post": "Artigo anterior",
+ "Previous": "",
+ "Publication date": "Data de publicación",
+ "RSS feed": "Sindicación RSS",
+ "Read in English": "Ler en Galego",
+ "Read more": "Ler máis",
+ "Skip to main content": "Saltar ó contido principal",
+ "Source": "Fonte",
+ "Subcategories:": "Subcategorías:",
+ "Tags and Categories": "Etiquetas e categorías",
+ "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
new file mode 100644
index 0000000..2de9796
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_he.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": "פיד 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_hi.py b/nikola/data/themes/base/messages/messages_hi.py
index 7804b60..25c3d2e 100644
--- a/nikola/data/themes/base/messages/messages_hi.py
+++ b/nikola/data/themes/base/messages/messages_hi.py
@@ -1,39 +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)": "",
+ "%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 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": "सोर्स",
- "Subcategories:": "",
+ "Skip to main content": "मुख्य विषयवस्तु में जाएं",
+ "Source": "स्रोत",
+ "Subcategories:": "उपश्रेणी",
"Tags and Categories": "टैग्स और श्रेणियाँ",
"Tags": "टैग्स",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "पुरानी पोस्टें, पृष्‍ठ %d",
+ "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_hr.py b/nikola/data/themes/base/messages/messages_hr.py
index 11e07d8..7c72f3b 100644
--- a/nikola/data/themes/base/messages/messages_hr.py
+++ b/nikola/data/themes/base/messages/messages_hr.py
@@ -1,11 +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 minuta preostalo za čitanje",
"(active)": "(aktivno)",
"Also available in:": "Također dostupno i u:",
"Archive": "Arhiva",
+ "Atom feed": "",
+ "Authors": "Autori",
"Categories": "Kategorije",
"Comments": "Komentari",
"LANGUAGE": "hrvatski",
@@ -13,16 +15,19 @@ 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",
"Original site": "Izvorna stranica",
"Posted:": "Objavljeno:",
"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}": "",
- "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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Podkategorije:",
"Tags and Categories": "Tagovi i kategorije",
"Tags": "Tagovi",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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
new file mode 100644
index 0000000..8b0ac86
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_hu.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""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",
+ "LANGUAGE": "Magyarul",
+ "Languages:": "Nyelvek:",
+ "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",
+ "Original site": "Eredeti honlap",
+ "Posted:": "Megjelent:",
+ "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}": "{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",
+ "Read more": "Olvass tovább",
+ "Skip to main content": "Ugrás a főtartalomra",
+ "Source": "Forrás",
+ "Subcategories:": "Alkategóriák:",
+ "Tags and Categories": "Címkék és kategóriák",
+ "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 475299f..d6c53ae 100644
--- a/nikola/data/themes/base/messages/messages_id.py
+++ b/nikola/data/themes/base/messages/messages_id.py
@@ -1,39 +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 menit tersisa untuk membaca",
"(active)": "(aktif)",
"Also available in:": "Juga tersedia dalam:",
"Archive": "Arsip",
+ "Atom feed": "Umpan Atom",
+ "Authors": "Penulis",
"Categories": "Kategori",
"Comments": "Komentar",
- "LANGUAGE": "Inggris",
+ "LANGUAGE": "Bahasa Indonesia",
"Languages:": "Bahasa:",
"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",
"Original site": "Situs orisinal",
"Posted:": "Ditulis oleh:",
"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 Inggris",
+ "Read in English": "Baca dalam Bahasa Indonesia",
"Read more": "Baca selengkapnya",
"Skip to main content": "Lanjutkan ke konten utama",
"Source": "Sumber",
"Subcategories:": "Sub kategori:",
"Tags and Categories": "Tag dan Kategori",
"Tags": "Tag",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 9f6d8be..2af1a62 100644
--- a/nikola/data/themes/base/messages/messages_it.py
+++ b/nikola/data/themes/base/messages/messages_it.py
@@ -1,11 +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": "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",
"LANGUAGE": "Italiano",
@@ -13,27 +15,35 @@ 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",
"Original site": "Sito originale",
"Posted:": "Pubblicato:",
"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": "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 972794d..fd563ad 100644
--- a/nikola/data/themes/base/messages/messages_ja.py
+++ b/nikola/data/themes/base/messages/messages_ja.py
@@ -1,39 +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": "過去の記事",
- "Categories": "カテゴリー",
+ "%d min remaining to read": "残りを読むのに必要な時間は%d分",
+ "(active)": "(有効)",
+ "Also available in:": "他の言語で読む:",
+ "Archive": "過去記事一覧",
+ "Atom feed": "Atomフィード",
+ "Authors": "著者一覧",
+ "Categories": "カテゴリ",
"Comments": "コメント",
"LANGUAGE": "日本語",
- "Languages:": "言語 :",
- "More posts about %s": "タグ: %s",
+ "Languages:": "言語:",
+ "More posts about %s": "%sに関する記事一覧",
"Newer posts": "新しい記事",
"Next post": "次の記事",
- "No posts found.": "記事はありません",
- "Nothing found.": "なにも見つかりませんでした",
+ "Next": "次",
+ "No posts found.": "記事はありません。",
+ "Nothing found.": "なにも見つかりませんでした。",
"Older posts": "過去の記事",
- "Original site": "元のサイト",
- "Posted:": "投稿日時:",
+ "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": "前の記事",
- "Publication date": "投稿日",
- "RSS feed": "RSS フィード",
+ "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": "メインコンテンツをスキップ",
+ "Skip to main content": "本文を読み飛ばす",
"Source": "ソース",
- "Subcategories:": "",
- "Tags and Categories": "タグとカテゴリー",
+ "Subcategories:": "サブカテゴリ",
+ "Tags and Categories": "カテゴリおよびタグ一覧",
"Tags": "タグ",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "前の記事 %dページ目",
- "page %d": "ページ %d",
+ "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_ko.py b/nikola/data/themes/base/messages/messages_ko.py
index 6904492..57b6cb9 100644
--- a/nikola/data/themes/base/messages/messages_ko.py
+++ b/nikola/data/themes/base/messages/messages_ko.py
@@ -1,39 +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:": "",
+ "(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": "옛날 포스트",
"Original site": "출처",
- "Posted:": "",
+ "Posted:": "작성됨:",
"Posts about %s": "%s에 대한 포스트",
+ "Posts by %s": "%s에 의해 작성된 글",
"Posts for year %s": "%s년도 포스트",
- "Posts for {month} {day}, {year}": "",
- "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": "영어로 읽기",
"Read more": "더 읽기",
"Skip to main content": "주 콘텐츠로 바로가기",
"Source": "원문",
- "Subcategories:": "",
+ "Subcategories:": "서브 카테고리",
"Tags and Categories": "태그와 분류",
"Tags": "태그",
- "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_lt.py b/nikola/data/themes/base/messages/messages_lt.py
new file mode 100644
index 0000000..d79b940
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_lt.py
@@ -0,0 +1,49 @@
+# -*- encoding:utf-8 -*-
+"""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",
+ "LANGUAGE": "Lietuvių",
+ "Languages:": "Kalbos:",
+ "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",
+ "Original site": "Originalo svetainė",
+ "Posted:": "Įrašyta:",
+ "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",
+ "Previous post": "Ankstesnis įrašas",
+ "Previous": "",
+ "Publication date": "Publikavimo data",
+ "RSS feed": "RSS srautas",
+ "Read in English": "Skaityti lietuviškai",
+ "Read more": "Skaityti daugiau",
+ "Skip to main content": "Pereiti į pagrindinį turinį",
+ "Source": "Pirminis tekstas",
+ "Subcategories:": "Subkategorijos:",
+ "Tags and Categories": "Žymės ir Kategorijos",
+ "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 30b798e..599d6ed 100644
--- a/nikola/data/themes/base/messages/messages_nb.py
+++ b/nikola/data/themes/base/messages/messages_nb.py
@@ -1,11 +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 min gjenstår å lese",
"(active)": "(aktiv)",
"Also available in:": "Også tilgjengelig på:",
"Archive": "Arkiv",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Kategorier",
"Comments": "Kommentarer",
"LANGUAGE": "norsk",
@@ -13,16 +15,19 @@ 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",
"Original site": "Opprinnelig side",
"Posted:": "Publisert:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Underkategorier:",
"Tags and Categories": "Merker og kategorier",
"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 0661ce1..ee98121 100644
--- a/nikola/data/themes/base/messages/messages_nl.py
+++ b/nikola/data/themes/base/messages/messages_nl.py
@@ -1,11 +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 min resterende leestijd ",
"(active)": "(actief)",
"Also available in:": "Ook beschikbaar in:",
"Archive": "Archief",
+ "Atom feed": "Atom-feed",
+ "Authors": "Auteurs",
"Categories": "Categorieën",
"Comments": "Commentaar",
"LANGUAGE": "Nederlands",
@@ -13,16 +15,19 @@ 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",
"Original site": "Originele site",
"Posted:": "Geplaatst:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Subcategorieën",
"Tags and Categories": "Tags en Categorieën",
"Tags": "Tags",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 392a38b..8a0be76 100644
--- a/nikola/data/themes/base/messages/messages_pa.py
+++ b/nikola/data/themes/base/messages/messages_pa.py
@@ -1,39 +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": "ਅਗਲੀ ਲਿਖਤ",
+ "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 for {month_day_year}": "{month_day_year} ਦੀਆਂ ਲਿਖਤਾਂ",
+ "Posts for {month_year}": "{month_year} ਦੀਆਂ ਲਿਖਤਾਂ",
"Previous post": "ਪਿਛਲੀ ਲਿਖਤ",
+ "Previous": "ਪਿੱਛੇ ",
"Publication date": "ਛਪਾਈ ਦੀ ਤਰੀਕ",
"RSS feed": "ਆਰ ਐੱਸ ਐੱਸ ਫੀਡ",
- "Read in English": "ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਪੜ੍ਹੋ",
+ "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_pl.py b/nikola/data/themes/base/messages/messages_pl.py
index 89aae0f..2d13e32 100644
--- a/nikola/data/themes/base/messages/messages_pl.py
+++ b/nikola/data/themes/base/messages/messages_pl.py
@@ -1,11 +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": "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",
"LANGUAGE": "Polski",
@@ -13,16 +15,19 @@ 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",
"Original site": "Oryginalna strona",
"Posted:": "Opublikowano:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Podkategorie:",
"Tags and Categories": "Tagi i Kategorie",
"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 91ea52e..92c56a2 100644
--- a/nikola/data/themes/base/messages/messages_pt.py
+++ b/nikola/data/themes/base/messages/messages_pt.py
@@ -1,11 +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",
+ "Atom feed": "Feed Atom",
+ "Authors": "Autores",
"Categories": "Categorias",
"Comments": "Comentários",
"LANGUAGE": "Português",
@@ -13,16 +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": "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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Sub-Categorias:",
"Tags and Categories": "Etiquetas e Categorias",
"Tags": "Etiqueta",
+ "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 58ad63f..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,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 mín restante para leitura",
- "(active)": "",
+ "(active)": "(ativo)",
"Also available in:": "Também disponível em:",
"Archive": "Arquivo",
+ "Atom feed": "Feed Atom",
+ "Authors": "Autores",
"Categories": "Categorias",
"Comments": "Comentários",
"LANGUAGE": "Português",
@@ -13,27 +15,35 @@ 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",
"Original site": "Site original",
"Posted:": "Publicado:",
"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",
"Read more": "Leia mais",
"Skip to main content": "Pular para o conteúdo principal",
"Source": "Código",
- "Subcategories:": "",
+ "Subcategories:": "Subcategorias:",
"Tags and Categories": "Tags e Categorias",
"Tags": "Tags",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 cfbe536..f2f33cc 100644
--- a/nikola/data/themes/base/messages/messages_ru.py
+++ b/nikola/data/themes/base/messages/messages_ru.py
@@ -1,11 +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 минут чтения осталось",
- "(active)": "",
+ "(active)": "(активная)",
"Also available in:": "Также доступно на:",
"Archive": "Архив",
+ "Atom feed": "",
+ "Authors": "Разработчики",
"Categories": "Категории",
"Comments": "Комментарии",
"LANGUAGE": "Русский",
@@ -13,27 +15,35 @@ MESSAGES = {
"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}": "",
- "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": "Прочесть по-русски",
"Read more": "Читать далее",
"Skip to main content": "Перейти к главному содержимому",
"Source": "Источник",
- "Subcategories:": "",
+ "Subcategories:": "Подкатегории:",
"Tags and Categories": "Тэги и категории",
"Tags": "Тэги",
- "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_si_lk.py b/nikola/data/themes/base/messages/messages_si_lk.py
deleted file mode 100644
index fd26d77..0000000
--- a/nikola/data/themes/base/messages/messages_si_lk.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
-
-MESSAGES = {
- "%d min remaining to read": "",
- "(active)": "",
- "Also available in:": "",
- "Archive": "",
- "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 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": "",
- "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 acd7364..aea46f2 100644
--- a/nikola/data/themes/base/messages/messages_sk.py
+++ b/nikola/data/themes/base/messages/messages_sk.py
@@ -1,11 +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",
+ "Atom feed": "Atom kanál",
+ "Authors": "Autori",
"Categories": "Kategórie",
"Comments": "Komentáre",
"LANGUAGE": "Slovenčina",
@@ -13,16 +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": "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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Podkategórie:",
"Tags and Categories": "Štítky a kategórie",
"Tags": "Štítky",
+ "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 992787b..6bd6370 100644
--- a/nikola/data/themes/base/messages/messages_sl.py
+++ b/nikola/data/themes/base/messages/messages_sl.py
@@ -1,11 +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": "še %d min za branje preostanka",
"(active)": "",
"Also available in:": "Na voljo tudi v:",
"Archive": "Arhiv",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Kategorije",
"Comments": "Komentarji",
"LANGUAGE": "Slovenščina",
@@ -13,16 +15,19 @@ 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",
"Original site": "Izvorna spletna stran",
"Posted:": "Objavljeno:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "",
"Tags and Categories": "Značke in kategorije",
"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
new file mode 100644
index 0000000..088cdcb
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_sq.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 ngelen për tu lexuar",
+ "(active)": "(aktiv)",
+ "Also available in:": "Gjithashtu e disponueshme në:",
+ "Archive": "Arkiva",
+ "Atom feed": "",
+ "Authors": "Autorë",
+ "Categories": "Kategori",
+ "Comments": "Komente",
+ "LANGUAGE": "Shqip",
+ "Languages:": "Gjuhë:",
+ "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",
+ "Original site": "Faqja origjinale",
+ "Posted:": "Postuar:",
+ "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}",
+ "Previous post": "Postim i kaluar",
+ "Previous": "",
+ "Publication date": "Data e publikimit",
+ "RSS feed": "Furnizim RSS",
+ "Read in English": "Lexo në Shqip",
+ "Read more": "Lexo më shumë",
+ "Skip to main content": "Shko tek përmbajtja kryesore",
+ "Source": "Burim",
+ "Subcategories:": "Nënkategori:",
+ "Tags and Categories": "Etiketa dhe Kategori",
+ "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 2b0aaf5..98e023e 100644
--- a/nikola/data/themes/base/messages/messages_sr.py
+++ b/nikola/data/themes/base/messages/messages_sr.py
@@ -1,11 +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 минута је преостало за читање",
"(active)": "(активно)",
"Also available in:": "Такође доступан у:",
"Archive": "Архива",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Категорије",
"Comments": "Коментари",
"LANGUAGE": "Српски",
@@ -13,16 +15,19 @@ MESSAGES = {
"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": "",
"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": "Прочитај на српском",
@@ -32,8 +37,13 @@ MESSAGES = {
"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_sr@latin.py b/nikola/data/themes/base/messages/messages_sr_latin.py
index 23a1f64..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,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 minuta preostalo za čitanje",
"(active)": "(aktivno)",
"Also available in:": "Takođe dostupan u:",
"Archive": "Arhiva",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Kategorije",
"Comments": "Komentari",
"LANGUAGE": "Bosanski",
@@ -13,16 +15,19 @@ 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",
"Original site": "Izvorni sajt",
"Posted:": "Objavljeno:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Podkategorije:",
"Tags and Categories": "Oznake i kategorije",
"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 52df00d..ce56b11 100644
--- a/nikola/data/themes/base/messages/messages_sv.py
+++ b/nikola/data/themes/base/messages/messages_sv.py
@@ -1,11 +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 minuter kvar att läsa",
"(active)": "(aktiv)",
"Also available in:": "Även tillgänglig på:",
"Archive": "Arkiv",
+ "Atom feed": "",
+ "Authors": "",
"Categories": "Kategorier",
"Comments": "Kommentarer",
"LANGUAGE": "Svenska",
@@ -13,16 +15,19 @@ 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",
"Original site": "Originalsida",
"Posted:": "Publicerad:",
"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",
@@ -32,8 +37,13 @@ MESSAGES = {
"Subcategories:": "Underkategorier:",
"Tags and Categories": "Taggar och Kategorier",
"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
new file mode 100644
index 0000000..385ff0b
--- /dev/null
+++ b/nikola/data/themes/base/messages/messages_te.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": "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_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 f748edd..0000000
--- a/nikola/data/themes/base/messages/messages_tl.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- encoding:utf-8 -*-
-from __future__ import unicode_literals
-
-MESSAGES = {
- "%d min remaining to read": "",
- "(active)": "",
- "Also available in:": "",
- "Archive": "",
- "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 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",
- "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 21eb534..8249f42 100644
--- a/nikola/data/themes/base/messages/messages_tr.py
+++ b/nikola/data/themes/base/messages/messages_tr.py
@@ -1,39 +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 dakikalık okuma",
- "(active)": "",
+ "(active)": "(etkin)",
"Also available in:": "Şu dilde de mevcut:",
"Archive": "Arşiv",
+ "Atom feed": "",
+ "Authors": "Yazarlar",
"Categories": "Kategoriler",
"Comments": "Yorumlar",
"LANGUAGE": "Türkçe",
"Languages:": "Diller:",
- "More posts about %s": "%s ilgili diğer yazılar",
+ "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",
"Original site": "Orjinal web sayfası",
"Posted:": "Yayın tarihi:",
"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} 'den beri olan 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",
"Read more": "Devamını oku",
"Skip to main content": "Ana içeriğe geç",
"Source": "Kaynak",
- "Subcategories:": "",
+ "Subcategories:": "Alt kategoriler:",
"Tags and Categories": "Etiketler ve Kategoriler",
"Tags": "Etiketler",
- "Write your page here.": "",
- "Write your post here.": "",
+ "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 16913da..2a6d84f 100644
--- a/nikola/data/themes/base/messages/messages_uk.py
+++ b/nikola/data/themes/base/messages/messages_uk.py
@@ -1,39 +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)": "",
+ "(active)": "(активне)",
"Also available in:": "Іншою мовою:",
"Archive": "Архів",
+ "Atom feed": "Стрічка у форматі Atom",
+ "Authors": "Автори",
"Categories": "Категорії",
"Comments": "Коментарі",
"LANGUAGE": "Українська",
"Languages:": "Мови:",
"More posts about %s": "Більше статей про %s",
- "Newer posts": "Нові статті",
+ "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": "Перейти до основного матеріалу",
"Source": "Джерело",
- "Subcategories:": "",
+ "Subcategories:": "Підкатегорії:",
"Tags and Categories": "Теги і категорії",
"Tags": "Теги",
- "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_ur.py b/nikola/data/themes/base/messages/messages_ur.py
index 074cb06..2e6cd49 100644
--- a/nikola/data/themes/base/messages/messages_ur.py
+++ b/nikola/data/themes/base/messages/messages_ur.py
@@ -1,11 +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 منٹ کا مطالعہ باقی",
"(active)": "(فعال)",
- "Also available in:": "ان زبانوں میں بھی دستیاب:",
+ "Also available in:": "ان میں بھی دستیاب:",
"Archive": "آرکائیو",
+ "Atom feed": "ایٹم فِیڈ",
+ "Authors": "مصنفین",
"Categories": "زمرے",
"Comments": "تبصرے",
"LANGUAGE": "اردو",
@@ -13,16 +15,19 @@ MESSAGES = {
"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 for {month_day_year}": "{month_day_year} کی تحاریر",
+ "Posts for {month_year}": "{month_year} کی تحاریر",
"Previous post": "پچھلی تحریر",
+ "Previous": "پیچھے",
"Publication date": "تاریخِ اشاعت",
"RSS feed": "آر ایس ایس فیڈ",
"Read in English": "اردو میں پڑھیں",
@@ -32,8 +37,13 @@ MESSAGES = {
"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_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 c21b4f0..df8570b 100644
--- a/nikola/data/themes/base/messages/messages_zh_cn.py
+++ b/nikola/data/themes/base/messages/messages_zh_cn.py
@@ -1,39 +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)": "",
- "Also available in:": "其他语言版本:",
- "Archive": "文章存档",
+ "%d min remaining to read": "剩余阅读时间 %d 分钟",
+ "(active)": "(活跃)",
+ "Also available in:": "也可用于:",
+ "Archive": "文章归档",
+ "Atom feed": "Atom 源",
+ "Authors": "作者",
"Categories": "分类",
- "Comments": "",
+ "Comments": "评论",
"LANGUAGE": "简体中文",
- "Languages:": "",
- "More posts about %s": "更多相关文章: %s",
- "Newer posts": "新一篇",
- "Next post": "后一篇",
- "No posts found.": "",
- "Nothing found.": "",
- "Older posts": "旧一篇",
+ "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 about %s": "关于文章 %s",
+ "Posts by %s": "文章有%s发布",
"Posts for year %s": "%s年文章",
- "Posts for {month} {day}, {year}": "",
- "Posts for {month} {year}": "{year}年{month}月文章",
- "Previous post": "前一篇",
- "Publication date": "",
- "RSS feed": "",
- "Read in English": "中文版",
- "Read more": "更多",
- "Skip to main content": "",
- "Source": "源代码",
- "Subcategories:": "",
+ "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": "标签",
- "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": "",
+ "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 fd26d77..ee4befd 100644
--- a/nikola/data/themes/base/messages/messages_zh_tw.py
+++ b/nikola/data/themes/base/messages/messages_zh_tw.py
@@ -1,39 +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)": "",
- "Also available in:": "",
- "Archive": "",
- "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 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": "",
- "Write your page here.": "",
- "Write your post here.": "",
- "old posts, page %d": "",
- "page %d": "",
+ "%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": "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/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
new file mode 100644
index 0000000..983f118
--- /dev/null
+++ b/nikola/data/themes/base/templates/author.tmpl
@@ -0,0 +1,28 @@
+## -*- coding: utf-8 -*-
+<%inherit file="list_post.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
+
+<%block name="extra_head">
+ ${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>
+ %endif
+ <div class="metadata">
+ ${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>
+ %endif
+</article>
+</%block>
diff --git a/nikola/data/themes/base/templates/authorindex.tmpl b/nikola/data/themes/base/templates/authorindex.tmpl
new file mode 100644
index 0000000..fe9d39e
--- /dev/null
+++ b/nikola/data/themes/base/templates/authorindex.tmpl
@@ -0,0 +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()}
+ ${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
new file mode 100644
index 0000000..8503bd4
--- /dev/null
+++ b/nikola/data/themes/base/templates/authors.tmpl
@@ -0,0 +1,25 @@
+## -*- 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:
+ <li><a class="reference listtitle" href="${link}">${text|h}</a></li>
+ % endif
+ % endfor
+ </ul>
+ %endif
+</article>
+</%block>
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 e29e2b3..b45744a 100644
--- a/nikola/data/themes/base/templates/base_header.tmpl
+++ b/nikola/data/themes/base/templates/base_header.tmpl
@@ -16,13 +16,13 @@
</%def>
<%def name="html_site_title()">
- <h1 id="brand"><a href="${abs_link(_link("root", None, lang))}" title="${blog_title}" 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}" id="logo">
+ <img src="${logo_url}" alt="${blog_title|h}" id="logo">
%endif
% if show_blog_title:
- <span id="blog-title">${blog_title}</span>
+ <span id="blog-title">${blog_title|h}</span>
% endif
</a></h1>
</%def>
@@ -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 948cfba..18801ed 100644
--- a/nikola/data/themes/base/templates/base_helper.tmpl
+++ b/nikola/data/themes/base/templates/base_helper.tmpl
@@ -1,29 +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">
- <base href="${abs_link(permalink)}">
%if description:
- <meta name="description" content="${description}">
+ <meta name="description" content="${description|h}">
%endif
<meta name="viewport" content="width=device-width">
%if title == blog_title:
@@ -33,7 +29,11 @@ lang="${lang}">
%endif
${html_stylesheets()}
- ${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:
@@ -53,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="//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:
@@ -88,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 6dd423c..f17777c 100644
--- a/nikola/data/themes/base/templates/comments_helper_disqus.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper_disqus.tmpl
@@ -21,24 +21,24 @@
};
(function() {
var dsq = document.createElement('script'); dsq.async = true;
- dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+ dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
- <noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
- <a href="//disqus.com" class="dsq-brlink" rel="nofollow">Comments powered by <span class="logo-disqus">Disqus</span></a>
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
+ <a href="https://disqus.com" class="dsq-brlink" rel="nofollow">Comments powered by <span class="logo-disqus">Disqus</span></a>
%endif
</%def>
<%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>
<%def name="comment_link_script()">
%if comment_system_id:
- <script>var disqus_shortname="${comment_system_id}";(function(){var a=document.createElement("script");a.async=true;a.src="//"+disqus_shortname+".disqus.com/count.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a)}());</script>
+ <script>var disqus_shortname="${comment_system_id}";(function(){var a=document.createElement("script");a.async=true;a.src="https://"+disqus_shortname+".disqus.com/count.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(a)}());</script>
%endif
</%def>
diff --git a/nikola/data/themes/base/templates/comments_helper_facebook.tmpl b/nikola/data/themes/base/templates/comments_helper_facebook.tmpl
index d6059a1..815f489 100644
--- a/nikola/data/themes/base/templates/comments_helper_facebook.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper_facebook.tmpl
@@ -17,7 +17,7 @@
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
- js.src = "//connect.facebook.net/en_US/all.js";
+ js.src = "https://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
@@ -55,7 +55,7 @@
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
- js.src = "//connect.facebook.net/en_US/all.js";
+ js.src = "https://connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
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 8dc95f5..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:
- <script src="${comment_system_id}js/count.min.js" data-isso="${comment_system_id}"></script>
+ %if comment_system_id and 'index' in pagekind:
+ <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_muut.tmpl b/nikola/data/themes/base/templates/comments_helper_muut.tmpl
index 94532d9..e5e7c05 100644
--- a/nikola/data/themes/base/templates/comments_helper_muut.tmpl
+++ b/nikola/data/themes/base/templates/comments_helper_muut.tmpl
@@ -9,5 +9,5 @@
<%def name="comment_link_script()">
-<script src="//cdn.muut.com/1/moot.min.js"></script>
+<script src="https://cdn.muut.com/1/moot.min.js"></script>
</%def>
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 0ee07ac..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}</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']}" /></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 88bb25c..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,18 +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">${post.author()}</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)}">${post.formatted_date(date_format)}</time></a></p>
+ <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
@@ -38,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 9331b93..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,10 +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):
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});</script>
- <script src="/assets/js/mathjax.js"></script>
- %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 4082516..ca6c421 100644
--- a/nikola/data/themes/base/templates/list.tmpl
+++ b/nikola/data/themes/base/templates/list.tmpl
@@ -1,15 +1,26 @@
## -*- 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}</h1>
+ <h1>${title|h}</h1>
</header>
+ ${archive_nav.archive_navigation()}
+ ${feeds_translations.translation_link(kind)}
%if items:
<ul class="postlist">
- % for text, link in items:
- <li><a href="${link}">${text}</a>
+ % for text, link, count in items:
+ <li><a href="${link}">${text|h}</a>
+ % if count:
+ (${count})
+ % endif
% endfor
</ul>
%else:
diff --git a/nikola/data/themes/base/templates/list_post.tmpl b/nikola/data/themes/base/templates/list_post.tmpl
index 3335fa6..8cd9336 100644
--- a/nikola/data/themes/base/templates/list_post.tmpl
+++ b/nikola/data/themes/base/templates/list_post.tmpl
@@ -1,15 +1,23 @@
## -*- 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}</h1>
+ <h1>${title|h}</h1>
</header>
+ ${archive_nav.archive_navigation()}
+ ${feeds_translations.translation_link(kind)}
%if posts:
<ul class="postlist">
% for post in posts:
- <li><a href="${post.permalink()}" class="listtitle">${post.title()|h}</a> <time class="listdate" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)}">${post.formatted_date(date_format)}</time></li>
+ <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>
%else:
diff --git a/nikola/data/themes/base/templates/listing.tmpl b/nikola/data/themes/base/templates/listing.tmpl
index e0bf91b..ef2dfd6 100644
--- a/nikola/data/themes/base/templates/listing.tmpl
+++ b/nikola/data/themes/base/templates/listing.tmpl
@@ -1,23 +1,24 @@
## -*- 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}"><i class="icon-folder-open"></i> ${name}</a>
+ <li><a href="${name|h}" class="listing-folder">${name|h}</a>
% endfor
% for name in files:
- <li><a href="${name}.html"><i class="icon-file"></i> ${name}</a>
+ <li><a href="${name|h}.html" class="listing-file">${name|h}</a>
% endfor
</ul>
%endif
% if code:
+ <h1>${title}
+ % if source_link:
+ <small><a href="${source_link}">(${messages("Source")})</a></small>
+ % endif
+ </h1>
${code}
% endif
-% if source_link:
- <p class="sourceline"><a href="${source_link}" id="sourcelink">${messages("Source")}</a></p>
-% 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 cbb81ef..1f2f0a4 100644
--- a/nikola/data/themes/base/templates/post.tmpl
+++ b/nikola/data/themes/base/templates/post.tmpl
@@ -2,17 +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"/>
<%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()}">
- %endif
- <meta name="author" content="${post.author()}">
+ <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">
%endif
@@ -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 75383cb..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,18 +31,33 @@
<header>
${html_title()}
<div class="metadata">
- <p class="byline author vcard"><span class="byline-name fn">${post.author()}</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)}">${post.formatted_date(date_format)}</time></a></p>
+ <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>
+ % 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
${html_sourcelink()}
% if post.meta('link'):
- <p class="linkline"><a href='${post.meta('link')}'>${messages("Original site")}</a></p>
+ <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()}">
- %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 424d134..9ae4489 100644
--- a/nikola/data/themes/base/templates/post_helper.tmpl
+++ b/nikola/data/themes/base/templates/post_helper.tmpl
@@ -1,9 +1,10 @@
## -*- coding: utf-8 -*-
+<%namespace name="math" file="math_helper.tmpl"/>
<%def name="meta_translations(post)">
%if len(translations) > 1:
%for langname in sorted(translations):
- %if langname != lang and post.is_translation_available(langname):
+ %if langname != lang and ((not post.skip_untranslated) or post.is_translation_available(langname)):
<link rel="alternate" hreflang="${langname}" href="${post.permalink(langname)}">
%endif
%endfor
@@ -15,7 +16,7 @@
<ul itemprop="keywords" class="tags">
%for tag in post.tags:
% if tag not in hidden_tags:
- <li><a class="tag p-category" href="${_link('tag', tag)}" rel="tag">${tag}</a></li>
+ <li><a class="tag p-category" href="${_link('tag', tag)}" rel="tag">${tag|h}</a></li>
% endif
%endfor
</ul>
@@ -40,31 +41,29 @@
</%def>
<%def name="open_graph_metadata(post)">
-%if use_open_graph:
- <meta property="og:site_name" content="${blog_title|striphtml}">
- <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()}">
+### <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}">
- %endfor
- %endif
+%endif
+%if post.tags:
+ %for tag in post.tags:
+ <meta property="article:tag" content="${tag|h}">
+ %endfor
%endif
</%def>
@@ -84,10 +83,7 @@
%endif
</%def>
+### This function is deprecated; use math_helper directly.
<%def name="mathjax_script(post)">
- %if post.is_mathjax:
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});</script>
- <script src="/assets/js/mathjax.js"></script>
- %endif
+ ${math.math_scripts_ifpost(post)}
</%def>
diff --git a/nikola/data/themes/base/templates/post_list_directive.tmpl b/nikola/data/themes/base/templates/post_list_directive.tmpl
index e080a81..4a1cf69 100644
--- a/nikola/data/themes/base/templates/post_list_directive.tmpl
+++ b/nikola/data/themes/base/templates/post_list_directive.tmpl
@@ -6,10 +6,10 @@
<ul class="post-list">
% for post in posts:
<li class="post-list-item">
- ${post.formatted_date(date_format)}
- &nbsp;
- <a href="${post.permalink(lang)}">${post.title(lang)|h}</a>
- </li>
+ ${post.formatted_date(date_format)|h}
+ &nbsp;
+ <a href="${post.permalink(lang)}">${post.title(lang)|h}</a>
+ </li>
% endfor
</ul>
%endif
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 2737c4d..aeac04f 100644
--- a/nikola/data/themes/base/templates/story.tmpl
+++ b/nikola/data/themes/base/templates/story.tmpl
@@ -2,10 +2,11 @@
<%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">
-<article class="storypage" itemscope="itemscope" itemtype="http://schema.org/Article">
+<article class="post-${post.meta('type')} storypage" itemscope="itemscope" itemtype="http://schema.org/Article">
<header>
${pheader.html_title()}
${pheader.html_translations(post)}
@@ -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 7509f3e..ac40876 100644
--- a/nikola/data/themes/base/templates/tag.tmpl
+++ b/nikola/data/themes/base/templates/tag.tmpl
@@ -1,51 +1,37 @@
## -*- 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" type="application/rss+xml" title="RSS for ${kind} ${tag} (${language})" href="${_link(kind + "_rss", tag, language)}">
- %endfor
- %elif generate_rss:
- <link rel="alternate" type="application/rss+xml" type="application/rss+xml" title="RSS for ${kind} ${tag}" 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:')}
<ul>
%for name, link in subcategories:
- <li><a href="${link}">${name}</a></li>
+ <li><a href="${link}">${name|h}</a></li>
%endfor
</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><a href="${post.permalink()}" class="listtitle">${post.title()|h}</a> <time class="listdate" datetime="${post.formatted_date('webiso')}" title="${post.formatted_date(date_format)}">${post.formatted_date(date_format)}</time></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 0834411..232d093 100644
--- a/nikola/data/themes/base/templates/tagindex.tmpl
+++ b/nikola/data/themes/base/templates/tagindex.tmpl
@@ -1,24 +1,29 @@
## -*- coding: utf-8 -*-
<%inherit file="index.tmpl"/>
+<%namespace name="feeds_translations" file="feeds_translations_helper.tmpl" import="*"/>
<%block name="content_header">
- %if subcategories:
- ${messages('Subcategories:')}
- <ul>
- %for name, link in subcategories:
- <li><a href="${link}">${name}</a></li>
- %endfor
- </ul>
- %endif
+ <header>
+ <h1>${title|h}</h1>
+ %if description:
+ <p>${description}</p>
+ %endif
+ %if subcategories:
+ ${messages('Subcategories:')}
+ <ul>
+ %for name, link in subcategories:
+ <li><a href="${link}">${name|h}</a></li>
+ %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} section (${language})" href="${_link(kind + "_atom", tag, language)}">
- %endfor
- %elif generate_atom:
- <link rel="alternate" type="application/atom+xml" title="Atom for the ${tag} 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 a9d2dd7..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}</h1>
+ <h1>${title|h}</h1>
+ <div class="metadata">
+ ${feeds_translations.translation_link(kind)}
+ </div>
</header>
% if cat_items:
% if items:
@@ -33,7 +41,7 @@
<ul class="postlist">
% for text, link in items:
% if text not in hidden_tags:
- <li><a class="reference listtitle" href="${link}">${text}</a></li>
+ <li><a class="reference listtitle" href="${link}">${text|h}</a></li>
% endif
% endfor
</ul>
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.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.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/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/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 c0d986b..0000000
--- a/nikola/data/themes/bootstrap3-jinja/assets/js/flowr.plugin.js
+++ /dev/null
@@ -1,265 +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 );
-
- var newLineWidth = lineWidth + minWidth + requiredPadding(1);
-
- if (minWidth > settings.maxWidth) {
- // very short+wide images like panoramas
- // show them even if ugly, as wide as possible
- minWidth = settings.maxWidth-1;
- minHeight = settings.height * minHeight / 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 resposive 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 = $this.data( 'data' ) || [];
- 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);
- 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);
- // Set some basic stuff
- displayObject
- .css( 'width', displayData.width )
- .css( 'height', displayData.height )
- .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.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/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 46d145a..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">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 }}" id="logo">
- {% endif %}
-
- {% if show_blog_title %}
- <span id="blog-title">{{ blog_title }}</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 5ab4dcb..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/base_helper.tmpl
+++ /dev/null
@@ -1,184 +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">
- <base href="{{ abs_link(permalink) }}">
- {% if description %}
- <meta name="description" content="{{ description }}">
- {% 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() }}
- {{ 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="//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="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
- <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
- <script src="/assets/js/all.js"></script>
- {% else %}
- <script src="/assets/js/all-nocdn.js"></script>
- {% endif %}
- {% else %}
- {% if use_cdn %}
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
- <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></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 href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
- <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 href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
- {% 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 00fda11..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/gallery.tmpl
+++ /dev/null
@@ -1,94 +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 }}</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'] }}">
- <img src="{{ image['url_thumb'] }}" alt="{{ image['title'] }}" /></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});
-</script>
-{% endblock %}
diff --git a/nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl b/nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl
deleted file mode 100644
index 634c482..0000000
--- a/nikola/data/themes/bootstrap3-jinja/templates/listing.tmpl
+++ /dev/null
@@ -1,28 +0,0 @@
-{# -*- coding: utf-8 -*- #}
-{% extends 'base.tmpl' %}
-{% import 'crumbs.tmpl' as ui with context %}
-
-{% block content %}
-{{ ui.bar(crumbs) }}
-{% if folders or files %}
-<ul class="list-unstyled">
-{% for name in folders %}
- <li><a href="{{ name }}"><i class="glyphicon glyphicon-folder-open"></i> {{ name }}</a>
-{% endfor %}
-{% for name in files %}
- <li><a href="{{ name }}.html"><i class="glyphicon glyphicon-file"></i> {{ name }}</a>
-{% endfor %}
-</ul>
-{% endif %}
-{% if code %}
- {{ code }}
-{% endif %}
-{% endblock %}
-
-{% block sourcelink %}
-{% if source_link %}
- <li>
- <a href="{{ source_link }}" id="sourcelink">{{ messages("Source") }}</a>
- </li>
-{% endif %}
-{% 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.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.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/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/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 c0d986b..0000000
--- a/nikola/data/themes/bootstrap3/assets/js/flowr.plugin.js
+++ /dev/null
@@ -1,265 +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 );
-
- var newLineWidth = lineWidth + minWidth + requiredPadding(1);
-
- if (minWidth > settings.maxWidth) {
- // very short+wide images like panoramas
- // show them even if ugly, as wide as possible
- minWidth = settings.maxWidth-1;
- minHeight = settings.height * minHeight / 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 resposive 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 = $this.data( 'data' ) || [];
- 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);
- 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);
- // Set some basic stuff
- displayObject
- .css( 'width', displayData.width )
- .css( 'height', displayData.height )
- .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.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/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 5f90733..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">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}" id="logo">
- %endif
-
- % if show_blog_title:
- <span id="blog-title">${blog_title}</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 a1e7508..0000000
--- a/nikola/data/themes/bootstrap3/templates/base_helper.tmpl
+++ /dev/null
@@ -1,184 +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">
- <base href="${abs_link(permalink)}">
- %if description:
- <meta name="description" content="${description}">
- %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()}
- ${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="//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="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
- <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
- <script src="/assets/js/all.js"></script>
- %else:
- <script src="/assets/js/all-nocdn.js"></script>
- %endif
- %else:
- %if use_cdn:
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
- <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></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 href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
- <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 href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
- %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 3d6c01a..0000000
--- a/nikola/data/themes/bootstrap3/templates/gallery.tmpl
+++ /dev/null
@@ -1,94 +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}</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']}">
- <img src="${image['url_thumb']}" alt="${image['title']}" /></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});
-</script>
-</%block>
diff --git a/nikola/data/themes/bootstrap3/templates/listing.tmpl b/nikola/data/themes/bootstrap3/templates/listing.tmpl
deleted file mode 100644
index 7b09e3e..0000000
--- a/nikola/data/themes/bootstrap3/templates/listing.tmpl
+++ /dev/null
@@ -1,28 +0,0 @@
-## -*- coding: utf-8 -*-
-<%inherit file="base.tmpl"/>
-<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
-
-<%block name="content">
-${ui.bar(crumbs)}
-%if folders or files:
-<ul class="list-unstyled">
-% for name in folders:
- <li><a href="${name}"><i class="glyphicon glyphicon-folder-open"></i> ${name}</a>
-% endfor
-% for name in files:
- <li><a href="${name}.html"><i class="glyphicon glyphicon-file"></i> ${name}</a>
-% endfor
-</ul>
-%endif
-% if code:
- ${code}
-% endif
-</%block>
-
-<%block name="sourcelink">
-% if source_link:
- <li>
- <a href="${source_link}" id="sourcelink">${messages("Source")}</a>
- </li>
-% endif
-</%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 6964ec6..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,25 +73,29 @@ 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,
-.postlist .listdate:before {
+.postlist .listdate:after {
content: " — ";
}
@@ -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;
@@ -205,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/bootstrap4-jinja/templates/authors.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/authors.tmpl
new file mode 100644
index 0000000..922de74
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/authors.tmpl
@@ -0,0 +1,25 @@
+{# -*- 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">
+ {% for text, link in items %}
+ {% if text not in hidden_authors %}
+ <li><a class="reference badge" href="{{ link }}">{{ text|e }}</a></li>
+ {% endif %}
+ {% endfor %}
+ </ul>
+{% endif %}
+{% endblock %}
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/bootstrap4-jinja/templates/listing.tmpl b/nikola/data/themes/bootstrap4-jinja/templates/listing.tmpl
new file mode 100644
index 0000000..56a1b4f
--- /dev/null
+++ b/nikola/data/themes/bootstrap4-jinja/templates/listing.tmpl
@@ -0,0 +1,30 @@
+{# -*- coding: utf-8 -*- #}
+{% extends 'base.tmpl' %}
+{% import 'ui_helper.tmpl' as ui with context %}
+{% block content %}
+{{ ui.breadcrumbs(crumbs) }}
+{% if folders or files %}
+<ul>
+{% for name in folders %}
+ <li><a href="{{ name|e }}">📂&nbsp;{{ name|e }}</a>
+{% endfor %}
+{% for name in files %}
+ <li><a href="{{ name|e }}.html">📄&nbsp;{{ name|e }}</a>
+{% endfor %}
+</ul>
+{% endif %}
+{% if code %}
+<h1>{{ title }}
+ {% if source_link %}
+ <small><a href="{{ source_link }}">({{ messages("Source") }})</a></small>
+ {% endif %}
+ </h1>
+ {{ code }}
+{% endif %}
+{% endblock %}
+
+{% block sourcelink %}
+{% 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 df4109c..7e18f90 100644
--- a/nikola/data/themes/bootstrap3-jinja/templates/post.tmpl
+++ b/nikola/data/themes/bootstrap4-jinja/templates/post.tmpl
@@ -2,17 +2,16 @@
{% 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 }}">
+ <meta name="keywords" content="{{ smartjoin(', ', post.meta('keywords'))|e }}">
{% endif %}
- {% if post.description() %}
- <meta name="description" itemprop="description" content="{{ post.description() }}">
- {% endif %}
- <meta name="author" content="{{ post.author() }}">
+ <meta name="author" content="{{ post.author()|e }}">
{% if post.prev_post %}
<link rel="prev" href="{{ post.prev_post.permalink() }}" title="{{ post.prev_post.title()|e }}" type="text/html">
{% endif %}
@@ -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 c308f19..0eadff6 100644
--- a/nikola/data/themes/bootstrap3-jinja/templates/tags.tmpl
+++ b/nikola/data/themes/bootstrap4-jinja/templates/tags.tmpl
@@ -2,16 +2,16 @@
{% extends 'base.tmpl' %}
{% block content %}
-<h1>{{ title }}</h1>
+<h1>{{ title|e }}</h1>
{% if cat_items %}
{% if items %}
<h2>{{ messages("Categories") }}</h2>
{% endif %}
{% for text, full_name, path, link, indent_levels, indent_change_before, indent_change_after in cat_hierarchy %}
{% for i in range(indent_change_before) %}
- <ul class="unstyled">
+ <ul class="list-inline">
{% endfor %}
- <li><a class="reference badge" href="{{ link }}">{{ text }}</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 }}</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 6964ec6..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,25 +73,29 @@ 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,
-.postlist .listdate:before {
+.postlist .listdate:after {
content: " — ";
}
@@ -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;
@@ -205,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/bootstrap4/templates/authors.tmpl b/nikola/data/themes/bootstrap4/templates/authors.tmpl
new file mode 100644
index 0000000..300377d
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/authors.tmpl
@@ -0,0 +1,25 @@
+## -*- 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">
+ % for text, link in items:
+ % if text not in hidden_authors:
+ <li><a class="reference badge" href="${link}">${text|h}</a></li>
+ % endif
+ % endfor
+ </ul>
+% endif
+</%block>
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/bootstrap4/templates/listing.tmpl b/nikola/data/themes/bootstrap4/templates/listing.tmpl
new file mode 100644
index 0000000..d9a4c56
--- /dev/null
+++ b/nikola/data/themes/bootstrap4/templates/listing.tmpl
@@ -0,0 +1,30 @@
+## -*- coding: utf-8 -*-
+<%inherit file="base.tmpl"/>
+<%namespace name="ui" file="ui_helper.tmpl"/>
+<%block name="content">
+${ui.breadcrumbs(crumbs)}
+%if folders or files:
+<ul>
+% for name in folders:
+ <li><a href="${name|h}">📂&nbsp;${name|h}</a>
+% endfor
+% for name in files:
+ <li><a href="${name|h}.html">📄&nbsp;${name|h}</a>
+% endfor
+</ul>
+%endif
+% if code:
+<h1>${title}
+ % if source_link:
+ <small><a href="${source_link}">(${messages("Source")})</a></small>
+ % endif
+ </h1>
+ ${code}
+% endif
+</%block>
+
+<%block name="sourcelink">
+% 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 8d9f88a..0d4248e 100644
--- a/nikola/data/themes/bootstrap3/templates/post.tmpl
+++ b/nikola/data/themes/bootstrap4/templates/post.tmpl
@@ -2,17 +2,16 @@
<%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()}">
- %endif
- <meta name="author" content="${post.author()}">
+ <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">
%endif
@@ -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 ead3b0a..f1870f6 100644
--- a/nikola/data/themes/bootstrap3/templates/tags.tmpl
+++ b/nikola/data/themes/bootstrap4/templates/tags.tmpl
@@ -2,16 +2,16 @@
<%inherit file="base.tmpl"/>
<%block name="content">
-<h1>${title}</h1>
+<h1>${title|h}</h1>
% if cat_items:
% if items:
<h2>${messages("Categories")}</h2>
% endif
% for text, full_name, path, link, indent_levels, indent_change_before, indent_change_after in cat_hierarchy:
% for i in range(indent_change_before):
- <ul class="unstyled">
+ <ul class="list-inline">
% endfor
- <li><a class="reference badge" href="${link}">${text}</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}</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>