MediaWiki:Gadget-MarkRedirects.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
erstellt |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
//Redirects in den Wiki-Suchvorschlägen hervorheben | //Redirects in den Wiki-Suchvorschlägen hervorheben | ||
var observer | var MarkRedirects = { | ||
observer: undefined, | |||
results: {}, //lagert bereits geprüfte Seitennamen mit einem boolean für redirect ja/nein, um Zeit und Traffic fürs erneute Prüfen via API zu sparen | |||
curobj: {}, //temporäres Objekt mit den API-Infos für die aktuell bearbeitete Seite | |||
titles: "", //sammelt alle via API zu prüfenden Seitentitel, um nicht für jeden Titel einzelne Abfragen machen zu müssen | |||
init: function(){ | |||
if(MarkRedirects.observer===undefined){ | |||
MarkRedirects.observer=new MutationObserver(function(mutations) { | |||
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){ | |||
if(MarkRedirects.results[$(this).attr('title')]===undefined) MarkRedirects.titles+="|"+$(this).attr('title'); | |||
}); | }); | ||
titles | if(MarkRedirects.titles.length){ | ||
$.ajax({ | |||
async: true, | |||
url: wgServer+wgScriptPath+'/api.php?action=query&titles='+MarkRedirects.titles.substring(1)+'&format=json&prop=info', | |||
success: function(d){ | |||
if ('string' == typeof d) d = JSON.parse(d); | |||
for(var i=0; i<Object.keys(d.query.pages).length; i++){ | |||
MarkRedirects.curobj=d.query.pages[Object.keys(d.query.pages)[i]]; //unschön aber wahrt Kompatibilität mit alten Browsern | |||
MarkRedirects.results[MarkRedirects.curobj.title]=(MarkRedirects.curobj.redirect!==undefined); | |||
} | |||
MarkRedirects.render(); | |||
}, | |||
dataType: 'json' | |||
}); | |||
MarkRedirects.titles=""; | |||
}else{ | |||
MarkRedirects.render(); | |||
} | |||
}); | }); | ||
} | |||
MarkRedirects.observer.observe(document.querySelector("div.suggestions .suggestions-results"),{childList: true}); | |||
}, | |||
render: function(){ | |||
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){ | |||
if(MarkRedirects.results[$(this).attr('title')]) $(this).children().css('background-color','#f4a7a7'); | |||
}); | }); | ||
}, | |||
stop: function(){ | |||
if(MarkRedirects.observer!==undefined) MarkRedirects.observer.disconnect(); | |||
} | } | ||
}; | |||
$('#searchinput').blur( | $('#searchInput').focus(MarkRedirects.init); | ||
$('#searchinput').blur(MarkRedirects.stop); | |||
Aktuelle Version vom 11. April 2020, 20:44 Uhr
//Redirects in den Wiki-Suchvorschlägen hervorheben
var MarkRedirects = {
observer: undefined,
results: {}, //lagert bereits geprüfte Seitennamen mit einem boolean für redirect ja/nein, um Zeit und Traffic fürs erneute Prüfen via API zu sparen
curobj: {}, //temporäres Objekt mit den API-Infos für die aktuell bearbeitete Seite
titles: "", //sammelt alle via API zu prüfenden Seitentitel, um nicht für jeden Titel einzelne Abfragen machen zu müssen
init: function(){
if(MarkRedirects.observer===undefined){
MarkRedirects.observer=new MutationObserver(function(mutations) {
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){
if(MarkRedirects.results[$(this).attr('title')]===undefined) MarkRedirects.titles+="|"+$(this).attr('title');
});
if(MarkRedirects.titles.length){
$.ajax({
async: true,
url: wgServer+wgScriptPath+'/api.php?action=query&titles='+MarkRedirects.titles.substring(1)+'&format=json&prop=info',
success: function(d){
if ('string' == typeof d) d = JSON.parse(d);
for(var i=0; i<Object.keys(d.query.pages).length; i++){
MarkRedirects.curobj=d.query.pages[Object.keys(d.query.pages)[i]]; //unschön aber wahrt Kompatibilität mit alten Browsern
MarkRedirects.results[MarkRedirects.curobj.title]=(MarkRedirects.curobj.redirect!==undefined);
}
MarkRedirects.render();
},
dataType: 'json'
});
MarkRedirects.titles="";
}else{
MarkRedirects.render();
}
});
}
MarkRedirects.observer.observe(document.querySelector("div.suggestions .suggestions-results"),{childList: true});
},
render: function(){
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){
if(MarkRedirects.results[$(this).attr('title')]) $(this).children().css('background-color','#f4a7a7');
});
},
stop: function(){
if(MarkRedirects.observer!==undefined) MarkRedirects.observer.disconnect();
}
};
$('#searchInput').focus(MarkRedirects.init);
$('#searchinput').blur(MarkRedirects.stop);