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');
   const $target = $('#seo-pages-table');
   if (!$target.length) return;
   if (!$target.length) return;


   console.log("Starte API-Abfrage...");
   // 1. Neue Seiten über API abrufen
 
   $.getJSON(mw.util.wikiScript('api'), {
   $.getJSON(mw.util.wikiScript('api'), {
     action: 'query',
     action: 'query',
     list: 'recentchanges',
     list: 'recentchanges',
     rcprop: 'title|timestamp|user',
     rcprop: 'title|timestamp|ids',
     rctype: 'new', // ← Korrektur: rctype statt rcshow
     rctype: 'new',
    rclimit: 50,
     rcnamespace: 0,
     rcnamespace: 0,
    rclimit: 10,
     format: 'json'
     format: 'json'
   })
   }).done(async function(data) {
  .done(function(data) {
     const pages = data.query.recentchanges;
     console.log("API-Daten:", data);
     let tableHTML = `
     var table = '<table class="wikitable"><tr><th>Titel</th><th>Erstellt am</th><th>Autor:in</th></tr>';
      <table class="wikitable">
     var uniquePages = {};
        <tr>
      
          <th>Seitenname</th>
     if (data.query?.recentchanges?.length > 0) {
          <th>Erstellungsdatum</th>
       data.query.recentchanges.forEach(function(rc) {
          <th>SEO-Titel</th>
         if (!rc.title || rc.title.includes(':') || uniquePages[rc.title]) return;
        </tr>
        uniquePages[rc.title] = true;
     `;
 
     // 2. Für jede Seite SEO-Metadaten abrufen
     for (const page of pages) {
       try {
         const seoData = await fetchSEOMetadata(page.title);
        const date = new Date(page.timestamp).toLocaleDateString('de-DE');
          
          
         var pageLink = '<a href="' + mw.util.getUrl(rc.title) + '">' + mw.html.escape(rc.title) + '</a>';
         tableHTML += `
        var date = new Date(rc.timestamp).toLocaleDateString('de-DE');
          <tr>
        table += '<tr><td>' + pageLink + '</td><td>' + date + '</td><td>' + mw.html.escape(rc.user) + '</td></tr>';
            <td>${createPageLink(page.title)}</td>
       });
            <td>${date}</td>
            <td>${seoData || ''}</td>
          </tr>
        `;
       } catch (e) {
        console.error(`Fehler bei ${page.title}:`, e);
      }
     }
     }
    tableHTML += '</table>';
    $target.html(tableHTML);
  }).fail(function(err) {
    $target.html(`<div class="error">Fehler: ${err.statusText}</div>`);
  });
  // Hilfsfunktionen
  function createPageLink(title) {
    return `<a href="${mw.util.getUrl(title)}">${mw.html.escape(title)}</a>`;
  }
  async function fetchSEOMetadata(title) {
    const response = await $.getJSON(mw.util.wikiScript('api'), {
      action: 'query',
      prop: 'pageprops',
      titles: title,
      format: 'json'
    });
      
      
     $target.html(table || '<tr><td colspan="3">Keine neuen Seiten.</td></tr>');
     const page = response.query.pages[Object.keys(response.query.pages)[0]];
  })
    return page.pageprops?.wikiseo_title || page.pageprops?.seo_title;
  .fail(function(jqXHR) {
   }
    $target.html('Fehler: ' + jqXHR.statusText);
   });
});
});

Version vom 13. Mai 2025, 06:58 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;

  // 1. Neue Seiten über API abrufen
  $.getJSON(mw.util.wikiScript('api'), {
    action: 'query',
    list: 'recentchanges',
    rcprop: 'title|timestamp|ids',
    rctype: 'new',
    rcnamespace: 0,
    rclimit: 10,
    format: 'json'
  }).done(async function(data) {
    const pages = data.query.recentchanges;
    let tableHTML = `
      <table class="wikitable">
        <tr>
          <th>Seitenname</th>
          <th>Erstellungsdatum</th>
          <th>SEO-Titel</th>
        </tr>
    `;

    // 2. Für jede Seite SEO-Metadaten abrufen
    for (const page of pages) {
      try {
        const seoData = await fetchSEOMetadata(page.title);
        const date = new Date(page.timestamp).toLocaleDateString('de-DE');
        
        tableHTML += `
          <tr>
            <td>${createPageLink(page.title)}</td>
            <td>${date}</td>
            <td>${seoData || '–'}</td>
          </tr>
        `;
      } catch (e) {
        console.error(`Fehler bei ${page.title}:`, e);
      }
    }

    tableHTML += '</table>';
    $target.html(tableHTML);
  }).fail(function(err) {
    $target.html(`<div class="error">Fehler: ${err.statusText}</div>`);
  });

  // Hilfsfunktionen
  function createPageLink(title) {
    return `<a href="${mw.util.getUrl(title)}">${mw.html.escape(title)}</a>`;
  }

  async function fetchSEOMetadata(title) {
    const response = await $.getJSON(mw.util.wikiScript('api'), {
      action: 'query',
      prop: 'pageprops',
      titles: title,
      format: 'json'
    });
    
    const page = response.query.pages[Object.keys(response.query.pages)[0]];
    return page.pageprops?.wikiseo_title || page.pageprops?.seo_title;
  }
});