Compare commits
11 Commits
12f273f54e
...
abe389fa77
Author | SHA1 | Date |
---|---|---|
Robert McGovern | abe389fa77 | |
Robert McGovern | fca031b84b | |
Robert McGovern | 97b354d31e | |
Robert McGovern | 8701676bb6 | |
Robert McGovern | 8d89c2d453 | |
Robert McGovern | 148fa78c0c | |
Robert McGovern | 3d3b18411f | |
Robert McGovern | 5b16d8f1bd | |
Robert McGovern | 93f13cc249 | |
Robert McGovern | 77e9103b8e | |
Robert McGovern | db259fd59b |
|
@ -0,0 +1,504 @@
|
||||||
|
const siteURL = "https://tarasis.net";
|
||||||
|
|
||||||
|
const fs = require("fs-extra");
|
||||||
|
const sass = require("sass");
|
||||||
|
const { promisify } = require("util");
|
||||||
|
const sassRender = promisify(sass.render);
|
||||||
|
const postcss = require("postcss");
|
||||||
|
const autoprefixer = require("autoprefixer");
|
||||||
|
const markdownIt = require("markdown-it");
|
||||||
|
const markdownItRenderer = new markdownIt();
|
||||||
|
const markdownItAnchor = require("markdown-it-anchor");
|
||||||
|
// const relativeUrl = require("eleventy-filter-relative-url");
|
||||||
|
const pluginTOC = require("eleventy-plugin-toc");
|
||||||
|
const moment = require("moment");
|
||||||
|
const description = require("eleventy-plugin-description");
|
||||||
|
const pluginRss = require("@11ty/eleventy-plugin-rss");
|
||||||
|
const UpgradeHelper = require("@11ty/eleventy-upgrade-help");
|
||||||
|
const xmlFiltersPlugin = require("eleventy-xml-plugin");
|
||||||
|
const yaml = require("js-yaml");
|
||||||
|
const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
|
||||||
|
|
||||||
|
|
||||||
|
const inspect = require("node:util").inspect;
|
||||||
|
|
||||||
|
// relativeURL
|
||||||
|
const path = require("path");
|
||||||
|
const urlFilter = require("@11ty/eleventy/src/Filters/Url");
|
||||||
|
const indexify = (url) => url.replace(/(\/[^.]*)$/, "$1index.html");
|
||||||
|
|
||||||
|
module.exports = function (eleventyConfig) {
|
||||||
|
let pathPrefix = "/";
|
||||||
|
|
||||||
|
eleventyConfig.addDataExtension("yaml", contents => yaml.load(contents));
|
||||||
|
eleventyConfig.addDataExtension("yml", contents => yaml.load(contents));
|
||||||
|
|
||||||
|
eleventyConfig.addPlugin(pluginRss);
|
||||||
|
//Blog excerpts
|
||||||
|
eleventyConfig.addPlugin(description);
|
||||||
|
// Eleventy Navigation (https://www.11ty.dev/docs/plugins/navigation/)
|
||||||
|
eleventyConfig.addPlugin(require("@11ty/eleventy-navigation"));
|
||||||
|
// Eleventy RSS Feed (https://www.11ty.dev/docs/plugins/rss/)
|
||||||
|
eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-rss"));
|
||||||
|
// Filter to generate a Table of Contents from page content
|
||||||
|
eleventyConfig.addPlugin(pluginTOC, {
|
||||||
|
tags: ["h2", "h3"],
|
||||||
|
wrapper: "div",
|
||||||
|
});
|
||||||
|
// TODO https://www.npmjs.com/package/eleventy-plugin-meta-generator
|
||||||
|
// Eleventy Syntax Highlighting (https://www.11ty.dev/docs/plugins/syntaxhighlight/)
|
||||||
|
// eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-syntaxhighlight"));
|
||||||
|
eleventyConfig.addPlugin(syntaxHighlight, {
|
||||||
|
|
||||||
|
alwaysWrapLineHighlights: true,
|
||||||
|
// Change which Eleventy template formats use syntax highlighters
|
||||||
|
// templateFormats: ["*"], // default
|
||||||
|
|
||||||
|
// Use only a subset of template types (11ty.js added in v4.0.0)
|
||||||
|
// templateFormats: ["liquid", "njk", "md", "11ty.js"],
|
||||||
|
|
||||||
|
// init callback lets you customize Prism
|
||||||
|
// init: function({ Prism }) {
|
||||||
|
// Prism.languages.myCustomLanguage = /* */;
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Added in 3.1.1, add HTML attributes to the <pre> or <code> tags
|
||||||
|
preAttributes: {
|
||||||
|
tabindex: 0,
|
||||||
|
|
||||||
|
// Added in 4.1.0 you can use callback functions too
|
||||||
|
"data-language": function({ language, content, options }) {
|
||||||
|
return language;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
codeAttributes: {},
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addPlugin(xmlFiltersPlugin);
|
||||||
|
|
||||||
|
// Custom Collections
|
||||||
|
eleventyConfig.addCollection("pages", (collection) =>
|
||||||
|
collection.getFilteredByGlob("./src/_pages/**/*")
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("posts", (collection) =>
|
||||||
|
collection
|
||||||
|
.getFilteredByGlob("./src/_posts/**/*")
|
||||||
|
.filter(
|
||||||
|
(item) => item.data.draft !== true && item.date <= new Date()
|
||||||
|
)
|
||||||
|
.reverse()
|
||||||
|
.map((cur, i, all) => {
|
||||||
|
cur.data["siblings"] = {
|
||||||
|
next: all[i - 1],
|
||||||
|
prev: all[i + 1],
|
||||||
|
};
|
||||||
|
return cur;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("projects", (collection) =>
|
||||||
|
collection
|
||||||
|
.getFilteredByGlob("./src/projects/**/*")
|
||||||
|
.sort((a, b) => a.data.weight - b.data.weight)
|
||||||
|
);
|
||||||
|
|
||||||
|
// eleventyConfig.addCollection("posts", function (collectionApi) {
|
||||||
|
// return collectionApi.getFilteredByGlob("./src/_posts/**/*.md");
|
||||||
|
// });
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("drafts", (collection) =>
|
||||||
|
collection
|
||||||
|
.getFilteredByGlob("./src/_drafts/**/*")
|
||||||
|
.sort((a, b) => a.data.weight - b.data.weight)
|
||||||
|
) ;
|
||||||
|
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("tags", (collection) => {
|
||||||
|
let tags = new Set();
|
||||||
|
|
||||||
|
collection.getAll().forEach((item) => {
|
||||||
|
if ("tags" in item.data) {
|
||||||
|
if (item.data.tags != undefined) {
|
||||||
|
for (const tag of item.data.tags) {
|
||||||
|
tags.add(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return [...tags];
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addCollection("categories", (collection) => {
|
||||||
|
let categories = new Set();
|
||||||
|
|
||||||
|
collection.getAll().forEach((item) => {
|
||||||
|
if ("category" in item.data) {
|
||||||
|
if (item.data.category != undefined) {
|
||||||
|
for (const category of item.data.category) {
|
||||||
|
categories.add(category);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return [...categories];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Filters
|
||||||
|
|
||||||
|
// eleventyConfig.addFilter("markdownify", (str) => {
|
||||||
|
// return markdownItRenderer.renderInline(str);
|
||||||
|
// });
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("markdownify", (string) => {
|
||||||
|
return md.renderInline(string);
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addNunjucksFilter("markdownify", (str) => md.render(str));
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("jsonify", (variable) => JSON.stringify(variable));
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("slugify", (str) =>
|
||||||
|
require("slugify")(str, {
|
||||||
|
lower: true,
|
||||||
|
replacement: "-",
|
||||||
|
remove: /[*+~.·,()''`´%!?¿:@]/g,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("where", (array, key, value) =>
|
||||||
|
array.filter((item) => {
|
||||||
|
const keys = key.split(".");
|
||||||
|
const reducedKey = keys.reduce((object, key) => object[key], item);
|
||||||
|
|
||||||
|
return reducedKey === value ? item : false;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("date", (date, format = "") =>
|
||||||
|
require("moment")(date).format(format)
|
||||||
|
);
|
||||||
|
|
||||||
|
eleventyConfig.addLiquidFilter("toUTCString", (date) => {
|
||||||
|
const utc = date.toUTCString();
|
||||||
|
return moment.utc(utc).format("MMMM Do YYYY");
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("number_of_words", numberOfWords);
|
||||||
|
|
||||||
|
// eleventyConfig.addShortcode("where_exp", function (item, exp) {
|
||||||
|
// console.log(exp);
|
||||||
|
// return eval(exp);
|
||||||
|
// });
|
||||||
|
eleventyConfig.addFilter("where_exp", function (value) {
|
||||||
|
// where_exp function
|
||||||
|
return value.hidden != true;
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("inspect", function (obj = {}) {
|
||||||
|
return inspect(obj, {sorted: true});
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addFilter('group_by', groupBy)
|
||||||
|
|
||||||
|
eleventyConfig.addLayoutAlias(
|
||||||
|
"archive-taxonomy",
|
||||||
|
"layouts/archive-taxonomy.html"
|
||||||
|
);
|
||||||
|
eleventyConfig.addLayoutAlias("archive", "layouts/archive.html");
|
||||||
|
eleventyConfig.addLayoutAlias("categories", "layouts/categories.html");
|
||||||
|
eleventyConfig.addLayoutAlias("category", "layouts/category.html");
|
||||||
|
eleventyConfig.addLayoutAlias("collection", "layouts/collection.html");
|
||||||
|
eleventyConfig.addLayoutAlias("compress", "layouts/compress.html");
|
||||||
|
eleventyConfig.addLayoutAlias("default", "layouts/default.html");
|
||||||
|
eleventyConfig.addLayoutAlias("home", "layouts/home.html");
|
||||||
|
eleventyConfig.addLayoutAlias("posts", "layouts/posts.html");
|
||||||
|
eleventyConfig.addLayoutAlias("search", "layouts/search.html");
|
||||||
|
eleventyConfig.addLayoutAlias("single", "layouts/single.html");
|
||||||
|
eleventyConfig.addLayoutAlias("splash", "layouts/splash.html");
|
||||||
|
eleventyConfig.addLayoutAlias("tag", "layouts/tag.html");
|
||||||
|
eleventyConfig.addLayoutAlias("tags", "layouts/tags.html");
|
||||||
|
eleventyConfig.addLayoutAlias("gallery", "layouts/gallery");
|
||||||
|
eleventyConfig.addLayoutAlias("drafts", "layouts/drafts");
|
||||||
|
|
||||||
|
// Passthrough copy
|
||||||
|
// don't use .gitignore (allows compiling sass to css into a monitored folder WITHOUT committing it to repo)
|
||||||
|
eleventyConfig.setUseGitIgnore(false);
|
||||||
|
|
||||||
|
//Copy CNAME
|
||||||
|
eleventyConfig.addPassthroughCopy("src/CNAME");
|
||||||
|
|
||||||
|
// Processing configuration
|
||||||
|
eleventyConfig.addPassthroughCopy("src/favicon.ico");
|
||||||
|
eleventyConfig.addPassthroughCopy("src/admin");
|
||||||
|
eleventyConfig.addPassthroughCopy("src/assets");
|
||||||
|
// eleventyConfig.addPassthroughCopy({ "src/_sass": "assets/css" });
|
||||||
|
|
||||||
|
eleventyConfig.addShortcode("post_url", (collection, slug) => {
|
||||||
|
try {
|
||||||
|
if (collection.length < 1) {
|
||||||
|
throw "Collection appears to be empty";
|
||||||
|
}
|
||||||
|
if (!Array.isArray(collection)) {
|
||||||
|
throw "Collection is an invalid type - it must be an array!";
|
||||||
|
}
|
||||||
|
if (typeof slug !== "string") {
|
||||||
|
throw "Slug is an invalid type - it must be a string!";
|
||||||
|
}
|
||||||
|
|
||||||
|
const found = collection.find((p) => p.fileSlug == slug);
|
||||||
|
if (found === 0 || found === undefined) {
|
||||||
|
throw `${slug} not found in specified collection.`;
|
||||||
|
} else {
|
||||||
|
return found.url;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(
|
||||||
|
`RMCG:An error occured while searching for the url to ${slug}. Details:`,
|
||||||
|
e
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set section
|
||||||
|
|
||||||
|
// Configure BrowserSync to serve the 404 page for missing files
|
||||||
|
eleventyConfig.setBrowserSyncConfig({
|
||||||
|
callbacks: {
|
||||||
|
ready: (_err, browserSync) => {
|
||||||
|
const content_404 = fs.readFileSync("dist/404.html");
|
||||||
|
|
||||||
|
browserSync.addMiddleware("*", (_req, res) => {
|
||||||
|
// render the 404 content instead of redirecting
|
||||||
|
res.write(content_404);
|
||||||
|
res.end();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.setBrowserSyncConfig({
|
||||||
|
files: "./dist/assets/styles/**/*.css",
|
||||||
|
});
|
||||||
|
|
||||||
|
// Merge Data (https://www.11ty.dev/docs/data-deep-merge/)
|
||||||
|
eleventyConfig.setDataDeepMerge(true);
|
||||||
|
|
||||||
|
eleventyConfig.setFrontMatterParsingOptions({
|
||||||
|
excerpt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.setLibrary("md", markdownIt().use(markdownItAnchor));
|
||||||
|
|
||||||
|
eleventyConfig.setLiquidOptions({
|
||||||
|
// dynamicPartials: false,
|
||||||
|
// strictVariables: false,
|
||||||
|
// strictFilters: false,
|
||||||
|
jekyllInclude: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Markdown Configuration
|
||||||
|
const md = require("markdown-it")({
|
||||||
|
html: true,
|
||||||
|
breaks: true,
|
||||||
|
linkify: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
eleventyConfig.setLibrary(
|
||||||
|
"md",
|
||||||
|
md
|
||||||
|
.use(require("markdown-it-attrs"))
|
||||||
|
.use(require("markdown-it-container"), "", {
|
||||||
|
validate: () => true,
|
||||||
|
render: (tokens, idx) => {
|
||||||
|
if (tokens[idx].nesting === 1) {
|
||||||
|
const classList = tokens[idx].info.trim();
|
||||||
|
return `<div ${classList && `class="${classList}"`}>`;
|
||||||
|
} else {
|
||||||
|
return `</div>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.use(require("markdown-it-fontawesome"))
|
||||||
|
.use(require("markdown-it-footnote"))
|
||||||
|
);
|
||||||
|
|
||||||
|
// override markdown-it-footnote anchor template to use a different unicode character
|
||||||
|
md.renderer.rules.footnote_anchor = (tokens, idx, options, env, slf) => {
|
||||||
|
var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
|
||||||
|
|
||||||
|
if (tokens[idx].meta.subId > 0) {
|
||||||
|
id += ":" + tokens[idx].meta.subId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ⇑ with escape code to prevent display as Apple Emoji on iOS */
|
||||||
|
return (
|
||||||
|
' <a href="#fnref' +
|
||||||
|
id +
|
||||||
|
'" class="footnote-backref">\u21d1\uFE0E</a>'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
//for upgrade sanity
|
||||||
|
//eleventyConfig.addPlugin(UpgradeHelper);
|
||||||
|
|
||||||
|
// eleventyConfig.addWatchTarget("./assets/css/");
|
||||||
|
// eleventyConfig.addTransform(
|
||||||
|
// "sass",
|
||||||
|
// async function sassTransform(content, outputPath) {
|
||||||
|
// if (outputPath?.endsWith(".css")) {
|
||||||
|
// const { css } = await sassRender({
|
||||||
|
// data: content,
|
||||||
|
// outputStyle: "compressed",
|
||||||
|
// precision: 3,
|
||||||
|
// });
|
||||||
|
// return css;
|
||||||
|
// }
|
||||||
|
// return content;
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
|
||||||
|
eleventyConfig.addFilter("relative_url", relativeURLALT);
|
||||||
|
eleventyConfig.addFilter("absolute_url", absoluteUrl);
|
||||||
|
|
||||||
|
return {
|
||||||
|
templateFormats: ["html", "liquid", "md", "njk"],
|
||||||
|
|
||||||
|
pathPrefix,
|
||||||
|
|
||||||
|
environment: "production",
|
||||||
|
|
||||||
|
// absolute_url: "https://tarasis.net/",
|
||||||
|
passthroughFileCopy: true,
|
||||||
|
|
||||||
|
dir: {
|
||||||
|
input: "src",
|
||||||
|
includes: "_includes",
|
||||||
|
data: "_data",
|
||||||
|
output: "dist",
|
||||||
|
// input: "./", // Equivalent to Jekyll's source property
|
||||||
|
// output: "./_site", // Equivalent to Jekyll's destination property
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function numberOfWords(content) {
|
||||||
|
return content.split(/\s+/g).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function relativeURL(url, pathPrefix = undefined) {
|
||||||
|
if (pathPrefix !== undefined) {
|
||||||
|
// Fall back on original url filter if pathPrefix is set.
|
||||||
|
return urlFilter(url, pathPrefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pathPrefix == undefined && this.page == undefined) {
|
||||||
|
return urlFilter(url, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Look up the url of the current rendering page, which is accessible via
|
||||||
|
// `this`.
|
||||||
|
//console.log(this); // rmcg
|
||||||
|
|
||||||
|
// rmcg - removed ctx from this.ctx.page.url
|
||||||
|
const currentDir = this.page.url;
|
||||||
|
const filteredUrl = urlFilter(url, "/");
|
||||||
|
|
||||||
|
// Make sure the index.html is expressed.
|
||||||
|
const indexUrl = indexify(filteredUrl);
|
||||||
|
|
||||||
|
// Check that the url doesn't specify a protocol.
|
||||||
|
const u = new URL(indexUrl, "make-relative://");
|
||||||
|
if (u.protocol !== "make-relative:") {
|
||||||
|
// It has a protocol, so just return the filtered URL output.
|
||||||
|
return filteredUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the relative path, or `index.html` if it's the same as the current
|
||||||
|
// page's directory.
|
||||||
|
const relativePath = `${
|
||||||
|
path.relative(currentDir, u.pathname) || "index.html"
|
||||||
|
}`;
|
||||||
|
return relativePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just `{{ '/something' | url }}` will return the relative path to
|
||||||
|
* `/something/index.html`.
|
||||||
|
*
|
||||||
|
* `{{ '/something.with.dots' | url }}` will return the relative path to
|
||||||
|
* `/something.with.dots`.
|
||||||
|
*
|
||||||
|
* @param {string} url the URL to transform
|
||||||
|
* @param {string} [pathPrefix] optional path prefix to force an absolute URL
|
||||||
|
* @returns {string} resulting URL
|
||||||
|
*/
|
||||||
|
function relativeURLALT(url, pathPrefix = undefined) {
|
||||||
|
pathPrefix = "/";
|
||||||
|
// console.log(url);
|
||||||
|
// console.log(pathPrefix);
|
||||||
|
// console.log(this.page);
|
||||||
|
if (pathPrefix !== undefined) {
|
||||||
|
// Fall back on original url filter if pathPrefix is set.
|
||||||
|
return urlFilter(url, pathPrefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pathPrefix == undefined && this.page == undefined) {
|
||||||
|
// console.log("dropping out");
|
||||||
|
return urlFilter(url, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Look up the url of the current rendering page, which is accessible via
|
||||||
|
// `this`.
|
||||||
|
console.log(this);
|
||||||
|
const currentDir = this.page.url;
|
||||||
|
const filteredUrl = urlFilter(url, "/");
|
||||||
|
|
||||||
|
// Make sure the index.html is expressed.
|
||||||
|
const indexUrl = indexify(filteredUrl);
|
||||||
|
|
||||||
|
// Check that the url doesn't specify a protocol.
|
||||||
|
const u = new URL(indexUrl, "make-relative://");
|
||||||
|
if (u.protocol !== "make-relative:") {
|
||||||
|
// It has a protocol, so just return the filtered URL output.
|
||||||
|
return filteredUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the relative path, or `index.html` if it's the same as the current
|
||||||
|
// page's directory.
|
||||||
|
const relativePath = `${
|
||||||
|
path.relative(currentDir, u.pathname) || "index.html"
|
||||||
|
}`;
|
||||||
|
return relativePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
function absoluteUrl(url) {
|
||||||
|
if (url !== undefined) {
|
||||||
|
return siteURL + url
|
||||||
|
} else {
|
||||||
|
return siteURL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function groupBy(array, key) {
|
||||||
|
const get = entry => key.split('.').reduce((acc, key) => acc[key], entry)
|
||||||
|
|
||||||
|
const map = array.reduce((acc, entry) => {
|
||||||
|
const value = get(entry)
|
||||||
|
|
||||||
|
if (typeof acc[value] === 'undefined') {
|
||||||
|
acc[value] = []
|
||||||
|
}
|
||||||
|
|
||||||
|
acc[value].push(entry)
|
||||||
|
return acc
|
||||||
|
}, {})
|
||||||
|
|
||||||
|
return Object.keys(map).reduce(
|
||||||
|
(acc, key) => [...acc, { name: key, items: map[key] }],
|
||||||
|
[]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
|
@ -9,3 +9,81 @@ _site
|
||||||
.jekyll-metadata
|
.jekyll-metadata
|
||||||
|
|
||||||
**/*/premdesigns
|
**/*/premdesigns
|
||||||
|
|
||||||
|
# ---> Eleventy
|
||||||
|
|
||||||
|
#_site
|
||||||
|
|
||||||
|
#package-lock.json
|
||||||
|
css/main.css.map
|
||||||
|
|
||||||
|
# dependency directories
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# config
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# caches
|
||||||
|
.cache
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# eleventy gulp build
|
||||||
|
/dist
|
||||||
|
|
||||||
|
*.log
|
||||||
|
npm-debug.*
|
||||||
|
*.scssc
|
||||||
|
*.swp
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
dist
|
||||||
|
src/_includes/css
|
||||||
|
|
||||||
|
# my chosen output directory.
|
||||||
|
www
|
||||||
|
|
||||||
|
#### From FrontEnd Mentor gitignore. Just to avoid accidentally uploading design files
|
||||||
|
#
|
||||||
|
# Avoid accidental upload of the Sketch and Figma design files
|
||||||
|
#####################################################
|
||||||
|
## Please do not remove lines 5 and 6 - thanks! 🙂 ##
|
||||||
|
#####################################################
|
||||||
|
*.sketch
|
||||||
|
*.fig
|
||||||
|
|
||||||
|
# Avoid accidental XD upload if you convert the design file
|
||||||
|
###############################################
|
||||||
|
## Please do not remove line 12 - thanks! 🙂 ##
|
||||||
|
###############################################
|
||||||
|
*.xd
|
||||||
|
.prettierignore
|
||||||
|
|
||||||
|
# ---> macOS
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
---
|
|
||||||
title: A short look back on my Camino de Santiago journey
|
|
||||||
|
|
||||||
tags:
|
|
||||||
- life
|
|
||||||
- camino
|
|
||||||
- caminodesantiago
|
|
||||||
category: camino
|
|
||||||
---
|
|
||||||
|
|
||||||
A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to fly to France to walk the Camino de Santiago.
|
|
||||||
|
|
||||||
Ostensibly the point of the walk was to find myself, to seek out something that had been missing in me for a long time. But it was also about trying to make a decision about what I was doing and my relationship with my wife.
|
|
||||||
|
|
||||||
I kinda failed at the latter point. I found while walking that often my brain zoned out and I wasn't thinking about what I should have been. I did however find something that (mostly) made me feel good.
|
|
||||||
|
|
||||||
My original intention was to take time along the way to stop for an extra day here and there to see places that I was walking through, but it never really happened. I kind of regret that, although the point of the walk was not to be a tourist.
|
|
||||||
|
|
||||||
I had fully intended to go back on the Camino this year (2020), but the unthinkable happened and the world entered a state of lock down that for now has no end in sight. The intention was to walk (mostly) different routes this time, because there are a heck of a lot of them.
|
|
||||||
|
|
||||||
I didn't want to end when I did, I wasn't ready to back and quite honestly, I'm still not ready to.
|
|
||||||
|
|
||||||
## Some Stats, Dates, and Figures
|
|
||||||
|
|
||||||
- I walked 2 camino's. The Camino Frances & Camino Portuguese (Porto; More Costal Route + Espiritual Variente)
|
|
||||||
- I flew from Hamburg to France on the 28th of May 2019
|
|
||||||
- I started the Camino de Santiago, leaving Saint-Jean-Pied-de-Port on the 31st of May 2019
|
|
||||||
- I finished the Camino on the 8th July 2019, when I arrived in Santiago de Compostela
|
|
||||||
- I left the next day for Finisterre
|
|
||||||
- I arrived in Finisterre on the 11th of July 2019
|
|
||||||
- I start the Camino Portuguese on the 18th July 2019
|
|
||||||
- I arrived in Santiago de Compostela on the 31st of July 2019
|
|
||||||
- I flew back to Hamburg from Porto on the 6th of August 2019 (walking 14km to the airport from Porto)
|
|
||||||
|
|
||||||
- I took 3 rest days (3rd, 8th and 23rd of June). The first 2 where not because I actually needed to rest, but because I had the wrong shoes and they where messing my feet up. (which gave me a couple of nasty blisters)
|
|
||||||
- I bought a new pair of shoes on the evening of the 7th of June, which I then used the rest of the way.
|
|
||||||
- I sent roughly 2kg of stuff home on the 8th of June, stuff I thought I needed but didn't
|
|
||||||
|
|
||||||
Originally I was track my steps / distances using a Fitbit HR and my iPhone 6S. However because of issues charging the HR (connector area broke), I gave up using it on July 6th.
|
|
||||||
|
|
||||||
In total I walked at least 1643km. This was a combination of the daily Camino walks, plus any extra after I arrived at my destination.
|
|
||||||
|
|
||||||
| Section | Stage Distance Walked | Total walked that stage |
|
|
||||||
| ------- | -------- | ------- |
|
|
||||||
| Camino Frances | 793.04km | 972.3km |
|
|
||||||
| Santiago to Finisterre | 96.16km | 105.9km |
|
|
||||||
| Camino Portuguese | 299.14km | 402.9km |
|
|
||||||
| **Totals:** | **1,188.34km** | **1,481.1km** |
|
|
||||||
|
|
||||||
The remaining 160km was days walking around Finisterre, Muxia, Santiago and Porto.
|
|
||||||
|
|
||||||
## Photos
|
|
||||||
|
|
||||||
Over the next little while I am going to post photos from my journey, more than I did at the time on Instagram (which had a limit of 10 per post).
|
|
||||||
|
|
||||||
I'll try and add context to them, and a bit about where they where taken.
|
|
||||||
|
|
||||||
Anyway, enough for now. I intend, body willing, to locally repeat the Camino distances over the next 2 months.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
layout: post
|
|
||||||
title: pretty-terminal-configs
|
|
||||||
---
|
|
|
@ -0,0 +1,742 @@
|
||||||
|
0a1
|
||||||
|
>
|
||||||
|
13d13
|
||||||
|
<
|
||||||
|
19a20,21
|
||||||
|
> <meta property="article:author" content="Robert McGovern">
|
||||||
|
>
|
||||||
|
22c24
|
||||||
|
< <meta property="og:type" content="website">
|
||||||
|
---
|
||||||
|
> <meta property="og:type" content="article">
|
||||||
|
26c28
|
||||||
|
< <meta property="og:url" content="http://localhost:4000/">
|
||||||
|
---
|
||||||
|
> <meta property="og:url" content="index.html">
|
||||||
|
33c35
|
||||||
|
< <meta property="og:image" content="http://localhost:4000/assets/images/bio-photo.jpg">
|
||||||
|
---
|
||||||
|
> <meta property="og:image" content="index.html">
|
||||||
|
40c42
|
||||||
|
< <meta name="twitter:url" content="http://localhost:4000/">
|
||||||
|
---
|
||||||
|
> <meta name="twitter:url" content="index.html">
|
||||||
|
43,46c45,46
|
||||||
|
< <meta name="twitter:card" content="summary">
|
||||||
|
<
|
||||||
|
< <meta name="twitter:image" content="http://localhost:4000/assets/images/bio-photo.jpg">
|
||||||
|
<
|
||||||
|
---
|
||||||
|
> <meta name="twitter:card" content="summary_large_image">
|
||||||
|
> <meta name="twitter:image" content="index.html">
|
||||||
|
52a53
|
||||||
|
> <meta property="article:published_time" content="2020-03-05T11:10:24+00:00">
|
||||||
|
56a58
|
||||||
|
>
|
||||||
|
62c64
|
||||||
|
< <link rel="canonical" href="http://localhost:4000/">
|
||||||
|
---
|
||||||
|
> <link rel="canonical" href="index.html">
|
||||||
|
66d67
|
||||||
|
< <link rel="next" href="http://localhost:4000/page2/">
|
||||||
|
68d68
|
||||||
|
<
|
||||||
|
75c75
|
||||||
|
< "url": "http://localhost:4000/"
|
||||||
|
---
|
||||||
|
> "url": "index.html"
|
||||||
|
90c90
|
||||||
|
< <link href="/feed.xml" type="application/atom+xml" rel="alternate" title="TDN: RMCG Feed">
|
||||||
|
---
|
||||||
|
> <link href="feed.xml" type="application/atom+xml" rel="alternate" title="TDN: RMCG Feed">
|
||||||
|
101c101
|
||||||
|
< <link rel="stylesheet" href="/assets/css/main.css">
|
||||||
|
---
|
||||||
|
> <link rel="stylesheet" href="assets/css/main.css">
|
||||||
|
107c107
|
||||||
|
< <script src="/assets/js/progress.js"></script>
|
||||||
|
---
|
||||||
|
> <script src="assets/js/progress.js"></script>
|
||||||
|
109c109
|
||||||
|
< <script src="/assets/js/scroll-to-top.js"></script>
|
||||||
|
---
|
||||||
|
> <script src="assets/js/scroll-to-top.js"></script>
|
||||||
|
118c118
|
||||||
|
< <body class="layout--home">
|
||||||
|
---
|
||||||
|
> <body class="layout--">
|
||||||
|
138c138
|
||||||
|
< <a class="site-logo" href="/"><img src="/assets/images/apple-touch-icon.png" alt="TDN: RMCG"></a>
|
||||||
|
---
|
||||||
|
> <a class="site-logo" href="index.html"><img src="assets/images/apple-touch-icon.png" alt="TDN: RMCG"></a>
|
||||||
|
140c140
|
||||||
|
< <a class="site-title" href="/">
|
||||||
|
---
|
||||||
|
> <a class="site-title" href="index.html">
|
||||||
|
144,152c144
|
||||||
|
< <ul class="visible-links"><li class="masthead__menu-item">
|
||||||
|
< <a href="/year-archive/">Posts</a>
|
||||||
|
< </li><li class="masthead__menu-item">
|
||||||
|
< <a href="/tags/">Tags</a>
|
||||||
|
< </li><li class="masthead__menu-item">
|
||||||
|
< <a href="/categories/">Categories</a>
|
||||||
|
< </li><li class="masthead__menu-item">
|
||||||
|
< <a href="/about/">About</a>
|
||||||
|
< </li></ul>
|
||||||
|
---
|
||||||
|
> <ul class="visible-links"></ul>
|
||||||
|
174a167
|
||||||
|
>
|
||||||
|
177,178d169
|
||||||
|
< <div class="sidebar sticky">
|
||||||
|
<
|
||||||
|
181,331d171
|
||||||
|
< <div itemscope itemtype="https://schema.org/Person">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="author__avatar">
|
||||||
|
<
|
||||||
|
< <img src="/assets/images/bio-photo.jpg" alt="Robert McGovern" itemprop="image">
|
||||||
|
<
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="author__content">
|
||||||
|
<
|
||||||
|
< <h3 class="author__name" itemprop="name">Robert McGovern</h3>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="author__bio" itemprop="description">
|
||||||
|
< <p>Wannabe field researcher for the Hitchhikers Guide to the Galaxy</p>
|
||||||
|
<
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
< <div class="author__urls-wrapper">
|
||||||
|
< <button class="btn btn--inverse">Follow</button>
|
||||||
|
< <ul class="author__urls social-icons">
|
||||||
|
<
|
||||||
|
< <li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place">
|
||||||
|
< <i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">ZZ9 Plural Z Alpha</span>
|
||||||
|
< </li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://tarasis.net" rel="nofollow noopener noreferrer"><i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">Website</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="mailto:rob@tarasis.net" rel="nofollow noopener noreferrer"><i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">Email</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.linkedin.com/in/robertmcgovern/" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">Linkedin</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://github.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">Github</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://twitter.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.facebook.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span class="label">Facebook</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://instagram.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.flickr.com/photos/tarasis/" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.youtube.com/user/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">Youtube</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://soundcloud.com/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">Soundcloud</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.last.fm/user/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-lastfm" aria-hidden="true"></i><span class="label">Last.FM</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.reddit.com/user/tarasis" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span class="label">Reddit</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="https://www.pinterest.com/tarasis/" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <!--
|
||||||
|
< <li>
|
||||||
|
< <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
< <i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link
|
||||||
|
< </a>
|
||||||
|
< </li>
|
||||||
|
< -->
|
||||||
|
< </ul>
|
||||||
|
< </div>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
338d177
|
||||||
|
< <h3 class="archive__subtitle">Recent posts</h3>
|
||||||
|
340a180
|
||||||
|
> <h3 class="archive__subtitle">Recent Posts</h3>
|
||||||
|
343d182
|
||||||
|
< <div class="entries-list">
|
||||||
|
345d183
|
||||||
|
<
|
||||||
|
349,384c187
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2022/10/15/frontend-mentor-challenge-deployment/" rel="permalink">What happens when I finish a Frontend Mentor Challenge (or how I build and deploy an 11ty site)
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 4 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">I’ve been doing challenges from Frontend Mentor as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.
|
||||||
|
<
|
||||||
|
< R...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
---
|
||||||
|
> <div class="entries-list">
|
||||||
|
386,421d188
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2020/05/27/camino-de-santiago/" rel="permalink">A short look back on my Camino de Santiago journey
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 3 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to...</p>
|
||||||
|
< </article>
|
||||||
|
424,425d190
|
||||||
|
<
|
||||||
|
<
|
||||||
|
429,812d193
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2020/04/21/learning-web-development/" rel="permalink">Learning Web Development
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 2 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">I mentioned in the goals post, one of the things I am aiming to do is to start learning web development.
|
||||||
|
<
|
||||||
|
< I was well aware that what falls under the banner o...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2020/04/20/swift-coding-challenge-2/" rel="permalink">Swift Coding Challenges: Challenge 2
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 1 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">Second one within 13 hours, good lord, that would never do.
|
||||||
|
<
|
||||||
|
< So this challenge was to test if a string matched against the reverse of itself. Basically a pal...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2020/04/20/swift-coding-challenges/" rel="permalink">Swift Coding Challenges: Challenge 1
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< less than 1 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">As an effort to improve and challenge myself I got a copy of Paul Hudson’s Swift Coding Challenges book and I’m going to work through it and post my thoughts...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2020/04/17/goals/" rel="permalink">Goals
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 6 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">Long time, no write.
|
||||||
|
<
|
||||||
|
< A lot has changed in my life, not least of which is that I am no longer a stay at home dad or living in Germany. For now I am back home...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2019/06/17/Day21/" rel="permalink">Day 21
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 2 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">Day 21 of trip
|
||||||
|
<
|
||||||
|
< Day Frómista to Carrión de los Condes. 18.88km according to app. 19.18km with Phone GPS (minor detour). Was walking quickly. Which Fitbit doe...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2019/06/15/Day19/" rel="permalink">Day 19
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 3 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">Day 19 of trip
|
||||||
|
<
|
||||||
|
< Day 16 of walk.
|
||||||
|
<
|
||||||
|
< Today was Hornillos del Camino to Castrojeriz (19.47km)
|
||||||
|
<
|
||||||
|
< Weather: cool, grey and minimal sun (nice to walk in)
|
||||||
|
<
|
||||||
|
< Terrain: lig...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2019/06/14/Day-2018/" rel="permalink">Day 18 - drawn to stop
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 4 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">Day 18
|
||||||
|
<
|
||||||
|
< Burgos to Hornillos del Camino ~22km
|
||||||
|
<
|
||||||
|
< Weather was pleasant but cool
|
||||||
|
<
|
||||||
|
< Terrain most flat, gravel & roads
|
||||||
|
<
|
||||||
|
< Woke up at 3am freezing and no blanket to...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <div class="list__item">
|
||||||
|
< <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<
|
||||||
|
< <h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
<
|
||||||
|
< <a href="/2019/06/13/Day-2017/" rel="permalink">Day 17
|
||||||
|
< </a>
|
||||||
|
<
|
||||||
|
< </h2>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="page__meta">
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <span class="page__meta-readtime">
|
||||||
|
< <i class="far fa-clock" aria-hidden="true"></i>
|
||||||
|
<
|
||||||
|
< 3 minute read
|
||||||
|
<
|
||||||
|
< </span>
|
||||||
|
<
|
||||||
|
< </p>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <p class="archive__item-excerpt" itemprop="description">Day 17
|
||||||
|
<
|
||||||
|
< So it’s day 17 of the trip and day 14 of the Camino (day 12 if you take out 2 rest days)
|
||||||
|
<
|
||||||
|
< Woke at 6 pretty impressed that I didn’t hear the 2 women i...</p>
|
||||||
|
< </article>
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< </div>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <nav class="pagination">
|
||||||
|
<
|
||||||
|
< <ul>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="#" class="disabled"><span aria-hidden="true">Previous</span></a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="#" class="disabled current">1</a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="/page2/">2</a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="/page3/">3</a></li>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
< <li><a href="/page2/">Next</a></li>
|
||||||
|
<
|
||||||
|
< </ul>
|
||||||
|
< </nav>
|
||||||
|
<
|
||||||
|
<
|
||||||
|
<
|
||||||
|
841,842d221
|
||||||
|
< <li><strong>Follow:</strong></li>
|
||||||
|
<
|
||||||
|
869c248
|
||||||
|
< <li><a href="/feed.xml"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
|
||||||
|
---
|
||||||
|
> <li><a href="feed.xml"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
|
||||||
|
874c253
|
||||||
|
< <div class="page__footer-copyright">© 2023 Robert McGovern. Powered by <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
||||||
|
---
|
||||||
|
> <div class="page__footer-copyright">© %2023 Robert McGovern. Powered by <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
||||||
|
880c259
|
||||||
|
< <script src="/assets/js/main.min.js"></script>
|
||||||
|
---
|
||||||
|
> <script src="assets/js/main.min.js"></script>
|
||||||
|
884a264
|
||||||
|
>
|
||||||
|
886,889c266,268
|
||||||
|
< <script src="/assets/js/lunr/lunr.min.js"></script>
|
||||||
|
< <script src="/assets/js/lunr/lunr-store.js"></script>
|
||||||
|
< <script src="/assets/js/lunr/lunr-en.js"></script>
|
||||||
|
<
|
||||||
|
---
|
||||||
|
> <script src="assets/js/lunr/lunr.min.js"></script>
|
||||||
|
> <script src="assets/js/lunr/lunr-store.js"></script>
|
||||||
|
> <script src="assets/js/lunr/lunr-en.js"></script>
|
|
@ -0,0 +1,60 @@
|
||||||
|
// Credits 🙇 for original ideas to:
|
||||||
|
// Fork of https://github.com/vimtor/eleventy-plugin-external-links
|
||||||
|
// css.gg SVG icon https://github.com/astrit/css.gg/blob/master/icons/svg/external.svg
|
||||||
|
|
||||||
|
const { parse, HTMLElement } = require("node-html-parser");
|
||||||
|
const { extname } = require("path");
|
||||||
|
|
||||||
|
module.exports = eleventyConfig => {
|
||||||
|
const options = {
|
||||||
|
name: "external-links",
|
||||||
|
regex: new RegExp("^(([a-z]+:)|(//))", "i"),
|
||||||
|
target: "_blank",
|
||||||
|
rel: "noopener noreferrer nofollow",
|
||||||
|
extensions: [".html"],
|
||||||
|
};
|
||||||
|
|
||||||
|
eleventyConfig.addTransform(options.name, (content, outputPath) => {
|
||||||
|
if (outputPath && options.extensions.includes(extname(outputPath))) {
|
||||||
|
const root = parse(content);
|
||||||
|
const links = root.querySelectorAll("a");
|
||||||
|
links
|
||||||
|
.filter(link => {
|
||||||
|
const href = link.getAttribute("href");
|
||||||
|
return (
|
||||||
|
href &&
|
||||||
|
options.regex.test(href) &&
|
||||||
|
!link.getAttribute("rel") &&
|
||||||
|
!link.getAttribute("target")
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.forEach(link => {
|
||||||
|
link.setAttribute("target", options.target);
|
||||||
|
link.setAttribute("rel", options.rel);
|
||||||
|
|
||||||
|
const srText = new HTMLElement("span", { class: "sr-only" });
|
||||||
|
srText.textContent = "(opens in a new window)";
|
||||||
|
|
||||||
|
const icon = new HTMLElement(
|
||||||
|
"svg",
|
||||||
|
{},
|
||||||
|
`viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"`
|
||||||
|
);
|
||||||
|
icon.set_content(`
|
||||||
|
<path
|
||||||
|
d="M15.6396 7.02527H12.0181V5.02527H19.0181V12.0253H17.0181V8.47528L12.1042 13.3892L10.6899 11.975L15.6396 7.02527Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M10.9819 6.97473H4.98193V18.9747H16.9819V12.9747H14.9819V16.9747H6.98193V8.97473H10.9819V6.97473Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>`);
|
||||||
|
link.appendChild(srText);
|
||||||
|
link.appendChild(icon);
|
||||||
|
});
|
||||||
|
|
||||||
|
return root.toString();
|
||||||
|
}
|
||||||
|
return content;
|
||||||
|
});
|
||||||
|
};
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
layout: home
|
|
||||||
author_profile: true
|
|
||||||
---
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,17 @@
|
||||||
|
Notes from transitioning blog from Jekyll to 11ty, but still using Jekyll theme Minimal Mistakes.
|
||||||
|
|
||||||
|
Just to see if it reduces that cpu usage. Nope.
|
||||||
|
|
||||||
|
Removed from site.json
|
||||||
|
|
||||||
|
```
|
||||||
|
"post_template": "post",
|
||||||
|
"page_template": "page",
|
||||||
|
"draft_template": "draft"
|
||||||
|
```
|
||||||
|
|
||||||
|
hacked pathPrefix into relativeURLAlt function because for some reason it isn't being picked up from the above return.
|
||||||
|
|
||||||
|
author_profile.html for adding mastodon
|
||||||
|
|
||||||
|
invalid date format https://github.com/11ty/eleventy/issues/413
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
"name": "tarasis.net",
|
||||||
|
"version": "2.0.0",
|
||||||
|
"description": "Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"build:sass": "sass --load-path=src/_sass --style=compressed dist/assets/css/tocompile.scss dist/assets/css/main.css",
|
||||||
|
"watch:eleventy": "eleventy --serve",
|
||||||
|
"build:eleventy": "eleventy",
|
||||||
|
"clean": "rm -rf dist",
|
||||||
|
"postbuild": "",
|
||||||
|
"start": "npm-run-all clean build:eleventy build:sass --parallel watch:*",
|
||||||
|
"build": "npm-run-all clean build:eleventy build:sass",
|
||||||
|
"debug": "DEBUG=Eleventy:* eleventy"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "forgejo@git.tarasis.net:tarasis/tarasis.net.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"website",
|
||||||
|
"blog",
|
||||||
|
"11ty",
|
||||||
|
"jekyll"
|
||||||
|
],
|
||||||
|
"author": "Robert McGovern et all",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@11ty/eleventy": "^2.0.0-beta.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@11ty/eleventy-navigation": "^0.3.5",
|
||||||
|
"@11ty/eleventy-plugin-rss": "^1.2.0",
|
||||||
|
"@11ty/eleventy-plugin-syntaxhighlight": "^4.2.0",
|
||||||
|
"@11ty/eleventy-upgrade-help": "^2.0.5",
|
||||||
|
"autoprefixer": "^10.4.13",
|
||||||
|
"const": "^1.0.0",
|
||||||
|
"eleventy-load": "^0.3.1",
|
||||||
|
"eleventy-load-css": "^0.3.0",
|
||||||
|
"eleventy-load-file": "^0.1.0",
|
||||||
|
"eleventy-load-html": "^0.1.1",
|
||||||
|
"eleventy-load-sass": "^0.1.2",
|
||||||
|
"eleventy-plugin-description": "^0.1.5",
|
||||||
|
"eleventy-plugin-toc": "^1.1.5",
|
||||||
|
"eleventy-xml-plugin": "^0.1.0",
|
||||||
|
"fs-extra": "^11.1.0",
|
||||||
|
"js-yaml": "^4.1.0",
|
||||||
|
"lightningcss-cli": "^1.18.0",
|
||||||
|
"markdown-it": "^13.0.1",
|
||||||
|
"markdown-it-anchor": "^8.6.6",
|
||||||
|
"markdown-it-attrs": "^4.1.6",
|
||||||
|
"markdown-it-container": "^3.0.0",
|
||||||
|
"markdown-it-fontawesome": "^0.3.0",
|
||||||
|
"markdown-it-footnote": "^3.0.3",
|
||||||
|
"markdownify": "^0.1.0",
|
||||||
|
"moment": "^2.29.4",
|
||||||
|
"npm-run-all": "^4.1.5",
|
||||||
|
"postcss": "^8.4.21",
|
||||||
|
"sass": "^1.57.1",
|
||||||
|
"slugify": "^1.6.5"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
*.sublime-project
|
||||||
|
*.sublime-workspace
|
||||||
|
vendor
|
||||||
|
.asset-cache
|
||||||
|
.bundle
|
||||||
|
.jekyll-assets-cache
|
||||||
|
.sass-cache
|
||||||
|
assets/js/plugins
|
||||||
|
assets/js/_main.js
|
||||||
|
assets/js/vendor
|
||||||
|
Capfile
|
||||||
|
CHANGELOG
|
||||||
|
CHANGELOG.md
|
||||||
|
config
|
||||||
|
Gemfile
|
||||||
|
Gruntfile.js
|
||||||
|
gulpfile.js
|
||||||
|
LICENSE
|
||||||
|
log
|
||||||
|
node_modules
|
||||||
|
package.json
|
||||||
|
package-lock.json
|
||||||
|
Rakefile
|
||||||
|
README
|
||||||
|
README.md
|
||||||
|
tmp
|
||||||
|
test
|
||||||
|
docs
|
||||||
|
_site
|
||||||
|
#index.html
|
||||||
|
#/docs # ignore Minimal Mistakes /docs
|
||||||
|
#test # ignore Minimal Mistakes /test
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
# main links
|
# main links
|
||||||
main:
|
main:
|
||||||
# - title: ""
|
# - title: "Posts"
|
||||||
# url: /docs/quick-start-guide/
|
# url: /year-archive/
|
||||||
- title: "Posts"
|
|
||||||
url: /year-archive/
|
|
||||||
- title: "Tags"
|
- title: "Tags"
|
||||||
url: /tags/
|
url: /tags/
|
||||||
- title: "Categories"
|
- title: "Categories"
|
|
@ -0,0 +1,364 @@
|
||||||
|
{
|
||||||
|
"theme": "minimal-mistakes-jekyll",
|
||||||
|
"minimal_mistakes_skin": "neon",
|
||||||
|
"locale": "en-US",
|
||||||
|
"title": "TDN: RMCG",
|
||||||
|
"title_separator": "-",
|
||||||
|
"name": "Robert McGovern",
|
||||||
|
"description": "Random Things",
|
||||||
|
"url": "https://tarasis.net",
|
||||||
|
"baseurl": "",
|
||||||
|
"repository": null,
|
||||||
|
"teaser": null,
|
||||||
|
"logo": "/assets/images/apple-touch-icon.png",
|
||||||
|
"masthead_title": "",
|
||||||
|
"subtitle": "👨💻 🚶♂️ 💭 🤯",
|
||||||
|
"breadcrumbs": false,
|
||||||
|
"breadcrumb_home_label": "Home",
|
||||||
|
"breadcrumb_separator": ">",
|
||||||
|
"words_per_minute": 200,
|
||||||
|
"head_scripts": [
|
||||||
|
"/assets/js/progress.js",
|
||||||
|
"/assets/js/scroll-to-top.js"
|
||||||
|
],
|
||||||
|
"comments": {
|
||||||
|
"provider": "disqus",
|
||||||
|
"disqus": {
|
||||||
|
"shortname": "tarasis"
|
||||||
|
},
|
||||||
|
"discourse": {
|
||||||
|
"server": null
|
||||||
|
},
|
||||||
|
"facebook": {
|
||||||
|
"appid": null,
|
||||||
|
"num_posts": null,
|
||||||
|
"colorscheme": null
|
||||||
|
},
|
||||||
|
"utterances": {
|
||||||
|
"theme": null,
|
||||||
|
"issue_term": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"staticman": {
|
||||||
|
"allowedFields": [
|
||||||
|
"name",
|
||||||
|
"email",
|
||||||
|
"url",
|
||||||
|
"message"
|
||||||
|
],
|
||||||
|
"branch": null,
|
||||||
|
"commitMessage": "New comment by {fields.name}",
|
||||||
|
"filename": "comment-{@timestamp}",
|
||||||
|
"format": "yml",
|
||||||
|
"moderation": true,
|
||||||
|
"path": "_data/comments/{options.slug}",
|
||||||
|
"requiredFields": [
|
||||||
|
"name",
|
||||||
|
"email",
|
||||||
|
"message"
|
||||||
|
],
|
||||||
|
"transforms": {
|
||||||
|
"email": "md5"
|
||||||
|
},
|
||||||
|
"generatedFields": {
|
||||||
|
"date": {
|
||||||
|
"type": "date",
|
||||||
|
"options": {
|
||||||
|
"format": "iso8601"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"endpoint": null
|
||||||
|
},
|
||||||
|
"atom_feed": {
|
||||||
|
"path": null
|
||||||
|
},
|
||||||
|
"search": false,
|
||||||
|
"search_full_content": true,
|
||||||
|
"search_provider": "lunr",
|
||||||
|
"algolia": {
|
||||||
|
"application_id": "F5FF4IDLYX",
|
||||||
|
"index_name": "tarasis-blog",
|
||||||
|
"search_only_api_key": "ed656902b5bdd356f885bf9d99635fc1",
|
||||||
|
"powered_by": true
|
||||||
|
},
|
||||||
|
"google_site_verification": null,
|
||||||
|
"bing_site_verification": null,
|
||||||
|
"yandex_site_verification": null,
|
||||||
|
"twitter": {
|
||||||
|
"username": "tarasis"
|
||||||
|
},
|
||||||
|
"facebook": {
|
||||||
|
"username": "tarasis",
|
||||||
|
"app_id": null,
|
||||||
|
"publisher": null
|
||||||
|
},
|
||||||
|
"og_image": "/assets/images/bio-photo.jpg",
|
||||||
|
"social": {
|
||||||
|
"type": null,
|
||||||
|
"name": null,
|
||||||
|
"links": null
|
||||||
|
},
|
||||||
|
"analytics": {
|
||||||
|
"provider": false,
|
||||||
|
"google": {
|
||||||
|
"tracking_id": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"name": "Robert McGovern",
|
||||||
|
"avatar": "/assets/images/bio-photo.jpg",
|
||||||
|
"bio": "Wannabe field researcher for the Hitchhikers Guide to the Galaxy",
|
||||||
|
"location": "ZZ9 Plural Z Alpha",
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"label": "Website",
|
||||||
|
"icon": "fas fa-fw fa-link",
|
||||||
|
"url": "https://tarasis.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Email",
|
||||||
|
"icon": "fas fa-fw fa-envelope-square",
|
||||||
|
"url": "mailto:rob@tarasis.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Linkedin",
|
||||||
|
"icon": "fab fa-fw fa-linkedin",
|
||||||
|
"url": "https://www.linkedin.com/in/robertmcgovern/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Github",
|
||||||
|
"icon": "fab fa-fw fa-github",
|
||||||
|
"url": "https://github.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Twitter",
|
||||||
|
"icon": "fab fa-fw fa-twitter-square",
|
||||||
|
"url": "https://twitter.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Mastodon",
|
||||||
|
"icon": "fab fa-fw fa-mastodon",
|
||||||
|
"url": "https://social.tarasis.net/@tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Facebook",
|
||||||
|
"icon": "fab fa-fw fa-facebook",
|
||||||
|
"url": "https://www.facebook.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Instagram",
|
||||||
|
"icon": "fab fa-fw fa-instagram",
|
||||||
|
"url": "https://instagram.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Flickr",
|
||||||
|
"icon": "fab fa-fw fa-flickr",
|
||||||
|
"url": "https://www.flickr.com/photos/tarasis/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Youtube",
|
||||||
|
"icon": "fab fa-fw fa-youtube",
|
||||||
|
"url": "https://www.youtube.com/user/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Soundcloud",
|
||||||
|
"icon": "fab fa-fw fa-soundcloud",
|
||||||
|
"url": "https://soundcloud.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Last.FM",
|
||||||
|
"icon": "fab fa-fw fa-lastfm",
|
||||||
|
"url": "https://www.last.fm/user/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Reddit",
|
||||||
|
"icon": "fab fa-fw fa-reddit",
|
||||||
|
"url": "https://www.reddit.com/user/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pinterest",
|
||||||
|
"icon": "fab fa-fw fa-pinterest",
|
||||||
|
"url": "https://www.pinterest.com/tarasis/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"label": "Email",
|
||||||
|
"icon": "fas fa-fw fa-envelope-square",
|
||||||
|
"url": "mailto:rob@tarasis.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Twitter",
|
||||||
|
"icon": "fab fa-fw fa-twitter-square",
|
||||||
|
"url": "https://twitter.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Mastodon",
|
||||||
|
"icon": "fab fa-fw fa-mastodon",
|
||||||
|
"url": "https://social.tarasis.net/@tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Facebook",
|
||||||
|
"icon": "fab fa-fw fa-facebook",
|
||||||
|
"url": "https://www.facebook.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "GitHub",
|
||||||
|
"icon": "fab fa-fw fa-github",
|
||||||
|
"url": "https://github.com/tarasis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Instagram",
|
||||||
|
"icon": "fab fa-fw fa-instagram",
|
||||||
|
"url": "https://instagram.com/tarasis"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
".htaccess",
|
||||||
|
"_pages"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"*.sublime-project",
|
||||||
|
"*.sublime-workspace",
|
||||||
|
"vendor",
|
||||||
|
".asset-cache",
|
||||||
|
".bundle",
|
||||||
|
".jekyll-assets-cache",
|
||||||
|
".jekyll-cache",
|
||||||
|
".sass-cache",
|
||||||
|
"assets/js/plugins",
|
||||||
|
"assets/js/_main.js",
|
||||||
|
"assets/js/vendor",
|
||||||
|
"Capfile",
|
||||||
|
"CHANGELOG",
|
||||||
|
"config",
|
||||||
|
"Gemfile",
|
||||||
|
"Gruntfile.js",
|
||||||
|
"gulpfile.js",
|
||||||
|
"LICENSE",
|
||||||
|
"log",
|
||||||
|
"node_modules",
|
||||||
|
"package.json",
|
||||||
|
"Rakefile",
|
||||||
|
"README",
|
||||||
|
"tmp"
|
||||||
|
],
|
||||||
|
"keep_files": [
|
||||||
|
".git",
|
||||||
|
".svn"
|
||||||
|
],
|
||||||
|
"encoding": "utf-8",
|
||||||
|
"markdown_ext": "markdown,mkdown,mkdn,mkd,md",
|
||||||
|
"strict_front_matter": true,
|
||||||
|
"liquid": {
|
||||||
|
"error_mode": "strict"
|
||||||
|
},
|
||||||
|
"markdown": "kramdown",
|
||||||
|
"highlighter": "rouge",
|
||||||
|
"lsi": false,
|
||||||
|
"excerpt_separator": "<!--more-->",
|
||||||
|
"incremental": false,
|
||||||
|
"kramdown": {
|
||||||
|
"input": "GFM",
|
||||||
|
"hard_wrap": false,
|
||||||
|
"auto_ids": true,
|
||||||
|
"footnote_nr": 1,
|
||||||
|
"entity_output": "as_char",
|
||||||
|
"toc_levels": "1..6",
|
||||||
|
"smart_quotes": "lsquo,rsquo,ldquo,rdquo",
|
||||||
|
"enable_coderay": false
|
||||||
|
},
|
||||||
|
"sass": {
|
||||||
|
"sass_dir": "_sass",
|
||||||
|
"style": "compressed"
|
||||||
|
},
|
||||||
|
"permalink": "/:year/:month/:day/:title/",
|
||||||
|
"paginate": 10,
|
||||||
|
"paginate_path": "/page:num/",
|
||||||
|
"timezone": null,
|
||||||
|
"plugins": [
|
||||||
|
"jekyll-archives",
|
||||||
|
"jekyll-paginate",
|
||||||
|
"jekyll-sitemap",
|
||||||
|
"jekyll-gist",
|
||||||
|
"jekyll-feed",
|
||||||
|
"jemoji",
|
||||||
|
"jekyll-include-cache",
|
||||||
|
"jekyll-gist"
|
||||||
|
],
|
||||||
|
"whitelist": [
|
||||||
|
"jekyll-archives",
|
||||||
|
"jekyll-paginate",
|
||||||
|
"jekyll-sitemap",
|
||||||
|
"jekyll-gist",
|
||||||
|
"jekyll-feed",
|
||||||
|
"jemoji",
|
||||||
|
"jekyll-include-cache",
|
||||||
|
"jekyll-gist"
|
||||||
|
],
|
||||||
|
"category_archive": {
|
||||||
|
"type": "liquid",
|
||||||
|
"path": "/categories/"
|
||||||
|
},
|
||||||
|
"tag_archive": {
|
||||||
|
"type": "liquid",
|
||||||
|
"path": "/tags/"
|
||||||
|
},
|
||||||
|
"compress_html": {
|
||||||
|
"clippings": "all",
|
||||||
|
"ignore": {
|
||||||
|
"envs": "development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"collections": {
|
||||||
|
"recipes": {
|
||||||
|
"output": true,
|
||||||
|
"permalink": "/:collection/:path/"
|
||||||
|
},
|
||||||
|
"pets": {
|
||||||
|
"output": true,
|
||||||
|
"permalink": "/:collection/:path/"
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"output": true,
|
||||||
|
"permalink": "/:collection/:path/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defaults": {
|
||||||
|
"posts": {
|
||||||
|
"path": "_posts",
|
||||||
|
"type": "posts",
|
||||||
|
"layout": "single",
|
||||||
|
"classes": "wide",
|
||||||
|
"author_profile": true,
|
||||||
|
"read_time": true,
|
||||||
|
"share": true,
|
||||||
|
"related": true,
|
||||||
|
"comments": true,
|
||||||
|
"sidebar":true,
|
||||||
|
"show_date": true
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"path": "_pages",
|
||||||
|
"type": "pages",
|
||||||
|
"layout": "single",
|
||||||
|
"author_profile": true
|
||||||
|
},
|
||||||
|
"recipies": {
|
||||||
|
"path": "",
|
||||||
|
"type": "recipes",
|
||||||
|
"layout": "single",
|
||||||
|
"author_profile": true,
|
||||||
|
"share": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post_ext": "markdown",
|
||||||
|
"page_ext": "html",
|
||||||
|
"post_layout": "single",
|
||||||
|
"page_layout": "page",
|
||||||
|
"titlecase": true
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -6,6 +6,7 @@ share: true
|
||||||
related: true
|
related: true
|
||||||
title: 'An End of Sorts'
|
title: 'An End of Sorts'
|
||||||
tag: [Life, Work]
|
tag: [Life, Work]
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
Lets be clear up front: ITS MY **FAULT**.
|
Lets be clear up front: ITS MY **FAULT**.
|
|
@ -2,6 +2,8 @@
|
||||||
title: Cash Register Challenge on freeCodeCamp
|
title: Cash Register Challenge on freeCodeCamp
|
||||||
tags: [webdev, javascript, freecodecamp]
|
tags: [webdev, javascript, freecodecamp]
|
||||||
category: programming
|
category: programming
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
layout: single
|
||||||
---
|
---
|
||||||
|
|
||||||
I've been (slowly) working through the JavaScript module on [freeCodeCamp](https://freecodecamp.org) for a while now, and have recently been doing the certificate challenges. The last of which is the "Cash Register" challenge where you are to write a function that takes a price, a payment amount and an array that contains the cash in the drawer.
|
I've been (slowly) working through the JavaScript module on [freeCodeCamp](https://freecodecamp.org) for a while now, and have recently been doing the certificate challenges. The last of which is the "Cash Register" challenge where you are to write a function that takes a price, a payment amount and an array that contains the cash in the drawer.
|
|
@ -2,6 +2,7 @@
|
||||||
title: CSS Properties, or I have a problem.
|
title: CSS Properties, or I have a problem.
|
||||||
tags: [webdev, css]
|
tags: [webdev, css]
|
||||||
category: programming
|
category: programming
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
title: What happens when I finish a Frontend Mentor Challenge
|
title: What happens when I finish a Frontend Mentor Challenge
|
||||||
tags: [webdev, site, frontendmentor]
|
tags: [webdev, site, frontendmentor]
|
||||||
category: [programming, webdev]
|
category: [programming, webdev]
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.
|
I've been doing challenges from [Frontend Mentor](https://frontendmentor.io) as a means to practice frontend web development. Specifically working with plain HTML, CSS and JavaScript.
|
|
@ -2,6 +2,8 @@
|
||||||
title: Filtering
|
title: Filtering
|
||||||
tags: [webdev, javascript]
|
tags: [webdev, javascript]
|
||||||
category: programming
|
category: programming
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
I was watching the video [How To Create A Search Bar In JavaScript](https://www.youtube.com/watch?v=TlP5WIxVirU) by [Web Dev Simplified](https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw) to learn how to do a search bar in JavaScript.
|
I was watching the video [How To Create A Search Bar In JavaScript](https://www.youtube.com/watch?v=TlP5WIxVirU) by [Web Dev Simplified](https://www.youtube.com/channel/UCFbNIlppjAuEX4znoulh0Cw) to learn how to do a search bar in JavaScript.
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
layout: single
|
||||||
|
title: pretty-terminal-configs
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
---
|
|
@ -6,6 +6,7 @@ share: true
|
||||||
related: true
|
related: true
|
||||||
title: 'Superheroes'
|
title: 'Superheroes'
|
||||||
tag: [Movies, TV, Comics]
|
tag: [Movies, TV, Comics]
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
Test
|
Test
|
|
@ -6,6 +6,7 @@ tags:
|
||||||
- swift
|
- swift
|
||||||
- coding-challenges
|
- coding-challenges
|
||||||
category: coding-challenges
|
category: coding-challenges
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
# Challenge 3
|
# Challenge 3
|
|
@ -7,6 +7,7 @@ related: true
|
||||||
title: SwiftUI
|
title: SwiftUI
|
||||||
tags: [swiftui,programming,ios, swift]
|
tags: [swiftui,programming,ios, swift]
|
||||||
category: Programming
|
category: Programming
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.
|
Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.
|
|
@ -4,6 +4,8 @@ title: terminal-colors
|
||||||
tags:
|
tags:
|
||||||
- programming
|
- programming
|
||||||
category: programming
|
category: programming
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
title: Writeup
|
title: Writeup
|
||||||
tags: [camino,caminodesantiago,jakobsweg,life]
|
tags: [camino,caminodesantiago,jakobsweg,life]
|
||||||
category: personal
|
category: personal
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
Its been a long while since I posted. I fell behind on my Camino posts, although I continued to take notes for a while, before I ended up giving up on those too.
|
Its been a long while since I posted. I fell behind on my Camino posts, although I continued to take notes for a while, before I ended up giving up on those too.
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- start custom analytics snippet -->
|
||||||
|
|
||||||
|
<!-- end custom analytics snippet -->
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.tracking_id }}"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
|
||||||
|
gtag('config', '{{ site.analytics.google.tracking_id }}', { 'anonymize_ip': {{ site.analytics.google.anonymize_ip | default: false }}});
|
||||||
|
</script>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<script>
|
||||||
|
window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date;
|
||||||
|
ga('create','{{ site.analytics.google.tracking_id }}','auto');
|
||||||
|
ga('set', 'anonymizeIp', {{ site.analytics.google.anonymize_ip | default: false }});
|
||||||
|
ga('send','pageview')
|
||||||
|
</script>
|
||||||
|
<script src="https://www.google-analytics.com/analytics.js" async></script>
|
|
@ -0,0 +1,14 @@
|
||||||
|
<script>
|
||||||
|
var _gaq = _gaq || [];
|
||||||
|
_gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);
|
||||||
|
{% if site.analytics.google.anonymize_ip == true %}
|
||||||
|
_gaq.push(['_gat._anonymizeIp']);
|
||||||
|
{% endif %}
|
||||||
|
_gaq.push(['_trackPageview']);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||||
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||||
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||||
|
})();
|
||||||
|
</script>
|
|
@ -0,0 +1,14 @@
|
||||||
|
{% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %}
|
||||||
|
|
||||||
|
{% case site.analytics.provider %}
|
||||||
|
{% when "google" %}
|
||||||
|
{% include /analytics-providers/google.html %}
|
||||||
|
{% when "google-universal" %}
|
||||||
|
{% include /analytics-providers/google-universal.html %}
|
||||||
|
{% when "google-gtag" %}
|
||||||
|
{% include /analytics-providers/google-gtag.html %}
|
||||||
|
{% when "custom" %}
|
||||||
|
{% include /analytics-providers/custom.html %}
|
||||||
|
{% endcase %}
|
||||||
|
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,39 @@
|
||||||
|
{% if include.aPost.data.title.header.teaser %}
|
||||||
|
{% capture teaser %}{{ include.aPost.data.title.header.teaser }}{% endcapture %}
|
||||||
|
{% else %}
|
||||||
|
{% assign teaser = site.teaser %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if include.aPost.data.id %}
|
||||||
|
{% assign title = include.aPost.data.title | markdownify | remove: "<p>" | remove: "</p>" %}
|
||||||
|
{% else %}
|
||||||
|
{% assign title = include.aPost.data.title %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="{{ include.type | default: 'list' }}__item">
|
||||||
|
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
{% if include.type == "grid" and teaser %}
|
||||||
|
<div class="archive__item-teaser">
|
||||||
|
<img src="{{ teaser | relative_url }}" alt="">
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<h2 class="archive__item-title no_toc" itemprop="headline">
|
||||||
|
{% if include.aPost.data.link %}
|
||||||
|
<a href="{{ include.aPost.data.link }}">{{ title }}</a> <a href="{{ include.aPost.data.page.url | relative_url }}" rel="permalink"><i class="fas fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a>
|
||||||
|
{% else %}
|
||||||
|
<a href="{{ include.aPost.data.page.url | relative_url }}" rel="permalink">{{ title }}</a>
|
||||||
|
{% endif %}
|
||||||
|
</h2>
|
||||||
|
<!-- RMCG consider removing truncate from first 2 where we've explicitly provided a excerpt -->
|
||||||
|
{% include page__meta.html type=include.type content=include.aPost.data.content %}
|
||||||
|
{% if include.aPost.data.page.excerpt %}
|
||||||
|
<p class="archive__item-excerpt" itemprop="description">{{ include.aPost.data.page.excerpt | markdownify | strip_html | truncate: 160 }}</p>
|
||||||
|
{% elsif include.aPost.data.excerpt %}
|
||||||
|
<p class="archive__item-excerpt" itemprop="description">{{ include.aPost.data.excerpt | markdownify | strip_html | truncate: 160 }}</p>
|
||||||
|
{% else %}
|
||||||
|
<!-- RMCG - Result of this isn't perfect but it works, so now all posts show an excerpt of sorts -->
|
||||||
|
<p class="archive__item-excerpt" itemprop="description">{{ include.aPost.template._frontMatter.content strip_html | markdownify | truncate: 160 }}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</article>
|
||||||
|
</div>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!--
|
||||||
|
<li>
|
||||||
|
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
-->
|
|
@ -0,0 +1,252 @@
|
||||||
|
{% assign author = page.author | default: page.authors[0] | default: site.author %}
|
||||||
|
{% assign author = authors[author] | default: author %}
|
||||||
|
|
||||||
|
<div itemscope itemtype="https://schema.org/Person">
|
||||||
|
|
||||||
|
{% if author.avatar %}
|
||||||
|
<div class="author__avatar">
|
||||||
|
{% if author.home %}
|
||||||
|
<a href="{{ author.home | relative_url }}">
|
||||||
|
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<img src="{{ author.avatar | relative_url }}" alt="{{ author.name }}" itemprop="image">
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="author__content">
|
||||||
|
{% if author.home %}
|
||||||
|
<a href="{{ author.home | relative_url }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a>
|
||||||
|
{% else %}
|
||||||
|
<h3 class="author__name" itemprop="name">{{ author.name }}</h3>
|
||||||
|
{% endif %}
|
||||||
|
{% if author.bio %}
|
||||||
|
<div class="author__bio" itemprop="description">
|
||||||
|
{{ author.bio | markdownify }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="author__urls-wrapper">
|
||||||
|
<button class="btn btn--inverse">{{ ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}</button>
|
||||||
|
<ul class="author__urls social-icons">
|
||||||
|
{% if author.location %}
|
||||||
|
<li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place">
|
||||||
|
<i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.links %}
|
||||||
|
{% for link in author.links %}
|
||||||
|
{% if link.label and link.url %}
|
||||||
|
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i><span class="label">{{ link.label }}</span></a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.uri %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ author.uri }}" itemprop="url">
|
||||||
|
<i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">{{ ui-text[site.locale].website_label | default: "Website" }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.email %}
|
||||||
|
<li>
|
||||||
|
<a href="mailto:{{ author.email }}">
|
||||||
|
<meta itemprop="email" content="{{ author.email }}" />
|
||||||
|
<i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i><span class="label">{{ ui-text[site.locale].email_label | default: "Email" }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.keybase %}
|
||||||
|
<li>
|
||||||
|
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fas fa-fw fa-key" aria-hidden="true"></i><span class="label">Keybase</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.twitter %}
|
||||||
|
<li>
|
||||||
|
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i><span class="label">Twitter</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.facebook %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i><span class="label">Facebook</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.linkedin %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">LinkedIn</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.xing %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-xing-square" aria-hidden="true"></i><span class="label">XING</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.instagram %}
|
||||||
|
<li>
|
||||||
|
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-instagram" aria-hidden="true"></i><span class="label">Instagram</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.tumblr %}
|
||||||
|
<li>
|
||||||
|
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i><span class="label">Tumblr</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.bitbucket %}
|
||||||
|
<li>
|
||||||
|
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i><span class="label">Bitbucket</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.github %}
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.gitlab %}
|
||||||
|
<li>
|
||||||
|
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-gitlab" aria-hidden="true"></i><span class="label">GitLab</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.stackoverflow %}
|
||||||
|
<li>
|
||||||
|
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i><span class="label">Stack Overflow</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.lastfm %}
|
||||||
|
<li>
|
||||||
|
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i><span class="label">Last.fm</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.dribbble %}
|
||||||
|
<li>
|
||||||
|
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-dribbble" aria-hidden="true"></i><span class="label">Dribbble</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.pinterest %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-pinterest" aria-hidden="true"></i><span class="label">Pinterest</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.foursquare %}
|
||||||
|
<li>
|
||||||
|
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-foursquare" aria-hidden="true"></i><span class="label">Foursquare</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.steam %}
|
||||||
|
<li>
|
||||||
|
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-steam" aria-hidden="true"></i><span class="label">Steam</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.youtube %}
|
||||||
|
{% if author.youtube contains "://" %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% elsif author.youtube %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">YouTube</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.soundcloud %}
|
||||||
|
<li>
|
||||||
|
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i><span class="label">SoundCloud</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.weibo %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-weibo" aria-hidden="true"></i><span class="label">Weibo</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.flickr %}
|
||||||
|
<li>
|
||||||
|
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-flickr" aria-hidden="true"></i><span class="label">Flickr</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.codepen %}
|
||||||
|
<li>
|
||||||
|
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-codepen" aria-hidden="true"></i><span class="label">CodePen</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author.vine %}
|
||||||
|
<li>
|
||||||
|
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||||
|
<i class="fab fa-fw fa-vine" aria-hidden="true"></i><span class="label">{{ ui-text[site.locale].email_label | default: "Email" }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% include author-profile-custom-links.html %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,39 @@
|
||||||
|
{% case site.category_archive.type %}
|
||||||
|
{% when "liquid" %}
|
||||||
|
{% assign path_type = "#" %}
|
||||||
|
{% when "jekyll-archives" %}
|
||||||
|
{% assign path_type = nil %}
|
||||||
|
{% endcase %}
|
||||||
|
|
||||||
|
{% if page.collection != 'posts' %}
|
||||||
|
{% assign path_type = nil %}
|
||||||
|
{% assign crumb_path = '/' %}
|
||||||
|
{% else %}
|
||||||
|
{% assign crumb_path = site.category_archive.path %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<nav class="breadcrumbs">
|
||||||
|
<ol itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||||
|
{% assign crumbs = page.url | split: '/' %}
|
||||||
|
{% assign i = 1 %}
|
||||||
|
{% for crumb in crumbs offset: 1 %}
|
||||||
|
{% if forloop.first %}
|
||||||
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||||
|
<a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
|
||||||
|
<meta itemprop="position" content="{{ i }}" />
|
||||||
|
</li>
|
||||||
|
<span class="sep">{{ ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if forloop.last %}
|
||||||
|
<li class="current">{{ page.title }}</li>
|
||||||
|
{% else %}
|
||||||
|
{% assign i = i | plus: 1 %}
|
||||||
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||||
|
<a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
|
||||||
|
<meta itemprop="position" content="{{ i }}" />
|
||||||
|
</li>
|
||||||
|
<span class="sep">{{ ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ol>
|
||||||
|
</nav>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
|
||||||
|
<![endif]-->
|
|
@ -0,0 +1,19 @@
|
||||||
|
{% case site.category_archive.type %}
|
||||||
|
{% when "liquid" %}
|
||||||
|
{% assign path_type = "#" %}
|
||||||
|
{% when "jekyll-archives" %}
|
||||||
|
{% assign path_type = nil %}
|
||||||
|
{% endcase %}
|
||||||
|
|
||||||
|
{% if site.category_archive.path %}
|
||||||
|
{% assign categories_sorted = page.categories | sort_natural %}
|
||||||
|
|
||||||
|
<p class="page__taxonomy">
|
||||||
|
<strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
|
||||||
|
<span itemprop="keywords">
|
||||||
|
{% for category_word in categories_sorted %}
|
||||||
|
<a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||||
|
{% endfor %}
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- start custom comments snippet -->
|
||||||
|
|
||||||
|
<!-- end custom comments snippet -->
|
|
@ -0,0 +1,3 @@
|
||||||
|
<!-- start custom comments scripts -->
|
||||||
|
|
||||||
|
<!-- end custom comments scripts -->
|
|
@ -0,0 +1,13 @@
|
||||||
|
{% if site.comments.discourse.server %}
|
||||||
|
{% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/',
|
||||||
|
discourseEmbedUrl: '{{ canonical }}' };
|
||||||
|
(function () {
|
||||||
|
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||||
|
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<noscript>Please enable JavaScript to view the comments powered by <a href="https://www.discourse.org/">Discourse.</a></noscript>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{% if site.comments.disqus.shortname %}
|
||||||
|
<script>
|
||||||
|
var disqus_config = function () {
|
||||||
|
this.page.url = "{{ page.url | absolute_url }}"; /* Replace PAGE_URL with your page's canonical URL variable */
|
||||||
|
this.page.identifier = "{{ page.id }}"; /* Replace PAGE_IDENTIFIER with your page's unique identifier variable */
|
||||||
|
};
|
||||||
|
(function() { /* DON'T EDIT BELOW THIS LINE */
|
||||||
|
var d = document, s = d.createElement('script');
|
||||||
|
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
|
||||||
|
s.setAttribute('data-timestamp', +new Date());
|
||||||
|
(d.head || d.body).appendChild(s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,8 @@
|
||||||
|
<div id="fb-root"></div>
|
||||||
|
<script>(function(d, s, id) {
|
||||||
|
var js, fjs = d.getElementsByTagName(s)[0];
|
||||||
|
if (d.getElementById(id)) return;
|
||||||
|
js = d.createElement(s); js.id = id;
|
||||||
|
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}";
|
||||||
|
fjs.parentNode.insertBefore(js, fjs);
|
||||||
|
}(document, 'script', 'facebook-jssdk'));</script>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var commentContainer = document.querySelector('#giscus-comments');
|
||||||
|
|
||||||
|
if (!commentContainer) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var script = document.createElement('script');
|
||||||
|
script.setAttribute('src', 'https://giscus.app/client.js');
|
||||||
|
script.setAttribute('data-repo', '{{ site.repository | downcase }}');
|
||||||
|
script.setAttribute('data-repo-id', '{{ site.comments.giscus.repo_id }}');
|
||||||
|
script.setAttribute('data-category', '{{ site.comments.giscus.category_name }}');
|
||||||
|
script.setAttribute('data-category-id', '{{ site.comments.giscus.category_id }}');
|
||||||
|
script.setAttribute('data-mapping', '{{ site.comments.giscus.discussion_term | default: "pathname" }}');
|
||||||
|
script.setAttribute('data-reactions-enabled', '{{ site.comments.giscus.reactions_enabled | default: 1 }}');
|
||||||
|
script.setAttribute('data-theme', '{{ site.comments.giscus.theme | default: "light" }}');
|
||||||
|
script.setAttribute('crossorigin', 'anonymous');
|
||||||
|
|
||||||
|
commentContainer.appendChild(script);
|
||||||
|
})();
|
||||||
|
</script>
|
|
@ -0,0 +1,20 @@
|
||||||
|
{% if site.comments.provider and page.comments %}
|
||||||
|
{% case site.comments.provider %}
|
||||||
|
{% when "disqus" %}
|
||||||
|
{% include /comments-providers/disqus.html %}
|
||||||
|
{% when "discourse" %}
|
||||||
|
{% include /comments-providers/discourse.html %}
|
||||||
|
{% when "facebook" %}
|
||||||
|
{% include /comments-providers/facebook.html %}
|
||||||
|
{% when "staticman" %}
|
||||||
|
{% include /comments-providers/staticman.html %}
|
||||||
|
{% when "staticman_v2" %}
|
||||||
|
{% include /comments-providers/staticman_v2.html %}
|
||||||
|
{% when "utterances" %}
|
||||||
|
{% include /comments-providers/utterances.html %}
|
||||||
|
{% when "giscus" %}
|
||||||
|
{% include /comments-providers/giscus.html %}
|
||||||
|
{% when "custom" %}
|
||||||
|
{% include /comments-providers/custom_scripts.html %}
|
||||||
|
{% endcase %}
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{% if site.repository and site.staticman.branch %}
|
||||||
|
<script>
|
||||||
|
(function ($) {
|
||||||
|
$('#new_comment').submit(function () {
|
||||||
|
var form = this;
|
||||||
|
|
||||||
|
$(form).addClass('disabled');
|
||||||
|
$('#comment-form-submit').html('<i class="fas fa-spinner fa-spin fa-fw"></i> {{ ui-text[site.locale].loading_label | default: "Loading..." }}');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: $(this).attr('method'),
|
||||||
|
url: $(this).attr('action'),
|
||||||
|
data: $(this).serialize(),
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
success: function (data) {
|
||||||
|
$('#comment-form-submit').html('{{ ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
|
||||||
|
$('.page__comments-form .js-notice').removeClass('notice--danger');
|
||||||
|
$('.page__comments-form .js-notice').addClass('notice--success');
|
||||||
|
showAlert('{{ ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
|
||||||
|
},
|
||||||
|
error: function (err) {
|
||||||
|
console.log(err);
|
||||||
|
$('#comment-form-submit').html('{{ ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
|
||||||
|
$('.page__comments-form .js-notice').removeClass('notice--success');
|
||||||
|
$('.page__comments-form .js-notice').addClass('notice--danger');
|
||||||
|
showAlert('{{ ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
|
||||||
|
$(form).removeClass('disabled');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
function showAlert(message) {
|
||||||
|
$('.page__comments-form .js-notice').removeClass('hidden');
|
||||||
|
$('.page__comments-form .js-notice-text').html(message);
|
||||||
|
}
|
||||||
|
})(jQuery);
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{% if site.repository and site.comments.staticman.branch %}
|
||||||
|
<script>
|
||||||
|
(function ($) {
|
||||||
|
$('#new_comment').submit(function () {
|
||||||
|
var form = this;
|
||||||
|
|
||||||
|
$(form).addClass('disabled');
|
||||||
|
$('#comment-form-submit').html('<i class="fas fa-spinner fa-spin fa-fw"></i> {{ ui-text[site.locale].loading_label | default: "Loading..." }}');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: $(this).attr('method'),
|
||||||
|
url: $(this).attr('action'),
|
||||||
|
data: $(this).serialize(),
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
success: function (data) {
|
||||||
|
$('#comment-form-submit').html('{{ ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
|
||||||
|
$('.page__comments-form .js-notice').removeClass('notice--danger');
|
||||||
|
$('.page__comments-form .js-notice').addClass('notice--success');
|
||||||
|
showAlert('{{ ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
|
||||||
|
},
|
||||||
|
error: function (err) {
|
||||||
|
console.log(err);
|
||||||
|
$('#comment-form-submit').html('{{ ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
|
||||||
|
$('.page__comments-form .js-notice').removeClass('notice--success');
|
||||||
|
$('.page__comments-form .js-notice').addClass('notice--danger');
|
||||||
|
showAlert('{{ ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
|
||||||
|
$(form).removeClass('disabled');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
function showAlert(message) {
|
||||||
|
$('.page__comments-form .js-notice').removeClass('hidden');
|
||||||
|
$('.page__comments-form .js-notice-text').html(message);
|
||||||
|
}
|
||||||
|
})(jQuery);
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var commentContainer = document.querySelector('#utterances-comments');
|
||||||
|
|
||||||
|
if (!commentContainer) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var script = document.createElement('script');
|
||||||
|
script.setAttribute('src', 'https://utteranc.es/client.js');
|
||||||
|
script.setAttribute('repo', '{{ site.repository }}');
|
||||||
|
script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}');
|
||||||
|
script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}');
|
||||||
|
script.setAttribute('crossorigin', 'anonymous');
|
||||||
|
|
||||||
|
commentContainer.appendChild(script);
|
||||||
|
})();
|
||||||
|
</script>
|
|
@ -0,0 +1,162 @@
|
||||||
|
<div class="page__comments">
|
||||||
|
{% capture comments_label %}{{ ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %}
|
||||||
|
{% case site.comments.provider %}
|
||||||
|
{% when "discourse" %}
|
||||||
|
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||||
|
<section id="discourse-comments"></section>
|
||||||
|
{% when "disqus" %}
|
||||||
|
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||||
|
<section id="disqus_thread"></section>
|
||||||
|
{% when "facebook" %}
|
||||||
|
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||||
|
<section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
|
||||||
|
{% when "staticman_v2" %}
|
||||||
|
<section id="static-comments">
|
||||||
|
{% if site.repository and site.comments.staticman.branch %}
|
||||||
|
<!-- Start static comments -->
|
||||||
|
<div class="js-comments">
|
||||||
|
{% if site.data.comments[page.slug] %}
|
||||||
|
<h4 class="page__comments-title">{{ ui-text[site.locale].comments_title | default: "Comments" }}</h4>
|
||||||
|
{% assign comments = site.data.comments[page.slug] | sort %}
|
||||||
|
|
||||||
|
{% for comment in comments %}
|
||||||
|
{% assign email = comment[1].email %}
|
||||||
|
{% assign name = comment[1].name %}
|
||||||
|
{% assign url = comment[1].url %}
|
||||||
|
{% assign date = comment[1].date %}
|
||||||
|
{% assign message = comment[1].message %}
|
||||||
|
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<!-- End static comments -->
|
||||||
|
|
||||||
|
<!-- Start new comment form -->
|
||||||
|
<div class="page__comments-form">
|
||||||
|
<h4 class="page__comments-title">{{ ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
|
||||||
|
<p class="small">{{ ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
|
||||||
|
<form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.comments.staticman.endpoint }}{{ site.repository }}/{{ site.comments.staticman.branch }}/comments">
|
||||||
|
<div class="form__spinner">
|
||||||
|
<i class="fas fa-spinner fa-spin fa-3x fa-fw"></i>
|
||||||
|
<span class="sr-only">{{ ui-text[site.locale].loading_label | default: "Loading..." }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-message">{{ ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
|
||||||
|
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
|
||||||
|
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-name">{{ ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
|
||||||
|
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-email">{{ ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
|
||||||
|
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-url">{{ ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
|
||||||
|
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
|
||||||
|
</div>
|
||||||
|
<div class="form-group hidden" style="display: none;">
|
||||||
|
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
|
||||||
|
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
|
||||||
|
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
|
||||||
|
{% if site.reCaptcha.siteKey %}<input type="hidden" name="options[reCaptcha][siteKey]" value="{{ site.reCaptcha.siteKey }}">{% endif %}
|
||||||
|
{% if site.reCaptcha.secret %}<input type="hidden" name="options[reCaptcha][secret]" value="{{ site.reCaptcha.secret }}">{% endif %}
|
||||||
|
</div>
|
||||||
|
<!-- Start comment form alert messaging -->
|
||||||
|
<p class="hidden js-notice">
|
||||||
|
<strong class="js-notice-text"></strong>
|
||||||
|
</p>
|
||||||
|
<!-- End comment form alert messaging -->
|
||||||
|
{% if site.reCaptcha.siteKey %}
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="g-recaptcha" data-sitekey="{{ site.reCaptcha.siteKey }}"></div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- End new comment form -->
|
||||||
|
{% if site.reCaptcha.siteKey %}<script async src="https://www.google.com/recaptcha/api.js"></script>{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</section>
|
||||||
|
{% when "staticman" %}
|
||||||
|
<section id="static-comments">
|
||||||
|
{% if site.repository and site.staticman.branch %}
|
||||||
|
<!-- Start static comments -->
|
||||||
|
<div class="js-comments">
|
||||||
|
{% if site.data.comments[page.slug] %}
|
||||||
|
<h4 class="page__comments-title">{{ ui-text[site.locale].comments_title | default: "Comments" }}</h4>
|
||||||
|
{% assign comments = site.data.comments[page.slug] | sort %}
|
||||||
|
|
||||||
|
{% for comment in comments %}
|
||||||
|
{% assign email = comment[1].email %}
|
||||||
|
{% assign name = comment[1].name %}
|
||||||
|
{% assign url = comment[1].url %}
|
||||||
|
{% assign date = comment[1].date %}
|
||||||
|
{% assign message = comment[1].message %}
|
||||||
|
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<!-- End static comments -->
|
||||||
|
|
||||||
|
<!-- Start new comment form -->
|
||||||
|
<div class="page__comments-form">
|
||||||
|
<h4 class="page__comments-title">{{ ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
|
||||||
|
<p class="small">{{ ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
|
||||||
|
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}">
|
||||||
|
<div class="form__spinner">
|
||||||
|
<i class="fas fa-spinner fa-spin fa-3x fa-fw"></i>
|
||||||
|
<span class="sr-only">{{ ui-text[site.locale].loading_label | default: "Loading..." }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-message">{{ ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
|
||||||
|
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
|
||||||
|
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-name">{{ ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
|
||||||
|
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-email">{{ ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
|
||||||
|
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="comment-form-url">{{ ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
|
||||||
|
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
|
||||||
|
</div>
|
||||||
|
<div class="form-group hidden" style="display: none;">
|
||||||
|
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
|
||||||
|
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
|
||||||
|
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
|
||||||
|
</div>
|
||||||
|
<!-- Start comment form alert messaging -->
|
||||||
|
<p class="hidden js-notice">
|
||||||
|
<strong class="js-notice-text"></strong>
|
||||||
|
</p>
|
||||||
|
<!-- End comment form alert messaging -->
|
||||||
|
<div class="form-group">
|
||||||
|
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- End new comment form -->
|
||||||
|
{% endif %}
|
||||||
|
</section>
|
||||||
|
{% when "utterances" %}
|
||||||
|
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||||
|
<section id="utterances-comments"></section>
|
||||||
|
{% when "giscus" %}
|
||||||
|
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||||
|
<section id="giscus-comments"></section>
|
||||||
|
{% when "custom" %}
|
||||||
|
{% include /comments-providers/custom.html %}
|
||||||
|
{% endcase %}
|
||||||
|
</div>
|
|
@ -0,0 +1,15 @@
|
||||||
|
{% assign entries = site[include.collection] %}
|
||||||
|
|
||||||
|
{% if include.sort_by %}
|
||||||
|
{% assign entries = entries | sort: include.sort_by %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if include.sort_order == 'reverse' %}
|
||||||
|
{% assign entries = entries | reverse %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{%- for post in entries -%}
|
||||||
|
{%- unless post.hidden -%}
|
||||||
|
{% include archive-single.html %}
|
||||||
|
{%- endunless -%}
|
||||||
|
{%- endfor -%}
|
|
@ -0,0 +1,41 @@
|
||||||
|
{% if include.id %}
|
||||||
|
{% assign feature_row = page[include.id] %}
|
||||||
|
{% else %}
|
||||||
|
{% assign feature_row = page.feature_row %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="feature__wrapper">
|
||||||
|
|
||||||
|
{% for f in feature_row %}
|
||||||
|
<div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}">
|
||||||
|
<div class="archive__item">
|
||||||
|
{% if f.image_path %}
|
||||||
|
<div class="archive__item-teaser">
|
||||||
|
<img src="{{ f.image_path | relative_url }}"
|
||||||
|
alt="{% if f.alt %}{{ f.alt }}{% endif %}">
|
||||||
|
{% if f.image_caption %}
|
||||||
|
<span class="archive__item-caption">{{ f.image_caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="archive__item-body">
|
||||||
|
{% if f.title %}
|
||||||
|
<h2 class="archive__item-title">{{ f.title }}</h2>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if f.excerpt %}
|
||||||
|
<div class="archive__item-excerpt">
|
||||||
|
{{ f.excerpt | markdownify }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if f.url %}
|
||||||
|
<p><a href="{{ f.url | relative_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
</div>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<figure class="{{ include.class }}">
|
||||||
|
<img src="{{ include.image_path | relative_url }}"
|
||||||
|
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
|
||||||
|
{%- if include.caption -%}
|
||||||
|
<figcaption>
|
||||||
|
{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}
|
||||||
|
</figcaption>
|
||||||
|
{%- endif -%}
|
||||||
|
</figure>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<div class="page__footer-follow">
|
||||||
|
<ul class="social-icons">
|
||||||
|
{% if ui-text[site.locale].follow_label %}
|
||||||
|
<li><strong>{{ ui-text[site.locale].follow_label }}</strong></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% unless site.atom_feed.hide %}
|
||||||
|
<li>
|
||||||
|
<a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}">
|
||||||
|
<i class="fas fa-fw fa-rss-square" aria-hidden="true"></i>
|
||||||
|
{{ ui-text[site.locale].feed_label | default: "Feed" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
|
{% if site.footer.links %}
|
||||||
|
{% for link in site.footer.links %}
|
||||||
|
{% if link.label and link.url %}
|
||||||
|
<li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="page__footer-copyright">© 2019 - {{ site.time | date: 'Y' }} {{ site.name | default: site.title }}. {{ ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://11ty.dev" rel="nofollow">Elevety / 11ty</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
|
|
@ -0,0 +1,35 @@
|
||||||
|
{% if include.id %}
|
||||||
|
{% assign gallery = page[include.id] %}
|
||||||
|
{% else %}
|
||||||
|
{% assign gallery = page.gallery %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if include.layout %}
|
||||||
|
{% assign gallery_layout = include.layout %}
|
||||||
|
{% else %}
|
||||||
|
{% if gallery.size == 2 %}
|
||||||
|
{% assign gallery_layout = 'half' %}
|
||||||
|
{% elsif gallery.size >= 3 %}
|
||||||
|
{% assign gallery_layout = 'third' %}
|
||||||
|
{% else %}
|
||||||
|
{% assign gallery_layout = '' %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<figure class="{{ gallery_layout }} {{ include.class }}">
|
||||||
|
{% for img in gallery %}
|
||||||
|
{% if img.url %}
|
||||||
|
<a href="{{ img.url | relative_url }}"
|
||||||
|
{% if img.title %}title="{{ img.title }}"{% endif %}>
|
||||||
|
<img src="{{ img.image_path | relative_url }}"
|
||||||
|
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<img src="{{ img.image_path | relative_url }}"
|
||||||
|
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% if include.caption %}
|
||||||
|
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
|
||||||
|
{% endif %}
|
||||||
|
</figure>
|
|
@ -0,0 +1,47 @@
|
||||||
|
<!--
|
||||||
|
# Jekyll Group-By-Array 0.1.0
|
||||||
|
# https://github.com/mushishi78/jekyll-group-by-array
|
||||||
|
# © 2015 Max White <mushishi78@gmail.com>
|
||||||
|
# MIT License
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Initialize -->
|
||||||
|
{% assign __empty_array = '' | split: ',' %}
|
||||||
|
{% assign group_names = __empty_array %}
|
||||||
|
{% assign group_items = __empty_array %}
|
||||||
|
|
||||||
|
<!-- Map -->
|
||||||
|
{% assign __names = include.collection | map: include.field %}
|
||||||
|
|
||||||
|
<!-- Flatten -->
|
||||||
|
{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
|
||||||
|
|
||||||
|
<!-- Uniq -->
|
||||||
|
{% assign __names = __names | sort %}
|
||||||
|
{% for name in __names %}
|
||||||
|
|
||||||
|
<!-- If not equal to previous then it must be unique as sorted -->
|
||||||
|
{% unless name == previous %}
|
||||||
|
|
||||||
|
<!-- Push to group_names -->
|
||||||
|
{% assign group_names = group_names | push: name %}
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
|
{% assign previous = name %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- group_items -->
|
||||||
|
{% for name in group_names %}
|
||||||
|
|
||||||
|
<!-- Collect if contains -->
|
||||||
|
{% assign __item = __empty_array %}
|
||||||
|
{% for __element in include.collection %}
|
||||||
|
{% if __element[include.field] contains name %}
|
||||||
|
{% assign __item = __item | push: __element %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<!-- Push to group_items -->
|
||||||
|
{% assign group_items = group_items | push: __item %}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,28 @@
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
{% include seo.html %}
|
||||||
|
|
||||||
|
{% unless site.atom_feed.hide %}
|
||||||
|
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
|
<!-- https://t.co/dKP3o1e -->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- For all browsers -->
|
||||||
|
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
|
||||||
|
<!-- <link href="https://unpkg.com/prismjs@1.20.0/themes/prism-okaidia.css" rel="stylesheet"> -->
|
||||||
|
<link rel="stylesheet" href="/assets/css/colddark-theme.css">
|
||||||
|
|
||||||
|
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||||
|
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css"></noscript>
|
||||||
|
|
||||||
|
{% if site.head_scripts %}
|
||||||
|
{% for script in site.head_scripts %}
|
||||||
|
<script src="{{ script | relative_url }}"></script>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
author_profile: false
|
||||||
|
---
|
||||||
|
|
||||||
|
{% if header.overlay_color or header.overlay_image or header.image %}
|
||||||
|
{% include page__hero.html %}
|
||||||
|
{% elsif header.video.id and header.video.provider %}
|
||||||
|
{% include page__hero_video.html %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if url != "/" and site.breadcrumbs %}
|
||||||
|
{% unless paginator %}
|
||||||
|
{% include breadcrumbs.html %}
|
||||||
|
{% endunless %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="main" role="main">
|
||||||
|
{% include sidebar.html %}
|
||||||
|
|
||||||
|
<div class="archive">
|
||||||
|
{% unless header.overlay_color or header.overlay_image %}
|
||||||
|
<h1 id="page-title" class="page__title">{{ title }}</h1>
|
||||||
|
{% endunless %}
|
||||||
|
{% for post in posts %}
|
||||||
|
{% include archive-single.html %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
{% if header.overlay_color or header.overlay_image or header.image %}
|
||||||
|
{% include page__hero.html %}
|
||||||
|
{% elsif header.video.id and header.video.provider %}
|
||||||
|
{% include page__hero_video.html %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if page.url != "/" and site.breadcrumbs %}
|
||||||
|
{% unless paginator %}
|
||||||
|
{% include breadcrumbs.html %}
|
||||||
|
{% endunless %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="main" role="main">
|
||||||
|
{% include sidebar.html %}
|
||||||
|
|
||||||
|
<div class="archive">
|
||||||
|
{% unless header.overlay_color or header.overlay_image %}
|
||||||
|
<h1 id="page-title" class="page__title">{{ title }}</h1>
|
||||||
|
{% endunless %}
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{% assign categories_max = 0 %}
|
||||||
|
{% for category in collections.categories %}
|
||||||
|
{% if collections[category].size > categories_max %}
|
||||||
|
{% assign categories_max = collections[category].size %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<ul class="taxonomy__index">
|
||||||
|
{% for i in (1..categories_max) reversed %}
|
||||||
|
{% for category in collections.categories %}
|
||||||
|
{% if collections[category].size == i %}
|
||||||
|
<li>
|
||||||
|
<a href="#{{ category | slugify }}">
|
||||||
|
<strong>{{ category }}</strong> <span class="taxonomy__count">{{ i }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% assign entries_layout = entries_layout | default: 'list' %}
|
||||||
|
{% for i in (1..categories_max) reversed %}
|
||||||
|
{% for category in collections.categories %}
|
||||||
|
{% if collections[category].size == i %}
|
||||||
|
<section id="{{ category | slugify | downcase }}" class="taxonomy__section">
|
||||||
|
<h2 class="archive__subtitle">{{ category }}</h2>
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% for post in collections[category] %}
|
||||||
|
{% include archive-single.html type=entries_layout aPost=post%}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<a href="#page-title" class="back-to-top">{{ ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||||
|
</section>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% include posts-category.html taxonomy=page.taxonomy type=entries_layout %}
|
||||||
|
</div>
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=entries_layout %}
|
||||||
|
</div>
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
# Jekyll layout that compresses HTML
|
||||||
|
# v3.1.0
|
||||||
|
# http://jch.penibelst.de/
|
||||||
|
# © 2014–2015 Anatol Broder
|
||||||
|
# MIT License
|
||||||
|
---
|
||||||
|
|
||||||
|
{% capture _LINE_FEED %}
|
||||||
|
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
|
@ -0,0 +1,42 @@
|
||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<!--
|
||||||
|
Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose
|
||||||
|
Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes
|
||||||
|
Free for personal and commercial use under the MIT license
|
||||||
|
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||||
|
-->
|
||||||
|
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
|
||||||
|
<head>
|
||||||
|
{% include head.html %}
|
||||||
|
{% include head/custom.html %}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="layout--{{ layout | default: site.defaults.posts.layout }}{% if classes or site.defaults.posts.classes %}{{ classes | default: site.defaults.posts.classes | join: ' ' | prepend: ' ' }}{% endif %}">
|
||||||
|
{% include skip-links.html %}
|
||||||
|
{% include browser-upgrade.html %}
|
||||||
|
{% include masthead.html %}
|
||||||
|
|
||||||
|
<div class="initial-content">
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if site.search == true %}
|
||||||
|
<div class="search-content">
|
||||||
|
{% include search/search_form.html %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="footer" class="page__footer">
|
||||||
|
<footer>
|
||||||
|
{% include footer/custom.html %}
|
||||||
|
{% include footer.html %}
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include scripts.html %}
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
TEST
|
||||||
|
|
||||||
|
{{collections.drafts.size}}
|
||||||
|
|
||||||
|
{% for post in collections.drafts %}
|
||||||
|
{% include archive-single.html type=entries_layout, aPost=post %}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
|
||||||
|
paginator:
|
||||||
|
data: collections.posts
|
||||||
|
size: 2
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<h3 class="archive__subtitle">{{ ui-text[site.locale].recent_posts | default: "Recent Posts" }}</h3>
|
||||||
|
|
||||||
|
{% if paginator %}
|
||||||
|
{% assign posts = collections.posts %}
|
||||||
|
{% else %}
|
||||||
|
{% assign posts = site.posts %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% for post in posts %}
|
||||||
|
{% include archive-single.html type=entries_layout aPost=post %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include paginator.html %}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{% if paginationNextUrl or paginationPrevUrl %}
|
||||||
|
<hr />
|
||||||
|
<div class="inner-wrapper">
|
||||||
|
<footer class="[ pagination ] [ pad-bottom-900 ]">
|
||||||
|
<nav class="[ pagination__nav ] [ box-flex space-between align-center ]">
|
||||||
|
{% if paginationPrevUrl %}
|
||||||
|
<a href="{{ paginationPrevUrl }}" class="{{ paginationLinkTokens }}" data-direction="backwards">
|
||||||
|
<span>{{ paginationPrevText if paginationPrevText else 'Previous' }}</span>
|
||||||
|
{% include "icons/arrow.svg" %}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if paginationNextUrl %}
|
||||||
|
<a href="{{ paginationNextUrl }}" class="{{ paginationLinkTokens }}" data-direction="forwards">
|
||||||
|
<span>{{ paginationNextText if paginationNextText else 'Next' }}</span>
|
||||||
|
{% include "icons/arrow.svg" %}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</nav>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
{% assign sortedPosts = collections.posts | group_by: "date" %}
|
||||||
|
|
||||||
|
{{ sortedPosts | inspect }}
|
||||||
|
|
||||||
|
{% comment %}
|
||||||
|
<ul class="taxonomy__index">
|
||||||
|
{% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %}
|
||||||
|
{% for year in postsInYear %}
|
||||||
|
<li>
|
||||||
|
<a href="#{{ year.name }}">
|
||||||
|
<strong>{{ year.name }}</strong> <span class="taxonomy__count">{{ year.items | size }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
{% assign postsByYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %}
|
||||||
|
{% for year in postsByYear %}
|
||||||
|
<section id="{{ year.name }}" class="taxonomy__section">
|
||||||
|
<h2 class="archive__subtitle">{{ year.name }}</h2>
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% for post in year.items %}
|
||||||
|
{% include archive-single.html type=entries_layout %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<a href="#page-title" class="back-to-top">{{ ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||||
|
</section>
|
||||||
|
{% endfor %}
|
||||||
|
{% endcomment %}
|
|
@ -0,0 +1,42 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||||
|
{% include page__hero.html %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if page.url != "/" and site.breadcrumbs %}
|
||||||
|
{% unless paginator %}
|
||||||
|
{% include breadcrumbs.html %}
|
||||||
|
{% endunless %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="main" role="main">
|
||||||
|
{% include sidebar.html %}
|
||||||
|
|
||||||
|
<div class="archive">
|
||||||
|
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||||
|
<h1 id="page-title" class="page__title">{{ page.title }}</h1>
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||||
|
{%- case search_provider -%}
|
||||||
|
{%- when "lunr" -%}
|
||||||
|
<input type="text" id="search" class="search-input" placeholder="{{ ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||||
|
<div id="results" class="results"></div>
|
||||||
|
{%- when "google" -%}
|
||||||
|
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
|
||||||
|
<input type="text" id="cse-search-input-box-id" class="search-input" placeholder="{{ ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||||
|
</form>
|
||||||
|
<div id="results" class="results">
|
||||||
|
<gcse:searchresults-only></gcse:searchresults-only>
|
||||||
|
</div>
|
||||||
|
{%- when "algolia" -%}
|
||||||
|
<div class="search-searchbar"></div>
|
||||||
|
<div class="search-hits"></div>
|
||||||
|
{%- endcase -%}
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,91 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
{% if header.overlay_color or header.overlay_image or header.image %}
|
||||||
|
{% include page__hero.html %}
|
||||||
|
{% elsif header.video.id and header.video.provider %}
|
||||||
|
{% include page__hero_video.html %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if page.url != "/" and site.breadcrumbs %}
|
||||||
|
{% unless paginator %}
|
||||||
|
{% include breadcrumbs.html %}
|
||||||
|
{% endunless %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="main" role="main">
|
||||||
|
{% include sidebar.html %}
|
||||||
|
|
||||||
|
<article class="page" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
{% if title %}<meta itemprop="headline" content="{{ title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||||
|
{% if excerpt %}<meta itemprop="description" content="{{ excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||||
|
{% if date %}<meta itemprop="datePublished" content="{{ date | date_to_xmlschema }}">{% endif %}
|
||||||
|
{% if last_modified_at %}<meta itemprop="dateModified" content="{{ last_modified_at | date_to_xmlschema }}">{% endif %}
|
||||||
|
|
||||||
|
<div class="page__inner-wrap">
|
||||||
|
{% unless header.overlay_color or header.overlay_image %}
|
||||||
|
<header>
|
||||||
|
{% if title %}<h1 id="page-title" class="page__title" itemprop="headline">{{ title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
|
||||||
|
{% include page__meta.html %}
|
||||||
|
</header>
|
||||||
|
{% endunless %}
|
||||||
|
|
||||||
|
<section class="page__content" itemprop="text">
|
||||||
|
{% if toc %}
|
||||||
|
<aside class="sidebar__right {% if toc_sticky %}sticky{% endif %}">
|
||||||
|
<nav class="toc">
|
||||||
|
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ toc_label | default: ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
|
||||||
|
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %}
|
||||||
|
</nav>
|
||||||
|
</aside>
|
||||||
|
{% endif %}
|
||||||
|
{{ content }}
|
||||||
|
{% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer class="page__meta">
|
||||||
|
{% if ui-text[site.locale].meta_label %}
|
||||||
|
<h4 class="page__meta-title">{{ ui-text[site.locale].meta_label }}</h4>
|
||||||
|
{% endif %}
|
||||||
|
{% include page__taxonomy.html %}
|
||||||
|
{% include page__date.html %}
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
{% if share or site.defaults.posts.share %}{% include social-share.html %}{% endif %}
|
||||||
|
{% include post_pagination.html siblings=siblings %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% comment %}
|
||||||
|
{% if environment == 'production' and site.comments.provider and comments or site.defaults.post.comments %}
|
||||||
|
{% endcomment %}
|
||||||
|
{% if site.comments.provider and comments or site.defaults.posts.comments %}
|
||||||
|
{% include comments.html %}
|
||||||
|
{% endif %}
|
||||||
|
</article>
|
||||||
|
|
||||||
|
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
|
||||||
|
{% if id and related and site.related_posts.size > 0 %}
|
||||||
|
<div class="page__related">
|
||||||
|
<h4 class="page__related-title">{{ ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||||
|
<div class="grid__wrapper">
|
||||||
|
{% for post in site.related_posts limit:4 %}
|
||||||
|
{% include archive-single.html type="grid" %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
|
||||||
|
{% elsif id and related %}
|
||||||
|
<div class="page__related">
|
||||||
|
<h4 class="page__related-title">{{ ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||||
|
<div class="grid__wrapper">
|
||||||
|
{% for post in collections.posts limit:4 %}
|
||||||
|
{% if post.id == page.id %}
|
||||||
|
{% continue %}
|
||||||
|
{% endif %}
|
||||||
|
{% include archive-single.html type="grid" %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
{% if header.overlay_color or header.overlay_image or header.image %}
|
||||||
|
{% include page__hero.html %}
|
||||||
|
{% elsif header.video.id and header.video.provider %}
|
||||||
|
{% include page__hero_video.html %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div id="main" role="main">
|
||||||
|
<article class="splash" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
{% if title %}<meta itemprop="headline" content="{{ title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||||
|
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||||
|
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">{% endif %}
|
||||||
|
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">{% endif %}
|
||||||
|
|
||||||
|
<section class="page__content" itemprop="text">
|
||||||
|
{{ content }}
|
||||||
|
</section>
|
||||||
|
</article>
|
||||||
|
</div>
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% include posts-tag.html taxonomy=page.taxonomy type=entries_layout %}
|
||||||
|
</div>
|
|
@ -0,0 +1,45 @@
|
||||||
|
---
|
||||||
|
layout: archive
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ content }}
|
||||||
|
|
||||||
|
{% assign tags_max = 0 %}
|
||||||
|
{% for tag in collections.tags %}
|
||||||
|
{% if collections[tag].size > tags_max %}
|
||||||
|
{% assign tags_max = collections[tag].size %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul class="taxonomy__index">
|
||||||
|
{% for i in (1..tags_max) reversed %}
|
||||||
|
{% for tag in collections.tags %}
|
||||||
|
{% if collections[tag].size == i %}
|
||||||
|
<li>
|
||||||
|
<a href="#{{ tag | slugify }}">
|
||||||
|
<strong>{{ tag }}</strong> <span class="taxonomy__count">{{ i }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% assign entries_layout = page.entries_layout | default: 'list' %}
|
||||||
|
{% for i in (1..tags_max) reversed %}
|
||||||
|
{% for tag in collections.tags %}
|
||||||
|
{% if collections[tag].size == i %}
|
||||||
|
<section id="{{ tag | slugify | downcase }}" class="taxonomy__section">
|
||||||
|
<h2 class="archive__subtitle">{{ tag }}</h2>
|
||||||
|
<div class="entries-{{ entries_layout }}">
|
||||||
|
{% for post in collections[tag] %}
|
||||||
|
{% include archive-single.html type=entries_layout, aPost=post %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<a href="#page-title" class="back-to-top">{{ ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑</a>
|
||||||
|
</section>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,35 @@
|
||||||
|
{% capture logo_path %}{{ site.logo }}{% endcapture %}
|
||||||
|
|
||||||
|
<div class="masthead">
|
||||||
|
<div class="masthead__inner-wrap">
|
||||||
|
<div class="masthead__menu">
|
||||||
|
<nav id="site-nav" class="greedy-nav">
|
||||||
|
{% unless logo_path == empty %}
|
||||||
|
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt="{{ site.masthead_title | default: site.title }}"></a>
|
||||||
|
{% endunless %}
|
||||||
|
<a class="site-title" href="{{ '/' | relative_url }}">
|
||||||
|
{{ site.masthead_title | default: site.title }}
|
||||||
|
{% if site.subtitle %}<span class="site-subtitle">{{ site.subtitle }}</span>{% endif %}
|
||||||
|
</a>
|
||||||
|
<ul class="visible-links">
|
||||||
|
{%- for link in navigation.main -%}
|
||||||
|
<li class="masthead__menu-item">
|
||||||
|
<a href="{{ link.url | relative_url }}"{% if link.description %} title="{{ link.description }}"{% endif %}>{{ link.title }}</a>
|
||||||
|
</li>
|
||||||
|
{%- endfor -%}
|
||||||
|
</ul>
|
||||||
|
{% if site.search == true %}
|
||||||
|
<button class="search__toggle" type="button">
|
||||||
|
<span class="visually-hidden">{{ ui-text[site.locale].search_label | default: "Toggle search" }}</span>
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</button>
|
||||||
|
{% endif %}
|
||||||
|
<button class="greedy-nav__toggle hidden" type="button">
|
||||||
|
<span class="visually-hidden">{{ ui-text[site.locale].menu_label | default: "Toggle menu" }}</span>
|
||||||
|
<div class="navicon"></div>
|
||||||
|
</button>
|
||||||
|
<ul class="hidden-links hidden"></ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,26 @@
|
||||||
|
{% assign navigation = site.data.navigation[include.nav] %}
|
||||||
|
|
||||||
|
<nav class="nav__list">
|
||||||
|
{% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %}
|
||||||
|
<input id="ac-toc" name="accordion-toc" type="checkbox" />
|
||||||
|
<label for="ac-toc">{{ ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label>
|
||||||
|
<ul class="nav__items">
|
||||||
|
{% for nav in navigation %}
|
||||||
|
<li>
|
||||||
|
{% if nav.url %}
|
||||||
|
<a href="{{ nav.url | relative_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
|
||||||
|
{% else %}
|
||||||
|
<span class="nav__sub-title">{{ nav.title }}</span>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if nav.children != null %}
|
||||||
|
<ul>
|
||||||
|
{% for child in nav.children %}
|
||||||
|
<li><a href="{{ child.url | relative_url }}"{% if child.url == page.url %} class="active"{% endif %}>{{ child.title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% assign date_format = site.date_format | default: "dddd, LL" %}
|
||||||
|
{% if date %}
|
||||||
|
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ ui-text[site.locale].date_posted | default: "Posted:" }}</strong> <time datetime="{{ date | date_to_xmlschema }}">{{ date | date: date_format }}</time></p>
|
||||||
|
{% endif %}
|
||||||
|
{% if last_modified %}
|
||||||
|
<p class="page__date"><strong><i class="fas fa-fw fa-calendar-alt" aria-hidden="true"></i> {{ ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "Y-M-D" }}">{{ last_modified | date: date_format }}</time></p>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,55 @@
|
||||||
|
{% capture overlay_img_path %}{{ header.overlay_image | relative_url }}{% endcapture %}
|
||||||
|
|
||||||
|
{% if header.overlay_filter contains "gradient" %}
|
||||||
|
{% capture overlay_filter %}{{ header.overlay_filter }}{% endcapture %}
|
||||||
|
{% elsif header.overlay_filter contains "rgba" %}
|
||||||
|
{% capture overlay_filter %}{{ header.overlay_filter }}{% endcapture %}
|
||||||
|
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
|
||||||
|
{% elsif header.overlay_filter %}
|
||||||
|
{% capture overlay_filter %}rgba(0, 0, 0, {{ header.overlay_filter }}){% endcapture %}
|
||||||
|
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if header.image_description %}
|
||||||
|
{% assign image_description = header.image_description %}
|
||||||
|
{% else %}
|
||||||
|
{% assign image_description = title %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
|
||||||
|
|
||||||
|
<div class="page__hero{% if header.overlay_color or header.overlay_image %}--overlay{% endif %}"
|
||||||
|
style="{% if header.overlay_color %}background-color: {{ header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}"
|
||||||
|
>
|
||||||
|
{% if header.overlay_color or header.overlay_image %}
|
||||||
|
<div class="wrapper">
|
||||||
|
<h1 id="page-title" class="page__title" itemprop="headline">
|
||||||
|
{% if paginator and site.paginate_show_page_num %}
|
||||||
|
{{ site.title }}{% unless paginator.page == 1 %} {{ ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
|
||||||
|
{% else %}
|
||||||
|
{{ title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
|
||||||
|
{% endif %}
|
||||||
|
</h1>
|
||||||
|
{% if tagline %}
|
||||||
|
<p class="page__lead">{{ tagline | markdownify | remove: "<p>" | remove: "</p>" }}</p>
|
||||||
|
{% elsif header.show_overlay_excerpt != false and page.excerpt %}
|
||||||
|
<p class="page__lead">{{ excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
|
||||||
|
{% endif %}
|
||||||
|
{% include page__meta.html %}
|
||||||
|
{% if header.cta_url %}
|
||||||
|
<p><a href="{{ header.cta_url | relative_url }}" class="btn btn--light-outline btn--large">{{ header.cta_label | default: ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||||
|
{% endif %}
|
||||||
|
{% if header.actions %}
|
||||||
|
<p>
|
||||||
|
{% for action in header.actions %}
|
||||||
|
<a href="{{ action.url | relative_url }}" class="btn btn--light-outline btn--large">{{ action.label | default: ui-text[site.locale].more_label | default: "Learn More" }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<img src="{{ header.image | relative_url }}" alt="{{ image_description }}" class="page__hero-image">
|
||||||
|
{% endif %}
|
||||||
|
{% if header.caption %}
|
||||||
|
<span class="page__hero-caption">{{ header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
|
@ -0,0 +1,2 @@
|
||||||
|
{% assign video = header.video %}
|
||||||
|
{% include video id=video.id provider=video.provider danmaku=video.danmaku %}
|
|
@ -0,0 +1,37 @@
|
||||||
|
{% assign document = post | default: page %}
|
||||||
|
{% assign document = document.data.page %}
|
||||||
|
|
||||||
|
{% if document.read_time or document.show_date or site.defaults.posts.show_date %}
|
||||||
|
|
||||||
|
<p class="page__meta">
|
||||||
|
{% if document.show_date or site.defaults.posts.show_date and document.date %}
|
||||||
|
{% assign date = document.date %}
|
||||||
|
<span class="page__meta-date">
|
||||||
|
<i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-calendar-alt" aria-hidden="true"></i>
|
||||||
|
{% assign date_format = site.date_format | default: "LLLL" %}
|
||||||
|
<time datetime="{{ date | date_to_xmlschema }}">{{ date | date: date_format }}</time>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if document and document.read_time or site.defaults.posts.read_time and document.show_date or site.defaults.posts.show_date %}<span class="page__meta-sep"></span>{% endif %}
|
||||||
|
|
||||||
|
{% if document.read_time or site.defaults.posts.read_time %}
|
||||||
|
{% assign words_per_minute = document.words_per_minute | default: site.words_per_minute | default: 200 %}
|
||||||
|
|
||||||
|
{% assign con = include.content | default: content %}
|
||||||
|
{% assign words = con | strip_html | number_of_words %}
|
||||||
|
|
||||||
|
<!-- There is a minute difference between the time to read on the list pages, and on the article itself. So 5 minutes to read in the list, 4 minutes to read on article itself -->
|
||||||
|
|
||||||
|
<span class="page__meta-readtime">
|
||||||
|
<i class="far {% if include.type == 'grid' and document.read_time and document.show_date %}fa-fw {% endif %}fa-clock" aria-hidden="true"></i>
|
||||||
|
{% if words < words_per_minute %}
|
||||||
|
{{ ui-text[site.locale].less_than | default: "less than" }} 1 {{ ui-text[site.locale].minute_read | default: "minute read" }}
|
||||||
|
{% elsif words == words_per_minute %}
|
||||||
|
1 {{ ui-text[site.locale].minute_read | default: "minute read" }}
|
||||||
|
{% else %}
|
||||||
|
{{ words | divided_by: words_per_minute | round }} {{ ui-text[site.locale].minute_read | default: "minute read" }}
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% if site.tag_archive.type and tags[0] %}
|
||||||
|
{% include tag-list.html %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if site.category_archive.type and categories[0] %}
|
||||||
|
{% include category-list.html %}
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,69 @@
|
||||||
|
{% if paginator.total_pages > 1 %}
|
||||||
|
<nav class="pagination">
|
||||||
|
{% assign first_page_path = paginator.first_page_path | default: site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %}
|
||||||
|
<ul>
|
||||||
|
{% comment %} Link for previous page {% endcomment %}
|
||||||
|
{% if paginator.previous_page %}
|
||||||
|
{% if paginator.previous_page == 1 %}
|
||||||
|
<li><a href="{{ first_page_path }}">{{ ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<li><a href="#" class="disabled"><span aria-hidden="true">{{ ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% comment %} First page {% endcomment %}
|
||||||
|
{% if paginator.page == 1 %}
|
||||||
|
<li><a href="#" class="disabled current">1</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="{{ first_page_path }}">1</a></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% assign page_start = 2 %}
|
||||||
|
{% if paginator.page > 4 %}
|
||||||
|
{% assign page_start = paginator.page | minus: 2 %}
|
||||||
|
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||||
|
<li><a href="#" class="disabled">…</a></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% assign page_end = paginator.total_pages | minus: 1 %}
|
||||||
|
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
|
||||||
|
{% if pages_to_end > 4 %}
|
||||||
|
{% assign page_end = paginator.page | plus: 2 %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for index in (page_start..page_end) %}
|
||||||
|
{% if index == paginator.page %}
|
||||||
|
<li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li>
|
||||||
|
{% else %}
|
||||||
|
{% comment %} Distance from current page and this link {% endcomment %}
|
||||||
|
{% assign dist = paginator.page | minus: index %}
|
||||||
|
{% if dist < 0 %}
|
||||||
|
{% comment %} Distance must be a positive value {% endcomment %}
|
||||||
|
{% assign dist = 0 | minus: dist %}
|
||||||
|
{% endif %}
|
||||||
|
<li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||||
|
{% if pages_to_end > 3 %}
|
||||||
|
<li><a href="#" class="disabled">…</a></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if paginator.page == paginator.total_pages %}
|
||||||
|
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% comment %} Link next page {% endcomment %}
|
||||||
|
{% if paginator.next_page %}
|
||||||
|
<li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="#" class="disabled"><span aria-hidden="true">{{ ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
{% if include.siblings.prev or include.siblings.next %}
|
||||||
|
<nav class="pagination">
|
||||||
|
{% if include.siblings.prev %}
|
||||||
|
<a href="{{ include.siblings.prev.url | relative_url }}" class="pagination--pager" title="{{ include.siblings.prev.data.title | markdownify | strip_html }}">{{ ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="#" class="pagination--pager disabled">{{ ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if include.siblings.next %}
|
||||||
|
<a href="{{ include.siblings.next.url | relative_url }}" class="pagination--pager" title="{{ include.siblings.next.data.title | markdownify | strip_html }}">{{ ui-text[site.locale].pagination_next | default: "Next" }}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="#" class="pagination--pager disabled">{{ ui-text[site.locale].pagination_next | default: "Next" }}</a>
|
||||||
|
{% endif %}
|
||||||
|
</nav>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{%- for post in site.categories[include.taxonomy] -%}
|
||||||
|
{%- unless post.hidden -%}
|
||||||
|
{% include archive-single.html %}
|
||||||
|
{%- endunless -%}
|
||||||
|
{%- endfor -%}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{%- for post in site.tags[include.taxonomy] -%}
|
||||||
|
{%- unless post.hidden -%}
|
||||||
|
{% include archive-single.html %}
|
||||||
|
{%- endunless -%}
|
||||||
|
{%- endfor -%}
|
|
@ -0,0 +1,28 @@
|
||||||
|
{% if site.footer_scripts %}
|
||||||
|
{% for script in site.footer_scripts %}
|
||||||
|
<script src="{{ script | relative_url }}"></script>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<script src="{{ '/assets/js/main.min.js' | relative_url }}"></script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if site.search == true or page.layout == "search" %}
|
||||||
|
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||||
|
{%- case search_provider -%}
|
||||||
|
{%- when "lunr" -%}
|
||||||
|
{% include search/lunr-search-scripts.html %}
|
||||||
|
{%- when "google" -%}
|
||||||
|
{% include search/google-search-scripts.html %}
|
||||||
|
{%- when "algolia" -%}
|
||||||
|
{% include search/algolia-search-scripts.html %}
|
||||||
|
{%- endcase -%}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% include analytics.html %}
|
||||||
|
{% include comments-providers/scripts.html %}
|
||||||
|
|
||||||
|
{% if site.after_footer_scripts %}
|
||||||
|
{% for script in site.after_footer_scripts %}
|
||||||
|
<script src="{{ script | relative_url }}"></script>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,61 @@
|
||||||
|
<!-- Including InstantSearch.js library and styling -->
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Instanciating InstantSearch.js with Algolia credentials
|
||||||
|
const search = instantsearch({
|
||||||
|
appId: '{{ site.algolia.application_id }}',
|
||||||
|
apiKey: '{{ site.algolia.search_only_api_key }}',
|
||||||
|
indexName: '{{ site.algolia.index_name }}',
|
||||||
|
searchParameters: {
|
||||||
|
restrictSearchableAttributes: [
|
||||||
|
'title',
|
||||||
|
'content'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const hitTemplate = function(hit) {
|
||||||
|
const url = hit.url;
|
||||||
|
const title = hit._highlightResult.title.value;
|
||||||
|
const content = hit._highlightResult.html.value;
|
||||||
|
|
||||||
|
return `
|
||||||
|
<div class="list__item">
|
||||||
|
<article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork">
|
||||||
|
<h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2>
|
||||||
|
<div class="archive__item-excerpt" itemprop="description">${content}</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adding searchbar and results widgets
|
||||||
|
search.addWidget(
|
||||||
|
instantsearch.widgets.searchBox({
|
||||||
|
container: '.search-searchbar',
|
||||||
|
{% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
|
||||||
|
placeholder: '{{ ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}'
|
||||||
|
})
|
||||||
|
);
|
||||||
|
search.addWidget(
|
||||||
|
instantsearch.widgets.hits({
|
||||||
|
container: '.search-hits',
|
||||||
|
templates: {
|
||||||
|
item: hitTemplate,
|
||||||
|
empty: '{{ ui-text[site.locale].search_algolia_no_results | default: "No results" }}',
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
// Starting the search only when toggle is clicked
|
||||||
|
$(document).ready(function () {
|
||||||
|
$(".search__toggle").on("click", function() {
|
||||||
|
if(!search.started) {
|
||||||
|
search.start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
var cx = '{{ site.google.search_engine_id }}';
|
||||||
|
var gcse = document.createElement('script');
|
||||||
|
gcse.type = 'text/javascript';
|
||||||
|
gcse.async = true;
|
||||||
|
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
|
||||||
|
var s = document.getElementsByTagName('script')[0];
|
||||||
|
s.parentNode.insertBefore(gcse, s);
|
||||||
|
})();
|
||||||
|
|
||||||
|
function googleCustomSearchExecute() {
|
||||||
|
var input = document.getElementById('cse-search-input-box-id');
|
||||||
|
var element = google.search.cse.element.getElement('searchresults-only0');
|
||||||
|
if (input.value == '') {
|
||||||
|
element.clearAllResults();
|
||||||
|
} else {
|
||||||
|
element.execute(input.value);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
{% if site.google.instant_search %}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('input#cse-search-input-box-id').on('keyup', function () {
|
||||||
|
googleCustomSearchExecute();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
{% endif %}
|
||||||
|
</script>
|
|
@ -0,0 +1,10 @@
|
||||||
|
{% assign lang = site.locale | slice: 0,2 | default: "en" %}
|
||||||
|
{% case lang %}
|
||||||
|
{% when "gr" %}
|
||||||
|
{% assign lang = "gr" %}
|
||||||
|
{% else %}
|
||||||
|
{% assign lang = "en" %}
|
||||||
|
{% endcase %}
|
||||||
|
<script src="{{ '/assets/js/lunr/lunr.min.js' | relative_url }}"></script>
|
||||||
|
<script src="{{ '/assets/js/lunr/lunr-store.js' | relative_url }}"></script>
|
||||||
|
<script src="{{ '/assets/js/lunr/lunr-' | append: lang | append: '.js' | relative_url }}"></script>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<div class="search-content__inner-wrap">
|
||||||
|
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||||
|
{%- case search_provider -%}
|
||||||
|
{%- when "lunr" -%}
|
||||||
|
<form class="search-content__form" onkeydown="return event.key != 'Enter';">
|
||||||
|
<label class="sr-only" for="search">
|
||||||
|
{{ ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
|
||||||
|
</label>
|
||||||
|
<input type="search" id="search" class="search-input" tabindex="-1" placeholder="{{ ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||||
|
</form>
|
||||||
|
<div id="results" class="results"></div>
|
||||||
|
{%- when "google" -%}
|
||||||
|
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
|
||||||
|
<label class="sr-only" for="cse-search-input-box-id">
|
||||||
|
{{ ui-text[site.locale].search_label_text | default: 'Enter your search term...' }}
|
||||||
|
</label>
|
||||||
|
<input type="search" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||||
|
</form>
|
||||||
|
<div id="results" class="results">
|
||||||
|
<gcse:searchresults-only></gcse:searchresults-only>
|
||||||
|
</div>
|
||||||
|
{%- when "algolia" -%}
|
||||||
|
<div class="search-searchbar"></div>
|
||||||
|
<div class="search-hits"></div>
|
||||||
|
{%- endcase -%}
|
||||||
|
</div>
|
|
@ -0,0 +1,158 @@
|
||||||
|
<!-- begin _includes/seo.html -->
|
||||||
|
{%- if site.url -%}
|
||||||
|
{%- assign seo_url = site.url | append: site.baseurl -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- assign seo_url = seo_url | default: site.github.url -%}
|
||||||
|
|
||||||
|
{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %}
|
||||||
|
|
||||||
|
{%- if title -%}
|
||||||
|
{%- assign seo_title = title | append: " " | append: title_separator | append: " " | append: site.title -%}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{%- if seo_title -%}
|
||||||
|
{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{% if page.canonical_url %}
|
||||||
|
{%- assign canonical_url = page.canonical_url %}
|
||||||
|
{% else %}
|
||||||
|
{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{%- assign seo_description = description | default: excerpt | default: site.description -%}
|
||||||
|
{%- if seo_description -%}
|
||||||
|
{%- assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '<br />', ' ' | escape_once | strip -%}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{%- assign author = author | default: authors[0] | default: site.author -%}
|
||||||
|
{%- assign author = authors[author] | default: author -%}
|
||||||
|
|
||||||
|
{%- if author.twitter -%}
|
||||||
|
{%- assign author_twitter = author.twitter | replace: "@", "" -%}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
{%- assign page_large_image = header.og_image | default: header.overlay_image | default: header.image | absolute_url -%}
|
||||||
|
{%- assign page_large_image = page_large_image | escape -%}
|
||||||
|
|
||||||
|
{%- assign page_teaser_image = header.teaser | default: site.og_image | absolute_url -%}
|
||||||
|
{%- assign page_teaser_image = page_teaser_image | escape -%}
|
||||||
|
|
||||||
|
{%- assign site_og_image = site.og_image | absolute_url -%}
|
||||||
|
{%- assign site_og_image = site_og_image | escape -%}
|
||||||
|
|
||||||
|
{%- if date -%}
|
||||||
|
{%- assign og_type = "article" -%}
|
||||||
|
{%- else -%}
|
||||||
|
{%- assign og_type = "website" -%}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
||||||
|
<meta name="description" content="{{ seo_description }}">
|
||||||
|
|
||||||
|
{% if author.name %}
|
||||||
|
<meta name="author" content="{{ author.name | default: author }}">
|
||||||
|
{% if og_type == "article" %}
|
||||||
|
<meta property="article:author" content="{{ author.name | default: author }}">
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<meta property="og:type" content="{{ og_type }}">
|
||||||
|
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
|
||||||
|
<meta property="og:site_name" content="{{ site.title }}">
|
||||||
|
<meta property="og:title" content="{{ title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||||
|
<meta property="og:url" content="{{ canonical_url }}">
|
||||||
|
|
||||||
|
{% if seo_description %}
|
||||||
|
<meta property="og:description" content="{{ seo_description }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if page_large_image %}
|
||||||
|
<meta property="og:image" content="{{ page_large_image }}">
|
||||||
|
{% elsif page_teaser_image %}
|
||||||
|
<meta property="og:image" content="{{ page_teaser_image }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if site.twitter.username %}
|
||||||
|
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
||||||
|
<meta name="twitter:title" content="{{ title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||||
|
<meta name="twitter:description" content="{{ seo_description }}">
|
||||||
|
<meta name="twitter:url" content="{{ canonical_url }}">
|
||||||
|
|
||||||
|
{% if page_large_image %}
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="twitter:image" content="{{ page_large_image }}">
|
||||||
|
{% else %}
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
{% if page_teaser_image %}
|
||||||
|
<meta name="twitter:image" content="{{ page_teaser_image }}">
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if author_twitter %}
|
||||||
|
<meta name="twitter:creator" content="@{{ author_twitter }}">
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if date %}
|
||||||
|
<meta property="article:published_time" content="{{ date | date_to_xmlschema }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if og_type == "article" and page.last_modified_at %}
|
||||||
|
<meta property="article:modified_time" content="{{ last_modified_at | date_to_xmlschema }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if site.facebook %}
|
||||||
|
{% if site.facebook.publisher %}
|
||||||
|
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if site.facebook.app_id %}
|
||||||
|
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<link rel="canonical" href="{{ canonical_url }}">
|
||||||
|
|
||||||
|
{% if paginator.previous_page %}
|
||||||
|
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
|
||||||
|
{% endif %}
|
||||||
|
{% if paginator.next_page %}
|
||||||
|
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
{% if site.social.type == "Organization" %}
|
||||||
|
"@type": "Organization",
|
||||||
|
"url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
|
||||||
|
"logo": {{ site_og_image | jsonify }}{% endif %}
|
||||||
|
{% else %}
|
||||||
|
"@type": "Person",
|
||||||
|
"name": {{ site.social.name | default: site.name | jsonify }},
|
||||||
|
"url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %},
|
||||||
|
"sameAs": {{ site.social.links | jsonify }}{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% if site.google_site_verification %}
|
||||||
|
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
||||||
|
{% endif %}
|
||||||
|
{% if site.bing_site_verification %}
|
||||||
|
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
||||||
|
{% endif %}
|
||||||
|
{% if site.alexa_site_verification %}
|
||||||
|
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
||||||
|
{% endif %}
|
||||||
|
{% if site.yandex_site_verification %}
|
||||||
|
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
||||||
|
{% endif %}
|
||||||
|
{% if site.naver_site_verification %}
|
||||||
|
<meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
|
||||||
|
{% endif %}
|
||||||
|
{% if site.baidu_site_verification %}
|
||||||
|
<meta name="baidu-site-verification" content="{{ site.baidu_site_verification }}">
|
||||||
|
{% endif %}
|
||||||
|
<!-- end _includes/seo.html -->
|
|
@ -0,0 +1,22 @@
|
||||||
|
{% if author_profile or layout.author_profile or site.defaults.posts.author_profile or site.defaults.pages.author_profile or sidebar or site.defaults.posts.sidebar %}
|
||||||
|
|
||||||
|
{% assign sidebar = sidebar | default: site.defaults.posts.sidebar | default: false %}
|
||||||
|
|
||||||
|
<div class="sidebar sticky">
|
||||||
|
{% if page.author_profile or layout.author_profile or site.defaults.posts.author_profile or site.defaults.pages.author_profile %}{% include author-profile.html %}{% endif %}
|
||||||
|
{% if sidebar %}
|
||||||
|
{% for s in sidebar %}
|
||||||
|
{% if s.image %}
|
||||||
|
<img src="{{ s.image | relative_url }}"
|
||||||
|
alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
|
||||||
|
{% endif %}
|
||||||
|
{% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
|
||||||
|
{% if s.text %}{{ s.text | markdownify }}{% endif %}
|
||||||
|
{% if s.nav %}{% include nav_list nav=s.nav %}{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% if sidebar.nav %}
|
||||||
|
{% include nav_list nav=sidebar.nav %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<nav class="skip-links">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#site-nav" class="screen-reader-shortcut">{{ ui-text[site.locale].skip_primary_nav | default: 'Skip to primary navigation' }}</a></li>
|
||||||
|
<li><a href="#main" class="screen-reader-shortcut">{{ ui-text[site.locale].skip_content | default: 'Skip to content' }}</a></li>
|
||||||
|
<li><a href="#footer" class="screen-reader-shortcut">{{ ui-text[site.locale].skip_footer | default: 'Skip to footer' }}</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<section class="page__share">
|
||||||
|
{% if ui-text[site.locale].share_on_label %}
|
||||||
|
<h4 class="page__share-title">{{ ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fab fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
|
||||||
|
|
||||||
|
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
|
||||||
|
|
||||||
|
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
|
||||||
|
</section>
|
|
@ -0,0 +1,19 @@
|
||||||
|
{% case site.tag_archive.type %}
|
||||||
|
{% when "liquid" %}
|
||||||
|
{% assign path_type = "#" %}
|
||||||
|
{% when "jekyll-archives" %}
|
||||||
|
{% assign path_type = nil %}
|
||||||
|
{% endcase %}
|
||||||
|
|
||||||
|
{% if site.tag_archive.path %}
|
||||||
|
{% assign tags_sorted = tags | sort_natural %}
|
||||||
|
|
||||||
|
<p class="page__taxonomy">
|
||||||
|
<strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
|
||||||
|
<span itemprop="keywords">
|
||||||
|
{% for tag_word in tags_sorted %}
|
||||||
|
<a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||||
|
{% endfor %}
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue