Replace broken piwiki analytics with self-hosted plausible

* templates/partials/analytics.html: Upon a client load of the website, determine which site
they are viewing (dev, staging, production) and setup plausible analytics appropriately.

* templates/default.html: Remove non-functional piwiki script reference and replace with a
reference to the new partial template for analytics

* src/site.hs (main): Remove remnant of application cache support

* js/default.js: Remove unneeded analytics code specific to piwiki. No additions were made here in support of plausible

* TODO.org: Mark associated TODO item DONE
This commit is contained in:
Collin J. Doering 2021-12-18 20:37:59 -05:00
parent 913c2f0e67
commit 9171aa88ad
Signed by: rekahsoft
GPG Key ID: 7B4DEB93212B3022
5 changed files with 30 additions and 60 deletions

View File

@ -9,7 +9,11 @@ CLOSED: [2021-11-28 Sun 10:43]
See:
- [[file:js/default.js::// Add fullscreen functionality to inline-images and figures][Fullscreen image onclik functionality is added in the router upon content loading, which doesn't occur on the intial page load]]
* TODO Completely replace all references to stack
* TODO Fix analytics (pywiki is no longer in use, find and use something else)
* DONE Fix analytics (pywiki is no longer in use, find and use something else)
CLOSED: [2021-12-18 Sat 20:31]
- Note taken on [2021-12-18 Sat 20:31] \\
Decided to use [[https://github.com/plausible/analytics][Plausible]], self hosted on my single use AWS ec2.
- State "DONE" from "TODO" [2021-12-18 Sat 20:31]
* TODO Modernize javascript in [[file:js/default.js][js/default.js]]
* TODO Allow posts (and pages?) to be written in org-mode

View File

@ -27,9 +27,6 @@
/*global jQuery, MathJax*/
//------------------------
// Global array for processing piwik analytics commands
var _paq = _paq || [];
(function ($, mj) {
"use strict";
@ -196,49 +193,6 @@ var _paq = _paq || [];
return spec;
}()),
analytics = (function () {
var inited = false,
spec = {
trackPageView: trackPageView,
debugEnable: function () {
init();
}
};
function trackPageView (href) {
if (inited) {
_paq.push(["setDocumentTitle", document.domain + href]);
_paq.push(["trackPageView"]);
}
}
function init() {
if (!inited) {
_paq.push(["setDoNotTrack", true]);
_paq.push(["enableLinkTracking"]);
_paq.push(["setTrackerUrl", "//analytics.rekahsoft.ca/piwik.php"]);
_paq.push(["setSiteId", 1]);
inited = true;
}
}
// Initialize piwik.js when site is initially loaded
router.onInit(function () {
if (document.domain != "localhost") {
init();
trackPageView('/');
}
});
// Track page views with piwik each time the url changes
router.onChange(function (url, dta) {
trackPageView(url);
});
return spec
}()),
site = (function () {
var status = (function () {
var messages = [],

View File

@ -151,9 +151,7 @@ main = hakyllWith myConfig $ do
paginateContext paginatedTaggedPosts pageNum <>
constField "tag" tag <>
listField "posts" (taggedPostCtx tags) (return posts)
indexCtx = if pageNum <= 2
then appCacheCtx <> navCtx
else navCtx
indexCtx = navCtx
makeItem ""
>>= loadAndApplyTemplate "templates/tag-page.html" ctx
@ -186,9 +184,7 @@ main = hakyllWith myConfig $ do
let ctx = taggedPostCtx tags <>
paginateContext paginatedPosts pageNum <>
listField "posts" (taggedPostCtx tags) (return posts)
indexCtx = if pageNum <= 2
then appCacheCtx <> navCtx
else navCtx
indexCtx = navCtx
makeItem ""
>>= loadAndApplyTemplate "templates/pages/blog.html" ctx
@ -215,7 +211,7 @@ main = hakyllWith myConfig $ do
listField "posts" (taggedPostCtx tags) (return posts) <>
tagCloudField "tagCloud" 65 135 tags <>
defaultContext
indexCtx = navCtx <> appCacheCtx
indexCtx = navCtx
sectionCtx <- getResourceBody >>= genSectionContext
pg <- loadSnapshot (fromFilePath pageTemplate) "original"
@ -286,9 +282,6 @@ postCtx = dateField "date" "%B %e, %Y" <>
taggedPostCtx :: Tags -> Context String
taggedPostCtx tags = tagsField "tags" tags <> postCtx
appCacheCtx :: Context String
appCacheCtx = constField "appcache" "true"
pageWeight :: (Functor f, MonadMetadata f) => Item a -> f Int
pageWeight i = fmap (maybe 0 read) $ getMetadataField (itemIdentifier i) "weight"

View File

@ -24,9 +24,7 @@
</head>
<body>
<!-- Piwik -->
<script type="text/javascript" async defer src="//analytics.rekahsoft.ca/piwik.js"></script>
<noscript><img src="//analytics.rekahsoft.ca/piwik.php?idsite=1" style="border:0;display:none;" alt="" /></noscript>
$partial("templates/partials/analytics.html")$
$partial("templates/partials/logo-banner.html")$
$partial("templates/partials/nav.html")$

View File

@ -0,0 +1,21 @@
<script>
var ref = document.createElement("script");
ref.setAttribute("type", "text/javascript");
var script = "https://analytics.rekahsoft.ca/js/plausible.js";
switch (window.location.hostname) {
case "www.blog.rekahsoft.ca":
ref.setAttribute("data-domain", "blog.rekahsoft.ca");
break;
case "www.blog.staging.rekahsoft.ca":
ref.setAttribute("data-domain", "blog.staging.rekahsoft.ca");
break;
default:
script = "https://analytics.rekahsoft.ca/js/plausible.exclusions.local.js";
ref.setAttribute("data-domain", "localhost:3000");
ref.setAttribute("data-exclude", "localhost:3000");
}
ref.setAttribute("src", script);
document.getElementsByTagName("head")[0].appendChild(ref)
</script>