Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

MediaWiki:Common.js

MediaWiki-Schnittstellenseite
Version vom 24. September 2011, 15:49 Uhr von CF (Diskussion | Beiträge) (Überschreiben der Tabellensortierung, damit leere Einträge immer unten stehen)

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
 /* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */
 //================================================================================
 //*** force the loading of another JavaScript file (Kopie von [[Commons:Common.js]])
 // Local Maintainer: [[Commons:User:Dschwen]]
 
 function includePage(name) {
    document.write('<script type="text/javascript" src="' + wgScript + '?title='
        + name 
        + '&action=raw&ctype=text/javascript"><\/script>');
 }

//*** Fügt eine Betreffzeile auf leeren Diskussionsseiten ein

addOnloadHook(function() {
        if(wgNamespaceNumber != 0 && 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 += '&section=new';
});

//================================================================================
//*** import Onlyifuploading-functions
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]

if (wgCanonicalSpecialPageName == "Upload") {
    importScript("MediaWiki:Onlyifuploading.js");
}
importScript('Vorlage:Mentorenliste');
addOnloadHook(function()
{
  if (wgPageName != "Kategorie:Stargate_Kommando_SG-1_Wichtige_Episode") return;
  $j("div#mw-pages h3").html(function(i, text)
  {
    return (text.substr(0, 1) == "@")?"10"+text.substr(1):text;
  });
});

//
// Collapsible tables
//
importScript('MediaWiki:CollapsibleTables.js');
importScript('MediaWiki:CollapsibleTemplates.js');

//================================================================================
//*** Dynamic Navigation Bars

// set up the words in your language
var NavigationBarHide = 'Einklappen';
var NavigationBarShow = 'Ausklappen';
var NavigationBarToggleAll = 'Alle umklappen';

// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
if (typeof NavigationBarShowDefault == 'undefined' ) {
    var NavigationBarShowDefault = 0;
}

// adds show/hide-button to navigation bars
addOnloadHook(function() {
	// shows and hides content and picture (if available) of navigation bars
	// Parameters:
	//     indexNavigationBar: the index of navigation bar to be toggled
	function toggleNavigationBar(NavToggle, NavFrame)
	{
	   if (!NavFrame || !NavToggle) {
		   return false;
	   }

	   // if shown now
	   if (NavToggle.firstChild.data == NavigationBarHide) {
		   for (
				   var NavChild = NavFrame.firstChild;
				   NavChild != null;
				   NavChild = NavChild.nextSibling
			   ) {
			   if (NavChild.className == 'NavPic') {
				   NavChild.style.display = 'none';
			   }
			   if (NavChild.className == 'NavContent') {
				   NavChild.style.display = 'none';
			   }
			   if (NavChild.className == 'NavToggle') {
				   NavChild.firstChild.data = NavigationBarShow;
			   }
		   }

	   // if hidden now
	   } else if (NavToggle.firstChild.data == NavigationBarShow) {
		   for (
				   var NavChild = NavFrame.firstChild;
				   NavChild != null;
				   NavChild = NavChild.nextSibling
			   ) {
			   if (NavChild.className == 'NavPic') {
				   NavChild.style.display = 'block';
			   }
			   if (NavChild.className == 'NavContent') {
				   NavChild.style.display = 'block';
			   }
			   if (NavChild.className == 'NavToggle') {
				   NavChild.firstChild.data = NavigationBarHide;
			   }
		   }
	   }
	}
 
	function toggleNavigationBarFunction(NavToggle, NavFrame) {
		return function() {
			toggleNavigationBar(NavToggle, NavFrame);
			return false;
		};
	}
 
	// Shows/hides all navigation bars at once
	function toggleNavigationBars() {
		var NavFrames = getElementsByClassName(document.getElementById("content"), "div", "NavFrame");
		for (var i=0; i<NavFrames.length; i++)
			toggleNavigationBar(getElementsByClassName(NavFrames[i], "a", "NavToggle")[0], NavFrames[i]);
	}
 
	function toggleNavigationBarsFunction() {
		return function() {
			toggleNavigationBars();
			return false;
		};
	}
 
	// iterate over all NavFrames
	var content	= document.getElementById("content");
	var NavFrames = getElementsByClassName(content, "div", "NavFrame");
	// if more Navigation Bars found and not template namespace than Default: hide all
	var initiallyToggle	= NavigationBarShowDefault < NavFrames.length && wgNamespaceNumber != 10;
	for (var i=0;  i<NavFrames.length; i++) {
		var NavFrame = NavFrames[i];
		var NavToggle = document.createElement("a");
		NavToggle.className = 'NavToggle';
		NavToggle.setAttribute('href', '#');
 
		var NavToggleText = document.createTextNode(NavigationBarHide);
		NavToggle.appendChild(NavToggleText);
 
		// add NavToggle-Button as first div-element
		// in < div class="NavFrame" >
		NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
		
		NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
		if (initiallyToggle) {
			toggleNavigationBar(NavToggle, NavFrame);
		}
	}
	var NavFrameToggleAlls = getElementsByClassName(content, "div", "NavFrameToggleAll");
	for (var i=0;  i<NavFrameToggleAlls.length; i++) {
		var NavFrameToggleAll = NavFrameToggleAlls[i];
		var NavToggleAll = document.createElement("a");
		NavToggleAll.className = 'NavToggleAll';
		NavToggleAll.setAttribute('href', '#');
 
		var NavToggleAllText = document.createTextNode(NavigationBarToggleAll);
		NavToggleAll.appendChild(NavToggleAllText);
 
		// add NavToggleAll-Button as first div-element
		// in < div class="NavFrameToggleAll" >
		NavFrameToggleAll.insertBefore(NavToggleAll, NavFrameToggleAll.firstChild);
		
		NavToggleAll.onclick = toggleNavigationBarsFunction();
	}
});

 /* tooltips and access keys */
 ta = new Object();
 ta['pt-userpage'] = new Array('.','Meine persönliche Seite');
 ta['pt-anonuserpage'] = new Array('.','Benutzerseite der IP-Adresse von der aus Sie Änderungen durchführen');
 ta['pt-mytalk'] = new Array('n','Meine Diskussionsseite');
 ta['pt-anontalk'] = new Array('n','Diskussion über Änderungen von dieser IP-Adresse');
 ta['pt-preferences'] = new Array('','Meine Einstellungen');
 ta['pt-watchlist'] = new Array('l','Liste von Seiten die Sie auf Änderungen überwachen.');
 ta['pt-mycontris'] = new Array('y','Liste meiner Beiträge');
 ta['pt-login'] = new Array('o','Hier kann sich wer mächte anmelden, es ist aber keine Pflicht.');
 ta['pt-anonlogin'] = new Array('o','Hier kann sich wer möchte anmelden, es ist aber keine Pflicht.');
 ta['pt-logout'] = new Array('o','Abmelden');
 ta['ca-talk'] = new Array('t','Diskussion(en) zum Artikel');
 ta['ca-edit'] = new Array('e','Artikel bearbeiten. Bitte nutzen Sie vor dem Speichern die Vorschaufunktion.');
 ta['ca-addsection'] = new Array('+','Einen Kommentar zu dieser Diskussion hinzufügen.');
 ta['ca-viewsource'] = new Array('e','Diese Seite ist geschützt. Sie können sich den Quelltext ansehen.');
 ta['ca-history'] = new Array('h','Vorherige Versionen dieser Seite');
 ta['ca-protect'] = new Array('=','Diese Seite schützen');
 ta['ca-delete'] = new Array('d','Diese Seite löschen');
 ta['ca-undelete'] = new Array('d','Einträge wiederherstellen, bevor diese Seite gelöscht wurde');
 ta['ca-move'] = new Array('m','Diese Seite verschieben');
 ta['ca-watch'] = new Array('w','Diese Seite zu Ihrer Beobachtungsliste hinzufügen');
 ta['ca-unwatch'] = new Array('w','Diese Seite von Ihrer Beobachtungsliste entfernen');
 ta['search'] = new Array('f','In Stargate Wiki suchen');
 ta['p-logo'] = new Array('','Hauptseite');
 ta['n-mainpage'] = new Array('z','Hauptseite anzeigen');
 ta['n-portal'] = new Array('','Überblick über StargateWiki, was sie machen könne, wo man etwas findet');
 ta['n-currentevents'] = new Array('','Hintergrundinformationen zur aktuellen Season');
 ta['n-recentchanges'] = new Array('r','Liste der letzten Änderungen in Stargate Wiki.');
 ta['n-randompage'] = new Array('x','Zufälligen Artikel anzeigen');
 ta['n-help'] = new Array('','Hilfe zu Stargate Wiki.');
 ta['n-sitesupport'] = new Array('','Wie kann man Stargate Wiki unterstüzungen?');
 ta['t-whatlinkshere'] = new Array('j','Liste aller Seiten die auf diesen Artikel verweisen');
 ta['t-recentchangeslinked'] = new Array('k','Letzte Änderungen an Seiten, die von hier verlinkt sind');
 ta['feed-rss'] = new Array('','RSS-Feed für diese Seite');
 ta['feed-atom'] = new Array('','Atom-Feed für diese Seite');
 ta['t-contributions'] = new Array('','Liste der Beiträge dieses Benutzers ansehen');
 ta['t-emailuser'] = new Array('','Eine Mail an den Benutzer senden');
 ta['t-upload'] = new Array('u','Bild- oder Media-File hochladen');
 ta['t-specialpages'] = new Array('q','Liste aller Spezialseiten');
 ta['ca-nstab-main'] = new Array('c','Artikel anzeigen');
 ta['ca-nstab-user'] = new Array('c','Benutzerseite anzeigen');
 ta['ca-nstab-media'] = new Array('c','Mediendateienseite anzeigen');
 ta['ca-nstab-special'] = new Array('','Dies ist eine Spezialseite. Sie können diese nicht ändern.');
 ta['ca-nstab-wp'] = new Array('a','Projektseite anzeigen');
 ta['ca-nstab-image'] = new Array('c','Bilderseite anzeigen');
 ta['ca-nstab-mediawiki'] = new Array('c','Systemmeldungen anzeigen');
 ta['ca-nstab-template'] = new Array('c','Vorlage anzeigen');
 ta['ca-nstab-help'] = new Array('c','Hilfeseite anzeigen');
 ta['ca-nstab-category'] = new Array('c','Kategorieseite anzeigen');

 function jqstart(){
   $j("tr[class*='blauzebra']:not(.spoiler):even").addClass("zebrablau");
   $j("tr[class*='blauzebra']:not(.spoiler):odd").removeClass("zebrablau");
   $j("tr[class*='grünzebra']:not(.spoiler):even").addClass("zebragrün");
   $j("tr[class*='grünzebra']:not(.spoiler):odd").removeClass("zebragrün");
   $j("tr[class*='zeigen']").hover(function(){$j(this).toggleClass("zeileaktiv");},function(){$j(this).toggleClass("zeileaktiv");});
 }

 onloadFuncts[onloadFuncts.length] = jqstart;

onloadFuncts[onloadFuncts.length] = function() {
  if ($j('.references li').size() < 6)
    $j('.references').parent().css({ 'column-count': '1', '-moz-column-count': '1', '-webkit-column-count': '1' });
}

// Erlaubt nur Sichtern und Admins die Benutzung von HotCat
if (wgUserGroups) {
	execute_hotcat=false;
	for (i=0; i<wgUserGroups.length; i++) {
		if (wgUserGroups[i]=="editor" || wgUserGroups[i]=="sysop") {execute_hotcat=true;break;}
	}
	if(execute_hotcat==true) importScript('MediaWiki:HotCat.js');
}


//================================================================================
// Überschreiben der Tabellensortierung, damit leere Einträge immer unten stehen  
//================================================================================
function ts_resortTable( lnk ) {
	// get the span
	var span = lnk.getElementsByTagName('span')[0];

	var td = lnk.parentNode;
	var tr = td.parentNode;
	var column = td.cellIndex;

	var table = tr.parentNode;
	while ( table && !( table.tagName && table.tagName.toLowerCase() == 'table' ) ) {
		table = table.parentNode;
	}
	if ( !table ) {
		return;
	}

	if ( table.rows.length <= 1 ) {
		return;
	}

	// Generate the number transform table if it's not done already
	if ( ts_number_transform_table === null ) {
		ts_initTransformTable();
	}

	// Work out a type for the column
	// Skip the first row if that's where the headings are
	var rowStart = ( table.tHead && table.tHead.rows.length > 0 ? 0 : 1 );

	var itm = '';
	for ( var i = rowStart; i < table.rows.length; i++ ) {
		if ( table.rows[i].cells.length > column ) {
			itm = ts_getInnerText(table.rows[i].cells[column]);
			itm = itm.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '');
			if ( itm != '' ) {
				break;
			}
		}
	}

	// TODO: bug 8226, localised date formats
	var sortfn = ts_sort_generic;
	var preprocessor = ts_toLowerCase;
	if ( /^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/.test( itm ) ) {
		preprocessor = ts_dateToSortKey;
	} else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/.test( itm ) ) {
		preprocessor = ts_dateToSortKey;
	} else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d$/.test( itm ) ) {
		preprocessor = ts_dateToSortKey;
		// (minus sign)([pound dollar euro yen currency]|cents)
	} else if ( /(^([-\u2212] *)?[\u00a3$\u20ac\u00a4\u00a5]|\u00a2$)/.test( itm ) ) {
		preprocessor = ts_currencyToSortKey;
	} else if ( ts_number_regex.test( itm ) ) {
		preprocessor = ts_parseFloat;
	}

	var reverse = ( span.getAttribute( 'sortdir' ) == 'down' );

	var newRows = new Array();
	var staticRows = new Array();
	for ( var j = rowStart; j < table.rows.length; j++ ) {
		var row = table.rows[j];
		if( (' ' + row.className + ' ').indexOf(' unsortable ') < 0 ) {
			var keyText = ts_getInnerText( row.cells[column] );
			if( keyText === undefined ) {
				keyText = ''; 
			}
			var oldIndex = ( reverse ? -j : j );
			var preprocessed = preprocessor( keyText.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '') );

			newRows[newRows.length] = new Array( row, preprocessed, oldIndex );
		} else {
			staticRows[staticRows.length] = new Array( row, false, j-rowStart );
		}
	}

	newRows.sort( sortfn );

	var arrowHTML;
	if ( reverse ) {
		arrowHTML = '<img src="' + ts_image_path + ts_image_down + '" alt="&darr;"/>';
		newRows.reverse();
		span.setAttribute( 'sortdir', 'up' );
	} else {
		arrowHTML = '<img src="' + ts_image_path + ts_image_up + '" alt="&uarr;"/>';
		span.setAttribute( 'sortdir', 'down' );
	}

	for ( var i = 0; i < staticRows.length; i++ ) {
		var row = staticRows[i];
		newRows.splice( row[2], 0, row );
	}

	// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
	// don't do sortbottom rows
	for ( var i = 0; i < newRows.length; i++ ) {
		if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') == -1 && ( ' ' + newRows[i][0].cells[column].className + ' ').indexOf(' sortbottom ') == -1 ) {
			table.tBodies[0].appendChild( newRows[i][0] );
		}
	}
	// do sortbottom rows only
	for ( var i = 0; i < newRows.length; i++ ) {
		if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') != -1 || ( ' ' + newRows[i][0].cells[column].className + ' ').indexOf(' sortbottom ') != -1 ) {
			table.tBodies[0].appendChild( newRows[i][0] );
		}
	}

	// Delete any other arrows there may be showing
	var spans = getElementsByClassName( tr, 'span', 'sortarrow' );
	for ( var i = 0; i < spans.length; i++ ) {
		spans[i].innerHTML = '<img src="' + ts_image_path + ts_image_none + '" alt="&darr;"/>';
	}
	span.innerHTML = arrowHTML;

	if ( ts_alternate_row_colors ) {
		ts_alternate( table );
	}
}
//================================================================================