MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Rettungsdienst-Wiki
Zur Navigation springen Zur Suche springen
Markierung: Manuelle Zurücksetzung
Zeile 5: Zeile 5:
   $.when( mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ), $.ready ).then( function () {
   $.when( mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ), $.ready ).then( function () {


     // 1) Eigenes Portlet (Sidebar-Block) anlegen – vor "Werkzeuge" (p-tb), sonst an "Navigation"
     // 1) Einhängepunkt wählen (OHNE #):
     var nextTo = document.getElementById('p-tb') ? '#p-tb' :
     var anchorId = document.getElementById('p-tb') ? 'p-tb'
      ( document.getElementById('p-navigation') ? '#p-navigation' : null );
                  : ( document.getElementById('p-navigation') ? 'p-navigation' : null );


    if ( !anchorId ) {
      console.warn('[NewPages] Kein passender Portlet-Container gefunden.');
      return;
    }
    // 2) Eigenes Portlet anlegen (NEU: anchorId ohne #!)
     var portletId = 'p-newpages';
     var portletId = 'p-newpages';
     var portletNode = mw.util.addPortlet( portletId, 'Neueste Beiträge', nextTo );
     var portletNode = document.getElementById(portletId) || mw.util.addPortlet( portletId, 'Neueste Beiträge', anchorId );
     if ( !portletNode ) {
     if ( !portletNode ) {
       console.warn('[NewPages] Konnte Portlet nicht erstellen.');
       console.warn('[NewPages] Konnte Portlet nicht erstellen – fallback: Links direkt unter', anchorId);
      return;
     }
     }


    var targetForLinks = portletNode ? portletId : anchorId; // Fallback: Links direkt unter Werkzeuge
    // 3) API: 3 neu angelegte Artikel
     var api = new mw.Api();
     var api = new mw.Api();
     api.get({
     api.get({
Zeile 22: Zeile 30:
       rctype: 'new',
       rctype: 'new',
       rcprop: 'title|timestamp',
       rcprop: 'title|timestamp',
       rcnamespace: 0,       // nur Artikelnamensraum
       rcnamespace: 0,           // Hauptnamensraum
       rcshow: '!bot|!redirect', // Bots & Weiterleitungen ausblenden
       rcshow: '!bot|!redirect', // Bots & Weiterleitungen ausblenden
       rclimit: 3,
       rclimit: 3,
Zeile 30: Zeile 38:


       if (!items.length) {
       if (!items.length) {
         mw.util.addPortletLink(portletId, mw.util.getUrl('Special:NewPages'), 'Keine neuen Seiten');
         mw.util.addPortletLink(targetForLinks, mw.util.getUrl('Special:NewPages'), 'Keine neuen Seiten');
         return;
         return;
       }
       }


      // 2) Einträge hinzufügen
       for (var i = 0; i < items.length; i++) {
       for (var i = 0; i < items.length; i++) {
         var rc = items[i];
         var rc = items[i];
         var href = mw.util.getUrl(rc.title);
         var href = mw.util.getUrl(rc.title);
         var tip  = new Date(rc.timestamp).toLocaleString('de-DE', { dateStyle: 'medium', timeStyle: 'short' });
         var tip  = new Date(rc.timestamp).toLocaleString('de-DE', { dateStyle: 'medium', timeStyle: 'short' });
         mw.util.addPortletLink(portletId, href, rc.title, null, tip);
         mw.util.addPortletLink(targetForLinks, href, rc.title, null, tip);
       }
       }


       // 3) Abschluss-Link: alle neuen Seiten
       // Abschluss-Link
       mw.util.addPortletLink(
       mw.util.addPortletLink(
         portletId,
         targetForLinks,
         mw.util.getUrl('Special:NewPages'),
         mw.util.getUrl('Special:NewPages'),
         'Alle neuen Seiten →',
         'Alle neuen Seiten →',
Zeile 52: Zeile 59:
     }).fail(function (err) {
     }).fail(function (err) {
       console.error('[NewPages] API-Fehler:', err);
       console.error('[NewPages] API-Fehler:', err);
       mw.util.addPortletLink(portletId, '#', 'Fehler beim Laden');
       mw.util.addPortletLink(targetForLinks, '#', 'Fehler beim Laden');
     });
     });
   });
   });
})();
})();

Version vom 7. November 2025, 18:58 Uhr

/* global mw, $ */
(function () {
  'use strict';

  $.when( mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ), $.ready ).then( function () {

    // 1) Einhängepunkt wählen (OHNE #):
    var anchorId = document.getElementById('p-tb') ? 'p-tb'
                  : ( document.getElementById('p-navigation') ? 'p-navigation' : null );

    if ( !anchorId ) {
      console.warn('[NewPages] Kein passender Portlet-Container gefunden.');
      return;
    }

    // 2) Eigenes Portlet anlegen (NEU: anchorId ohne #!)
    var portletId = 'p-newpages';
    var portletNode = document.getElementById(portletId) || mw.util.addPortlet( portletId, 'Neueste Beiträge', anchorId );
    if ( !portletNode ) {
      console.warn('[NewPages] Konnte Portlet nicht erstellen – fallback: Links direkt unter', anchorId);
    }

    var targetForLinks = portletNode ? portletId : anchorId; // Fallback: Links direkt unter Werkzeuge

    // 3) API: 3 neu angelegte Artikel
    var api = new mw.Api();
    api.get({
      action: 'query',
      list: 'recentchanges',
      rctype: 'new',
      rcprop: 'title|timestamp',
      rcnamespace: 0,           // Hauptnamensraum
      rcshow: '!bot|!redirect', // Bots & Weiterleitungen ausblenden
      rclimit: 3,
      format: 'json'
    }).done(function (data) {
      var items = (data.query && data.query.recentchanges) || [];

      if (!items.length) {
        mw.util.addPortletLink(targetForLinks, mw.util.getUrl('Special:NewPages'), 'Keine neuen Seiten');
        return;
      }

      for (var i = 0; i < items.length; i++) {
        var rc = items[i];
        var href = mw.util.getUrl(rc.title);
        var tip  = new Date(rc.timestamp).toLocaleString('de-DE', { dateStyle: 'medium', timeStyle: 'short' });
        mw.util.addPortletLink(targetForLinks, href, rc.title, null, tip);
      }

      // Abschluss-Link
      mw.util.addPortletLink(
        targetForLinks,
        mw.util.getUrl('Special:NewPages'),
        'Alle neuen Seiten →',
        'newpages-more',
        'Zur vollständigen Liste'
      );
    }).fail(function (err) {
      console.error('[NewPages] API-Fehler:', err);
      mw.util.addPortletLink(targetForLinks, '#', 'Fehler beim Laden');
    });
  });
})();