MediaWiki: Common.js: Difference between revisions

From LINKS Community Center
Jump to: navigation, search
Cschwentker (talk | contribs)
No edit summary
Eschmidt (talk | contribs)
No edit summary
 
(50 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 || [];
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* Tracker methods like 'setCustomDimension' should be called before 'trackPageView'. */
_paq.push(['trackPageView']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
_paq.push(['enableLinkTracking']);
(function () {
(function () {
     var u = "//analytics.safetyinnovation.center/";
     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 */


/* Recent Changes Start */
(function () {
    var changesWrapper = document.getElementById('recent-changes');
    if (!changesWrapper) return;


     var myElement = document.getElementById('recentChanges');
     var params = new URLSearchParams({
    if (myElement) {
        action: 'query',
         var url = "https://links.communitycenter.eu/w/api.php";
        list: 'recentchanges',
         var params = {
         rcnamespace: '0|-2',    // Main and Media
            action: "query",
         rctoponly: true,
            list: "recentchanges",
        rcprop: 'title|user|timestamp',
            rcprop: "title|ids|sizes|flags|user|timestamp",
        rclimit: '5',
            rclimit: "3",
        format: 'json'
            format: "json"
    });
        };


        url = url + "?origin=*";
    fetch('https://links.communitycenter.eu/api.php?origin=*&' + params.toString())
         Object.keys(params).forEach(function (key) { url += "&" + key + "=" + params[key]; });
        .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'; }


        fetch(url)
                return output
            .then(function (response) { return response.json(); })
                    + '<div class="recent-change">'
            .then(function (response) {
                    + '<div class="change-title"><a href="/index.php/' + change.title + '">' + change.title + '</a></div>'
                var recentchanges = response.query.recentchanges;
                    + '<div>'
                for (var rc in recentchanges) {
                     + '<span class="change-user">' + change.user + '</span>'
                     myElement.innerHTML = "<b>" + recentchanges[rc].title + "</b>";
                    + '<span class="change-time">'
                     console.log(recentchanges[rc].title);
                     + (change.type === 'new' ? 'Created ' : change.type === 'edit' ? 'Modified ' : '')
                }
                    + time + ' ' + unit + (time > 1 ? 's' : '') + ' ago'
             })
                    + '</span>'
            .catch(function (error) { console.log(error); });
                    + '</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')
/* End Matomo Code */
});

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') 
});