aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-03-20 09:37:33 -0700
committerChristine Dodrill <me@christine.website>2019-03-20 09:37:33 -0700
commit733b0dc47f3dda1317d2b556bbef320064be1ef5 (patch)
tree4fee57c242f25da2ebbc7c3b4c432d11449e5ae0
parent68551814827d91e5ece378ee86f9116ce09ec105 (diff)
downloadxesite-733b0dc47f3dda1317d2b556bbef320064be1ef5.tar.xz
xesite-733b0dc47f3dda1317d2b556bbef320064be1ef5.zip
templates/blogpost: share on mastodon button
-rw-r--r--templates/blogpost.html51
1 files changed, 51 insertions, 0 deletions
diff --git a/templates/blogpost.html b/templates/blogpost.html
index d79a536..a7bad20 100644
--- a/templates/blogpost.html
+++ b/templates/blogpost.html
@@ -47,4 +47,55 @@
<hr />
+<!-- The button that should be clicked. -->
+<button onclick="share_on_mastodon()">Share on Mastodon</button>
+<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";
+
+ // 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>
+
{{ end }}