Benutzer:Horgner/change links.js
Zur Navigation springen
Zur Suche springen
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
function add_links_talkpage()
{
/*
var section = document.getElementsByName("wpSection")[0].value;
if(!section) return;
if(section=="new")
{
insert_link_before("SPAN", "wpSummaryLabel", '<a href="#" onclick="document.getElementById(\'wpTextbox1\').value=\'Hi '+wgTitle+'\'">Hi</a>');
}*/
}
function add_links_article()
{
insert_link_before("LI", "t-permalink", '<a href="http://tools.wikimedia.de/~magnus/missing_images.php?lang=de&doit=Run&use_png=1&use_gif=1&use_jpg=1&use_tif=1&use_svg=1&donoevil=1&skipgood=0&titlelist=' + wgPageName + '" target="_blank">Bildercheck</a>');
insert_link_before("LI", "t-recentchangeslinked", '<a target="_blank" href="http://wikipedia.ramselehof.de/contexter.php?article=' + wgPageName + '">Contexter</a>');
//Edit first section
var firstheading = document.getElementsByTagName("H1")[0];
if ((firstheading ) && (wgIsArticle))
{
var ins = document.createElement("div");
ins.innerHTML=/* */'<small align="right" class="noprint" style="font-size: 8;"><a href="'+ mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + wgPageName + '&action=edit§ion=0">[bearbeiten]</a> <a href="'+ mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + wgPageName + '&action=edit§ion=new" class="noprint">[Neuer Absatz]</a></small>';/* */
firstheading.parentNode.insertBefore(ins, firstheading);
}
}
function add_links_all()
{
insert_link_before("LI", "t-recentchangeslinked", '<a href="http://tools.wikimedia.de/~daniel/WikiSense/MyDiff.php?wiki=de.wikipedia.org&title=+'+wgPageName+'&user='+wgUserName+'">Diff zur mir</a>');
//BLU-User-Link after logout-link (top right)
insert_link_before("LI", "pt-logout", '<a href="http://de.wikipedia.org/wiki/Portal:Schweiz">Portal Schweiz</a>');
//Insert WikiBlame, Contexter & Auto-Review before Changes on linked pages (left)
insert_link_before("LI", "t-recentchangeslinked", '<a target="_blank" href="http://wikipedia.ramselehof.de/wikiblame.php?article=' + wgPageName + '">WikiBlame</a>');
if(wgCanonicalSpecialPageName=="Search")
{
insert_link_before("DIV", "jump-to-nav", '<a target="_blank" href="http://en.wikipedia.org/wiki/' + document.getElementById('searchInput').value + '">englische Wikipedia</a>');
}
//normal links for images from [[Benutzer:BLueFiSH.as/monobook.js]]
if ( wgNamespaceNumber != 6 )
{
for (var i=0; aNode = document.getElementsByTagName("a")[i]; i++)
{
if ( href = aNode.getAttribute("href") )
{
if ( href.search(/\?title\=Bild\:/) > 0 && href.search(/\&action\=edit/) > 0 )
{
href = href.replace(/\&action\=edit/, '');
aNode.setAttribute("href", href);
}
if (href.search(/wpDestFile/) > 0)
{
href = href.replace(/Spezial\:Hochladen\&wpDestFile\=/, 'Bild:');
aNode.setAttribute("href", href);
}
}
}
}
}
function add_links_user()
{
//BLU-User beforeLogout
insert_link_before("LI", "t-upload", '<a href="http://de.wikipedia.org/w/index.php?title=Spezial%3ALogbuch&type=upload&user=' + wgTitle + '">Dateilogbuch</a>');
insert_link_before("LI", "t-upload", '<a href="http://tools.wikimedia.de/~magnus/userdupes.php?username=' + wgTitle + '&identicalsonly=1&language=de&showdesc=de&doit=Run">User-Dupes</a>');
insert_link_before("LI", "t-upload", '<a href="http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?user=' + wgTitle + '&dbname=dewiki_p">Editcount</a>');
}
function add_links_image()
{
if(!document.getElementById('shared-image-desc')) //is local image
{
insert_link_before("LI", "n-mainpage", '<b><a href="http://tools.wikimedia.de/~magnus/commonshelper.php?language=de&image=' + wgTitle + '">auf Commons</a></b>');
add_dellinks_nowcommons();
}
else
{
//Link auf Bildbeschreibung in Commons zum Bearbeiten
insert_link_before("span", "commons_descr", '<b><a style="background-color:#f9f9f9;" href="http://commons.wikimedia.org/w/index.php?title=' + wgCanonicalNamespace + ':' + wgTitle + '&action=edit">[Bildbeschreibung in Commons bearbeiten]</a></b>');
}
check_image_usage();
}
function add_links_edit(form)
{
//Better Wiki-Syntax than Standard
chooseCharSubset(1);
document.getElementById('specialchars').firstChild.options[1].selected=true;
insert_link_before("LI", "privacy", 'Tabellenspalte <a href="#" onclick="bulkEditTable(\'delete\')">[-]</a> <a href="#" onclick="bulkEditTable(\'label\')">[bla]</a> <a href="#" onclick="bulkEditTable(\'insert\')">[+]</a> <a href="#" onclick="invertedCommasToItalic()">Hochkommata kursiv</a> <a href="#" onclick="boldToItalic()">fett->kursiv</a> entlinken: <a href="#" onclick="removeWikiLinks()">[alles]</a> <a href="#" onclick="removeWikiLinksToDates()">[Datum]</a>');
//Auto summary, marginal edit and saving for linkfixes
if(form.elements["wpSection"].value!="new")
{
place_auto_summary_link('linkfix', true, 'Linkfix');
place_auto_summary_link('Bildlink repariert', true, 'Bildfix');
place_auto_summary_link('Kosmetik', true, 'Kosmetik');
place_auto_summary_link('Tippfehler ausgebessert', true, 'Typo');
place_auto_summary_link('Stil', true, 'Stil');
place_auto_summary_link('Link eingefügt', true, '+Link');
place_auto_summary_link('Link auf Galerie/Kategorie auf [[Wikimedia Commons]] eingefügt', true, '+Commons');
place_auto_summary_link('Bild eingefügt', false, '+Bild');
place_auto_summary_link('Link auf gelöschte Seite entfernt', true, '-Artikel');
place_auto_summary_link('gelöschte Vorlage entfernt', true, '-Vorlage');
place_auto_summary_link('gelöschtes Bild entfernt', true, '-Bild');
place_auto_summary_link('entlinkt', true, '-Link');
}
var text = form.elements["wpTextbox1"];
if(wgTitle!="Flominator/change links.js")
{
var whereAreReferences = text.value.search(/references/);
if(whereAreReferences!=-1)
{
if(text.value.search(/Einzelnachweise/)==-1)
{
text.value = convertQuellenToEinzelnachweise(text.value, whereAreReferences);
}
}
var textAfterMasqueradedLink = text.value.search(/(\[\[[^\|]+\|[^\]]+)\]\]([\w]+)([\W])/);
if(textAfterMasqueradedLink != -1)
{
text.value = moveTextAfterMasqueradedLinks(text.value, textAfterMasqueradedLink);
}
//Replacing regular expressions by text
text.value = text.value
.replace(/\[\[ *Image:/g, "[[Datei:")
.replace(/\[\[ *File:/g, "[[Datei:")
.replace(/\[\[:Image:/gm, "[[:Datei:")
.replace(/\[\[:File:/gm, "[[:Datei:")
.replace(/\[\[ *bild:/gm, "[[Datei:")
.replace(/\[\[:bild:/gm, "[[:Datei:")
.replace(/^Image:/gm, "Datei:")
.replace(/^File:/gm, "Datei:")
.replace(/\[\[ *Bild:/g, "[[Datei:")
.replace(/\[\[:Bild:/gm, "[[:Datei:")
.replace(/^Bild:/gm, "Datei:")
.replace(/\[\[ *datei:/gm, "[[Datei:")
.replace(/\[\[:datei:/gm, "[[:Datei:")
.replace(/{{Commons\|category:/gm, "{{Commonscat|")
.replace(/{{Commons\|Category:/gm, "{{Commonscat|")
.replace(/{{commons\|category:/gm, "{{Commonscat|")
.replace(/{{commons\|Category:/gm, "{{Commonscat|")
.replace(/\[\[USA\]\]/g, "[[Vereinigte Staaten|USA]]")
.replace(/\[\[USA\|/g, "[[Vereinigte Staaten|")
.replace(/\[\[Großbritannien\]\]/g, "[[Vereinigtes Königreich|Großbritannien]]")
.replace(/\[\[Großbritannien\|/g, "[[Vereinigtes Königreich|")
.replace(/\[\[Bläser\]\]/g, "[[Blasinstrument|Bläser]]")
.replace(/Diskografie/g, "Diskografie")
.replace(/Geschichte/g, "Geschichte")
.replace(/\[\[Geige\]\]/g, "[[Violine|Geige]]")
.replace(/\[\[Geige\|/g, "[[Violine|")
.replace(/\[\[Maler\]\]/g, "[[Malerei|Maler]]")
.replace(/\[\[Maler\|/g, "[[Malerei|")
.replace(/\[\[Sängerin\]\]/g, "[[Gesang|Sängerin]]")
.replace(/\[\[Schauspielerin\]\]/g, "[[Schauspieler]]in")
.replace(/\[\[Sänger\]\]/g, "[[Gesang|Sänger]]")
.replace(/\[\[Sänger\|/g, "[[Gesang|");
}
check_for_references_tag();
check_for_wrong_links(text);
check_external_links();
}
/* functions called by the ones above */
function check_image_usage()
{
var headline = document.getElementById("filelinks");
var used = false;
if(headline)
{
while(headline.nodeName.toUpperCase() !="UL")
{
headline=headline.nextSibling;
}
var used_list = headline.childNodes;
var entry = '';
for(var i =0;i<used_list.length;i++)
{
entry = (used_list[i].textContent)
if(entry.length>1)
{
if(entry!='Bild:'+wgTitle)
{
//alert("drin bei "+entry);
used=true;
break;
}
}
}
}
if(used==true)
{
//alert("drin bei true");
var del_button = document.getElementById("bodyContent");
if(!del_button){ alert ('kein Delbutton da') }
//del_button.firstChild.data='!!!' + del_button.firstChild.data + '!!!';
del_button.style.backgroundColor='#FFC1C1';
}
}
//Insert any tag before any element with an id
function insert_link_before(tagname, previous_element, linkcode)
{
var vl_logout = document.getElementById(previous_element);
if (vl_logout)
{
var ins_li = document.createElement(tagname);
ins_li.innerHTML=/* */linkcode;/* */
vl_logout.parentNode.insertBefore(ins_li, vl_logout);
}
}
function check_image_usage()
{
var headline = document.getElementById("filelinks");
var used = false;
if(headline)
{
while(headline.nodeName.toUpperCase() !="UL")
{
headline=headline.nextSibling;
}
var used_list = headline.childNodes;
var entry = '';
for(var i =0;i<used_list.length;i++)
{
entry = (used_list[i].textContent)
if(entry.length>1)
{
if(entry!='Bild:'+wgTitle)
{
//alert("drin bei "+entry);
used=true;
break;
}
}
}
}
if(used==true)
{
//alert("drin bei true");
var del_button = document.getElementById("bodyContent");
if(!del_button){ alert ('kein Delbutton da') }
//del_button.firstChild.data='!!!' + del_button.firstChild.data + '!!!';
del_button.style.backgroundColor='#FFC1C1';
}
}
function auto_summary(summary, minor)
{
document.forms[0].wpSummary.value=document.forms[0].wpSummary.value+ ' ' + summary;
document.forms[0].wpMinoredit.checked=minor;
document.forms[0].submit()
}
function place_auto_summary_link(summary, minor, title)
{
insert_link_before("span", "wpSummaryLabel", '<a href="#" onclick="javascript:auto_summary(\'' + summary + '\', ' + minor + ')">' + title + '</a> ');
}
function check_for_references_tag()
{
var ta = document.forms[0].wpTextbox1;
var refs_there=ta.value.search(/<ref/);
var references_there=ta.value.search(/<references/);
if((refs_there > -1 )&&(references_there == -1))
{
var source = 'http://wikipedia.ramselehof.de/text_present.php?article=' + wgPageName + '&lang=' + wgContentLanguage + '&project=wikipedia&needle=references';
insert_link_before("span", "wpMinoredit", '<references><img id="ref_bild" src="' + source + '" />');
}
}
function check_for_wrong_links(ta)
{
var Satz = "Wer nicht vom [[rechten]] Weg abkommt bleibt [[auf|oder]] der Strecke";
Satz = ta.value;
var Woerter = Satz.split("[[");
var link_end;
var links = "";
for(var i=1;i<Woerter.length;i++)
{
link_end = Woerter[i].indexOf("|");
if((Woerter[i].charAt(0) != ':') && (Woerter[i].search(/Kategorie:/)==-1)&& (Woerter[i].search(/Bild:/)==-1))
{
var last_bracket = Woerter[i].indexOf("]");
if((link_end==-1) || link_end > last_bracket)
{
link_end = last_bracket;
}
var plain_link = Woerter[i].substring(0, link_end);
plain_link = plain_link.replace(/#/g, "rraauuttttee");
plain_link = plain_link.replace(/&/g, "%26");
//document.write(i + Woerter[i]);
//document.write("gekürzt:" + plain_link + '<br>');
links = links + plain_link + ';';
}
}
//alert(links);
var full_link = "http://wikipedia.ramselehof.de/bklredir.php?articles=" + links;
var iframe = '<iframe width="150" src="'+ full_link + '"></iframe>'
insert_link_before("li", "p-tb", iframe );
}
function GetElementsByClassName(tagname, classname)
{
/* [[Benutzer:ASM/WIP]] */
var ret = new Array();
var tags = document.getElementsByTagName(tagname);
for (i = 0; i < tags.length; i++)
if (tags[i].className == classname)
ret.push(tags[i]);
return ret;
}
function check_external_links()
{
checkExternalLinksByClassName("external text");
checkExternalLinksByClassName("external free");
}
function checkExternalLinksByClassName(classname)
{
var links_arr = GetElementsByClassName("a", classname);
for(var i=0;i<links_arr.length;i++)
{
var a_node = links_arr[i];
var ins_li = document.createElement("span");
ins_li.innerHTML='<img border="0" src="http://wikipedia.ramselehof.de/pinger.php?url='+ links_arr[i].href +'>';
a_node.appendChild(ins_li);
}
}
function invertedCommasToItalic()
{
var ta = document.getElementById("wpTextbox1");
var beginning = extractBeforeSelection(ta);
var middle = extractSelection(ta);
var ending = extractAfterSelection(ta);
middle = middle.replace(/„/g, "''").replace(/“/g, "''").replace(/"/g, "''");
ta.value= beginning + middle + ending;
}
function extractBeforeSelection(ta)
{
return ta.value.substr(0, ta.selectionStart);
}
function extractSelection(ta)
{
return ta.value.substr(ta.selectionStart, ta.selectionEnd-ta.selectionStart);
}
function extractAfterSelection(ta)
{
return ta.value.substr(ta.selectionEnd, ta.value.length);
}
function removeWikiLinks()
{
var ta = document.getElementById("wpTextbox1");
var beginning = extractBeforeSelection(ta);
var middle = extractSelection(ta);
var ending = extractAfterSelection(ta);
middle = middle.replace(/\[\[/g, "").replace(/\]\]/g, "");
ta.value= beginning + middle + ending;
}
function boldToItalic()
{
var ta = document.getElementById("wpTextbox1");
var beginning = extractBeforeSelection(ta);
var middle = extractSelection(ta);
var ending = extractAfterSelection(ta);
middle = middle.replace(/\'\'\'/g, "''");
ta.value= beginning + middle + ending;
}
function removeWikiLinksToDates()
{
var ta = document.getElementById("wpTextbox1");
var beginning = extractBeforeSelection(ta);
var middle = extractSelection(ta);
var ending = extractAfterSelection(ta);
middle = middle.replace(/\[\[\s*(\d+(er)?( v. Chr.)?)\s*\]\]/g, "$1");
middle = middle.replace(/\[\[\s*(\d+\. (Jahrhundert|Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember))\s*\]\]/g, "$1");
ta.value= beginning + middle + ending;
}
function bulkEditTable(mode)
{
/*
available modes: label, insert, delete
*/
var ta = document.getElementById("wpTextbox1");
var currentRow = fillArray(new Array(10), 0, 0);
var nextRow = fillArray(new Array(10), 0, 0);
var validMode = false;
if(mode=="label")
{
var toWorkWith = window.prompt("Welche Spalte der Auswahl beschriften?");
if(!toWorkWith) return
var label = window.prompt("Mit welchem Kommentar beschriften?");
if(!label) return
var labelComment = '<!-- ' + label + ' -->';
validMode = true;
}
if(mode=="delete")
{
var toWorkWith = window.prompt("Welche Spalte der Auswahl entfernen?");
if(!toWorkWith) return;
validMode = true;
}
if(mode=="insert")
{
var toWorkWith = window.prompt("Nach welcher Spalte soll eine neue eingefügt werden?");
if(!toWorkWith) return
var newColumnText = window.prompt("Welchen Text enthät die neue Spalte", "|");
if(!newColumnText) return
validMode = true;
}
if(!validMode)
{
alert("Funktion mit ungültigem Modus aufgerufen");
return;
}
var beginOfTableBeginning = ta.value.indexOf("{|");
var endOfTableBeginning = ta.value.indexOf("\n", beginOfTableBeginning)
if (ta.value.indexOf("{|", endOfTableBeginning) != -1)
{
alert("mehr als eine Tabelle in aktivem Fenster, daher Abbruch");
return;
}
var endOfTable = ta.value.indexOf("|}", endOfTableBeginning);
beginning = ta.value.substr(0, endOfTableBeginning);
middle = ta.value.substr(endOfTableBeginning+1, endOfTable-endOfTableBeginning-2); //+1 removes the \n
//alert("middle=" + middle);
ending = ta.value.substr(endOfTable);
//alert("ending " + ending);
var table = middle.split("\n");
var i=0;
var col = 1;
var outputTable = beginning + "\n";
//alert (table.length);
alert("Gewählter/erkannter Text: \n" + middle);
var log = "";
while(i<table.length)
{
log = log + "i="+ i + " col=" + col + "Anfang: Aktuelle Zelle mit Zusatzhöhe="+ currentRow[col];// + " lautet " + table[i];
log = log + "\n";
//anfang eingefügt
if(table[i].substr(0, 2)=="|-")
{
outputTable = outputTable + table[i] + "\n";
log = log + "Zeile fertig" + col + "\n ---------------------------\n";
if(col!=1)
{
col++;
nextRow=fillArray(nextRow, 0, col);
log = log + " nextRow (vorher):\t " + printArray(nextRow) + "\n";
log = log + "currentRow (vorher):\t " + printArray(currentRow) + "\n";
currentRow = nextRow;
nextRow = fillArray(new Array(10), 0,0); //eventuell 10 durch col ersetzen
log = log + " nextRow (nachher): \t" + printArray(nextRow) + "\n";
log = log + "currentRow: (nachher):\t " + printArray(currentRow) + "\n";
}
col=0;
}//ende eingefügt
else
{
log = log + "i="+ i + " col=" + col + "Nach Zeilentrenner: Aktuelle Zelle mit Zusatzhöhe="+ currentRow[col];// + " lautet " + table[i];
log = log + "\n";
if(currentRow[col-1]==0)
{
col = col + spannedCells(table[i], 'col') -1;
nextRow[col-1] = spannedCells(table[i], 'row') -1;
if (nextRow[col-1]<0) nextRow[col-1]=0;
if(col!=toWorkWith)
{
log = log + "wird normal bearbeitet\n";
outputTable = outputTable + table[i] + "\n";
}
else //if nothing is done here, the cell in the selected column will be removed
{
log = log + "wird speziell bearbeitet\n";
if(mode=="label")
{
lastPipe = table[i].lastIndexOf("|") + 1;
firstBracket = table[i].indexOf("[");
firstTag = table[i].indexOf("<");
if((firstBracket!=-1) && (firstTag!=-1))
{
beginOfData = Math.min(firstBracket, firstTag);
if(beginOfData < lastPipe)
{
insertAt=beginOfData-1;
}
else
{
insertAt = lastPipe;
}
}
else
{
insertAt = lastPipe;
}
outputTable = outputTable + table[i].substr(0, insertAt) + labelComment + table[i].substr(insertAt) + "\n";
}
if(mode=="insert")
{
outputTable = outputTable + table[i] + "\n" + newColumnText + "\n" ;
}
}
}
else
{
log = log + "... existiert nicht\n";
nextRow[col-1]=currentRow[col-1] - 1;
if(nextRow[col-1]<0)
{
nextRow[col-1]=0;
}
i--;
}
}
i++;
col++;
}
outputTable = outputTable + ending;
//alert(log);
if(confirm("Ergebnis ok?\n" + outputTable))
{
ta.value=outputTable;
}
}
function spannedCells(line, row_or_col)
{
//klowerCaseLine = line.;
spanTag = "" + row_or_col + "span";
beginSpan = line.toLowerCase().indexOf(spanTag);
if(beginSpan==-1) return 1;
firstInvertedComas = line.indexOf("\"", beginSpan) ;
secondInvertedComas = line.indexOf("\"", firstInvertedComas+1) ;
lengthSpan = secondInvertedComas - firstInvertedComas -1;
//alert(spanTag + " begin=" + beginSpan + "\"" + firstInvertedComas + " " + secondInvertedComas + " "+ lengthSpan);
//alert(line.substr(firstInvertedComas+1, lengthSpan));
return parseInt(line.substr(firstInvertedComas+1, lengthSpan));
}
function printArray(theArray)
{
var returnString = "";
for(var i=0;i<theArray.length;i++)
{
//returnString = returnString + i + "=" + theArray[i] + ";";
returnString = returnString + theArray[i] + " | ";
}
return returnString;
}
function fillArray(theArray, fillValue, fillStart)
{
for(var i=fillStart;i<theArray.length;i++)
{
theArray[i]=fillValue;
}
return theArray;
}
function convertQuellenToEinzelnachweise(text, positionOfReferences)
{
tkorrone = /(\n)[^\n]*(\n\<references[^\/]*\/\>)/;
var textNeu = text.replace(tkorrone,'$1== Einzelnachweise ==$2');
if(confirm("Quellengedöhns zu Einzelnachweis machen? \n ---------------------------\n" + textNeu.substring(positionOfReferences-40, positionOfReferences+40) + "\n---------------------------"))
{
return textNeu;
}
return text;
}
function moveTextAfterMasqueradedLinks(text, positionOfTextAfterLink)
{
var textNeu = text.replace(/(\[\[[^\|]+\|[^\]]+)\]\]([\w]+)([\W])/g,'$1$2]]$3');
if(confirm("Text nach Link einfügen? \n ---------------------------\n" + textNeu.substring(positionOfTextAfterLink-20, positionOfTextAfterLink+40) + "\n---------------------------"))
{
return textNeu;
}
return text;
}