<!doctype html>{# SPDX-FileCopyrightText: © 2020 Brian S. Stephan <bss@incorporeal.org> SPDX-License-Identifier: GPL-3.0-only #} <html lang="en"> <title>{{ title }}</title> <meta charset="utf-8"> {% if title %}<meta property="og:title" content="{{ title }}">{% endif %} {% if description %}<meta property="og:description" content="{{ description }}">{% endif %} <meta property="og:url" content="{{ base_url }}"> {% if image %}<meta property="og:image" content="{{ image }}">{% endif %} <meta name="twitter:card" content="summary_large_image"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" title="{{ config.DEFAULT_PAGE_STYLE }}" href="{{ config.PAGE_STYLES[config.DEFAULT_PAGE_STYLE] }}"> {% for style, stylesheet in config.PAGE_STYLES.items() %} <link rel="alternate stylesheet" type="text/css" title="{{ style }}" href="{{ stylesheet }}"> {% endfor %} <link rel="icon" href="{{ config.FAVICON }}"> <link rel="alternate" type="application/atom+xml" href="/feed/atom"> <link rel="alternate" type="application/rss+xml" href="/feed/rss"> <script type="text/javascript"> // loathe as I am to use JavaScript, this style selection is one of my favorite parts // of my CMS, so I want to keep it around even in the static site function applyStyle(styleName) { // disable all stylesheets except the one to apply, the user style var i, link_tag; for (i = 0, link_tag = document.getElementsByTagName("link"); i < link_tag.length; i++ ) { // find the stylesheets with titles, meaning they can be disabled/enabled if ((link_tag[i].rel.indexOf("stylesheet") != -1) && link_tag[i].title) { alert(link_tag[i].title); link_tag[i].disabled = true; if (link_tag[i].title == styleName) { link_tag[i].disabled = false ; } } } } function setStyle(styleName) { document.cookie = "user-style=" + encodeURIComponent(styleName) + "; max-age=31536000"; applyStyle(styleName); } function applyStyleFromCookie() { // get the user style cookie and set that specified style as the active one var styleName = getCookie("user-style"); alert(styleName); if (styleName) { applyStyle(styleName); } } function getCookie(cookieName) { // find the desired cookie from the document's cookie(s) string let matches = document.cookie.match(new RegExp( "(?:^|; )" + cookieName.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); alert(matches); return matches ? decodeURIComponent(matches[1]) : undefined; } applyStyleFromCookie(); </script> <div {% block site_class %}class="site-wrap site-wrap-normal-width"{% endblock %}> {% block header %} <div class="header"> <div class="nav"> {% for nav in navs %} <a href="{{ nav.1 }}">{{ nav.0 }}</a> {% if not loop.last %} » {% endif %} {% endfor %} </div> {% if page_styles %} <div class="styles"> {% for style in page_styles %} <a href="#" onclick="setStyle('{{ style }}'); return false;">[{{ style }}]</a> {% endfor %} </div> {% endif %} </div> {% endblock %} {% block body %} <div class="content"> {{ content }} </div> <footer> {% if extra_footer %}<div class="extra-footer"><i>{{ extra_footer|safe }}</i></div>{% endif %} <div class="footer"><i>Last modified: {{ mtime }}</i></div> </footer> {% endblock %} </div> </html>