MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus ISMS-Ratgeber WiKi
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
KKeine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 4: Zeile 4:


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


   // 1. Neue Seiten holen und Dubletten filtern
   // Debugging: Konsolenausgabe
  console.log("Starte Skript...");
 
  // API-Abfrage für neue Seiten im Hauptnamensraum
   new mw.Api().get({
   new mw.Api().get({
     action: 'query',
     action: 'query',
     list: 'recentchanges',
     list: 'recentchanges',
     rcprop: 'title|timestamp',
     rcprop: 'title|timestamp|user',
     rcshow: 'new',
     rcshow: 'new',
     rcnamespace: 0,
     rcnamespace: 0,
     rclimit: 50, // Höheres Limit für Dublettenfilterung
     rclimit: 10,
     format: 'json'
     format: 'json'
   }).done(function(data) {
   }).done(function(data) {
     var pages = data.query?.recentchanges || [];
     console.log("API-Daten:", data);
     var uniquePages = {}; // Dublettenfilter
   
    var filteredPages = [];
    const pages = data.query?.recentchanges || [];
 
     if (!pages.length) {
    // 2. Einzigartige Seiten filtern
       $target.html("Keine neuen Seiten im Hauptnamensraum gefunden.");
    pages.forEach(function(p) {
      if (!uniquePages[p.title] && !p.title.includes(':')) {
        uniquePages[p.title] = true;
        filteredPages.push(p);
        if (filteredPages.length >= 10) return; // Auf 10 begrenzen
      }
    });
 
    if (!filteredPages.length) {
       $target.html('Keine neuen Seiten gefunden.');
       return;
       return;
     }
     }


     // 3. SEO-Daten für gefilterte Seiten holen
     // Tabelle generieren
     var titles = filteredPages.map(p => p.title).join('|');
     let table = `
    new mw.Api().get({
      <table class="wikitable">
      action: 'query',
        <tr><th>Seitenname</th><th>Erstellt am</th><th>Autor:in</th></tr>
       prop: 'pageprops',
    `;
      titles: titles,
   
      format: 'json'
    pages.forEach(page => {
    }).done(function(seoData) {
      const link = `<a href="${mw.util.getUrl(page.title)}">${mw.html.escape(page.title)}</a>`;
      var seoProps = {};
      const date = new Date(page.timestamp).toLocaleDateString('de-DE');
      Object.values(seoData.query?.pages || {}).forEach(function(page) {
       table += `
         seoProps[page.title] = page.pageprops?.wikiseo_title || page.pageprops?.seo_title;
        <tr>
      });
          <td>${link}</td>
          <td>${date}</td>
          <td>${mw.html.escape(page.user)}</td>
         </tr>
      `;
    });


      // 4. Tabelle generieren
    table += "</table>";
      var table = '<table class="wikitable"><tr><th>Seitenname</th><th>Erstellt am</th><th>SEO-Titel</th></tr>';
    $target.html(table);
      filteredPages.forEach(function(p) {
  }).fail(function(err) {
        var link = '<a href="' + mw.util.getUrl(p.title) + '">' + mw.html.escape(p.title) + '</a>';
    $target.html(`Fehler: ${err}`);
        var date = new Date(p.timestamp).toLocaleDateString('de-DE', {day: '2-digit', month: '2-digit', year: 'numeric'});
   });
        var seo = seoProps[p.title] ? mw.html.escape(seoProps[p.title]) : '–';
        table += `<tr><td>${link}</td><td>${date}</td><td>${seo}</td></tr>`;
      });
      $target.html(table + '</table>');
    }).fail(() => $target.html('Fehler bei SEO-Daten'));
   }).fail(() => $target.html('Fehler beim Laden'));
});
});

Version vom 13. Mai 2025, 07:06 Uhr

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

// Top 10 zuletzt geänderte Seiten:

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

  // Debugging: Konsolenausgabe
  console.log("Starte Skript...");

  // API-Abfrage für neue Seiten im Hauptnamensraum
  new mw.Api().get({
    action: 'query',
    list: 'recentchanges',
    rcprop: 'title|timestamp|user',
    rcshow: 'new',
    rcnamespace: 0,
    rclimit: 10,
    format: 'json'
  }).done(function(data) {
    console.log("API-Daten:", data);
    
    const pages = data.query?.recentchanges || [];
    if (!pages.length) {
      $target.html("Keine neuen Seiten im Hauptnamensraum gefunden.");
      return;
    }

    // Tabelle generieren
    let table = `
      <table class="wikitable">
        <tr><th>Seitenname</th><th>Erstellt am</th><th>Autor:in</th></tr>
    `;
    
    pages.forEach(page => {
      const link = `<a href="${mw.util.getUrl(page.title)}">${mw.html.escape(page.title)}</a>`;
      const date = new Date(page.timestamp).toLocaleDateString('de-DE');
      table += `
        <tr>
          <td>${link}</td>
          <td>${date}</td>
          <td>${mw.html.escape(page.user)}</td>
        </tr>
      `;
    });

    table += "</table>";
    $target.html(table);
  }).fail(function(err) {
    $target.html(`Fehler: ${err}`);
  });
});