MediaWiki:Seitenempfehlung.js

/* * Version 2011-05-15.1 sollte halbwegs fehlerfrei funktionieren CODE BEFINDET SICH IN Common.js UM DIE WARTEZEITEN BEIM NACHLADEN VON SKRIPTEN ZU MINIMIEREN */

var hwList; // HatWas-Liste var entry; var subpath = '/Empfehlung'; // Name bzw. Pfad der Kamelbau-Unterseiten

// Es gibt KEINE Regeln bzgl. der persönlichen Empfehlungen, ein automatischer Daumen taucht jedoch nur auf // Seiten auf, wo es auch potentiell lesenswertes Zeug geben tut // // HINWEIS an ---> DUFO < // FINGER WEG VON DEN NAMENSRÄUMEN, wehe, du nimmst da was raus // var hwNS = (typeof(hwNS) == 'object') ? hwNS : new Array ("", "File", "Kamelionary", "Kamelobooks", "News", "Projekt", "Frage"); // hierhin die Namensräume, wo der Daumen auftauchen soll (Achtung! canonical namespaces!); // Empfehlungsliste auslesen function readHwList(username, action) { jQuery.ajax({   url:     mw.config.get( 'wgScript' ),     data:    { title: "Kamel:" + username + subpath, action: "raw" },    cache:   false,    // Noch keine Empfehlungs-Seite angelegt    error:   function     {         hwList = new Array;         switch (action) {          case "add":            adHW;            break;          case "remove":            removeHW;            break;        }    },    // Empfehlungs-Seite auslesen    success: function(data) {         hwList = data.match(/\[\[.*\]\]/g);        switch (action) {          case "add":            adHW;            break;          case "remove":            removeHW;            break;        }    }  }); }

// Seite zur Empfehlungsliste hinzufügen function adHW { // edit-Token holen jQuery.ajax({   url:     '/api.php',     data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },    cache:   false,    success: function(data) {       var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');      hwList.push(entry);          // Aktuelle Seite dazu      hwList = sortHW(hwList); // Sortieren      // Empfehlungsliste bearbeiten      jQuery.ajax({ url:    '/api.php', type:   'POST', cache:  false, data:   { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "+ " + entry, token: edittoken }, success: function(data) { var text = ' Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde zu deinen Empfehlungen hinzugefügt. ';         jQuery('#mw-js-message').html(text); jQuery('#mw-js-message').slideDown('fast'); }     })    }  }); }

function removeHW { // edit-Token holen jQuery.ajax({   url:     '/api.php',     data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },    cache:   false,    success: function(data) {       var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');      var i = jQuery.inArray(entry, hwList);      delete hwList[i];            // Aktuelle Seite wech      hwList = sortHW(hwList); // Sortieren      // Empfehlungsliste bearbeiten      jQuery.ajax({ url:    '/api.php', type:   'POST', cache:  false, data:   { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "- " + entry, token: edittoken }, success: function(data) { var text = ' Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde von deinen Empfehlungen entfernt. ';         jQuery('#mw-js-message').html(text); jQuery('#mw-js-message').slideDown('fast'); }     })    }  }); }

function showHW(username) { /* soll später html-Code für Empfehlungslisten ausspucken */ }

// doppelte & leere Einträge entfernen + alphabetisch sortieren function sortHW(list) { var sorted = new Array; for(var i=0; i<list.length; i++){ for(var j=i+1; j<list.length; j++){ if (list[i] == list[j]) j = ++i; }   if (typeof(list[i]) != 'undefined') sorted.push(list[i]); } return sorted.sort; }

// Das ganze starten jQuery(document).ready(function { //if(typeof(disableGaGA) != 'undefined' && disableGaGA) return;  if(jQuery.inArray(mw.config.get( 'wgCanonicalNamespace' ), hwNS) != -1) {    entry = (mw.config.get( 'wgCanonicalNamespace' ) == "File") ? "" + Seitenname.replace(/_/g, ' ') + ""                                              : "" + Seitenname.replace(/_/g, ' ') + "";    jQuery('#p-views ul').append('  ');    jQuery('#p-views li:last').ajaxComplete(function { if(jQuery.inArray(entry, hwList) != -1) { jQuery(this).attr('id', 'ca-unhw'); jQuery('#ca-unhw a').html('Entfehlen'); jQuery('#ca-unhw a').attr('title', 'Seite nicht mehr empfehlen'); jQuery('#ca-unhw a').unbind('click'); jQuery('#ca-unhw a').bind('click', function { readHwList(Kamelname, 'remove') }); } else { jQuery(this).attr('id', 'ca-hw'); jQuery('#ca-hw a').html('Empfehlen'); jQuery('#ca-hw a').attr('title', 'Seite empfehlen'); jQuery('#ca-hw a').unbind('click'); jQuery('#ca-hw a').bind('click', function { readHwList(Kamelname, 'add') }); }   });    readHwList(Kamelname, false);  } })