<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://cerclesrestauratifs.org/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-newCollapsible.js</id>
	<title>MediaWiki:Gadget-newCollapsible.js - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://cerclesrestauratifs.org/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-newCollapsible.js"/>
	<link rel="alternate" type="text/html" href="https://cerclesrestauratifs.org/w/index.php?title=MediaWiki:Gadget-newCollapsible.js&amp;action=history"/>
	<updated>2026-05-11T18:28:20Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://cerclesrestauratifs.org/w/index.php?title=MediaWiki:Gadget-newCollapsible.js&amp;diff=4461&amp;oldid=prev</id>
		<title>Dieudo : Page créée avec « /**  * fork de jQuery makeCollapsible   *   * script initial : http://www.mediawiki.org/wiki/RL/DM#jQuery.makeCollapsible  * auteur initial : Krinkle &lt;krinklemail@gmail.co... »</title>
		<link rel="alternate" type="text/html" href="https://cerclesrestauratifs.org/w/index.php?title=MediaWiki:Gadget-newCollapsible.js&amp;diff=4461&amp;oldid=prev"/>
		<updated>2015-03-10T14:12:32Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « /**  * fork de jQuery makeCollapsible   *   * script initial : http://www.mediawiki.org/wiki/RL/DM#jQuery.makeCollapsible  * auteur initial : Krinkle &amp;lt;krinklemail@gmail.co... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * fork de jQuery makeCollapsible &lt;br /&gt;
 * &lt;br /&gt;
 * script initial : http://www.mediawiki.org/wiki/RL/DM#jQuery.makeCollapsible&lt;br /&gt;
 * auteur initial : Krinkle &amp;lt;krinklemail@gmail.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * modifications : http://fr.wikipedia.org/wiki/Utilisateur:Lgd&lt;br /&gt;
 *&lt;br /&gt;
 * Dual license:&lt;br /&gt;
 * @license CC-BY 3.0 &amp;lt;http://creativecommons.org/licenses/by/3.0&amp;gt;&lt;br /&gt;
 * @license GPL2 &amp;lt;http://www.gnu.org/licenses/old-licenses/gpl-2.0.html&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
var newCollapsible = function($) {&lt;br /&gt;
&lt;br /&gt;
	return $('.fr-collapsible').each(function() {&lt;br /&gt;
		// Define reused variables and functions&lt;br /&gt;
		var	$that = $(this),&lt;br /&gt;
			that = this,&lt;br /&gt;
			collapsetext = $(this).attr( 'data-collapsetext' ),&lt;br /&gt;
			expandtext = $(this).attr( 'data-expandtext' ),&lt;br /&gt;
			toggleElement = function( $collapsible, action, $defaultToggle, instantHide ) {&lt;br /&gt;
				// Validate parameters&lt;br /&gt;
				if ( !$collapsible.jquery ) { // $collapsible must be an instance of jQuery&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
				if ( action != 'expand' &amp;amp;&amp;amp; action != 'collapse' ) {&lt;br /&gt;
					// action must be string with 'expand' or 'collapse'&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
				if ( typeof $defaultToggle == 'undefined' ) {&lt;br /&gt;
					$defaultToggle = null;&lt;br /&gt;
				}&lt;br /&gt;
				if ( $defaultToggle !== null &amp;amp;&amp;amp; !($defaultToggle instanceof $) ) {&lt;br /&gt;
					// is optional (may be undefined), but if defined it must be an instance of jQuery.&lt;br /&gt;
					// If it's not, abort right away.&lt;br /&gt;
					// After this $defaultToggle is either null or a valid jQuery instance.&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				var $containers = null;&lt;br /&gt;
&lt;br /&gt;
				if ( action == 'collapse' ) {&lt;br /&gt;
&lt;br /&gt;
					// Collapse the element&lt;br /&gt;
					if ( $collapsible.is( 'table' ) &amp;amp;&amp;amp;  $collapsible.find('caption').length ) { // only table with caption&lt;br /&gt;
						// Hide all table rows of this table&lt;br /&gt;
						// Slide doens't work with tables, but fade does as of jQuery 1.1.3&lt;br /&gt;
						// http://stackoverflow.com/questions/467336#920480&lt;br /&gt;
						$containers = $collapsible.find( '&amp;gt;tbody&amp;gt;tr, &amp;gt;thead&amp;gt;tr' );&lt;br /&gt;
						if ( $defaultToggle ) {&lt;br /&gt;
							$containers.stop(true, true).fadeOut();&lt;br /&gt;
						} else {&lt;br /&gt;
							if ( instantHide ) {&lt;br /&gt;
								$containers.hide();&lt;br /&gt;
							} else {&lt;br /&gt;
								$containers.stop( true, true ).fadeOut();&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
					} else if ( !$collapsible.is( 'ul' ) &amp;amp;&amp;amp; !$collapsible.is( 'ol' )  &amp;amp;&amp;amp; !$that.is( 'table' ) ) { // &amp;lt;div&amp;gt;, &amp;lt;p&amp;gt; etc. but not ul ol and tables without caption&lt;br /&gt;
						var $collapsibleContent = $collapsible.find( '&amp;gt; .fr-collapsible-content' );&lt;br /&gt;
&lt;br /&gt;
						// If a collapsible-content is defined, collapse it&lt;br /&gt;
						if ( $collapsibleContent.length ) {&lt;br /&gt;
							if ( instantHide ) {&lt;br /&gt;
								$collapsibleContent.hide();&lt;br /&gt;
							} else {&lt;br /&gt;
								$collapsibleContent.slideUp();&lt;br /&gt;
							}&lt;br /&gt;
&lt;br /&gt;
						// Otherwise assume this is a customcollapse with a remote toggle&lt;br /&gt;
						// .. and there is no collapsible-content because the entire element should be toggled&lt;br /&gt;
						} else {&lt;br /&gt;
							if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {&lt;br /&gt;
								$collapsible.fadeOut();&lt;br /&gt;
							} else {&lt;br /&gt;
								$collapsible.slideUp();&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
				} else {&lt;br /&gt;
&lt;br /&gt;
					// Expand the element&lt;br /&gt;
					if ( $collapsible.is( 'table' ) &amp;amp;&amp;amp;  $collapsible.find('caption').length ) {&lt;br /&gt;
						$containers = $collapsible.find( '&amp;gt;tbody&amp;gt;tr, &amp;gt;thead&amp;gt;tr' );&lt;br /&gt;
						if ( $defaultToggle ) {&lt;br /&gt;
							$containers.stop(true, true).fadeIn();&lt;br /&gt;
						} else {&lt;br /&gt;
							$containers.stop(true, true).fadeIn();&lt;br /&gt;
						}&lt;br /&gt;
&lt;br /&gt;
					} else if ( !$collapsible.is( 'ul' ) &amp;amp;&amp;amp; !$collapsible.is( 'ol' )  &amp;amp;&amp;amp; !$that.is( 'table' ) ) { // &amp;lt;div&amp;gt;, &amp;lt;p&amp;gt; etc.but not ul ol and not tables without caption&lt;br /&gt;
						var $collapsibleContent = $collapsible.find( '&amp;gt; .fr-collapsible-content' );&lt;br /&gt;
&lt;br /&gt;
						// If a collapsible-content is defined, collapse it&lt;br /&gt;
						if ( $collapsibleContent.length ) {&lt;br /&gt;
							$collapsibleContent.slideDown();&lt;br /&gt;
&lt;br /&gt;
						// Otherwise assume this is a customcollapse with a remote toggle&lt;br /&gt;
						// .. and there is no collapsible-content because the entire element should be toggled&lt;br /&gt;
						} else {&lt;br /&gt;
							if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {&lt;br /&gt;
								$collapsible.fadeIn();&lt;br /&gt;
							} else {&lt;br /&gt;
								$collapsible.slideDown();&lt;br /&gt;
							}&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			// Toggles collapsible and togglelink class and updates text label&lt;br /&gt;
			toggleLinkDefault = function( that, e ) {&lt;br /&gt;
				var	$that = $(that),&lt;br /&gt;
					$collapsible = $that.closest( '.fr-collapsible.fr-made-collapsible' ).toggleClass( 'fr-collapsed' );&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				e.stopPropagation();&lt;br /&gt;
&lt;br /&gt;
				// It's expanded right now&lt;br /&gt;
				if ( !$that.hasClass( 'fr-collapsible-toggle-collapsed' ) ) {&lt;br /&gt;
					// Change link to &amp;quot;Show&amp;quot;&lt;br /&gt;
					$that.removeClass( 'fr-collapsible-toggle-expanded' ).addClass( 'fr-collapsible-toggle-collapsed' );&lt;br /&gt;
					if ( $that.find( '&amp;gt; a' ).length ) {&lt;br /&gt;
						$that.find( '&amp;gt; a' ).text( expandtext );&lt;br /&gt;
					} else {&lt;br /&gt;
						$that.text( expandtext );&lt;br /&gt;
					}&lt;br /&gt;
					// Collapse element&lt;br /&gt;
					toggleElement( $collapsible, 'collapse', $that );&lt;br /&gt;
&lt;br /&gt;
				// It's collapsed right now&lt;br /&gt;
				} else {&lt;br /&gt;
					// Change link to &amp;quot;Hide&amp;quot;&lt;br /&gt;
					$that.removeClass( 'fr-collapsible-toggle-collapsed' ).addClass( 'fr-collapsible-toggle-expanded' );&lt;br /&gt;
					if ( $that.find( '&amp;gt; a' ).length ) {&lt;br /&gt;
						$that.find( '&amp;gt; a' ).text( collapsetext );&lt;br /&gt;
					} else {&lt;br /&gt;
						$that.text( collapsetext );&lt;br /&gt;
					}&lt;br /&gt;
					// Expand element&lt;br /&gt;
					toggleElement( $collapsible, 'expand', $that );&lt;br /&gt;
				}&lt;br /&gt;
				return;&lt;br /&gt;
			},&lt;br /&gt;
			// Toggles collapsible and togglelink class&lt;br /&gt;
			toggleLinkPremade = function( $that, e ) {&lt;br /&gt;
				var	$collapsible = $that.eq(0).closest( '.fr-collapsible.fr-made-collapsible' ).toggleClass( 'fr-collapsed' );&lt;br /&gt;
				if ( $(e.target).is('a') ) {&lt;br /&gt;
					return true;&lt;br /&gt;
				}&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				e.stopPropagation();&lt;br /&gt;
&lt;br /&gt;
				// It's expanded right now&lt;br /&gt;
				if ( !$that.hasClass( 'fr-collapsible-toggle-collapsed' ) ) {&lt;br /&gt;
					// Change toggle to collapsed&lt;br /&gt;
					$that.removeClass( 'fr-collapsible-toggle-expanded' ).addClass( 'fr-collapsible-toggle-collapsed' );&lt;br /&gt;
					// Collapse element&lt;br /&gt;
					toggleElement( $collapsible, 'collapse', $that );&lt;br /&gt;
&lt;br /&gt;
				// It's collapsed right now&lt;br /&gt;
				} else {&lt;br /&gt;
					// Change toggle to expanded&lt;br /&gt;
					$that.removeClass( 'fr-collapsible-toggle-collapsed' ).addClass( 'fr-collapsible-toggle-expanded' );&lt;br /&gt;
					// Expand element&lt;br /&gt;
					toggleElement( $collapsible, 'expand', $that );&lt;br /&gt;
				}&lt;br /&gt;
				return;&lt;br /&gt;
			},&lt;br /&gt;
			// Toggles customcollapsible&lt;br /&gt;
			toggleLinkCustom = function( $that, e, $collapsible ) {&lt;br /&gt;
				// For the initial state call of customtogglers there is no event passed&lt;br /&gt;
				if (e) {&lt;br /&gt;
					e.preventDefault();&lt;br /&gt;
				e.stopPropagation();&lt;br /&gt;
				}&lt;br /&gt;
				// Get current state and toggle to the opposite&lt;br /&gt;
				var action = $collapsible.hasClass( 'fr-collapsed' ) ? 'expand' : 'collapse';&lt;br /&gt;
				$collapsible.toggleClass( 'fr-collapsed' );&lt;br /&gt;
				toggleElement( $collapsible, action, $that );&lt;br /&gt;
&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
		// Use custom text or default ?&lt;br /&gt;
		if( !collapsetext ) {&lt;br /&gt;
			//collapsetext = mw.message( 'collapsible-collapse' );&lt;br /&gt;
			collapsetext = 'masquer';&lt;br /&gt;
		}&lt;br /&gt;
		if ( !expandtext ) {&lt;br /&gt;
			//expandtext = mw.message( 'collapsible-expand' );&lt;br /&gt;
			expandtext = 'afficher';&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Create toggle link with a space around the brackets (&amp;amp;nbsp;[text]&amp;amp;nbsp;)&lt;br /&gt;
		var $toggleLink =&lt;br /&gt;
			$( '&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;' )&lt;br /&gt;
				.text( collapsetext )&lt;br /&gt;
				.wrap( '&amp;lt;span class=&amp;quot;fr-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;' )&lt;br /&gt;
				.parent()&lt;br /&gt;
				.bind( 'click.fr-collapse', function(e) {&lt;br /&gt;
					toggleLinkDefault( this, e );&lt;br /&gt;
				} );&lt;br /&gt;
&lt;br /&gt;
		// Return if it has been enabled already.&lt;br /&gt;
		if ( $that.hasClass( 'fr-made-collapsible' ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		} else {&lt;br /&gt;
			$that.addClass( 'fr-made-collapsible' );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Check if this element has a custom position for the toggle link&lt;br /&gt;
		// (ie. outside the container or deeper inside the tree)&lt;br /&gt;
		// Then: Locate the custom toggle link(s) and bind them&lt;br /&gt;
		if ( ( $that.attr( 'id' ) || '' ).indexOf( 'fr-customcollapsible-' ) === 0 ) {&lt;br /&gt;
&lt;br /&gt;
			var thatId = $that.attr( 'id' ),&lt;br /&gt;
				$customTogglers = $( '.' + thatId.replace( 'fr-customcollapsible', 'fr-customtoggle' ) );&lt;br /&gt;
&lt;br /&gt;
			// Double check that there is actually a customtoggle link&lt;br /&gt;
			if ( $customTogglers.length ) {&lt;br /&gt;
				$customTogglers.bind( 'click.fr-collapse', function( e ) {&lt;br /&gt;
					toggleLinkCustom( $(this), e, $that );&lt;br /&gt;
				} );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Initial state&lt;br /&gt;
			if ( $that.hasClass( 'fr-collapsed' ) ) {&lt;br /&gt;
				$that.removeClass( 'fr-collapsed' );&lt;br /&gt;
				toggleLinkCustom( $customTogglers, null, $that );&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		// If this is not a custom case, do the default:&lt;br /&gt;
		// Wrap the contents add the toggle link&lt;br /&gt;
		} else {&lt;br /&gt;
&lt;br /&gt;
			// Elements are treated differently&lt;br /&gt;
			if ( $that.is( 'table' )  &amp;amp;&amp;amp;  $that.find('caption').length ) { // only table with caption&lt;br /&gt;
				// The toggle-link will be in the caption&lt;br /&gt;
				var	$caption = $( 'caption', that ),&lt;br /&gt;
					$toggle = $caption.find( '&amp;gt; .fr-collapsible-toggle' );&lt;br /&gt;
&lt;br /&gt;
				// If theres no toggle link, add it to the caption&lt;br /&gt;
				if ( !$toggle.length ) {&lt;br /&gt;
					$caption.eq(-1).prepend( $toggleLink );&lt;br /&gt;
				} else {&lt;br /&gt;
					$toggleLink = $toggle.unbind( 'click.fr-collapse' ).bind( 'click.fr-collapse', function( e ) {&lt;br /&gt;
						toggleLinkPremade( $toggle, e );&lt;br /&gt;
					} );&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
			} else if ( !$that.is( 'ul' ) &amp;amp;&amp;amp; !$that.is( 'ol' )  &amp;amp;&amp;amp; !$that.is( 'table' ) ) { // &amp;lt;div&amp;gt;, &amp;lt;p&amp;gt; etc.but not ol ul and not tables without caption&lt;br /&gt;
&lt;br /&gt;
				// The toggle-link will be the first child of the element&lt;br /&gt;
				var $toggle = $that.find( '&amp;gt; .fr-collapsible-toggle' );&lt;br /&gt;
&lt;br /&gt;
				// If a direct child .content-wrapper does not exists, create it&lt;br /&gt;
				if ( !$that.find( '&amp;gt; .fr-collapsible-content' ).length ) {&lt;br /&gt;
					$that.wrapInner( '&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;' );&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// If theres no toggle link, add it&lt;br /&gt;
				if ( !$toggle.length ) {&lt;br /&gt;
					$that.prepend( $toggleLink );&lt;br /&gt;
				} else {&lt;br /&gt;
					$toggleLink = $toggle.unbind( 'click.fr-collapse' ).bind( 'click.fr-collapse', function( e ) {&lt;br /&gt;
						toggleLinkPremade( $toggle, e );&lt;br /&gt;
					} );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Initial state (only for those that are not custom)&lt;br /&gt;
		if ( $that.hasClass( 'fr-collapsed' ) &amp;amp;&amp;amp; ( $that.attr( 'id' ) || '').indexOf( 'fr-customcollapsible-' ) !== 0 ) {&lt;br /&gt;
			$that.removeClass( 'fr-collapsed' );&lt;br /&gt;
			// The collapsible element could have multiple togglers&lt;br /&gt;
			// To toggle the initial state only click one of them (ie. the first one, eq(0) )&lt;br /&gt;
			// Else it would go like: hide,show,hide,show for each toggle link.&lt;br /&gt;
			toggleElement( $that, 'collapse', $toggleLink.eq(0), /* instantHide = */ true );&lt;br /&gt;
			$toggleLink.eq(0).click();&lt;br /&gt;
		}&lt;br /&gt;
	} );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var newCollapsibleKeyboard = function($) {&lt;br /&gt;
	$('.fr-collapsible-toggle, .fr-collapsible-toggle-keyboard').attr('tabindex',0).keypress(function(event){&lt;br /&gt;
		if ( event.which == 13 ) {&lt;br /&gt;
			$(this).click()&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var newCollapsibleGroup = function($) {&lt;br /&gt;
	$('.fr-collapsible-group').each(function(){&lt;br /&gt;
		var $that = $(this);&lt;br /&gt;
		var text = 'Tout ouvrir';&lt;br /&gt;
		var $tooglelink = $('&amp;lt;a class=&amp;quot;fr-collapsible-toggle fr-collapsible-toggle-collapsed fr-collapsible-group-toogle-all&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;Tout ouvrir&amp;lt;/a&amp;gt;');&lt;br /&gt;
		$that.find('.fr-collapsible-group-toogle:first').append($tooglelink).click(function(event){&lt;br /&gt;
			if(text == 'Tout ouvrir') {&lt;br /&gt;
				text = 'Tout fermer';&lt;br /&gt;
				$that.find('.fr-collapsible-toggle-collapsed:not(&amp;quot;.fr-collapsible-group-toogle-all&amp;quot;)').click();&lt;br /&gt;
			} else {&lt;br /&gt;
				text = 'Tout ouvrir';&lt;br /&gt;
				$that.find('.fr-collapsible-toggle-expanded:not(&amp;quot;.fr-collapsible-group-toogle-all&amp;quot;)').click();&lt;br /&gt;
			}&lt;br /&gt;
			$tooglelink.text(text);&lt;br /&gt;
			return false;&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$(document).ready(newCollapsible);&lt;br /&gt;
$(document).ready(newCollapsibleKeyboard);&lt;br /&gt;
$(document).ready(newCollapsibleGroup);&lt;/div&gt;</summary>
		<author><name>Dieudo</name></author>
		
	</entry>
</feed>