aboutsummaryrefslogtreecommitdiff
path: root/templates/talkpost.rs.html
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2020-07-16 15:32:30 -0400
committerGitHub <noreply@github.com>2020-07-16 15:32:30 -0400
commit385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7 (patch)
treeaf789f7250519b23038a7e5ea0ae7f4f4c1ffdfc /templates/talkpost.rs.html
parent449e934246c82d90dd0aac2644d67f928befeeb4 (diff)
downloadxesite-385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7.tar.xz
xesite-385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7.zip
Rewrite site backend in Rust (#178)
* add shell.nix changes for Rust #176 * set up base crate layout * add first set of dependencies * start adding basic app modules * start html templates * serve index page * add contact and feeds pages * add resume rendering support * resume cleanups * get signalboost page working * rewrite config to be in dhall * more work * basic generic post loading * more tests * initial blog index support * fix routing? * render blogposts * X-Clacks-Overhead * split blog handlers into blog.rs * gallery index * gallery posts * fix hashtags * remove instantpage (it messes up the metrics) * talk support + prometheus * Create rust.yml * Update rust.yml * Update codeql-analysis.yml * add jsonfeed library * jsonfeed support * rss/atom * go mod tidy * atom: add posted date * rss: add publishing date * nix: build rust program * rip out go code * rip out go templates * prepare for serving in docker * create kubernetes deployment * create automagic deployment * build docker images on non-master * more fixes * fix timestamps * fix RSS/Atom/JSONFeed validation errors * add go vanity import redirecting * templates/header: remove this * atom feed: fixes * fix? * fix?? * fix rust tests * Update rust.yml * automatically show snow during the winter * fix dates * show commit link in footer * sitemap support * fix compiler warning * start basic patreon client * integrate kankyo * fix patreon client * add patrons page * remove this * handle patron errors better * fix build * clean up deploy * sort envvars for deploy * remove deps.nix * shell.nix: remove go * update README * fix envvars for tests * nice * blog: add rewrite in rust post * blog/site-update: more words
Diffstat (limited to 'templates/talkpost.rs.html')
-rw-r--r--templates/talkpost.rs.html120
1 files changed, 120 insertions, 0 deletions
diff --git a/templates/talkpost.rs.html b/templates/talkpost.rs.html
new file mode 100644
index 0000000..771179c
--- /dev/null
+++ b/templates/talkpost.rs.html
@@ -0,0 +1,120 @@
+@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
+
+<a href="@post.front_matter.slides_link.as_ref().unwrap()">Link to the slides</a>
+
+<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>
+}
+
+<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 = "#talk";
+
+ @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>
+
+@:footer_html()