more updates to match new code, new entry for testing

This commit is contained in:
Don Harper 2018-12-19 22:11:49 +00:00
parent 46751d66ca
commit 008d2d760c
140 changed files with 17228 additions and 12 deletions

23
themes/hyde/README.md Normal file
View file

@ -0,0 +1,23 @@
This theme is a port of the [Hyde theme by mdo](http://hyde.getpoole.com/) Everything that's good in it is mdo's fault, everything bad is mine.
It supports one variable set in the config:
```
GLOBAL_CONTEXT = {
"hyde_subtheme": "theme-base-08"
}
```
That changes the color scheme, replace 08 with one of 09, 0a, 0b, 0c, 0d, 0e, 0f.
You can read a tutorial about how to create/port new theme [at Nikola's site](https://getnikola.com/creating-a-theme.html)
(*Note:* The `.sidebar` class was renamed to `.hsidebar` to avoid conflicts with reST.)
License is MIT
Known Issues:
* Not all features of Nikola are tested.
* Galleries will work better when [Issue #1764](https://github.com/getnikola/nikola/issues/1764) is fixed.
* Submenus in navigation links are not supported

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,357 @@
/*
* __ __
* /\ \ /\ \
* \ \ \___ __ __ \_\ \ __
* \ \ _ `\/\ \/\ \ /'_` \ /'__`\
* \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/
* \ \_\ \_\/`____ \ \___,_\ \____\
* \/_/\/_/`/___/> \/__,_ /\/____/
* /\___/
* \/__/
*
* Designed, built, and released under MIT license by @mdo. Learn more at
* https://github.com/poole/hyde.
*/
/*
* Contents
*
* Global resets
* Sidebar
* Container
* Reverse layout
* Themes
*/
/*
* Global resets
*
* Update the foundational and global aspects of the page.
*/
html {
font-family: "PT Sans", Helvetica, Arial, sans-serif;
}
@media (min-width: 48em) {
html {
font-size: 16px;
}
}
@media (min-width: 58em) {
html {
font-size: 20px;
}
}
/*
* Sidebar
*
* Flexible banner for housing site name, intro, and "footer" content. Starts
* out above content in mobile and later moves to the side with wider viewports.
*/
div.hsidebar, .hsidebar {
padding: 2rem 1rem;
color: rgba(255,255,255,.5);
background-color: #202020;
text-align: center;
margin-left: 0;
margin-bottom: 0;
}
@media (min-width: 48em) {
div.hsidebar, .hsidebar {
position: fixed;
text-align: left;
top: 0;
left: 0;
bottom: 0;
width: 18rem;
}
}
/* Sidebar images */
div.hsidebar img, .hsidebar img {
display: block;
margin-left: auto;
margin-right: auto;
}
img#logo {
width: 200px;
}
/* Sidebar links */
div.hsidebar a, .hsidebar a {
color: #fff;
}
/* About section */
.sidebar-about h1 {
color: #fff;
margin-top: 0;
font-family: "Abril Fatface", serif;
font-size: 2.75rem;
}
/* Sidebar nav */
.sidebar-nav {
margin-bottom: 1rem;
}
.sidebar-nav-item {
display: block;
line-height: 1.50;
}
a.sidebar-nav-item:hover,
a.sidebar-nav-item:focus {
text-decoration: underline;
}
.sidebar-nav-item.active {
font-weight: bold;
}
/* Sticky sidebar
*
* Add the `sidebar-sticky` class to the sidebar's container to affix it the
* contents to the bottom of the sidebar in tablets and up.
*/
@media (min-width: 48em) {
.sidebar-sticky {
position: absolute;
right: 1rem;
bottom: 0;
left: 1rem;
}
}
/*
* Footer
*
* Edit Styles for footer
*/
.footer {
font-size: 16px;
}
.icon_row{
width: auto;
height: auto;
display: inline-block;
vertical-align: middle;
}
.icon_row img.social_icon{
width: 24px;
display: inline-block;
margin: 0px auto;
vertical-align: bottom;
}
.copyright{
font-size: smaller;
line-height: 0.5;
text-align: center;
}
/* Container
*
* Align the contents of the site above the proper threshold with some margin-fu
* with a 25%-wide `.sidebar`.
*/
.content {
padding-top: 4rem;
padding-bottom: 4rem;
}
@media (min-width: 48em) {
.content {
max-width: 38rem;
margin-left: 20rem;
margin-right: 2rem;
}
}
@media (min-width: 64em) {
.content {
margin-left: 22rem;
margin-right: 4rem;
}
}
/*
* Reverse layout
*
* Flip the orientation of the page by placing the `.sidebar` on the right.
*/
@media (min-width: 48em) {
.layout-reverse .hsidebar {
left: auto;
right: 0;
}
.layout-reverse .content {
margin-left: 2rem;
margin-right: 20rem;
}
}
@media (min-width: 64em) {
.layout-reverse .content {
margin-left: 4rem;
margin-right: 22rem;
}
}
/*
* Themes
*
* As of v1.1, Hyde includes optional themes to color the sidebar and links
* within blog posts. To use, add the class of your choosing to the `body`.
*/
/* Base16 (http://chriskempson.github.io/base16/#default) */
/* Red */
.theme-base-08 .hsidebar {
background-color: #ac4142;
}
.theme-base-08 .content a,
.theme-base-08 .related-posts li a:hover {
color: #ac4142;
}
/* Orange */
.theme-base-09 .hsidebar {
background-color: #d28445;
}
.theme-base-09 .content a,
.theme-base-09 .related-posts li a:hover {
color: #d28445;
}
/* Yellow */
.theme-base-0a .hsidebar {
background-color: #f4bf75;
}
.theme-base-0a .content a,
.theme-base-0a .related-posts li a:hover {
color: #f4bf75;
}
/* Green */
.theme-base-0b .hsidebar {
background-color: #90a959;
}
.theme-base-0b .content a,
.theme-base-0b .related-posts li a:hover {
color: #90a959;
}
/* Cyan */
.theme-base-0c .hsidebar {
background-color: #75b5aa;
}
.theme-base-0c .content a,
.theme-base-0c .related-posts li a:hover {
color: #75b5aa;
}
/* Blue */
.theme-base-0d .hsidebar {
background-color: #6a9fb5;
}
.theme-base-0d .content a,
.theme-base-0d .related-posts li a:hover {
color: #6a9fb5;
}
/* Magenta */
.theme-base-0e .hsidebar {
background-color: #aa759f;
}
.theme-base-0e .content a,
.theme-base-0e .related-posts li a:hover {
color: #aa759f;
}
/* Brown */
.theme-base-0f .hsidebar {
background-color: #8f5536;
}
.theme-base-0f .content a,
.theme-base-0f .related-posts li a:hover {
color: #8f5536;
}
/*
* Additional Classes pertaining to Nikola
*
* The accessible link at the top shouldn't be visible. The class that make
* them invisible were in themes.css.
* To use, example below:
* <a href="..." class="sr-only sr-only-focusable">...</a>
*
*/
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
.breadcrumb {
padding: 8px 15px;
margin-bottom: 20px;
list-style: none;
}
.breadcrumb > li {
display: inline-block;
margin-right: 0;
margin-left: 0;
}
.breadcrumb > li:after {
content: ' / ';
color: #888;
}
.breadcrumb > li:last-of-type:after {
content: '';
margin-left: 0;
}
.thumbnails > li {
display: inline-block;
margin-right: 10px;
}
.thumbnails > li:last-of-type {
margin-right: 0;
}

View file

@ -0,0 +1,483 @@
/*
* ___
* /\_ \
* _____ ___ ___\//\ \ __
* /\ '__`\ / __`\ / __`\\ \ \ /'__`\
* \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/
* \ \ ,__/\ \____/\ \____//\____\ \____\
* \ \ \/ \/___/ \/___/ \/____/\/____/
* \ \_\
* \/_/
*
* Designed, built, and released under MIT license by @mdo. Learn more at
* https://github.com/poole/poole.
*/
/*
* Contents
*
* Body resets
* Custom type
* Messages
* Container
* Masthead
* Posts and pages
* Pagination
* Reverse layout
* Themes
*/
/*
* Body resets
*
* Update the foundational and global aspects of the page.
*/
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
}
html {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
}
@media (min-width: 38em) {
html {
font-size: 20px;
}
}
body {
color: #515151;
background-color: #fff;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
/* No `:visited` state is required by default (browsers will use `a`) */
a {
color: #268bd2;
text-decoration: none;
}
a strong {
color: inherit;
}
/* `:focus` is linked to `:hover` for basic accessibility */
a:hover,
a:focus {
text-decoration: underline;
}
/* Headings */
h1, h2, h3, h4, h5, h6 {
margin-bottom: .5rem;
font-weight: bold;
line-height: 1.25;
color: #313131;
text-rendering: optimizeLegibility;
}
h1 {
font-size: 2rem;
}
h2 {
margin-top: 1rem;
font-size: 1.5rem;
}
h3 {
margin-top: 1.5rem;
font-size: 1.25rem;
}
h4, h5, h6 {
margin-top: 1rem;
font-size: 1rem;
}
/* Body text */
p {
margin-top: 0;
margin-bottom: 1rem;
}
strong {
color: #303030;
}
/* Lists */
ul, ol, dl {
margin-top: 0;
margin-bottom: 1rem;
}
dt {
font-weight: bold;
}
dd {
margin-bottom: .5rem;
}
/* Misc */
hr {
position: relative;
margin: 1.5rem 0;
border: 0;
border-top: 1px solid #eee;
border-bottom: 1px solid #fff;
}
abbr {
font-size: 85%;
font-weight: bold;
color: #555;
text-transform: uppercase;
}
abbr[title] {
cursor: help;
border-bottom: 1px dotted #e5e5e5;
}
/* Code */
code,
pre {
font-family: Menlo, Monaco, "Courier New", monospace;
}
code {
padding: .25em .5em;
font-size: 85%;
color: #bf616a;
background-color: #f9f9f9;
border-radius: 3px;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
padding: 1rem;
font-size: .8rem;
line-height: 1.4;
white-space: pre;
word-break: break-all;
word-wrap: break-word;
background-color: #f9f9f9;
}
pre code {
padding: 0;
font-size: 100%;
color: inherit;
background-color: transparent;
}
/* Pygments via Jekyll */
.highlight {
margin-bottom: 1rem;
border-radius: 4px;
}
.highlight pre {
margin-bottom: 0;
}
/* Gist via GitHub Pages */
.gist .gist-file {
font-family: Menlo, Monaco, "Courier New", monospace !important;
}
.gist .markdown-body {
padding: 15px;
}
.gist pre {
padding: 0;
background-color: transparent;
}
.gist .gist-file .gist-data {
font-size: .8rem !important;
line-height: 1.4;
}
.gist code {
padding: 0;
color: inherit;
background-color: transparent;
border-radius: 0;
}
/* Quotes */
blockquote {
padding: .5rem 1rem;
margin: .8rem 0;
color: #7a7a7a;
border-left: .25rem solid #e5e5e5;
}
blockquote p:last-child {
margin-bottom: 0;
}
@media (min-width: 30em) {
blockquote {
padding-right: 5rem;
padding-left: 1.25rem;
}
}
img {
display: block;
max-width: 100%;
margin: 0 0 1rem;
border-radius: 5px;
}
/* Tables */
table {
margin-bottom: 1rem;
width: 100%;
border: 1px solid #e5e5e5;
border-collapse: collapse;
}
td,
th {
padding: .25rem .5rem;
border: 1px solid #e5e5e5;
}
tbody tr:nth-child(odd) td,
tbody tr:nth-child(odd) th {
background-color: #f9f9f9;
}
/*
* Custom type
*
* Extend paragraphs with `.lead` for larger introductory text.
*/
.lead {
font-size: 1.25rem;
font-weight: 300;
}
/*
* Messages
*
* Show alert messages to users. You may add it to single elements like a `<p>`,
* or to a parent if there are multiple elements to show.
*/
.message {
margin-bottom: 1rem;
padding: 1rem;
color: #717171;
background-color: #f9f9f9;
}
/*
* Container
*
* Center the page content.
*/
.container {
max-width: 38rem;
padding-left: 1rem;
padding-right: 1rem;
margin-left: auto;
margin-right: auto;
}
/*
* Masthead
*
* Super small header above the content for site name and short description.
*/
.masthead {
padding-top: 1rem;
padding-bottom: 1rem;
margin-bottom: 3rem;
}
.masthead-title {
margin-top: 0;
margin-bottom: 0;
color: #505050;
}
.masthead-title a {
color: #505050;
}
.masthead-title small {
font-size: 75%;
font-weight: 400;
color: #c0c0c0;
letter-spacing: 0;
}
/*
* Posts and pages
*
* Each post is wrapped in `.post` and is used on default and post layouts. Each
* page is wrapped in `.page` and is only used on the page layout.
*/
.page,
.post {
margin-bottom: 4em;
}
/* Blog post or page title */
.page-title,
.post-title,
.post-title a {
color: #303030;
}
.page-title,
.post-title {
margin-top: 0;
}
/* Meta data line below post title */
.post-date {
display: block;
margin-top: -.5rem;
margin-bottom: 1rem;
color: #9a9a9a;
}
/* Related posts */
.related {
padding-top: 2rem;
padding-bottom: 2rem;
border-top: 1px solid #eee;
}
.related-posts {
padding-left: 0;
list-style: none;
}
.related-posts h3 {
margin-top: 0;
}
.related-posts li small {
font-size: 75%;
color: #999;
}
.related-posts li a:hover {
color: #268bd2;
text-decoration: none;
}
.related-posts li a:hover small {
color: inherit;
}
/*
* Pagination
*
* Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
* there are no more previous or next posts to show.
*/
.pagination {
overflow: hidden; /* clearfix */
margin-left: -1rem;
margin-right: -1rem;
font-family: "PT Sans", Helvetica, Arial, sans-serif;
color: #ccc;
text-align: center;
}
/* Pagination items can be `span`s or `a`s */
.pagination-item {
display: block;
padding: 1rem;
border: 1px solid #eee;
}
.pagination-item:first-child {
margin-bottom: -1px;
}
/* Only provide a hover state for linked pagination items */
a.pagination-item:hover {
background-color: #f5f5f5;
}
/*
* Tags
*
* Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
* there are no more previous or next posts to show.
*/
.tags {
overflow: hidden; /* clearfix */
font-family: "PT Sans", Helvetica, Arial, sans-serif;
color: #ccc;
text-align: center;
border: 2px dotted #eee;
border-radius: 3px;
padding: 5px;
height: auto;
display: inline-block;
vertical-align: middle;
}
/* Pagination items can be `span`s or `a`s */
.tag {
display: block;
padding-top: 1px;
padding-bottom: 1px;
padding-left: 4px;
padding-right: 4px;
margin: 5px;
border: 1px solid #eee;
background: #f5f5f5;
border-radius: 15px;
font-size: smaller;
}
/* Only provide a hover state for linked pagination items */
.tag:hover {
background-color: #ddd;
}
@media (min-width: 30em) {
.pagination {
margin: 3rem 0;
}
.pagination-item {
float: left;
width: 50%;
}
.pagination-item:first-child {
margin-bottom: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.pagination-item:last-child {
margin-left: -1px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
}
/* Fix whitespace of listings w/ numbers (issue #155) */
table.codehilitetable pre {
padding: 0;
}
td.code /* to exclude listings w/o numbers */
pre.code.literal-block {
margin-left: 0;
}

1
themes/hyde/bundles Normal file
View file

@ -0,0 +1 @@
assets/css/all.css=rst.css,poole.css,hyde.css,code.css,custom.css

1
themes/hyde/engine Normal file
View file

@ -0,0 +1 @@
jinja

7
themes/hyde/hyde.theme Normal file
View file

@ -0,0 +1,7 @@
[Theme]
engine = jinja
parent = base-jinja
author = Yoong Shin Chow
author_url = https://github.com/chow1026
based_on = Hyde theme by mdo <http://hyde.getpoole.com/>
license = MIT

1
themes/hyde/parent Normal file
View file

@ -0,0 +1 @@
base-jinja

View file

@ -0,0 +1,13 @@
{# -*- coding: utf-8 -*- #}
{% extends 'index.tmpl' %}
{% 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 %}
{% endblock %}

View file

@ -0,0 +1,39 @@
{# -*- coding: utf-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 %}
{{ set_locale(lang) }}
{{ base.html_headstart() }}
{% block extra_head %}
{# Leave this block alone. #}
{% endblock %}
{{ template_hooks['extra_head']() }}
</head>
<body class="{{ hyde_subtheme }}">
<a href="#content" class="sr-only sr-only-focusable">{{ messages("Skip to main content") }}</a>
<div class="hsidebar">
<div class="container sidebar-sticky">
<div class="sidebar-about">
<h1>
<a href="{{ abs_link(_link("root", None, lang)) }}">
{{ header.html_site_title() }}
</a>
</h1>
{{ header.html_site_description() }}
</div>
{{ header.html_navigation_links() }}
{{ footer.html_footer() }}
</div>
</div>
<div class="content container" id="content">
{% block content %}{% endblock %}
</div>
{% block extra_js %}{% endblock %}
{{ body_end }}
{{ template_hooks['body_end']() }}
{{ base.late_load_js() }}
</body>
</html>

View file

@ -0,0 +1,14 @@
{# -*- coding: utf-8 -*- #}
{% import 'base_helper.tmpl' as base with context %}
{% macro html_footer() %}
{% if content_footer %}
<footer id="footer">
<span class="copyright">
{{ content_footer }}
</span>
</p>
{{ template_hooks['page_footer']() }}
</footer>
{% endif %}
{% endmacro %}

View file

@ -0,0 +1,53 @@
{# -*- coding: utf-8 -*- #}
{% import 'base_helper.tmpl' as base with context %}
{% macro html_header() %}
<header id="header">
{{ html_site_title() }}
{{ html_site_description() }}
{{ html_translation_header() }}
{{ html_navigation_links() }}
{% if search_form %}
<div class="searchform" role="search">
{{ search_form }}
</div>
{% endif %}
</header>
{{ template_hooks['page_header']() }}
{% endmacro %}
{% macro html_site_description() %}
<p class="lead">{{ blog_description|e }}</p>
{% endmacro %}
{% macro html_site_title() %}
<h1 id="brand"><a href="{{ abs_link(_link("root", None, lang)) }}" title="{{ blog_title|e }}" rel="home">
{% if logo_url %}
<img src="{{ logo_url }}" alt="{{ blog_title|e }}" id="logo">
{% endif %}
{% if show_blog_title %}
<span id="blog-title">{{ blog_title|e }}</span>
{% endif %}
</a></h1>
{% endmacro %}
{% macro html_navigation_links() %}
<nav id="menu" role="navigation" class="sidebar-nav">
{% for url, text in navigation_links[lang] %}
<a class="sidebar-nav-item" href="{{url}}">{{text}}</a>
{% endfor %}
{{ template_hooks['menu']() }}
{{ template_hooks['menu_alt']() }}
</nav>
{% endmacro %}
{% macro html_translation_header() %}
{% if translations|length > 1 %}
<div id="toptranslations">
<h2>{{ messages("Languages:") }}</h2>
{{ base.html_translations() }}
</div>
{% endif %}
{% endmacro %}

View file

@ -0,0 +1,125 @@
{# -*- coding: utf-8 -*- #}
{% 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 %}
{% if is_rtl %}
dir="rtl"
{% endif %}
lang="{{ lang }}">
<head>
<meta charset="utf-8">
{% if use_base_tag %}
<base href="{{ abs_link(permalink) }}">
{% endif %}
{% if description %}
<meta name="description" content="{{ description|e }}">
{% endif %}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% if title == blog_title %}
<title>{{ blog_title|e }}</title>
{% else %}
<title>{{ blog_title|e }} &middot; {{ title|e }} </title>
{% endif %}
{{ html_stylesheets() }}
<meta content="{{ theme_color }}" name="theme-color">
{{ html_feedlinks() }}
<link rel="canonical" href="{{ abs_link(permalink) }}">
{% if favicons %}
{% for name, file, size in favicons %}
<link rel="{{ name }}" href="{{ file }}" sizes="{{ size }}"/>
{% endfor %}
{% endif %}
{% if comment_system == 'facebook' %}
<meta property="fb:app_id" content="{{ comment_system_id }}">
{% endif %}
{% if prevlink %}
<link rel="prev" href="{{ prevlink }}" type="text/html">
{% endif %}
{% if nextlink %}
<link rel="next" href="{{ nextlink }}" type="text/html">
{% endif %}
{{ mathjax_config }}
{% if use_cdn %}
<!--[if lt IE 9]><script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
{% else %}
<!--[if lt IE 9]><script src="{{ url_replacer(permalink, '/assets/js/html5.js', lang) }}"></script><![endif]-->
{% endif %}
{{ extra_head_data }}
{% endmacro %}
{% macro late_load_js() %}
{{ social_buttons_code }}
{% endmacro %}
{% macro html_stylesheets() %}
{% if use_bundles %}
<link href="/assets/css/all.css" rel="stylesheet" type="text/css">
{% else %}
<link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
<link href="/assets/css/poole.css" rel="stylesheet" type="text/css">
<link href="/assets/css/hyde.css" rel="stylesheet" type="text/css">
<link href="/assets/css/code.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 rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface">
{% 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() %}
<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>
{% endif %}
{% endfor %}
</ul>
{% endmacro %}

View file

@ -0,0 +1,43 @@
{# -*- 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 %}
{% 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 %}{% endblock %}
{% if 'main_index' in pagekind %}
{{ front_index_header }}
{% endif %}
<div class="post">
{% for post in posts %}
<article class="post h-entry post-{{ post.meta('type') }}">
<header>
<h1 class="post-title p-name"><a href="{{ post.permalink() }}" class="u-url">{{ post.title()|e }}</a></h1>
<div class="metadata">
<span class="post-date dateline"><time class="published dt-published" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time></span>
</div>
</header>
{% if index_teasers %}
<div class="p-summary entry-summary">
{{ post.text(teaser_only=True) }}
{% else %}
<div class="e-content entry-content">
{{ post.text(teaser_only=False) }}
{% endif %}
</div>
</article>
{% endfor %}
</div>
{{ helper.html_pager() }}
{{ comments.comment_link_script() }}
{{ math.math_scripts_ifposts(posts) }}
{% endblock %}

View file

@ -0,0 +1,22 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
{% block content %}
<article class="listpage">
<header>
<h1>{{ title|e }}</h1>
</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)|e }}">{{ post.formatted_date(date_format)|e }}</time>
</li>
{% endfor %}
</ul>
{% else %}
<p>{{ messages("No posts found.") }}</p>
{% endif %}
</article>
{% endblock %}

View file

@ -0,0 +1,44 @@
{# -*- coding: utf-8 -*- #}
{% import 'post_helper.tmpl' as helper with context %}
{% import 'comments_helper.tmpl' as comments with context %}
{% macro html_title() %}
{% if title and not post.meta('hidetitle') %}
<h1 class="post-title p-name"><a href="{{ post.permalink() }}" class="u-url">{{ post.title()|e }}</a></h1>
{% endif %}
{% endmacro %}
{% macro html_translations(post) %}
{% if post.translated_to|length > 1 %}
<div class="metadata posttranslations translations">
<h3 class="posttranslations-intro">{{ messages("Also available in:") }}</h3>
{% for langname in translations|sort %}
{% if langname != lang and post.is_translation_available(langname) %}
<p><a href="{{ post.permalink(langname) }}" rel="alternate" hreflang="{{ langname }}">{{ messages("LANGUAGE", langname) }}</a></p>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endmacro %}
{% macro html_sourcelink() %}
{% if show_sourcelink %}
<p class="sourceline"><a href="{{ post.source_link() }}" id="sourcelink">{{ messages("Source") }}</a></p>
{% endif %}
{% endmacro %}
{% macro html_post_header() %}
{{ html_title() }}
<span class="post-date">
<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>
</span>
{% if post.meta('link') %}
<p class="linkline"><a href="{{ post.meta('link') }}">{{ messages("Original site") }}</a></p>
{% endif %}
{% if post.description() %}
<meta name="description" itemprop="description" content="{{ post.description()|e }}">
{% endif %}
{{ html_translations(post) }}
</header>
{% endmacro %}

View file

@ -0,0 +1,96 @@
{# -*- coding: utf-8 -*- #}
{% macro meta_translations(post) %}
{% if translations|length > 1 %}
{% for langname in translations|sort %}
{% 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 %}
{% endif %}
{% endmacro %}
{% macro html_tags(post) %}
{% if post.tags %}
<p itemprop="keywords" class="tags">
{% for tag in post.tags %}
{% if tag not in hidden_tags %}
<span class="tag"><a class="p-category" href="{{ _link('tag', tag) }}" rel="tag">{{ tag|e }}</a></span>
{% endif %}
{% endfor %}
</p>
{% endif %}
{% endmacro %}
{% macro html_pager(post) %}
{% if post.prev_post or post.next_post %}
<div class="pager hidden-print pagination">
<span class="previous pagination-item older">
{% if post.prev_post %}
<a href="{{ post.prev_post.permalink() }}" rel="prev" title="{{ post.prev_post.title()|e }}">
{% endif %}
{{ messages("Previous post") }}
{% if post.prev_post %}
</a>
{% endif %}
</span>
<span class="next pagination-item newer">
{% if post.next_post %}
<a href="{{ post.next_post.permalink() }}" rel="next" title="{{ post.next_post.title()|e }}">
{% endif %}{{ messages("Next post") }}
{% if post.next_post %}
</a>
{% endif %}
</span>
</div>
{% endif %}
{% 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:description" content="{{ post.description()[:200]|e }}">
{% else %}
<meta property="og:description" content="{{ post.text(strip_html=True)[:200]|e }}">
{% endif %}
{% if post.previewimage %}
<meta property="og:image" content="{{ url_replacer(permalink, post.previewimage, lang, 'absolute') }}">
{% endif %}
<meta property="og:type" content="article">
{# Will only work with Pintrest and breaks everywhere else who expect a [Facebook] URI. #}
{# %if post.author(): #}
{# <meta property="article:author" content="{{ post.author()|e }}"> #}
{# %endif #}
{% if post.date.isoformat() %}
<meta property="article:published_time" content="{{ post.formatted_date('webiso') }}">
{% endif %}
{% if post.tags %}
{% for tag in post.tags %}
<meta property="article:tag" content="{{ tag|e }}">
{% endfor %}
{% endif %}
{% endif %}
{% endmacro %}
{% macro twitter_card_information(post) %}
{% if twitter_card and twitter_card['use_twitter_cards'] %}
<meta name="twitter:card" content="{{ twitter_card.get('card', 'summary')|e }}">
{% if 'site:id' in twitter_card %}
<meta name="twitter:site:id" content="{{ twitter_card['site:id'] }}">
{% elif 'site' in twitter_card %}
<meta name="twitter:site" content="{{ twitter_card['site'] }}">
{% endif %}
{% if 'creator:id' in twitter_card %}
<meta name="twitter:creator:id" content="{{ twitter_card['creator:id'] }}">
{% elif 'creator' in twitter_card %}
<meta name="twitter:creator" content="{{ twitter_card['creator'] }}">
{% endif %}
{% endif %}
{% endmacro %}

View file

@ -0,0 +1,23 @@
{# -*- coding: utf-8 -*- #}
{% extends 'index.tmpl' %}
{% block extra_head %}
{{ super() }}
{% if generate_atom %}
<link rel="alternate" type="application/atom+xml" title="Atom for the {{ posts[0].section_name()|e }} section" href="{{ _link('section_index_atom', posts[0].section_slug()) }}">
{% endif %}
{% endblock %}
{% block content %}
<div class="sectionindex">
<header>
<h2><a href="{{ _link('section_index', posts[0].section_slug()) }}">{{ title|e }}</a></h2>
{% if generate_atom %}
<p class="feedlink"><a href="{{ _link('section_index_atom', posts[0].section_slug()) }}" type="application/atom+xml">{{ messages('Updates') }}</a></p>
{% endif %}
</header>
{{ super() }}
</div>
{% endblock %}

View file

@ -0,0 +1,40 @@
{# -*- coding: utf-8 -*- #}
{% extends 'list_post.tmpl' %}
{% block extra_head %}
{{ super() }}
{% if translations|length > 1 and generate_rss %}
{% for language in translations|sort %}
<link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ tag|e }} ({{ language }})" href="{{ _link(kind + "_rss", tag, language) }}">
{% endfor %}
{% elif generate_rss %}
<link rel="alternate" type="application/rss+xml" title="RSS for {{ kind }} {{ tag|e }}" href="{{ _link(kind + "_rss", tag) }}">
{% endif %}
{% endblock %}
{% block content %}
<article class="post tagpage">
<header>
<h1 class="post-title p-name">{{ 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 %}
</header>
{% if posts %}
<ul class="postlist">
{% for post in posts %}
<li><a href="{{ post.permalink() }}" class="listtitle">{{ post.title()|e }}</a><span class="post-date dateline"><time class="listdate" datetime="{{ post.formatted_date('webiso') }}" title="{{ post.formatted_date(date_format)|e }}">{{ post.formatted_date(date_format)|e }}</time></span></li>
{% endfor %}
</ul>
{% endif %}
</article>
{% endblock %}

View file

@ -0,0 +1,42 @@
{# -*- coding: utf-8 -*- #}
{% extends 'base.tmpl' %}
{% block content %}
<article class="post tagindex">
<header>
<h1>{{ title|e }}</h1>
</header>
{% 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="postlist">
{% endfor %}
<li><a class="reference" href="{{ link }}">{{ text }}</a>
{% if indent_change_after <= 0 %}
</li>
{% endif %}
{% for i in range(-indent_change_after) %}
</ul>
{% if i + 1 < indent_levels|length %}
</li>
{% endif %}
{% endfor %}
{% endfor %}
{% if items %}
<h2>{{ messages("Tags") }}</h2>
{% endif %}
{% endif %}
{% if items %}
<ul class="postlist">
{% for text, link in items %}
{% if text not in hidden_tags %}
<li><a class="reference listtitle" href="{{ link }}">{{ text|e }}</a></li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</article>
{% endblock %}