« MediaWiki:Common.js » : différence entre les versions

La bibliothèque libre.
Contenu supprimé Contenu ajouté
Phe (discussion | contributions)
mAucun résumé des modifications
suppression des liens présents en doublon
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 390 : Ligne 390 :
}
}


// interprojet
//interprojets
var interprojetsAAjouter = {};
if($j("#interProject").size() != 0) {

var data = {
sections: {
// extraction
interProject: {
var interprojectNode = $( "#interProject" );
if( interprojectNode.size() !== 0 ) {
expanded: true,
interprojectNode.find( 'span' ).each( function( i, info ) {
label: 'Compléments',
links: {}
//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
};
} );
}

//ajout
if( !$.isEmptyObject( interprojetsAAjouter ) ) {
var autresProjectsNode = $( '#p-wikibase-otherprojects' );
if( autresProjectsNode.size() !== 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
}
}
} );
}
}
};
$j("#interProject a").each(function(i, info) {
var p = info.title.indexOf("|");
data.sections.interProject.links['complements-' + i] = {
label: $(this).text(),
href: $(this).attr('href')
};
});
mw.panel(data);
}
}
}
}

Version du 8 avril 2014 à 07:16

/************************************************************/
/* Fonctions générales (pallient les limites de javascript) */
/************************************************************/
 
 
/**
 * Traitement des classes 
 * Javascript ne fournit actuellement que .className qui est extrêmement limité
 * surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
 */
 
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) {
    var haystack = node.className;
    if(!haystack) return false;
    if (className === haystack) {
        return true;
    }
    return (" " + haystack + " ").indexOf(" " + className + " ") > -1;
}
 
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);
}

/* Crée l'objet $j comme alias à jQuery et ws comme super-objet*/
if(typeof $j == 'undefined') {
    $j = jQuery;
}
if(typeof ws == 'undefined') {
    ws = {};
}

//Script spécifique pour Internet Explorer
if($.client.profile().name == 'msie') {
    mw.loader.load('//fr.wikisource.org/w/index.php?title=MediaWiki:Internet-explorer.js&action=raw&ctype=text/javascript');
}

//import du widget "citer le livre"
if( $('div#citeBox').length == 0) {
    mw.loader.load('//fr.wikisource.org/w/index.php?title=MediaWiki:Wikisource.citeBox.js&action=raw&ctype=text/javascript');
}

/*********************
Indicateurs de qualité
Auteur: ThomasV
*********************/

var q0  = "//upload.wikimedia.org/wikipedia/commons/8/8f/00%25.png";
var q25 = "//upload.wikimedia.org/wikipedia/commons/5/5b/25%25.png";
var q50 = "//upload.wikimedia.org/wikipedia/commons/3/3a/50%25.png";
var q75 = "//upload.wikimedia.org/wikipedia/commons/c/cd/75%25.png";
var q100 = "//upload.wikimedia.org/wikipedia/commons/6/64/100%25.png";
var qvalid = "//upload.wikimedia.org/wikisource/fr/2/2b/Valid%C3%A9.png";

function textQuality() {
        if ($.inArray(mw.config.get('skin'), [ 'monobook', 'vector' ]) == -1)
                return;

	if ($.inArray(mw.config.get('wgAction'), [ 'view', 'submit', 'purge' ]) == -1)
                return;

	if (mw.config.get('wgNamespaceNumber'))
                return;

	var a = document.getElementById("ca-nstab-main");
        if (!a)
                return;

	var pr_q = document.getElementById("pr_index")
	if( pr_q ) {
                /* Modèle:Index présent. */
		href = pr_q.firstChild;
                if (!href)
                    return;
		pr_q.removeChild(href);
		href.firstChild.innerHTML = "Source";
		href.setAttribute("title", "Source de ce texte (fac-simile)");
		var new_li = document.createElement("li");
		new_li.appendChild(href); 
		a.parentNode.insertBefore(new_li, a.nextSibling);
	} else {
                /* Porter depuis monobook.js, est-ce encore utile et qu'est-ce ? */
		if( mw.config.get('skin') == 'monobook' && !document.getElementById("pr_page")) {
			var c = document.getElementById("contentSub");
                        /* FIXME: très très mauvais */
			c.innerHTML = c.innerHTML + "<span></span>";
		}

		var q = document.getElementById("textquality")
		if (q) {
			var new_img = document.createElement("img");
			var t = q.className.split(' ')[0];
			switch (t) {
				case '_200':
					new_img.setAttribute("src", qvalid);
					break;
				case '_25':
					new_img.setAttribute("src", q25);
					break;
				case '_50':
					new_img.setAttribute("src", q50);
					break;
				case '_75':
					new_img.setAttribute("src", q75);
					break;
				case '_100':
					new_img.setAttribute("src", q100);
					break;
			}
			new_img.setAttribute("title", "état d'avancement: "+t.substring(1,t.length)+'%');
                        if (mw.config.get('skin') == 'vector')
        			a.firstChild.firstChild.appendChild(new_img);
                        else /* monobook */
        			a.firstChild.appendChild(new_img);
		}
	}
}

$(document).ready(function() { textQuality(); } );

/* Bouton OCR -- ThomasV : OCR ne fonctionannt plus sur le Toolserver 
function add_msg(){
	if((!wgCurRevisionId) && self.proofreadPageIsEdit && self.proofreadPageViewURL) {
		var msg  = document.getElementById("msgNewarticletext"); 
		if(msg) msg.innerHTML = "<div style=\"border:1px solid #CCC; padding:0.5em;\">Vous avez suivi un lien vers une page en mode fac-similé, pour laquelle le texte n'est pas encore disponible. Vous pouvez compléter cette page en entrant le texte dans la boîte ci-dessous. Vous pouvez demander une reconnaissance automatique de caractères, en utilisant le service d'OCR de Wikisource.</div>";
	}
}
addOnloadHook(add_msg); */


/*
 * 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 (self.proofreadpage_quality!=1 ) {
        return;
    }

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

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

addOnloadHook(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.'
}

self.ws_messages['progress_select'] = 
    "<option value='' selected=true></option>" + 
    "<option value='T'>"  + self.ws_messages['progress_T']   + "</option>" +
    "<option value='V'>"  + self.ws_messages['progress_V']   + "</option>" +
    "<option value='C'>"  + self.ws_messages['progress_C']   + "</option>" +
    "<option value='MS'>" + self.ws_messages['progress_MS']  + "</option>" +
    "<option value='OCR'>"+ self.ws_messages['progress_OCR'] + "</option>" +
    "<option value='X'>"  + self.ws_messages['progress_X']   + "</option>" +
    "<option value='L'>"  + self.ws_messages['progress_L']   + "</option>" +
    "<option value='D'>"  + self.ws_messages['progress_D']   + "</option>";

/* attributs de style dynamiques */
self.ws_layouts = {
 'Maquette 1':{'text-wrap':"position:relative;margin-left:3em;margin-right:3em;", 
      '#text-container':"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;" }
}

/* test */
self.proofreadpage_add_container=true;

var old_wgserver = '//wikisource.org';
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript');

mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:OCR.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:Modernisation.js&action=raw&ctype=text/javascript');
/*mw.loader.load('//pt.wikisource.org/w/index.php?title=Usuário:Heldergeovane/Scripts/Modernisation.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:IndexForm.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');

mw.loader.load(mw.config.get('wgServer') + '/w/index.php?title=MediaWiki:MediaWiki.panel.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );


/* 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';
      }
}

addOnloadHook(rewritePageH1);


/*
Interwikiextra
Auteur:ThomasV et Tpt
*/
function menuExtra() {
    $j(".interwiki-info").each(function(i, info) {
        var langLink = $j("#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($j(".AutreVersion").size() != 0) {
      var data = {
        sections: {
          version: {
            expanded: true,
            label: 'Autres versions',
            links: {}
          }
        }
      };
      $j(".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.size() !== 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
            };
        } );
    }

    //ajout
    if( !$.isEmptyObject( interprojetsAAjouter ) ) {
        var autresProjectsNode = $( '#p-wikibase-otherprojects' );
        if( autresProjectsNode.size() !== 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
                    }
                }
            } );
        }
    }
}
addOnloadHook(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";
    }
}
addOnloadHook(VectorCompatibility);


/*******************************************************************
 * affichage des liens vers les pages d'auteur dans les catégories *
 *******************************************************************/

function authors_cat(){
   if(mw.config.get('wgNamespaceNumber')==14) {
      var list = document.getElementsByTagName('li')
      for(var i in list){
        var item = list[i];
        if(item.firstChild && item.firstChild.innerHTML){
           var s = item.firstChild.innerHTML;
           if(s.substr(0,7)=="Auteur:") item.firstChild.innerHTML = s.substr(7);
        }
      }; 
   }
}
addOnloadHook(authors_cat);


function epubExportLink() {
   if ($.inArray("Bon pour export", mw.config.get('wgCategories')) >= 0 ) {
      mw.util.addPortletLink('p-coll-print_export', 'http://wsexport.wmflabs.org/tool/book.php?lang=fr&format=epub&page=' + mw.config.get('wgPageName'), 'Télécharger en ePub', 'n-epubExport', 'Télécharger le livre au format ePub'); 
   }
}
addOnloadHook(epubExportLink);


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


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 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 = new Object();
  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 );
  }
}
addOnloadHook(createCollapseButtons);
 
/**
 * Pour [[Modèle:Boîte déroulante]] 
 */
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);
    }
  }
}
addOnloadHook(createNavigationBarToggleButton);

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

$j(document).ready( function () { 
    // On cache les sous-menus 
    // sauf celui qui porte la classe "open_at_load" : 
    $j(".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 : 
    $j(".navigation li.toggleSubMenu span").each( function () { 
        // On stocke le contenu du span : 
        var TexteSpan = $j(this).text(); 
        $j(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" : 
    $j(".navigation li.toggleSubMenu > a").click( function () { 
        // Si le sous-menu était déjà ouvert, on le referme : 
        if ($j(this).next("ul.subMenu:visible").length != 0) { 
            $j(this).next("ul.subMenu").slideUp("normal", function () { $j(this).parent().removeClass("open") } ); 
        } 
        // Si le sous-menu est caché, on ferme les autres et on l'affiche : 
        else { 
            $j(".navigation ul.subMenu").slideUp("normal", function () { $j(this).parent().removeClass("open") }); 
            $j(this).next("ul.subMenu").slideDown("normal", function () { $j(this).parent().addClass("open") } ); 
        } 
        // On empêche le navigateur de suivre le lien : 
        return false; 
    }); 
 
} ) ;


/**********************
*** add menu on edit page /for selecting subsets of special characters
*** by [[user:Pathoschild]]
***   - note: must match MediaWiki:Edittools
**********************/
function addCharSubsetMenu() {
	var specialchars = document.getElementById('specialchars');

	if (specialchars) {
		var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
		menu += "<option>Sélectionner</option>";
		menu += "<option>Ligatures et symboles</option>";
		menu += "<option>Accents</option>";
		menu += "<option>Tildes</option>";
		menu += "<option>Cédilles</option>";
		menu += "<option>Trémas</option>";
		menu += "<option>Circonflexes</option>";
		menu += "<option>Longues</option>";
		menu += "<option>Autres diacritiques</option>";
		menu += "<option>Grec</option>";
		menu += "<option>Hébreu</option>";
		menu += "<option>Cyrillique</option>";
                menu += "<option>IPA</option>";
		menu += "</select>";
		specialchars.innerHTML = menu + specialchars.innerHTML.replace(/_newline_/gm, "\n");

		/* default subset - try to use a cookie some day */
		chooseCharSubset(0);
	}
}

/* select subsection of special characters */
function chooseCharSubset(s) {
	var l = document.getElementById('specialchars').getElementsByTagName('p');
	for (var i = 0; i < l.length ; i++) {
		l[i].style.display = i == s ? 'inline' : 'none';
		l[i].style.visibility = i == s ? 'visible' : 'hidden';
	}
}

addOnloadHook(addCharSubsetMenu);

// Cache le lien "Ajouter un sujet" dans les pages contenant le marqueur idoine,
// un <span id="suppression_lien_ajouter_un_sujet"></span> suffit.
addOnloadHook(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');
    }
});

/* Fonction dans l'extension, fichier proofread.js, adapté pour que lorsque
 * un utilisateur clique q3 alors que q3 est déjà le niveau, le nom de l'utilisateur
 * qui a marqué la page q3 ne soit pas changé, idem pour q4.
 */
/* -2 n'est pas un niveau de qualité valide. */
document.initial_proofreadpage_quality = -2;
document.initial_proofreadpage_username = "";
 
/* Quality buttons */
self.pr_add_quality = function( form, value ) {
	if (document.initial_proofreadpage_quality == -2) {
		document.initial_proofreadpage_quality = self.proofreadpage_quality;
                document.initial_proofreadpage_username = mw.config.get('wgUserName');
        }
	if (document.initial_proofreadpage_quality < 3 || value != document.initial_proofreadpage_quality)
		self.proofreadpage_username = proofreadPageUserName;
        else
                self.proofreadpage_username = document.initial_proofreadpage_username;
	self.proofreadpage_quality = value;
	var text = '';
	switch( value ) {
		case 0:
			text = mediaWiki.msg( 'proofreadpage_quality0_category' );
			break;
		case 1:
			text = mediaWiki.msg( 'proofreadpage_quality1_category' );
			break;
		case 2:
			text = mediaWiki.msg( 'proofreadpage_quality2_category' );
			break;
		case 3:
			text = mediaWiki.msg( 'proofreadpage_quality3_category' );
			break;
		case 4:
			text = mediaWiki.msg( 'proofreadpage_quality4_category' );
			break;
	}
	form.elements['wpSummary'].value = '/* ' + text + ' */ ';
	form.elements['wpProofreader'].value = self.proofreadpage_username;
};

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

function fixup_bug_26028() {
    /* https://bugzilla.wikimedia.org/show_bug.cgi?id=26028 commentaires 26 et 27 */
    $(document).ready(function () {
        $textarea = $('textarea[name="wpFooterTextbox"]');
        if ($textarea.size()) {
            $textarea.text($textarea.text().replace(/^(<references\/>)$/, '\n$1'));
            if ($textarea.text().replace(/^[ \n]*/g, '') == '')
                $textarea.text('\n<references\/>');
        }
    });
}

if (mw.config.get("wgNamespaceNumber") == 104 && $.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
    mw.loader.using('ext.proofreadpage.page', function () {
        // mimic code in the extension, there is a conditionnal deps on ext.wikiEditor.toolbar.
        if (mw.user.options.get('usebetatoolbar') && jQuery.inArray('ext.wikiEditor.toolbar', mw.loader.getModuleNames()) > -1) {
            mw.loader.using('ext.wikiEditor.toolbar', function() {
               fixup_bug_26028();
            });
        } else {
             fixup_bug_26028();
        }
    });
}

/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
    Fonctionnement du [[Modèle:Cadre à onglets]]
    Modèle implanté par User:Peleguer de http://ca.wikipedia.org
    Actualisé par User:Joanjoc de http://ca.wikipedia.org
    Traduction et adaptation User:Antaya de http://fr.wikipedia.org
    Indépendance de classes CSS et nettoyage par User:Nemoi de http://fr.wikipedia.org
*/
 
function CadreOngletInitN(){
 
  var Classeurs = $('div.classeur')
  for ( var i = 0; i < Classeurs.length; i++ ) {
      var Classeur = Classeurs[i];
 
      Classeur.setAttribute( "id", "classeur" + i );
 
      var vOgIni = -1 // pour connaître l’onglet renseigné
 
      var Onglets = $(Classeur).children("div").eq(0).children("div");
      var Feuillets = $(Classeur).children("div").eq(1).children("div");
 
      for ( var j = 0; j < Onglets.length; j++) {
        var Onglet = Onglets[j];
        var Feuillet = Feuillets[j];
 
        Onglet.setAttribute( "id", "classeur" + i + "onglet" + j );
        Feuillet.setAttribute( "id", "classeur" + i + "feuillet" + j );
        Onglet.onclick = CadreOngletVoirOngletN;
 
        if ( hasClass( Onglet, "ongletBoutonSel") ) vOgIni=j; 
      }
 
      // inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
      if (vOgIni == -1) { 
        var vOgIni = Math.floor((Onglets.length)*Math.random()) ;
        document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
        document.getElementById("classeur"+i+"feuillet"+vOgIni).style.visibility = "visible";
        var vBtElem = document.getElementById("classeur"+i+"onglet"+vOgIni);
        removeClass(Onglet, "ongletBoutonNonSel");
        addClass(Onglet, "ongletBoutonSel");
        vBtElem.style.cursor="default";
        vBtElem.style.backgroundColor="inherit";
        vBtElem.style.borderTopColor="inherit";      // propriété par propriété sinon Chrome/Chromium se loupe
        vBtElem.style.borderRightColor="inherit";
        vBtElem.style.borderBottomColor="inherit";
        vBtElem.style.borderLeftColor="inherit";
      }
  }
}
 
function CadreOngletVoirOngletN(){
  var vOngletNom = this.id.substr(0,this.id.indexOf("onglet",1)); 
  var vOngletIndex = this.id.substr(this.id.indexOf("onglet",0)+6,this.id.length); 
 
  var rule1=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.backgroundColor.toString(); 
  var rule2=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.borderColor.toString();      //rule2=$('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas sous Firefox
 
  var Onglets = $('#' + vOngletNom).children("div").eq(0).children("div")
 
  for ( var j = 0; j < Onglets.length; j++) {
    var Onglet = Onglets[j];
    var Feuillet = document.getElementById(vOngletNom + "feuillet" + j);
 
    if (vOngletIndex==j){ 
      Feuillet.style.display = "block";
      Feuillet.style.visibility = "visible";
      removeClass(Onglet, "ongletBoutonNonSel");
      addClass(Onglet, "ongletBoutonSel");
      Onglet.style.cursor="default";
      Onglet.style.backgroundColor="inherit";
      Onglet.style.borderTopColor="inherit";      // propriété par propriété sinon Chrome/Chromium se loupe
      Onglet.style.borderRightColor="inherit";
      Onglet.style.borderBottomColor="inherit";
      Onglet.style.borderLeftColor="inherit";
    } else {             
      Feuillet.style.display = "none";
      Feuillet.style.visibility = "hidden";
      removeClass(Onglet, "ongletBoutonSel");
      addClass(Onglet, "ongletBoutonNonSel");
      Onglet.style.cursor="pointer";
      Onglet.style.backgroundColor=rule1;
      Onglet.style.borderColor=rule2;
    }
  }
  return false; 
}
 
addOnloadHook(CadreOngletInitN);

/**
 * Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléverser]]
 * Voir aussi [[MediaWiki:Onlyifuploading.js]]
 */
if( mw.config.get('wgCanonicalSpecialPageName') == "Upload" ) {
  importScript("MediaWiki:Onlyifuploading.js");
}

/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/

if ( $.client.profile().name == 'msie' ) {
    importScript( 'MediaWiki:Common.js/IEFixes.js' );
}

// 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 ) ) {
        importScriptURI("//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 -->