Browse Source

Initial commit

master
Henner M. Kruse 4 years ago
commit
39c9433fb1
30 changed files with 827 additions and 0 deletions
  1. +4
    -0
      README.md
  2. +69
    -0
      static/css/pygment.css
  3. +404
    -0
      static/css/site.css
  4. BIN
      static/fonts/LM-bold-italic.ttf
  5. BIN
      static/fonts/LM-bold-italic.woff
  6. BIN
      static/fonts/LM-bold-italic.woff2
  7. BIN
      static/fonts/LM-bold.ttf
  8. BIN
      static/fonts/LM-bold.woff
  9. BIN
      static/fonts/LM-bold.woff2
  10. BIN
      static/fonts/LM-italic.ttf
  11. BIN
      static/fonts/LM-italic.woff
  12. BIN
      static/fonts/LM-italic.woff2
  13. BIN
      static/fonts/LM-regular.ttf
  14. BIN
      static/fonts/LM-regular.woff
  15. BIN
      static/fonts/LM-regular.woff2
  16. +14
    -0
      templates/archives.html
  17. +69
    -0
      templates/article.html
  18. +8
    -0
      templates/author.html
  19. +12
    -0
      templates/authors.html
  20. +82
    -0
      templates/base.html
  21. +12
    -0
      templates/categories.html
  22. +8
    -0
      templates/category.html
  23. +14
    -0
      templates/gosquared.html
  24. +44
    -0
      templates/index.html
  25. +27
    -0
      templates/page.html
  26. +11
    -0
      templates/pagination.html
  27. +14
    -0
      templates/period_archives.html
  28. +7
    -0
      templates/tag.html
  29. +12
    -0
      templates/tags.html
  30. +16
    -0
      templates/translations.html

+ 4
- 0
README.md View File

@@ -0,0 +1,4 @@
# Pelican LaTeX theme

A theme for pelican which mimics the look of LaTeX documents.


+ 69
- 0
static/css/pygment.css View File

@@ -0,0 +1,69 @@
.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 .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.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 .mb { color: #666666 } /* Literal.Number.Bin */
.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 .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.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 .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */

+ 404
- 0
static/css/site.css View File

@@ -0,0 +1,404 @@
@import url("pygment.css");

@font-face {
font-family: 'Latin Modern';
font-style: normal;
font-weight: normal;
font-display: swap;
src: url('../fonts/LM-regular.woff2') format('woff2'),
url('../fonts/LM-regular.woff') format('woff'),
url('../fonts/LM-regular.ttf') format('truetype');
}

@font-face {
font-family: 'Latin Modern';
font-style: italic;
font-weight: normal;
font-display: swap;
src: url('../fonts/LM-italic.woff2') format('woff2'),
url('../fonts/LM-italic.woff') format('woff'),
url('../fonts/LM-italic.ttf') format('truetype');
}

@font-face {
font-family: 'Latin Modern';
font-style: normal;
font-weight: bold;
font-display: swap;
src: url('../fonts/LM-bold.woff2') format('woff2'),
url('../fonts/LM-bold.woff') format('woff'),
url('../fonts/LM-bold.ttf') format('truetype');
}

@font-face {
font-family: 'Latin Modern';
font-style: italic;
font-weight: bold;
font-display: swap;
src: url('../fonts/LM-bold-italic.woff2') format('woff2'),
url('../fonts/LM-bold-italic.woff') format('woff'),
url('../fonts/LM-bold-italic.ttf') format('truetype');
}

*, *::before, *::after {
box-sizing: border-box;
}
body, h1, h2, h3, h4, p, ul[class], ol[class], li, figure, figcaption, dl, dd {
margin: 0;
}

html, body {
height: 98%;
max-width: 1280px;
margin: auto;
}

html {
font-size: 1rem;
scroll-behavior: smooth;
}

body {
display: flex;
flex-flow: column nowrap;
font-family: 'Latin Modern', Georgia, Cambria, 'Times New Roman', Times, serif;
line-height: 1.8;
min-height: 100vh;
overflow-x: hidden;
margin: 0 auto;
padding: 2rem 1.25rem;
color: hsl(0, 5%, 10%);
background-color: hsl(210, 20%, 98%);
text-rendering: optimizeLegibility;
}

p {
text-align: justify;
hyphens: auto;
margin-top: 1rem;
}

a:not([class]) {
text-decoration-skip-ink: auto;
}

a, a:visited {
color: #a00;
}

a:focus {
outline-offset: 2px;
outline: 2px solid hsl(220, 90%, 52%);
}


h1 {
font-size: 2.5rem;
line-height: 3.25rem;
margin-bottom: 1.625rem;
}
h2 {
font-size: 1.7rem;
line-height: 2rem;
margin-top: 3rem;
}
h3 {
font-size: 1.4rem;
margin-top: 2.5rem;
}
h4 {
font-size: 1.2rem;
margin-top: 2rem;
}
h5 {
font-size: 1rem;
margin-top: 1.8rem;
}
h6 {
font-size: 1rem;
font-style: italic;
font-weight: normal;
margin-top: 2.5rem;
}

h3, h4, h5, h6 {
line-height: 1.625rem;
}

h1 + h2 {
margin-top: 1.625rem;
}

h2 + h3, h3 + h4, h4 + h5 {
margin-top: 0.8rem;
}

h5 + h6 {
margin-top: -0.8rem;
}

h2, h3, h4, h5, h6 {
margin-bottom: 0.8rem;
}

ul, ol {
padding: 0;
}

#banner, #contentinfo {
width: 100%;
text-align: center;
}

#contentinfo {
flex-shrink: 0;
margin-top: 40px
}


#container {
flex: 1 0 auto;
display: flex;
align-items: stretch;
max-width: 100%;
}

@media only screen and (max-width: 1024px) {
#container {
flex-flow: row wrap;
}
}

#menu {
min-width: 300px;
}

.menuitems {
list-style: none;
}

#content {
flex: 1 1 auto;
}

#post-list li {
list-style: none;
}

.entry-title {
text-align: center;
}
div.post-info {
text-align: center;
}

.author a {
margin: 0.85rem 0;
font-variant-caps: small-caps;
text-align: center;
}

footer.post-info {
display: flex;
flex-flow: row wrap;
justify-content: space-between;
padding: 1rem;
}

.entry-title {
text-align: center;
}

/*
* Links
*/

.entry-content a {
counter-increment: entrylinks;
text-decoration: none;
color: inherit;
outline: none;
cursor: default;
pointer-events: none;
}
.entry-content a:after {
content: '[' counter(entrylinks) ']';
margin-left: 2px;
color: #a00;
cursor: pointer;
pointer-events: auto;
}

/*
* Lists
*/

.entry-content ol,
.entry-content ul {
padding-left: 40px;
}

.entry-content li>ol,
.entry-content li>ul {
padding-left: 20px;
}

/*
* Images
*/

.entry-content img {
counter-increment: figures;
display: block;
max-width: 80%;
margin: 0 auto 0 auto;
padding: 1rem;
}

.entry-content img~em{
display: block;
margin: 0 auto 0 auto;
text-align: center;
font-style: normal;
}
.entry-content img~em:before {
content: 'Figure ' counter(figures) ': ';
font-weight: bold;
}

/*
* Tables
*/

.entry-content table:not([class="highlighttable"]) {
counter-increment: tables;
max-width: 80%;
margin: 0 auto 0 auto;
padding: 1rem;
border-collapse: collapse;
border-spacing: 0;
}

.entry-content table~p > em{
display: block;
margin: 0 auto 0 auto;
text-align: center;
font-style: normal;
}

.entry-content table~p > em:before {
content: 'Table ' counter(tables) ': ';
font-weight: bold;
}

.entry-content th, td {
padding: 0.5rem;
}

.entry-content td {
border-bottom: 1px solid hsl(0, 0%, 85%);
}

.entry-content th:not([align]), td:not([align]) {
text-align: left;
}

.entry-content th:empty,
.entry-content td:empty {
border-left: 1px solid hsl(0, 0%, 85%);
width: 0;
padding: 0;
}

.entry-content th:empty~th:empty,
.entry-content td:empty~td:empty {
border-left: 1px double hsl(0, 0%, 85%);
}

.entry-content thead th {
border-bottom: 2px solid hsl(0, 0%, 70%);
}

.entry-content tfoot th {
border-top: 2px solid hsl(0, 0%, 70%);
}

/*
* Code
*/

.entry-content table.highlighttable,
.entry-content div.highlight {
width: 100%;
max-width: 100%;
}

.entry-content div.highlight {
counter-increment: listings;
}

.entry-content table.highlighttable~p > em,
.entry-content div.highlight~p > em {
display: block;
margin: 0 auto 0 auto;
text-align: center;
font-style: normal;
}
.entry-content table.highlighttable~p > em:before,
.entry-content div.highlight~p > em:before {
content: 'Listing ' counter(listings) ': ';
font-weight: bold;
}

.entry-content td.linenos,
.entry-content td.code {
border-bottom: none;
}

.entry-content code, pre {
font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
font-size: 85%;
}

.entry-content pre {
max-width: 100%;
overflow: auto;
border-radius: 4px;
}
.entry-content pre code {
font-size: 95%;
position: relative;
}

.linenos {
width: 3em;
}

/* This is old stuff, inherited from LaTeX.css, probably unused */

/* Nested ordered list for ToC */
.toc ol {
counter-reset: item;
padding-left: 2rem;
}
.toc li {
display: block;
}
.toc li:before {
content: counters(item, '.') ' ';
counter-increment: item;
padding-right: 0.85rem;
}

/* Make footnote text smaller and left align it (looks bad with long URLs) */
.footnotes p {
text-align: left;
line-height: 1.5;
font-size: 85%;
margin-bottom: 0.4rem;
}
.footnotes {
border-top: 1px solid hsl(0, 0%, 39%);
}


BIN
static/fonts/LM-bold-italic.ttf View File


BIN
static/fonts/LM-bold-italic.woff View File


BIN
static/fonts/LM-bold-italic.woff2 View File


BIN
static/fonts/LM-bold.ttf View File


BIN
static/fonts/LM-bold.woff View File


BIN
static/fonts/LM-bold.woff2 View File


BIN
static/fonts/LM-italic.ttf View File


BIN
static/fonts/LM-italic.woff View File


BIN
static/fonts/LM-italic.woff2 View File


BIN
static/fonts/LM-regular.ttf View File


BIN
static/fonts/LM-regular.woff View File


BIN
static/fonts/LM-regular.woff2 View File


+ 14
- 0
templates/archives.html View File

@@ -0,0 +1,14 @@
{% extends "base.html" %}

{% block title %}{{ SITENAME }} - Archives{% endblock %}

{% block content %}
<h1>Archives for {{ SITENAME }}</h1>

<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
{% endblock %}

+ 69
- 0
templates/article.html View File

@@ -0,0 +1,69 @@
{% extends "base.html" %}
{% block html_lang %}{{ article.lang }}{% endblock %}

{% block title %}{{ SITENAME }} - {{ article.title }}{% endblock %}

{% block head %}
{{ super() }}

{% import 'translations.html' as translations with context %}
{% if translations.entry_hreflang(article) %}
{{ translations.entry_hreflang(article) }}
{% endif %}

{% if article.description %}
<meta name="description" content="{{article.description}}" />
{% endif %}

{% for tag in article.tags %}
<meta name="tags" content="{{tag}}" />
{% endfor %}

{% endblock %}

{% block content %}
<section id="content" class="body">
<header>
<h2 class="entry-title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(article) }}
<div class="post-info">
<time class="published" datetime="{{ article.date.isoformat() }}">
{{ article.locale_date }}
</time>
{% if article.modified %}
<time class="modified" datetime="{{ article.modified.isoformat() }}">
{{ article.locale_modified }}
</time>
{% endif %}
{% if article.authors %}
<address class="vcard author">
By {% for author in article.authors %}<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>{% endfor %}
</address>
{% endif %}
</div>
</header>
<div class="entry-content">
{{ article.content }}
</div><!-- /.entry-content -->
<footer class="post-info">
{% if article.category %}
<div class="category">
Category: <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
</div>
{% endif %}
{% if article.tags %}
<div class="tags">
Tags:
{% for tag in article.tags %}
<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
{% endfor %}
</div>
{% endif %}
</footer><!-- /.post-info -->
</section>
{% endblock %}

<!-- vim:ts=2:sw=2:et:ft=html -->

+ 8
- 0
templates/author.html View File

@@ -0,0 +1,8 @@
{% extends "index.html" %}

{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %}

{% block content_title %}
<h2>Articles by {{ author }}</h2>
{% endblock %}


+ 12
- 0
templates/authors.html View File

@@ -0,0 +1,12 @@
{% extends "base.html" %}

{% block title %}{{ SITENAME }} - Authors{% endblock %}

{% block content %}
<h1>Authors on {{ SITENAME }}</h1>
<ul>
{% for author, articles in authors|sort %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

+ 82
- 0
templates/base.html View File

@@ -0,0 +1,82 @@
<!DOCTYPE html>

<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">

<head>

{% block head %}
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="{{ SITE_URL }}/theme/css/site.css" />
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
{% endif %}
{% endblock head %}

</head>


<body id="index" class="home">

<header id="banner" class="body">
<h1><a href="{{ SITEURL }}/">{{ SITENAME }} <strong>{{ SITESUBTITLE }}</strong></a></h1>
</header><!-- /#banner -->

<div id="container">
<nav id="menu">
{% for title, link in MENUITEMS %}
<ul class="menuitems">
<li><a href="{{ link }}">{{ title }}</a></li>
</ul>
{% endfor %}
{% if DISPLAY_PAGES_ON_MENU %}
<ul id="pages" class="menuitems">
{% for p in pages %}
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if DISPLAY_CATEGORIES_ON_MENU %}
<ul id="categories" class="menuitems">
{% for cat, null in categories %}
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
{% endfor %}
</ul>
{% endif %}
</nav><!-- /#menu -->
{% block content %}
{% endblock %}
</div>

<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->

</body>

</html>

<!-- vim:ts=2:sw=2:et:ft=html -->

+ 12
- 0
templates/categories.html View File

@@ -0,0 +1,12 @@
{% extends "base.html" %}

{% block title %}{{ SITENAME }} - Categories{% endblock %}

{% block content %}
<h1>Categories on {{ SITENAME }}</h1>
<ul>
{% for category, articles in categories|sort %}
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

+ 8
- 0
templates/category.html View File

@@ -0,0 +1,8 @@
{% extends "index.html" %}

{% block title %}{{ SITENAME }} - {{ category }} category{% endblock %}

{% block content_title %}
<h2>Articles in the {{ category }} category</h2>
{% endblock %}


+ 14
- 0
templates/gosquared.html View File

@@ -0,0 +1,14 @@
{% if GOSQUARED_SITENAME %}
<script type="text/javascript">
var GoSquared={};
GoSquared.acct = "{{ GOSQUARED_SITENAME }}";
(function(w){
function gs(){
w._gstc_lt=+(new Date); var d=document;
var g = d.createElement("script"); g.type = "text/javascript"; g.async = true; g.src = "https://d1l6p2sc9645hc.cloudfront.net/tracker.js";
var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(g, s);
}
w.addEventListener?w.addEventListener("load",gs,false):w.attachEvent("onload",gs);
})(window);
</script>
{% endif %}

+ 44
- 0
templates/index.html View File

@@ -0,0 +1,44 @@
{% extends "base.html" %}

{% block content %}

<section id="content">
{% block content_title %}
<h2>All articles</h2>
{% endblock %}
<ol id="post-list">
{% for article in articles_page.object_list %}
<li>
<article class="hentry">
<header>
<h2 class="entry-title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a>
</h2>
<div class="post-info">
<time class="published" datetime="{{ article.date.isoformat() }}"> {{ article.locale_date }} </time>
<address class="vcard author">By
{% for author in article.authors %}
<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
{% endfor %}
</address>
</div><!-- /.post-info -->
</header>

<div class="entry-content">
{{ article.summary }}
</div><!-- /.entry-content -->
</article>
</li>
{% endfor %}
</ol><!-- /#posts-list -->
{% if articles_page.has_other_pages() %}
{% include 'pagination.html' %}
{% endif %}

</section><!-- /#content -->
{% endblock content %}
<!-- vim:ts=2:sw=2:et:ft=html -->

+ 27
- 0
templates/page.html View File

@@ -0,0 +1,27 @@
{% extends "base.html" %}
{% block html_lang %}{{ page.lang }}{% endblock %}

{% block title %}{{ SITENAME }} - {{ page.title }}{%endblock%}

{% block head %}
{{ super() }}

{% import 'translations.html' as translations with context %}
{% if translations.entry_hreflang(page) %}
{{ translations.entry_hreflang(page) }}
{% endif %}
{% endblock %}

{% block content %}
<h1>{{ page.title }}</h1>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(page) }}

{{ page.content }}

{% if page.modified %}
<p>
Last updated: {{ page.locale_modified }}
</p>
{% endif %}
{% endblock %}

+ 11
- 0
templates/pagination.html View File

@@ -0,0 +1,11 @@
{% if DEFAULT_PAGINATION %}
<p class="paginator">
{% if articles_page.has_previous() %}
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}">&laquo;</a>
{% endif %}
Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
{% if articles_page.has_next() %}
<a href="{{ SITEURL }}/{{ articles_next_page.url }}">&raquo;</a>
{% endif %}
</p>
{% endif %}

+ 14
- 0
templates/period_archives.html View File

@@ -0,0 +1,14 @@
{% extends "base.html" %}

{% block title %}{{ SITENAME }} - {{ period | reverse | join(' ') }} archives{% endblock %}

{% block content %}
<h1>Archives for {{ period | reverse | join(' ') }}</h1>

<dl>
{% for article in dates %}
<dt>{{ article.locale_date }}</dt>
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
{% endfor %}
</dl>
{% endblock %}

+ 7
- 0
templates/tag.html View File

@@ -0,0 +1,7 @@
{% extends "index.html" %}

{% block title %}{{ SITENAME }} - {{ tag }} tag{% endblock %}

{% block content_title %}
<h2>Articles tagged with {{ tag }}</h2>
{% endblock %}

+ 12
- 0
templates/tags.html View File

@@ -0,0 +1,12 @@
{% extends "base.html" %}

{% block title %}{{ SITENAME }} - Tags{% endblock %}

{% block content %}
<h1>Tags for {{ SITENAME }}</h1>
<ul>
{% for tag, articles in tags|sort %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
{% endblock %}

+ 16
- 0
templates/translations.html View File

@@ -0,0 +1,16 @@
{% macro translations_for(article) %}
{% if article.translations %}
Translations:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}" hreflang="{{ translation.lang }}">{{ translation.lang }}</a>
{% endfor %}
{% endif %}
{% endmacro %}

{% macro entry_hreflang(entry) %}
{% if entry.translations %}
{% for translation in entry.translations %}
<link rel="alternate" hreflang="{{ translation.lang }}" href="{{ SITEURL }}/{{ translation.url }}">
{% endfor %}
{% endif %}
{% endmacro %}

Loading…
Cancel
Save