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
/* If you want to use this script, simply add the following line to your [[Special:Mypage/monobook.js]]:
importScript('User:Anomie/linkclassifier.js'); // Linkback: [[User:Anomie/linkclassifier.js]]
* (Please keep the comment so I can see how many people use this). You will also want to
* add some CSS classes, such as those at [[User:Anomie/linkclassifier.css]].
*/
mw.loader.load('https://en.wikipedia.org/wiki/User:Anomie/util.js&action=raw&ctype=text/js');
var LinkClassifier={
/* This array lists "for deletion" categories */
cats:{
deletion:[
'Category:All articles proposed for deletion',
'Category:All disputed non-free Wikipedia files',
'Category:All orphaned non-free use Wikipedia files',
'Category:All replaceable non-free use Wikipedia files',
'Category:All Wikipedia files with no copyright tag',
'Category:All Wikipedia files with no non-free use rationale',
'Category:All Wikipedia files with unknown copyright status',
'Category:All Wikipedia files with unknown source',
'Category:Articles for deletion',
'Category:Articles on deletion review',
'Category:Candidates for speedy deletion',
'Category:Candidates for undeletion',
'Category:Categories for conversion',
'Category:Categories for deletion',
'Category:Categories for listifying',
'Category:Categories for merging',
'Category:Categories for renaming',
'Category:Categories for speedy renaming',
'Category:Categories to be listified then deleted',
'Category:Miscellaneous pages for deletion',
'Category:Pending deletions',
'Category:Redirects for discussion',
'Category:Stub categories for deletion',
'Category:Stub template deletion candidates',
'Category:User categories for discussion',
'Category:Wikipedia deprecated and orphaned templates',
'Category:Wikipedia files for deletion',
'Category:Wikipedia files with unknown source for deletion in dispute',
'Category:Wikipedia templates for deletion'
].sort(),
disambiguation:[
'Kategorie:Begriffsklärung' /* 'Category:All disambiguation pages' */
].sort(),
'featured-content':[
'Category:Featured articles',
'Category:Featured lists'
].sort(),
'spoken-articles':[
'Category:Spoken articles'
].sort(),
stubcls:/^Category:.* stubs$/,
'nonfree-media':[
'Category:All non-free media'
].sort()
},
callback:function(r, cc){
if(!r.query) throw new Error('Bad response');
if(r['query-continue']){
for(var k in r['query-continue']){
for(var k2 in r['query-continue'][k]){
cc[k2]=r['query-continue'][k][k2];
}
}
api(cc, arguments.callee);
}
r=r.query;
var a=document.getElementById('wikiPreview');
if(!a) a=document.getElementById('bodyContent');
if(!a) throw new Error('Huh? No body content?');
a=a.getElementsByTagName('A');
if(a.length==0) return;
var redir={};
if(r.redirects) for(var i=r.redirects.length-1; i>=0; i--){
redir[r.redirects[i].from]=r.redirects[i].to;
}
var cats={};
var missing={};
var prot={};
if(r.pages) for(var i in r.pages){
missing[r.pages[i].title]=(typeof(r.pages[i].missing)!='undefined');
if(typeof(r.pages[i].categories)!='undefined'){
cats[r.pages[i].title]=r.pages[i].categories.map(function(a){ return a.title; }).sort();
}
if(typeof(r.pages[i].protection)!='undefined'){
prot[r.pages[i].title]=[];
var x={};
for(var j=r.pages[i].protection.length-1; j>=0; j--){
var p='protection-'+r.pages[i].protection[j].type+'-'+r.pages[i].protection[j].level;
if(typeof(x[p])=='undefined'){
x[p]=1;
prot[r.pages[i].title].push(p);
}
if(r.pages[i].protection[j].expiry=='infinity'){
p+='-indef';
if(typeof(x[p])=='undefined'){
x[p]=1;
prot[r.pages[i].title].push(p);
}
}
}
}
}
Array.forEach(a, function(a){
if(typeof(a.wikipage)=='undefined') return;
if(typeof(redir[a.wikipage])!='undefined'){
addClass(a,'redirect');
a.wikipage=redir[a.wikipage];
a.title=a.wikipage;
if(a.wikipage==(wgCanonicalNamespace?wgCanonicalNamespace+':':'')+wgTitle)
addClass(a,'self-redirect');
if(missing[a.wikipage])
addClass(a,'broken-redirect');
}
var m=a.href.match(/#.*/);
if(m){
a.title=a.title.replace(/#.*/,'')+m[0].replace(/_/g,' ').replace(/\.([0-9A-F][0-9A-F])/gi, function(x,n){ return String.fromCharCode(parseInt(n,16)); });
}
if(typeof(prot[a.wikipage])!='undefined'){
for(var j=prot[a.wikipage].length-1; j>=0; j--)
addClass(a,prot[a.wikipage][j]);
}
if(typeof(cats[a.wikipage])!='undefined'){
var c1=cats[a.wikipage];
for(var cls in LinkClassifier.cats){
var i1=c1.length-1;
var c2=LinkClassifier.cats[cls];
if(c2 instanceof RegExp){
while(i1>=0){
if(c2.test(c1[i1])){
addClass(a,cls);
break;
}
i1--;
}
} else {
var i2=c2.length-1;
while(i1>=0 && i2>=0){
if(c1[i1]==c2[i2]){
addClass(a,cls);
break;
}
(c1[i1]>c2[i2])?--i1:--i2;
}
}
}
}
if(r.protection) for(var i=r.protection.length-1; i>=0; i--){
}
});
},
getPageName:function(url){
var m=url.match(/\/wiki\/([^?#]+)/);
if(!m) m=url.match(/\/w\/index.php\?(?:.*&)?title=([^&#]+)/);
if(!m) return '';
var t=decodeURIComponent(m[1]).replace(/_/g,' ');
if(t.substr(0,6)=='Image:') t='File:'+t.substr(6);
if(t.substr(0,11)=='Image talk:') t='File talk:'+t.substr(6);
if(t.substr(0,8)=='Special:') t='';
return t;
},
classifyChildren:function(node){
var a=node.getElementsByTagName('A');
if(a.length==0) return;
var self=LinkClassifier.getPageName(location.href);
a=Array.map(a, function(a){
a.wikipage='';
if(/(^|\s)(external|extiw)(\s|$)/.test(a.className)) return '';
if(!/(^|\s)(image)(\s|$)/.test(a.className)) a.className+=" nonimage";
a.wikipage=LinkClassifier.getPageName(a.href);
if(a.wikipage==self) a.wikipage='';
return a.wikipage;
}).sort().filter(function(e,i,a){
return e!=='' && (i==0 || a[i-1]!==e);
});
while(a.length>0){
api({action:'query', titles:a.splice(0,50), prop:'categories|info', redirects:1, cllimit:'max', inprop:'protection'}, LinkClassifier.callback);
}
},
onLoad:function(){
if(window.AJAXPreview) window.AJAXPreview.AddOnLoadHook(LinkClassifier.classifyChildren);
var node=document.getElementById('wikiPreview');
if(!node) node=document.getElementById('bodyContent');
if(node) LinkClassifier.classifyChildren(node);
}
};
if(doneOnloadHook) LinkClassifier.onLoad(); //if imported dynamically
else addOnloadHook(LinkClassifier.onLoad);