Benutzer:Schnark/js/altehauptseite.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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//Dokumentation auf [[Benutzer:Schnark/js/altehauptseite]] <nowiki>

/*global mw: true */
(function($){

var altehauptseite = {
    version: 1.6,

    wiki: '', //Pfad

//Datum und seine Bestandteile ('jjjjmmdd', 'd', 'dddd', 'mmmm', 'jjjj')
    datum: '',
    tag: '',
    wochentag: '',
    monat: '',
    jahr: '',

//Datum in Bestandteile zerlegen
    parseDate: function () {
       var re = /(\d{4})(\d\d)(\d\d)/;
       var ergebnis = re.exec(altehauptseite.datum);
       altehauptseite.jahr = ergebnis[1];
       var m = parseInt(ergebnis[2], 10) - 1, d = parseInt(ergebnis[3], 10);
       altehauptseite.tag = String(d);
       altehauptseite.monat = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'][m];
       var date = new Date(parseInt(ergebnis[1], 10), m, d);
       altehauptseite.wochentag = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'][date.getDay()];
    },

//HTML in einzelne Rubriken einfügen
    insertWPAktuell: function (html) {
       var d = $('#hauptseite-wikipedia');
       if (d.html()) {
          d.html(html);
       } else {
          $('#hauptseite-artikel').before(html);
       }
    },
    insertAdT: function (html) {
       $('#hauptseite-artikel .inhalt').html(html);
    },
    insertJahrestage: function (html) {
       $('#hauptseite-ereignisse').html('<h2> Was geschah am ' + altehauptseite.tag + '. ' + altehauptseite.monat + '?</h2><div class="inhalt">' + html + '<div class="mehr"><a href="' + altehauptseite.wiki + altehauptseite.tag + '._' + altehauptseite.monat + '" title="' + altehauptseite.tag + '. ' + altehauptseite.monat + '">Weitere Ereignisse</a></div></div>');
    },
    insertAktuell: function (html) {
       $('#hauptseite-nachrichten .inhalt').html(html + '<div class="mehr"><a href="' + altehauptseite.wiki + altehauptseite.monat + '_' + altehauptseite.jahr + '" title="' + altehauptseite.monat + ' ' + altehauptseite.jahr + '">Weitere Ereignisse</a>&nbsp;&middot;&nbsp;<a href="//de.wikinews.org/wiki/Hauptseite" title="n:Hauptseite">Wikinews</a></div>');
    },
    insertNekro: function (html) {
       $('#hauptseite-verstorbene .inhalt').html(html + '<div class="mehr"><a href="' + altehauptseite.wiki + 'Nekrolog_' + altehauptseite.jahr + '" title="Nekrolog ' + altehauptseite.jahr + '">Weitere kürzlich Verstorbene</a></div>');
    },
    insertSg: function (html) {
       $('#hauptseite-wissenswertes .inhalt').html(html + '<div class="mehr"><a href="' + altehauptseite.wiki + 'Spezial:Neue_Seiten" title="Spezial:Neue Seiten">Weitere neue Artikel&nbsp;&middot; <a href="' + altehauptseite.wiki + 'Wikipedia:Hauptseite/Schon_gewusst/Archiv" title="Wikipedia:Hauptseite/Schon_gewusst/Archiv">Frühere Schon-gewusst-Artikel</a></div>');
    },

//API Text parsen lassen
    parse: function (titel, text) {
       text = text.replace(/<noinclude>(?:.|\n)*?<\/noinclude>/g, ''); //noinclude entfernen
       text = text.replace(/^(?:.|\n)*?<onlyinclude>/, '').replace(/<\/onlyinclude>(?:.|\n)*?$/, '');
       text = text.replace(/^\n*/, '').replace(/\n*$/, '');
       text = '__NOEDITSECTION__\n' + text;
       if (titel.indexOf('Artikel des Tages') > -1) {
          text += '\n{{Wikipedia:Hauptseite/Artikel des Tages/Links}}';
       }
       var data = {action: 'parse', prop: 'text', text: text, format: 'json'};
       var url = mw.util.wikiScript('api');

       if (titel === 'Wikipedia:Hauptseite/Wikipedia aktuell') {
          if (text === '__NOEDITSECTION__\n') {
             altehauptseite.insertWPAktuell('');
          } else {
             $.getJSON(url, data, altehauptseite.parseWPAktuell);
          }
       } else if (titel.indexOf('Artikel des Tages') > -1) {
          $.getJSON(url, data, altehauptseite.parseAdT);
       } else if (titel.indexOf('Jahrestage') > -1) {
          $.getJSON(url, data, altehauptseite.parseJahrestage);
       } else if (titel.indexOf('Wikipedia:Hauptseite/Aktuelles') > -1) {
          $.getJSON(url, data, altehauptseite.parseAktuell);
       } else if (titel === 'Vorlage:Hauptseite Verstorbene') {
          $.getJSON(url, data, altehauptseite.parseNekro);
       } else if (titel.indexOf('Schon gewusst') > -1) {
          $.getJSON(url, data, altehauptseite.parseSg);
       }
    },
//geparsten Text weitergeben
    parseWPAktuell: function (json) {
       if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) {return;}
       altehauptseite.insertWPAktuell(json.parse.text['*']);
    },
    parseAdT: function (json) {
       if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) {return;}
       altehauptseite.insertAdT(json.parse.text['*']);
    },
    parseJahrestage: function (json) {
       if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) {return;}
       altehauptseite.insertJahrestage(json.parse.text['*']);
    },
    parseAktuell: function (json) {
       if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) {return;}
       altehauptseite.insertAktuell(json.parse.text['*']);
    },
    parseNekro: function (json) {
       if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) {return;}
       altehauptseite.insertNekro(json.parse.text['*']);
    },
    parseSg: function (json) {
       if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) {return;}
       altehauptseite.insertSg(json.parse.text['*']);
    },

//richtige Version heraussuchen
    getRevision: function (json) {
       if (!json || !json.query || !json.query.pages) {
          return;
       }
       var pages = json.query.pages;
       for (var id in pages) {
           altehauptseite.parse(pages[id].title, pages[id].revisions[0]['*']);
       }
    },

//alte Darstellung anstoßen
    doit: function () {
       altehauptseite.datum = $('#altesdatum').val();
       altehauptseite.go();
    },
    go: function () {
       altehauptseite.parseDate();
       var data = {action: 'query', prop: 'revisions', titles: '', rvlimit: 1, rvprop: 'content', rvdir: 'older', rvstart: altehauptseite.datum + '235959', format: 'json'},
           url = mw.util.wikiScript('api'),

           titel = ['Wikipedia:Hauptseite/Wikipedia aktuell',
                    'Wikipedia:Hauptseite/Artikel des Tages/' + altehauptseite.wochentag,
                    'Wikipedia:Hauptseite/Jahrestage/' + altehauptseite.monat + '/' + altehauptseite.tag,
                    'Wikipedia:Hauptseite/Aktuelles',
                    'Vorlage:Hauptseite Verstorbene',
                    'Wikipedia:Hauptseite/Schon gewusst'];
       if (altehauptseite.datum >= '20090127') { //Umstellung auf täglichen Wechsel
          titel[5] += '/' + altehauptseite.wochentag;
       }
       if (altehauptseite.datum <= '20090322') { //Versionsarchiv
          titel[3] += '/alt';
       }
       for (var i = 0; i < titel.length; i++) {
           data.titles = titel[i];
           $.getJSON(url, data, altehauptseite.getRevision);
       }
    },

//initialisieren
    init: function () {
      altehauptseite.wiki = mw.config.get('wgArticlePath').replace('$1', '');
      $('#firstHeading').after('<div id="altehauptseitediv" style="position:absolute;right:2px;top:-2px;cursor:pointer;"><input type="hidden" id="altesdatum" /></div>');
      $('#altesdatum').datepicker({showOn: 'button', buttonImageOnly: true, buttonText: 'Datum auswählen',
                                   buttonImage: '//upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Nuvola_apps_date.svg/22px-Nuvola_apps_date.svg.png',
                                   defaultDate: -1, onSelect: altehauptseite.doit, dateFormat: 'yymmdd'});
    }
};

if (mw.config.get('debug')) {window.altehauptseite = altehauptseite;}
$(document).trigger('loadWikiScript', ['Benutzer:Schnark/js/altehauptseite.js', altehauptseite]);

if (mw.config.get('wgIsMainPage')) {
   mw.loader.using(['mediawiki.util', 'jquery.ui'], function() {
      $(altehauptseite.init);
   });
}

})(jQuery);
//</nowiki>