/* generated javascript */ var skin = 'monobook'; var stylepath = '/skins-1.5'; /* MediaWiki:Common.js */ /** * N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée. * * ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre * monobook.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des * visiteurs), même plusieurs heures après la modification ! * * Prière de ranger les nouvelles fonctions dans les sections adaptées : * - Fonctions JavaScript * - Fonctions spécifiques pour MediaWiki * - Applications spécifiques à la fenêtre d'édition * - Applications qui peuvent être utilisées sur toute page * - Applications spécifiques à un espace de nom ou une page * * /!\ Ne pas retirer cette balise */ /*************************************************************/ /* Fonctions JavaScript : pallient les limites de JavaScript */ /* Surveiller : http://www.ecmascript.org/ */ /*************************************************************/ /** * insertAfter : insérer un élément dans une page */ function insertAfter(parent, node, referenceNode) { parent.insertBefore(node, referenceNode.nextSibling); } /** * getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché */ function getElementsByClass(searchClass, node, tag) { if (node == null) node = document; if (tag == null) tag = '*'; return getElementsByClassName(node, tag, searchClass); } /** * Diverses fonctions manipulant les classes * Utilise des expressions régulières et un cache pour de meilleures perfs * isClass et whichClass depuis http://fr.wikibooks.org/w/index.php?title=MediaWiki:Common.js&oldid=140211 * hasClass, addClass, removeClass et eregReplace depuis http://drupal.org.in/doc/misc/drupal.js.source.html * 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=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; } 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); } /** * Récupère la valeur du cookie */ function getCookieVal(name) { var cookiePos = document.cookie.indexOf(name + "="); var cookieValue = false; if (cookiePos > -1) { cookiePos += name.length + 1; var endPos = document.cookie.indexOf(";", cookiePos); if (endPos > -1) cookieValue = document.cookie.substring(cookiePos, endPos); else cookieValue = document.cookie.substring(cookiePos); } return cookieValue; } // Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants // Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC function getTextContent(oNode) { if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;} switch (oNode.nodeType) { case 3: // TEXT_NODE case 4: // CDATA_SECTION_NODE return oNode.nodeValue; break; case 7: // PROCESSING_INSTRUCTION_NODE case 8: // COMMENT_NODE if (getTextContent.caller!=getTextContent) { return oNode.nodeValue; } break; case 9: // DOCUMENT_NODE case 10: // DOCUMENT_TYPE_NODE case 12: // NOTATION_NODE return null; break; } var _textContent = ""; oNode = oNode.firstChild; while (oNode) { _textContent += getTextContent(oNode); oNode = oNode.nextSibling; } return _textContent; } /**********************************************************************************************************/ /* Fonctions générales MediaWiki (pallient les limitations du logiciel) */ /* Surveiller : http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js?view=log */ /**********************************************************************************************************/ /* * Fonction générales de lancement de fonctions ou de script * DÉPRÉCIÉ : utiliser addOnloadHook simplement */ function addLoadEvent(func) { addOnloadHook(func); } /** * Insérer un JavaScript d'une page particulière, idée de Mickachu * DÉPRÉCIÉ : utiliser importScript qui fait partie du logiciel */ function loadJs(page) { importScript(page); } /** * Projet JavaScript */ function obtenir(name) { importScript('MediaWiki:Gadget-' + name + '.js'); } /** * Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion */ function TransformeEnDiscussion() { if( (wgPageName.search('Wikipédia:Le_Bistro') != -1) || (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1) || document.getElementById('transformeEnPageDeDiscussion')) document.body.className = 'ns-talk'; } addOnloadHook(TransformeEnDiscussion); /** * Transformer certaines pages en pseudo-article * c'est raisonnable ? --Tavernier */ function TransformeEnArticle() { var transformeEnA = document.getElementById("transformeEnArticle"); if(transformeEnA) document.body.className = "ns-0"; } addOnloadHook(TransformeEnArticle); /** * Ajouter un bouton à la fin de la barre d'outils */ function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) { mwCustomEditButtons[mwCustomEditButtons.length] = {"imageId": imageId, "imageFile": imageFile, "speedTip": speedTip, "tagOpen": tagOpen, "tagClose": tagClose, "sampleText": sampleText}; } /****************************************/ /* Applications pour l'ensemble du site */ /****************************************/ /** * Tout ce qui concerne la page d'édition * Voir MediaWiki:Common.js/edit.js pour ces fonctions */ if( wgAction == 'edit' || wgAction == 'submit' ) { importScript( 'MediaWiki:Common.js/edit.js' ); } /** * Liens d'accès directs pour la navigation au clavier */ function showSkipLinks() { var jump_to_nav = document.getElementById('jump-to-nav'); if( !jump_to_nav ) return; var skip_links = jump_to_nav.getElementsByTagName('A')[0]; jump_to_nav.className='hidden'; skip_links.onfocus=function() { jump_to_nav.className=''; } } addOnloadHook(showSkipLinks); /** * Réécriture des titres * * Fonction utilisée par [[Modèle:Titre incorrect]] * * La fonction cherche un bandeau de la forme *
* titre *
* * Un élément comportant id="DisableRealTitle" désactive la fonction */ function rewritePageH1() { var realTitleBanner = document.getElementById('RealTitleBanner'); if (realTitleBanner) { if (!document.getElementById('DisableRealTitle')) { 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); /** * Icônes de titre * * Cherche les icônes de titre (class="icone_de_titre") et les * déplace à droite du titre de la page. * Doit être exécuté après une éventuelle correction de titre. */ function IconesDeTitre() { var h1 = document.getElementsByTagName("h1")[0]; var icones = getElementsByClass( "icone_de_titre", document, "div" ); for( var j = icones.length; j > 0; --j ){ icones[j-1].style.display = "block"; /* annule display:none par défaut */ icones[j-1].style.borderWidth = "1px"; icones[j-1].style.borderStyle = "solid"; icones[j-1].style.borderColor = "white"; if( skin == "modern" ){ icones[j-1].style.marginTop = "0em"; } h1.parentNode.insertBefore(icones[j-1], h1); /* déplacement de l'élément */ } } addOnloadHook(IconesDeTitre); /** * Déplacement de coordonnées qui apparaissent en haut de la page */ function moveCoord() { var h1 = document.getElementsByTagName("h1")[0]; var coord = document.getElementById('coordinates'); if ( !coord || !h1 ) return; coord.id = "coordinates-title"; h1.parentNode.insertBefore(coord, h1); /* déplacement de l'élément */ } addOnloadHook(moveCoord); /** * Déplacement des [modifier] * * Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki. * Ce script devrait pouvoir être supprimé lorsque le [[bugzilla:11555]] sera résolu (comportement équivalent) * * Copyright 2006, Marc Mongenet. Licence GPL et GFDL. * * The function looks for , and move them * at the end of their parent and display them inline in small font. * var oldEditsectionLinks=true disables the function. */ function setModifySectionStyle() { var process = function(list) { for(var i=0;i!=list.length;i++) { var span=list[i].firstChild if (span.className == "editsection") { span.style.fontSize = "xx-small"; span.style.fontWeight = "normal"; span.style.cssFloat = span.style.styleFloat = "none"; span.parentNode.appendChild(document.createTextNode(" ")); span.parentNode.appendChild(span); } } } try { if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return; process(document.getElementsByTagName("h2")); process(document.getElementsByTagName("h3")); process(document.getElementsByTagName("h4")); process(document.getElementsByTagName("h5")); process(document.getElementsByTagName("h6")); } catch (e) { } } addOnloadHook(setModifySectionStyle); /** * 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 = 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