MediaWiki:Gadget-HotCat.js
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
/*-------------------------------------------------------------*\
|| --- HotCat --- ||
|| Vereinfachte Kategorie- und Interwiki-Link-Änderungen, ||
|| ohne die Seite beabeiten zu müssen. Basierend auf ||
|| http://commons.wikimedia.org/wiki/MediaWiki:Gadget- ||
|| HotCat.js/Documentation ||
|| ||
|| Wichtigste Funktionen: ||
|| hotcat_init() Initialisierung ||
|| hotcat_edit() Bearbeitet eine Kategorie ||
|| hotcat_getcatlist() Liste mit Kategorie-Vorschlägen ||
|| hotinter_edit() Bearbeitet einen Interwiki-Link ||
|| hotinter_bot() Bot bei Wookieepedia ||
|| refreshcategorylist() Aktualisiert die Kategorien-Anzeige ||
|| refreshinterwikilist() Aktualisiert die Interwiki-Anzeige ||
|| refreshinterwikicleanup() Aktualisiert Liste falscher IW-Ls ||
\*-------------------------------------------------------------*/
function hotcat_addlink() {
//Wenn die Seite automatisch geändert werden soll
if (window.location.href.search(/&hotcat=true/) != -1 && wgAction=="edit") {
parent.document.getElementById("submitstatus_span_de").innerHTML+=" Kategorien werden geändert...";
newcattext=document.getElementById("wpTextbox1").innerHTML;
//Ergänze Qualitätssicherungsvorlage
checkedqs=parent.checkedqs;
checkedqs_desc=parent.checkedqs_desc;
if (checkedqs!="keine Vorlage") {
if (checkedqs=="KQ" && wgNamespaceNumber==6) checkedqs="Bildquelle";
if (checkedqs_desc=="") {
newcattext='\{\{'+checkedqs+'\}\}\n'+newcattext;
} else if(parent.checkbox_qs==false) {
newcattext='\{\{'+checkedqs+'|1='+checkedqs_desc+'\}\}\n'+newcattext;
} else {
newcattext='\{\{'+checkedqs+'|1='+checkedqs_desc+' --\~\~\~\~\}\}\n'+newcattext;
}
}
//Ändere Kategorien
defaultsortvar=parent.defaultsortvar_parent;
if (defaultsortvar==wgPageName) {defaultsortvar="";}
hotcat_categories=parent.hotcat_categories;
if (newcattext.search(/\[\[\Kategorie:.+]\]/)!=-1) {
newcattext=newcattext.replace(/(\[\[\Kategorie:.+]\] ?\r?\n?)+/g, "__KATEGORIELISTE__");
} else {//Wenn es noch keine Kategorien gibt
if (wgNamespaceNumber==6 && newcattext.search(/Hochladen/!=-1)) {//Füge die Kategorien bei Bildern unter "Kategorie" in der Hochlagen-Vorlage ein
newcattext=newcattext.replace(/\|Kategorie=(.+)}}/, "|Kategorie=__KATEGORIELISTE__$1}}");
} else {//Ansonsten am Ende der Seite
newcattext+="\n__KATEGORIELISTE__";
}
}
hotcat_wikimarkup=document.getElementById("wpTextbox1").innerHTML;
defaultsortvar_old="";
while (hotcat_wikimarkup.search(/\{\{DEFAULTSORT:.+\}\}/)!=-1) {
hotcat_wikimarkup=hotcat_wikimarkup.substring(hotcat_wikimarkup.indexOf("\{\{DEFAULTSORT:")+1, hotcat_wikimarkup.length);
defaultsortvar_old=hotcat_wikimarkup.substring(13, hotcat_wikimarkup.indexOf("}"));
}
if (defaultsortvar=="") {//löschen
newcattext=newcattext.replace(/\{\{DEFAULTSORT:.+\}\}/g, "");
} else if (defaultsortvar_old!=defaultsortvar) {//ändern
if (newcattext.search(/\{\{DEFAULTSORT:.+\}\}/)!=-1) {
newcattext=newcattext.replace(/\{\{DEFAULTSORT:.+\}\}/g, "\{\{DEFAULTSORT:"+defaultsortvar+"\}\}");
} else {
newcattext=newcattext.replace(/__KATEGORIELISTE__/, "\{\{DEFAULTSORT:"+defaultsortvar+"\}\}\n__KATEGORIELISTE__");
}
}
newcattext_preview="";
for (i=0; i<hotcat_categories.length; i++) {
newcattext_preview+="[[Kategorie:"+hotcat_categories[i]+"]]\n";
}
newcattext=newcattext.replace(/__KATEGORIELISTE__/, newcattext_preview);
newcattext=newcattext.replace(/__KATEGORIELISTE__/g, "");
newcattext=newcattext.replace(/&/g, "&");
newcattext=newcattext.replace(/</g, "<");
newcattext=newcattext.replace(/>/g, ">");
//Ändere Interwiki-Links
interwiki_links_old=new Array();
hotcat_wikimarkup=document.getElementById("wpTextbox1").innerHTML;
for (i=0; i<interwiki_list.length; i++) {
interwiki_regexp = new RegExp("\\[\\["+interwiki_list[i][0]+":(.+)\\]\\]");
if (interwiki_regexp.test(hotcat_wikimarkup)) {
interwiki_links_old.push(new Array(interwiki_list[i][0], RegExp.$1, false));
interwiki_regexp = new RegExp("\\{\\{(Vorlage:)?FA\\|"+interwiki_list[i][0]+"\\}\\}");
if (interwiki_regexp.test(hotcat_wikimarkup)) {
interwiki_links_old[interwiki_links_old.length-1][2]=true;
}
}
}
interwiki_links=parent.interwikis;
if (hotcat_categories.length>0 && interwiki_links_old.length==0 && interwiki_links.length>0) {newcattext+="\n"}
for (i=0; i<interwiki_list.length; i++) {//Alte Links löschen
interwiki_regexp = new RegExp("\\[\\["+interwiki_list[i][0]+":(.+)\\]\\]\\r?\\n?","g");
newcattext=newcattext.replace(interwiki_regexp, "");
interwiki_regexp = new RegExp("{{(Vorlage:)?FA\\|"+interwiki_list[i][0]+"}}\\r?\\n?\\r?\\n?","g");
newcattext=newcattext.replace(interwiki_regexp, "");
}
for (i=0; i<interwiki_links.length; i++) {//neue einfügen
if (interwiki_links[i][2]==true) {
newcattext+='\{\{FA|'+interwiki_links[i][0]+'\}\}\n';
}
}
for (i=0; i<interwiki_links.length; i++) {
newcattext+="[["+interwiki_links[i][0]+":"+interwiki_links[i][1]+"]]\n";
}
//Erstelle Zusammenfassung
hotcat_categories_old=new Array();
hotcat_wikimarkup=document.getElementById("wpTextbox1").innerHTML;
while (hotcat_wikimarkup.search(/\[\[Kategorie:.+\]\]/)!=-1) {
hotcat_wikimarkup=hotcat_wikimarkup.substring(hotcat_wikimarkup.indexOf("[[Kategorie:")+1, hotcat_wikimarkup.length);
hotcat_categories_old.push(hotcat_wikimarkup.substring(11, hotcat_wikimarkup.indexOf("]")));
}
hotcat_diffarrays=comparearrays("cat", hotcat_categories_old, hotcat_categories);
hotcat_categories_old=hotcat_diffarrays[0].slice(0);
hotcat_categories=hotcat_diffarrays[1].slice(0);
hotinter_diffarrays=comparearrays("interwiki", interwiki_links_old, interwiki_links);
interwiki_links_old=hotinter_diffarrays[0].slice(0);
interwiki_links=hotinter_diffarrays[1].slice(0);
//Jetzt enthalten die Arrays nur noch die Änderungen
summary_elements=new Array();
//Gelöschte Elemente
if (hotcat_categories_old.length>0) {
summary_working="- [[Kategorie:"+ (hotcat_categories_old[0]+"|").slice(0,hotcat_categories_old[0].indexOf("|")) +"]]";
for (i=1; i<hotcat_categories_old.length; i++) {
summary_working+=", [[Kategorie:"+ (hotcat_categories_old[i]+"|").slice(0,hotcat_categories_old[i].indexOf("|")) +"]]";
}
if (interwiki_links_old.length>0) {
for (i=0; i<interwiki_links_old.length; i++) {
summary_working+=", [["+interwiki_links_old[i][0]+":"+interwiki_links_old[i][1]+"]]";
}
}
summary_elements.push(summary_working);
} else if (interwiki_links_old.length>0) {
summary_working="- [["+interwiki_links_old[0][0]+":"+interwiki_links_old[0][1]+"]]";
for (i=1; i<interwiki_links_old.length; i++) {
summary_working+=", [["+interwiki_links_old[i][0]+":"+interwiki_links_old[i][1]+"]]";
}
summary_elements.push(summary_working);
}
//Ergänzte Elemente
if (hotcat_categories.length>0) {
summary_working="+ [[Kategorie:"+ (hotcat_categories[0]+"|").slice(0,hotcat_categories[0].indexOf("|")) +"]]";
for (i=1; i<hotcat_categories.length; i++) {
summary_working+=", [[Kategorie:"+ (hotcat_categories[i]+"|").slice(0,hotcat_categories[i].indexOf("|")) +"]]";
}
if (interwiki_links.length>0) {
for (i=0; i<interwiki_links.length; i++) {
summary_working+=", [["+interwiki_links[i][0]+":"+interwiki_links[i][1]+"]]";
}
}
summary_elements.push(summary_working);
} else if (interwiki_links.length>0) {
summary_working="+ [["+interwiki_links[0][0]+":"+interwiki_links[0][1]+"]]";
for (i=1; i<interwiki_links.length; i++) {
summary_working+=", [["+interwiki_links[i][0]+":"+interwiki_links[i][1]+"]]";
}
summary_elements.push(summary_working);
}
if (parent.checkedqs!="keine Vorlage") {
if (checkedqs_desc=="") {
summary_elements.push(parent.checkedqs+"-Vorlage ergänzt.");
} else {
summary_elements.push(parent.checkedqs+"-Vorlage ergänzt ("+checkedqs_desc+").");
}
}
if (defaultsortvar_old!=defaultsortvar) {
if (defaultsortvar_old=="") {
summary_elements.push("DEFAULTSORT ergänzt.");
} else if (defaultsortvar=="") {
summary_elements.push("DEFAULTSORT entfernt.");
} else {
summary_elements.push("DEFAULTSORT geändert.");
}
}
summary="[[Hilfe:HotCat|HotCat]]";
if (parent.hotcat_comment && parent.hotcat_comment!=undefined && parent.hotcat_comment!="") {//Wenn eigener Kommentar angegeben wurde
summary+=" ("+parent.hotcat_comment+")";
}
summary+=": "+summary_elements.join(" | ");
if (summary_elements.length==0) {
summary+="Reihenfolge der Kategorien oder FA-Vorlage(n) geändert.";
}
//Markiere Änderung als "Kleinigkeit"
if (document.getElementById("wpMinoredit")) document.getElementById("wpMinoredit").checked=true;
//Ändere die Kategorien
document.getElementById("wpTextbox1").value=newcattext;
//Ergänze Zusammenfassung
document.getElementById("wpSummary").value=summary;
//Sende ab
document.getElementById("editform").submit();
return;
}
//Bearbeitungsfenster schließen, wenn Änderung abgeschlossen ist
if (parent.document.getElementById("submitstatus_table")) {
window.onload=function(){
window.setTimeout('parent.document.getElementById("submitstatus_table").removeChild(parent.document.getElementById("submitstatus_tr_de"));',500);
}
return;
}
//Prüfen, ob HotCat aktiviert werden soll: Abbruch, wenn
//nur Administratoren die Seite bearbeiten dürfen und man selber keiner ist
/*if (!hotcat_issysop) {
for (i=0; i<wgRestrictionEdit.length; i++) {if (wgRestrictionEdit[i]=="sysop") {return;}}
}*/
//oder wenn man die Seite bearbeitet oder im Vorschau-Modus ist
if (wgAction=="edit" || wgAction=="submit" || wgAction=="history" || wgAction=="delete" || wgAction=="protect" || wgAction=="unprotect" || wgAction=="watch" || wgAction=="unwatch" || wgCanonicalNamespace=="Special") {return;}
//oder wenn man im Versionsvergleich ist
var obj=document.getElementsByTagName("table");
for(i=0; i<obj.length; i++) {if (obj[i].className=="diff") {return;}}
//oder wenn sich die Seite im Vorlagen-Namensraum befindet (denn dann werden Kategorien meistens über die Vorlage eingefügt)
if (wgNamespaceNumber!=0 && wgNamespaceNumber!=4 && wgNamespaceNumber!=6 && wgNamespaceNumber!=12 && wgNamespaceNumber!=14) {return;}
//oder wenn die Seite nicht existiert
if (wgCurRevisionId == false) {return;}
//Wenn die Seite noch keine Kategorien besitzt, muss die Kategorie-Box ergänzt werden
if (!document.getElementById("catlinks")) {
document.getElementById("bodyContent").innerHTML+='<div id="catlinks"><p class="catlinks"><a href="/wiki/index.php/Spezial:Categories" title="Spezial:Categories">Kategorien</a>: <i>leer</i></p></div>';
}
document.getElementById("catlinks").innerHTML+='<div id="hotcat_initlink" align="right"><small><a href="javascript:loadRCData2();">HotCat</a></small></div>';
}
hotcat_getRCDataRO = getXmlHttpRequestObject();
//Starte eine Anfrage nach dem Inhalt der Seite
function loadRCData2() {
if (hotcat_getRCDataRO.readyState == 4 || hotcat_getRCDataRO.readyState == 0) {
document.getElementById("hotcat_initlink").innerHTML='<img src="http://www.jedipedia.de/wiki/images/Ajax-loader.gif">';
hotcat_getRCDataRO.open("GET", wikiurl1+encodeURIComponent(wgPageName)+'&action=raw&nocache='+wgCurRevisionId, true);
hotcat_getRCDataRO.onreadystatechange = hotcat_init;
hotcat_getRCDataRO.send(null);
}
}
//Initialisierung von HotCat
function hotcat_init() {
//Wenn Antwort kommt
if (hotcat_getRCDataRO.readyState != 4) {return;}
document.getElementById("hotcat_initlink").innerHTML="";
hotinter_bot("login");//Login bei allen anderen Wikis
hotcat_wikimarkup=hotcat_getRCDataRO.responseText;
//---- AJAX-AUSWERTUNG ---- //
defaultsortname="";
hotcat_categories=new Array();
if (hotcat_wikimarkup.search(/\{\{DEFAULTSORT:.+\}\}/)!=-1) {
hotcat_wikimarkup=hotcat_wikimarkup.substring(hotcat_wikimarkup.indexOf("\{\{DEFAULTSORT:"), hotcat_wikimarkup.length);
defaultsortname=hotcat_wikimarkup.substring(14, hotcat_wikimarkup.indexOf("}}"));
}
while (hotcat_wikimarkup.search(/\[\[Kategorie:.+\]\]/)!=-1) {
hotcat_wikimarkup=hotcat_wikimarkup.substring(hotcat_wikimarkup.indexOf("[[Kategorie:")+1, hotcat_wikimarkup.length);
hotcat_categories.push(hotcat_wikimarkup.substring(11, hotcat_wikimarkup.indexOf("]")));
}
catlinks_old=document.getElementById("catlinks").innerHTML;
catlinks_old=catlinks_old.replace(/<p class=["']catlinks["']><a href=["']\/wiki\/index.php5?(\/|(\?title=))Spezial\:Categories["']/,"");
catlinks_old=catlinks_old.replace(/ title=["']Spezial:Categories["']>Kategorien?<\/a>: <span dir=["']ltr["']>/,"");
catlinks_old=catlinks_old.replace(/<\/span><\/p><div id="hotcat_initlink" align="right"><\/div>/,"");
catlinks_old=catlinks_old.split(/<\/span> \| <span dir=["']ltr["']>/);
existingcategories=new Array();//Kategorien, die es gibt
missingcategories=new Array();//Kategorie, die es nicht gibt
hidden_categories=new Array();//Kategorien, die über eine Vorlage eingebunden wurden
for (i=0; i<catlinks_old.length; i++) {
if (catlinks_old[i].search(/class=["']new["']/)==-1) {
catlinks_old[i]=catlinks_old[i].replace(/<a href="\/wiki\/index\.php5?(\/|(\?title=))Kategorie:.+" title="Kategorie:.+">(.+)<\/a>/, "$3");
existingcategories.push(catlinks_old[i]);
} else {
catlinks_old[i]=catlinks_old[i].replace(/<a href="\/wiki\/index\.php5?\?title=Kategorie:.+&action=edit" class="new" title="Kategorie:.+">(.+)<\/a>/, "$1");
missingcategories.push(catlinks_old[i]);
}
//Versteckte Kategorien herausfinden
for (j=0; j<hotcat_categories.length; j++) {
if (i<0) iworking=0; else iworking=i;
if (hotcat_categories[j].indexOf("|")!=-1)
hotcat_working=hotcat_categories[j].substring(0,hotcat_categories[j].indexOf("|"))
else hotcat_working=hotcat_categories[j];
if (catlinks_old[iworking]==hotcat_working) {
catlinks_old.splice(i, 1);
if (i>-1)i--;
}
}
}
for (i=0; i<catlinks_old.length; i++) {
hidden_categories.push(catlinks_old[i]);
}
interwikis=new Array();
//Prüfe, welche Interwiki-Links in der Seite sind
for (i=0; i<interwiki_list.length; i++) {
interwiki_regexp = new RegExp("\\[\\["+interwiki_list[i][0]+":(.+)\\]\\]");
if (interwiki_regexp.test(hotcat_getRCDataRO.responseText)) {
interwikis.push(new Array(interwiki_list[i][0], RegExp.$1, false));//Sprachcode, Lemma, FA
interwiki_regexp = new RegExp("\\{\\{(Vorlage:|Template:)?FA\\|"+interwiki_list[i][0]+"\\}\\}");
if (interwiki_regexp.test(hotcat_getRCDataRO.responseText)) {
interwikis[interwikis.length-1][2]=true;
}
}
}
//---- INTERFACE ---- //
catlinks_new='<div id="catlinks2"><div id="catlinks"><p class="catlinks">';
catlinks_new+='<h2 style="padding-top: 0px;"><span class="editsection"><a href="/wiki/index.php/Hilfe:HotCat" target="_blank">HotCat-Hilfe</a> | <a href="javascript:hotcat_edit(\'cancel\');">Schließen</a></span> <span class="mw-headline"><img src="http://www.jedipedia.de/wiki/thumb.php?f=HOTCAT+Logo.png&w=80" alt="Eine rote Katze läuft zwischen den Worten HOT und CAT." title="HOT CAT"></h2>';
catlinks_new+='<div style="width: 695px; float: left; margin-bottom: 30px;">';
//Kategorien
catlinks_new+='<h3><span class="editsection"></span> <span class="mw-headline">Kategorien</span></h3>';
catlinks_new+='<table cellspacing=3 style="background-color:transparent;">';
catlinks_new+='<tr><td align="right">\{\{DEFAULTSORT:</td><td><input value="'+defaultsortname+'" size="60" id="defaultsort" onfocus="hotcat_edit(\'defaultsort_focus\')" style="width: 386px;"> \}\}</td></tr>';
catlinks_new+='<tr><td></td><td><small style="color: #555;">Beispiel: „Anakin Skywalker“ wird als „Skywalker, Anakin“ einsortiert.</small></td></tr>';
catlinks_new+='<tr><td align="right">Kategorie ergänzen:</td><td><span id="vorschlaegecreatecatname" style="position:absolute;left:150px;width:300px;height:100px;margin-top:-112px;padding:5px;overflow:auto;border:1px solid #aaa;background-color:#f9f9f9;display:none;" onclick="hotcat_edit(\'openbox\',\'vorschlaegecreatecatname\')"><b>Vorschläge:</b></span><input size="60" id="createcatname" onkeyup="hotcat_keyup(\'createcatname\');" onfocus="hotcat_edit(\'openbox\',\'vorschlaegecreatecatname\')" onblur="hotcat_edit(\'closebox\',\'vorschlaegecreatecatname\')" style="width: 386px;"> <input onclick="hotcat_edit(\'add\')" type="button" value="Hinzufügen"></td></tr>';
catlinks_new+='<tr><td></td><td><span id="categorylist"></span></td></tr>';
catlinks_new+='<tr><td></td><td>Vor kurzem gelöschte Kategorien: <span id="hotcat_recentlyremoved"><i>nichts</i></span></td></tr>';
if (hidden_categories.length>0) {
catlinks_new+='<tr><td></td><td>Versteckte Kategorien: '+hidden_categories.join(", ")+'</td></tr>';
catlinks_new+='<tr><td></td><td><small style="color: #555;">Diese Kategorien werden durch Vorlagen eingebunden und können nicht mit HotCat bearbeitet werden.</small></td></tr>';
}
catlinks_new+='<tr><td colspan=2><br>';
//Qualitätssicherungsvorlagen
catlinks_new+='<h3><span class="editsection"></span> <span class="mw-headline">Qualitätssicherungsvorlage</span></h3></td></tr>';
catlinks_new+='<tr><td align="right">Vorlage wählen:</td><td><ul style="margin: -5px;">';
for (i=0; i<qs_vorlagen.length; i++) {
if (qs_vorlagen[i]=="QM") {if (wgNamespaceNumber==6) {//Bild-Namensraum
catlinks_new+='<li style="display:inline-block; margin-left:10px;"><input type="radio" name="vorlagen" value="'+qs_vorlagen[i]+'"> '+qs_vorlagen[i]+'</li>';
}} else if (qs_vorlagen[i]=="keine Vorlage") {
catlinks_new+='<li style="display:inline-block; margin-left:10px;"><input type="radio" name="vorlagen" value="'+qs_vorlagen[i]+'" checked> '+qs_vorlagen[i]+'</li>';
} else {
catlinks_new+='<li style="display:inline-block; margin-left:10px;"><input type="radio" name="vorlagen" value="'+qs_vorlagen[i]+'"> '+qs_vorlagen[i]+'</li>';
}
}
catlinks_new+='</ul></td></tr>';
catlinks_new+='<tr><td>Begründung (optional):</td><td><input id="qsvorlage_desc" size=60 style="width: 386px;"></td></tr>';
catlinks_new+='<tr><td></td><td><small style="color: #555;">Beispiel: „Für dieses Bild ist keine ausreichende Quelle vorhanden.“</small> <input id="qsvorlage_checkbox" type="checkbox" checked> Signatur</td></tr></table></div>';
//Interwiki-Links
catlinks_new+='<div style="min-width: 300px; float: left; margin-bottom: 30px;"><h3><span class="editsection">';
catlinks_new+='<a href="http://www.google.de/search?q=';
if (interwikis.length>0) catlinks_new+='allintitle:+';
catlinks_new+='site:starwars.wikia.com+OR+site:ossus.pl+OR+site:wookiepedia.fr+';
for (i=0; i<3; i++) {
catlinks_new+=encodeURIComponent(wgTitle.replace(/ ?\(.+\)/, "").split(" ").join("+OR+"));
GoogleEN: for (j=0; j<interwikis.length; j++) {if (interwikis[j][0]=="en" && interwikis[j][1]!=wgTitle) {
catlinks_new+='+OR+'+encodeURIComponent(interwikis[j][1].replace(/\(.+\)/, "").split(" ").join(" OR "));break GoogleEN;
}}
}
//.replace(/von OR (.+)( OR .+)?/)
catlinks_new+='&num=100&filter=0" target="_blank">Links suchen</a>';
catlinks_new+='</span> <span class="mw-headline">InterWiki-Links</span></h3>';
catlinks_new+='<table cellspacing=3 style="background-color:transparent;">';
catlinks_new+='<tr><td width=130 align="right">InterWiki ergänzen:</td><td>\[\[<select id="addinterwikikuerzel" style="height: 22px;">';
for (i=0; i<interwiki_list.length; i++) {
catlinks_new+='<option title="'+interwiki_list[i][1]+'"';
if(interwiki_list[i][0]=="de")catlinks_new+=' disabled';
catlinks_new+='>'+interwiki_list[i][0]+'</option>';
}
catlinks_new+='</select>:<input size="50" value="'+wgTitle+'" id="addinterwiki" style="width: 350px;">\]\] <input type="button" value="Hinzufügen" onclick="hotinter_edit(\'add\');"></td></tr>';
catlinks_new+='<tr><td></td><td><small style="color: #555;">Damit der Artikel in der jeweiligen Sprache verlinkt werden kann, musst du hier seinen Titel eintragen.</small></td></tr>';
catlinks_new+='<tr><td align="right" valign="top">InterWikis ändern:</td><td><div id="interwikilist"></div><br>';
catlinks_new+='<tr><td align="right" valign="top">InterWiki-CleanUp:</td><td><div id="interwiki_cleanup_loading"><img src="http://www.jedipedia.de/wiki/images/Ajax-loader.gif"> Die InterWiki-Links bei anderen Wikis werden geladen. (<span id="interwiki_cleanup_loadingstatus">0</span>/'+interwikis.length+')</div><div id="interwiki_cleanup"></div></td></tr></table></div>';
catlinks_new+='<br style="clear: left;"><div style="background-color: #AAA; padding: 10px;">';
catlinks_new+='<div style="margin-left: 52px; margin-bottom: 3px;">Kommentar: <input size="60" id="hotcatcomment" style="width: 386px;"> <input type="button" value="Speichern" onclick="hotcat_edit(\'submit\')"></div>';
catlinks_new+='<span style="display: inline-block; margin-left: 130px;"><small>Die Angabe eines Kommentars ist optional.</small></span><input type="button" value="Abbrechen" onclick="hotcat_edit(\'cancel\')" style="float: right;">';
catlinks_new+='<br style="clear:right;"></div></p></div></div>';
document.getElementById("bodyContent").innerHTML+=catlinks_new;
refreshcategorylist();
hotinter_bot("createlist");
refreshinterwikilist();
}
closebox=new Array();
function hotcat_edit(mode, id) {
if (mode=="add" && document.getElementById("createcatname").value!="") {//Kategorie hinzufügen
catadd=true;
for (j=0; j<hotcat_blacklist.length; j++) {
if (hotcat_blacklist[j]==document.getElementById("createcatname").value) {
catadd=false;
alert("Diese Kategorie kann nicht hinzugefügt werden, weil sie über eine Vorlage eingebunden werden muss.");
break;
}
}
if (catadd==true) {
hotcat_categories.push(document.getElementById("createcatname").value);
refreshcategorylist();
document.getElementById("createcatname").value="";
}
} else if (mode=="del") {//Kategorie löschen
categoryismissing="";
for (j=0; j<missingcategories.length; j++) {
if (hotcat_categories[id]==missingcategories[j]) {categoryismissing=' class="new"';}
}
if (document.getElementById("hotcat_recentlyremoved").innerHTML=="<i>nichts</i>") {
document.getElementById("hotcat_recentlyremoved").innerHTML='<span id="removed_'+hotcat_categories[id]+'"><a href="/wiki/index.php/Kategorie:'+hotcat_categories[id]+'"'+categoryismissing+'>'+hotcat_categories[id]+'</a> <a href="javascript:hotcat_edit(\'rev\',\''+hotcat_categories[id]+'\')" title="wiederherstellen">↺</a></span>';
} else {
document.getElementById("hotcat_recentlyremoved").innerHTML+='<span id="removed_'+hotcat_categories[id]+'">, <a href="/wiki/index.php/Kategorie:'+hotcat_categories[id]+'"'+categoryismissing+'>'+hotcat_categories[id]+'</a> <a href="javascript:hotcat_edit(\'rev\',\''+hotcat_categories[id]+'\')" title="wiederherstellen">↺</a></span>';
}
hotcat_categories.splice(id,1);
refreshcategorylist();
} else if (mode=="rev") {//Gelöschte Kategorie wiederherstellen
hotcat_categories.push(id);
refreshcategorylist();
document.getElementById("removed_"+id).innerHTML="";
} else if (mode=="edit") {//Bearbeitungsfeld öffnen
document.getElementById("category_"+id).innerHTML='<font color="#bbb">–</font> <font color="#bbb">±</font> <font color="#bbb">↑</font> <font color="#bbb">↓</font> <span id="vorschlaegenewcatname'+id+'" style="position:absolute;width:350px;height:100px;margin-top:-135px;overflow:auto;border:1px solid #aaa;background-color:#f9f9f9;display:none;padding:5px;left:250px;" onclick="hotcat_edit(\'openbox\',\'vorschlaegenewcatname'+id+'\')"><b>Vorschläge:</b></span><input value="'+hotcat_categories[id]+'" size="40" id="newcatname'+id+'" onkeyup="hotcat_keyup(\'newcatname'+id+'\');" onfocus="hotcat_edit(\'openbox\',\'vorschlaegenewcatname'+id+'\')" onblur="hotcat_edit(\'closebox\',\'vorschlaegenewcatname'+id+'\')"> <input onclick="hotcat_edit(\'editok\','+id+')" type="button" value="Übernehmen"> <input onclick="hotcat_edit(\'editcancel\','+id+')" type="button" value="Abbrechen">';
hotcat_keyup("newcatname"+id);
} else if (mode=="editok") {//Kategorie ändern
hotcat_categories[id]=document.getElementById("newcatname"+id).value;
refreshcategorylist();
} else if (mode=="editcancel") {//Bearbeitungsfeld schließen
refreshcategorylist();
} else if (mode=="submit") {//Änderungen speichern
defaultsortvar_parent=document.getElementById("defaultsort").value;
hotcat_comment=document.getElementById("hotcatcomment").value;
checkedqs_desc=document.getElementById("qsvorlage_desc").value;
checkbox_qs=document.getElementById("qsvorlage_checkbox").checked;
checkedqs="keine Vorlage";
if (wgNamespaceNumber!=6) for (i=0; i<qs_vorlagen.length; i++) {if (qs_vorlagen[i]=="QM")qs_vorlagen.splice(i,1);}
for (i=0; i<document.getElementsByName("vorlagen").length; i++) {
if (document.getElementsByName("vorlagen")[i].checked) {checkedqs=qs_vorlagen[i];}
}
catlinks_submit ='<div id="catlinks"><img src="http://www.jedipedia.de/wiki/thumb.php?f=HOTCAT+Logo.png&w=150" alt="Eine rote Katze läuft zwischen den Worten HOT und CAT." title="HOT CAT" align="right"><h3>HotCat ist am Ändern.</h3>';
catlinks_submit+='<b>Bitte schließe das Fenster erst, wenn die Änderungen abgeschlossen sind und die Bestätigung erscheint!</b><br><br>';
catlinks_submit+='<table id="submitstatus_table" width="100%" style="background-color:transparent;">';
catlinks_submit+='<tr id="submitstatus_tr_de"><td valign="top">de</td><td><img src="http://www.jedipedia.de/wiki/images/Ajax-loader.gif"> <span id="submitstatus_span_de">Seite wird geladen...</span><br>';
catlinks_submit+='<iframe src="'+wikiurl1+encodeURIComponent(wgPageName)+'&action=edit&hotcat=true&printable=yes" width=100% height=100></iframe></td></tr>';
catlinks_submit+='</table></div>';
document.getElementById("catlinks2").innerHTML=catlinks_submit;
hotinter_bot("gettoken");
} else if (mode=="cancel") {//HotCat beenden
document.getElementById("bodyContent").removeChild(document.getElementById("catlinks2"));
hotcat_addlink();
} else if (mode=="vorschlagclick") {
oldinputvalue=document.getElementById(id[0]).value;
document.getElementById(id[0]).value=id[1].replace(/%/g,'"');
document.getElementById(id[0]).style.color="#002bb8";
document.getElementById(id[0]).focus();
} else if (mode=="openbox") {//Vorschläge-Kasten öffnen
if (closebox[id]) {window.clearTimeout(window.closebox[id]);}
document.getElementById(id).style.display="block";
} else if (mode=="closebox") {//Vorschläge-Kasten schließen
closebox[id]=window.setTimeout('document.getElementById("'+id+'").style.display="none";',175);
} else if (mode=="defaultsort_focus") {
if (document.getElementById("defaultsort").value=="") {
if (wgTitle.search(/ (von|um|auf|in|nach|beim) /)!=-1) {
if (wgTitle.substring(0, wgTitle.indexOf(" "+RegExp.$1+" ")).search(/ /)!=-1) {
document.getElementById("defaultsort").value=wgTitle.substring(wgTitle.indexOf(" "+RegExp.$1+" ")+RegExp.$1.length+2) + ", " + wgTitle.substring(0, wgTitle.lastIndexOf(" "));
} else {
document.getElementById("defaultsort").value=wgTitle.substring(wgTitle.indexOf(" "+RegExp.$1+" ")+RegExp.$1.length+2) + ", " + wgTitle.substring(0, wgTitle.indexOf(" "+RegExp.$1+" ")) + " "+RegExp.$1;
}
} else if (wgTitle.substring(0, 4)=="The ") {
document.getElementById("defaultsort").value=wgTitle.substring(4)+", The";
} else if (wgTitle.search(/ /)!= -1) {
document.getElementById("defaultsort").value=wgTitle.substring(wgTitle.lastIndexOf(" ")+1) + ", " + wgTitle.substring(0, wgTitle.lastIndexOf(" "));
} else {
document.getElementById("defaultsort").value=wgTitle;
}
window.setTimeout('document.getElementById("defaultsort").focus();document.getElementById("defaultsort").select();',50);
}
} else if (mode=="up") {//Kategorie nach oben verschieben
old1=hotcat_categories[id-1];old2=hotcat_categories[id];
hotcat_categories[id-1]=old2;
hotcat_categories[id]=old1;
refreshcategorylist();
} else if (mode=="down") {//Kategorie nach untern verschieben
old1=hotcat_categories[id];old2=hotcat_categories[id+1];
hotcat_categories[id]=old2;
hotcat_categories[id+1]=old1;
refreshcategorylist();
}
}
//Interwiki-Link wird bearbeitet
function hotinter_edit(mode, id) {
if (mode=="add") {//ergänzen
newinterwikikuerzel=interwiki_list[document.getElementById("addinterwikikuerzel").selectedIndex][0];
newinterwikitext=document.getElementById("addinterwiki").value;
interwikis.push(new Array(newinterwikikuerzel,newinterwikitext,false));
refreshinterwikilist();
document.getElementById("addinterwiki").value=wgTitle;
} else if (mode=="edit") {//bearbeiten öffnen
hotinter_working='<font color="#bbb">–</font> <font color="#bbb">±</font> \[\[<select id="editinterwikikuerzel'+id+'">';
for (i=0; i<interwiki_list.length; i++) {
hotinter_working+='<option title="'+interwiki_list[i][1]+'"';
if (interwiki_list[i][0]=="de") {hotinter_working+=' disabled';}
if (interwiki_list[i][0]==interwikis[id][0]) {hotinter_working+=' selected';}
hotinter_working+='>'+interwiki_list[i][0]+'</option>';
}
hotinter_working+='</select>:<input value="'+interwikis[id][1]+'" style="width: 250px;" id="interwikiedit'+id+'">\]\] <input onclick="hotinter_edit(\'editsubmit\','+id+')" type="button" value="Übernehmen"> <input onclick="hotinter_edit(\'editcancel\','+id+')" type="button" value="Abbrechen">';
document.getElementById("interwiki_"+id).innerHTML=hotinter_working;
} else if (mode=="editsubmit") {//bearbeiten absenden
interwikis[id][0]=interwiki_list[document.getElementById("editinterwikikuerzel"+id).selectedIndex][0];
interwikis[id][1]=document.getElementById("interwikiedit"+id).value;
refreshinterwikilist();
} else if (mode=="editcancel") {//bearbeiten abbrechen
refreshinterwikilist();
} else if (mode=="del") {//löschen
interwikis.splice(id,1);
refreshinterwikilist();
} else if (mode=="toggle") {//Exzellent-Status ändern
if (interwikis[id][2]==true) {
interwikis[id][2]=false;
} else {
interwikis[id][2]=true;
}
refreshinterwikilist();
} else if (mode=="add_custom") {
id=id.split("|");
interwikis.push(new Array(id[0],id[1],false));
refreshinterwikilist();
} else if (mode=="edit_custom") {
for (i=0; i<interwikis.length; i++) {
if (interwikis[i][0]==id[0]) interwikis[i][1]=id[1];
}
refreshinterwikilist();
} else if (mode=="rev") {//wiederherstellen, noch nicht implementiert
}
refreshinterwikicleanup();
}
//For-Schleife mit allen Interwiki-Links
// Inhalt abrufen
// Interwiki-Links heraussuchen (mit DE!!!)
// Änderungen in Arrays schreiben
// Prüfen ob alle Abfragen fertig; wenn ja, Liste anzeigen
//Liste mit Änderungen
//Beim Absenden:
//Login
//For-Schleife mit Änderungen
// Gettoken
// Edit
//Logout
//Ändert eine Seite bei Wookieepedia oder bei einem anderen Star-Wars-Wiki
hotcat_proxy="/proxy.php";
hotcat_cookie=new Array();
hotcat_token=new Array();
hotinter_bot_length=0;
interwikis_wikia=new Array();//Interwiki-Links bei anderen Wikis
interwikis_wikia_original=new Array();//Sicherungskopie
hotinter_responsetexts=new Array();//Sicherungskopie der Seiteninhalte der Wikis
hotinter_getcontents_requests=new Array();
hotcat_getLoginRequests=new Array();
hotcat_getTokenRequests=new Array();
hotcat_getEditRequests=new Array();
hotinter_edittime="";
function hotinter_bot(mode, kuerzel, lemma, summary, content) {
if (mode=="opensearch") {//Womöglich für Vorschläge oder Prüfung, ob Seite existiert - im Moment nicht implementiert
} else if (mode=="createlist") {//Erstelle Liste mit falschen Interwiki-Links bei anderen Wikis
hotinter_bot_length=interwikis.length;
for (i=0; i<interwikis.length; i++) {
hotinter_bot("checkredirect",i);
}
} else if (mode=="checkredirect") {//Prüft, ob der Interwiki-Link eine Weiterleitung ist
hotinter_getcontents_requests[kuerzel]=getXmlHttpRequestObject();
hotinter_getcontents_requests[kuerzel].hotcat_id=kuerzel;
hotinter_getcontents_requests[kuerzel].onreadystatechange=function(){if(this.readyState==4){
if (this.responseText.search(/missing=""/)!=-1) {
alert('Der InterWiki-Link [['+interwikis[this.hotcat_id][0]+':'+interwikis[this.hotcat_id][1]+']] ist ungültig, weil er zu einer nicht existierenden Seite führt.\nEr wurde automatisch aus der Interwiki-Liste von StargateWiki entfernt.');
hotinter_edit("del",this.hotcat_id);
return;
}
if (this.responseText.search(/redirect=""/)!=-1) {//Wenn die Seite eine Weiterleitung ist
idworking=this.hotcat_id;
hotinter_getcontents_requests[idworking]=getXmlHttpRequestObject();
hotinter_getcontents_requests[idworking].hotcat_id=idworking;
hotinter_getcontents_requests[idworking].onreadystatechange=function(){if(this.readyState==4){
//Dann prüfe, wohin die Weiterleitung führt
returnredirect=/#.+\[\[(.+)\]\]/.exec(this.responseText);
alert('Der InterWiki-Link [['+interwikis[this.hotcat_id][0]+':'+interwikis[this.hotcat_id][1]+']] ist eine Weiterleitung und wurde automatisch zu [['+interwikis[this.hotcat_id][0]+':'+returnredirect[1]+']] korrigiert.\nEr muss noch bei den anderen Wikis korrigiert werden.');
interwikis[this.hotcat_id][1]=returnredirect[1];
refreshinterwikilist();
hotinter_bot("checkredirect",this.hotcat_id);
}}
hotinter_getcontents_requests[idworking].open("GET", hotcat_proxy+"?mode=get&host="+interwiki_list[interwiki_codes[interwikis[idworking][0]]][2]+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[interwikis[idworking][0]]][3]+"index.php?title="+encodeURIComponent(interwikis[idworking][1])+"&action=raw"), true);
hotinter_getcontents_requests[idworking].send(null);
} else {//Wenn die Seite ein normalen Artikel und keine Weiterleitung ist
hotinter_bot("fetchinterwikis",this.hotcat_id);
}
}}
hotinter_getcontents_requests[kuerzel].open("GET", hotcat_proxy+"?mode=get&host="+interwiki_list[interwiki_codes[interwikis[kuerzel][0]]][2]+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[interwikis[kuerzel][0]]][3]+"api.php?action=query&titles="+encodeURIComponent(interwikis[kuerzel][1])+"&prop=info&format=xml"), true);
hotinter_getcontents_requests[kuerzel].send(null);
} else if (mode=="fetchinterwikis") {//Erstelle eine Liste mit Interwiki-Links bei einem bestimmten Wiki
hotinter_getcontents_requests[kuerzel]=getXmlHttpRequestObject();
hotinter_getcontents_requests[kuerzel].hotcat_id=kuerzel;
hotinter_getcontents_requests[kuerzel].onreadystatechange=function(){if(this.readyState==4){
hotinter_responsetexts.push(this.responseText);
interwikis_wikia[interwikis_wikia.length]=new Array();
interwikis_wikia_original[interwikis_wikia_original.length]=new Array();//Das Array wird später verändert, daher muss eine Sicherungskopie angelegt werden
interwikis_wikia[interwikis_wikia.length-1][0]=new Array(interwikis[this.hotcat_id][0],interwikis[this.hotcat_id][1]);
interwikis_wikia_original[interwikis_wikia_original.length-1][0]=new Array(interwikis[this.hotcat_id][0],interwikis[this.hotcat_id][1]);
for (j=0; j<interwiki_list.length; j++) {
interwiki_regexp = new RegExp("\\[\\["+interwiki_list[j][0]+":(.+)\\]\\]");
if (interwiki_regexp.test(this.responseText)) {
innerLoop: for (k=0; k<interwiki_list[interwiki_codes[interwikis[this.hotcat_id][0]]][4].length; k++) {
if (interwiki_list[interwiki_codes[interwikis[this.hotcat_id][0]]][4][k]==interwiki_list[j][0]) {
interwikis_wikia[interwikis_wikia.length-1].push(new Array(interwiki_list[j][0], RegExp.$1));
interwikis_wikia_original[interwikis_wikia_original.length-1].push(new Array(interwiki_list[j][0], RegExp.$1));
break innerLoop;
}
}
}
}
refreshinterwikicleanup();//Aktualisiere Liste
hotinter_bot_length--;//Wenn alle Wikis kontrolliert wurden
document.getElementById("interwiki_cleanup_loadingstatus").innerHTML=interwikis.length-hotinter_bot_length;
if (hotinter_bot_length<1) document.getElementById("interwiki_cleanup_loading").innerHTML="";//Entferne Lade-Icon
}}
hotinter_getcontents_requests[kuerzel].open("GET", hotcat_proxy+"?mode=get&host="+interwiki_list[interwiki_codes[interwikis[kuerzel][0]]][2]+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[interwikis[kuerzel][0]]][3]+"index.php?title="+encodeURIComponent(interwikis[kuerzel][1])+"&action=raw"), true);
hotinter_getcontents_requests[kuerzel].send(null);
} else if (mode=="addlink") {//Füge Link bei einem anderen Wiki virtuell ein
for (i=0; i<interwikis_wikia.length; i++) {
if (interwikis_wikia[i][0][0]==summary) {
interwikis_wikia[i].push(new Array(kuerzel,lemma));
interwiki_working=new Array(interwikis_wikia[i][0][0],interwikis_wikia[i][0][1]);
interwikis_wikia[i].shift();
interwikis_wikia[i].sort(sortInterwikis);
interwikis_wikia[i].unshift(interwiki_working);
}
}
refreshinterwikicleanup();
} else if (mode=="editlink") {//Ändere Link bei einem anderen Wiki virtuell
for (i=0; i<interwikis_wikia.length; i++) {
if (interwikis_wikia[i][0][0]==summary) {
for (j=0; j<interwikis_wikia[i].length; j++) {
if (interwikis_wikia[i][j][0]==kuerzel) {
interwikis_wikia[i][j][1]=lemma;
}
}
}
}
refreshinterwikicleanup();
} else if (mode=="deljp") {//Link bei StargateWiki virtuell entfernen
for (i=0; i<interwikis.length; i++) {
if (interwikis[i][0]==kuerzel) {
hotinter_edit("del",i);
}
}
} else if (mode=="dellink") {//Link bei einem anderen Wiki virtuell entfernen
for (i=0; i<interwikis_wikia.length; i++) {
if (interwikis_wikia[i][0][0]==lemma) {
for (j=0; j<interwikis_wikia[i].length; j++) {
if (interwikis_wikia[i][j][0]==kuerzel) {
interwikis_wikia[i].splice(j,1);
}
}
}
}
refreshinterwikicleanup();
} else if (mode=="login") {//Login, um etwas zu ändern, siehe [[en:User:HotCat]]
for (m=0; m<interwiki_list.length; m++) {
if (interwiki_list[m][0]=="de") continue;
hotcat_getLoginRequests[m]=getXmlHttpRequestObject();
hotcat_getLoginRequests[m].id=m;
hotcat_getLoginRequests[m].onreadystatechange=function(){if(this.readyState==4){
inhalt=this.responseXML.documentElement.getElementsByTagName('login')[0];
if (inhalt.attributes.length>4) {hotcat_cookieprefix=inhalt.attributes[4].nodeValue;hotcat_cookiesession=inhalt.attributes[5].nodeValue;} else {hotcat_cookieprefix="ossus2";hotcat_cookiesession="";}
hotcat_cookie[interwiki_list[this.id][0]]=hotcat_cookieprefix+"UserName="+inhalt.attributes[2].nodeValue+";"+hotcat_cookieprefix+"UserID="+inhalt.attributes[1].nodeValue+";"+hotcat_cookieprefix+"Token="+inhalt.attributes[3].nodeValue+";"+hotcat_cookieprefix+"_session="+hotcat_cookiesession;
// hotcat_cookie_alt="lgtoken="+inhalt.attributes[3].nodeValue+"&lgusername="+inhalt.attributes[2].nodeValue+"&lguserid="+inhalt.attributes[1].nodeValue;
}}
hotcat_getLoginRequests[m].open("POST", hotcat_proxy+"?mode=post&host="+interwiki_list[m][2]+"&path="+encodeURIComponent(interwiki_list[m][3]+"api.php?action=login&format=xml"), true);
hotcat_getLoginRequests[m].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hotcat_getLoginRequests[m].send("lgname=HotCat&lgpassword=__INSERTPASSWORDHERE__");
}
} else if (mode=="gettoken") {//Beantrage Edit-Token
for (m=0; m<interwikis_wikia.length; m++) {
kuerzel=interwikis_wikia[m][0][0];lemma=interwikis_wikia[m][0][1];
hotinterwikia_diffarrays=comparearrays("interwiki", interwikis_wikia_original[m].slice(0), interwikis_wikia[m].slice(0));
interwikis_old_working=hotinterwikia_diffarrays[0].slice(0);
interwikis_new_working=hotinterwikia_diffarrays[1].slice(0);
if (interwikis_old_working.length>0 || interwikis_new_working.length>0) {//Wenn sich was geändert hat
document.getElementById("submitstatus_table").appendChild(document.createElement("tr"));//Statusanzeige ergänzen
document.getElementById("submitstatus_table").lastChild.id="submitstatus_tr_"+kuerzel;
document.getElementById("submitstatus_table").lastChild.innerHTML='<td>'+kuerzel+'</td><td><span id="submitstatus_span_'+kuerzel+'"><img src="http://www.jedipedia.de/wiki/images/Ajax-loader.gif"> Beantrage Edit-Token...</span></td>';
content=hotinter_responsetexts[m];
for (n=0; n<interwiki_list.length; n++) {//Alte Links löschen
interwiki_regexp = new RegExp("(<\\!--(\\n)?)?\\[\\["+interwiki_list[n][0]+":(.+)\\]\\]((\\n)?-->)?\\r?\\n?","g");
content=content.replace(interwiki_regexp, "");
}
content=content.replace(/(\r?\n)+$/,"");content+="\n\n";//Absätze am Ende entfernen
for (n=1; n<interwikis_wikia[m].length; n++) {//Neue Links ergänzen
content+='[['+interwikis_wikia[m][n][0]+':'+interwikis_wikia[m][n][1]+']]\n';
}
summary='[[de:User:'+wgUserName+']] updated the interwiki links: ';//Zusammenfassung erstellen
if (interwikis_old_working.length>0) summary+='- ';
for (n=0; n<interwikis_old_working.length; n++) {
summary+='[['+interwikis_old_working[n][0]+':'+interwikis_old_working[n][1]+']]';
if (n<interwikis_old_working.length-1) summary+=', '; else summary+=' | ';
}
if (interwikis_new_working.length>0) summary+='+ ';
for (n=0; n<interwikis_new_working.length; n++) {
summary+='[['+interwikis_new_working[n][0]+':'+interwikis_new_working[n][1]+']]';
if (n<interwikis_new_working.length-1) summary+=', ';
}
hotcat_getTokenRequests[m]=getXmlHttpRequestObject();
hotcat_getTokenRequests[m].kuerzel=kuerzel;hotcat_getTokenRequests[m].lemma=lemma;hotcat_getTokenRequests[m].summary=summary;hotcat_getTokenRequests[m].content=content;
hotcat_getTokenRequests[m].onreadystatechange=function(){if(this.readyState==4){
inhalt=this.responseXML.documentElement;
if (this.kuerzel=="pl") {
hotcat_token[this.kuerzel]=inhalt.getElementsByTagName('page')[0].attributes[7].nodeValue;
hotinter_edittime=inhalt.getElementsByTagName('page')[0].attributes[3].nodeValue.replace(/T|Z|\:|\-/,"");
hotinter_bot("pledit", this.kuerzel, this.lemma, this.summary, this.content);
} else {
hotcat_token[this.kuerzel]=inhalt.getElementsByTagName('page')[0].attributes[8].nodeValue;
hotinter_bot("edit", this.kuerzel, this.lemma, this.summary, this.content);
}
}}
hotcat_getTokenRequests[m].open("GET", hotcat_proxy+"?mode=get&host="+interwiki_list[interwiki_codes[kuerzel]][2]+"&cookie="+encodeURIComponent(hotcat_cookie[kuerzel])+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[kuerzel]][3]+"api.php?action=query&prop=info&titles="+encodeURIComponent(lemma)+"&intoken=edit&format=xml"), true);
hotcat_getTokenRequests[m].send(null);
}
}
} else if (mode=="edit") {//Ändere die Seite
document.getElementById("submitstatus_span_"+kuerzel).innerHTML+=" Ändere Seite...";
hotcat_getEditRequests[kuerzel]=getXmlHttpRequestObject();
hotcat_getEditRequests[kuerzel].kuerzel=kuerzel;
hotcat_getEditRequests[kuerzel].onreadystatechange=function(){if(this.readyState==4){
document.getElementById("submitstatus_span_"+this.kuerzel).innerHTML+=" Fertig!";
window.setTimeout('document.getElementById("submitstatus_table").removeChild(document.getElementById("submitstatus_tr_'+this.kuerzel+'"));',500);
if (document.getElementById("submitstatus_table").childNodes.length==0) alert("Fertig!");
// hotinter_bot("logout",kuerzel);
}}
hotcat_getEditRequests[kuerzel].open("POST", hotcat_proxy+"?mode=post&host="+interwiki_list[interwiki_codes[kuerzel]][2]+"&cookie="+encodeURIComponent(hotcat_cookie[kuerzel])+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[kuerzel]][3]+"api.php?action=edit&format=xml&token="+encodeURIComponent(hotcat_token[kuerzel])+"title="+encodeURIComponent(lemma)+"&summary="+encodeURIComponent(summary)), true);
hotcat_getEditRequests[kuerzel].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hotcat_getEditRequests[kuerzel].send("action=edit&format=xml&title="+encodeURIComponent(lemma)+"&token="+encodeURIComponent(hotcat_token[kuerzel])+"&summary="+encodeURIComponent(summary)+"&text="+encodeURIComponent(content));
} else if (mode=="logout") {//Logout
hotcat_getRequest = getXmlHttpRequestObject();
hotcat_getRequest.onreadystatechange=function(){}
//alert(hotcat_getRequest.responseText);
hotcat_getRequest.open("GET", hotcat_proxy+"?mode=get&host="+interwiki_list[interwiki_codes[kuerzel]][2]+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[kuerzel]][3]+"api.php?action=logout&format=xml")+"&cookie="+encodeURIComponent(hotcat_cookie[kuerzel])+"&"+Math.random(), true);
hotcat_getRequest.send(null);
} else if (mode=="pledit") {//Änderung bei Ossus.pl (MediaWiki-Version 1.11 unterstützt kein Edit-API)
alert("Änderungen bei ossus.pl sind im Moment noch nicht möglich.");document.getElementById("submitstatus_table").removeChild(document.getElementById("submitstatus_tr_pl"));return;
hotcat_getEditRequests[kuerzel] = getXmlHttpRequestObject();
hotcat_getEditRequests[kuerzel].onreadystatechange=function(){if(this.readyState==4){
alert(this.responseText);
}}
hotcat_getEditRequests[kuerzel].open("POST", hotcat_proxy+"?mode=post&host="+interwiki_list[interwiki_codes[kuerzel]][2]+"&cookie="+encodeURIComponent(hotcat_cookie[kuerzel])+"&path="+encodeURIComponent(interwiki_list[interwiki_codes[kuerzel]][3]+"index.php?title="+lemma+"&action=submit")+"&"+Math.random(), true);
hotcat_getEditRequests[kuerzel].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
jetzt=new Date();
starttime=String(jetzt.getUTCFullYear())+String(jetzt.getUTCMonth()+1)+String(jetzt.getUTCDate())+String(jetzt.getUTCHours())+String(jetzt.getUTCMinutes())+String(jetzt.getUTCSeconds());
parameters="wpSection=&wpStarttime="+starttime+"&wpEdittime="+hotinter_edittime+"&wpTextbox1="+encodeURIComponent(content)+"&wpSummary="+encodeURIComponent(summary)+"&wpSave=Seite+speichern&wpEditToken="+encodeURIComponent(hotcat_token);
// hotcat_getEditRequests[kuerzel].setRequestHeader("Content-length", parameters.length);
// hotcat_getEditRequests[kuerzel].setRequestHeader("Connection", "close");
hotcat_getEditRequests[kuerzel].send(parameters);
}
}
//Taste wird gedrückt
function hotcat_keyup(elementvar) {
workingelement=elementvar;
catname=document.getElementById(elementvar).value;
document.getElementById(elementvar).style.color="black";
if (catname=="") {return;}
for (i=0; i<existingcategories.length; i++) {
if (catname==existingcategories[i]) {
document.getElementById(elementvar).style.color="#002bb8";
}
}
for (i=0; i<missingcategories.length; i++) {
if (catname==missingcategories[i]) {
document.getElementById(elementvar).style.color="#ba0000";
}
}
// window.setTimeout('hotcat_getcatlist("'+catname+'");',100);
hotcat_getcatlist(catname);
}
//Suche nach Kategorie, um Vorschläge zu machen
function hotcat_getcatlist(catname) {
hotcat_getRCDataR1 = getXmlHttpRequestObject();
if (hotcat_getRCDataR1.readyState == 4 || hotcat_getRCDataR1.readyState == 0) {
catname=catname.split("|");
hotcat_getRCDataR1.open("GET", wikiurl2+'?action=opensearch&search=Kategorie:'+catname[0], true);
hotcat_getRCDataR1.onreadystatechange = hotcat_parsecatlist;
hotcat_getRCDataR1.send(null);
}
}
//Wenn Antwort kommt
function hotcat_parsecatlist() {
if (hotcat_getRCDataR1.readyState == 4) {
catlist_ajax=eval(hotcat_getRCDataR1.responseText);
catlist_ajax=catlist_ajax;
catlist_ajax[0]=catlist_ajax[0].substring(10, catlist_ajax[0].length);
newvorschlaegehtml="<b>Vorschläge:</b><br>";
if (catlist_ajax[1]!="") {
if (catlist_ajax[0]==catlist_ajax[1][0].substring(10, catlist_ajax[1][0].length)) {
document.getElementById(workingelement).style.color="#002bb8";
} else {
missingcategories.push(catlist_ajax[0]);
document.getElementById(workingelement).style.color="#ba0000";
}
for (i=0; i<catlist_ajax[1].length; i++) {
catlist_ajax[1][i]=catlist_ajax[1][i].substring(10, catlist_ajax[1][i].length);
existingcategories.push(catlist_ajax[1][i]);
newvorschlaegehtml+='<a href="javascript:hotcat_edit(\'vorschlagclick\',new Array(\''+workingelement+'\',\''+catlist_ajax[1][i].replace(/'/g,"\\'").replace(/"/g,"%")+'\'));" title="auswählen">↴ '+catlist_ajax[1][i]+'</a><br>';
}
} else {
missingcategories.push(catlist_ajax[0]);
document.getElementById(workingelement).style.color="#ba0000";
}
document.getElementById("vorschlaege"+workingelement).innerHTML=newvorschlaegehtml;
document.getElementById("vorschlaege"+workingelement).style.display="block";
}
}
//Aktualisiert die Liste mit den Kategorien laut hotcat_categories[]
function refreshcategorylist() {
catlinks_new="";
if (hotcat_categories.length==1) {
catpreview='<p class=\'catlinks\'><a href="/wiki/index.php/Spezial:Categories" title="Spezial:Categories">Kategorie</a>: ';
} else {
catpreview='<p class=\'catlinks\'><a href="/wiki/index.php/Spezial:Categories" title="Spezial:Categories">Kategorien</a>: ';
}
for (i=0; i<hotcat_categories.length; i++) {
categoryismissing="";
if (hotcat_categories[i].search(/\|/)==-1) hotcat_catworking=hotcat_categories[i]; else hotcat_catworking=hotcat_categories[i].substring(0, hotcat_categories[i].indexOf("|"));
for (j=0; j<missingcategories.length; j++) {
if (hotcat_categories[i]==missingcategories[j]) {categoryismissing=' class="new"';}
}
catworking='<span id="category_'+i+'"><a href="javascript:hotcat_edit(\'del\','+i+')" title="löschen">–</a> <a href="javascript:hotcat_edit(\'edit\','+i+')" title="bearbeiten">±</a>';
if (i==0) catworking+=' <font color="#bbb">↑</font>'; else {catworking+=' <a href="javascript:hotcat_edit(\'up\','+i+')" title="nach oben verschieben">↑</a>';catpreview+=' | ';}
catpreview+='<span dir=\'ltr\'><a href="/wiki/index.php/Kategorie:'+hotcat_catworking+'"'+categoryismissing+' title="Kategorie:'+hotcat_categories[i]+'">'+hotcat_categories[i]+'</a></span>';
if (i==hotcat_categories.length-1) {catworking+=' <font color="#bbb">↓</font>';} else {catworking+=' <a href="javascript:hotcat_edit(\'down\','+i+')" title="nach unten verschieben">↓</a>';}
catworking+=' <a href="/wiki/index.php/Kategorie:'+hotcat_catworking+'"'+categoryismissing+'>'+hotcat_categories[i]+'</a></span><br>';
catlinks_new+=catworking;
}
catpreview+='</p>';
document.getElementById("categorylist").innerHTML=catlinks_new;
document.getElementById("catlinks").innerHTML=catpreview;
}
//Aktualisiert die Liste mit den Interwiki-Links laut interwikis[]
function refreshinterwikilist() {
interwikis.sort(sortInterwikis);
interwiki_links="";
for (i=0; i<interwikis.length; i++) {
interwiki_links+='<span id="interwiki_'+i+'"><a href="javascript:hotinter_edit(\'del\','+i+');" title="löschen">–</a> <a href="javascript:hotinter_edit(\'edit\','+i+');" title="bearbeiten">±</a> <a href="javascript:hotinter_edit(\'toggle\','+i+');" title="Exzellenter-Artikel-Status (de-)aktivieren"><sup><img src="';
if (interwikis[i][2]==false) {
interwiki_links+='http://www.jedipedia.de/wiki/skins/monobook/bullet.gif';
} else {
interwiki_links+='http://www.jedipedia.de/wiki/images/FA-Sternchen.png';
}
interwiki_links+='"></sup></a> <a href="http://www.stargate-wiki.de/wiki/index.php/'+interwikis[i][0]+':'+encodeURIComponent(interwikis[i][1])+'" target="_blank">'+interwikis[i][0]+':'+interwikis[i][1]+'</a></span><br>';
}
document.getElementById("interwikilist").innerHTML=interwiki_links;
}
//Aktualisiert die Liste mit den fehlenden/falschen/zu ergänzenden Interwiki-Links
function refreshinterwikicleanup() {
hotinter_newlinks=new Array();//Links, die im Wiki fehlen
hotinter_nolinks=new Array();//Links, die woanders fehlen
hotinter_difflinks=new Array();//Links, die woanders anders sind
for (i=0; i<interwikis_wikia.length; i++) {
hotinter_jpiwworking=interwikis.slice(0);hotinter_jpiwworking.push(new Array("de",wgTitle));
hotinter_wikiaiwworking=interwikis_wikia[i].slice(0);
OuterLoop: for (j=0; j<hotinter_jpiwworking.length; j++) {
iwcodeinarray=false;
InnerLoop: for (k=0; k<hotinter_wikiaiwworking.length; k++) {
if (hotinter_wikiaiwworking[k]==null) continue InnerLoop;
if (hotinter_jpiwworking[j][0]==hotinter_wikiaiwworking[k][0]) {//Wenn das Kürzel in beiden Arrays enthalten ist
iwcodeinarray=true;
if (hotinter_jpiwworking[j][1]==hotinter_wikiaiwworking[k][1]) {//Wenn die Lemmas identisch sind
hotinter_jpiwworking[j]=null;
} else {//Wenn die Lemmas unterschiedlich sind
hotinter_difflinks.push(new Array(hotinter_wikiaiwworking[k][0],hotinter_wikiaiwworking[k][1],interwikis_wikia[i][0][0],interwikis_wikia[i][0][1]));
}
hotinter_wikiaiwworking[k]=null;
break InnerLoop;
}
}
if (iwcodeinarray==false) {//Wenn das Kürzel nur bei StargateWiki ist
if (hotinter_jpiwworking[j][0]!=interwikis_wikia[i][0][0]) {//Ergänze nur, wenn der Link zu einem anderen Wiki zeigt
innerLoop: for (k=0; k<interwiki_list[interwiki_codes[interwikis_wikia[i][0][0]]][4].length; k++) {
if (interwiki_list[interwiki_codes[interwikis_wikia[i][0][0]]][4][k]==hotinter_jpiwworking[j][0]) {//Und wenn das Wiki den Link akzeptiert
hotinter_nolinks.push(new Array(hotinter_jpiwworking[j][0],hotinter_jpiwworking[j][1],interwikis_wikia[i][0][0],interwikis_wikia[i][0][1]));
}
}
}
}
}
for (j=0; j<hotinter_wikiaiwworking.length; j++) {//Wenn ein Link bei StargateWiki fehlt
if (hotinter_wikiaiwworking[j]!=null) hotinter_newlinks.push(new Array(hotinter_wikiaiwworking[j][0],hotinter_wikiaiwworking[j][1],interwikis_wikia[i][0][0],interwikis_wikia[i][0][1]));
}
}
cleanupcontent='';
//Neue Interwiki-Links
if (hotinter_newlinks.length>0) cleanupcontent+='Andere Wikis haben weitere Links, die noch nicht im Wiki stehen:<br><small style="color: #555;">Auf den Haken klicken, um den Link bei das Wiki zu ergänzen.<br>Auf das Kreuz klicken, um Link in diesem Wiki zu entfernen.</small><br><div id="hotcat_newiwlinks">';
for (j=0; j<hotinter_newlinks.length; j++) {
if (hotinter_newlinks[j][0]!="de" && hotinter_newlinks[j][0]!="fr") cleanupcontent+='<a href="javascript:hotinter_edit(\'add_custom\', \''+hotinter_newlinks[j][0]+'|'+hotinter_newlinks[j][1].replace(/"/,"%22").replace(/'/,"%27")+'\');" title="ergänzen">√</a> <a href="javascript:hotinter_bot(\'dellink\',\''+hotinter_newlinks[j][0]+'\',\''+hotinter_newlinks[j][2]+'\');">X</a> <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_newlinks[j][2]+':'+encodeURIComponent(hotinter_newlinks[j][3])+'" target="_blank">'+hotinter_newlinks[j][2]+':'+hotinter_newlinks[j][3]+'</a> hat noch den Link <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_newlinks[j][0]+':'+encodeURIComponent(hotinter_newlinks[j][1])+'" target="_blank">'+hotinter_newlinks[j][0]+':'+hotinter_newlinks[j][1]+'</a><br>';
}
if (hotinter_newlinks.length>0) cleanupcontent+='</div><br>';
//Fehlende Interwiki-Links
if (hotinter_nolinks.length>0) cleanupcontent+='Bei manchen Wikis fehlen Interwiki-Links:<br><small style="color: #555;">Auf den Haken klicken, um den Link auf der jeweiligen Seite zu ergänzen.<br>Auf das Kreuz klicken, um den Link aus dem Wiki zu entfernen.</small><br><div id="hotcat_noiwlinks">';
for (j=0; j<hotinter_nolinks.length; j++) {
if (hotinter_nolinks[j][0]!="fr") cleanupcontent+='<a href="javascript:hotinter_bot(\'addlink\',\''+hotinter_nolinks[j][0]+'\',\''+hotinter_nolinks[j][1].replace(/"/,"%22").replace(/'/,"%27")+'\',\''+hotinter_nolinks[j][2]+'\');" title="ergänzen">√</a> <a href="javascript:hotinter_bot(\'deljp\',\''+hotinter_nolinks[j][0]+'\');">X</a> <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_nolinks[j][2]+':'+encodeURIComponent(hotinter_nolinks[j][3])+'" target="_blank">'+hotinter_nolinks[j][2]+':'+hotinter_nolinks[j][3]+'</a> hat nicht den Link <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_nolinks[j][0]+':'+encodeURIComponent(hotinter_nolinks[j][1])+'" target="_blank">'+hotinter_nolinks[j][0]+':'+hotinter_nolinks[j][1]+'</a><br>';
}
if (hotinter_nolinks.length>0) cleanupcontent+='</div><br>';
//Andere Interwiki-Links
if (hotinter_difflinks.length>0) cleanupcontent+='Manche Wikis haben andere Interwiki-Links:<br><small style="color: #555;">Auf den Haken klicken, um den Link auf der jeweiligen Seite zu korrigieren.<br>Auf das Kreuz klicken, um den Link von der jeweiligen Seite in das Wiki zu übernehmen.</small><br><div id="hotcat_newiwlinks">';
for (i=0; i<hotinter_difflinks.length; i++) {
if (i>0) cleanupcontent+="<br>";
if (hotinter_difflinks[i][0]=="de") {
cleanupcontent+='<a href="javascript:hotinter_bot(\'editlink\',\''+hotinter_difflinks[i][0]+'\',\''+wgTitle.replace(/"/,"%22").replace(/'/,"%27")+'\',\''+hotinter_difflinks[i][2]+'\');" title="korrigieren">√</a> <font color="#bbb">X</font>';
cleanupcontent+=' <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_difflinks[i][2]+':'+encodeURIComponent(hotinter_difflinks[i][3])+'" target="_blank">'+hotinter_difflinks[i][2]+':'+hotinter_difflinks[i][3]+'</a> hat den Interwiki-Link <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_difflinks[i][0]+':'+encodeURIComponent(hotinter_difflinks[i][1])+'" target="_blank">'+hotinter_difflinks[i][0]+':'+hotinter_difflinks[i][1]+'</a>';
cleanupcontent+=' (StargateWiki hat <a href="http://www.stargate-wiki.de/wiki/index.php/'+encodeURIComponent(wgTitle)+'" target="_blank">de:'+wgTitle+'</a>)';
} else for (j=0; j<interwikis.length; j++) {if (interwikis[j][0]==hotinter_difflinks[i][0] && hotinter_difflinks[i][0]!="fr"){
cleanupcontent+='<a href="javascript:hotinter_bot(\'editlink\',\''+hotinter_difflinks[i][0]+'\',\''+interwikis[j][1].replace(/"/,"%22").replace(/'/,"%27")+'\',\''+hotinter_difflinks[i][2]+'\');" title="korrigieren">√</a> <a href="javascript:hotinter_edit(\'edit_custom\',new Array(\''+hotinter_difflinks[i][0]+'\',\''+hotinter_difflinks[i][1]+'\'));" title="übernehmen">X</a> <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_difflinks[i][2]+':'+encodeURIComponent(hotinter_difflinks[i][3])+'" target="_blank">'+hotinter_difflinks[i][2]+':'+hotinter_difflinks[i][3]+'</a> hat den Interwiki-Link <a href="http://www.stargate-wiki.de/wiki/index.php/'+hotinter_difflinks[i][0]+':'+encodeURIComponent(hotinter_difflinks[i][1])+'" target="_blank">'+hotinter_difflinks[i][0]+':'+hotinter_difflinks[i][1]+'</a>';
cleanupcontent+=' (StargateWiki hat <a href="http://www.stargate-wiki.de/wiki/index.php/'+interwikis[j][0]+':'+encodeURIComponent(interwikis[j][1])+'" target="_blank">'+interwikis[j][0]+':'+interwikis[j][1]+'</a>)';
}}
}
if (hotinter_difflinks.length>0) cleanupcontent+='</div>';
if (cleanupcontent=="" && document.getElementById("interwiki_cleanup_loading").innerHTML=="") cleanupcontent='HotCat konnte nichts finden, was geändert werden sollte.';
document.getElementById("interwiki_cleanup").innerHTML=cleanupcontent;
}
if(!Array.indexOf) {
Array.prototype.indexOf = function(el) {
for(var i = 0; i < this.length; i++) if(el === this[i]) return i;
return -1;
}
}
//Sortiert das Interwiki-Links-Array
function sortInterwikis(a, b) {
a=interwiki_codes[a[0]];
b=interwiki_codes[b[0]];
return(a==b)?0:(a>b)?1:-1;
}
function comparearrays(mode, altesarray, neuesarray) {
if (mode=="cat") {
MainFor: for (i=0; i<altesarray.length; i++) {//Alte Kategorien
for (j=0; j<neuesarray.length; j++) {//Neue Kategorien
//Lösche doppelte
if (altesarray.length==0 || neuesarray.length == 0) break MainFor;
if (i<0) iworking=0; else iworking=i;
if (altesarray[iworking] == neuesarray[j]) {
altesarray.splice(iworking, 1);
neuesarray.splice(j, 1);
if (i>-1)i--;
j--;
}
}
}
} else if (mode=="interwiki") {
MainFor: for (i=0; i<altesarray.length; i++) {//Alte Kategorien
for (j=0; j<neuesarray.length; j++) {//Neue Kategorien
//Lösche doppelte
if (altesarray.length==0 || neuesarray.length == 0) break MainFor;
if (i<0) iworking=0; else iworking=i;
if (altesarray[iworking][0] == neuesarray[j][0] && altesarray[iworking][1] == neuesarray[j][1]) {
altesarray.splice(iworking, 1);
neuesarray.splice(j, 1);
if (i>-1)i--;
j--;
}
}
}
}
return new Array(altesarray, neuesarray);
}