ميدياويكي:Gadget-imgToggle.js

من ويكيبيديا، الموسوعة الحرة

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

 /**
  * img_toogle
  * 
  * from [[:fr:mediawiki:common.js]]
  * 
  */
  
function GeoBox_Init( Element ) {
	if(!Element) Element = document.body;
	$( Element ).find( '.img_toggle' ).each( function ( i, Container ) {
		Container.id = 'img_toggle_' + i;
		var Boxes = $( Container ).find( '.geobox' );
		if ( Boxes.length < 2 ) {
			return;
		}
		var ToggleLinksDiv = document.createElement( 'ul' );
		ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
		Boxes.each( function ( a, ThisBox ) {
			ThisBox.id = 'geobox_' + i + '_' + a;
			var ThisAlt;
			var ThisImg = ThisBox.getElementsByTagName( 'img' )[ 0 ];
			if ( ThisImg ) {
				ThisAlt = ThisImg.alt;
			}
			if ( !ThisAlt ) {
				ThisAlt = 'erreur : description non trouvée';
			}
			var toggle = document.createElement( 'a' );
			toggle.id = 'geoboxToggle_' + i + '_' + a;
			toggle.textContent = ThisAlt;
			toggle.href = 'javascript:';
			toggle.onclick = function ( e ) {
				e.preventDefault();
				GeoBox_Toggle( this );
			};
			var Li = document.createElement( 'li' );
			Li.appendChild( toggle );
			ToggleLinksDiv.appendChild( Li );
			if ( a === 0 ) {
				toggle.style.color = '#888';
				toggle.style.pointerEvents = 'none';
			} else {
				ThisBox.style.display = 'none';
			}
		} );
		Container.appendChild( ToggleLinksDiv );
	} );
}

function GeoBox_Toggle( link ) {
	var ImgToggleIndex = link.id.replace( 'geoboxToggle_', '' ).replace( /_.*/g, '' );
	var GeoBoxIndex = link.id.replace( /.*_/g, '' );
	var ImageToggle = document.getElementById( 'img_toggle_' + ImgToggleIndex );
	var Links = document.getElementById( 'geoboxToggleLinks_' + ImgToggleIndex );
	var Geobox = document.getElementById( 'geobox_' + ImgToggleIndex + '_' + GeoBoxIndex );
	var Link = document.getElementById( 'geoboxToggle_' + ImgToggleIndex + '_' + GeoBoxIndex );
	if ( !ImageToggle || !Links || !Geobox || !Link ) {
		return;
	}
	$( ImageToggle ).find( '.geobox' ).each( function ( _, ThisgeoBox ) {
		if ( ThisgeoBox.id === Geobox.id ) {
			ThisgeoBox.style.display = '';
		} else {
			ThisgeoBox.style.display = 'none';
		}
	} );
	$( Links ).find( 'a' ).each( function ( _, thisToggleLink ) {
		if ( thisToggleLink.id === Link.id ) {
			thisToggleLink.style.color = '#888';
			thisToggleLink.style.pointerEvents = 'none';
		} else {
			thisToggleLink.style.color = '';
			thisToggleLink.style.pointerEvents = '';
		}
	} );
}

if ( ( mw.config.get( 'wgAction' ) === 'view' ||
	mw.config.get( 'wgAction' ) === 'purge' ||
	mw.config.get( 'wgAction' ) === 'submit' )
) {
	$( function() {
		GeoBox_Init();
	} );
}