diff options
| author | Christine Dodrill <me@christine.website> | 2020-07-16 15:32:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-16 15:32:30 -0400 |
| commit | 385d25c9f96c0acd5d932488e3bd0ed36ceb4dd7 (patch) | |
| tree | af789f7250519b23038a7e5ea0ae7f4f4c1ffdfc /templates/talkpost.rs.html | |
| parent | 449e934246c82d90dd0aac2644d67f928befeeb4 (diff) | |
| download | xesite-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.html | 120 |
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() |
