MediaWiki:Common.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Ghost (Diskussion | Beiträge) K Fixes |
||
| (10 dazwischenliegende Versionen von einem anderen Benutzer 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 | |||
//=========================================================================== | //=========================================================================== | ||
| Zeile 21: | Zeile 21: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$(function() { | $(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'; | |||
}); | }); | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 35: | Zeile 35: | ||
// 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"); | ||
} | } | ||
| Zeile 53: | Zeile 53: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$(function() { | $(function() { | ||
if ( | if (mw.config.get( 'wgCanonicalSpecialPageName' )!= "Kategorie:Stargate_Kommando_SG-1_Wichtige_Episode") return; | ||
$("div#mw-pages h3").html(function(i, text) | $("div#mw-pages h3").html(function(i, text) | ||
{ | { | ||
| Zeile 122: | Zeile 122: | ||
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&leprop=userid&format=json&lelimit=max&callback=revisionMainspaceCounter.queryResult&requestid=' + i; | 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=&format=json&uclimit=max&callback=revisionMainspaceCounter.queryResult&requestid=' + i; | 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) | //Bei leerer ucprop-Angabe werden nur noch userid und user angegeben - sollte MW das mal ändern, muss hier wieder etwas übergeben werden (vorzugsweise ids) | ||
}, | }, | ||
| Zeile 130: | Zeile 130: | ||
/*{ | /*{ | ||
revisionCountUser : 0, | revisionCountUser : 0, | ||
User : | User : mw.user.getName(), | ||
Namespaces : '0', | Namespaces : '0', | ||
InputId : 'revisionMainspaceCounter', | InputId : 'revisionMainspaceCounter', | ||
| Zeile 147: | 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']) | ||
{ | { | ||
var lequerycont=res['query-continue'].logevents.lecontinue; | |||
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&lestart=' + encodeURIComponent(lequerycont.substring(0,lequerycont.indexOf("|")))); | 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']) | ||
{ | { | ||
var ucquerycont=res['query-continue'].usercontribs.uccontinue; | |||
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&ucstart=' + encodeURIComponent(ucquerycont.substring(0,ucquerycont.indexOf("|")))); | importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&ucstart=' + encodeURIComponent(ucquerycont.substring(0,ucquerycont.indexOf("|")))); | ||
continu = true; | continu = true; | ||
| Zeile 235: | 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 241: | 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 249: | 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 254: | 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 261: | 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 ); | $( mw.SGWSpoiler.init ); | ||
| Zeile 291: | Zeile 307: | ||
// each operation is a two element array, the first being the type, the second a class name or array of elements | // 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 | // operation types are strings like "_reset" or "" for the default toggle operation | ||
var togglers = | var togglers = []; | ||
var allClasses = | var allClasses = {}; // associative map of class names to page elements | ||
function toggler(id) | function toggler(id) | ||
| Zeile 360: | Zeile 376: | ||
function toggleInit() | function toggleInit() | ||
{ | { | ||
var togglerElems = | var togglerElems = []; | ||
var toggleGroup = | var toggleGroup = []; | ||
// make list of all document classes | // make list of all document classes | ||
var elems = document.getElementsByTagName("*"); | var elems = document.getElementsByTagName("*"); | ||
| Zeile 375: | Zeile 391: | ||
var togglerID = -1; | var togglerID = -1; | ||
if( typeof elem.className == "string" ) { | 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)); | |||
} | |||
} | |||
} | } | ||
} | } | ||
| Zeile 439: | Zeile 455: | ||
function unToggle() | function unToggle() | ||
{ | { | ||
var path=window.location.href; | var path=window.location.href; | ||
var parts=path.split("#"); | var parts=path.split("#"); | ||
| Zeile 446: | Zeile 462: | ||
path=parts[parts.length-1]; | path=parts[parts.length-1]; | ||
parts=path.split(".23"); | parts=path.split(".23"); | ||
var untogglerGroup = | var untogglerGroup = []; | ||
var untogglerClass = | var untogglerClass = []; | ||
// make list of all document classes | // make list of all document classes | ||
var elems = document.getElementsByTagName("*"); | var elems = document.getElementsByTagName("*"); | ||
| Zeile 460: | Zeile 476: | ||
if (!elem.className) | if (!elem.className) | ||
continue; | continue; | ||
var elemClasses = elem.className.split(' '); // get list of classes | var elemClasses = elem.className.split(' '); // get list of classes | ||
for (var j = 0; j < elemClasses.length; j++) | for (var j = 0; j < elemClasses.length; j++) | ||
{ | { | ||
var elemClass=elemClasses[j]; | var elemClass=elemClasses[j]; | ||
if (elemClass != parts[c]) | if (elemClass != parts[c]) | ||
continue; | continue; | ||
else | else | ||
{ | { | ||
| Zeile 476: | Zeile 492: | ||
} | } | ||
} | } | ||
// add javascript links to all toggler elements | // add javascript links to all toggler elements | ||
for (var i = 0; i < untogglerGroup.length; i++) | for (var i = 0; i < untogglerGroup.length; i++) | ||
| Zeile 482: | Zeile 498: | ||
untogglerGroup[i].style.display = ''; | untogglerGroup[i].style.display = ''; | ||
} | } | ||
} | } | ||
} | } | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 490: | Zeile 506: | ||
// Import-Skript zum Auslagern großer Scripte | // Import-Skript zum Auslagern großer Scripte | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
function importScript(page) { | 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) { | 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; | |||
} | } | ||
//=========================================================================== | //=========================================================================== | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 531: | Zeile 532: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$("a[href^='http://de.wikipedia.org']").each(function(){ | $("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(){ | $("a[href^='http://en.wikipedia.org']").each(function(){ | ||
$(this).attr('title',$(this).text()+' in der englischen Wikipedia'); | |||
}); | }); | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 550: | Zeile 551: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
if($('.noSummary').length){ | if($('.noSummary').length){ | ||
$('#editform #wpSummary').hide(); | |||
$('#editform #wpSummaryLabel').hide(); | |||
} | } | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 560: | Zeile 561: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$('.slideshow').each(function(){ | $('.slideshow').each(function(){ | ||
$(this).css('clear',($(this).css('float')=='left')?'left':'right'); | |||
}) | }); | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 569: | Zeile 570: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
if(mw.config.get('wgPageName')==="Hauptseite"){ | 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; | |||
} | |||
}); | |||
}); | |||
} | } | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 591: | Zeile 599: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
if(mw.config.get('wgAction')==="edit"){ | 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}); | |||
}; | |||
} | } | ||
//=========================================================================== | //=========================================================================== | ||
| Zeile 611: | Zeile 619: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
$('#mw-head').prepend("<div id='FBButton'>" | $('#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); | $('#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; | |||
} | |||
//=========================================================================== | //=========================================================================== | ||
Aktuelle Version vom 30. November 2025, 15:19 Uhr
/* 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
//---------------------------------------------------------------------------
$(function() {
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
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]
//---------------------------------------------------------------------------
if (mw.config.get( 'wgCanonicalSpecialPageName' ) == "Upload") {
importScript("MediaWiki:Onlyifuploading.js");
}
//===========================================================================
//===========================================================================
// Einbinden von [[Vorlage:Mentorenliste]]
//---------------------------------------------------------------------------
importScript('Vorlage:Mentorenliste');
//===========================================================================
//===========================================================================
// Darstellung der Abschnitte in der Kategorie für wichtige SG1-Episoden
// nach einzelnen Staffeln
//---------------------------------------------------------------------------
$(function() {
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;
});
});
//===========================================================================
//===========================================================================
// 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
//---------------------------------------------------------------------------
if ($("table.sortable").length) {
mw.loader.using("jquery.tablesorter", function() {
if ($ && $.tablesorter) {
$.tablesorter.addParser({
id: "sgwDateTime",
is: function(s) {
return /(\d\d):(\d\d), (\d\d)\. (...)\. (\d{4})/.test(s);
},
format: function(s) {
s = $.trim(s.toLowerCase());
for (var i=0; i<12; ++i)
s = s.replace($.tablesorter.monthNames[1][i+1], i);
var x = /(\d\d):(\d\d), (\d\d)\. (\d?)\. (\d{4})/.exec(s);
return !x?0:$.tablesorter.formatFloat(new Date(x[5], x[4], x[3], x[1], x[2], 0).getTime());
},
type: "numeric"
});
}
});
}
//===========================================================================
//===========================================================================
// Zählt die Anzahl der Bearbeitungen eines Benutzers
// Siehe auch [[Benutzer:CF/revisionMainspaceCounter.js]]
// Bearbeitung von [[MediaWiki:Gadget-revisionCounter.js]]
//---------------------------------------------------------------------------
var revisionMainspaceCounter =
{
queryUrl : function(i) {
if (revisionMainspaceCounter.queries[i] == null)
return null;
if (revisionMainspaceCounter.queries[i].Namespaces == '-100')
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
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 : [
/*{
revisionCountUser : 0,
User : mw.user.getName(),
Namespaces : '0',
InputId : 'revisionMainspaceCounter',
OutputId : 'revisionMainspaceCounterTarget',
ReplaceFirstChild : false
}*/
],
execute : function()
{
for (var i=0; i<revisionMainspaceCounter.queries.length; ++i)
if (revisionMainspaceCounter.queryUrl(i))
importScriptURI(revisionMainspaceCounter.queryUrl(i));
},
queryResult : function(res)
{
if (!res.query || !res.requestid || res.requestid >= revisionMainspaceCounter.queries.length || res.requestid < 0 || revisionMainspaceCounter.queries[res.requestid] === null) return;
var continu = false;
var i = res.requestid;
if (revisionMainspaceCounter.queries[res.requestid].Namespaces == '-100') {
if (!res.query.logevents)
return;
var revs = res.query.logevents;
revisionMainspaceCounter.queries[i].revisionCountUser += revs.length;
if (res && res['query-continue'])
{
var lequerycont=res['query-continue'].logevents.lecontinue;
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&lestart=' + encodeURIComponent(lequerycont.substring(0,lequerycont.indexOf("|"))));
continu = true;
}
} else {
if (!res.query.usercontribs)
return;
var revs = res.query.usercontribs;
revisionMainspaceCounter.queries[i].revisionCountUser += revs.length;
if (res && res['query-continue'])
{
var ucquerycont=res['query-continue'].usercontribs.uccontinue;
importScriptURI(revisionMainspaceCounter.queryUrl(i) + '&ucstart=' + encodeURIComponent(ucquerycont.substring(0,ucquerycont.indexOf("|"))));
continu = true;
}
}
if (!continu && document.getElementById(revisionMainspaceCounter.queries[i].OutputId))
{
var info = document.createElement("span");
info.appendChild(document.createTextNode(revisionMainspaceCounter.queries[i].revisionCountUser));
var infoTitle = document.createAttribute("title");
infoTitle.nodeValue = revisionMainspaceCounter.queries[i].User + " hat " + revisionMainspaceCounter.queries[i].revisionCountUser + " Bearbeitungen i" + (revisionMainspaceCounter.queries[i].Namespaces==="0" ? "m Hauptnamensraum." : ((revisionMainspaceCounter.queries[i].Namespaces.indexOf("|")>-1 ? "n den Namensräumen ": "m Namensraum ") + revisionMainspaceCounter.queries[i].Namespaces + "."));
info.setAttributeNode(infoTitle);
var e = document.getElementById(revisionMainspaceCounter.queries[i].OutputId);
if (revisionMainspaceCounter.queries[i].ReplaceFirstChild) e.replaceChild(info, e.firstChild);
else e.appendChild(info);
var input = document.getElementById(revisionMainspaceCounter.queries[i].InputId);
var header = $(input).parents("table.sortable")[0];
if (input && input.parentNode)
{
input.parentNode.removeChild(input);
if (header && $(header).find("span.revisionMainspaceCounter").length === 0)
{
$(header).find(".headerSort").unbind("click");
$(header).tablesorter();
}
}
revisionMainspaceCounter.queries[i] = null;
}
},
findCounter : function()
{
var found = 0;
$("span.revisionMainspaceCounter").each(function()
{
var i = this.innerHTML.split("#");
if (i.length == 4 && ++found)
revisionMainspaceCounter.queries.push({
revisionCountUser : 0,
User : i[0],
Namespaces : i[1].replace(/ /g,"").split(",").join("|"),
InputId : this.id,
OutputId : i[2],
ReplaceFirstChild : i[3]==="j"
});
});
if (found) revisionMainspaceCounter.execute();
}
};
$(revisionMainspaceCounter.findCounter);
//===========================================================================
//===========================================================================
// Versteckt Inhalte
// [[Vorlage:Spoiler]]
//---------------------------------------------------------------------------
mw.SGWSpoiler = {
showAll: false,
init: function() {
if ($(".spoiler").length>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]);
if (node) {
node.onclick = mw.SGWSpoiler.toggleAll;
if (vector)
$("#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;" />');
}
}
},
toggleNext: function(obj) {
if (mw.SGWSpoiler.showAll) return;
$(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);
});
}
},
toggleNextRow: function(obj) {
if (mw.SGWSpoiler.showAll) return;
$(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);
});
}
},
toggleAll: function(obj) {
mw.SGWSpoiler.showAll ^= true;
if (mw.SGWSpoiler.showAll) {
$(".spoiler").addClass("spoilerShowAll");
$("#ca-spoiler").addClass("selected");
if (obj){
$(obj).parent().parent().next("tr.spoiler").removeClass("spoilerShow");
$(obj).next(".spoiler").removeClass("spoilerShow");
}
spoilerHeadings.showAll();
}
else {
$(".spoiler").removeClass("spoilerShowAll");
$("#ca-spoiler").removeClass("selected");
spoilerHeadings.hideAll();
}
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;
}
//===========================================================================