MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus ISMS-Ratgeber WiKi
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


// Top 10 zuletzt geänderte Seiten:
// Top 10 zuletzt geänderte Seiten:
$(function() {
$(function() {
   var $target = $('#recentpages-unique-table');
   var $target = $('#seo-pages-table');
   if (!$target.length) {
   if (!$target.length) return;
    console.error('Ziel-Element nicht gefunden');
    return;
  }


   console.log('Starte API-Abfrage...');
   // 1. Neue Seiten holen
    
   new mw.Api().get({
  $.getJSON(mw.util.wikiScript('api'), {
     action: 'query',
     action: 'query',
     list: 'recentchanges',
     list: 'recentchanges',
     rcprop: 'title|comment|timestamp|ids',
     rcprop: 'title|timestamp',
     rctype: 'new',
     rcshow: 'new',
    rclimit: 50,
     rcnamespace: 0,
     rcnamespace: 0,
    rclimit: 30,
     format: 'json'
     format: 'json'
   })
   }).done(function(data) {
  .done(function(data) {
     var pages = data.query && data.query.recentchanges ? data.query.recentchanges : [];
    console.log('API-Antwort erhalten:', data);
    if (!pages.length) {
   
      $target.html('Keine neuen Seiten gefunden.');
     var table = '<table class="wikitable">'
      return;
      + '<tr><th>Titel</th><th>Erstellt am</th><th>Zusammenfassung</th></tr>';
    }
   
    var uniquePages = {};
    var count = 0;
 
    if (data.query?.recentchanges?.length > 0) {
      data.query.recentchanges.forEach(function(rc) {
        try {
          if (!rc.title || rc.title.includes(':') || uniquePages[rc.title]) return;
         
          uniquePages[rc.title] = true;
          if (count >= 10) return;


          var pageLink = $('<div>').html(
    // 2. Für jede Seite SEO-Title holen (pageprops)
            '<a href="' + mw.util.getUrl(rc.title) + '">'
    var titles = pages.map(function(p) { return p.title; }).join('|');
            + mw.html.escape(rc.title) + '</a>'
    new mw.Api().get({
           ).html();
      action: 'query',
      prop: 'pageprops',
      titles: titles,
      format: 'json'
    }).done(function(seoData) {
      var seoProps = {};
      if (seoData.query && seoData.query.pages) {
        Object.values(seoData.query.pages).forEach(function(page) {
           if (page.pageprops && (page.pageprops.wikiseo_title || page.pageprops.seo_title)) {
            seoProps[page.title] = page.pageprops.wikiseo_title || page.pageprops.seo_title;
          }
        });
      }


          var timestamp = new Date(rc.timestamp);
      // 3. Tabelle bauen
          var dateString = timestamp.toLocaleDateString('de-DE', {
      var table = '<table class="wikitable"><tr><th>Seitenname</th><th>Erstellungsdatum</th><th>SEO-Titel</th></tr>';
            day: '2-digit',
      pages.forEach(function(p) {
            month: '2-digit',
        var link = '<a href="' + mw.util.getUrl(p.title) + '">' + mw.html.escape(p.title) + '</a>';
            year: 'numeric'
        var date = new Date(p.timestamp).toLocaleDateString('de-DE');
          });
        var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '';
 
        table += '<tr><td>' + link + '</td><td>' + date + '</td><td>' + seo + '</td></tr>';
          table += '<tr>'
            + '<td>' + pageLink + '</td>'
            + '<td>' + dateString + '</td>'
            + '<td>' + (rc.comment ? mw.html.escape(rc.comment) : '–') + '</td>'
            + '</tr>';
         
          count++;
        } catch (e) {
          console.error('Fehler bei der Verarbeitung:', e);
        }
       });
       });
    }
       table += '</table>';
 
      $target.html(table);
    if (count === 0) {
     }).fail(function() {
       table += '<tr><td colspan="3">Keine neuen Inhaltsseiten im Hauptnamensraum gefunden</td></tr>';
      $target.html('Fehler beim Laden der SEO-Daten.');
    }
    });
   
   }).fail(function() {
    table += '</table>';
     $target.html('Fehler beim Laden der neuen Seiten.');
    $target.html(table);
     console.log('Tabelle erfolgreich generiert');
  })
   .fail(function(jqXHR, textStatus, errorThrown) {
    console.error('API-Fehler:', textStatus, errorThrown);
     $target.html('<div class="error">Fehler beim Laden der Daten: ' + errorThrown + '</div>');
   });
   });
});
});

Aktuelle Version vom 13. Mai 2025, 13:24 Uhr

/* Das folgende JavaScript wird für alle Benutzer geladen. */

// Top 10 zuletzt geänderte Seiten:

$(function() {
  var $target = $('#seo-pages-table');
  if (!$target.length) return;

  // 1. Neue Seiten holen
  new mw.Api().get({
    action: 'query',
    list: 'recentchanges',
    rcprop: 'title|timestamp',
    rcshow: 'new',
    rcnamespace: 0,
    rclimit: 30,
    format: 'json'
  }).done(function(data) {
    var pages = data.query && data.query.recentchanges ? data.query.recentchanges : [];
    if (!pages.length) {
      $target.html('Keine neuen Seiten gefunden.');
      return;
    }

    // 2. Für jede Seite SEO-Title holen (pageprops)
    var titles = pages.map(function(p) { return p.title; }).join('|');
    new mw.Api().get({
      action: 'query',
      prop: 'pageprops',
      titles: titles,
      format: 'json'
    }).done(function(seoData) {
      var seoProps = {};
      if (seoData.query && seoData.query.pages) {
        Object.values(seoData.query.pages).forEach(function(page) {
          if (page.pageprops && (page.pageprops.wikiseo_title || page.pageprops.seo_title)) {
            seoProps[page.title] = page.pageprops.wikiseo_title || page.pageprops.seo_title;
          }
        });
      }

      // 3. Tabelle bauen
      var table = '<table class="wikitable"><tr><th>Seitenname</th><th>Erstellungsdatum</th><th>SEO-Titel</th></tr>';
      pages.forEach(function(p) {
        var link = '<a href="' + mw.util.getUrl(p.title) + '">' + mw.html.escape(p.title) + '</a>';
        var date = new Date(p.timestamp).toLocaleDateString('de-DE');
        var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '–';
        table += '<tr><td>' + link + '</td><td>' + date + '</td><td>' + seo + '</td></tr>';
      });
      table += '</table>';
      $target.html(table);
    }).fail(function() {
      $target.html('Fehler beim Laden der SEO-Daten.');
    });
  }).fail(function() {
    $target.html('Fehler beim Laden der neuen Seiten.');
  });
});