MediaWiki:ResizeGalleries.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
//<pre><nowiki>

/** set to false in [[Special:Mypage/monobook.js]] to switch off this feature */
var resizeGalleries_enabled  = true;

addOnloadHook(function() {
	if (!resizeGalleries_enabled) return;

	var bc = document.getElementById ( "bodyContent" ) ;
	var width = bc.offsetWidth ; // Visible width
	var padding = 20 ; // padding per TD
	var tables = getElementsByClassName ( bc , "table" , "gallery" ) ;

	if (tables.length == 0 ) return;
	
	function modifyTables() {
		for ( var tablecount = 0 ; tablecount < tables.length ; tablecount++ ) {
			var t = tables[tablecount] ;
	
			// Get DIVs and their parent nodes (TDs)
			var divs = getElementsByClassName ( t , "div" , "gallerybox" ) ;
			var tds = new Array () ;
			for ( var i = 0 ; i < divs.length ; i++ ) tds.push ( divs[i].parentNode ) ;
	
			// Remove Table Rows
			for ( var i = 0 ; i < t.rows.length ; i++ ) t.rows[i].parentNode.removeChild ( t.rows[i] ) ;
	
			// Remove Table guts ( old tbodies, anything with type 1 should go )
			for ( var i = 0 ; i < t.childNodes.length ; i++ ) 
			 if( t.childNodes[i].nodeType == 1 && t.childNodes[i].tagName == "TR" ) t.removeChild ( t.childNodes[i] ) ;
	
			// Reorder
			var tb = document.createElement("tbody");
			var tr = null ;
			var curpos = 0 ;
			for ( var i = 0 ; i < tds.length ; i++ ) {
				var nextwidth = parseInt ( divs[i].style.width ) + padding ;
				if ( curpos + nextwidth > width || tr == null ) {
					tr = document.createElement ( "tr" ) ;
					tb.appendChild ( tr ) ;
					curpos = 0 ;
				}
				curpos += nextwidth ;
				tr.appendChild ( tds[i] ) ;
			}
			t.appendChild(tb);
		}
	}
	
	modifyTables();
	window.onresize = modifyTables;
});

//</nowiki></pre>