Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
/*jshint sub:true, scripturl:true, maxerr:1000*/
/************************************************************/
/* Fonctions générales (pallient les limites de javascript) */
/************************************************************/

 
 
/**
 * Traitement des classes 
 * Javascript ne fournit actuellement que .className qui est extrêmement limité
 * Utiliser http://api.jquery.com/category/manipulation/class-attribute/
 */
 
function isClass(element, classe) {
    return hasClass(element, classe);
}
 
function whichClass(element, classes) {
    var s=" "+element.className+" ";
    for(var i=0;i<classes.length;i++)
        if (s.indexOf(" "+classes[i]+" ")>=0) return i;
    return -1;
}
 
function hasClass(node, className) {
  if (node.className == className) {
    return true;
  }
  var reg = new RegExp('(^| )'+ className +'($| )');
  if (reg.test(node.className)) {
    return true;
  }
  return false;
}
 
function addClass(node, className) {
    if (hasClass(node, className)) {
        return false;
    }
    var cache = node.className;
    if (cache) {
        node.className = cache + ' ' + className;
    } else {
        node.className = className;
    }
    return true;
}
 
function removeClass(node, className) {
  if (!hasClass(node, className)) {
    return false;
  }
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
  return true;
}
 
function eregReplace(search, replace, subject) {
    return subject.replace(new RegExp(search,'g'), replace);
}

/*
 * Typographie : même lorsque l'on travaille en mode création de page
 * il n'est pas sur de changer aveuglément tout le texte, d'où le
 * le split du texte en fragment où les regexps sont appliqués
 */
function common_typographie_fragment(text, typo_def) {
    var lng = typo_def.length;
    if (lng % 2 !== 0)
        return text;  /* FIXME, il faut lever une exception ici ? */
    for (var i = 0; i < lng; i += 2) {
        search = new RegExp(typo_def[i + 0], "g");
        text = text.replace(search, typo_def[i + 1]);
    }
    return text;
}

function common_typographie(text, typo_def) {
    var new_text = '';
    var last_match = 0;
    // Split the text in part which are safe to transform, e.g we don't want
    // to apply common_typographie_fragment on a <math>.*</math> or a &nbsp; etc.
    var splitter = new RegExp("<math>.*</math>|<[a-zA-z0-9 =\"']>|[</[a-zA-z0-9 =\"']+>|style=\".*\"|&nbsp;|&mdash;|<!--.*-->|\n:[:]*|\n;[;]*|[[][[].*]]", "gm");
    while ((result = splitter.exec(text)) != null) {
        new_text += common_typographie_fragment(text.slice(last_match, splitter.lastIndex - result[0].length), typo_def);
        new_text += result;
        last_match = splitter.lastIndex;
    }
    new_text += common_typographie_fragment(text.slice(last_match), typo_def);
    return new_text;
}

function common_typographie_textbox(pagename_filter, typo_def) {
    if (mw.config.get('wgNamespaceNumber') != 104)
        return;

    if (!$('.mw-newarticletext').length && !$('.mw-newarticletextanon').length) {
        return;
    }

    var wpTextbox1 = document.getElementById("wpTextbox1");
    if (!wpTextbox1)
        return;

    typo_def = [
        "([^'])'([^'])", "$1’$2",
        "([^ ])([;:?!])", "$1 $2",
        "\n\n- ", "\n\n— "
    ];
 
    wpTextbox1.value = common_typographie(wpTextbox1.value, typo_def);
}

$(common_typographie_textbox);


/* traduction des messages javascript*/
self.ws_messages = { 
	'optlist':'Options d’affichage',
	'hide_page_numbers':'Liens vers les pages',
	'show_page_numbers':'Liens vers les pages',
	'layout':'Maquette',

	'author':'Auteur',
	'translator':'Traducteur', 
	'editor':'Editeur_scientifique', 
	'publisher':'Editeur', 
	'place':'Lieu', 
	'volume':'Volume', 
	'school':'School', /*ne pas traduire*/
	'book':'Livre', 
	'collection':'Recueil', 
	'journal':'Journal ou revue', 
	'phdthesis':'Thèse, rapport', 
	'dictionary':'Dictionnaire, encyclopédie, ouvrage de référence', 


	'progress':'Avancement', 
	'progress_T':'Terminé', 
	'progress_V':'À valider', 
	'progress_C':'À corriger', 
	'progress_MS':'Texte prêt à être découpé (match & split)', 
	'progress_OCR':'Ajouter une couche texte OCR', 
	'progress_X':'Source incomplète (extrait) ou compilation de sources différentes', 
	'progress_L':'Fichier défectueux (lacunes, pages dans le désordre, etc)',
	'progress_D':'Doublon, un autre fichier existe sur lequel il est préférable de travailler',

	'matching':'appariement en cours',
	'splitting':'découpage en cours',

	'corr_list':"Liste des corrections apportées à cette page",
	'corr_link':"Coquilles",
	'corr_one':"Une coquille </a> a été corrigée.",
	'corr_many':" coquilles</a> ont été corrigées.",
	'corr_close':'Fermer.',

	'iwtrans':'Son texte vient de', 
	'iwtrans2':'Son texte vient d’autres sous-domaines de Wikisource.'
};

/* attributs de style dynamiques */
self.ws_layouts = {
 'Maquette 1':{'#text-wrap':"margin-left:3em;margin-right:3em;", 
      '#text-container':"position:relative;width:36em;margin:0px auto;" , 
      '#text':"text-align:justify;", 
      '#box-right':"position:absolute; right:-20em;top:0em;",
      '#box-toc':"position:absolute; right:-23em;top:0em; width:22em;",
      '.sidenote-right':"position:absolute; left:37em;width:15em;text-indent:0em;text-align:left;",
      '.sidenote-left':"position:absolute; right:37em;width:15em;text-indent:0em;text-align:right;",
      '.editsection':"display:none",
      '.headerlabel':"display:none",
      '.headertemplate-author':"font-size:100%",
      '.headertemplate-title':"font-size:120%;",
      '.headertemplate-reference':"font-size:90%",
      '#headertemplate':"" },
 'Maquette 2':{'#text-wrap':"margin-left:3em", 
      '#text-container':"" , 
      '#text':"text-align:justify;width:auto;", 
      '#box-right':"float:right;",
      '#box-toc':"margin:auto;width:100%;",
      '.sidenote-right':"float:right;margin:0.5em;padding:3px;border:solid 1px gray;max-width:9em;text-indent:0em;text-align:left;",
      '.sidenote-left':"float:left;margin:0.5em;padding:3px;border:solid 1px gray;max-width:9em;text-indent:0em;text-align:left;",
      '.editsection':"display:none",
      '.headerlabel':"display:none",
      '.headertemplate-author':"font-size:100%",
      '.headertemplate-title':"font-size:120%;",
      '.headertemplate-reference':"font-size:90%",
      '#headertemplate':"" },
 'Maquette 3':{'#text-wrap':"margin-left:3em",
      '#text-container':"position:relative; min-width:60em; float:left; width:100%; margin-right:-23em;" , 
      '#text':"text-align:justify;margin-right:23em; text-indent:0em; padding-left:0px; padding-right:0px;width:auto;position:relative;",
      '#box-right':"float:right;",
      '#box-toc':"margin:auto;width:100%;",
      '.sidenote-right':"position:absolute; right:-16em; width:15em; background-color:#eeeeee;text-indent:0em;text-align:left;line-height:normal;",
      '.sidenote-left': "position:absolute; right:-16em; width:15em; background-color:#eeeeee;text-indent:0em;text-align:left;line-height:normal;",
      '.editsection':"display:none",
      '.headerlabel':"display:inline",
      '.headertemplate-author':"font-size:100%;",
      '.headertemplate-title':"font-size:100%;",
      '.headertemplate-reference':"font-size:100%;",
      '#headertemplate':"position:absolute; top:0em; right:-23em; width:21em;float:right; text-align:left;" }
};

function ws_msg(name) {
   var m = self.ws_messages[name];
   if(m) return m; else return name;
}

var old_wgserver = '//wikisource.org';
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript');
//Maintenant fourni par l'extension Wikisource mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:OCR.js&action=raw&ctype=text/javascript');
//TODO cassé par le nouveau système de Zoom mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Hocr.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:PageNumbers.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Corrections.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:DisplayFooter.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:InterWikiTransclusion.js&action=raw&ctype=text/javascript'); 
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Dictionary.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:RegexpButton.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:DoubleWiki.js&action=raw&ctype=text/javascript');

/* Réécriture des titres
 *
 * Fonction utilisée par Modèle:TitreModifié et Modèle:Statut
 * 
 */
function rewritePageH1() {
      var realTitle = document.getElementById('RealTitle');
      var h1 = document.getElementsByTagName('h1')[0];
      if (realTitle && h1) {
        var titleText = realTitle.innerHTML;
        if (titleText == '') h1.style.display = 'none';
        else h1.innerHTML = titleText;
        realTitleBanner.style.display = 'none';
      }
}

$(rewritePageH1);


/*
Interwikiextra
Auteur:ThomasV et Tpt
*/
function menuExtra() {
    $(".interwiki-info").each(function(i, info) {
        var langLink = $("#p-lang .interwiki-" + info.id + " a");
        if(info.title == "(vo)") {
            langLink.after(' (<abbr title="Version originale">vo</abbr>)');
        } else {
            langLink.after(" " + info.title);
        }
    });
 
    //Autre versions
    if($(".AutreVersion").length) {
      var data = {
        sections: {
          version: {
            expanded: true,
            label: 'Autres versions',
            links: {}
          }
        }
      };
      $(".AutreVersion").each(function(i, info) {
        var p = info.title.indexOf("|");
        data.sections.version.links['interwiki-' + i] = {
          label: info.title.substr(p+1,this.title.length-1),
          href: '/wiki/' + encodeURIComponent( info.title.substr(0,p) )
        };
      });
      mw.panel(data);
    }

    //interprojets
    var interprojetsAAjouter = {};

    // extraction
    var interprojectNode = $( "#interProject" );
    if( interprojectNode.length !== 0 ) {
        interprojectNode.find( 'span' ).each( function( i, info ) {
            //on cherche l'id du site
            var idParts = $( this ).attr( 'id' ).split( '-' );
            if( idParts.length !== 2)
                return;
            var id = idParts[1];

            var link = $( this ).find( 'a' );
            interprojetsAAjouter['wb-otherproject-' + id + '-custom'] = {
                'label': link.text(),
                'href': link.attr('href'),
                'group': id,
                'class': 'wb-otherproject-link wb-otherproject-' + id
            };
        } );
    }

	//Wikidata item
	if( mw.config.get( 'wgWikibaseItemId' ) ) {
		interprojetsAAjouter['wb-otherproject-wikidata-item-custom'] = {
            'label': 'Élément Wikidata',
            'href': '//wikidata.org/wiki/' + mw.config.get( 'wgWikibaseItemId' ),
            'group': 'wikidata-item',
            'class': 'wb-otherproject-link wb-otherproject-wikidata'
        };
	}

    //ajout
    if( !$.isEmptyObject( interprojetsAAjouter ) ) {
        var autresProjectsNode = $( '#p-wikibase-otherprojects' );
        if( autresProjectsNode.length !== 0 ) {
            //on supprime les doublons
            $.each( interprojetsAAjouter, function( id, parameters ) {
                autresProjectsNode.find( '.wb-otherproject-' + parameters.group ).remove();
            } );
            mw.panel( {
                section: 'wikibase-otherprojects',
                links: interprojetsAAjouter
            } );
        } else {
            mw.panel( {
                sections: {
                    'wikibase-otherprojects': {
                        label: 'Autres projets',
                        links: interprojetsAAjouter
                    }
                }
            } );
        }
    }
}
mw.loader.using(mw.config.get('wgServer') + '/w/index.php?title=MediaWiki:MediaWiki.panel.js&action=raw&ctype=text/javascript', menuExtra);


/*
Compatibilité du menu Option d’affichage avec Vector
Auteur : Tpt
*/
function VectorCompatibility() {
    if(document.getElementById("p-displayOptions")) {
        document.getElementById("p-displayOptions").childNodes[1].style.display = "block";
    }
}
$(VectorCompatibility);


// Remove "Auteur:" prefix in category, see https://fr.wikisource.org/wiki/Cat%C3%A9gorie:Philosophes
$(function () {
   if (mw.config.get('wgNamespaceNumber') == 14) {
       $("li a[href^='/wiki/Auteur:']").each(function () {
           $(this).text($(this).text().substr("Auteur:".length));
       });
   }
});

/** 
 * Boîtes déroulantes
 *
 * Pour [[Modèle:Méta palette de navigation]]
 */
var autoCollapse = 2;
var collapseCaption = '[Enrouler]';
var expandCaption = '[Dérouler]';


function collapseTable( tableIndex ) {
  var Button = document.getElementById( "collapseButton" + tableIndex );
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
  if ( !Table || !Button ) return false;
 
  var Rows = Table.getElementsByTagName( "tr" ); 
 
  if ( Button.firstChild.data == collapseCaption ) {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = "none";
    }
    Button.firstChild.data = expandCaption;
  } else {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = Rows[0].style.display;
    }
    Button.firstChild.data = collapseCaption;
  }
}
 
function createCollapseButtons() {
  var tableIndex = 0;
  var NavigationBoxes = {};
  var Tables = document.getElementsByTagName( "table" );
 
  for ( var i = 0; i < Tables.length; i++ ) {
    if ( hasClass( Tables[i], "collapsible" ) ) {
      NavigationBoxes[ tableIndex ] = Tables[i];
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
      var Button     = document.createElement( "span" );
      var ButtonLink = document.createElement( "a" );
      var ButtonText = document.createTextNode( collapseCaption );
 
      Button.style.styleFloat = "right";
      Button.style.cssFloat = "right";
      Button.style.fontWeight = "normal";
      Button.style.textAlign = "right";
      Button.style.width = "6em";
 
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
      ButtonLink.appendChild( ButtonText );
 
      Button.appendChild( ButtonLink );
 
      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
      /* only add button and increment count if there is a header row to work with */
      if (Header) {
        Header.insertBefore( Button, Header.childNodes[0] );
        tableIndex++;
      }
    }
  }
 
  for (var i = 0; i < tableIndex; i++) {
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
  }
}
$(createCollapseButtons);
 
/**
 * Pour [[Modèle:Boîte déroulante]]
 * TODO: migrate to https://www.mediawiki.org/wiki/Manual:Collapsible_elements
 */
var NavigationBarShowDefault = 0;
 
function toggleNavigationBar(indexNavigationBar) {
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
  if (!NavFrame || !NavToggle) return;
 
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
  // exemple : title="[déroulade]/[enroulade]"
  var caption = [expandCaption, collapseCaption];
  if (NavFrame.title && NavFrame.title.length > 0) {
    caption = NavFrame.title.split("/");
    if (caption.length < 2) caption.push(collapseCaption);
  }
 
  // if shown now
  if (NavToggle.firstChild.data == caption[1]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
    }
 
  // if hidden now
  } else if (NavToggle.firstChild.data == caption[0]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
    }
  }
}
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton() {
  var indexNavigationBar = 0;
  var NavFrame;
  // iterate over all < div >-elements
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
    // if found a navigation bar
    if (hasClass(NavFrame, "NavFrame")) {
      indexNavigationBar++;
      var NavToggle = document.createElement("a");
      NavToggle.className = 'NavToggle';
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
      // surcharge des libellés dérouler/enrouler grâce a l'attribut title
      var caption = collapseCaption;
      if (NavFrame.title && NavFrame.title.indexOf("/") > 0) {
         caption = NavFrame.title.split("/")[1];
      }
 
      var NavToggleText = document.createTextNode(caption);
      NavToggle.appendChild(NavToggleText);
 
      // add NavToggle-Button as first div-element 
      // in <div class="NavFrame">
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    }
  }
  // if more Navigation Bars found than Default: hide all
  if (NavigationBarShowDefault < indexNavigationBar) {
    for( var i=1; i<=indexNavigationBar; i++ ) {
      toggleNavigationBar(i);
    }
  }
}
$(createNavigationBarToggleButton);

/**
 * Menu de navigation, pour Modèle:Menu de navigation - user:Dodoïste
 */

$(function () { 
    // On cache les sous-menus 
    // sauf celui qui porte la classe "open_at_load" : 
    $(".navigation ul.subMenu:not('.open_at_load')").hide(); 
    // On sélectionne tous les items de liste portant la classe "toggleSubMenu" 
 
    // et on remplace l'élément span qu'ils contiennent par un lien : 
    $(".navigation li.toggleSubMenu span").each( function () { 
        // On stocke le contenu du span : 
        var TexteSpan = $(this).text(); 
        $(this).replaceWith('<a href="" class="subMenuA" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ; 
    } ) ; 
 
    // On modifie l'évènement "click" sur les liens dans les items de liste 
    // qui portent la classe "toggleSubMenu" : 
    $(".navigation li.toggleSubMenu > a").click( function () { 
        // Si le sous-menu était déjà ouvert, on le referme : 
        if ($(this).next("ul.subMenu:visible").length !== 0) { 
            $(this).next("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open"); } ); 
        } 
        // Si le sous-menu est caché, on ferme les autres et on l'affiche : 
        else { 
            $(".navigation ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open"); }); 
            $(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("open"); } ); 
        } 
        // On empêche le navigateur de suivre le lien : 
        return false; 
    }); 
 
} );


// Cache le lien "Ajouter un sujet" dans les pages contenant le marqueur idoine,
// un <span id="suppression_lien_ajouter_un_sujet"></span> suffit.
$(function() {
    if ($('#suppression_lien_ajouter_un_sujet').length) {
        $('#ca-addsection').css('display', 'none');
        // Pas de raison de spliter sur ce type de page.
        $('#ca-split').css('display', 'none');
    }
});

/* Modèle:Titre sous-page */
$(function () {
    if ($('#titre-sous-page-seul').length) {
        var $titre =  $('#firstHeading');
        $titre.text($titre.text().split('/').slice(-1)[0]);
    }
});

// RÉSULTATS DEPUIS WIKIDATA
// [[File:Wdsearch_script_screenshot.png]]
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ||  ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgCanonicalSpecialPageName' ) === false ) ) {
        mw.loader.load("//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript");
}
//--[[m:User:Nemo_bis|Nemo]] 13 décembre 2013 à 18:52 (UTC) ([[w:en:MediaWiki talk:Wdsearch.js|comments, translations and last instructions]])
//<!-- EdwardsBot 0661 -->


/*
 * [[Modèle:Index]]
 */
$(function() {
	$( '#pr_index' ).each( function () {
		$( '#ca-nstab-main' ).after(
			$( '<li>' ).attr( 'id', 'ca-index' ).append( $( this ) )
		);
	} );
} );


/* Bouton d'export blanc pour les non "bon pour export" */
if(mw.config.get('wgNamespaceNumber') === 0 && $.inArray("Bon pour export", mw.config.get('wgCategories')) === -1) {
	$(function () {
		 mw.loader.using(['ext.wikisource.download'], function () {
		    $('.ext-wikisource-download-button').removeClass('oo-ui-flaggedElement-progressive').removeClass('oo-ui-flaggedElement-primary');
		 });
	});
}

/* Add nocache to download links in the sidebar for logged in users */
if(mw.config.get('wgNamespaceNumber') === 0 && mw.config.get('wgUserId')) {
	$(function () {
		 $("#p-coll-print_export a[href*='ws-export.wmcloud.org/'").attr('href', function() {
		 	return $(this).attr('href') + '&nocache=1';
		 });
	});
}