MediaWiki:WeblinkcheckErgebnis.js

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen

Beachten Sie: Nach dem Speichern müssen Sie Ihren Browser veranlassen, die neue Version zu laden: Mozilla/Firefox: Strg-Shift-R, IE: Strg-F5, Safari: Cmd-Shift-R, Konqueror: F5.

/*
komfortablere Nutzung der Ergebnisausgabe des pywikibot-Skripts weblinkchecker (https://www.mediawiki.org/wiki/Manual:Pywikibot/weblinkchecker.py)
Filtern der Ausgabe nach den betroffenen Seitentiteln

Repo: https://gitlab.genealogy.net/genwiki/wikibots/-/blob/main/gw-skripte/weblinkcheckergebnis.js
*/
function ToggleListitemsInludes(pagetitle) {
    var urls = [];

    var lis = $("#weblinkcheck > ul > li");
    var h3s = $("#weblinkcheck h3");
    if (pagetitle) {
        h3s.hide();
      	lis.each(function(index, value){
          	if (this.innerText.indexOf(pagetitle) > -1) {
              var url = $("> a", this).attr("href");
              if (! urls.includes(url)) { 
                urls.push(url);
              	$(this).show();
              } else {
                $(this).hide();
              }
            } else {
              $(this).hide();
            }
        });
    } else {
        h3s.show();
      	lis.show();
    }
    return urls;
}

function GetUniqPagetitles() {
    var items = [];
    $("#weblinkcheck ul li ul li a[href^='/']").each(function (i, item) { if (!items.includes(item.innerText)) {items.push(item.innerText); }});
    return items.sort();
}

function AddPagetitleSelection() {
  var pagetitles = GetUniqPagetitles();
  if (pagetitles.length == 0) {return;}
  var sel = $("#pagetitle-select");
  if (sel.length != 0) { sel.remove(); }
  sel = $('<select id="pagetitle-select"></select>');
  
	sel.append($("<option>").attr('value','').text('--- Seitentitel zum Filtern auswählen oder diesen Eintrag um alles anzuzeigen ---'));
  $(pagetitles).each(function() {
 		sel.append($("<option>").text(this));
	});
	sel.insertBefore("#weblinkcheck"); 
  sel.on('change', function(){
    var urls = ToggleListitemsInludes(this.value);
    ShowText(`Betroffene URLs auf der Seite '${this.value}'`, urls);
  });
}

function GetUniqUrls() {
    var urls = [];
    var lis = $("#weblinkcheck > ul > li");

  lis.each(function(index, value){
      var url = $("> a", this).attr("href");
      if (! urls.includes(url)) { urls.push(url); }
    });
  return urls.sort();
}

function ShowText(title, text) {
	var field = $("#weblinkcheck-text");
  if (field.length == 0) { 
    field = $('<textarea id="weblinkcheck-text"></textarea>');
    $("#weblinkcheck-clip").append(field);
  }
  if (Array.isArray(text)) {
    field.text(`${title} (Anzahl: ${text.length})\n${text.join("\n")}`);
  } else {
    field.text(`${title}\n${text}`);
  }
}

$(function() {
  AddPagetitleSelection();
  var urls = GetUniqUrls();
  var pages = GetUniqPagetitles();
  $("#weblinkcheck-urls").html(`<a href="#" title="Liste der Url anzeigen" onClick="void ShowText('Liste aller betroffenen Urls', GetUniqUrls())">${urls.length}</a>`);
  $("#weblinkcheck-pages").html(`<a href="#" title="Liste der Seitennamen anzeigen" onClick="void ShowText('Liste aller betroffenen Seitennamen', GetUniqPagetitles())">${pages.length}</a>`);
});