Benutzer:DerHexer/linkfix.js
Erscheinungsbild
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 newRequest() {
try {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
return new ActiveXObject("MSXML2.XMLHTTP");
}
} catch (e) {
return false;
}
}
// get URL parameters (used for page type variables)
var UrlParameters = new Array ();
readparams();
function readparams() {
var asReadInUrlParameters;
var asReadInUrlParameter;
// Get URL parameters
asReadInUrlParameters = location.search.substring(1, location.search.length).split("&");
for (i = 0; i < asReadInUrlParameters.length; i++) {
asReadInUrlParameter = asReadInUrlParameters[i].split("=");
UrlParameters[decodeURIComponent(asReadInUrlParameter[0])] = decodeURIComponent(asReadInUrlParameter[1]);
}
}
// token functions
function generate_asuser () {
return encodeURIComponent(wgUserName);
}
function validate_asuser (asuser) {
var retval = false;
if (encodeURIComponent(asuser) == generate_asuser() )
retval = true;
return retval;
}
function generate_astime () {
var arbitrary_datestamp = Date.UTC(2008,10,1,0,0,0,0); // 1.11.2008
var current_date = new Date();
var current_timestamp = current_date.getTime();
return ( Math.floor((current_timestamp - arbitrary_datestamp) / 1000) );
}
function validate_astime (astime) {
var retval = false;
var timediff = generate_astime() - astime;
if ((timediff >= 0) && (timediff < 45))
retval = true;
return retval;
}
function fixlinks() {
var allredirects = document.getElementsByClassName('mw-redirect');
for (i=0;i<allredirects.length;i++){
if(!allredirects[i].getAttribute('title')) continue;
var currenttitle = allredirects[i].getAttribute('title');
//alert('currenttitle: '+currenttitle);
var req;
if (req = newRequest()) {
var text = '/w/api.php?format=xml&action=query&titles=' + currenttitle + '&redirects=';
req.open("GET", text, false);
req.send("");
var linkresult = req.responseXML.getElementsByTagName("page")[0].getAttribute('title');
//alert('linkresult: '+linkresult);
}
var cleanedtitle = currenttitle.replace(/\s/g,'[\\s_]');
var regex1 = new RegExp('\\[\\['+cleanedtitle+'\\]\\]');
var regex2 = new RegExp(cleanedtitle+'\\|');
var regex3 = new RegExp('\\[\\['+cleanedtitle+'\\|(.+?)\\]\\](\\w+)?');
/*alert(regex1);
alert(regex2);
alert(regex3);*/
if (document.editform.wpTextbox1.value.search(regex1) != -1){
alert('type 1');
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(regex1, '[['+linkresult+'|'+currenttitle+']]');
} else if (document.editform.wpTextbox1.value.search(regex2) != -1) {
var testsimilarity = document.editform.wpTextbox1.value.match(regex3);
var beforebrackets = RegExp.$1;
var behindbrackets = RegExp.$2;
var combined = beforebrackets+behindbrackets;
/*alert(combined);
alert(linkresult);
if(behindbrackets) { alert('regexes 2: '+ beforebrackets + behindbrackets) } else { alert('regexes 1: '+ beforebrackets) }*/
if (combined === linkresult) {
alert('type 2');
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(regex3, '[['+linkresult+']]');
} else {
alert('type 3');
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(regex3, '[['+linkresult+'|$1$2]]');
}
}
}
document.editform.wpSummary.value = 'linkfix';
document.editform.wpDiff.click();
}
if (UrlParameters["linkfix"] == "1") $(fixlinks);
mw.util.addPortletLink( 'p-tb', '//de.wikipedia.org/w/index.php?title=' + wgPageName + '&action=edit&linkfix=1', 'Linkfix', 't-linkfix', 'fix links', 'a', '' );