@use super::{header_html, footer_html}; @use crate::post::Post; @(post: Post, body: impl ToHtml) @:header_html(Some(&post.front_matter.title.clone()), None) <!-- Twitter --> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@@theprincessxena" /> <meta name="twitter:title" content="@post.front_matter.title" /> <meta name="twitter:description" content="Posted on @post.date" /> <!-- Facebook --> <meta property="og:type" content="website" /> <meta property="og:title" content="@post.front_matter.title" /> <meta property="og:site_name" content="Christine Dodrill's Blog" /> <!-- Description --> <meta name="description" content="@post.front_matter.title - Christine Dodrill's Blog" /> <meta name="author" content="Christine Dodrill"> <link rel="canonical" href="https://christine.website/@post.link"> <script type="application/ld+json"> @{ "@@context": "http://schema.org", "@@type": "Article", "headline": "@post.front_matter.title", "image": "https://christine.website/static/img/avatar.png", "url": "https://christine.website/@post.link", "datePublished": "@post.date", "mainEntityOfPage": @{ "@@type": "WebPage", "@@id": "https://christine.website/@post.link" @}, "author": @{ "@@type": "Person", "name": "Christine Dodrill" @}, "publisher": @{ "@@type": "Person", "name": "Christine Dodrill" @} @} </script> @body <hr /> <!-- The button that should be clicked. --> <button onclick="share_on_mastodon()">Share on Mastodon</button> <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> @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> } @if post.front_matter.tags.is_some() { <p>Tags: @for tag in post.front_matter.tags.as_ref().unwrap() { <code>@tag</code> }</p> } @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> } <p>The art for Mara was drawn by <a href="https://selic.re/">Selicre</a>.</p> <script> // The actual function. Set this as an onclick function for your "Share on Mastodon" button function share_on_mastodon() @{ // 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) default_url = "https://"; var instance = prompt("Enter your instance's address: (ex: https://linuxrocks.online)", default_url); if (instance) @{ // 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 var author = "@@cadey@@mst3k.interlinked.me"; // 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'); @} @} </script> <script src="https://cdn.christine.website/file/christine-static/prism/prism.js"></script> @:footer_html()