Compare commits

...

3 Commits

Author SHA1 Message Date
Ben Goldsworthy 920db1a5ce update theme 2023-08-07 18:23:46 -04:00
Ben Goldsworthy ee87009471 various updates 2023-06-30 21:16:59 -06:00
Ben Goldsworthy 4955708f0e ignore third-party dependencies (for now) 2023-06-30 21:16:47 -06:00
62 changed files with 1666 additions and 5925 deletions

4
.gitignore vendored
View File

@ -13,3 +13,7 @@ hugo.linux
# Temporary lock file while building # Temporary lock file while building
/.hugo_build.lock /.hugo_build.lock
# TEMP - until I figure out licensing
/js/
/css/openlayers.css
/css/leaflet.css

View File

@ -1,6 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

View File

@ -1,20 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
subtitle:
date: {{ .Date }}
draft: true
url:
featured_image:
resources:
- name:
alt:
src:
params:
attr: Warner Bros. Pictures
categories:
areas:
tags:
---

View File

@ -1,12 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
url:
featured_image:
subtitle:
categories:
areas:
tags:
---

363
css/.sanitize.css Normal file
View File

@ -0,0 +1,363 @@
/* Document
* ========================================================================== */
/**
* 1. Add border box sizing in all browsers (opinionated).
* 2. Backgrounds do not repeat by default (opinionated).
*/
*,
::before,
::after {
box-sizing: border-box; /* 1 */
background-repeat: no-repeat; /* 2 */
}
/**
* 1. Add text decoration inheritance in all browsers (opinionated).
* 2. Add vertical alignment inheritance in all browsers (opinionated).
*/
::before,
::after {
text-decoration: inherit; /* 1 */
vertical-align: inherit; /* 2 */
}
/**
* 1. Use the default cursor in all browsers (opinionated).
* 2. Change the line height in all browsers (opinionated).
* 3. Breaks words to prevent overflow in all browsers (opinionated).
* 4. Use a 4-space tab width in all browsers (opinionated).
* 5. Remove the grey highlight on links in iOS (opinionated).
* 6. Prevent adjustments of font size after orientation changes in iOS.
*/
:where(:root) {
cursor: default; /* 1 */
line-height: 1.5; /* 2 */
overflow-wrap: break-word; /* 3 */
-moz-tab-size: 4; /* 4 */
tab-size: 4; /* 4 */
-webkit-tap-highlight-color: transparent; /* 5 */
-webkit-text-size-adjust: 100%; /* 6 */
}
/* Sections
* ========================================================================== */
/**
* Remove the margin in all browsers (opinionated).
*/
:where(body) {
margin: 0;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Edge, Firefox, and Safari.
*/
:where(h1) {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
* ========================================================================== */
/**
* Remove the margin on nested lists in Chrome, Edge, and Safari.
*/
:where(dl, ol, ul) :where(dl, ol, ul) {
margin: 0;
}
/**
* 1. Correct the inheritance of border color in Firefox.
* 2. Add the correct box sizing in Firefox.
*/
:where(hr) {
color: inherit; /* 1 */
height: 0; /* 2 */
}
/**
* Remove the list style on navigation lists in all browsers (opinionated).
*/
:where(nav) :where(ol, ul) {
list-style-type: none;
padding: 0;
}
/**
* Prevent VoiceOver from ignoring list semantics in Safari (opinionated).
*/
:where(nav li)::before {
content: "\200B";
float: left;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
* 3. Prevent overflow of the container in all browsers (opinionated).
*/
:where(pre) {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
overflow: auto; /* 3 */
}
/* Text-level semantics
* ========================================================================== */
/**
* Add the correct text decoration in Safari.
*/
:where(abbr[title]) {
text-decoration: underline;
text-decoration: underline dotted;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
:where(b, strong) {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
:where(code, kbd, samp) {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
:where(small) {
font-size: 80%;
}
/* Embedded content
* ========================================================================== */
/*
* Change the alignment on media elements in all browsers (opinionated).
*/
:where(audio, canvas, iframe, img, svg, video) {
vertical-align: middle;
}
/**
* Remove the border on iframes in all browsers (opinionated).
*/
:where(iframe) {
border-style: none;
}
/**
* Change the fill color to match the text color in all browsers (opinionated).
*/
:where(svg:not([fill])) {
fill: currentColor;
}
/* Tabular data
* ========================================================================== */
/**
* 1. Collapse border spacing in all browsers (opinionated).
* 2. Correct table border color inheritance in all Chrome, Edge, and Safari.
* 3. Remove text indentation from table contents in Chrome, Edge, and Safari.
*/
:where(table) {
border-collapse: collapse; /* 1 */
border-color: inherit; /* 2 */
text-indent: 0; /* 3 */
}
/* Forms
* ========================================================================== */
/**
* Remove the margin on controls in Safari.
*/
:where(button, input, select) {
margin: 0;
}
/**
* Correct the inability to style buttons in iOS and Safari.
*/
:where(button, [type="button" i], [type="reset" i], [type="submit" i]) {
-webkit-appearance: button;
}
/**
* Change the inconsistent appearance in all browsers (opinionated).
*/
:where(fieldset) {
border: 1px solid #a0a0a0;
}
/**
* Add the correct vertical alignment in Chrome, Edge, and Firefox.
*/
:where(progress) {
vertical-align: baseline;
}
/**
* 1. Remove the margin in Firefox and Safari.
* 3. Change the resize direction in all browsers (opinionated).
*/
:where(textarea) {
margin: 0; /* 1 */
resize: vertical; /* 3 */
}
/**
* 1. Correct the odd appearance in Chrome, Edge, and Safari.
* 2. Correct the outline style in Safari.
*/
:where([type="search" i]) {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
/**
* Correct the text style of placeholders in Chrome, Edge, and Safari.
*/
::-webkit-input-placeholder {
color: inherit;
opacity: 0.54;
}
/**
* Remove the inner padding in Chrome, Edge, and Safari on macOS.
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style upload buttons in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
* ========================================================================== */
/*
* Add the correct styles in Safari.
*/
:where(dialog) {
background-color: white;
border: solid;
color: black;
height: -moz-fit-content;
height: fit-content;
left: 0;
margin: auto;
padding: 1em;
position: absolute;
right: 0;
width: -moz-fit-content;
width: fit-content;
}
:where(dialog:not([open])) {
display: none;
}
/*
* Add the correct display in Safari.
*/
:where(details > summary:first-of-type) {
display: list-item;
}
/* Accessibility
* ========================================================================== */
/**
* Change the cursor on busy elements in all browsers (opinionated).
*/
:where([aria-busy="true" i]) {
cursor: progress;
}
/*
* Change the cursor on control elements in all browsers (opinionated).
*/
:where([aria-controls]) {
cursor: pointer;
}
/*
* Change the cursor on disabled, not-editable, or otherwise
* inoperable elements in all browsers (opinionated).
*/
:where([aria-disabled="true" i], [disabled]) {
cursor: not-allowed;
}
/*
* Change the display on visually hidden accessible elements
* in all browsers (opinionated).
*/
:where([aria-hidden="false" i][hidden]) {
display: initial;
}
:where([aria-hidden="false" i][hidden]:not(:focus)) {
clip: rect(0, 0, 0, 0);
position: absolute;
}

View File

@ -1,840 +0,0 @@
@charset "UTF-8";
@font-face {
font-family: "Input Mono";
src: url(/fonts/InputMono-Regular.ttf); }
html {
font-size: 16px;
color: #020202;
background-color: #fffff0;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif; }
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: normal;
margin: 0; }
a {
text-decoration-skip-ink: auto;
color: #020202;
text-decoration: underline;
opacity: 0.8; }
a:hover {
text-decoration: none;
opacity: 1; }
.sic::after {
content: " [sic]";
font-style: italic; }
.latex {
display: inline !important; }
pre {
padding-left: 1em;
border-left: 2px outset #020202;
display: inline-block;
max-width: 85%; }
pre {
overflow: hidden; }
@media only screen and (min-width: 1024px) {
pre {
margin: 1em 2em; } }
q.guillemets {
quotes: "«" "»" "«" "»"; }
q,
blockquote {
quotes: "" "" "“" "”"; }
q::before {
content: open-quote; }
q::after {
content: close-quote; }
cite,
cite.book,
cite.film,
cite.tv-show,
cite.comic,
cite.book,
cite.podcast,
cite.album,
cite.report {
font-style: italic; }
cite.book--bible {
font-style: inherit; }
cite.legislation,
cite.smallcite,
cite.comic-strip,
cite.short-story,
cite.article,
cite.episode,
cite.video,
cite.chapter,
cite.software,
cite.campaign,
cite.song,
cite.speech,
cite.course,
cite.presentation {
font-style: normal; }
cite.smallcite::before,
cite.article::before,
cite.comic-strip::before,
cite.short-story::before,
cite.episode::before,
cite.video::before,
cite.chapter::before,
cite.song::before,
cite.poem::before,
cite.campaign::before,
cite.speech::before,
cite.course::before,
cite.presentation::before {
content: "“"; }
cite.smallcite::after,
cite.article::after,
cite.comic-strip::after,
cite.short-story::after,
cite.episode::after,
cite.video::after,
cite.chapter::after,
cite.song::after,
cite.poem::after,
cite.campaign::after,
cite.speech::after,
cite.course::after,
cite.presentation::after {
content: "”"; }
cite.article--shortcite::before,
cite.article--shortcite::after {
content: none; }
code,
samp,
var,
pre {
font-family: "Input Mono", "Lucida Console", Monaco, monospace;
font-size: 1em; }
pre .nocode {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
font-size: 1em;
padding: 1px 3px;
border-radius: 6px;
border: dashed 1px black; }
code,
samp,
var {
background-color: #d1d1d1;
border-radius: 5px;
padding: 2px; }
pre {
max-width: 50vw;
overflow: scroll; }
h1 code,
.post-title code,
pre code,
h1 samp,
.post-title samp,
pre samp,
h1 var,
.post-title var,
pre var {
background-color: transparent;
padding: 0; }
.heading code,
.subheading code {
background-color: transparent; }
pre.prettyprint ol {
padding-left: 3.5em; }
pre.prettyprint li {
background: none !important; }
samp {
display: block;
width: 80ch;
margin: 1em 4em;
border-left: 2px solid #ccc;
color: #333; }
kbd {
padding: 0.1em 0.6em;
border: 1px solid #ccc;
font-size: 11px;
font-family: Arial, Helvetica, sans-serif;
background-color: #f7f7f7;
color: #333;
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset;
border-radius: 3px;
display: inline-block;
margin: 0 0.1em;
text-shadow: 0 1px 0 white;
line-height: 1.4;
white-space: nowrap; }
.pre-nominals,
.post-nominals {
font-size: 0.6em;
font-variant: small-caps; }
.site-container {
display: grid;
grid-template-columns: 2.5% 1fr 2.5%;
grid-template-rows: auto 1fr 2.5%;
grid-template-areas: "header header header" "page-container page-container page-container" "footer footer footer";
min-height: calc(100vh - 4em);
border-top: 0; }
@media only screen and (min-width: 1248px) {
.site-container {
margin-bottom: 2em;
grid-template-areas: "header header header" ". page-container ." "footer footer footer";
border: 2px solid black;
margin-left: 2em;
margin-right: 2em; } }
.site-container--homepage {
align-items: center;
grid-template-rows: auto 2.5%;
grid-template-areas: "page-container page-container page-container" "footer footer footer";
margin-top: 2em;
margin-bottom: 2em; }
@media only screen and (min-width: 1248px) {
.site-container--homepage {
border: 2px solid black;
margin-left: 2em;
margin-right: 2em;
grid-template-areas: ". page-container ." "footer footer footer"; } }
.site-container--list, .site-container--section {
align-items: center; }
.site-header {
display: grid;
grid-area: header;
grid-gap: 0;
grid-template-columns: 1fr;
grid-template-rows: auto auto auto auto;
grid-template-areas: "header-title" "header-tagline" "header-icons" "header-nav";
position: sticky;
top: 0;
left: 0;
width: 100%;
text-align: center;
z-index: 1; }
.site-header__title, .site-header__tagline, .site-header__icons, .site-header__nav {
background-color: #fffff0;
margin: 0; }
.site-header__title, .site-header__tagline, .site-header__icons {
padding: 5px 0; }
.site-header__title {
font-weight: normal;
grid-area: header-title; }
.site-header__tagline {
grid-area: header-tagline; }
.site-header__icons {
grid-area: header-icons;
border-bottom: 2px solid #020202;
margin-bottom: 0; }
.site-header__nav {
grid-area: header-nav;
margin: auto;
width: 100%; }
@media only screen and (min-width: 1248px) {
.site-header__nav {
width: 60%; } }
.site-header__nav ul {
margin-top: 0;
margin-bottom: 0; }
.site-header__nav li {
width: calc(100% / 3);
display: block;
float: left;
border-bottom: 2px solid black;
border-left: 1px solid black;
border-right: 1px solid black;
padding: 0.4em;
background-color: inherit; }
.site-header__nav a:first-child li {
border-left: 2px solid black; }
.site-header__nav a:last-child li {
border-right: 2px solid black; }
.site-header__nav li:hover {
background-color: #ffffd0; }
.site-header__nav li a {
width: 100%;
height: 100%;
display: block; }
.site-footer {
grid-area: footer;
display: block;
width: 99%;
/* Overflows right of viewport otherwise */
position: fixed;
bottom: 0; }
.site-footer p {
width: fit-content;
margin: auto;
background: #fffff0;
border: 2px solid black;
padding: 0.4em;
border-bottom: none;
font-size: 0.6em; }
@media only screen and (min-width: 1248px) {
.site-footer p {
font-size: 1em; } }
.site-content {
grid-area: page-container;
margin-left: 1em;
margin-right: 1em; }
@media only screen and (min-width: 1248px) {
.site-content {
margin: 2em; } }
.feed-icon {
display: inline-block;
height: 0.6em;
width: 0.6em;
margin-bottom: 0.2em; }
.link--tile {
text-decoration: none;
box-sizing: border-box;
border: 2px solid transparent; }
.link--tile:hover {
border-color: #020202; }
.item-tile {
display: grid;
min-height: 180px;
grid-template-columns: 5% auto 5%;
grid-template-rows: 2.5% auto 2.5%;
grid-template-areas: ". . ." ". tile-details ." ". . .";
background-size: cover;
background-repeat: no-repeat;
background-position: center; }
.item-tile.lazy {
background-image: none !important; }
.item-tile--heading {
font-size: 3em; }
.item-tile--heading .item-tile__header {
opacity: 1; }
.item-tile--ohwhatohjeez {
border: 2px solid #ff8900; }
.item-tile--oldphaloskepsis {
border: 2px solid #003d52; }
.item-tile--omphaloskepsis {
border: 2px solid #fffff0; }
.item-tile__header {
text-align: center;
background-color: #020202;
opacity: 0.8;
display: grid;
grid-area: tile-details;
grid-template-columns: 5px auto 5px;
grid-template-rows: 0 auto auto auto;
grid-template-areas: ". . ." ". banner ." ". tile-title ." ". tile-subtitle ."; }
.item-tile__banner {
padding: 0.5em 1em 0;
grid-area: banner;
width: auto;
margin-left: auto;
margin-right: auto;
border-radius: 0 0 10px 10px;
text-align: center;
text-decoration: none !important;
line-height: 0.5em;
background-color: #ebebeb; }
.item-tile__title, .item-tile__subtitle {
color: #fffff0;
margin: 0;
font-weight: normal; }
.item-tile__title {
font-size: 1.4em;
grid-area: tile-title;
align-self: center; }
.item-tile__title--long {
font-size: 1em; }
.item-tile__subtitle {
font-size: 0.8em;
grid-area: tile-subtitle;
align-self: start; }
/* TODO: Not currently used */
@media screen and (max-width: 480px) {
.table-scroller {
overflow-x: auto;
width: 320px; } }
table {
border: 1px solid #020202;
margin: auto; }
table td {
padding: 0.5em 1em;
border: 1px solid #020202; }
.site-content--homepage {
text-align: center; }
.site-content--homepage .page-title {
font-size: 2.5em;
margin-bottom: 1em; }
@media only screen and (min-width: 1248px) {
.site-content--homepage .page-title {
font-size: 4em; } }
.site-content--homepage .page-title span {
display: block !important;
font-size: 0.3em; }
.site-content--section,
.site-content--list {
display: grid;
grid-gap: 10px;
grid-template-columns: 0.2fr 1fr 0.2fr;
grid-template-rows: auto auto 60px;
justify-items: center;
align-items: center;
grid-template-areas: "list-page-header list-page-header list-page-header" "list-page-grid list-page-grid list-page-grid" "list-page-footer list-page-footer list-page-footer";
margin-top: 5em; }
@media only screen and (min-width: 1248px) {
.site-content--section,
.site-content--list {
grid-template-areas: ". list-page-header ." "list-page-grid list-page-grid list-page-grid" ". list-page-footer ."; } }
.site-content--section .site-content__header,
.site-content--list .site-content__header {
grid-area: list-page-header;
text-align: center; }
.site-content--section .site-content__header .page-header__minor-links,
.site-content--list .site-content__header .page-header__minor-links {
text-align: center;
margin: auto;
overflow: auto; }
.site-content--section .site-content__header .page-header__minor-links ul,
.site-content--list .site-content__header .page-header__minor-links ul {
list-style: none; }
.site-content--section .site-content__header .page-header__minor-links ul li,
.site-content--list .site-content__header .page-header__minor-links ul li {
float: left;
margin: 0 1em; }
.site-content--section .site-content__header .page-header__minor-links ul li *,
.site-content--list .site-content__header .page-header__minor-links ul li * {
display: inline-block; }
.site-content--section .site-content__header .page-header__minor-links .minor-links__categories,
.site-content--list .site-content__header .page-header__minor-links .minor-links__categories {
width: 100%;
display: block;
font-size: 0.8em !important;
overflow: auto; }
@media only screen and (min-width: 1248px) {
.site-content--section .site-content__header .page-header__minor-links .minor-links__categories,
.site-content--list .site-content__header .page-header__minor-links .minor-links__categories {
font-size: 1em !important; } }
.site-content--section .site-content__header .page-header__minor-links .minor-links__years,
.site-content--list .site-content__header .page-header__minor-links .minor-links__years {
width: 100%;
display: block;
margin: auto;
width: fit-content; }
.site-content--section .site-content__body,
.site-content--list .site-content__body {
width: 100%;
display: grid;
justify-items: stretch;
align-items: stretch;
grid-gap: 10px;
grid-area: list-page-grid;
grid-template-columns: 1fr;
grid-template-rows: repeat(8, 1fr);
justify-items: stretch;
align-items: stretch; }
@media only screen and (min-width: 640px) {
.site-content--section .site-content__body,
.site-content--list .site-content__body {
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(4, 1fr); } }
@media only screen and (min-width: 1248px) {
.site-content--section .site-content__body,
.site-content--list .site-content__body {
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(2, 1fr); } }
.site-content--section .site-content__body--list,
.site-content--list .site-content__body--list {
grid-template-columns: 1fr auto 1fr;
grid-template-rows: auto;
grid-template-areas: ". sections-list ."; }
.site-content--section .site-content__body--chart,
.site-content--list .site-content__body--chart {
grid-template-columns: 1em 100% 1fr;
grid-template-rows: 100%;
grid-template-areas: ". section-chart ."; }
.site-content--section .site-content__footer,
.site-content--list .site-content__footer {
grid-area: list-page-footer; }
.site-content--single {
display: grid;
column-gap: 2em;
grid-template-columns: 0.4fr 0.6fr;
grid-template-rows: auto auto auto; }
.site-content--single .site-content__header, .site-content--single .site-content__footer {
display: grid;
grid-column-start: 1;
grid-column-end: 3;
background-color: #fffff0;
filter: brightness(80%); }
@media only screen and (min-width: 1248px) {
.site-content--single .site-content__header, .site-content--single .site-content__footer {
border: 2px solid #020202;
grid-column-end: 2;
padding: 2em; } }
.site-content--single .site-content__header {
grid-row-start: 1;
grid-row-end: 2;
overflow: auto;
border-bottom: 2px solid #020202;
margin-bottom: 2em; }
.site-content--single .site-content__header .article-header {
text-align: center;
background-color: #020202;
opacity: 0.8;
color: #fffff0;
display: grid;
grid-area: post-header-details;
grid-template-columns: 1fr;
padding: 20px;
grid-template-rows: 1fr auto auto 1fr;
justify-items: center;
align-items: center;
grid-template-areas: "." "post-title" "post-subtitle" "."; }
.site-content--single .site-content__header .article-header__series {
margin: 0 auto 1em;
font-size: 1.2em; }
.site-content--single .site-content__header .article-header__featured-image {
display: grid;
grid-template-columns: 15% 1fr 15%;
grid-template-rows: 20% 1fr 20%;
grid-template-areas: ". . ." ". post-header-details ." ". . .";
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
height: 40vh;
min-height: 380px;
width: 100%;
border: 2px solid #020202; }
.site-content--single .site-content__header .article-header__featured-image .attr {
background-color: #020202;
font-size: 0.7em;
color: #fffff0;
width: fit-content;
position: fixed;
padding: 0.2em 0.5em;
opacity: 0.8;
margin: 0 auto; }
.site-content--single .site-content__header .article-header__featured-image .attr a {
color: #fffff0; }
.site-content--single .site-content__header .article-header__title, .site-content--single .site-content__header .article-header__subtitle {
border-bottom: 2px inset #020202;
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.2em;
border-bottom: 2px inset #020202;
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.2em; }
.site-content--single .site-content__header .article-header__title-wrapper {
display: grid;
grid-area: post-header-details;
background-color: #020202;
opacity: 0.8;
text-align: center;
grid-template-columns: 1fr;
padding: 20px;
grid-template-rows: 1fr auto auto 1fr;
justify-items: center;
align-items: center;
grid-template-areas: "." "post-title" "post-subtitle" "."; }
.site-content--single .site-content__header .article-header__title-wrapper--no-title {
visibility: hidden; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__title, .site-content--single .site-content__header .article-header__title-wrapper .article-header__subtitle {
color: #fffff0; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__title {
grid-area: post-title;
font-weight: bold; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__title--long {
font-size: 1.5em; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__subtitle {
grid-area: post-subtitle; }
.site-content--single .site-content__header .article-header__word-count, .site-content--single .site-content__header .article-header__publish-date, .site-content--single .site-content__header .article-header__modified-date {
font-size: 1.2em;
margin: 0.2rem auto; }
.site-content--single .site-content__header .article-header__word-count {
margin-top: 1rem; }
.site-content--single .site-content__header .article-header__notes, .site-content--single .site-content__header .article-header__warnings {
width: 90%;
margin: 1.6em auto;
display: block;
padding-right: 1em; }
.site-content--single .site-content__header .article-header__notes ul, .site-content--single .site-content__header .article-header__warnings ul {
list-style: circle; }
.site-content--single .site-content__header .article-header__notes ul li, .site-content--single .site-content__header .article-header__warnings ul li {
margin: 0.5em 0; }
.site-content--single .site-content__header .article-header__notes {
background-color: #fffff0;
filter: brightness(70%);
border: 1px solid gray; }
.site-content--single .site-content__header .article-header__warnings {
border: 4px solid darkred;
background-color: #fc3a3a;
color: #fffff0;
font-weight: 500; }
.site-content--single .site-content__header .article-header__warnings ul {
list-style: disc; }
.site-content--single .site-content__header .article-header__table-of-contents ul {
list-style-type: arabic;
padding-left: 2em; }
.site-content--single .site-content__body {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 2;
grid-row-end: 3;
/* Temporary until I've fixed all the figures */
overflow-x: clip;
/* TODO: remove once replaced in content with figures */ }
@media only screen and (min-width: 1248px) {
.site-content--single .site-content__body {
grid-row-start: 1;
grid-row-end: 4;
grid-column-start: 2; } }
.site-content--single .site-content__body .heading {
text-align: center;
font-size: 2em;
font-weight: bold; }
.site-content--single .site-content__body .heading::before,
.site-content--single .site-content__body .heading::after {
content: " ~ "; }
.site-content--single .site-content__body .subheading {
font-size: 1.6em;
border-bottom: 2px inset #020202;
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.2em;
text-align: center; }
.site-content--single .site-content__body .subheading__subtitle {
font-size: 1em;
border-bottom: 1px dashed #020202;
margin-top: 0;
margin-bottom: 1em;
padding-bottom: 0.5em;
line-height: 1em;
text-align: center;
font-weight: bold;
width: fit-content;
margin: auto;
padding: 0 3em 0.4em; }
.site-content--single .site-content__body blockquote {
padding-left: 1em;
border-left: 2px outset #020202;
display: inline-block;
max-width: 85%; }
.site-content--single .site-content__body blockquote footer {
text-align: right;
font-style: normal;
display: inline-block;
margin-left: 5em; }
.site-content--single .site-content__body blockquote footer::before {
content: "—"; }
.site-content--single .site-content__body blockquote:first-child {
font-size: 1.2em;
text-align: center;
display: block;
margin: 0 auto;
border-left: 0;
padding-left: 0;
width: 100%;
padding-top: 1em;
padding-bottom: 1.2em;
border-top: 2px outset #020202;
border-bottom: 2px inset #020202; }
.site-content--single .site-content__body blockquote p:first-child {
margin-top: 0; }
.site-content--single .site-content__body blockquote p:last-of-type {
margin-bottom: 0.5em; }
.site-content--single .site-content__body blockquote.script {
display: grid;
grid-template-columns: auto 1fr 0.2fr;
padding-bottom: 0.4em;
text-align: left; }
.site-content--single .site-content__body blockquote.script > p::before, .site-content--single .site-content__body blockquote.script > p::after {
content: none !important; }
.site-content--single .site-content__body blockquote.script > .script-line__character {
grid-column: 1;
margin: 0.5em 2em 0.5em 0.5em;
font-style: italic; }
.site-content--single .site-content__body blockquote.script > .script-line__text {
grid-column-start: 2;
grid-column-end: 4;
margin: 0.5em; }
.site-content--single .site-content__body blockquote.script footer {
grid-column-start: 1;
grid-column-end: 3; }
@media only screen and (min-width: 1024px) {
.site-content--single .site-content__body blockquote {
margin: 1em 2em; } }
.site-content--single .site-content__body img,
.site-content--single .site-content__body video {
max-width: 100%;
height: auto;
width: auto;
max-height: 50vh;
margin: auto;
display: block; }
.site-content--single .site-content__body .figure {
margin: 16px auto;
width: fit-content; }
.site-content--single .site-content__body .figure__image {
display: block;
width: auto;
max-width: 100%;
margin: auto;
height: auto;
max-height: 50vh; }
.site-content--single .site-content__body .figure__caption {
height: auto;
margin: auto; }
.site-content--single .site-content__body .figure__caption--no-height {
height: 0; }
.site-content--single .site-content__body .figure__caption .figcaption__caption {
font-size: 0.9em;
font-style: italic;
text-align: center; }
.site-content--single .site-content__body .figure__caption .figcaption__attr {
background-color: #020202;
font-size: 0.7em;
color: #fffff0;
width: fit-content;
top: -2em;
position: relative;
padding: 0.2em 0.5em;
opacity: 0.8;
margin: 0 auto; }
.site-content--single .site-content__body .figure__caption .figcaption__attr + .figcaption__caption {
margin-top: -0.5em; }
.site-content--single .site-content__footer {
grid-row-start: 3;
grid-row-end: 4;
border-top: 2px solid #020202; }
@media only screen and (min-width: 1248px) {
.site-content--single .site-content__footer {
margin-bottom: 2em;
grid-row-start: 2;
grid-row-end: 3; } }
.site-content--single .site-content__footer h2 {
margin: 1rem 0; }
.site-content--single .site-content__footer ul {
margin: 0; }
.site-content--single .site-content__footer #mapdiv {
border: 2px solid #020202; }
.organisations-table {
grid-column-start: 1;
grid-column-end: 5; }
#organisation-body .index {
display: grid;
grid-gap: 6px 5px;
grid-area: items;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 1fr;
justify-items: stretch;
align-items: stretch;
grid-template-areas: "item1 item2 item3 item4"; }
#organisation-body .index .item:nth-child(1) {
grid-area: item1; }
#organisation-body .index .item:nth-child(2) {
grid-area: item2; }
#organisation-body .index .item:nth-child(3) {
grid-area: item3; }
#organisation-body .index .item:nth-child(4) {
grid-area: item4; }
#organisation-body details {
cursor: pointer;
opacity: 0.7;
border: 2px solid #020202; }
#organisation-body details:hover, #organisation-body details:focus {
opacity: 1; }
#organisation-body summary::marker {
font-size: 2em;
padding-left: 2em; }
#organisation-body summary .subheading {
display: inline;
width: 95%;
padding-bottom: 2em; }
#organisation-body summary .index {
border-top: 2px solid #020202; }
#hierarchy ul {
list-style: none;
padding-left: 1em; }
#hierarchy ul .hierarchy-item:before {
content: '\21B3';
margin: 0 0.4em; }
#hierarchy ul .hierarchy-item--current {
font-weight: bold; }
#hierarchy ul .hierarchy-item--child:before {
content: '\2192'; }
.timeline__legend span {
margin: 0 1em; }
.timeline__legend span * {
display: inline-block; }
.timeline__legend span .colour-square {
width: 1em;
height: 1em;
border-radius: 2.5px;
border: 1px solid #020202; }
.timeline__legend span .colour-square--current {
background-color: #bbbbb0; }
.timeline__legend span .colour-square--past {
background-color: #fffff0; }
.site-content__body--chart #timeline, .site-content__body--chart #map {
width: 100%;
max-width: 100%;
grid-area: section-chart; }
.site-content__body--list .site-content__sections-list {
grid-area: sections-list;
display: block;
list-style: none;
margin: auto;
padding-left: 0; }
.site-content__body--list .site-content__sections-list li * {
display: inline-block; }
@media (prefers-color-scheme: dark) {
/*@import "themes/dark";*/ }

View File

@ -1,984 +0,0 @@
@charset "UTF-8";
/*
Put this file in /static/css/hugo-easy-gallery.css
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
*/
/*
Grid Layout Styles
*/
.gallery {
overflow: hidden; }
.gallery .box {
float: left;
position: relative;
/* Default: 1 tile wide */
width: 100%;
padding-bottom: 100%; }
@media only screen and (min-width: 365px) {
/* Tablet view: 2 tiles */
.gallery .box {
width: 50%;
padding-bottom: 50%; } }
@media only screen and (min-width: 480px) {
/* Small desktop / ipad view: 3 tiles */
.gallery .box {
width: 33.3%;
padding-bottom: 33.3%;
/* */ } }
@media only screen and (min-width: 9999px) {
/* Medium desktop: 4 tiles */
.box {
width: 25%;
padding-bottom: 25%; } }
/*
Transition styles
*/
.gallery.hover-transition figure,
.gallery.hover-effect-zoom .img,
.gallery:not(.caption-effect-appear) figcaption,
.fancy-figure:not(.caption-effect-appear) figcaption {
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out; }
/*
figure styles
*/
figure {
position: relative;
/* purely to allow absolution positioning of figcaption */
overflow: hidden; }
.gallery figure {
position: absolute;
left: 5px;
right: 5px;
top: 5px;
bottom: 5px; }
.gallery.hover-effect-grow figure:hover {
transform: scale(1.05); }
.gallery.hover-effect-shrink figure:hover {
transform: scale(0.95); }
.gallery.hover-effect-slidedown figure:hover {
transform: translateY(5px); }
.gallery.hover-effect-slideup figure:hover {
transform: translateY(-5px); }
/*
img / a styles
*/
.gallery .img {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-size: cover;
background-position: 50% 50%;
background-repeat: no-repeat; }
.gallery.hover-effect-zoom figure:hover .img {
transform: scale(1.05); }
.gallery img {
display: none !important;
/* only show the img if not inside a gallery */ }
.gallery figure a {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0; }
/*
figcaption styles
*/
.gallery figcaption,
.fancy-figure figcaption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: #000;
color: #FFF;
text-align: center;
font-size: 75%;
/* change this if you want bigger text */
background: rgba(0, 0, 0, 0.5);
opacity: 1;
cursor: pointer; }
.gallery.caption-position-none figcaption,
.fancy-figure.caption-position-none figcaption {
display: none; }
.gallery.caption-position-center figcaption,
.fancy-figure.caption-position-center figcaption {
top: 0;
padding: 40% 5px; }
.gallery.caption-position-bottom figcaption,
.fancy-figure.caption-position-bottom figcaption {
padding: 5px; }
.gallery.caption-effect-fade figure:not(:hover) figcaption,
.gallery.caption-effect-appear figure:not(:hover) figcaption,
.fancy-figure.caption-effect-fade figure:not(:hover) figcaption,
.fancy-figure.caption-effect-appear figure:not(:hover) figcaption {
background: rgba(0, 0, 0, 0);
opacity: 0; }
.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption,
.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption {
margin-bottom: -100%; }
.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption,
.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption {
top: 100%; }
.gallery figcaption p {
margin: auto;
/* override style in theme */ }
@font-face {
font-family: "Input Mono";
src: url(/fonts/InputMono-Regular.ttf); }
html {
font-size: 16px;
color: #020202;
background-color: #fffff0;
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif; }
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: normal;
margin: 0; }
a {
text-decoration-skip-ink: auto;
color: #020202;
text-decoration: underline;
opacity: 0.8; }
a:hover {
text-decoration: none;
opacity: 1; }
.sic::after {
content: " [sic]";
font-style: italic; }
.latex {
display: inline !important; }
pre {
padding-left: 1em;
border-left: 2px outset #020202;
display: inline-block;
max-width: 85%; }
pre {
overflow: hidden; }
@media only screen and (min-width: 1024px) {
pre {
margin: 1em 2em; } }
q.guillemets {
quotes: "«" "»" "«" "»"; }
q,
blockquote {
quotes: "" "" "“" "”"; }
q::before {
content: open-quote; }
q::after {
content: close-quote; }
cite,
cite.book,
cite.film,
cite.tv-show,
cite.comic,
cite.book,
cite.podcast,
cite.album,
cite.report {
font-style: italic; }
cite.book--proper-noun {
font-style: inherit; }
cite.legislation,
cite.smallcite,
cite.comic-strip,
cite.short-story,
cite.article,
cite.episode,
cite.video,
cite.chapter,
cite.software,
cite.website,
cite.campaign,
cite.song,
cite.speech,
cite.course,
cite.presentation {
font-style: normal; }
cite.smallcite::before,
cite.article::before,
cite.comic-strip::before,
cite.short-story::before,
cite.episode::before,
cite.video::before,
cite.chapter::before,
cite.song::before,
cite.poem::before,
cite.campaign::before,
cite.speech::before,
cite.course::before,
cite.presentation::before {
content: "“"; }
cite.smallcite::after,
cite.article::after,
cite.comic-strip::after,
cite.short-story::after,
cite.episode::after,
cite.video::after,
cite.chapter::after,
cite.song::after,
cite.poem::after,
cite.campaign::after,
cite.speech::after,
cite.course::after,
cite.presentation::after {
content: "”"; }
cite.article--shortcite::before,
cite.article--shortcite::after {
content: none; }
code,
samp,
var,
pre {
font-family: "Input Mono", "Lucida Console", Monaco, monospace;
font-size: 1em; }
pre .nocode {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
font-size: 1em;
padding: 1px 3px;
border-radius: 6px;
border: dashed 1px black; }
code,
samp,
var {
background-color: #d1d1d1;
border-radius: 5px;
padding: 2px; }
pre {
max-width: 50vw;
overflow: scroll; }
h1 code,
.post-title code,
pre code,
h1 samp,
.post-title samp,
pre samp,
h1 var,
.post-title var,
pre var {
background-color: transparent;
padding: 0; }
.heading code,
.subheading code {
background-color: transparent; }
pre.prettyprint ol {
padding-left: 3.5em; }
pre.prettyprint li {
background: none !important; }
samp {
display: block;
width: 80ch;
margin: 1em 4em;
border-left: 2px solid #ccc;
color: #333; }
kbd {
padding: 0.1em 0.6em;
border: 1px solid #ccc;
font-size: 11px;
font-family: Arial, Helvetica, sans-serif;
background-color: #f7f7f7;
color: #333;
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset;
border-radius: 3px;
display: inline-block;
margin: 0 0.1em;
text-shadow: 0 1px 0 white;
line-height: 1.4;
white-space: nowrap; }
.pre-nominals,
.post-nominals {
font-size: 0.6em;
font-variant: small-caps; }
.site-container {
display: grid;
grid-template-columns: 2.5% 1fr 2.5%;
grid-template-rows: auto 1fr 2.5%;
grid-template-areas: "header header header" "page-container page-container page-container" "footer footer footer";
min-height: calc(100vh - 4em);
border-top: 0; }
.site-container--homepage {
align-items: center;
grid-template-rows: auto 2.5%;
grid-template-areas: "page-container page-container page-container" "footer footer footer";
margin-top: 2em;
margin-bottom: 2em; }
.site-container--list, .site-container--section {
align-items: center; }
.site-header {
display: grid;
grid-area: header;
grid-gap: 0;
grid-template-columns: 1fr;
grid-template-rows: auto auto auto auto;
grid-template-areas: "header-title" "header-tagline" "header-icons" "header-nav";
position: sticky;
top: 0;
left: 0;
width: 100%;
text-align: center;
z-index: 1; }
.site-header__title, .site-header__tagline, .site-header__icons, .site-header__nav {
background-color: #fffff0;
margin: 0; }
.site-header__title, .site-header__tagline, .site-header__icons {
padding: 5px 0; }
.site-header__title {
font-weight: normal;
grid-area: header-title; }
.site-header__tagline {
grid-area: header-tagline; }
.site-header__icons {
grid-area: header-icons;
border-bottom: 2px solid #020202;
margin-bottom: 0; }
.site-header__nav {
grid-area: header-nav;
margin: auto;
width: 100%; }
.site-header__nav ul {
margin-top: 0;
margin-bottom: 0; }
.site-header__nav li {
width: calc(100% / 3);
display: block;
float: left;
border-bottom: 2px solid black;
border-left: 1px solid black;
border-right: 1px solid black;
padding: 0.4em;
background-color: inherit; }
.site-header__nav a:first-child li {
border-left: 2px solid black; }
.site-header__nav a:last-child li {
border-right: 2px solid black; }
.site-header__nav li:hover {
background-color: #ffffd0; }
.site-header__nav li a {
width: 100%;
height: 100%;
display: block; }
.site-footer {
grid-area: footer;
display: block;
width: 99%;
/* Overflows right of viewport otherwise */
position: fixed;
bottom: 0; }
.site-footer p {
width: fit-content;
margin: auto;
background: #fffff0;
border: 2px solid black;
padding: 0.4em;
border-bottom: none;
font-size: 0.6em; }
.site-content {
grid-area: page-container;
margin-left: 1em;
margin-right: 1em; }
.feed-icon {
display: inline-block;
height: 0.6em;
width: 0.6em;
margin-bottom: 0.2em; }
.link--tile {
text-decoration: none;
box-sizing: border-box;
border: 2px solid transparent; }
.link--tile:hover {
border-color: #020202; }
.item-tile {
display: grid;
min-height: 180px;
grid-template-columns: 5% auto 5%;
grid-template-rows: 2.5% auto 2.5%;
grid-template-areas: ". . ." ". tile-details ." ". . .";
background-size: cover;
background-repeat: no-repeat;
background-position: center; }
@media (prefers-reduced-data: reduce) {
.item-tile {
background: none !important; } }
.item-tile.lazy {
background-image: none !important; }
.item-tile--heading {
font-size: 3em; }
.item-tile--heading .item-tile__header {
opacity: 1; }
.item-tile--ohwhatohjeez {
border: 2px solid #ff8900; }
.item-tile--oldphaloskepsis {
border: 2px solid #003d52; }
.item-tile--omphaloskepsis {
border: 2px solid #fffff0; }
.item-tile__header {
text-align: center;
background-color: #020202;
opacity: 0.8;
display: grid;
grid-area: tile-details;
grid-template-columns: 5px auto 5px;
grid-template-rows: 0 auto auto auto;
grid-template-areas: ". . ." ". banner ." ". tile-title ." ". tile-subtitle ."; }
.item-tile__banner {
padding: 0.5em 1em 0;
grid-area: banner;
width: auto;
margin-left: auto;
margin-right: auto;
border-radius: 0 0 10px 10px;
text-align: center;
text-decoration: none !important;
line-height: 0.5em;
background-color: #ebebeb; }
.item-tile__title, .item-tile__subtitle {
color: #fffff0;
margin: 0;
font-weight: normal; }
.item-tile__title {
font-size: 1.4em;
grid-area: tile-title;
align-self: center; }
.item-tile__title--long {
font-size: 1em; }
.item-tile__subtitle {
font-size: 0.8em;
grid-area: tile-subtitle;
align-self: start; }
/* TODO: Not currently used */
@media screen and (max-width: 480px) {
.table-scroller {
overflow-x: auto;
width: 320px; } }
table {
border: 1px solid #020202;
margin: auto; }
table td {
padding: 0.5em 1em;
border: 1px solid #020202; }
.site-content--homepage {
text-align: center; }
.site-content--homepage .page-title {
font-size: 2.5em;
margin-bottom: 1em; }
.site-content--homepage .page-title span {
display: block !important;
font-size: 0.3em; }
.site-content--section,
.site-content--list {
display: grid;
grid-gap: 10px;
grid-template-columns: 0.2fr 1fr 0.2fr;
grid-template-rows: auto auto 60px;
justify-items: center;
align-items: center;
grid-template-areas: "list-page-header list-page-header list-page-header" "list-page-grid list-page-grid list-page-grid" "list-page-footer list-page-footer list-page-footer";
margin-top: 5em; }
.site-content--section .site-content__header,
.site-content--list .site-content__header {
grid-area: list-page-header;
text-align: center; }
.site-content--section .site-content__header .page-header__minor-links,
.site-content--list .site-content__header .page-header__minor-links {
text-align: center;
margin: auto;
overflow: auto; }
.site-content--section .site-content__header .page-header__minor-links ul,
.site-content--list .site-content__header .page-header__minor-links ul {
list-style: none; }
.site-content--section .site-content__header .page-header__minor-links ul li,
.site-content--list .site-content__header .page-header__minor-links ul li {
float: left;
margin: 0 1em; }
.site-content--section .site-content__header .page-header__minor-links ul li *,
.site-content--list .site-content__header .page-header__minor-links ul li * {
display: inline-block; }
.site-content--section .site-content__header .page-header__minor-links .minor-links__categories,
.site-content--list .site-content__header .page-header__minor-links .minor-links__categories {
width: 100%;
display: block;
font-size: 0.8em !important;
overflow: auto; }
.site-content--section .site-content__header .page-header__minor-links .minor-links__years,
.site-content--list .site-content__header .page-header__minor-links .minor-links__years {
width: 100%;
display: block;
margin: auto;
width: fit-content; }
.site-content--section .site-content__body,
.site-content--list .site-content__body {
width: 100%;
display: grid;
justify-items: stretch;
align-items: stretch;
grid-gap: 10px;
grid-area: list-page-grid;
grid-template-columns: 1fr;
grid-template-rows: repeat(8, 1fr);
justify-items: stretch;
align-items: stretch; }
.site-content--section .site-content__body--list,
.site-content--list .site-content__body--list {
grid-template-columns: 1fr auto 1fr;
grid-template-rows: auto;
grid-template-areas: ". sections-list ."; }
.site-content--section .site-content__body--chart,
.site-content--list .site-content__body--chart {
grid-template-columns: 1em 100% 1fr;
grid-template-rows: 100%;
grid-template-areas: ". section-chart ."; }
.site-content--section .site-content__footer,
.site-content--list .site-content__footer {
grid-area: list-page-footer; }
.site-content--single {
display: grid;
column-gap: 2em;
grid-template-columns: 0.4fr 0.6fr;
grid-template-rows: auto auto auto; }
.site-content--single .site-content__header, .site-content--single .site-content__footer {
display: grid;
grid-column-start: 1;
grid-column-end: 3;
background-color: #fffff0;
filter: brightness(80%); }
.site-content--single .site-content__header {
grid-row-start: 1;
grid-row-end: 2;
overflow: auto;
border-bottom: 2px solid #020202;
margin-bottom: 2em; }
.site-content--single .site-content__header .article-header {
text-align: center;
background-color: #020202;
opacity: 0.8;
color: #fffff0;
display: grid;
grid-area: post-header-details;
grid-template-columns: 1fr;
padding: 20px;
grid-template-rows: 1fr auto auto 1fr;
justify-items: center;
align-items: center;
grid-template-areas: "." "post-title" "post-subtitle" "."; }
.site-content--single .site-content__header .article-header__series {
margin: 0 auto 1em;
font-size: 1.2em; }
.site-content--single .site-content__header .article-header__featured-image {
display: grid;
grid-template-columns: 15% 1fr 15%;
grid-template-rows: 20% 1fr 20%;
grid-template-areas: ". . ." ". post-header-details ." ". . .";
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
height: 40vh;
min-height: 380px;
width: 100%;
border: 2px solid #020202; }
.site-content--single .site-content__header .article-header__featured-image .attr {
background-color: #020202;
font-size: 0.7em;
color: #fffff0;
width: fit-content;
position: fixed;
padding: 0.2em 0.5em;
opacity: 0.8;
margin: 0 auto; }
.site-content--single .site-content__header .article-header__featured-image .attr a {
color: #fffff0; }
.site-content--single .site-content__header .article-header__title, .site-content--single .site-content__header .article-header__subtitle {
border-bottom: 2px inset #020202;
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.2em;
border-bottom: 2px inset #020202;
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.2em; }
.site-content--single .site-content__header .article-header__title-wrapper {
display: grid;
grid-area: post-header-details;
background-color: #020202;
opacity: 0.8;
text-align: center;
grid-template-columns: 1fr;
padding: 20px;
grid-template-rows: 1fr auto auto 1fr;
justify-items: center;
align-items: center;
grid-template-areas: "." "post-title" "post-subtitle" "."; }
.site-content--single .site-content__header .article-header__title-wrapper--no-title {
visibility: hidden; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__title, .site-content--single .site-content__header .article-header__title-wrapper .article-header__subtitle {
color: #fffff0; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__title {
grid-area: post-title;
font-weight: bold; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__title--long {
font-size: 1.5em; }
.site-content--single .site-content__header .article-header__title-wrapper .article-header__subtitle {
grid-area: post-subtitle; }
.site-content--single .site-content__header .article-header__word-count, .site-content--single .site-content__header .article-header__publish-date, .site-content--single .site-content__header .article-header__modified-date {
font-size: 1.2em;
margin: 0.2rem auto; }
.site-content--single .site-content__header .article-header__word-count {
margin-top: 1rem; }
.site-content--single .site-content__header .article-header__notes, .site-content--single .site-content__header .article-header__warnings {
width: 90%;
margin: 1.6em auto;
display: block;
padding-right: 1em; }
.site-content--single .site-content__header .article-header__notes ul, .site-content--single .site-content__header .article-header__warnings ul {
list-style: circle; }
.site-content--single .site-content__header .article-header__notes ul li, .site-content--single .site-content__header .article-header__warnings ul li {
margin: 0.5em 0; }
.site-content--single .site-content__header .article-header__notes {
background-color: #fffff0;
filter: brightness(70%);
border: 1px solid gray; }
.site-content--single .site-content__header .article-header__warnings {
border: 4px solid darkred;
background-color: #fc3a3a;
color: #fffff0;
font-weight: 500; }
.site-content--single .site-content__header .article-header__warnings ul {
list-style: disc; }
.site-content--single .site-content__header .article-header__table-of-contents ul {
list-style-type: arabic;
padding-left: 2em; }
.site-content--single .site-content__body {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 2;
grid-row-end: 3;
/* Temporary until I've fixed all the figures */
overflow-x: clip;
/* TODO: remove once replaced in content with figures */ }
.site-content--single .site-content__body .heading {
text-align: center;
font-size: 2em;
font-weight: bold; }
.site-content--single .site-content__body .heading::before,
.site-content--single .site-content__body .heading::after {
content: " ~ "; }
.site-content--single .site-content__body .subheading {
font-size: 1.6em;
border-bottom: 2px inset #020202;
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.2em;
text-align: center; }
.site-content--single .site-content__body .subheading__subtitle {
font-size: 1em;
border-bottom: 1px dashed #020202;
margin-top: 0;
margin-bottom: 1em;
padding-bottom: 0.5em;
line-height: 1em;
text-align: center;
font-weight: bold;
width: fit-content;
margin: auto;
padding: 0 3em 0.4em; }
.site-content--single .site-content__body .subsubheading {
font-size: 1.4em;
border-bottom: 1px dashed #020202;
margin-top: 1em;
margin-bottom: 1em;
padding-bottom: 0.5em;
line-height: 1em;
text-align: left;
font-weight: bold; }
.site-content--single .site-content__body .subsubsubheading {
font-size: 1.2em;
margin-top: 1em;
margin-bottom: 1em;
line-height: 1em;
text-align: left;
font-weight: bold; }
.site-content--single .site-content__body blockquote {
padding-left: 1em;
border-left: 2px outset #020202;
display: inline-block;
max-width: 85%; }
.site-content--single .site-content__body blockquote footer {
text-align: right;
font-style: normal;
display: inline-block;
margin-left: 5em; }
.site-content--single .site-content__body blockquote footer::before {
content: "—"; }
.site-content--single .site-content__body blockquote:first-child {
font-size: 1.2em;
text-align: center;
display: block;
margin: 0 auto;
border-left: 0;
padding-left: 0;
width: 100%;
padding-top: 1em;
padding-bottom: 1.2em;
border-top: 2px outset #020202;
border-bottom: 2px inset #020202; }
.site-content--single .site-content__body blockquote p:first-child {
margin-top: 0; }
.site-content--single .site-content__body blockquote p:last-of-type {
margin-bottom: 0.5em; }
.site-content--single .site-content__body blockquote.script {
display: grid;
grid-template-columns: auto 1fr 0.2fr;
padding-bottom: 0.4em;
text-align: left; }
.site-content--single .site-content__body blockquote.script > p::before, .site-content--single .site-content__body blockquote.script > p::after {
content: none !important; }
.site-content--single .site-content__body blockquote.script > .script-line__character {
grid-column: 1;
margin: 0.5em 2em 0.5em 0.5em;
font-style: italic; }
.site-content--single .site-content__body blockquote.script > .script-line__text {
grid-column-start: 2;
grid-column-end: 4;
margin: 0.5em; }
.site-content--single .site-content__body blockquote.script footer {
grid-column-start: 1;
grid-column-end: 3; }
@media only screen and (min-width: 1024px) {
.site-content--single .site-content__body blockquote {
margin: 1em 2em; } }
.site-content--single .site-content__body img,
.site-content--single .site-content__body video {
max-width: 100%;
height: auto;
width: auto;
max-height: 50vh;
margin: auto;
display: block; }
.site-content--single .site-content__body .figure {
margin: 16px auto;
width: fit-content; }
.site-content--single .site-content__body .figure__image {
display: block;
width: auto;
max-width: 100%;
margin: auto;
height: auto;
max-height: 50vh; }
.site-content--single .site-content__body .figure__chart {
min-height: 40vh;
max-height: 60vh; }
.site-content--single .site-content__body .figure__caption {
height: auto;
margin: auto; }
.site-content--single .site-content__body .figure__caption--no-height {
height: 0; }
.site-content--single .site-content__body .figure__caption .figcaption__caption {
font-size: 0.9em;
font-style: italic;
text-align: center; }
.site-content--single .site-content__body .figure__caption .figcaption__attr {
background-color: #020202;
font-size: 0.7em;
color: #fffff0;
width: fit-content;
top: -2em;
position: relative;
padding: 0.2em 0.5em;
opacity: 0.8;
margin: 0 auto; }
.site-content--single .site-content__body .figure__caption .figcaption__attr + .figcaption__caption {
margin-top: -0.5em; }
.site-content--single .site-content__body .figure__caption .figcaption__full-size-link {
font-size: 0.6em;
padding-left: 1em; }
.site-content--single .site-content__body .figure__caption .figcaption__full-size-link::before {
content: '['; }
.site-content--single .site-content__body .figure__caption .figcaption__full-size-link::after {
content: ']'; }
.site-content--single .site-content__footer {
grid-row-start: 3;
grid-row-end: 4;
border-top: 2px solid #020202; }
.site-content--single .site-content__footer h2 {
margin: 1rem 0; }
.site-content--single .site-content__footer ul {
margin: 0; }
.site-content--single .site-content__footer #mapdiv {
border: 2px solid #020202; }
.organisations-table {
grid-column-start: 1;
grid-column-end: 5; }
#organisation-body .index {
display: grid;
grid-gap: 6px 5px;
grid-area: items;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 1fr;
justify-items: stretch;
align-items: stretch;
grid-template-areas: "item1 item2 item3 item4"; }
#organisation-body .index .item:nth-child(1) {
grid-area: item1; }
#organisation-body .index .item:nth-child(2) {
grid-area: item2; }
#organisation-body .index .item:nth-child(3) {
grid-area: item3; }
#organisation-body .index .item:nth-child(4) {
grid-area: item4; }
#organisation-body details {
cursor: pointer;
opacity: 0.7;
border: 2px solid #020202; }
#organisation-body details:hover, #organisation-body details:focus {
opacity: 1; }
#organisation-body summary::marker {
font-size: 2em;
padding-left: 2em; }
#organisation-body summary .subheading {
display: inline;
width: 95%;
padding-bottom: 2em; }
#organisation-body summary .index {
border-top: 2px solid #020202; }
#hierarchy ul {
list-style: none;
padding-left: 1em; }
#hierarchy ul .hierarchy-item:before {
content: '\21B3';
margin: 0 0.4em; }
#hierarchy ul .hierarchy-item--current {
font-weight: bold; }
#hierarchy ul .hierarchy-item--child:before {
content: '\2192'; }
.timeline__legend span {
margin: 0 1em; }
.timeline__legend span * {
display: inline-block; }
.timeline__legend span .colour-square {
width: 1em;
height: 1em;
border-radius: 2.5px;
border: 1px solid #020202; }
.timeline__legend span .colour-square--unpaid-current {
background-color: #bbbbb0; }
.timeline__legend span .colour-square--unpaid-past {
background-color: #fffff0; }
.timeline__legend span .colour-square--paid-current {
background-color: #BCBC7E; }
.timeline__legend span .colour-square--paid-past {
background-color: #FCFCA6; }
.site-content__body--chart #timeline, .site-content__body--chart #map {
width: 100%;
max-width: 100%;
grid-area: section-chart; }
.site-content__body--list .site-content__sections-list {
grid-area: sections-list;
display: block;
list-style: none;
margin: auto;
padding-left: 0; }
.site-content__body--list .site-content__sections-list li * {
display: inline-block; }
@media (prefers-color-scheme: dark) {
html,
.site-header {
color: #fffff0;
background-color: #020202; }
.site-header__nav li {
color: #fffff0;
border-color: #fffff0; }
.site-header__nav li:hover {
background-color: #020202; }
.site-header__title a {
color: #fffff0; }
.item-tile--heading, .item-tile__header {
background-color: #fffff0; }
.item-tile--heading, .item-tile__header, .item-tile__title, .item-tile__subtitle {
color: #020202; } }

View File

@ -0,0 +1,22 @@
@media print {
html {
font-size: 12pt; }
/*
a::after {
content: " (" attr(href) ")";
}
*/
.site-header,
.site-footer {
display: none; }
.site-content {
column-width: 17em;
column-gap: 3em;
widows: 3;
orphans: 3; }
.site-content--single .site-content__header, .site-content--single .site-content__footer, .site-content--single .site-content .article__links {
background-color: none; }
.site-content .figure {
break-inside: avoid; }
.site-content .figure--gallery {
break-inside: auto; } }

BIN
images/feed-icon.svg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/layers-2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
images/layers.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

BIN
images/marker-icon-2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
images/marker-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/marker-shadow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

View File

@ -11,19 +11,61 @@ function drawChart() {
dataTable.addColumn({ type: 'date', id: 'End' }); dataTable.addColumn({ type: 'date', id: 'End' });
dataTable.addRows([ dataTable.addRows([
[
"Accessibility Standing Group",
"Member",
"#BBBBB0",
new Date("2023-07-12"),
new Date("2023-08-07")
],
[
"Online Safety SIG",
"Member",
"#BBBBB0",
new Date("2023-07-12"),
new Date("2023-08-07")
],
[
"Youth Standing Group",
"Member",
"#BBBBB0",
new Date("2023-07-12"),
new Date("2023-08-07")
],
[
"Centro de Derechos Humanos Fray Bartolomé de las Casas, La Organización Sociedad Civil Las Abejas de Acteal",
"BriCO Volunteer",
"#FFFFF0",
new Date("2023-06-26"),
new Date("2023-07-13")
],
[
"Centro de Español y Lenguas Mayas Rebelde Autónomo Zapatista",
"Student",
"#FFFFF0",
new Date("2023-06-05"),
new Date("2023-06-23")
],
[
"Instituto Cubano de Amistad con los Pueblos, Cuba Solidarity Campaign",
"Brigadista, XVI Brigada Internacional Primero de May",
"#FFFFF0",
new Date("2023-04-23"),
new Date("2023-05-12")
],
[ [
"Workaway, Volcano Day", "Workaway, Volcano Day",
"Workawayer", "Workawayer",
"#BBBBB0", "#BBBBB0",
new Date("2023-03-26"), new Date("2023-03-26"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Cuba Solidarity Campaign", "Cuba Solidarity Campaign",
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2023-03-03"), new Date("2023-03-03"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Workaway, Hospedaje Wounaan", "Workaway, Hospedaje Wounaan",
@ -51,7 +93,7 @@ function drawChart() {
"Developer", "Developer",
"#BBBBB0", "#BBBBB0",
new Date("2023-01-19"), new Date("2023-01-19"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Workaway, Finca DeLaRey", "Workaway, Finca DeLaRey",
@ -82,18 +124,18 @@ function drawChart() {
new Date("2022-11-24") new Date("2022-11-24")
], ],
[ [
"Morecambe Net", "Self-Employed, Morecambe Net",
"Web Developer", "Web Developer",
"#BCBC7E", "#FCFCA6",
new Date("2022-10-26"), new Date("2022-10-26"),
new Date("2023-04-13") new Date("2023-02-01")
], ],
[ [
"Chartered Institute for Information Security", "Chartered Institute for Information Security",
"Associate Member", "Associate Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-08-09"), new Date("2022-08-09"),
new Date("2023-04-13") new Date("2023-05-31")
], ],
[ [
"West Lancs Scouts Active Support", "West Lancs Scouts Active Support",
@ -105,114 +147,114 @@ function drawChart() {
[ [
"Advanced Programming Specialist Group", "Advanced Programming Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Computer Arts Society", "Computer Arts Society",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Computer Conservation Society", "Computer Conservation Society",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Consultancy Specialist Group", "Consultancy Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Enterprise Architecture Specialist Group", "Enterprise Architecture Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Green IT Specialist Group", "Green IT Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Health & Care Specialist Group", "Health & Care Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Internet Specialist Group", "Internet Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Information Risk Management and Assurance Specialist Group", "Information Risk Management and Assurance Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Information Security Specialist Group", "Information Security Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"IT Ethics Specialist Group", "IT Ethics Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Law Specialist Group", "Law Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"BCS Nottingham & Derby Branch", "BCS Nottingham & Derby Branch",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Open Source Specialist Group", "Open Source Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Sociotechnical Specialist Group", "Sociotechnical Specialist Group",
"Member", "Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"BCS, the Chartered Institute for IT", "BCS, the Chartered Institute for IT",
"Professional Member", "Professional Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-06-06"), new Date("2022-06-06"),
new Date("2023-04-13") new Date("2023-05-26")
], ],
[ [
"Chartered Institute for Information Security", "Chartered Institute for Information Security",
@ -231,9 +273,9 @@ function drawChart() {
[ [
"BCS, the Chartered Institute for IT", "BCS, the Chartered Institute for IT",
"Student Member", "Student Member",
"#BBBBB0", "#FFFFF0",
new Date("2022-05-26"), new Date("2022-05-26"),
new Date("2023-04-13") new Date("2022-06-06")
], ],
[ [
"MORS Cyber CoP", "MORS Cyber CoP",
@ -275,7 +317,7 @@ function drawChart() {
"Supporter", "Supporter",
"#BBBBB0", "#BBBBB0",
new Date("2022-01-14"), new Date("2022-01-14"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Actica Consulting", "Actica Consulting",
@ -331,14 +373,14 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2021-09-24"), new Date("2021-09-24"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Mountain Training Association", "Mountain Training Association",
"Trainee Member", "Trainee Member",
"#BBBBB0", "#BBBBB0",
new Date("2021-08-24"), new Date("2021-08-24"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"North West Area Meeting", "North West Area Meeting",
@ -352,7 +394,7 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2021-07-26"), new Date("2021-07-26"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Lancaster Quaker Meeting", "Lancaster Quaker Meeting",
@ -397,19 +439,12 @@ function drawChart() {
new Date("2022-04-15") new Date("2022-04-15")
], ],
[ [
"Morecambe Net", "Self-Employed, Morecambe Net",
"Web Developer", "Web Developer",
"#FCFCA6", "#FCFCA6",
new Date("2021-01-24"), new Date("2021-01-24"),
new Date("2021-10-03") new Date("2021-10-03")
], ],
[
"CSS Selectors as Fragment Identifiers Community Group",
"Participant",
"#BBBBB0",
new Date("2021-01-23"),
new Date("2023-04-13")
],
[ [
"footnotes", "footnotes",
"Contributor", "Contributor",
@ -417,6 +452,13 @@ function drawChart() {
new Date("2021-01-23"), new Date("2021-01-23"),
new Date("2022-03-08") new Date("2022-03-08")
], ],
[
"CSS Selectors as Fragment Identifiers Community Group",
"Participant",
"#FFFFF0",
new Date("2021-01-23"),
new Date("2023-04-07")
],
[ [
"The Scout Association", "The Scout Association",
"UK Contingent 16th World Scout Moot", "UK Contingent 16th World Scout Moot",
@ -443,7 +485,7 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2020-09-29"), new Date("2020-09-29"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Executive Committee", "Executive Committee",
@ -464,14 +506,7 @@ function drawChart() {
"Website Content Manager", "Website Content Manager",
"#BBBBB0", "#BBBBB0",
new Date("2020-08-31"), new Date("2020-08-31"),
new Date("2023-04-13") new Date("2023-08-07")
],
[
"Unity2020",
"Volunteer",
"#FFFFF0",
new Date("2020-07-08"),
new Date("2020-08-21")
], ],
[ [
"Digital & Data Scout Active Support Unit", "Digital & Data Scout Active Support Unit",
@ -618,14 +653,14 @@ function drawChart() {
"Associate Member", "Associate Member",
"#BBBBB0", "#BBBBB0",
new Date("2019-04-01"), new Date("2019-04-01"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Youth Hostel Association", "Youth Hostel Association",
"Company Member", "Company Member",
"#BBBBB0", "#BBBBB0",
new Date("2019-02-20"), new Date("2019-02-20"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Friends of Lancaster Library", "Friends of Lancaster Library",
@ -807,14 +842,14 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2018-06-20"), new Date("2018-06-20"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"UK England Chapter", "UK England Chapter",
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2018-06-13"), new Date("2018-06-13"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Community Networks SIG", "Community Networks SIG",
@ -828,14 +863,14 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2018-06-06"), new Date("2018-06-06"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Internet Society", "Internet Society",
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2018-06-04"), new Date("2018-06-04"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Mitigate Cyber", "Mitigate Cyber",
@ -979,7 +1014,7 @@ function drawChart() {
], ],
[ [
"Graduate College", "Graduate College",
"MCR Member", "Member",
"#FFFFF0", "#FFFFF0",
new Date("2017-10-05"), new Date("2017-10-05"),
new Date("2018-12-12") new Date("2018-12-12")
@ -1024,7 +1059,7 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2017-06-06"), new Date("2017-06-06"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Lonsdale District Scout Network, Scout Network", "Lonsdale District Scout Network, Scout Network",
@ -1087,7 +1122,7 @@ function drawChart() {
"Member", "Member",
"#BBBBB0", "#BBBBB0",
new Date("2016-12-19"), new Date("2016-12-19"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Pendle College, Lancaster University Students' Union", "Pendle College, Lancaster University Students' Union",
@ -1458,7 +1493,7 @@ function drawChart() {
"Librarian", "Librarian",
"#BBBBB0", "#BBBBB0",
new Date("2013-05-01"), new Date("2013-05-01"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Patient Participation Group", "Patient Participation Group",
@ -1514,7 +1549,7 @@ function drawChart() {
"Minister", "Minister",
"#BBBBB0", "#BBBBB0",
new Date("2012-01-01"), new Date("2012-01-01"),
new Date("2023-04-13") new Date("2023-08-07")
], ],
[ [
"Salvation Army", "Salvation Army",

View File

View File

@ -1 +1 @@
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="{{ range after 1 ( seq .Level ) }}sub{{ end }}heading">{{ .Text | safeHTML }} <a class="heading-anchor" href="#{{ .Anchor | safeURL }}"></a></h{{ .Level }}> <h{{ .Level }} id="{{ .Anchor }}" class="{{ range after 1 ( seq .Level ) }}sub{{ end }}heading">{{ .Text | safeHTML }} <a class="heading-anchor" href="#{{ .Anchor }}"></a></h{{ .Level }}>

View File

@ -1 +0,0 @@
{{- with 1 -}}{{- end -}}<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>{{- with 1 -}}{{- end -}}

View File

@ -2,12 +2,11 @@
{{ partialCached "copying.html" . }} {{ partialCached "copying.html" . }}
<html lang="en-gb" itemscope itemtype="https://schema.org/WebSite"> <html class="h-card" lang="en-gb" itemscope itemtype="https://schema.org/Blog">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, intitial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<!--<meta http-equiv="Content-Security-Policy" content="default-src 'self'">-->
<meta name="theme-color" content="#FFFFF0"> <meta name="theme-color" content="#FFFFF0">
<meta name="description" content="{{ block "head-description" . }}{{ $.Site.Params.description | html }}{{ end }}"> <meta name="description" content="{{ block "head-description" . }}{{ $.Site.Params.description | html }}{{ end }}">
<meta name="twitter:dnt" content="on"> <meta name="twitter:dnt" content="on">
@ -15,35 +14,48 @@
<title itemprop="name">{{- block "title" . -}}{{- .Site.Title }} | {{ .Site.Params.tagline -}}{{- end -}}</title> <title itemprop="name">{{- block "title" . -}}{{- .Site.Title }} | {{ .Site.Params.tagline -}}{{- end -}}</title>
<link rel="license" href="{{ block "head-license" . }}https://creativecommons.org/publicdomain/zero/1.0/{{ end }}"> <link rel="license" href="{{ block "head-license" . }}https://creativecommons.org/publicdomain/zero/1.0/{{ end }}">
<link rel="me" href="mailto:me+bg@bengoldsworthy.net"> <link class="u-url u-uid" rel="me" href="{{ .Site.Home.Permalink }}">
<link rel="icon" sizes="192x192" href="/images/icon.png"> <link class="u-email" rel="me" href="mailto:me+bg@bengoldsworthy.net">
{{ with .OutputFormats.Get "rss" }}<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .RelPermalink }}" title="{{ $.Site.Title | safeHTML }}" />{{ end }} <link class="u-url" rel="me" href="https://github.com/Rumperuu">
<link class="u-url" rel="me" href="https://news.ycombinator.com/user?id=Rumperuu">
<link class="u-logo" rel="icon" sizes="192x192" href="/images/icon.png">
<link class="u-key" rel="author" href="{{ .Site.Params.keyfile }}">
<link rel="canonical" href="{{ .Permalink }}">
{{ with .OutputFormats.Get "rss" -}}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .RelPermalink }}" title="{{ $.Site.Title | safeHTML }}" />
{{- end }}
<link href="/css/sanitize.css" rel="stylesheet" /> <link href="/css/sanitize.css" rel="stylesheet" />
{{- $sass := resources.Get "css/main.scss" }} {{- $mainStylesheet := resources.Get "css/main.scss" }}
{{- $style := $sass | resources.ToCSS | resources.Fingerprint }} {{- $mainStylesheet := $mainStylesheet | resources.ToCSS | resources.Fingerprint }}
<link rel="stylesheet" type="text/css" href="{{ $style.Permalink }}" integrity="{{ $style.Data.Integrity | html }}"> <link rel="stylesheet" type="text/css" href="{{ $mainStylesheet.Permalink }}" integrity="{{ $mainStylesheet.Data.Integrity | html }}">
{{- block "header-styles" . -}}<!-- -->{{- end -}} {{- $printStylesheet := resources.Get "css/print.scss" }}
{{- $printStylesheet := $printStylesheet | resources.ToCSS | resources.Fingerprint }}
<link rel="stylesheet" media="print" href="{{ $printStylesheet.Permalink }}" integrity="{{ $printStylesheet.Data.Integrity | html }}">
{{- block "header-scripts" . -}}<!-- -->{{- end -}} {{- block "header-scripts" . -}}<!-- -->{{- end -}}
{{- block "header-styles" . -}}<!-- -->{{- end -}}
</head> </head>
<body class="site-container site-container{{ block "main-class" . }}{{ end }}"> <body class="site-container site-container{{ block "main-class" . }} layouts-default-baseof{{ end }}">
{{ block "header" . -}} {{ block "header" . -}}
{{- partialCached "header/site-header.html" . -}} {{- partialCached "header/site-header.html" . -}}
{{- end }} {{- end }}
<main class="site-content site-content{{ block "main-class" . }}{{ end }}" itemscope itemtype="{{ block "main-type" . }}https://schema.org/Thing{{ end }}"> <article class="{{ block "article-class" . }}h-entry {{ end }}site-content site-content{{ block "main-class" . }}{{ end }}" itemscope itemtype="https://schema.org/BlogPosting">
{{ block "main-header" . }}{{ end }} {{ block "main-header" . }}{{ end }}
{{ block "main-body" . }}{{ end }} {{ block "main-body" . }}{{ end }}
{{ block "main-footer" . }}{{ end }} {{ block "main-footer" . }}{{ end }}
</main> </article>
{{- block "footer" . -}} {{- block "footer" . -}}
<footer class="site-footer"> <footer class="site-footer">
<p> <p>
By <a href="/">{{ $.Site.Author.name }}</a> | By <a href="/">{{ $.Site.Author.name }}</a> |
<a href="{{ $.Site.Params.reportIssueURL }}" target="_blank" rel="noopener noreferrer">Report an Issue</a> | <a href="{{ $.Site.Params.codeURL }}{{ $.Site.Params.reportIssueURL }}">Report an Issue</a> |
<a href="{{ relref . "privacy-policy" }}">Privacy Policy</a> | <a href="{{ relref . "privacy-policy" }}">Privacy Policy</a> |
<a href="/{{ .Sitemap.Filename }}">Sitemap</a> | <a href="/{{ .Sitemap.Filename }}">Sitemap</a> |
Built: {{ now.Format "2006-01-02T15:04:05" }} Built: {{ now.Format "2006-01-02T15:04:05" }}

View File

@ -2,17 +2,17 @@
{{ .Type | singularize }}: &lsquo;{{ .Page.Title | plainify }}&rsquo; | {{ .Site.Title }} {{ .Type | singularize }}: &lsquo;{{ .Page.Title | plainify }}&rsquo; | {{ .Site.Title }}
{{ end }} {{ end }}
{{ define "main-class" }}--list{{ end}} {{ define "main-class" }}--list layouts-default-list{{ end}}
{{ define "main-header" }} {{ define "main-header" }}
<header class="site-content__header"> <header class="site-content__header">
<h1 class="page-title">{{ .Type | singularize }}: <q>{{ .Title | safeHTML }}</q> <h2 class="page-title">{{ .Type | singularize }}: <q>{{ .Title | safeHTML }}</q>
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats -}}
<a href="{{ .RelPermalink }}"> <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
<img class="feed-icon" src="/images/feed-icon.png"> <img class="feed-icon" alt="RSS icon" src="{{ $.Site.Params.feedIcon }}">
</a> </a>
{{ end }} {{ end }}
</h1> </h2>
{{ .Content }} {{ .Content }}
<nav class="page-header__minor-links"> <nav class="page-header__minor-links">

View File

@ -2,7 +2,7 @@
{{ .Page.Title | plainify }} | {{ .Site.Title }} {{ .Page.Title | plainify }} | {{ .Site.Title }}
{{ end }} {{ end }}
{{ define "main-class" }}--section{{ end }} {{ define "main-class" }}--section layouts-default-section{{ end }}
{{ define "main-type" }}.{{ .Params.mainType }}{{ end }} {{ define "main-type" }}.{{ .Params.mainType }}{{ end }}
{{ define "item-type" }}{{ .Params.itemsType }}{{ end }} {{ define "item-type" }}{{ .Params.itemsType }}{{ end }}
@ -10,13 +10,13 @@
{{ define "main-header" }} {{ define "main-header" }}
<header class="site-content__header"> <header class="site-content__header">
<h1 class="page-title">{{ .Title | safeHTML }} <h2 class="page-title">{{ .Title | safeHTML }}
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats -}}
<a href="{{ .RelPermalink }}"> <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
<img class="feed-icon" src="/images/feed-icon.png"> <img class="feed-icon" alt="RSS icon" src="{{ $.Site.Params.feedIcon }}">
</a> </a>
{{ end }} {{ end }}
</h1> </h2>
{{ .Content }} {{ .Content }}
</header> </header>
{{ end }} {{ end }}

View File

@ -2,47 +2,57 @@
{{ define "head-description" }}{{ .Summary | plainify }}{{ end }} {{ define "head-description" }}{{ .Summary | plainify }}{{ end }}
{{ define "main-class" }}--single{{ end }} {{ define "main-class" }}--single layouts-default-single{{ end }}
{{ define "header-scripts" }}
{{ with .Params.locations }}
{{ $mapJS := resources.Get "js/leaflet.js" | fingerprint }}
<script id="Map-script" src="{{ $mapJS.Permalink }}" integrity="{{ $mapJS.Data.Integrity }}"></script>
{{ end }}
{{ end }}
{{ define "header-styles" }}
{{ with .Params.styles }}
<link rel="stylesheet" type="text/css" href="{{ ( $.Page.Resources.GetMatch "style").RelPermalink }}">
{{ end }}
{{ with .Params.locations }}
<link rel="stylesheet" href="/css/leaflet.css">
{{ end }}
{{ end }}
{{ define "footer-scripts" }} {{ define "footer-scripts" }}
{{ with .Params.locations }} {{ with .Params.locations }}
<script src="https://www.openlayers.org/api/OpenLayers.js"></script> <script>
<script> var map = L.map('map').setView([55, -3], 13);
map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
var lonLats = []; L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
var latLons = [];
{{ range . }} {{ range . }}
{{ with ( index $.Site.Data.locations . ) }} {{ with ( index $.Site.Data.locations . ) }}
lonLats.push(new OpenLayers.LonLat( {{ .lon }} , {{ .lat }} ) L.marker([{{ .lat }}, {{ .lon }}]).addTo(map);
.transform( latLons.push([{{ .lat }}, {{ .lon }}]);
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
));
{{ else }} {{ else }}
{{ warnf "Could not find lat-lon for %q (%q)" . $.File.Path }} {{ warnf "Could not find lat-lon for %q (%q)" . $.File.Path }}
{{ end }} {{ end }}
{{ end }} {{ end }}
map.fitBounds(latLons);
/* TODO: Smarter zoom selection */
var zoom=5;
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
for (var i = 0; i < lonLats.length; i++) {
markers.addMarker(new OpenLayers.Marker(lonLats[i]));
}
/* TODO: Smarter centering */
map.setCenter(lonLats[0], zoom);
</script> </script>
{{ end }} {{ end }}
{{ with .Params.scripts }} {{ with .Params.scripts }}
{{ if in . "mathjax" }} {{ if in . "mathjax" }}
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script src="/js/polyfill.js"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> <script id="MathJax-script" async src="/js/mathjax/tex-chtml.js"></script>
<script src="/js/mathjax-config.js"></script> <script src="/js/mathjax/config.js"></script>
{{ end }}
{{ if in . "charts" }}
{{ $chartsCoreJS := resources.Get "js/chart.js" | fingerprint }}
{{ $chartsConfigJS := $.Page.Resources.GetMatch "charts-init" }}
<script id="Charts-script" src="{{ $chartsCoreJS.Permalink }}" integrity="{{ $chartsCoreJS.Data.Integrity }}"></script>
<script id="Charts-config-script" src="{{ $chartsConfigJS.Permalink }}"></script>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -58,12 +68,12 @@
{{ end }} {{ end }}
{{ end }}> {{ end }}>
<div class="article-header__title-wrapper"> <div class="article-header__title-wrapper">
<h1 class="article-header__title{{ if gt ( len ( .Title | plainify ) ) 40 }} article-header__title--long{{ end }}"> <h2 class="article-header__title{{ if gt ( len ( .Title | plainify ) ) 40 }} article-header__title--long{{ end }}">
<span role="text" itemprop="name">{{ .Title | safeHTML }}</span> <span role="text" itemprop="name">{{ .Title | safeHTML }}</span>
</h1> </h2>
{{ with .Params.subtitle }} {{ with .Params.subtitle }}
<p class="article-header__subtitle">{{ . | safeHTML }}</p> <p class="article-header__subtitle">{{ . | safeHTML }}</p>
{{ end }} {{ end }}
</div> </div>
{{ with .Resources.GetMatch .Params.featured_image }} {{ with .Resources.GetMatch .Params.featured_image }}
<p class="attr"> <p class="attr">
@ -102,7 +112,7 @@
{{ if and ( .TableOfContents ) ( ne .TableOfContents "<nav id=\"TableOfContents\"></nav>" ) }} {{ if and ( .TableOfContents ) ( ne .TableOfContents "<nav id=\"TableOfContents\"></nav>" ) }}
<nav class="article-header__table-of-contents"> <nav class="article-header__table-of-contents">
<h2 class="article-header__subtitle">Table of Contents</h2> <h3 class="article-header__subtitle">Table of Contents</h3>
{{ .TableOfContents }} {{ .TableOfContents }}
</nav> </nav>
{{ end }} {{ end }}
@ -110,9 +120,39 @@
{{ end }} {{ end }}
{{ define "main-body" }} {{ define "main-body" }}
<article class="site-content__body"> <section class="site-content__body">
{{- if ( or .Params.internal_links .Params.external_links ) -}}
<section class="article__links">
{{- with .Params.internal_links -}}
<h3>Internal Links</h3>
<ul>
{{- range . -}}
{{ if eq ( printf "%T" . ) "map[string]interface {}" }}
<li><a href="{{ .link }}">{{ .title | safeHTML }}</a></li>
{{ else }}
<li><a href="{{ . }}">Link</a></li>
{{ end }}
{{- end -}}
</ul>
{{- end -}}
{{- with .Params.external_links -}}
<h3>External Links</h3>
<ul>
{{- range . -}}
{{ if eq ( printf "%T" . ) "map[string]interface {}" }}
<li><a href="{{ .link }}" rel="noopener noreferrer" target="_blank">{{ .title | safeHTML }}</a></li>
{{ else }}
<li><a href="{{ . }}" rel="noopener noreferrer" target="_blank">Link</a></li>
{{ end }}
{{- end -}}
</ul>
{{- end -}}
</section>
{{- end -}}
{{ .Content }} {{ .Content }}
</article> </section>
{{ end }} {{ end }}
{{ define "main-footer" }} {{ define "main-footer" }}

View File

@ -2,7 +2,7 @@
{{ .Page.Title | plainify }} | {{ .Site.Title }} {{ .Page.Title | plainify }} | {{ .Site.Title }}
{{ end }} {{ end }}
{{ define "main-class" }}--section{{ end }} {{ define "main-class" }}--section layouts-blog-section{{ end }}
{{ define "main-type" }}{{ .Params.mainType }}{{ end }} {{ define "main-type" }}{{ .Params.mainType }}{{ end }}
@ -63,30 +63,30 @@
{{ define "main-header" }} {{ define "main-header" }}
<header class="site-content__header"> <header class="site-content__header">
<h1 class="page-title">{{ .Title | safeHTML }} <h2 class="page-title">{{ .Title | safeHTML }}
{{ if eq .Type "blog" }} {{ if eq .Type "blog" }}
{{ with .GetPage "blog/posts" }} {{ with .GetPage "blog/posts" }}
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats -}}
<a href="{{ .RelPermalink }}"> <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
<img class="feed-icon" src="{{ $.Site.Params.feedIcon }}"> <img class="feed-icon" alt="RSS icon" src="{{ $.Site.Params.feedIcon }}">
</a> </a>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ else }} {{ else }}
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats -}}
<a href="{{ .RelPermalink }}"> <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
<img class="feed-icon" src="{{ $.Site.Params.feedIcon }}"> <img class="feed-icon" alt="RSS icon" src="{{ $.Site.Params.feedIcon }}">
</a> </a>
{{ end }} {{ end }}
{{ end }} {{ end }}
</h1> </h2>
{{ .Content }} {{ .Content }}
<nav class="page-header__minor-links"> <nav class="page-header__minor-links">
<ul class="minor-links__categories"> <ul class="minor-links__categories">
<li><a href="/series"><h2>Series</h2></a> <p>({{ len .Site.Taxonomies.series }})</p></li> <li><a href="/series"><h3>Series</h3></a> <p>({{ len .Site.Taxonomies.series }})</p></li>
{{ range .Site.Taxonomies.categories }} {{ range .Site.Taxonomies.categories }}
<li><a href="{{ .Page.RelPermalink }}"><h2>{{ .Page.Title | safeHTML }}</h2></a> <p>({{ len . }})</p></li> <li><a href="{{ .Page.RelPermalink }}"><h3>{{ .Page.Title | safeHTML }}</h3></a> <p>({{ len . }})</p></li>
{{ end }} {{ end }}
</ul> </ul>
{{ if eq .Type "blog" }} {{ if eq .Type "blog" }}

View File

@ -2,57 +2,57 @@
&ldquo;{{ .Title | plainify }}&rdquo; | {{ .Site.Title }} &ldquo;{{ .Title | plainify }}&rdquo; | {{ .Site.Title }}
{{ end }} {{ end }}
{{ define "main-class" }}--single{{ end }} {{ define "main-class" }}--single layouts-blog-single{{ end }}
{{ define "header-scripts" }}
{{ with .Params.locations }}
{{ $mapJS := resources.Get "js/leaflet.js" | fingerprint }}
<script id="Map-script" src="{{ $mapJS.Permalink }}" integrity="{{ $mapJS.Data.Integrity }}"></script>
{{ end }}
{{ end }}
{{ define "header-styles" }} {{ define "header-styles" }}
{{ with .Params.styles }} {{ with .Params.styles }}
<link rel="stylesheet" type="text/css" href="{{ ( $.Page.Resources.GetMatch "style").RelPermalink }}"> <link rel="stylesheet" type="text/css" href="{{ ( $.Page.Resources.GetMatch "style").RelPermalink }}">
{{ end }} {{ end }}
{{ with .Params.locations }}
<link rel="stylesheet" href="/css/leaflet.css">
{{ end }}
{{ end }} {{ end }}
{{ define "footer-scripts" }} {{ define "footer-scripts" }}
{{ with .Params.locations }} {{ with .Params.locations }}
<script src="https://www.openlayers.org/api/OpenLayers.js"></script> <script>
<script> var map = L.map('map').setView([55, -3], 13);
map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
var lonLats = []; L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
var latLons = [];
{{ range . }} {{ range . }}
{{ with ( index $.Site.Data.locations . ) }} {{ with ( index $.Site.Data.locations . ) }}
lonLats.push(new OpenLayers.LonLat( {{ .lon }} , {{ .lat }} ) L.marker([{{ .lat }}, {{ .lon }}]).addTo(map);
.transform( latLons.push([{{ .lat }}, {{ .lon }}]);
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
));
{{ else }} {{ else }}
{{ warnf "Could not find lat-lon for %q (%q)" . $.File.Path }} {{ warnf "Could not find lat-lon for %q (%q)" . $.File.Path }}
{{ end }} {{ end }}
{{ end }} {{ end }}
map.fitBounds(latLons);
/* TODO: Smarter zoom selection */
var zoom=5;
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
for (var i = 0; i < lonLats.length; i++) {
markers.addMarker(new OpenLayers.Marker(lonLats[i]));
}
/* TODO: Smarter centering */
map.setCenter(lonLats[0], zoom);
</script> </script>
{{ end }} {{ end }}
{{ with .Params.scripts }} {{ with .Params.scripts }}
{{ if in . "mathjax" }} {{ if in . "mathjax" }}
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script src="/js/polyfill.js"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> <script id="MathJax-script" async src="/js/mathjax/tex-chtml.js"></script>
<script src="/js/mathjax-config.js"></script> <script src="/js/mathjax/config.js"></script>
{{ end }} {{ end }}
{{ if in . "charts" }} {{ if in . "charts" }}
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> {{ $chartsCoreJS := resources.Get "js/chart.js" | fingerprint }}
<script src="{{ ( $.Page.Resources.GetMatch "charts-init").RelPermalink }}"></script> {{ $chartsConfigJS := $.Page.Resources.GetMatch "charts-init" }}
<script id="Charts-script" src="{{ $chartsCoreJS.Permalink }}" integrity="{{ $chartsCoreJS.Data.Integrity }}"></script>
<script id="Charts-config-script" src="{{ $chartsConfigJS.Permalink }}"></script>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -62,25 +62,53 @@
{{ if .Params.series }} {{ if .Params.series }}
<p class="article-header__series">Part of series: <p class="article-header__series">Part of series:
{{ range ( .GetTerms "series" ) }} {{ range ( .GetTerms "series" ) }}
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a> <a class="u-url" href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ end }} {{ end }}
</p> </p>
{{ end }} {{ end }}
{{ with .Params.featured_image }}
<img class="u-photo" style="display: none;" src="
{{- with ( $.Resources.GetMatch . ) -}}
{{- if eq .MediaType.SubType "svg" -}}
{{- .RelPermalink -}}
{{- else }}
{{- with .Resize "1200x webp" -}}
{{- .RelPermalink -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- . -}}
{{- end -}}
"
itemprop="image"
{{- with ( $.Resources.GetMatch . ) -}}
alt="{{ .Params.alt }}"
{{- end -}}
/>
{{ end }}
<div class="article-header__featured-image" <div class="article-header__featured-image"
{{ if .Params.featured_image }} {{ if .Params.featured_image }}
{{ if .Resources.GetMatch .Params.featured_image }} {{ with .Resources.GetMatch .Params.featured_image }}
style="background-image: url({{ ( .Resources.GetMatch .Params.featured_image ).RelPermalink }})" {{ if eq .MediaType.SubType "svg" }}
style="background-image: url({{ .RelPermalink }})"
{{ else }}
{{ with .Resize "1500x webp" }}
style="background-image: url({{ .RelPermalink }})"
{{ end }}
{{ end }}
{{ else }} {{ else }}
style="background-image: url({{ .Params.featured_image }})" style="background-image: url({{ .Params.featured_image }})"
{{ end }} {{ end }}
{{ end }}> {{ end -}}
<div class="article-header__title-wrapper"> >
<h1 class="article-header__title{{ if gt ( len ( .Title | plainify ) ) 40 }} article-header__title--long{{ end }}"> <div class=" article-header__title-wrapper">
<span role="text" itemprop="name">{{ .Title | safeHTML }}</span> <p class="p-name" style="display: none;" itemprop="name"><a class="u-url u-uid" href="{{ .Permalink }}">{{ .Title | safeHTML }}{{ with .Params.subtitle }}: {{ . | safeHTML }}{{ end }}</a></p>
</h1> <h2 class="article-header__title{{ if gt ( len ( .Title | plainify ) ) 40 }} article-header__title--long{{ end }}">
{{ with .Params.subtitle }} {{- .Title | safeHTML -}}
<p class="article-header__subtitle">{{ . | safeHTML }}</p> </h2>
{{ end }} {{ with .Params.subtitle }}
<p class="article-header__subtitle">{{ . | safeHTML }}</p>
{{ end }}
</div> </div>
{{ with .Resources.GetMatch .Params.featured_image }} {{ with .Resources.GetMatch .Params.featured_image }}
<p class="attr"> <p class="attr">
@ -93,8 +121,27 @@
</div> </div>
<p class="article-header__word-count">~<span itemprop="wordCount">{{ .FuzzyWordCount | lang.NumFmt 0 }}</span> words</p> <p class="article-header__word-count">~<span itemprop="wordCount">{{ .FuzzyWordCount | lang.NumFmt 0 }}</span> words</p>
<p class="article-header__publish-date">Published: <span itemprop="datePublished" datetime="{{ .PublishDate }}">{{ .PublishDate.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .PublishDate.Day}}st{{ else if in (slice 2 22) .PublishDate.Day}}nd{{ else if in (slice 3 23) .PublishDate.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .PublishDate.Format "2006" | lang.NumFmt 0 }}&nbsp;<abbr style="text-transform: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></span></p>
<p class="article-header__modified-date">Last modified: <span itemprop="dateModified" datetime="{{ .Lastmod }}">{{ .Lastmod.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .Lastmod.Day}}st{{ else if in (slice 2 22) .Lastmod.Day}}nd{{ else if in (slice 3 23) .Lastmod.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .Lastmod.Format "2006" | lang.NumFmt 0 }}&nbsp;<abbr style="text-transform: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></span></p> <p class="article-header__publish-date">Published: <time class="dt-published" datetime="{{ .PublishDate | time.Format "2006-01-02T15:04:05-07:00" }}" itemprop="datePublished">{{ .PublishDate.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .PublishDate.Day}}st{{ else if in (slice 2 22) .PublishDate.Day}}nd{{ else if in (slice 3 23) .PublishDate.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .PublishDate.Format "2006" | lang.NumFmt 0 }}&nbsp;<abbr style="font-variant: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></time></p>
<p class="article-header__modified-date">Last modified: <time class="dt-updated" datetime="{{ .Lastmod | time.Format "2006-01-02T15:04:05-07:00" }}" itemprop="dateModified">{{ .Lastmod.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .Lastmod.Day}}st{{ else if in (slice 2 22) .Lastmod.Day}}nd{{ else if in (slice 3 23) .Lastmod.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .Lastmod.Format "2006" | lang.NumFmt 0 }}&nbsp;<abbr style="font-variant: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></time></p>
<p style="display: none">Author{{ with .Params.authors }}s{{ end }}:&nbsp;
{{- with .Params.authors -}}
</p>
<ul>
{{- range . -}}
{{- if ( eq . .Site.Author.name ) -}}
<li><p><a class="p-author" itemprop="author" rel="author" href="{{ .Site.Home.Permalink }}">{{ .Site.Author.name }}</a></p></li>
{{- else -}}
<li><p class="p-author" itemprop="author">{{- . -}}</p></li>
{{- end -}}
{{- end -}}
</ul>
{{- else -}}
<a class="p-author" itemprop="author" rel="author" href="{{ .Site.Home.Permalink }}">{{ .Site.Author.name }}</a>
{{- end -}}
</p>
{{ $post_age_in_years := math.Round ( div ( div ( now.Sub .PublishDate ).Hours 24 ) 365 ) }} {{ $post_age_in_years := math.Round ( div ( div ( now.Sub .PublishDate ).Hours 24 ) 365 ) }}
{{ if ( or .Params.site .Params.controversial ( gt $post_age_in_years 2 ) ) }} {{ if ( or .Params.site .Params.controversial ( gt $post_age_in_years 2 ) ) }}
@ -119,25 +166,89 @@
{{ if and ( .TableOfContents ) ( ne .TableOfContents "<nav id=\"TableOfContents\"></nav>" ) }} {{ if and ( .TableOfContents ) ( ne .TableOfContents "<nav id=\"TableOfContents\"></nav>" ) }}
<nav class="article-header__table-of-contents"> <nav class="article-header__table-of-contents">
<h2 class="article-header__subtitle">Table of Contents</h2> <h3 class="article-header__subtitle">Table of Contents</h3>
{{ .TableOfContents }} {{ .TableOfContents }}
{{- if fileExists ( path.Join $.Page.File.Dir "appendices.md" ) -}}
<ul class="toc-list--appendices">
<li><a href="#appendices">Appendices</a>
<ol>
{{ range .Params.appendices }}
<li><a href="#{{ . | anchorize }}">{{ . | safeHTML }}</a></li>
{{ end }}
</ol>
</li>
</ul>
{{- end -}}
{{- if fileExists ( path.Join $.Page.File.Dir "corrigenda.md" ) -}}
<ul class="toc-list--corrigenda">
<li><a href="#corrigenda">Corrigenda</a></li>
</ul>
{{- end -}}
</nav> </nav>
{{ end }} {{ end }}
</header> </header>
{{ end }} {{ end }}
{{ define "main-body" }} {{ define "main-body" }}
<article class="site-content__body" itemprop="articleBody"> <section class="site-content__body" itemprop="articleBody">
{{ .Content }}
{{ if fileExists ( path.Join $.Page.File.Dir "appendices.md" ) }} {{ with .Summary }}
<section class="article-body__appendices"> <section class="article-body__summary" itemprop="abstract">
<h2 class="subheading subheading--appendices">Appendices</h2> <h2>Summary</h2>
{{ warnf "Getting appendix for '%v'" $.File.Dir }} <p class="p-summary">{{ . }}</p>
{{ $file := path.Join $.Page.File.Dir "appendices.md" }} </section>
{{ $file | markdownify }} {{ end }}
</section>
{{ end }} {{- if ( or .Params.internal_links .Params.external_links ) -}}
</article> <section class="article__links">
{{- with .Params.internal_links -}}
<h3>Internal Links</h3>
<ul>
{{- range . -}}
{{ if eq ( printf "%T" . ) "map[string]interface {}" }}
<li><a class="button" href="{{ .link }}">{{ .title | safeHTML }}</a></li>
{{ else }}
<li><a class="button" href="{{ . }}">Link</a></li>
{{ end }}
{{- end -}}
</ul>
{{- end -}}
{{- with .Params.external_links -}}
<h3>External Links</h3>
<ul>
{{- range . -}}
{{ if eq ( printf "%T" . ) "map[string]interface {}" }}
<li><a class="button" href="{{ .link }}">{{ .title | safeHTML }}</a></li>
{{ else }}
<li><a class="button" href="{{ . }}">Link</a></li>
{{ end }}
{{- end -}}
</ul>
{{- end -}}
</section>
{{- end -}}
<section class="e-content article-body__content" itemprop="articleBody">
{{ .Content }}
</section>
{{ if fileExists ( path.Join $.Page.File.Dir "appendices.md" ) }}
<section class="article-body__appendices">
<h2 class="subheading subheading--appendices" id="appendices">Appendices</h2>
{{ $file := path.Join $.Page.File.Dir "appendices.md" | readFile }}
{{ $file | .RenderString }}
</section>
{{ end }}
{{ if fileExists ( path.Join $.Page.File.Dir "Corrigendum.md" ) }}
<section class="article-body__corrigendum">
<h2 class="subheading subheading--corrigendum" id="corrigendum">Corrigendum</h2>
{{ $file := path.Join $.Page.File.Dir "corrigendum.md" | readFile }}
{{ $file | .RenderString }}
</section>
{{ end }}
</section>
{{ end }} {{ end }}
{{ define "main-footer" }} {{ define "main-footer" }}

View File

@ -1,218 +0,0 @@
{{ define "title" }}
{{ .Page.Title | plainify }} | {{ .Site.Title }}
{{ end }}
{{ define "main-class" }}
{{- if .IsDescendant ( .GetPage "/cv/organisations" ) -}}--single{{- else -}}--section{{- end -}}
{{ end }}
{{ define "header-scripts" }}
{{ if ( or ( eq .Type "cv" ) ( .IsDescendant ( .GetPage "/cv/organisations" ) ) ) }}
<script type="text/javascript" src="/js/google-charts.js"></script>
{{ end }}
{{ end }}
{{ define "footer-scripts" }}
{{ if eq .Type "cv" }}
{{ $js := resources.Get "js/roles-chart.js" | resources.ExecuteAsTemplate "/js/render-roles-timeline.js" . }}
<script type="text/javascript" src="{{ $js.RelPermalink }}"></script>
{{ else if .IsDescendant ( .GetPage "/cv/organisations" ) }}
{{ $titles := .Scratch.Get "titles" }}
<script>
google.charts.load('current', {'packages':['timeline']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'Type' });
dataTable.addColumn({ type: 'string', id: 'Job Title' });
dataTable.addColumn({ type: 'string', id: 'style', role: 'style' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
dataTable.addRows([
{{ range where ((.GetPage "cv").Sections) "Title" "Roles" -}}
{{- range where (where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles -}}
[
"{{- delimit (intersect .Params.organisations $titles ) "" | safeHTML -}}",
"{{- .Title | safeHTML -}}",
"{{ if .Params.end_date }}#FFFFF0{{ else }}#BBBBB0{{ end }}",
new Date("{{ .Date.Format "2006-01-02" }}"),
new Date("{{ if .Params.end_date }}{{ delimit ( first 1 .Params.end_date ) "" }}{{ else }}{{ now.Format "2006-01-02" }}{{ end }}")
],
{{- end -}}
{{ end -}}
]);
var options = {
title: '{{ .Title | plainify }} Roles Timeline',
timeline: { showBarLabels: true }
};
chart.draw(dataTable, options);
{{ if $titles }}
container.style.height = ( ( ( {{ len $titles }} - 1 ) * 41 ) + 15 )+ "px";
{{ end }}
}
</script>
{{ end }}
{{ end }}
{{ define "main-header" }}
{{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
<header class="site-content__header">
<div class="article-header__featured-image"
{{ if .Params.featured_image }}
{{ with .Resources.GetMatch .Params.featured_image }}
style="background-image: url({{ .RelPermalink }})"
{{ end }}
{{ end }}>
<div class="article-header__title-wrapper{{ if .Params.title_in_logo }} article-header__title-wrapper--no-title{{ end }}">
<h1 class="article-header__title">{{ .Title | safeHTML }}LIST</h1>
</div>
</div>
</header>
{{ else }}
<header class="site-content__header">
<h1 class="page-title">{{ .Title | safeHTML }}.</h1>
{{ .Content }}
{{ if eq .Type "cv" }}
<nav class="page-header__minor-links">
<ul>
{{ range ( where .Sections "Type" "not in" ( slice "cv/roles" ) ).ByTitle }}
<li><a href="{{ .RelPermalink }}"><h2>{{ .Title }}</h2></a> <p>({{ len (where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) }})</p></li>
{{ end }}
</ul>
</nav>
{{ end }}
{{ if eq .Type "cv" }}
<aside class="timeline__legend">
<label for="legend__past">Past</label>
<div id="legend__past">
<span><div class="colour-square colour-square--unpaid-past"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-past"></div> <p>Paid</p></span>
</div>
<br>
<label for="legend__current">Current</label>
<div id="legend__current">
<span><div class="colour-square colour-square--unpaid-current"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-current"></div> <p>Paid</p></span>
</div>
</aside>
{{ end }}
</header>
{{ end }}
{{ end }}
{{ define "main-body" }}
{{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
{{ $titles := slice (.Title | plainify) }}
{{ range .Sections.ByTitle }}
{{ $titles = $titles | append (slice (.Title | plainify) )}}
{{ $titles = $titles | append ( partial "cv/organisations/recursive-children-titles.html" . ) }}
{{ end }}
{{ .Scratch.Set "titles" $titles }}
<main id="organisation-body" class="site-content__body">
<section id="description">
{{ .Content }}
</section>
<section id="roles-timelimne">
<aside class="timeline__legend">
<label for="legend__past">Past</label>
<div id="legend__past">
<span><div class="colour-square colour-square--unpaid-past"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-past"></div> <p>Paid</p></span>
</div>
<br>
<label for="legend__current">Current</label>
<div id="legend__current">
<span><div class="colour-square colour-square--unpaid-current"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-current"></div> <p>Paid</p></span>
</div>
</aside>
<div id="timeline" aria-label="Role Time" role="img">Javascript must be enabled to view this chart.</div>
</section>
<section id="related" class="row">
{{ if ne .Parent.Title "Organisations" }}
<section id="parents" class="col-6 col-m-12">
<h2 class="subheading">Parent</h2>
{{ with .Parent }}
<ul>
<li><a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a></li>
</ul>
{{ end }}
</section>
{{ end }}
{{ if gt (len .Sections) 0 }}
<section id="children" class="col-6 col-m-12">
<h2 class="subheading">Children</h2>
<ul>
{{ range .Sections.ByTitle }}
<li>
<a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a>
{{ partial "cv/organisations/recursive-children.html" . }}
</li>
{{ end }}
</ul>
</section>
{{ end }}
{{- $titles := .Scratch.Get "titles" -}}
{{ range (where ((.GetPage "blog").Sections) "Title" "Blog Posts") }}
{{ $section_title := .Title }}
{{ with where (where ( where .Site.Pages "Section" "blog" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles }}
{{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
{{ end }}
{{ end }}
{{ range (where ((.GetPage "portfolio").Sections) "Title" "!=" "Appearances").ByTitle }}
{{ $section_title := .Title }}
{{ with where (where ( where .Site.Pages "Section" "portfolio" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles }}
{{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
{{ end }}
{{ end }}
{{ range (where ((.GetPage "cv").Sections) "Title" "Qualifications") }}
{{ $section_title := .Title }}
{{ with where (where ( where .Site.Pages "Section" "portfolio" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles }}
{{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
{{ end }}
{{ end }}
{{ range (where ((.GetPage "cv").Sections) "Title" "Awards") }}
{{ $section_title := .Title }}
{{ with where (where ( where .Site.Pages "Section" "portfolio" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles }}
{{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
{{ end }}
{{ end }}
{{ range (where ((.GetPage "portfolio").Sections) "Title" "Appearances").ByTitle }}
{{ $section_title := .Title }}
{{ with where (where ( where .Site.Pages "Section" "portfolio" ) "Parent.Title" .Title ) ".Params.organisations" "intersect" $titles }}
{{ partial "cv/organisations/organisation-items.html" ( dict "section_title" $section_title "content" . ) }}
{{ end }}
{{ end }}
</section>
</main>
{{ else }}
{{ if eq .Type "cv" }}
<article class="site-content__body site-content__body--list">
<div id="timeline" width="1000" height="400" aria-label="Roles Timeline" role="img">Javascript must be enabled to view this chart.</div>
</article>
{{ else if eq .Type "cv/organisations" . }}
{{ with .GetPage "cv/organisations" }}
{{ partial "items-table.html" . }}
{{ end }}
{{ else }}
{{ partial "items-grid.html" . }}
{{ end }}
{{ end }}
{{ end }}

View File

@ -43,20 +43,20 @@ L.HeatLayer=(L.Layer?L.Layer:L.Class).extend({initialize:function(t,i){this._lat
{{ .Scratch.Set "maxItems" 0 }} {{ .Scratch.Set "maxItems" 0 }}
{{ .Scratch.Set "numOfItems" 0 }} {{ .Scratch.Set "numOfItems" 0 }}
{{ warnf "No of locations: %v" ( len $.Site.Data.locations ) }} /* warnf "No of locations: %v" ( len $.Site.Data.locations ) */
{{ range $key, $value := $.Site.Data.locations }} {{ range $key, $value := $.Site.Data.locations }}
{{ $childPosts := where $.Site.Pages ".Params.locations" "intersect" ( slice $key ) }} {{ $childPosts := where $.Site.Pages ".Params.locations" "intersect" ( slice $key ) }}
{{ warnf "Current location: %v" $key }} /* warnf "Current location: %v" $key */
{{ warnf "Child posts: %v" $childPosts }} /* warnf "Child posts: %v" $childPosts */
{{ .Scratch.Set "numOfItems" ( len $childPosts ) }} {{ .Scratch.Set "numOfItems" ( len $childPosts ) }}
{{ if ( gt ( .Scratch.Get "numOfItems" ) ( .Scratch.Get "maxItems" ) ) }} {{ if ( gt ( .Scratch.Get "numOfItems" ) ( .Scratch.Get "maxItems" ) ) }}
{{ warnf "Updating maxItems" }} /* warnf "Updating maxItems" */
{{ .Scratch.Set "maxItems" ( .Scratch.Get "numOfItems" ) }} {{ .Scratch.Set "maxItems" ( .Scratch.Get "numOfItems" ) }}
{{ warnf "New maxItems: %d" .Scratch.Get "maxItems" }} /* warnf "New maxItems: %d" .Scratch.Get "maxItems" */
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ warnf "maxItems: %v" ( .Scratch.Get "maxItems" ) }} /* warnf "maxItems: %v" ( .Scratch.Get "maxItems" ) */
console.log({{ .Scratch.Get "maxItems" }}); console.log({{ .Scratch.Get "maxItems" }});
L.heatLayer([ L.heatLayer([

View File

@ -3,12 +3,13 @@
{{ end }} {{ end }}
{{ define "main-class" }} {{ define "main-class" }}
{{- if .IsDescendant ( .GetPage "/cv/organisations" ) -}}--single{{- else -}}--section{{- end -}} {{- if .IsDescendant ( .GetPage "/cv/organisations" ) -}}--single{{- else -}}--section{{- end }} layouts-cv-section
{{ end }} {{ end }}
{{ define "header-scripts" }} {{ define "header-scripts" }}
{{ if ( or ( eq .Type "cv" ) ( .IsDescendant ( .GetPage "/cv/organisations" ) ) ) }} {{ if ( or ( eq .Type "cv" ) ( .IsDescendant ( .GetPage "/cv/organisations" ) ) ) }}
<script type="text/javascript" src="/js/google-charts.js"></script> {{ $googleChartsJS := resources.Get "js/google-charts.js" | fingerprint }}
<script id="Google-Charts-script" src="{{ $googleChartsJS.Permalink }}" integrity="{{ $googleChartsJS.Data.Integrity }}"></script>
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -75,12 +76,12 @@
timeline: { showBarLabels: true } timeline: { showBarLabels: true }
}; };
chart.draw(dataTable, options); chart.draw(dataTable, options);
} }
</script> </script>
{{ else }} {{ else }}
{{ $js := resources.Get "js/roles-chart.js" | resources.ExecuteAsTemplate "/js/render-roles-timeline.js" ( .GetPage "cv/roles" ) }} {{ $js := resources.Get "js/roles-chart.js" | resources.ExecuteAsTemplate "/js/render-roles-timeline.js" ( .GetPage "cv/roles" ) }}
<script type="text/javascript" src="{{ $js.RelPermalink }}"></script> <script src="{{ $js.RelPermalink }}"></script>
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -94,35 +95,38 @@
{{ end }} {{ end }}
{{ end }}> {{ end }}>
<div class="article-header__title-wrapper{{ if .Params.title_in_logo }} article-header__title-wrapper--no-title{{ end }}"> <div class="article-header__title-wrapper{{ if .Params.title_in_logo }} article-header__title-wrapper--no-title{{ end }}">
<h1 class="article-header__title">{{ if ( .Params.markup_title ) }}{{ .Params.markup_title | safeHTML }}{{ else }}{{ .Title }}{{ end }}</h1> <h2 class="article-header__title">{{ if ( .Params.markup_title ) }}{{ .Params.markup_title | safeHTML }}{{ else }}{{ .Title }}{{ end }}</h2>
</div> </div>
</div> </div>
</header> </header>
{{ else }} {{ else }}
<header class="site-content__header"> <header class="site-content__header">
<h1 class="page-title">{{ .Title | safeHTML }}.</h1> <h2 class="page-title">{{ .Title | safeHTML }}.</h2>
{{ .Content }} {{ .Content }}
{{ if eq .Type "cv" }} {{ if eq .Type "cv" }}
<nav class="page-header__minor-links"> <nav class="page-header__minor-links">
<ul> <ul>
{{ range ( where .Sections "Type" "not in" ( slice "cv/roles" ) ).ByTitle }} {{ range ( where .Sections "Type" "not in" ( slice "cv/roles" ) ).ByTitle }}
<li><a href="{{ .RelPermalink }}"><h2>{{ .Title }}</h2></a> <p>({{ len (where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) }})</p></li> <li><a href="{{ .RelPermalink }}"><h3>{{ .Title }}</h3></a> <p>({{ len (where ( where .Site.Pages "Section" "cv" ) "Parent.Title" .Title ) }})</p></li>
{{ end }} {{ end }}
</ul> </ul>
</nav> </nav>
{{ end }} {{ end }}
{{ if eq .Type "cv" }} {{ if eq .Type "cv" }}
<aside class="timeline__legend"> <aside class="timeline__legend">
<label for="legend__past">Past</label> <div>
<div id="legend__past"> <label for="legend__past">Past</label>
<span><div class="colour-square colour-square--unpaid-past"></div> <p>Unpaid</p></span> <div id="legend__past">
<span><div class="colour-square colour-square--paid-past"></div> <p>Paid</p></span> <span><div class="colour-square colour-square--unpaid-past"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-past"></div> <p>Paid</p></span>
</div>
</div> </div>
<br> <div>
<label for="legend__current">Current</label> <label for="legend__current">Current</label>
<div id="legend__current"> <div id="legend__current">
<span><div class="colour-square colour-square--unpaid-current"></div> <p>Unpaid</p></span> <span><div class="colour-square colour-square--unpaid-current"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-current"></div> <p>Paid</p></span> <span><div class="colour-square colour-square--paid-current"></div> <p>Paid</p></span>
</div>
</div> </div>
</aside> </aside>
{{ end }} {{ end }}
@ -131,7 +135,6 @@
{{ end }} {{ end }}
{{ define "main-body" }} {{ define "main-body" }}
<!-- TODO: Replace with check for 'cv/organsation' -->
{{ if .IsDescendant ( .GetPage "/cv/organisations" ) }} {{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
{{ $titles := slice ( .Title | plainify ) }} {{ $titles := slice ( .Title | plainify ) }}
{{ with .Sections }} {{ with .Sections }}
@ -146,16 +149,19 @@
<section id="roles-timeline"> <section id="roles-timeline">
<aside class="timeline__legend"> <aside class="timeline__legend">
<label for="legend__past">Past</label> <div>
<div id="legend__past"> <label for="legend__past">Past</label>
<span><div class="colour-square colour-square--unpaid-past"></div> <p>Unpaid</p></span> <div id="legend__past">
<span><div class="colour-square colour-square--paid-past"></div> <p>Paid</p></span> <span><div class="colour-square colour-square--unpaid-past"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-past"></div> <p>Paid</p></span>
</div>
</div> </div>
<br> <div>
<label for="legend__current">Current</label> <label for="legend__current">Current</label>
<div id="legend__current"> <div id="legend__current">
<span><div class="colour-square colour-square--unpaid-current"></div> <p>Unpaid</p></span> <span><div class="colour-square colour-square--unpaid-current"></div> <p>Unpaid</p></span>
<span><div class="colour-square colour-square--paid-current"></div> <p>Paid</p></span> <span><div class="colour-square colour-square--paid-current"></div> <p>Paid</p></span>
</div>
</div> </div>
</aside> </aside>
<div id="timeline" aria-label="Role Time" role="img">Javascript must be enabled to view this chart.</div> <div id="timeline" aria-label="Role Time" role="img">Javascript must be enabled to view this chart.</div>
@ -207,7 +213,7 @@
</article> </article>
{{ else if eq .Type "cv/organisations" . }} {{ else if eq .Type "cv/organisations" . }}
{{ with .GetPage "cv/organisations" }} {{ with .GetPage "cv/organisations" }}
{{ partial "items-table.html" . }} {{ partial "cv/organisations/items-table.html" . }}
{{ end }} {{ end }}
{{ else }} {{ else }}
{{ partial "items-grid.html" . }} {{ partial "items-grid.html" . }}
@ -219,10 +225,10 @@
{{ if .IsDescendant ( .GetPage "/cv/organisations" ) }} {{ if .IsDescendant ( .GetPage "/cv/organisations" ) }}
<footer class="site-content__footer"> <footer class="site-content__footer">
<section id="hierarchy"> <section id="hierarchy">
<h2 class="subheading">Hierarchy</h2> <h3 class="subheading">Hierarchy</h3>
{{ $.Scratch.Set "parents" ( slice ) }} {{ $.Scratch.Set "parents" ( slice ) }}
{{ partial "cv/organisations/recursive-parents.html" (dict "c" . "g" $ ) }} {{ partial "cv/organisations/recursive-parents.html" (dict "c" . "g" $ ) }}
{{- $parents := partial "reverse-slice.html" ( $.Scratch.Get "parents" ) -}} {{- $parents := partial "cv/organisations/reverse-slice.html" ( $.Scratch.Get "parents" ) -}}
{{- range $parents -}}<ul><li class="hierarchy-item hierarchy-item--parent"><a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a>{{- end -}} {{- range $parents -}}<ul><li class="hierarchy-item hierarchy-item--parent"><a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a>{{- end -}}
<ul><li class="hierarchy-item hierarchy-item--current">{{ .Title | safeHTML }}</li> <ul><li class="hierarchy-item hierarchy-item--current">{{ .Title | safeHTML }}</li>

View File

@ -2,12 +2,15 @@
{{ define "header" }} <!-- null --> {{ end }} {{ define "header" }} <!-- null --> {{ end }}
{{ define "article-class" }} <!-- null --> {{ end }}
{{ define "main-body" }} {{ define "main-body" }}
<h1 class="page-title"> <h1 class="page-title">
{{- with .Site.Params.pre_nominals }}<span class="pre-nominals">{{ . | safeHTML }}</span> {{ end -}} {{- with .Site.Params.pre_nominals }}<span class="pre-nominals p-honorific-prefix">{{ . | safeHTML }}</span> {{ end -}}
Ben Goldsworthy <span class="p-name">Ben Goldsworthy</span>
{{- with .Site.Params.post_nominals }} <span class="post-nominals">{{ . | safeHTML }}</span>{{ end -}} {{- with .Site.Params.post_nominals }} <span class="post-nominals p-honorific-suffix">{{ . | safeHTML }}</span>{{ end -}}
</h1> </h1>
<p class="p-note" style="display: none;">{{ .Site.Params.description }}</p>
{{ range ( where .Pages "Type" "in" site.Params.mainSections ).ByTitle }}<a href="{{ .RelPermalink }}"><h2>{{ .Title }}</h2></a>{{ end }} {{ range ( where .Pages "Type" "in" site.Params.mainSections ).ByTitle }}<a href="{{ .RelPermalink }}"><h2>{{ .Title }}</h2></a>{{ end }}
{{ end }} {{ end }}

View File

@ -2,7 +2,7 @@
featured_image: {{ .Name }} featured_image: {{ .Name }}
resources: resources:
- name: {{ .Name }} - name: {{ .Name }}
alt:
src: images/{{ .Name }}.* src: images/{{ .Name }}.*
params: params:
alt:
attr: attr:

View File

@ -0,0 +1,38 @@
{{- $itemType := default "CreativeWork" ( .Params.schemaType ) -}}
{{- if ( in $.Site.Data.itemtypes $itemType ) -}}
{{- with .Params.href -}}
<a href="{{ if eq . "asCite" }}{{ $.Params.cite }}{{ else }}{{ . }}{{ end }}">
{{- end -}}
<cite
class="cite{{ with .Params.citeStyle }} cite--{{ . }}{{ end }}"
itemscope
itemprop="citation"
itemtype="https://schema.org/{{- $itemType -}}"
{{- if .Params.titleLang -}}
lang="{{- .Params.titleLang -}}"
title="{{- .Params.titleTr -}}"
{{- end -}}>
{{- with .Params.cite -}}
<meta itemprop="url" content="{{ . }}">
{{- end -}}
<span itemprop="name">
{{- if .Params.titleLang -}}
<i lang="{{ .Params.titleLang }}" title="{{ .Params.titleTr }}">
{{- end -}}
{{- if .Params.shortTitle -}}
{{- .Params.shortTitle | markdownify | safeHTML -}}
{{- else -}}
{{- .Params.title | markdownify | safeHTML -}}
{{- end -}}
{{- if .Params.titleLang -}}
</i>
{{- end -}}
</span>{{- /**/ -}}
</cite>
{{- with .Params.href -}}
</a>
{{- end -}}
{{- else -}}
{{- warnf "Invalid Schema.org type value: %q (%q)" $itemType .Page.File.Path -}}
{{- end -}}

View File

@ -1,12 +1,14 @@
{{ "<!--" | safeHTML }} {{ "<!--" | safeHTML }}
{{ .Site.Title}} - {{ .Site.Params.tagline }} {{ .Site.Title}} - {{ .Site.Params.tagline }}
Page content written in {{ now.Format "2006" }} by {{ .Site.Author.name }} <{{ .Site.Author.email }}> This page was created by {{ .Site.Author.name }} <{{ .Site.Author.email }}>.
The date of creation and last modification should be available within the page
below.
To the extent possible under law, the author(s) have dedicated all copyright Unless stated otherwise, and to the extent possible under law, the author has
and related and neighboring rights to this software to the public domain dedicated all copyright and related and neighboring rights to this content to
worldwide. This software is distributed without any warranty. the public domain worldwide. This file is distributed without any warranty.
You should have received a copy of the CC0 Public Domain Dedication along See <http://creativecommons.org/publicdomain/zero/1.0/> for
with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. a copy of the CC0 Public Domain Dedication.
{{ "-->" | safeHTML }} {{ "-->" | safeHTML }}

View File

@ -1,8 +0,0 @@
<!--. is .c-->
<!--$ is .g-->
{{ $scratch := .g.Scratch }}
{{ with ( where ( where .g.Site.Pages "Type" "organisations" ) "Params.parent" .g.File.ContentBaseName ) }}
{{ $scratch.Add "children" ( slice . ) }}
{{ partial "cv/organisations/recursive-children.html" (dict "c" . "g" $.g ) }}
{{ end }}

View File

@ -1,5 +1,5 @@
{{ if gt ( len .content ) 4 }} {{ if gt ( len .content ) 4 }}
<details id="posts" class="org-items row"> <details id="{{ .section_title | anchorize }}" class="org-items row">
<summary> <summary>
<h2 class="subheading">{{ .section_title }} ({{ len .content }})</h2> <h2 class="subheading">{{ .section_title }} ({{ len .content }})</h2>
<div class="index"> <div class="index">
@ -15,7 +15,7 @@
</div> </div>
</details> </details>
{{ else }} {{ else }}
<div id="posts" class="org-items row"> <div id="{{ .section_title | anchorize }}" class="org-items row">
<h2 class="subheading">{{ .section_title }} ({{ len .content }})</h2> <h2 class="subheading">{{ .section_title }} ({{ len .content }})</h2>
<div class="index"> <div class="index">
{{ range first 4 .content }} {{ range first 4 .content }}

View File

@ -1,4 +1,4 @@
<li class="hierarchy-item hierarchy-item--child"><a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a> <li class="hierarchy-item hierarchy-item--child"><a href="{{ .RelPermalink }}">{{ with .Params.markup_title }}{{ . | safeHTML }}{{ else }}{{ .Title | safeHTML }}{{ end }}</a>
{{ range .Sections }}<ul> {{ range .Sections }}<ul>
{{ partial "cv/organisations/recursive-children.html" . }} {{ partial "cv/organisations/recursive-children.html" . }}
</ul>{{ end }} </ul>{{ end }}

View File

@ -1,8 +1,8 @@
<header class="site-header"> <header class="site-header h-card">
{{ block "header" . }} {{ block "header" . }}
<h1 class="site-header__title" itemprop="name"><a href="{{ .Site.Home.RelPermalink }}">{{ .Site.Title }}</a></h1> <h2 class="p-name site-header__title" itemprop="name"><a class="u-url" href="{{ .Site.Home.RelPermalink }}" rel="me author">{{ .Site.Title }}</a></h2>
<p class="site-header__tagline" itemprop="about">Views my own. Discussion ≠ endorsement. Do try this at home.</p> <p class="p-note site-header__tagline" itemprop="about">Views my own. Discussion ≠ endorsement. Do try this at home.</p>
<p class="site-header__icons">~ <a href="mailto:{{ $.Site.Author.email }}" rel="me">&#128231;</a> ~ <a href="{{ .Site.Params.codeURL }}">&#128187;</a> ~ <a href="/{{ .Site.Params.keyfile }}">&#128272;</a> ~ <a href="/index.xml"><img class="feed-icon" src="/images/feed-icon.png"></a> ~</p> <p class="site-header__icons">~ <a class="u-email" href="mailto:{{ $.Site.Author.email }}" rel="me">&#128231;</a> ~ <a class="u-url" href="{{ .Site.Params.codeURL }}" rel="me">&#128187;</a> ~ <a class="u-key" href="/{{ .Site.Params.keyfile }}" rel="me">&#128272;</a> ~ <a href="/index.xml" aria-label="{{ .Site.Title }} RSS feed"><img class="feed-icon" alt="RSS icon" src="{{ .Site.Params.feedIcon }}"></a> ~</p>
{{ partial "header/site-nav.html" . }} {{ partial "header/site-nav.html" . }}
{{ end }} {{ end }}
</header> </header>

View File

@ -1,7 +1,7 @@
<nav class="site-header__nav"> <nav class="site-header__nav">
<ul> <ul>
{{ range ( where .Site.Sections.ByTitle "Type" "in" site.Params.mainSections ) }} {{ range ( where .Site.Sections.ByTitle "Type" "in" site.Params.mainSections ) }}
<a href="{{ .RelPermalink }}"><li>{{ .Title | safeHTML }}</li></a> <li><a href="{{ .RelPermalink }}">{{ .Title | safeHTML }}</a></li>
{{ end }} {{ end }}
</ul> </ul>
</nav> </nav>

View File

@ -1,11 +1,11 @@
<a id="{{ .Slug }}" class="link--tile" href="{{ .RelPermalink }}" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting"> <a id="{{ .Title | urlize }}" class="h-entry u-url link--tile" href="{{ .RelPermalink }}" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<article class="item-tile lazy {{- with .Params.site }} item-tile--{{ . }}{{ end -}}" <article class="item-tile lazy {{- with .Params.site }} item-tile--{{ . }}{{ end -}}"
{{ if .Params.featured_image }} {{ if .Params.featured_image }}
{{ with .Resources.GetMatch .Params.featured_image }} {{ with .Resources.GetMatch .Params.featured_image }}
{{ if eq .MediaType.SubType "svg" }} {{ if eq .MediaType.SubType "svg" }}
style="background-image: url({{ .RelPermalink }})" style="background-image: url({{ .RelPermalink }})"
{{ else }} {{ else }}
{{ with .Resize "2000x webp" }} {{ with .Resize "1000x webp" }}
style="background-image: url({{ .RelPermalink }})" style="background-image: url({{ .RelPermalink }})"
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -14,22 +14,43 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
> >
<header class="item-tile__header"> {{ if .Params.featured_image -}}
{{ if ( or .Params.series .Params.published_in ) }} <img class="u-photo" style="display: none;" src="
<span class="item-tile__banner item-tile__banner--{{ if .Params.series }}series{{ else if .Params.published_in }}published-in{{ end}}"> {{- with .Resources.GetMatch .Params.featured_image -}}
{{- if .Params.series -}} {{- if eq .MediaType.SubType "svg" -}}
{{ .Params.series | safeHTML }} {{ .RelPermalink }}
{{- else if .Params.published_in -}} {{- else -}}
{{ .Params.published_in | safeHTML }} {{- with .Resize "1000x webp" -}}
{{- end -}} {{- .RelPermalink -}}
</span> {{- end -}}
{{ end }} {{- end -}}
<h1 class="item-tile__title{{ if gt ( len ( .Title | plainify ) ) 40 }} item-tile__title--long{{ end }}" itemprop="name"> {{- else -}}
<span role="text">{{ .Title | safeHTML }}</span> {{ .Params.featured_image }}
</h1> {{ end }}
{{ with .Params.subtitle }} " alt="
<p class="item-tile__subtitle">{{ . | safeHTML }}</p> {{- with .Resources.GetMatch .Params.featured_image -}}
{{ end }} {{- .Params.alt -}}
</header> {{- end -}}
</article> "
/>
{{- end }}
<header class="item-tile__header">
{{ if ( or .Params.series .Params.published_in ) }}
<span class="item-tile__banner item-tile__banner--{{ if .Params.series }}series{{ else if .Params.published_in }}published-in{{ end}}">
{{- if .Params.series -}}
{{ .Params.series | safeHTML }}
{{- else if .Params.published_in -}}
{{ .Params.published_in | safeHTML }}
{{- end -}}
</span>
{{ end }}
<h2 class="p-name item-tile__title{{ if gt ( len ( .Title | plainify ) ) 40 }} item-tile__title--long{{ end }}" itemprop="name">
{{ .Title | safeHTML }}
</h2>
{{ with .Params.subtitle }}
<p class="item-tile__subtitle">{{ . | safeHTML }}</p>
{{ end }}
<p style="display: none;">Published: <time class="dt-published" itemprop="datePublished" datetime="{{ .PublishDate | time.Format "2006-01-02T15:04:05-07:00" }}">{{ .PublishDate | time.Format "2006-01-02T15:04:05-07:00"}}</time></p>
</header>
</article>
</a> </a>

View File

@ -1,8 +1,10 @@
<section class="site-content__body"> <section class="site-content__body">
{{ range ( ( where .Pages "Draft" false ).GroupByPublishDate "2006" ) }} {{ range ( ( where .Pages "Draft" false ).GroupByPublishDate "2006" ) }}
{{ partial "header-tile.html" . }} {{ if ( not ( eq .Key "0001" ) ) }}
{{ range .Pages }} {{ partial "header-tile.html" . }}
{{ partial "item-tile.html" . }} {{ range .Pages }}
{{ partial "item-tile.html" . }}
{{ end }}
{{ end }} {{ end }}
{{ end }} {{ end }}
</section> </section>

View File

@ -1,61 +1,58 @@
{{ if fileExists ( path.Join $.Page.File.Dir "comments.md" ) }}
<!--<section id="comments">
<h2 class="subheading subheading--comments" id="comments">Comments</h2>
<ol>
{{ $file := path.Join $.Page.File.Dir "comments.md" | readFile }}
{{ $file | .RenderString }}
</ol>
</section>-->
{{ end }}
<footer class="site-content__footer"> <footer class="site-content__footer">
<h1>Meta</h1> <h2>Meta</h2>
{{- if .GetTerms "categories" -}} {{- if .GetTerms "categories" -}}
<section id="post-categories" class="article-footer__categories" aria-labelledby="post-categories-title"> <section id="post-categories" class="article-footer__categories" aria-labelledby="post-categories-title" itemprop="articleSection">
<h2 id="post-categories-title">Categories</h2> <h3 id="post-categories-title">Categories</h3>
<ul> <ul>
{{- range (.GetTerms "categories") -}} {{- range (.GetTerms "categories") -}}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle | safeHTML }}</a></li> <li class="p-category"><a href="{{ .RelPermalink }}">{{ .LinkTitle | safeHTML }}</a></li>
{{- end -}}
</ul>
</section>
{{- end -}}
{{- with .Params.internal_links -}}
<section class="article-footer__links">
<h2>Internal Links</h2>
<ul>
{{- range . -}}
{{ if eq ( printf "%T" . ) "map[string]interface {}" }}
<li><a href="{{ .link }}">{{ .title | safeHTML }}</a></li>
{{ else }}
<li><a href="{{ . }}">Link</a></li>
{{ end }}
{{- end -}}
</ul>
</section>
{{- end -}}
{{- with .Params.external_links -}}
<section class="article-footer__links">
<h2>External Links</h2>
<ul>
{{- range . -}}
{{ if eq ( printf "%T" . ) "map[string]interface {}" }}
<li><a href="{{ .link }}" rel="noopener noreferrer" target="_blank">{{ .title | safeHTML }}</a></li>
{{ else }}
<li><a href="{{ . }}" rel="noopener noreferrer" target="_blank">Link</a></li>
{{ end }}
{{- end -}} {{- end -}}
</ul> </ul>
</section> </section>
{{- end -}} {{- end -}}
{{- if .GetTerms "areas" -}} {{- if .GetTerms "areas" -}}
<section class="article-footer__links"> <section class="article-footer__links" itemprop="articleSection">
<h2 id="item-areas-title">Areas</h2> <h3 id="item-areas-title">Areas</h3>
<ul> <ul>
{{- range ( .GetTerms "areas" ).ByTitle -}} {{- range ( .GetTerms "areas" ).ByTitle -}}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li> <li class="p-category"><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{- end -}}
</ul>
</section>
{{- end -}}
{{- if .GetTerms "skills" -}}
<section class="article-footer__links" itemprop="articleSection">
<h3 id="item-skills-title">Skills</h3>
<ul>
{{- .Scratch.Set "i" 0 -}}
{{- range ( .GetTerms "skills" ).ByTitle -}}
{{- if hasPrefix .LinkTitle "CIISec/" -}}
<li class="p-category"><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a> <span class="level">{{ index $.Params.skills_ciisec_levels ( $.Scratch.Get "i" ) }}</span></li>
{{- $.Scratch.Add "i" 1 -}}
{{- else -}}
<li class="p-category"><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{- end -}}
{{- end -}} {{- end -}}
</ul> </ul>
</section> </section>
{{- end -}} {{- end -}}
{{- if .GetTerms "organisations" -}} {{- if .GetTerms "organisations" -}}
<section id="post-organisations" class="article-footer__organisations" aria-labelledby="post-organisations-title"> <section id="post-organisations" class="article-footer__organisations" aria-labelledby="post-organisations-title" itemprop="articleSection">
<h2 id="post-organisations-title">Organisations</h2> <h3 id="post-organisations-title">Organisations</h3>
<ul> <ul>
{{ $all_organisations := partialCached "get_all_organisations.html" . }} {{ $all_organisations := partialCached "get_all_organisations.html" . }}
<!-- TODO: Replace with hierarchy partial --> <!-- TODO: Replace with hierarchy partial -->
@ -75,17 +72,22 @@
{{- if .GetTerms "locations" -}} {{- if .GetTerms "locations" -}}
<section id="post-locations" class="article-footer__locations" aria-labelledby="post-locations-title"> <section id="post-locations" class="article-footer__locations" aria-labelledby="post-locations-title">
<h2 id="post-locations-title">Locations</h2> <h3 id="post-locations-title">Locations</h3>
<div id="mapdiv" style="width: 100%; height: 500px; margin: 0; display: block;"></div> <div id="map" style="width: 100%; height: 500px; margin: 0; display: block;"></div>
<ul style="display: none">
{{- range ( .GetTerms "locations" ).ByTitle -}}
<li class="p-location"><a href="{{ .RelPermalink }}">{{ .LinkTitle | safeHTML }}</a></li>
{{- end -}}
</ul>
</section> </section>
{{- end -}} {{- end -}}
{{- if .GetTerms "tags" -}} {{- if .GetTerms "tags" -}}
<section id="post-tags" class="article-footer__tags" aria-labelledby="post-tags-title"> <section id="post-tags" class="article-footer__tags" aria-labelledby="post-tags-title">
<h2 id="post-tags-title">Tags</h2> <h3 id="post-tags-title">Tags</h3>
<ul> <ul>
{{- range ( .GetTerms "tags" ).ByTitle -}} {{- range ( .GetTerms "tags" ).ByTitle -}}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle | safeHTML }}</a></li> <li class="p-category"><a href="{{ .RelPermalink }}">{{ .LinkTitle | safeHTML }}</a></li>
{{- end -}} {{- end -}}
</ul> </ul>
</section> </section>

View File

@ -1,5 +1,7 @@
<ul class="minor-links__years"> <ul class="minor-links__years">
{{ range ( ( where .Pages "Draft" false ).GroupByDate "2006" ) }} {{ range ( ( where .Pages "Draft" false ).GroupByDate "2006" ) }}
<li><a href="#items-{{ .Key }}">{{ .Key }}</a></li> {{ if ( not ( eq .Key "0001" ) ) }}
<li><a href="#items-{{ .Key }}">{{ .Key }}</a></li>
{{ end }}
{{ end }} {{ end }}
</ul> </ul>

View File

@ -2,7 +2,7 @@
{{ .Page.Title | plainify }} | {{ .Site.Title }} {{ .Page.Title | plainify }} | {{ .Site.Title }}
{{ end }} {{ end }}
{{ define "main-class" }}--section{{ end }} {{ define "main-class" }}--section layouts-portfolio-section{{ end }}
{{ define "footer-scripts" }} {{ define "footer-scripts" }}
<script> <script>
@ -61,13 +61,13 @@
{{ define "main-header" }} {{ define "main-header" }}
<header class="site-content__header"> <header class="site-content__header">
<h1 class="page-title">{{ .Title | safeHTML }}. <h2 class="page-title">{{ .Title | safeHTML }}.
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats -}}
<a href="{{ .RelPermalink }}"> <a href="{{ .RelPermalink }}">
<img class="feed-icon" src="/images/feed-icon.png"> <img class="feed-icon" src="{{ $.Site.Params.feedIcon }}">
</a> </a>
{{ end }} {{ end }}
</h1> </h2>
{{ .Content }} {{ .Content }}
{{ if ne .Type "portfolio" }} {{ if ne .Type "portfolio" }}
@ -84,7 +84,7 @@
<ul class="site-content__sections-list"> <ul class="site-content__sections-list">
{{ range .Sections.ByWeight }} {{ range .Sections.ByWeight }}
{{ if eq .Weight 10 }}<hr>{{ end }} {{ if eq .Weight 10 }}<hr>{{ end }}
<li><a href="{{ .RelPermalink }}"><h2>{{ .Title }}</h2></a> <p>({{ len .Pages }})</p></li> <li><a href="{{ .RelPermalink }}"><h3>{{ .Title }}</h3></a> <p>({{ len .Pages }})</p></li>
{{ end }} {{ end }}
</ul> </ul>
</article> </article>

View File

@ -1,2 +1,25 @@
# Internet Archive
# If I ever decomission this site, I will archive it first. Until then, no
# archiving.
User-agent: ia_archiver User-agent: ia_archiver
Disallow: / Disallow: /
# Common Crawl
User-agent: CCBot
Disallow: /
# OpenAI
User-agent: ChatGPT-User
Disallow: /
# Turn It In Plagiarism Checker
User-Agent: TurnitinBot
Disallow: /
# Name Protect
User-Agent: NPBot
Disallow: /
# Sly Search
User-Agent: SlySearch
Disallow: /

View File

@ -2,12 +2,12 @@
{{ .Type | singularize }}: &lsquo;{{ .Page.Title | plainify }}&rsquo; | {{ .Site.Title }} {{ .Type | singularize }}: &lsquo;{{ .Page.Title | plainify }}&rsquo; | {{ .Site.Title }}
{{ end }} {{ end }}
{{ define "main-class" }}--list{{ end}} {{ define "main-class" }}--list layouts-series-list{{ end}}
{{ define "main-header" }} {{ define "main-header" }}
<header class="site-content__header"> <header class="site-content__header">
<h1 class="page-title"> <h2 class="page-title">
{{- if eq .Title "Series" -}} {{- if eq .Title "Series" -}}
{{- .Title | safeHTML }}&rsquo; {{- .Title | safeHTML }}&rsquo;
{{- else -}} {{- else -}}
@ -18,7 +18,7 @@
<img class="feed-icon" src="{{ $.Site.Params.feedIcon }}"> <img class="feed-icon" src="{{ $.Site.Params.feedIcon }}">
</a> </a>
{{ end }} {{ end }}
</h1> </h2>
{{ .Content }} {{ .Content }}
</header> </header>
{{ end }} {{ end }}

View File

@ -1,32 +1,57 @@
{{ with where ( $.Site.Data.abbreviations .Params.abbr ) }} {{- /**/ -}}
{{ if ( or ( eq .Params.mode "shortTitle" ) ( eq .Params.mode "shortTitlePl" ) ) }}
<abbr class="abbr" title=" {{- $abbr := .Get 0 -}}
{{- if ( eq .Params.mode "shortTitle" ) }} {{- $mode := default "shortTitle" ( .Get 1 ) -}}
{{ .shortTitle }}
{{ else if ( eq .Params.mode "shortTitlePl" ) }} {{- with ( index $.Site.Data.abbreviations $abbr ) -}}
{{ if .shortTitlePl }}{{ .shortTitlePl }}{{ else }}{{ .shortTitle }}s{{ end }} <!-- Short titles (e.g. 'FBB') -->
{{ end -}} {{- if ( or ( eq $mode "shortTitle" ) ( eq $mode "shortTitlePl" ) ) -}}
"> <abbr
{{- if ( eq .Params.mode "shortTitle" ) }} class="abbr"
{{ .shortTitle }} title="
{{ else if ( eq .Params.mode "shortTitlePl" ) }} {{- if ( eq $mode "shortTitle" ) -}}
{{ if .shortTitlePl }}{{ .shortTitlePl }}{{ else }}{{ .shortTitle }}s{{ end }} {{- .longTitle -}}
{{ end -}} {{- else if ( eq $mode "shortTitlePl" ) -}}
</abbr> {{- with .longTitlePl -}}{{- . -}}{{- else -}}{{- .longTitle -}}s{{- end -}}
{{ else if ( or ( eq .Params.mode "longtitle" ) ( eq .Params.mode "longTitlePl" ) ) }} {{- end -}}
{{- if ( eq .Params.mode "longTitle" ) }} {{- if .lang }} [{{ .longTitleTrans }}]{{- end -}}
{{ .longTitle }} "
{{ else if ( eq .Params.mode "longTitlePl" ) }} {{- with .lang }} lang="{{ . }}"{{- end -}}
{{ if .longTitlePl }}{{ .longTitlePl }}{{ else }}{{ .longTitle }}s{{ end }} >
{{ end -}} {{- if ( eq $mode "shortTitle" ) -}}
{{ else if ( or ( eq .Params.mode "fullTitle" ) ( eq .Params.mode "fullTitlePl" ) ) }} {{- .shortTitle | safeHTML -}}
{{ if ( eq .Params.mode "fullTitle" ) }} {{- else if ( eq $mode "shortTitlePl" ) -}}
{{ .longTitle }}&nbsp;(<abbr>{{ .short }}</abbr>) {{- with .shortTitlePl -}}{{- . | safeHTML -}}{{- else -}}{{- .shortTitle | safeHTML -}}s{{- end -}}
{{ else if ( eq .Params.mode "fullTitlePl" ) }} {{- end -}}
{{- if .longTitlePl }}{{ .longTitlePl }}{{ else }}{{ .longTitle }}s{{ end -}} </abbr>{{- /**/ -}}
&nbsp;(<abbr>{{ if .shortPl }}{{ .shortPl }}{{ else }}{{ .short }}s{{ end }}</abbr>)
{{ end }} <!-- Long titles (e.g. 'foo bar baz') -->
{{ end }} {{- else if ( or ( eq $mode "longTitle" ) ( eq $mode "longTitlePl" ) ) -}}
{{ else }} {{- if ( eq $mode "longTitle" ) -}}
{{ errorf "No definition found for abbreviation '%q'" .Params.abbr }} {{- if .lang -}}<i lang="{{- .lang -}}" title="{{- $.longTitleTrans | safeHTML -}}">{{- end -}}
{{ end }} {{- .longTitle | safeHTML -}}
{{- if .lang -}}</i>{{- end -}}
{{- else if ( eq $mode "longTitlePl" ) -}}
{{- if .lang -}}<i lang="{{- .lang -}}" title="{{- with .longTitleTransPl -}}{{- . | safeHTML -}}{{- else -}}{{- .longTitleTrans | safeHTML -}}s{{- end -}}">{{- end -}}
{{- with .longTitlePl -}}{{- . | safeHTML -}}{{- else -}}{{- .longTitle | safeHTML -}}s{{- end -}}
{{- if .lang -}}</i>{{- end -}}{{- /**/ -}}
{{- end -}}
<!-- Full titles (e.g. 'foo bar baz (FBB)') -->
{{- else if ( or ( eq $mode "fullTitle" ) ( eq $mode "fullTitlePl" ) ) -}}
{{- if ( eq $mode "fullTitle" ) -}}
{{- if .lang -}}<i lang="{{- .lang -}}" title="{{- .longTitleTrans | safeHTML -}}">{{- end -}}
{{- .longTitle | safeHTML -}}
{{- if .lang -}}</i>{{- end -}}
&nbsp;(<abbr{{- with .lang }} lang="{{ . }}"{{- end -}}>{{- .shortTitle | safeHTML -}}</abbr>)
{{- else if ( eq $mode "fullTitlePl" ) -}}
{{- if .lang -}}<i lang="{{- .lang -}}" title="{{- with .longTitleTransPl -}}{{- . | safeHTML -}}{{- else -}}{{- .longTitleTrans | safeHTML -}}s{{- end -}}">{{- end -}}
{{- with .longTitlePl -}}{{- . | safeHTML -}}{{- else -}}{{- .longTitle | safeHTML -}}s{{- end -}}
{{- if .lang -}}</i>{{- end -}}
&nbsp;(<abbr{{- with .lang }} lang="{{ . }}"{{- end -}}>{{- with .shortTitlePl -}}{{- . | safeHTML -}}{{- else -}}{{- .shortTitle | safeHTML -}}s{{- end -}}</abbr>){{- /**/ -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- errorf "No definition found for abbreviation '%q'" $abbr -}}
{{- end -}}
{{- /**/ -}}

View File

@ -0,0 +1,35 @@
{{- if ( not .Params ) -}}
{{- errorf "No params provided for blockquote" -}}
{{- end -}}
<figure
class="figure--blockquote blockquote{{- if .Params.style }} blockquote--{{- .Params.style -}}{{- end -}}"
itemscope
itemtype="Quotation"
>
<blockquote
class="blockquote__body"
{{- if .Params.cite }} cite="{{ .Params.cite }}"{{- end -}}
>
{{- .Inner | .Page.RenderString -}}
</blockquote>
<figcaption class="blockquote__caption">
{{- if .Params.ibid -}}
<abbr lang="la" title="ibīdem [in the same place]">Ibid.</abbr>
{{- else -}}
<span itemprop="spokenByCharacter">{{- .Params.source | safeHTML -}}</span>
{{- if .Params.title -}}, <span itemprop="isBasedOn">{{- partial "cite.html" . -}}
{{- if .Params.titleSeries }} (
{{- .Scratch.SetInMap "Params" "title" .Params.titleSeries -}}
{{- .Scratch.SetInMap "Params" "titleLang" .Params.titleSeriesLang -}}
{{- .Scratch.SetInMap "Params" "titleTr" .Params.titleSeriesTr -}}
{{- .Scratch.SetInMap "Params" "cite" .Params.citeSeries -}}
{{- .Scratch.SetInMap "Params" "schemaType" .Params.schemaTypeSeries -}}
{{- .Scratch.SetInMap "parentCite" "Params" ( .Scratch.Get "Params" ) -}}
{{- partial "cite.html" ( .Scratch.Get "parentCite" ) -}}
{{- with .Params.numberSeries }}, {{ . | safeHTML -}}{{- end -}}
){{- end -}}</span>
{{- end -}}
{{- end -}}
</figcaption>
</figure>

View File

@ -1,16 +1 @@
{{ if .Params.href }} {{- /**/ -}}{{- partial "cite.html" . -}}{{- /**/ -}}
<a href="{{ if eq .Params.href "asCite" }}{{ .Params.cite }}{{ else }}{{ .Params.href }}{{end}}" target="_blank" rel="noopener noreferrer">
<cite class="cite {{ with .Params.citeStyle }}cite--{{ . }}{{ end }}"
{{ with .Params.cite }}cite="{{ . }}"{{ end }}
itemscope
itemtype="https://schema.org/
{{- with .Params.schemaType -}}
{{- . -}}
{{- else -}}
CreativeWork
{{- end -}}"
>
{{- .Params.title -}}
</cite>
</a>
{{ end }}

View File

@ -0,0 +1,13 @@
<li class="comment">
<article class="comment__body">
<header class="comment__header">
<h3 class="comment__author">{{ .Params.author }}</h3>
</header>
{{ .Inner | markdownify }}
<footer class="comment__footer">
{{ with .Params.source }}<p class="comment__source">Source: {{ . }}</p>{{ end }}
</footer>
</article>
</li>

View File

@ -3,12 +3,12 @@
{{- end -}} {{- end -}}
{{ $src := $.Page.Resources.GetMatch (.Get "src") }} {{ $src := $.Page.Resources.GetMatch (.Get "src") }}
{{ if ( not $src ) }} {{ if ( and ( not $src ) ( not ( .Get "chart-id" ) ) ) }}
{{- errorf "No Page Resource found for src '%v' for post '%v'" ( .Get "src" ) $.File.Path -}} {{- errorf "No Page Resource found for src '%q' (%q)" ( .Get "src" ) .Page.File.Path -}}
{{ end }} {{ end }}
{{ $linkedResource := $.Page.Resources.GetMatch (.Get "link") }} {{ $linkedResource := $.Page.Resources.GetMatch (.Get "link") }}
<figure class="article__figure{{ with .Get "class" }} {{ . }}{{ end }}"> <figure class="article__figure figure{{ with .Get "class" }} {{ . }}{{ end }}">
{{- with .Get "chart-id" -}} {{- with .Get "chart-id" -}}
<canvas class="figure__chart" id="{{ . }}"> <canvas class="figure__chart" id="{{ . }}">
You must enable Javascript to view this chart. You must enable Javascript to view this chart.
@ -18,56 +18,57 @@
{{- if $linkedResource }} {{- if $linkedResource }}
<a href="{{ $linkedResource.RelPermalink }}"{{ with .Get "rel" }} rel="{{ . }}"{{ end }}> <a href="{{ $linkedResource.RelPermalink }}"{{ with .Get "rel" }} rel="{{ . }}"{{ end }}>
{{ else }} {{ else }}
<a <a href="{{ .Get "link" }}">
href="{{ .Get "link" }}"
{{- with .Get "target" -}}
target="{{ . }}"
{{- else -}}
{{ warnf "No target defined for non-page resource link %q" ( .Get "link" ) -}}
{{- end -}}
{{- with .Get "rel" -}}
rel="{{ . }}"
{{- else -}}
{{- warnf "No rel defined for non-page resource link %q" ( .Get "link" ) -}}
{{- end -}}
>
{{ end }} {{ end }}
{{- end -}} {{- end -}}
{{- if eq $src.ResourceType "image" -}} {{- if eq $src.ResourceType "image" -}}
<picture class="figure__picture"> <picture class="figure__picture"
<img class="figure__image" itemprop="image">
<img class="u-photo figure__image"
{{ if ( or ( eq $src.MediaType.SubType "svg" ) ( eq $src.MediaType.SubType "gif" ) ) }} {{ if ( or ( eq $src.MediaType.SubType "svg" ) ( eq $src.MediaType.SubType "gif" ) ) }}
src="{{ $src.RelPermalink }}" src="{{ $src.RelPermalink }}"
{{ else }} {{ else }}
{{ with $src.Resize "1500x webp" }} {{ with $src.Resize "1200x webp" }}
src="{{ .RelPermalink }}" src="{{ .RelPermalink }}"
{{ end }} {{ end }}
width="{{ $src.Width }}" width="{{ $src.Width }}"
height="{{ $src.Height }}" height="{{ $src.Height }}"
{{ end }} {{ end }}
{{- if or ($src.Params.alt) (.Get "caption") }} {{- with $src.Params.alt }}
alt="{{ with $src.Params.alt }}{{ . }}{{ else }}{{ .Get "caption" | markdownify | plainify }}{{ end }}" alt="{{ . }}"
{{- end -}} {{- end -}}
{{- with $src.Params.title }} title="{{ . }}"{{ end -}} {{- with $src.Params.title }} title="{{ . }}" {{ end -}}
loading="lazy"
role="img"
/> />
</picture> </picture>
{{- else if eq $src.ResourceType "video" -}} {{- else if eq $src.ResourceType "video" -}}
{{- if eq $src.MediaType "video/ogg" -}} {{- if eq $src.MediaType "video/ogg" -}}
<audio class="figure__audio" controls> <audio class="u-audio figure__audio" itemprop="audio" controls>
<source src="{{ $src.RelPermalink }}" type="{{ $src.MediaType }}" /> <source src="{{ $src.RelPermalink }}" type="{{ $src.MediaType }}" />
<p>Your browser doesn't support embedded audio, but you can view the audio <a href="{{ $src.RelPermalink }}">here</a>.</p> <p>Your browser doesn't support embedded audio, <a href="{{ $src.RelPermalink }}">view the audio here</a>.</p>
</audio> </audio>
{{- else -}} {{- else -}}
<video class="figure__video" <video class="u-video figure__video"
controls controls
src="{{ $src.RelPermalink }}" src="{{ $src.RelPermalink }}"
poster="{{ if $src.Params.poster }}{{ .Get $src.Params.poster }}{{ else }}{{ warnf "No poster defined for resource %q" $src.RelPermalink }}{{ end }}" poster="
{{- if $src.Params.poster -}}
{{- $posterSrc := $.Page.Resources.GetMatch ( .Get $src.Params.poster ) -}}
{{- with $posterSrc.Resize "1200x webp" -}}
{{- .RelPermalink -}}
{{- end -}}
{{- else -}}
{{- warnf "No poster defined for resource %q (%q)" $src.RelPermalink .Page.File.Path -}}
{{- end -}}
"
itemprop="video"
> >
Your browser doesn't support embedded video, but you can view the video <a href="{{ $src.RelPermalink }}">here</a>. Your browser doesn't support embedded video, <a href="{{ $src.RelPermalink }}">view the video here</a>.
</video> </video>
{{- end -}} {{- end -}}
{{- else if or ( ne $src.ResourceType "image" ) ( ne $src.ResourceType "video" ) -}} {{- else if ( or ( ne $src.ResourceType "image" ) ( ne $src.ResourceType "video" ) ) -}}
{{- errorf "No handling for resource of type %q" $src.ResourceType -}} {{- errorf "No handling for resource of type %q" $src.ResourceType -}}
{{- end -}} {{- end -}}
{{- if .Get "link" }}</a>{{ end -}} {{- if .Get "link" }}</a>{{ end -}}
@ -77,20 +78,16 @@
<figcaption class="figure__caption{{ if not ( or ( .Get "caption" ) ( .Get "title" ) ) }} figure__caption--no-height{{ end }}"> <figcaption class="figure__caption{{ if not ( or ( .Get "caption" ) ( .Get "title" ) ) }} figure__caption--no-height{{ end }}">
{{- with $src -}} {{- with $src -}}
{{ if .Params.attrlink -}} {{ if .Params.attrlink -}}
<a class="figcaption__attrlink" href="{{ .Params.attrlink }}" <a class="figcaption__attrlink" href="{{ .Params.attrlink }}">
{{- with .Params.attrtarget }} target="{{ . }}"{{ end -}}
{{- with .Params.attrrel }} rel="{{ . }}"{{ end -}}
>
{{- end -}} {{- end -}}
{{- if .Params.attr -}}<p class="figcaption__attr">{{ .Params.attr | safeHTML }}{{ with .Params.attrlicence }} <span class="figcaption__licence">{{ . | safeHTML }}</span>{{ end }}</p>{{- end -}} {{- if .Params.attr -}}<p class="figcaption__attr">{{ .Params.attr | safeHTML }}{{ with .Params.attrlicence }} <span class="figcaption__licence">{{ . | safeHTML }}</span>{{ end }}</p>{{- end -}}
{{- if .Params.attrlink -}} {{- if .Params.attrlink -}}
</a> </a>
{{- end -}} {{- end -}}
{{- with .Params.title -}}<h4 class="figcaption__title">{{ . }}</h4>{{- end -}}
{{- end -}} {{- end -}}
{{- with .Get "title" -}}<h4 class="figcaption__title">{{ . }}</h4>{{- end -}} {{- with .Get "title" -}}<h4 class="figcaption__title">{{ . | markdownify | safeHTML }}</h4>{{- end -}}
{{- with .Get "caption" -}} {{- with .Get "caption" -}}
<p class="figcaption__caption">{{ . | markdownify }}</p> <p class="figcaption__caption">{{ . | markdownify | safeHTML }}</p>
{{- end -}} {{- end -}}
</figcaption> </figcaption>
{{- end -}} {{- end -}}

View File

@ -15,7 +15,7 @@
<div class="box"> <div class="box">
<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"> <figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
<div class="img" style="background-image: url('{{ $linkURL }}');" > <div class="img" style="background-image: url('{{ $linkURL }}');" >
<img itemprop="thumbnail" src="{{ $linkURL }}" alt="{{ $caption }}" /><!-- <img> hidden if in .gallery --> <img itemprop="thumbnail" loading="lazy" src="{{ $linkURL }}" alt="{{ $caption }}" /><!-- <img> hidden if in .gallery -->
</div> </div>
<a href="{{ $linkURL }}" itemprop="contentUrl"></a><!-- put <a> last so it is stacked on top --> <a href="{{ $linkURL }}" itemprop="contentUrl"></a><!-- put <a> last so it is stacked on top -->
</figure> </figure>

View File

@ -0,0 +1,81 @@
<figure class="figure--gallery gallery" itemscope itemtype="http://schema.org/ImageGallery">
{{- if or ( .Get "caption" ) ( .Get "title" ) -}}
<figcaption class="figure__caption gallery__caption{{ if not ( or ( .Get "caption" ) ( .Get "title" ) ) }} figure__caption--no-height{{ end }}">
{{- with .Get "title" -}}<h4 class="figcaption__title">{{ . | markdownify | safeHTML }}</h4>{{- end -}}
{{- with .Get "caption" -}}
<p class="figcaption__caption">{{ . | markdownify | safeHTML }}</p>
{{- end -}}
</figcaption>
{{- end -}}
{{- with (.Get "dir") -}}
<!-- If a directory was specified, generate figures for all of the images in the directory -->
{{- $images := $.Page.Resources.Match ( print . "/*" ) }}
{{- range $images -}}
{{- $caption := .Name | replaceRE "\\..*" "" | humanize }}<!-- humanized filename without extension -->
{{- $linkURL := print $.Page.Permalink ($.Get "dir") "/" .Name | absURL }}<!-- absolute URL to hi-res image -->
<figure class="figure gallery__figure" itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
<a href="{{ .RelPermalink }}" itemprop="contentUrl">
<picture class="figure__picture"
itemprop="image">
<img itemprop="thumbnail"
class="u-photo gallery__thumbnail"
{{ if ( or ( eq .MediaType.SubType "svg" ) ( eq .MediaType.SubType "gif" ) ) }}
src="{{ .RelPermalink }}"
{{ else }}
{{ with .Resize "600x webp" }}
src="{{ .RelPermalink }}"
{{ end }}
width="{{ .Width }}"
height="{{ .Height }}"
{{ end }}
{{- with .Params.alt }}
alt="{{ . }}"
{{- end -}}
{{- with .Params.title }} title="{{ . }}" {{ end -}}
loading="lazy"
>
</picture>
</a>
{{- if or ( .Params.title ) ( .Params.attr ) -}}
<figcaption class="figure__caption{{ if not .Params.title }} figure__caption--no-height{{ end }}">
{{ if .Params.attrlink -}}
<a class="figcaption__attrlink" href="{{ .Params.attrlink }}"
{{- with .Params.attrtarget }} target="{{ . }}"{{ end -}}
{{- with .Params.attrrel }} rel="{{ . }}"{{ end -}}
>
{{- end -}}
{{- if .Params.attr -}}<p class="figcaption__attr">{{ .Params.attr | safeHTML }}{{ with .Params.attrlicence }} <span class="figcaption__licence">{{ . | safeHTML }}</span>{{ end }}</p>{{- end -}}
{{- if .Params.attrlink -}}
</a>
{{- end -}}
{{- if .Params.href -}}
<a href="{{- if ( eq .Params.href "asCite" ) -}}{{ .Params.cite }}{{- else -}}{{ .Params.href }}{{- end -}}">
{{- end -}}
{{- if .Params.title -}}
<h5 class="figcaption__title">
{{- if .Params.titleLang -}}
<i lang="{{ .Params.titleLang }}" title="{{ .Params.titleTr }}">
{{- end -}}
{{ .Params.title | safeHTML }}
{{- if .Params.titleLang -}}
</i>
{{- end -}}
</h5>
{{- else -}}
{{- with .Params.href -}}
<p class="figcaption__title">Link</p>
{{- end -}}
{{- end -}}
{{- if .Params.href -}}
</a>
{{- end -}}
</figcaption>
{{- end -}}
</figure>
{{- end }}
{{- else -}}
<!-- If no directory was specified, include any figure shortcodes called within the gallery -->
{{ .Inner }}
{{- end }}
</figure>

View File

@ -1,4 +1,4 @@
{{ $resource := .Page.Resources.GetMatch ($.Get 0) }} {{- $resource := .Page.Resources.GetMatch ($.Get 0) -}}
{{ with $resource }} {{- with $resource -}}
{{ $resource.RelPermalink }} {{- $resource.RelPermalink -}}
{{ end }} {{- end -}}

View File

@ -0,0 +1,9 @@
{{- /**/ -}}
<q
itemscope
itemtype="Quotation"
{{- if .Params -}}{{- with .Params.cite }} cite="{{ . }}"{{- end -}}{{- if .Params.lang }} lang="{{ .Params.lang }}" title="{{ .Params.trans }}"{{- end -}}{{- end -}}>
{{- with .Params -}}{{- with .cite -}}<meta itemprop="isBasedOn" content="{{ . }}">{{- end -}}{{- end -}}
{{- .Inner | .Page.RenderString -}}
</q>
{{- /**/ -}}