MediaWiki: Common.js: Difference between revisions

From LINKS Community Center
Jump to: navigation, search
Eschmidt (talk | contribs)
No edit summary
Eschmidt (talk | contribs)
No edit summary
Line 23: Line 23:
         action: 'query',
         action: 'query',
         list: 'recentchanges',
         list: 'recentchanges',
        rcnamespace: '0|-2',
         rcprop: 'title|user|timestamp',
         rcprop: 'title|user|timestamp',
         rclimit: '5',
         rclimit: '5',
Line 33: Line 34:
             var domStr = response.query.recentchanges.reduce(function (output, change) {
             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 sec = 1000, min = sec * 60, hour = min * 60, day = hour * 24, month = day * 30, year = day * 365;
                 var timeStr, diff = new Date().getTime() - new Date(change.timestamp).getTime();
                 var time, diff = new Date().getTime() - new Date(change.timestamp).getTime();
                 if (diff > year) { timeStr = Math.floor(diff / year) + ' years ago'; }
                 if (diff > year) { time = Math.floor(diff / year) + ' years ago'; }
                 else if (diff > month) { timeStr = Math.floor(diff / month) + ' months ago'; }
                 else if (diff > month) { time = Math.floor(diff / month) + ' months ago'; }
                 else if (diff > day) { timeStr = Math.floor(diff / day) + ' days ago'; }
                 else if (diff > day) { time = Math.floor(diff / day) + ' days ago'; }
                 else if (diff > hour) { timeStr = Math.floor(diff / hour) + ' hours ago'; }
                 else if (diff > hour) { time = Math.floor(diff / hour) + ' hours ago'; }
                 else if (diff > min) { timeStr = Math.floor(diff / min) + ' minutess ago'; }
                 else if (diff > min) { time = Math.floor(diff / min) + ' minutess ago'; }
                 else { timeStr = Math.floor(diff / sec) + ' seconds ago'; }
                 else { time = Math.floor(diff / sec) + ' seconds ago'; }


                 return output
                 return output
Line 45: Line 46:
                     + '<span>' + change.title + '</span>'
                     + '<span>' + change.title + '</span>'
                     + '<span>' + change.user + '</span>'
                     + '<span>' + change.user + '</span>'
                     + '<span>' + timeStr + '</span>'
                     + '<span>' + time + '</span>'
                     + '</div>'
                     + '</div>'
             }, '');
             }, '');

Revision as of 14:53, 15 February 2022

/* 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('recentChanges');
    if (!changesWrapper) return;

    var params = new URLSearchParams({
        action: 'query',
        list: 'recentchanges',
        rcnamespace: '0|-2',
        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, diff = new Date().getTime() - new Date(change.timestamp).getTime();
                if (diff > year) { time = Math.floor(diff / year) + ' years ago'; }
                else if (diff > month) { time = Math.floor(diff / month) + ' months ago'; }
                else if (diff > day) { time = Math.floor(diff / day) + ' days ago'; }
                else if (diff > hour) { time = Math.floor(diff / hour) + ' hours ago'; }
                else if (diff > min) { time = Math.floor(diff / min) + ' minutess ago'; }
                else { time = Math.floor(diff / sec) + ' seconds ago'; }

                return output
                    + '<div class="recentChange">'
                    + '<span>' + change.title + '</span>'
                    + '<span>' + change.user + '</span>'
                    + '<span>' + time + '</span>'
                    + '</div>'
            }, '');
            changesWrapper.innerHTML = domStr;
        })
        .catch(function (error) { console.log('Error in Recent Changes Widget', error); });

})();
/* Recent Changes End */