MediaWiki: Common.js: Difference between revisions
From LINKS Community Center
Cschwentker (talk | contribs) No edit summary |
Eschmidt (talk | contribs) No edit summary |
||
(54 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
/* Matomo */ | /* Matomo */ | ||
var _paq = window._paq = window._paq || []; | |||
/* Tracker methods like 'setCustomDimension' should be called before 'trackPageView'. */ | |||
_paq.push(['trackPageView']); | |||
_paq.push(['enableLinkTracking']); | |||
(function () { | |||
var u= | var u = '//analytics.safetyinnovation.center/'; | ||
_paq.push(['setTrackerUrl', u+'matomo.php']); | _paq.push(['setTrackerUrl', u + 'matomo.php']); | ||
_paq.push(['setSiteId', '11']); | _paq.push(['setSiteId', '11']); | ||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; | var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; | ||
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); | g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); | ||
})(); | |||
/* End Matomo Code */ | /* End Matomo Code */ | ||
/* Recent Changes Start */ | |||
(function () { | (function () { | ||
var changesWrapper = document.getElementById('recent-changes'); | |||
if (!changesWrapper) return; | |||
var params = new URLSearchParams({ | |||
action: 'query', | |||
list: 'recentchanges', | |||
rcnamespace: '0|-2', // Main and Media | |||
rctoponly: true, | |||
rcprop: 'title|user|timestamp', | |||
rclimit: '5', | |||
format: 'json' | |||
}); | |||
fetch('https://links.communitycenter.eu/api.php?origin=*&' + params.toString()) | |||
.then(function (response) { return response.json(); }) | |||
.then(function (response) { | |||
var domStr = response.query.recentchanges.reduce(function (output, change) { | |||
var sec = 1000, min = sec * 60, hour = min * 60, day = hour * 24, month = day * 30, year = day * 365; | |||
var time, unit, diff = new Date().getTime() - new Date(change.timestamp).getTime(); | |||
if (diff > year) { time = Math.floor(diff / year); unit = 'year'; } | |||
else if (diff > month) { time = Math.floor(diff / month); unit = 'month'; } | |||
else if (diff > day) { time = Math.floor(diff / day); unit = 'day'; } | |||
else if (diff > hour) { time = Math.floor(diff / hour); unit = 'hour'; } | |||
else if (diff > min) { time = Math.floor(diff / min); unit = 'minute'; } | |||
else { time = Math.floor(diff / sec); unit = 'second'; } | |||
return output | |||
+ '<div class="recent-change">' | |||
+ '<div class="change-title"><a href="/index.php/' + change.title + '">' + change.title + '</a></div>' | |||
+ '<div>' | |||
+ '<span class="change-user">' + change.user + '</span>' | |||
+ '<span class="change-time">' | |||
+ (change.type === 'new' ? 'Created ' : change.type === 'edit' ? 'Modified ' : '') | |||
+ time + ' ' + unit + (time > 1 ? 's' : '') + ' ago' | |||
+ '</span>' | |||
+ '</div>' | |||
+ '</div>' | |||
}, ''); | |||
changesWrapper.innerHTML = domStr; | |||
}) | |||
.catch(function (error) { console.log('Error in Recent Changes script', error); }); | |||
})(); | |||
/* Recent Changes End */ | |||
$(document).ready(function() { | |||
// Remove the menu option for Visual Editor if a PageForm is available. | |||
if ($('#ca-formedit').length > 0) { | |||
$('#ca-ve-edit').hide(); | |||
} | } | ||
// Simple load hook. Used for styling. | |||
$(document.body).addClass('loaded') | |||
}); |
Latest revision as of 17:11, 27 January 2023
/* Any JavaScript here will be loaded for all users on every page load. */ /* Matomo */ var _paq = window._paq = window._paq || []; /* Tracker methods like 'setCustomDimension' should be called before 'trackPageView'. */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = '//analytics.safetyinnovation.center/'; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '11']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); /* End Matomo Code */ /* Recent Changes Start */ (function () { var changesWrapper = document.getElementById('recent-changes'); if (!changesWrapper) return; var params = new URLSearchParams({ action: 'query', list: 'recentchanges', rcnamespace: '0|-2', // Main and Media rctoponly: true, rcprop: 'title|user|timestamp', rclimit: '5', format: 'json' }); fetch('https://links.communitycenter.eu/api.php?origin=*&' + params.toString()) .then(function (response) { return response.json(); }) .then(function (response) { var domStr = response.query.recentchanges.reduce(function (output, change) { var sec = 1000, min = sec * 60, hour = min * 60, day = hour * 24, month = day * 30, year = day * 365; var time, unit, diff = new Date().getTime() - new Date(change.timestamp).getTime(); if (diff > year) { time = Math.floor(diff / year); unit = 'year'; } else if (diff > month) { time = Math.floor(diff / month); unit = 'month'; } else if (diff > day) { time = Math.floor(diff / day); unit = 'day'; } else if (diff > hour) { time = Math.floor(diff / hour); unit = 'hour'; } else if (diff > min) { time = Math.floor(diff / min); unit = 'minute'; } else { time = Math.floor(diff / sec); unit = 'second'; } return output + '<div class="recent-change">' + '<div class="change-title"><a href="/index.php/' + change.title + '">' + change.title + '</a></div>' + '<div>' + '<span class="change-user">' + change.user + '</span>' + '<span class="change-time">' + (change.type === 'new' ? 'Created ' : change.type === 'edit' ? 'Modified ' : '') + time + ' ' + unit + (time > 1 ? 's' : '') + ' ago' + '</span>' + '</div>' + '</div>' }, ''); changesWrapper.innerHTML = domStr; }) .catch(function (error) { console.log('Error in Recent Changes script', error); }); })(); /* Recent Changes End */ $(document).ready(function() { // Remove the menu option for Visual Editor if a PageForm is available. if ($('#ca-formedit').length > 0) { $('#ca-ve-edit').hide(); } // Simple load hook. Used for styling. $(document.body).addClass('loaded') });