MediaWiki:Gadget-MarkRedirects.js: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
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 = {
var 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
observer: undefined,
var curobj={}; //temporäres Objekt mit den API-Infos für die aktuell bearbeitete Seite
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
var titles=""; //sammelt alle via API zu prüfenden Seitentitel, um nicht für jeden Titel einzelne Abfragen machen zu müssen
curobj: {}, //temporäres Objekt mit den API-Infos für die aktuell bearbeitete Seite
$('#searchInput').focus(function(){
titles: "", //sammelt alle via API zu prüfenden Seitentitel, um nicht für jeden Titel einzelne Abfragen machen zu müssen
if(observer===undefined){
init: function(){
observer=new MutationObserver(function(mutations) {
if(MarkRedirects.observer===undefined){
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){
MarkRedirects.observer=new MutationObserver(function(mutations) {
if(results[$(this).attr('title')]===undefined) titles+="|"+$(this).attr('title');
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){
});
if(MarkRedirects.results[$(this).attr('title')]===undefined) MarkRedirects.titles+="|"+$(this).attr('title');
if(titles.length){
$.ajax({
async: false, //sonst wird die Funktion zum Einfärben der redirect-Vorschläge ausgeführt, bevor alle Daten im results-Objekt gespeichert sind
url: wgServer+wgScriptPath+'/api.php?action=query&titles='+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++){
curobj=d.query.pages[Object.keys(d.query.pages)[i]];
results[curobj.title]=(curobj.redirect!==undefined);
}
},
dataType: 'json'
});
});
titles="";
if(MarkRedirects.titles.length){
}
$.ajax({
$('div.suggestions .suggestions-results .mw-searchSuggest-link').each(function(){
async: true,
if(results[$(this).attr('title')]) $(this).children().css('background-color','#f4a7a7');
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();
}
}
observer.observe(document.querySelector("div.suggestions .suggestions-results"),{childList: true});
};
});
 
$('#searchinput').blur(function(){
$('#searchInput').focus(MarkRedirects.init);
if(observer!==undefined) observer.disconnect();
$('#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);