1

202 lines
7.8 KiB
HTML

{# Some common data #}
{%if page.path or section.path %}
{% set title = page.title | default(value=section.title) %}
{% set path = page.path | default(value=section.path) %}
{% set content = page.content | default(value=section.content) %}
{% set extra = page.extra | default(value=section.extra) %}
{% set is_blog_post = path != "/blog/" and path is starting_with("/blog/") %}
{% set is_photo_page = path != "/photography/" and path is starting_with("/photography/") %}
{% else %}
{# If here, we are on the 404 page #}
{% set title = "NOT FOUND" %}
{% set path = "/404" %}
{% set extra = [] %}
{% set is_blog_post = false %}
{% set is_photo_page = false %}
{% endif %}
<!DOCTYPE html>
<html lang="en">
<head>
{% block head %}
<!--noformat-->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}} | {{config.title}}</title>
<link rel="shortcut icon" type="image/jpg" href="{{config.extra.profile_photo | safe}}" />
{% if current_url %}<link rel="canonical" href="{{current_url | safe}}" />{% endif %}
<link rel="alternate" type="application/rss+xml" title="RSS"
href="{{get_url(path=config.feed_filenames[0], trailing_slash=false) | safe}}">
{# OpenGraph #}
<meta name="twitter:card" content="summary" />
<meta name="og:site" content="{{config.extra.domain_name}}" />
<meta name="og:site_name" content="{{config.title}}" />
{% set opengraph_image = extra.og_image | default(value=config.extra.profile_photo)%}
<meta name="og:image" content="{{opengraph_image | safe}}" />
{% if extra.og_description %}
<meta property="og:description" content="{{extra.og_description}}" />
<meta property="description" content="{{extra.og_description}}" />
<meta name="description" content="{{extra.og_description}}">
{% elif page.description %}
<meta property="og:description" content="{{page.description}}" />
<meta property="description" content="{{page.description}}" />
<meta name="description" content="{{page.description}}">
{% endif %}
<meta property="og:title" content="{{title}} - {{config.title}}" />
{% if page.path %}<meta property="og:type" content="{{extra.og_type | default(value='article')}}" />{% endif %}
{% if page.date %}<meta property="article:published_time" content="{{page.date}}" />{% endif %}
{# Fonts #}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet">
{# Allow pages to import custom CSS if they need #}
{% for url in extra.css_import | default(value=[]) %}
<link rel="stylesheet" href="{{url}}"> <!-- Requested by Page -->
{% endfor %}
{# Allow pages to import custom Head JS if they need #}
{% for url in extra.head_js_import | default(value=[]) %}
<script src="{{url}}"></script> <!-- Requested by Page -->
{% endfor %}
<link rel="stylesheet" href="/styles.css">
<!--noformat-->
{% endblock head %}
</head>
<body>
{# Heading section (profile photo & name) #}
<header data-size="{% if path == '/' %}large{% else %}small{% endif %}" class="intro-card">
<img src="{{config.extra.profile_photo}}" alt="Evan Pratten">
<div class="header-text">
<span class="header-name">Evan Pratten</span><br>
<span class="header-tagline">Software Developer</span>
<hr>
<ul class="header-links">
<li>
<a target="_blank" href="mailto:{{config.extra.email}}" rel="me">
<img src="/dist/line-awesome/envelope.svg" alt="email: " loading="lazy">
<span>{{config.extra.email}}</span>
</a>
</li>
<li>
<a target="_blank" href="https://linkedin.com/in/{{config.extra.linkedin}}" rel="me">
<img src="/dist/line-awesome/linkedin.svg" alt="linkedin: " loading="lazy">
<span>{{config.extra.linkedin}}</span>
</a>
</li>
</ul>
</div>
</header>
{# Navigation #}
<nav>
<hr>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/radio">Radio</a></li>
<li><a href="/music">Music</a></li>
{# <li><a href="/projects">Projects</a></li> #}
{# <li><a href="/hobbies">Hobbies</a></li> #}
{# <li><a href="/photography">Photos</a></li> #}
{# <li><a href="/contact">Contact</a></li> #}
{# <li><a href="/hobbies">More</a></li> #}
</ul>
<hr>
</nav>
{# Announcement Handling #}
{% if config.extra.home_announcement and path == "/" %}
<div class="announcement">
<span>{{config.extra.home_announcement | safe}}</span>
</div>
{% elif config.extra.global_announcement %}
<div class="announcement">
<span>{{config.extra.global_announcement | safe}}</span>
</div>
{% endif %}
{# Page Content #}
<main>
{% block content %}
<article>
<header class="page-header">
{% if not extra.no_auto_title %}
<h1 class="title">{{title}}</h1>
{% endif %}
{% if page.description %}
<span class="subtitle">{{page.description}}</span>
{% endif %}
</header>
{{ content | safe }}
</article>
{% endblock content %}
</main>
{# Footer #}
<footer>
{# {% if is_blog_post or is_photo_page %}
<br>
<p id="sponsor-notice">
Consider making
<a href="https://ewp.fyi/donate" style="text-decoration:underline;" target="_blank">a small donation</a>
to support my work!
</p>
{% endif %} #}
<br>
<hr>
<p id="copyright">
Copyright &copy; 2017 - {{ now() | date(format="%Y") }}
<strong {% if config.extra.commit %} title="Commit: {{config.extra.commit}}" {% endif %}>
Evan Warren Pratten
</strong>
</p>
</footer>
<div>
{# Goatcounter #}
<script data-goatcounter="https://analytics.ewpratten.com/count" async src="//gc.zgo.at/count.js"></script>
{# Google Analytics #}
<script defer src="https://www.googletagmanager.com/gtag/js?id=G-5912H4H03P"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-5912H4H03P');
</script>
{# Mermaid #}
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js" defer></script>
<script>mermaid.initialize({ startOnLoad: true });</script>
{# MathJax #}
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-MML-AM_CHTML' async
defer></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'] ]}});
</script>
</div>
{# Allow pages to import custom CSS if they need #}
<div>
{% for url in extra.js_import | default(value=[]) %}
<script async src="{{url}}" defer></script> <!-- Requested by Page -->
{% endfor %}
</div>
{# Used to for brid.gy verification #}
<a href="https://ewpratten.com" class="h-card" rel="me" hidden>Evan Pratten</a>
</body>
</html>