Weitere Optionen
K JS-Schnee deaktiviert |
Ghost (Diskussion | Beiträge) K Fixes |
||
| (44 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */ | /* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */ | ||
//- | var loadedScripts = {}; // included-scripts tracker | ||
//=========================================================================== | |||
// Externe Links in neuem Fenster öffnen, sofern sie nicht in dieses Wiki mit unterbundener Weiterleitung ([[Vorlage:KeinRedirect]]) führen | |||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$(function() { | |||
$(".external").each(function( i ) { | |||
var url = $(this).attr("href"); | |||
if ((url.indexOf("stargate-wiki.de/")!=-1)&&((url.indexOf("redirect=no")!=-1)||(url.indexOf("unhide=1")!=-1))) | |||
$(this).attr("target","_self"); | |||
else | |||
$(this).attr("target","_blank"); | |||
}); | |||
}); | }); | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Fügt eine Betreffzeile auf leeren Diskussionsseiten ein | // Fügt eine Betreffzeile auf leeren Diskussionsseiten ein | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$(function() { | |||
if(wgNamespaceNumber != 0 && wgNamespaceNumber != 1) return; | if(mw.config.get( 'wgNamespaceNumber' ) != 0 && mw.config.get( 'wgNamespaceNumber' )!= 1) return; | ||
var tab = document.getElementById( 'ca-talk' ); | |||
if( !tab || tab.className != 'new' ) return; | |||
var link = tab.getElementsByTagName( 'a' )[0]; | |||
if( !link ) return; | |||
link.href += '§ion=new'; | |||
}); | }); | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// import Onlyifuploading-functions | // import Onlyifuploading-functions | ||
// SEE ALSO [[MediaWiki:Onlyifuploading.js]] | // SEE ALSO [[MediaWiki:Onlyifuploading.js]] | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
if (wgCanonicalSpecialPageName == "Upload") { | if (mw.config.get( 'wgCanonicalSpecialPageName' ) == "Upload") { | ||
importScript("MediaWiki:Onlyifuploading.js"); | importScript("MediaWiki:Onlyifuploading.js"); | ||
} | } | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Einbinden von [[Vorlage:Mentorenliste]] | // Einbinden von [[Vorlage:Mentorenliste]] | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
importScript('Vorlage:Mentorenliste'); | importScript('Vorlage:Mentorenliste'); | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Darstellung der Abschnitte in der Kategorie für wichtige SG1-Episoden | // Darstellung der Abschnitte in der Kategorie für wichtige SG1-Episoden | ||
// nach einzelnen Staffeln | // nach einzelnen Staffeln | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$(function() { | |||
if ( | if (mw.config.get( 'wgCanonicalSpecialPageName' )!= "Kategorie:Stargate_Kommando_SG-1_Wichtige_Episode") return; | ||
$ | $("div#mw-pages h3").html(function(i, text) | ||
{ | { | ||
return (text.substr(0, 1) == "@")?"10"+text.substr(1):text; | return (text.substr(0, 1) == "@")?"10"+text.substr(1):text; | ||
}); | }); | ||
}); | }); | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Zeilen der Infoboxen abwechselnd einfärben | // Zeilen der Infoboxen abwechselnd einfärben | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$(function() { | |||
$ | $("tr[class*='blauzebra']:not(.spoiler):even").addClass("zebrablau"); | ||
$ | $("tr[class*='blauzebra']:not(.spoiler):odd").removeClass("zebrablau"); | ||
$ | $("tr[class*='grünzebra']:not(.spoiler):even").addClass("zebragrün"); | ||
$ | $("tr[class*='grünzebra']:not(.spoiler):odd").removeClass("zebragrün"); | ||
}); | }); | ||
// | //=========================================================================== | ||
//=========================================================================== | |||
// Wenige (<6) Einzelnachweise in nur einer Spalte darstellen | |||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$('ol.references').each(function(){ | |||
if($(this).children('li').length<6){ | |||
$(this).css({ 'column-count': '1', '-moz-column-count': '1', '-webkit-column-count': '1' }); | |||
} | |||
}); | }); | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Sortierung von Datum und Zeit der Form „11:58, 21. Jul. 2012“ in Tabellen | // Sortierung von Datum und Zeit der Form „11:58, 21. Jul. 2012“ in Tabellen | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
| Zeile 232: | Zeile 108: | ||
}); | }); | ||
} | } | ||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Zählt die Anzahl der Bearbeitungen eines Benutzers | // Zählt die Anzahl der Bearbeitungen eines Benutzers | ||
// Siehe auch [[Benutzer:CF/revisionMainspaceCounter.js]] | // Siehe auch [[Benutzer:CF/revisionMainspaceCounter.js]] | ||
| Zeile 243: | Zeile 119: | ||
{ | { | ||
queryUrl : function(i) { | queryUrl : function(i) { | ||
if ( | if (revisionMainspaceCounter.queries[i] == null) | ||
return null; | return null; | ||
if (revisionMainspaceCounter.queries[i].Namespaces == '-100') | if (revisionMainspaceCounter.queries[i].Namespaces == '-100') | ||
return wgScriptPath + '/api.php?action=query&list=logevents&leuser=' + encodeURIComponent(revisionMainspaceCounter.queries[i].User) + '&letype=upload& | return mw.config.get( 'wgScriptPath' )+ '/api.php?action=query&list=logevents&leuser=' + encodeURIComponent(revisionMainspaceCounter.queries[i].User) + '&letype=upload&leprop=userid&format=json&lelimit=max&callback=revisionMainspaceCounter.queryResult&requestid=' + i; | ||
else | else | ||
return wgScriptPath + '/api.php?action=query&list=usercontribs&ucuser=' + encodeURIComponent(revisionMainspaceCounter.queries[i].User) + '&ucnamespace=' + revisionMainspaceCounter.queries[i].Namespaces + '&ucprop= | return mw.config.get( 'wgScriptPath' )+ '/api.php?action=query&list=usercontribs&ucuser=' + encodeURIComponent(revisionMainspaceCounter.queries[i].User) + '&ucnamespace=' + revisionMainspaceCounter.queries[i].Namespaces + '&ucprop=&format=json&uclimit=max&callback=revisionMainspaceCounter.queryResult&requestid=' + i; | ||
//Bei leerer ucprop-Angabe werden nur noch userid und user angegeben - sollte MW das mal ändern, muss hier wieder etwas übergeben werden (vorzugsweise ids) | |||
}, | }, | ||
queries : [ | queries : [ | ||
/*{ | /*{ | ||
revisionCountUser : 0, | revisionCountUser : 0, | ||
User : | User : mw.user.getName(), | ||
Namespaces : '0', | Namespaces : '0', | ||
InputId : 'revisionMainspaceCounter', | InputId : 'revisionMainspaceCounter', | ||
| Zeile 270: | Zeile 147: | ||
queryResult : function(res) | queryResult : function(res) | ||
{ | { | ||
if (!res | if (!res.query || !res.requestid || res.requestid >= revisionMainspaceCounter.queries.length || res.requestid < 0 || revisionMainspaceCounter.queries[res.requestid] === null) return; | ||
var continu = false; | var continu = false; | ||
var i = res.requestid; | var i = res.requestid; | ||
if (revisionMainspaceCounter.queries[res.requestid].Namespaces == '-100') { | if (revisionMainspaceCounter.queries[res.requestid].Namespaces == '-100') { | ||
if (!res | if (!res.query.logevents) | ||
return; | return; | ||
var revs = res | var revs = res.query.logevents; | ||
revisionMainspaceCounter.queries[i].revisionCountUser += revs.length; | revisionMainspaceCounter.queries[i].revisionCountUser += revs.length; | ||
if (res && res['query-continue']) | if (res && res['query-continue']) | ||
{ | { | ||
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&lestart=' + encodeURIComponent( | var lequerycont=res['query-continue'].logevents.lecontinue; | ||
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&lestart=' + encodeURIComponent(lequerycont.substring(0,lequerycont.indexOf("|")))); | |||
continu = true; | continu = true; | ||
} | } | ||
} | } else { | ||
if (!res.query.usercontribs) | |||
if (!res | |||
return; | return; | ||
var revs = res | var revs = res.query.usercontribs; | ||
revisionMainspaceCounter.queries[i].revisionCountUser += revs.length; | revisionMainspaceCounter.queries[i].revisionCountUser += revs.length; | ||
if (res && res['query-continue']) | if (res && res['query-continue']) | ||
{ | { | ||
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&ucstart=' + encodeURIComponent( | var ucquerycont=res['query-continue'].usercontribs.uccontinue; | ||
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&ucstart=' + encodeURIComponent(ucquerycont.substring(0,ucquerycont.indexOf("|")))); | |||
continu = true; | continu = true; | ||
} | } | ||
| Zeile 315: | Zeile 193: | ||
{ | { | ||
input.parentNode.removeChild(input); | input.parentNode.removeChild(input); | ||
if (header && $(header).find("span.revisionMainspaceCounter").length == 0) | if (header && $(header).find("span.revisionMainspaceCounter").length === 0) | ||
{ | { | ||
$(header).find(".headerSort").unbind("click"); | $(header).find(".headerSort").unbind("click"); | ||
| Zeile 328: | Zeile 206: | ||
{ | { | ||
var found = 0; | var found = 0; | ||
$ | $("span.revisionMainspaceCounter").each(function() | ||
{ | { | ||
var i = this.innerHTML.split("#"); | var i = this.innerHTML.split("#"); | ||
| Zeile 345: | Zeile 223: | ||
}; | }; | ||
$(revisionMainspaceCounter.findCounter); | |||
// | //=========================================================================== | ||
// | //=========================================================================== | ||
// Versteckt Inhalte | // Versteckt Inhalte | ||
// [[Vorlage:Spoiler]] | // [[Vorlage:Spoiler]] | ||
| Zeile 356: | Zeile 234: | ||
showAll: false, | showAll: false, | ||
init: function() { | init: function() { | ||
if ($(".spoiler"). | if ($(".spoiler").length>0) { | ||
var vector = $("body.skin-vector").size()>0; | var vector = $("body.skin-vector").size()>0; | ||
var node = mw.util.addPortletLink(vector ? "p-views" : "p-cactions", "#", "Spoiler aufdecken", "ca-spoiler", "Vorhandene Spoiler auf- und zudecken", "s", $("#ca-watch")[0] || $("#ca-unwatch")[0]); | var node = mw.util.addPortletLink(vector ? "p-views" : "p-cactions", "#", "Spoiler aufdecken", "ca-spoiler", "Vorhandene Spoiler auf- und zudecken", "s", $("#ca-watch")[0] || $("#ca-unwatch")[0]); | ||
| Zeile 362: | Zeile 240: | ||
node.onclick = mw.SGWSpoiler.toggleAll; | node.onclick = mw.SGWSpoiler.toggleAll; | ||
if (vector) | if (vector) | ||
$("#ca-spoiler a").html('<img width="24" height="24" alt="Spoiler auf- oder zudecken" src="http://www.stargate-wiki.de | $("#ca-spoiler a").html('<img width="24" height="24" alt="Spoiler auf- oder zudecken" src="http://www.stargate-wiki.de/images/thumb/1/17/System-search.svg/24px-System-search.svg.png" style="position:relative; top: -5px;" />'); | ||
} | } | ||
} | } | ||
| Zeile 370: | Zeile 248: | ||
if (mw.SGWSpoiler.showAll) return; | if (mw.SGWSpoiler.showAll) return; | ||
$(obj).next(".spoiler").toggleClass("spoilerShow"); | $(obj).next(".spoiler").toggleClass("spoilerShow"); | ||
var headings = $(obj).next(".spoiler").find(':header > span'); | |||
if(headings.length){ | |||
headings.each(function(i, e){ | |||
spoilerHeadings.toggle(e.id); | |||
}); | |||
} | |||
}, | }, | ||
| Zeile 375: | Zeile 259: | ||
if (mw.SGWSpoiler.showAll) return; | if (mw.SGWSpoiler.showAll) return; | ||
$(obj).parent().parent().next("tr.spoiler").toggleClass("spoilerShow"); | $(obj).parent().parent().next("tr.spoiler").toggleClass("spoilerShow"); | ||
var headings = $(obj).parent().parent().next("tr.spoiler").find(':header > span'); | |||
if(headings.length){ | |||
headings.each(function(i, e){ | |||
spoilerHeadings.toggle(e.id); | |||
}); | |||
} | |||
}, | }, | ||
| Zeile 382: | Zeile 272: | ||
$(".spoiler").addClass("spoilerShowAll"); | $(".spoiler").addClass("spoilerShowAll"); | ||
$("#ca-spoiler").addClass("selected"); | $("#ca-spoiler").addClass("selected"); | ||
if (obj) $(obj).removeClass("spoilerShow"); | if (obj){ | ||
$(obj).parent().parent().next("tr.spoiler").removeClass("spoilerShow"); | |||
$(obj).next(".spoiler").removeClass("spoilerShow"); | |||
} | |||
spoilerHeadings.showAll(); | |||
} | } | ||
else { | else { | ||
$(".spoiler").removeClass("spoilerShowAll"); | $(".spoiler").removeClass("spoilerShowAll"); | ||
$("#ca-spoiler").removeClass("selected"); | $("#ca-spoiler").removeClass("selected"); | ||
spoilerHeadings.hideAll(); | |||
} | } | ||
return false; | return false; | ||
} | } | ||
}; | |||
$( mw.SGWSpoiler.init ); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// automatisiertes Einbinden vom virtuellen Schneefall im Dezember und Januar | |||
//--------------------------------------------------------------------------- | |||
var curmonth=new Date().getMonth(); | |||
if(curmonth===11 || curmonth===0) importScript('Benutzer:CF/Schnee.js'); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Toggles the display of elements on a page | |||
// Author/contact: Austin Che http://openwetware.org/wiki/User:Austin | |||
//--------------------------------------------------------------------------- | |||
// indexed array of toggler ids to array of associated toggle operations | |||
// each operation is a two element array, the first being the type, the second a class name or array of elements | |||
// operation types are strings like "_reset" or "" for the default toggle operation | |||
var togglers = []; | |||
var allClasses = {}; // associative map of class names to page elements | |||
function toggler(id) | |||
{ | |||
var toBeToggled = togglers[id]; | |||
if (!toBeToggled) | |||
return; | |||
// if some element is in list more than once, it will be toggled multiple times | |||
for (var i = 0; i < toBeToggled.length; i++) | |||
{ | |||
// get array of elements to operate on | |||
var toggles = toBeToggled[i][1]; | |||
if (typeof(toggles) == "string") | |||
{ | |||
if (toggles.charAt(0) == '-') | |||
{ | |||
// treat as an element ID, not as class | |||
toggles = document.getElementById(toggles.substring(1)); | |||
if (toggles) | |||
toggles = new Array(toggles); | |||
} | |||
else | |||
toggles = allClasses[toggles]; | |||
} | |||
if (!toggles || !toggles.length) | |||
continue; | |||
var op = toBeToggled[i][0]; // what the operation will be | |||
switch (op) | |||
{ | |||
case "_reset": | |||
for (var j in toggles) | |||
toggles[j].style.display = toggles[j]._toggle_original_display; | |||
break; | |||
case "_show": | |||
for (var j in toggles) | |||
toggles[j].style.display = ''; | |||
break; | |||
case "_hide": | |||
for (var j in toggles) | |||
toggles[j].style.display = 'none'; | |||
break; | |||
case "": | |||
default: | |||
// Toggle | |||
for (var j in toggles) | |||
toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none'); | |||
break; | |||
} | |||
} | |||
} | |||
function createTogglerLink(toggler, id) | |||
{ | |||
var toggle = document.createElement("a"); | |||
toggle.className = 'toggler-link'; | |||
toggle.setAttribute('id', 'toggler' + id); | |||
toggle.setAttribute('href', 'javascript:toggler("' + id + '");'); | |||
var child = toggler.firstChild; | |||
toggler.removeChild(child); | |||
toggle.appendChild(child); | |||
toggler.insertBefore(toggle, toggler.firstChild); | |||
} | |||
function toggleInit() | |||
{ | |||
var togglerElems = []; | |||
var toggleGroup = []; | |||
// make list of all document classes | |||
var elems = document.getElementsByTagName("*"); | |||
var numelems = elems.length; | |||
for (var i = 0; i < elems.length; i++) | |||
{ | |||
var elem = elems[i]; | |||
if (!elem.className) | |||
continue; | |||
elem._toggle_original_display = elem.style.display; | |||
var togglerID = -1; | |||
if( typeof elem.className == "string" ) { | |||
var elemClasses = elem.className.split(' '); // get list of classes | |||
for (var j = 0; j < elemClasses.length; j++) | |||
{ | |||
var elemClass = elemClasses[j]; | |||
if (! allClasses[elemClass]) | |||
allClasses[elemClass] = []; | |||
allClasses[elemClass].push(elem); | |||
// all the special classes begin with _toggle | |||
if (elemClass.substring(0, 7) != "_toggle") | |||
continue; | |||
if (elemClass == "_togglegroup") | |||
toggleGroup = []; | |||
else if (elemClass == "_toggle") | |||
toggleGroup.push(elem); | |||
else if (elemClass.substring(0, 12) == "_toggle_init") | |||
{ | |||
// set initial value for display (ignore the original CSS set value) | |||
// understands _toggle_initshow and _toggle_inithide | |||
var disp = elemClass.substring(12); | |||
if (disp == "show") | |||
elem.style.display = ''; | |||
else if (disp == "hide") | |||
elem.style.display = 'none'; | |||
elem._toggle_original_display = disp; | |||
} | |||
else if (elemClass.substring(0, 8) == "_toggler") | |||
{ | |||
if (togglerID == -1) | |||
{ | |||
togglerID = togglers.length; | |||
togglers[togglerID] = []; | |||
togglerElems[togglerID] = elem; | |||
} | |||
// all classes are of form _toggler_op-CLASS | |||
// figure out what class we're toggling | |||
// if none is specified, then we use the current toggle group | |||
var toBeToggled; | |||
var hyphen = elemClass.indexOf('-'); | |||
if (hyphen != -1) | |||
toBeToggled = elemClass.substring(hyphen+1); | |||
else | |||
{ | |||
toBeToggled = toggleGroup; | |||
hyphen = elemClass.length; | |||
} | |||
var op = elemClass.substring(8, hyphen); | |||
togglers[togglerID].push(new Array(op, toBeToggled)); | |||
} | |||
} | |||
} | |||
} | |||
// add javascript links to all toggler elements | |||
for (var i = 0; i < togglerElems.length; i++) | |||
createTogglerLink(togglerElems[i], i); | |||
} | |||
$(toggleInit); | |||
function unToggle() | |||
{ | |||
var path=window.location.href; | |||
var parts=path.split("#"); | |||
if(parts.length > 1) | |||
{ | |||
path=parts[parts.length-1]; | |||
parts=path.split(".23"); | |||
var untogglerGroup = []; | |||
var untogglerClass = []; | |||
// make list of all document classes | |||
var elems = document.getElementsByTagName("*"); | |||
var numelems = elems.length; | |||
for (var c=0; c < parts.length; c++) | |||
{ | |||
for (var i = 0; i < elems.length; i++) | |||
{ | |||
var elem = elems[i]; | |||
if (!elem.className) | |||
continue; | |||
var elemClasses = elem.className.split(' '); // get list of classes | |||
for (var j = 0; j < elemClasses.length; j++) | |||
{ | |||
var elemClass=elemClasses[j]; | |||
if (elemClass != parts[c]) | |||
continue; | |||
else | |||
{ | |||
untogglerGroup.push(elem); | |||
untogglerClass.push(elemClass); | |||
} | |||
} | |||
} | |||
} | |||
// add javascript links to all toggler elements | |||
for (var i = 0; i < untogglerGroup.length; i++) | |||
{ | |||
untogglerGroup[i].style.display = ''; | |||
} | |||
} | |||
} | } | ||
//=========================================================================== | |||
//=========================================================================== | |||
// Import-Skript zum Auslagern großer Scripte | |||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
// | |||
// | function importScript(page) { | ||
/ | // TODO: might want to introduce a utility function to match wfUrlencode() in PHP | ||
var uri = mw.config.get( 'wgScript' )+ '?title=' + | |||
encodeURIComponent(page.replace(/ /g,'_')).replace(/%2F/ig,'/').replace(/%3A/ig,':') + | |||
'&action=raw&ctype=text/javascript'; | |||
return importScriptURI(uri); | |||
} | |||
function importScriptURI(url) { | |||
if (loadedScripts[url]) { | |||
return null; | |||
} | |||
loadedScripts[url] = true; | |||
var s = document.createElement('script'); | |||
s.setAttribute('src',url); | |||
s.setAttribute('type','text/javascript'); | |||
document.getElementsByTagName('head')[0].appendChild(s); | |||
return s; | |||
} | |||
//=========================================================================== | |||
//=========================================================================== | |||
// bessere Linktitel für Wikipedia-Links | |||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$("a[href^='http://de.wikipedia.org']").each(function(){ | |||
$(this).attr('title',$(this).text()+' in der deutschen Wikipedia'); | |||
}); | |||
$("a[href^='http://en.wikipedia.org']").each(function(){ | |||
$(this).attr('title',$(this).text()+' in der englischen Wikipedia'); | |||
}); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// behebt Anzeigefehler bei unmarkierten Änderungen: Wenn eine Box vor der Infobox steht und maximale Breite füllt, überlappte sich deren Inhalt bei Sichtern teils mit der Infobox. | |||
//--------------------------------------------------------------------------- | |||
$("#mw-fr-revisiontag").after("<div style='height: 10px;'></div>"); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// verbirgt das Betreff-Eingabefeld bei Löschanträgen, da die Überschrift schon im Editor hinzugefügt wird | |||
//--------------------------------------------------------------------------- | |||
if($('.noSummary').length){ | |||
$('#editform #wpSummary').hide(); | |||
$('#editform #wpSummaryLabel').hide(); | |||
} | |||
//=========================================================================== | |||
//=========================================================================== | |||
// behebt einen Fehler mit den slideshows, damit sie nicht teilweise mitten im Text hängen | |||
//--------------------------------------------------------------------------- | |||
$('.slideshow').each(function(){ | |||
$(this).css('clear',($(this).css('float')=='left')?'left':'right'); | |||
}); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Lade die verlinkten anderen TV-Planer auf der Hauptseite direkt anstatt des normal angezeigten, ohne die Seite verlassen zu müssen | |||
//--------------------------------------------------------------------------- | |||
if(mw.config.get('wgPageName')==="Hauptseite"){ | |||
var TVPlanerActive=0; | |||
$('#TVPlaner + table td:first-child a, #TVPlaner-thisWeek a, #TVPlaner + table td:nth-child(3) a').each(function(){ | |||
$(this).click(function(e){ | |||
var url=$(this).attr('href'); | |||
var title=$(this).attr('title'); | |||
var num=url.split('/')[4]; | |||
num=num.substr(0,num.indexOf('.')); | |||
if(TVPlanerActive!=num){ //wenn eine Woche gerade angezeigt wird, muss sie nicht neu geladen werden | |||
e.preventDefault ? e.preventDefault() : (e.returnValue = false); //wahrt Kompatibilität zu IE8 und älter | |||
$('#TVPlaner-loading').show('fast'); | |||
$('#TVPlaner').slideUp(); | |||
if($('#TVPlaner-thisWeek').is(':hidden')) $('#TVPlaner-thisWeek').show(); //beim ersten "Umschalten" muss der Link zur aktuellen Woche sichtbar gemacht werden | |||
$('#TVPlaner').load(url+'#mw-content-text table', function(){ | |||
$('#TVPlaner').slideDown(); | |||
$('#TVPlaner-loading').hide('fast'); | |||
}); | |||
if($('#Diese_Woche_im_TV small a').length) $('#Diese_Woche_im_TV small a').attr('href', url).attr('title', title); | |||
TVPlanerActive=num; | |||
} | |||
}); | |||
}); | |||
} | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Fix für das inputbox-Problem: Ignoriere alle inputboxen innerhalb der vector-Vorschau, sonst wird evtl. auf der falschen Seite gespeichert | |||
//--------------------------------------------------------------------------- | |||
if(mw.config.get('wgAction')==="edit"){ | |||
window.onload = function () { | |||
var observer=new MutationObserver(function(mutations){ | |||
mutations.forEach(function(m){ | |||
if(m.addedNodes.length){ | |||
$('.wikiEditor-preview-contents').promise().done(function() { | |||
$('.wikiEditor-preview-contents input').prop('disabled', true); | |||
}); | |||
} | |||
}); | |||
}); | |||
observer.observe(document.querySelector('.wikiEditor-preview-contents'),{childList: true}); | |||
}; | |||
} | |||
//=========================================================================== | |||
//=========================================================================== | |||
// ergänze Facebook-Link links oben, Einblendung erfogt animiert (Button wird ohnehin erst einige Momente nach dem Seitenaufbau ergänzt) | |||
//--------------------------------------------------------------------------- | |||
$('#mw-head').prepend("<div id='FBButton'>" | |||
+"<div class='floatleft'>" | |||
+"<a href='https://www.facebook.com/stargatewikide' title='Folge uns auf Facebook!' rel='nofollow'>" | |||
+"<img alt='' src='/images/thumb/c/c2/F_icon.svg/11px-F_icon.svg.png' srcset='/images/thumb/c/c2/F_icon.svg/17px-F_icon.svg.png 1.5x, /images/thumb/c/c2/F_icon.svg/22px-F_icon.svg.png 2x' data-file-width='267' data-file-height='267' height='11' width='11'>" | |||
+" Folge uns auf Facebook" | |||
+"</a></div></div>"); | |||
$('#FBButton').css('visibility', 'visible').animate({opacity: 1.0}, 400); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Versteckt Spoiler-Abschnitte im Inhaltsverzeichnis | |||
//--------------------------------------------------------------------------- | |||
spoilerHeadings = { | |||
headings: [], | |||
init: function(){ | |||
$('.spoiler :header > span').each(function(i, e){ | |||
spoilerHeadings.headings.push(e.id); | |||
}); | |||
spoilerHeadings.hideAll(); | |||
}, | |||
hideAll: function(){ | |||
spoilerHeadings.headings.forEach(function(val){ | |||
spoilerHeadings.hide(val); | |||
}); | |||
}, | |||
showAll: function(){ | |||
spoilerHeadings.headings.forEach(function(val){ | |||
spoilerHeadings.show(val); | |||
}); | |||
}, | |||
hide: function(id){ | |||
$("#toc li > a[href='#"+id+"']").parent('li').hide(); | |||
}, | |||
show: function(id){ | |||
$("#toc li > a[href='#"+id+"']").parent('li').show(); | |||
}, | |||
toggle: function(id){ | |||
$("#toc li > a[href='#"+id+"']").parent('li').toggle(); | |||
} | |||
}; | |||
$( spoilerHeadings.init ); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Gleicht die Abstände zwischen den Boxen in den Spalten der Hauptseite aus, sodass am Ende keine große Lücke in einer Spalte entsteht | |||
//--------------------------------------------------------------------------- | |||
if(mw.config.get('wgPageName')=='Hauptseite' && mw.config.get('wgAction')=='view'){ | |||
var balanceHeights={ | |||
diff: 0, | |||
surplusRight: undefined, | |||
relevantBuffers: undefined, | |||
leftBuffers: undefined, | |||
rightBuffers: undefined, | |||
getHeightDiff: function(){ | |||
return $('#leftcol').height() - $('#rightcol').height(); | |||
}, | |||
checkBalance: function(){ | |||
balanceHeights.diff = balanceHeights.getHeightDiff(); | |||
if(balanceHeights.diff === 0) return; | |||
if(balanceHeights.diff<0){ | |||
balanceHeights.diff *= -1; | |||
balanceHeights.surplusRight = true; | |||
balanceHeights.relevantBuffers = balanceHeights.leftBuffers; | |||
}else{ | |||
balanceHeights.surplusRight = false; | |||
balanceHeights.relevantBuffers = balanceHeights.rightBuffers; | |||
} | |||
}, | |||
init: function(){ | |||
$('#leftcol .vertbuffer, #rightcol .vertbuffer').css('transition', 'height .3s'); | |||
balanceHeights.leftBuffers = $('#leftcol .vertbuffer'); | |||
balanceHeights.rightBuffers = $('#rightcol .vertbuffer'); | |||
balanceHeights.checkBalance(); | |||
balanceHeights.relevantBuffers.each(function(i, e){ | |||
e.style.height = Math.round(balanceHeights.diff / balanceHeights.relevantBuffers.length)+"px"; | |||
}); | |||
balanceHeights.checkBalance(); | |||
balanceHeights.relevantBuffers.last().get(0).style.height = balanceHeights.relevantBuffers.last().height()+balanceHeights.diff+"px"; | |||
} | |||
}; | |||
$(balanceHeights.init); | |||
} | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Passt Links, die mit der [[Vorlage:Gelöschte Seite]] erzeugt werden, farblich vollständig (samt Unterstrich) an echte Redlinks an. | |||
//--------------------------------------------------------------------------- | |||
$(function() { | |||
$('.geloeschteSeite').parent().css('color','#ba0000'); | |||
}); | |||
//=========================================================================== | |||
//=========================================================================== | |||
// Import-Skript für CSS-Styles analog zu importScript | |||
//--------------------------------------------------------------------------- | |||
function importStyle(page) { | |||
var uri = mw.config.get('wgScript') + '?title=' + | |||
encodeURIComponent(page.replace(/ /g,'_')).replace(/%2F/ig,'/').replace(/%3A/ig,':') + | |||
'&action=raw&ctype=text/css'; | |||
return importStyleURI(uri); | |||
} | |||
var loadedStyles = {}; // included-styles tracker | |||
function importStyleURI(url) { | |||
if (loadedStyles[url]) { | |||
return null; | |||
} | |||
loadedStyles[url] = true; | |||
var e = document.createElement('link'); | |||
e.setAttribute('href',url); | |||
e.setAttribute('rel','stylesheet'); | |||
document.getElementsByTagName('head')[0].appendChild(e); | |||
return e; | |||
} | |||
//=========================================================================== | |||