181 lines
7.3 KiB
Cheetah
181 lines
7.3 KiB
Cheetah
## -*- coding: utf-8 -*-
|
|
<%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
|
|
|
|
${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, url_type)}"></script><![endif]-->
|
|
%endif
|
|
|
|
${extra_head_data}
|
|
</%def>
|
|
|
|
<%def name="late_load_js()">
|
|
%if use_cdn:
|
|
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha256-ZvOgfh+ptkpoa2Y4HkRY28ir89u/+VRyDE7sB7hEEcI=" crossorigin="anonymous"></script>
|
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.0/baguetteBox.min.js" integrity="sha256-yQGjQhFs3LtyiN5hhr3k9s9TWZOh/RzCkD3gwwCKlkg=" 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 use_cdn:
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js" integrity="sha256-AdQN98MVZs44Eq2yTwtoKufhnU+uZ7v2kXnD5vqzZVo=" crossorigin="anonymous"></script>
|
|
%else:
|
|
<script src="/assets/js/moment-with-locales.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://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.0/baguetteBox.min.css" integrity="sha256-cKiyvRKpm8RaTdU71Oq2RUVgvfWrdIXjvVdQF2oZ1Y4=" 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()">
|
|
%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 class="nav-item"><a href="${abs_link(_link("root", None, langname))}" rel="alternate" hreflang="${langname}" class="nav-link">${messages("LANGUAGE", langname)}</a></li>
|
|
%endif
|
|
%endfor
|
|
</%def>
|