2022-06-08 18:58:29 +00:00
@use super::{header_html, footer_html};
@use crate::{post::Post, tmpl::nag};
2020-07-16 19:32:30 +00:00
2022-06-08 18:58:29 +00:00
@(post: Post, body: impl ToHtml, referer: Option< String > )
2020-07-16 19:32:30 +00:00
@:header_html(Some(& post.front_matter.title.clone()), None)
2018-03-30 00:46:59 +00:00
<!-- Twitter -->
< meta name = "twitter:card" content = "summary" / >
2020-07-16 19:32:30 +00:00
< meta name = "twitter:site" content = "@@theprincessxena" / >
< meta name = "twitter:title" content = "@post.front_matter.title" / >
2021-01-19 01:43:03 +00:00
< meta name = "twitter:description" content = "Posted on @post.date.format(" % Y- % m- % d " ) " / >
2018-03-30 00:46:59 +00:00
<!-- Facebook -->
< meta property = "og:type" content = "website" / >
2020-07-16 19:32:30 +00:00
< meta property = "og:title" content = "@post.front_matter.title" / >
2021-08-07 16:22:05 +00:00
< meta property = "og:site_name" content = "Xe's Blog" / >
2018-03-30 00:46:59 +00:00
<!-- Description -->
2021-08-07 16:22:05 +00:00
< meta name = "description" content = "@post.front_matter.title - Xe's Blog" / >
2022-05-26 17:28:35 +00:00
< meta name = "author" content = "Xe Iaso" / >
2019-02-13 15:18:39 +00:00
2021-01-20 01:42:09 +00:00
@if post.front_matter.redirect_to.is_none() {
2022-05-26 17:28:35 +00:00
< link rel = "canonical" href = "https://xeiaso.net/@post.link" / >
} else {
< link rel = "canonical" href = "@post.front_matter.redirect_to.as_ref().unwrap()" / >
2021-01-20 01:42:09 +00:00
}
2019-02-13 15:30:40 +00:00
2019-02-13 15:18:39 +00:00
< script type = "application/ld+json" >
2020-07-16 19:32:30 +00:00
@{
"@@context": "http://schema.org",
"@@type": "Article",
"headline": "@post.front_matter.title",
2022-05-26 17:28:35 +00:00
"image": "https://xeiaso.net/static/img/avatar.png",
"url": "https://xeiaso.net/@post.link",
2021-01-19 01:43:03 +00:00
"datePublished": "@post.date.format("%Y-%m-%d")",
2020-07-16 19:32:30 +00:00
"mainEntityOfPage": @{
"@@type": "WebPage",
2022-05-26 17:28:35 +00:00
"@@id": "https://xeiaso.net/@post.link"
2020-07-16 19:32:30 +00:00
@},
"author": @{
"@@type": "Person",
2022-05-26 17:28:35 +00:00
"name": "Xe Iaso"
2020-07-16 19:32:30 +00:00
@},
"publisher": @{
"@@type": "Person",
2022-05-26 17:28:35 +00:00
"name": "Xe Iaso"
2020-07-16 19:32:30 +00:00
@}
@}
2019-02-13 15:18:39 +00:00
< / script >
2017-05-20 22:06:30 +00:00
2021-01-20 01:35:13 +00:00
@if let Some(to) = post.front_matter.redirect_to.clone() {
2022-05-07 14:32:04 +00:00
< meta http-equiv = "refresh" content = "0;URL='@to'" / >
2021-01-20 01:35:13 +00:00
< script >
window.location.replace("@to");
< / script >
}
2022-06-08 18:58:29 +00:00
@Html(nag::referer(referer).0)
2021-12-19 17:54:02 +00:00
2021-07-08 01:17:28 +00:00
< h1 > @post.front_matter.title< / h1 >
2022-06-08 18:58:29 +00:00
@Html(nag::prerelease(& post).0)
2022-05-05 14:58:23 +00:00
2021-07-08 01:17:28 +00:00
< small > A @post.read_time_estimate_minutes minute read.< / small >
2020-07-16 19:32:30 +00:00
@body
2017-05-20 22:06:30 +00:00
< hr / >
2022-02-27 19:12:53 +00:00
@if post.front_matter.vod.is_some() {
< p > This post was written live on < a href = "https://twitch.tv/princessxen" > Twitch< / a > . You can check out the stream recording on Twitch < a href = "@post.front_matter.vod.as_ref().unwrap().twitch" > here< / a > and on YouTube < a href = "@post.front_matter.vod.as_ref().unwrap().youtube" > here< / a > .< / p >
}
2019-03-20 16:37:33 +00:00
<!-- The button that should be clicked. -->
< button onclick = "share_on_mastodon()" > Share on Mastodon< / button >
2019-07-05 16:36:33 +00:00
2020-07-16 19:32:30 +00:00
< p > This article was posted on @post.detri(). Facts and circumstances may have changed since publication. Please < a href = "/contact" > contact me< / a > before jumping to conclusions if something seems wrong or unclear.< / p >
2019-07-05 16:36:33 +00:00
2020-07-16 19:32:30 +00:00
@if post.front_matter.series.is_some() {
< p > Series: < a href = "/blog/series/@post.front_matter.series.as_ref().unwrap()" > @post.front_matter.series.as_ref().unwrap()< / a > < / p >
}
2019-09-12 22:49:03 +00:00
2020-07-16 19:32:30 +00:00
@if post.front_matter.tags.is_some() {
< p > Tags: @for tag in post.front_matter.tags.as_ref().unwrap() { < code > @tag< / code > }< / p >
}
2019-09-12 22:49:03 +00:00
2020-12-02 21:16:58 +00:00
@if post.mentions.len() != 0 {
< p > This post was < a href = "https://www.w3.org/TR/webmention/" > WebMention< / a > ed at the following URLs:
< ul >
@for mention in post.mentions {
< li > < a href = "@mention.source" > @mention.title.unwrap_or(mention.source)< / a > < / li >
}
< / ul >
< / p >
} else {
< p > This post was not < a href = "https://www.w3.org/TR/webmention/" > WebMention< / a > ed yet. You could be the first!< / p >
}
2020-09-19 15:33:46 +00:00
< p > The art for Mara was drawn by < a href = "https://selic.re/" > Selicre< / a > .< / p >
2019-03-20 16:37:33 +00:00
2021-04-02 02:30:45 +00:00
< p > The art for Cadey was drawn by < a href = "https://artzorastudios.weebly.com/" > ArtZora Studios< / a > .< / p >
2020-09-19 15:33:46 +00:00
< script >
// The actual function. Set this as an onclick function for your "Share on Mastodon" button
function share_on_mastodon() @{
2019-03-20 16:37:33 +00:00
// Prefill the form with the user's previously-specified Mastodon instance, if applicable
var default_url = localStorage['mastodon_instance'];
// If there is no cached instance/domain, then insert a "https://" with no domain at the start of the prompt.
if (!default_url)
2020-09-19 15:33:46 +00:00
default_url = "https://";
2019-03-20 16:37:33 +00:00
var instance = prompt("Enter your instance's address: (ex: https://linuxrocks.online)", default_url);
2020-07-16 19:32:30 +00:00
if (instance) @{
2020-09-19 15:33:46 +00:00
// Handle URL formats
if ( !instance.startsWith("https://") & & !instance.startsWith("http://") )
instance = "https://" + instance;
// get the current page's url
var url = window.location.href;
// get the page title from the og:title meta tag, if it exists.
var title = document.querySelectorAll('meta[property="og:title"]')[0].getAttribute("content");
// Otherwise, use the < title > tag as the title
if (!title) var title = document.getElementsByTagName("title")[0].innerHTML;
// Handle slash
if ( !instance.endsWith("/") )
instance = instance + "/";
// Cache the instance/domain for future requests
localStorage['mastodon_instance'] = instance;
// Hashtags
var hashtags = "#blogpost";
@if post.front_matter.series.is_some() {
hashtags += "#@post.front_matter.series.as_ref().unwrap()";
}
@if post.front_matter.tags.is_some() {
hashtags += "@for tag in post.front_matter.tags.as_ref().unwrap() { #@tag }";
}
// Tagging users, such as offical accounts or the author of the post
2021-07-06 10:34:33 +00:00
var author = "@@cadey@@pony.social";
2020-09-19 15:33:46 +00:00
// Create the Share URL
// https://someinstance.tld/share?text=URL%20encoded%20text
mastodon_url = instance + "share?text=" + encodeURIComponent(title + "\n\n" + url + "\n\n" + hashtags + " " + author);
// Open a new window at the share location
window.open(mastodon_url, '_blank');
@}
2020-07-16 19:32:30 +00:00
@}
2019-03-20 16:37:33 +00:00
< / script >
2021-12-19 17:54:02 +00:00
2020-07-16 19:32:30 +00:00
@:footer_html()