MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Rettungsdienst-Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/* global mw, $ */
(function () {
  'use strict';


console.log('[Common.js] geladen');
  // Sichtbarer Test: zeigt, ob Common.js überhaupt lädt
mw.loader.using('mediawiki.util').then(() => mw.util.addPortletLink('p-tb', mw.util.getUrl('Special:RecentChanges'), 'Test-Link geladen'));
  console.log('[Common.js] geladen');


  // NUR ES5 verwenden, keine Arrow-Functions etc.
  mw.loader.using(['mediawiki.util', 'mediawiki.api']).then(function () {
    $(function () {
      try {
        // Einhängepunkt wählen: bevorzugt "Werkzeuge" (p-tb), sonst Navigation
        var targetId = document.getElementById('p-tb') ? 'p-tb' :
          (document.getElementById('p-navigation') ? 'p-navigation' : null);


// Neueste Beiträge (3 neue Seiten) in die linke Sidebar einfügen – skin-sicher
        if (!targetId) {
$.when( mw.loader.using( [ 'mediawiki.util', 'mediawiki.api' ] ), $.ready ).then( function () {
          console.warn('[NewPages] Kein passender Portlet-Container gefunden.');
          return;
        }


  // Wohin einhängen? 'p-tb' (Werkzeuge) gibt es in Vector/Timeless/MonoBook fast immer.
        // Test-Link hinzufügen, um sicherzugehen, dass Portlet existiert
  var anchorId = document.getElementById('p-tb') ? '#p-tb' : '#p-navigation';
        mw.util.addPortletLink(targetId, mw.util.getUrl('Special:RecentChanges'), 'Test-Link (geladen)');


  // Eigene Portlet-Box anlegen (Skin entscheidet über genaue Darstellung)
        // 3 neu angelegte Artikel holen
  var portletId = 'p-newpages';
        var api = new mw.Api();
  var portletEl = mw.util.addPortlet( portletId, 'Neueste Beiträge', anchorId );
        api.get({
  if ( !portletEl ) {
          action: 'query',
    // Notfall: Wenn auch das nicht geht, gar nicht weitermachen
          list: 'recentchanges',
    return;
          rctype: 'new',
  }
          rcprop: 'title|timestamp',
 
          rcnamespace: 0,
  var api = new mw.Api();
          rcshow: '!bot',
  api.get({
          rclimit: 3,
    action: 'query',
          format: 'json'
    list: 'recentchanges',
        }).done(function (data) {
    rctype: 'new',
          var items = (data.query && data.query.recentchanges) || [];
    rcprop: 'title|timestamp',
          if (!items.length) {
    rcnamespace: 0,   // Hauptnamensraum (Artikel)
            mw.util.addPortletLink(targetId, '#', 'Keine neuen Seiten');
    rcshow: '!bot',   // Bots ausblenden
            return;
    rclimit: 3,
          }
    format: 'json'
          for (var i = 0; i < items.length; i++) {
  }).done( function (data) {
            var rc = items[i];
    var items = (data.query && data.query.recentchanges) || [];
            var href = mw.util.getUrl(rc.title);
    if ( items.length === 0 ) {
            var tip = new Date(rc.timestamp).toLocaleString();
      mw.util.addPortletLink( portletId, '#', 'Keine neuen Seiten' );
            mw.util.addPortletLink(targetId, href, rc.title, null, tip);
      return;
          }
    }
        }).fail(function (err) {
    items.forEach( function (rc) {
          console.error('[NewPages] API-Fehler:', err);
      var href = mw.util.getUrl( rc.title );
          mw.util.addPortletLink(targetId, '#', 'Fehler beim Laden');
      var tip = new Date( rc.timestamp ).toLocaleString();
        });
      mw.util.addPortletLink( portletId, href, rc.title, null, tip );
      } catch (e) {
    } );
        console.error('[Common.js] Laufzeitfehler:', e);
  }).fail( function () {
      }
    mw.util.addPortletLink( portletId, '#', 'Fehler beim Laden' );
    });
   } );
  }, function (e) {
});
    console.error('[Common.js] mw.loader Fehler:', e);
   });
})();

Version vom 7. November 2025, 18:48 Uhr

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

  // Sichtbarer Test: zeigt, ob Common.js überhaupt lädt
  console.log('[Common.js] geladen');

  // NUR ES5 verwenden, keine Arrow-Functions etc.
  mw.loader.using(['mediawiki.util', 'mediawiki.api']).then(function () {
    $(function () {
      try {
        // Einhängepunkt wählen: bevorzugt "Werkzeuge" (p-tb), sonst Navigation
        var targetId = document.getElementById('p-tb') ? 'p-tb' :
          (document.getElementById('p-navigation') ? 'p-navigation' : null);

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

        // Test-Link hinzufügen, um sicherzugehen, dass Portlet existiert
        mw.util.addPortletLink(targetId, mw.util.getUrl('Special:RecentChanges'), 'Test-Link (geladen)');

        // 3 neu angelegte Artikel holen
        var api = new mw.Api();
        api.get({
          action: 'query',
          list: 'recentchanges',
          rctype: 'new',
          rcprop: 'title|timestamp',
          rcnamespace: 0,
          rcshow: '!bot',
          rclimit: 3,
          format: 'json'
        }).done(function (data) {
          var items = (data.query && data.query.recentchanges) || [];
          if (!items.length) {
            mw.util.addPortletLink(targetId, '#', '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();
            mw.util.addPortletLink(targetId, href, rc.title, null, tip);
          }
        }).fail(function (err) {
          console.error('[NewPages] API-Fehler:', err);
          mw.util.addPortletLink(targetId, '#', 'Fehler beim Laden');
        });
      } catch (e) {
        console.error('[Common.js] Laufzeitfehler:', e);
      }
    });
  }, function (e) {
    console.error('[Common.js] mw.loader Fehler:', e);
  });
})();