Zum Inhalt springen

Benutzer:Magnus Manske/image undelete.js

aus Wikipedia, der freien Enzyklopädie

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/* Verwendung :
importScript('Benutzer:Magnus_Manske/image_undelete.js');
*/

Array.prototype.getUniqueValues = function () {
  var hash = new Object();
  for (j = 0; j < this.length; j++) {hash[this[j]] = true}
  var array = new Array();
  for (value in hash) {array.push(value)};
  return array;
}

// Erzeugt den Link in der Seitenleiste unter "Werkzeuge"
function init_undelete_usage () {
  var permalink = document.getElementById ( 't-permalink' ) ;
  var ul = permalink.parentNode ;
  var li = document.createElement ( 'li' ) ;
  var a = document.createElement ( 'a' ) ;
  a.onclick = run_undelete_usage ;
  a.href = '#' ;
  a.appendChild ( document.createTextNode ( 'Nutzung vor Löschung' ) ) ;
  li.appendChild ( a ) ;
  ul.appendChild ( li ) ;
}

function run_undelete_usage () {
  var request =  new XMLHttpRequest();

  // Suche alte Verwendungen
  var url = "http://de.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&rvprop=timestamp|user|comment|content&rvlimit=500&titles=" + wgPageName ;
  request.open("GET", url, false);
  request.send ( "" ) ;
  var text = request.responseText ;
  var results = text.split ( "Dateiüberprüfung/benachrichtigt (einzelne Verwendung)|" ) ;
  results.shift () ;
  var unique = new Array () ;
  for ( var i = 0 ; i < results.length ; i++ ) {
    var s = results[i].split ( "}}" ) ;
    s = s.shift() ;
    unique.push ( s ) ;
  }

  // Aktuelle Verwendungen
  url = "http://de.wikipedia.org/w/api.php?format=xml&action=query&list=imageusage&iulimit=500&iutitle=" + wgPageName ;
  request.open("GET", url, false);
  request.send ( "" ) ;
  text = request.responseText ;

  results = text.split ( 'title="' ) ;
  results.shift () ;
  var used = new Array () ;
  for ( var i = 0 ; i < results.length ; i++ ) {
    var s = results[i].split ( '"' ) ;
    s = s.shift() ;
    used.push ( s ) ;
    unique.push ( s ) ;
  }
  unique = unique.getUniqueValues () ;

  // Ausgabe
  var df = document.getElementById ( 'file' ) ;
  var div = document.createElement ( 'div' ) ;
  var ul = document.createElement ( 'ul' ) ;
  var cnt = 0 ;
  for ( var i = 0 ; i < unique.length ; i++ ) {
    var s = unique[i] ;
    var cur = 0 ;
    for ( var j = 0 ; j < used.length ; j++ ) {
      if ( used[j] != s ) continue ;
      cur = 1 ;
      break ;
    }
    if ( cur == 1 ) continue ;
    var li = document.createElement ( 'li' ) ;
    var a = document.createElement ( 'a' ) ;
    a.appendChild ( document.createTextNode ( s ) ) ;
    a.href = "/wiki/" + s ;
    li.appendChild ( a ) ;
    ul.appendChild ( li ) ;
    cnt++ ;
  }

  if ( cnt == 0 ) {
    var li = document.createElement ( 'li' ) ;
    li.appendChild ( document.createTextNode ( "Diese Datei wurde früher nicht verwendet (ausgenommen gegenwärtige Nutzung)." ) ) ;
    ul.appendChild ( li ) ;
  }

  div.style.border = '2px solid red' ;
  div.appendChild ( document.createTextNode ( "Alte (und aktuelle) Verwendung dieser Datei:" ) ) ;
  div.appendChild ( ul ) ;
  df.parentNode.insertBefore ( div , df ) ;

  return false ;
}


if ( wgAction == "view" && wgNamespaceNumber == 6 ) addOnloadHook ( init_undelete_usage ) ;