Benutzer:Gymel/MaintMents.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/**
 * Konfiguration mit
   mw.user.options.set('wartungslisten', [
    'Wikipedia:PND/Fehlermeldung/*'
   ]);
 * in [[Spezial:Meine Benutzerseite/common.js]]
 * Möglich sind * und ? als Wildcards,
 * alternativ können auch reguläre Ausdrücke angegeben werden

 *** (c) schnark
 *** cf. http://de.wikipedia.org/wiki/Wikipedia:Technik/Skin/Werkstatt#Gadget-.2FScript-Idee

 */
 
(function ($, mw) {
"use strict";
var regEx = [];
function filter (titel) {
        for (var i = 0; i < regEx.length; i++) {
                if (regEx[i].test(titel)) {
                        return true;
                }
        }
        return false;
}
function anzeige (seiten) {
        var     html = '<p>Diese Seite ist auf ' +
                (seiten.length === 1 ? 'einer Wartungsliste' : seiten.length + ' Wartungslisten') +
                ' eingetragen:</p><ul>' +
                $.map(seiten, function (titel) {
                        return  '<li>' +
                                        mw.html.element('a', {href: mw.util.getUrl(titel)}, titel) +
                                        '</li>';
                }).join('') +
                '</ul>';
        $(function() {
                mw.util.$content.prepend($.parseHTML(html));
        });
}
function fehler (meldung) {
        mw.util.jsMessage(meldung);
}
function apiQuery () {
        $.getJSON(mw.util.wikiScript('api'), {
                action: 'query',
                list: 'backlinks',
                bltitle: mw.config.get('wgTitle'),
                blnamspace: '2|4|100', //Benutzer:, Wikipedia:, Portal:
                blfilterredir: 'nonredirects',
                bllimit: 'max',
                format: 'json'
        }, function (json) {
                var wartungsseiten = [], i;
                if (json && json.query && json.query.backlinks) {
                        for (i = 0; i < json.query.backlinks.length; i++) {
                                if (filter(json.query.backlinks[i].title)) {
                                        wartungsseiten.push(json.query.backlinks[i].title);
                                }
                        }
                }
                if (wartungsseiten.length) {
                        anzeige(wartungsseiten);
                }
        });
}
function init () {
        var liste = mw.user.options.get('wartungslisten', []), i;
        if (liste.length === 0) {
                fehler('Du hast keine Wartungslisten konfiguriert!');
                return;
        }
        for (i = 0; i < liste.length; i++) {
                if ($.type(liste[i]) === 'regexp') {
                        regEx.push(liste[i]);
                } else {
                        regEx.push(new RegExp(
                                '^' + $.escapeRE(liste[i])
                                        .replace(/\\\*/g, '.*')
                                        .replace(/\\\?/g, '.') + '$'
                        ));
                }
        }
        apiQuery();
}
 
if (mw.config.get('wgNamespaceNumber') === 0 && mw.config.get('wgAction') === 'view') {
        mw.loader.using(['mediawiki.util', 'jquery.mwExtension', 'user', 'mediawiki.user', 'user.options'], init);
}
 
})(jQuery, mediaWiki);