MediaWiki:Common.js : Différence entre versions
De Casio Universal Wiki
(nom d'utilisateur retiré) |
(nom d'utilisateur retiré) |
||
Ligne 9 : | Ligne 9 : | ||
infoboxTableA++; | infoboxTableA++; | ||
if(infoboxTableElement.offsetHeight>infoboxTableAmax){infoboxTableAmax=infoboxTableElement.offsetHeight;} | if(infoboxTableElement.offsetHeight>infoboxTableAmax){infoboxTableAmax=infoboxTableElement.offsetHeight;} | ||
− | |||
infoboxTableElement=document.getElementById("infoboxTableA"+infoboxTableA); | infoboxTableElement=document.getElementById("infoboxTableA"+infoboxTableA); | ||
} | } |
Version du 26 juin 2012 à 21:52
/*alignement des infobox*/ var infoboxTableA=1; var infoboxTableAmax=0; var infoboxTableElement=0; var infoboxTableTemp; infoboxTableElement=document.getElementById("infoboxTableA1"); while(infoboxTableElement!= null) { infoboxTableA++; if(infoboxTableElement.offsetHeight>infoboxTableAmax){infoboxTableAmax=infoboxTableElement.offsetHeight;} infoboxTableElement=document.getElementById("infoboxTableA"+infoboxTableA); } infoboxTableTemp=1; while(infoboxTableTemp<=infoboxTableA) { document.getElementById("infoboxTableA"+infoboxTableTemp).style.height=infoboxTableAmax infoboxTableTemp++; } /** * 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<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); } /** * 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(!oNode) return null; 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; } // Array.indexOf : recherche un élément dans un tableau if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(obj) { for (var i=0; i<this.length; i++) { if (this[i] == obj){ return i; } } return -1; } } if(!String.prototype.HTMLize){ String.prototype.HTMLize = function() { var chars = new Array('&','<','>','"'); var entities = new Array('amp','lt','gt','quot'); var string = this; for (var i=0; i<chars.length; i++) { var regex = new RegExp(chars[i], "g"); string = string.replace(regex, '&' + entities[i] + ';'); } return string; } } /**********************************************************************************************************/ /* 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')) { removeClass(document.body, 'ns-subject'); addClass(document.body, '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}; } /* Any JavaScript here will be loaded for all users on every page load. */ /** * Boîtes déroulantes * * Pour [[Modèle:Méta palette de navigation]] */ var Palette_Enrouler = '[masquer]'; var Palette_Derouler = '[afficher]'; var Palette_max = 1; var Palette_index = -1; function Palette_toggle(indexPalette){ var Button = document.getElementById( "collapseButton" + indexPalette); var Table = document.getElementById( "collapsibleTable" + indexPalette); if (!Table || !Button) return false; var Rows = Table.rows; var RowDisplay = "none"; if (Button.firstChild.data == Palette_Derouler) { Button.firstChild.data = Palette_Enrouler; RowDisplay = Rows[0].style.display; } else { Button.firstChild.data = Palette_Derouler; } for (var i = 1; i < Rows.length; i++) { Rows[i].style.display = RowDisplay } } function Palette(Element){ if(!Element) Element = document; var TableIndex = 0; var TableIndexes = new Array(); var Tables = Element.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "collapsible" ) ) { var Table = Tables[i]; var Header = Table.getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0]; /* only add button and increment count if there is a header row to work with */ if (Header) { TableIndex++ Palette_index++; TableIndexes[Palette_index] = Table; Table.setAttribute( "id", "collapsibleTable" + Palette_index ); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( Palette_Enrouler ); Button.className = "navboxToggle"; ButtonLink.setAttribute( "id", "collapseButton" + Palette_index ); ButtonLink.setAttribute( "href", "javascript:;" ); addHandler( ButtonLink, "click", new Function( "evt", "Palette_toggle(" + Palette_index + " ); return killEvt( evt );") ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode("\u00a0")); //ajout d'un espace insécable pour décoller ce bouton du texte de la celulle Button.appendChild( ButtonLink ); Header.insertBefore( Button, Header.childNodes[0] ); } } } for(var index in TableIndexes){ var Table = TableIndexes[index]; if(hasClass(Table,"collapsed")||(TableIndex>Palette_max && hasClass(Table,"autocollapse"))) Palette_toggle(index); } } addOnloadHook(Palette); /** * Pour [[Modèle:Boîte déroulante]] */ var BoiteDeroulante_Enrouler = '[masquer]'; var BoiteDeroulante_Derouler = '[afficher]'; var BoiteDeroulante_max = 0; var BoiteDeroulante_index = -1; function BoiteDeroulante_toggle(indexBoiteDeroulante){ var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante); var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante); var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante); if (!NavFrame || !NavToggle || !CaptionContainer) return; var caption = new Array(); var CaptionSpans = CaptionContainer.getElementsByTagName('span'); caption[0] = CaptionSpans[0].innerHTML; caption[1] = CaptionSpans[1].innerHTML; var Contents = NavFrame.getElementsByTagName('div'); if (NavToggle.innerHTML == caption[1]) { NavToggle.innerHTML = caption[0]; for(var a=0,m=Contents.length;a<m;a++){ if(hasClass(Contents[a], "NavContent")){ Contents[a].style.display = 'none'; return; } } }else{ NavToggle.innerHTML = caption[1]; for(var a=0,m=Contents.length;a<m;a++){ if(hasClass(Contents[a], "NavContent")){ Contents[a].style.display = 'block'; return; } } } } function BoiteDeroulante(Element){ if(!Element) Element = document; var NavFrameCount = -1; var NavFrames = Element.getElementsByTagName("div"); for(var i=0,l=NavFrames.length;i<l;i++){ if(hasClass(NavFrames[i], "NavFrame")){ var NavFrame = NavFrames[i]; NavFrameCount++; BoiteDeroulante_index++; if (NavFrame.title && NavFrame.title.indexOf("/")!=-1) { var Enrouler = NavFrame.title.HTMLize().split("/")[1]; var Derouler = NavFrame.title.HTMLize().split("/")[0]; }else{ var Enrouler = BoiteDeroulante_Enrouler; var Derouler = BoiteDeroulante_Derouler; } NavFrame.title=''; var CaptionContainer = document.createElement('span'); CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index; CaptionContainer.style.display = "none"; CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>'; NavFrame.appendChild(CaptionContainer); var NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.id = 'NavToggle' + BoiteDeroulante_index; NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');'; var NavToggleText = document.createTextNode(Enrouler); NavToggle.appendChild(NavToggleText); NavFrame.insertBefore( NavToggle, NavFrame.firstChild ); NavFrame.id = 'NavFrame' + BoiteDeroulante_index; if (BoiteDeroulante_max <= NavFrameCount) { BoiteDeroulante_toggle(BoiteDeroulante_index); } } } } addOnloadHook(BoiteDeroulante);