MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus ISMS-Ratgeber WiKi
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 4: Zeile 4:
$(function() {
$(function() {
   var $target = $('#recentpages-unique-table');
   var $target = $('#recentpages-unique-table');
   if (!$target.length) return;
   if (!$target.length) {
    console.error('Ziel-Element nicht gefunden');
    return;
  }


  console.log('Starte API-Abfrage...');
 
   $.getJSON(mw.util.wikiScript('api'), {
   $.getJSON(mw.util.wikiScript('api'), {
     action: 'query',
     action: 'query',
Zeile 16: Zeile 21:
   })
   })
   .done(function(data) {
   .done(function(data) {
     var table = '<table class="wikitable"><tr><th>Titel</th><th>Erstellt am</th><th>Zusammenfassung</th></tr>';
    console.log('API-Antwort erhalten:', data);
   
     var table = '<table class="wikitable">'
      + '<tr><th>Titel</th><th>Erstellt am</th><th>Zusammenfassung</th></tr>';
   
     var uniquePages = {};
     var uniquePages = {};
     var count = 0;
     var count = 0;


     if (data.query?.recentchanges) {
     if (data.query?.recentchanges?.length > 0) {
       data.query.recentchanges.forEach(function(rc) {
       data.query.recentchanges.forEach(function(rc) {
         if (uniquePages[rc.title] || rc.title.includes(':')) return;
         try {
        uniquePages[rc.title] = true;
          if (!rc.title || rc.title.includes(':') || uniquePages[rc.title]) return;
        if (count >= 10) return;
         
          uniquePages[rc.title] = true;
          if (count >= 10) return;


        // Link zur Seite generieren
          var pageLink = $('<div>').html(
        var pageUrl = mw.util.getUrl(rc.title);
            '<a href="' + mw.util.getUrl(rc.title) + '">'  
        var pageLink = '<a href="' + pageUrl + '">' + mw.html.escape(rc.title) + '</a>';
            + mw.html.escape(rc.title) + '</a>'
          ).html();


        // SEO-Daten (angenommen: Seitentitel als SEO-Titel)
          var timestamp = new Date(rc.timestamp);
        var seoTitle = rc.title; // Hier müsste ggf. eine API-Abfrage für SEO-Metadaten erfolgen
          var dateString = timestamp.toLocaleDateString('de-DE', {
            day: '2-digit',
            month: '2-digit',
            year: 'numeric'
          });


        // Datum formatieren
          table += '<tr>'
        var date = new Date(rc.timestamp).toLocaleDateString('de-DE');
            + '<td>' + pageLink + '</td>'
 
            + '<td>' + dateString + '</td>'
        table += '<tr><td>' + pageLink + '</td><td>' + date + '</td><td>' + mw.html.escape(seoTitle) + '</td></tr>';
            + '<td>' + (rc.comment ? mw.html.escape(rc.comment) : '–') + '</td>'
        count++;
            + '</tr>';
         
          count++;
        } catch (e) {
          console.error('Fehler bei der Verarbeitung:', e);
        }
       });
       });
     }
     }


     if (count === 0) {
     if (count === 0) {
       table += '<tr><td colspan="3">Keine neuen Seiten gefunden.</td></tr>';
       table += '<tr><td colspan="3">Keine neuen Inhaltsseiten im Hauptnamensraum gefunden</td></tr>';
     }
     }
   
     table += '</table>';
     table += '</table>';
     $target.html(table);
     $target.html(table);
    console.log('Tabelle erfolgreich generiert');
   })
   })
   .fail(function() {
   .fail(function(jqXHR, textStatus, errorThrown) {
     $target.html('Fehler beim Laden der Daten.');
    console.error('API-Fehler:', textStatus, errorThrown);
     $target.html('<div class="error">Fehler beim Laden der Daten: ' + errorThrown + '</div>');
   });
   });
});
});

Version vom 12. Mai 2025, 18:39 Uhr

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

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

  console.log('Starte API-Abfrage...');
  
  $.getJSON(mw.util.wikiScript('api'), {
    action: 'query',
    list: 'recentchanges',
    rcprop: 'title|comment|timestamp|ids',
    rctype: 'new',
    rclimit: 50,
    rcnamespace: 0,
    format: 'json'
  })
  .done(function(data) {
    console.log('API-Antwort erhalten:', data);
    
    var table = '<table class="wikitable">'
      + '<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(
            '<a href="' + mw.util.getUrl(rc.title) + '">' 
            + mw.html.escape(rc.title) + '</a>'
          ).html();

          var timestamp = new Date(rc.timestamp);
          var dateString = timestamp.toLocaleDateString('de-DE', {
            day: '2-digit',
            month: '2-digit',
            year: 'numeric'
          });

          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);
        }
      });
    }

    if (count === 0) {
      table += '<tr><td colspan="3">Keine neuen Inhaltsseiten im Hauptnamensraum gefunden</td></tr>';
    }
    
    table += '</table>';
    $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>');
  });
});