MediaWiki:Common.js
From dmfswiki
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Clear the cache in Tools → Preferences
/*[[Catégorie:JavaScript du Wiktionnaire|{{SUBPAGENAME}}]]*/ /*************************************************************/ /* Fonctions JavaScript : pallient les limites de JavaScript */ /* Surveiller : http://www.ecmascript.org/ */ /* Copié depuis Wikipédia : [[w:MediaWiki:Common.js]] */ /*************************************************************/ /** * 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); } // Cookies en.wikt function setCookie(cookieName, cookieValue) { var today = new Date(); var expire = new Date(); var nDays = 30; expire.setTime( today.getTime() + (3600000 * 24 * nDays) ); document.cookie = cookieName + "=" + escape(cookieValue) + ";path=/" + ";expires="+expire.toGMTString(); // We need to delete the more specific paths for the next while. Safe to remove this by July 2011, if not before. document.cookie = cookieName + "=" + ";path=/w" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; document.cookie = cookieName + "=" + ";path=/wiki" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; } function getCookie(cookieName) { var start = document.cookie.indexOf( cookieName + "=" ); if ( start == -1 ) return ""; var len = start + cookieName.length + 1; if ( ( !start ) && ( cookieName != document.cookie.substring( 0, cookieName.length ) ) ) { return ""; } var end = document.cookie.indexOf( ";", len ); if ( end == -1 ) end = document.cookie.length; return unescape( document.cookie.substring( len, end ) ); } function deleteCookie(cookieName) { if ( getCookie(cookieName) ) { document.cookie = cookieName + "=" + ";path=/" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; } } /** * 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; } // FIN Fonctions JavaScript /* == Modification des articles (boîte à outils etc.) == Voir [[MediaWiki:Common.js/edit.js]]. */ if(mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') { importScript( 'MediaWiki:Common.js/edit.js' ); } /* == Page de recherche == Voir [[MediaWiki:Common.js/searchEngines.js]]. */ if (mw.config.get('wgPageName') == "Spécial:Recherche") { importScript( 'MediaWiki:Common.js/searchEngines.js' ); } /* == [[Wiktionnaire:Pages les plus demandées]] == Source importée : [[:de:MediaWiki:If-search.js]]. */ // Import qui fait crasher la complétion de recherche // Ne pas le réactiver sans test // 17 février 2011 Darkdadaah //importScriptURI("//de.wiktionary.org/w/index.php?title=MediaWiki:If-search.js&action=raw&ctype=text/javascript"); /* == Nouvelles pages de discussions == Transforme la Wikidémie et d'autres pages marquées en pages de discussion. */ jQuery( function TransformeEnDiscussion() { if(document.title.match( /Wiktionnaire:Wikidémie/) || document.getElementById('transformeEnPageDeDiscussion')) document.body.className = 'ns-1' ; } ); /*******************************************************************************/ /* Copié depuis [[w:MediaWiki:Common.js]] */ /* Ajout d'un style particulier aux liens interlangues vers un bon article ou */ /* un article de qualité */ /*******************************************************************************/ jQuery( function lienAdQouBAouPdQ() { // links are only replaced in p-lang if(window.disableFeaturedInterwikiLinks!=undefined) return var pLang = document.getElementById("p-lang"); if (!pLang) return; var lis = pLang.getElementsByTagName("li"); var l = lis.length if(mw.config.get('wgNamespaceNumber')==0) for (var i=0; i<l; i++) { // ADQ- est intentionnel pour correspondre au modèle Lien AdQ, on // ne doit pas le corriger. // if (document.getElementById("BA-" + lis[i].className)) { // lis[i].className += " BA"; // lis[i].title = "Lien vers un bon article"; if (document.getElementById("ADQ-" + lis[i].className)) { lis[i].className += " AdQ"; lis[i].title = "Lien vers un article de qualité"; } } } ); /** * Réécriture des titres *(copié de Wikipédia) * * Fonction utilisée par [[Modèle:titre incorrect]] * * La fonction cherche un bandeau de la forme * <div id="RealTitleBanner"> * <span id="RealTitle">titre</span> * </div> * * Un élément comportant id="DisableRealTitle" désactive la fonction */ jQuery( 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'; } } } } ); /*******************************/ /* Boîtes déroulantes */ /*******************************/ // set up the words in your language var NavigationBarHide = 'Enrouler'; var NavigationBarShow = 'Dérouler'; // hide or show by default // NavigationBarShowDefault = 0; // all bars will be hidden // NavigationBarShowDefault = 1; // all bars will be shown if (typeof(NavigationBarShowDefault) == "undefined") { NavigationBarShowDefault = 1; } // shows and hides content and picture (if available) of navigation bars // Parameters: // indexNavigationBar: the index of navigation bar to be toggled function toggleNavigationBar(indexNavigationBar) { var NavToggle = document.getElementById("NavToggle" + indexNavigationBar); var NavFrame = document.getElementById("NavFrame" + indexNavigationBar); if (!NavFrame || !NavToggle) { return false; } // if shown now if (NavToggle.firstChild.data == NavigationBarHide) { for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if (NavChild.className == 'NavPic') { NavChild.style.display = 'none'; } if (NavChild.className == 'NavContent') { NavChild.style.display = 'none'; } if (NavChild.className == 'NavToggle') { NavChild.firstChild.data = NavigationBarShow; } } // if hidden now } else if (NavToggle.firstChild.data == NavigationBarShow) { for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if (NavChild.className == 'NavPic') { NavChild.style.display = 'block'; } if (NavChild.className == 'NavContent') { NavChild.style.display = 'block'; } if (NavChild.className == 'NavToggle') { NavChild.firstChild.data = NavigationBarHide; } } } } // adds show/hide-button to navigation bars jQuery( function createNavigationBarToggleButton() { var indexNavigationBar = 0; // iterate over all <div>-elements for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) { if (NavFrame.className == 'NavFrame') { indexNavigationBar++; var NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar); NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');'); var NavToggleText = document.createTextNode(NavigationBarHide); NavToggle.appendChild(NavToggleText); // add NavToggle-Button as first div-element // in <div class="NavFrame"> NavFrame.insertBefore( NavToggle, NavFrame.firstChild ); NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); // Hide in these cases if (NavigationBarShowDefault==0 || NavFrame.hasClass('collapsed')) { toggleNavigationBar(indexNavigationBar) ; } } } } ); /*********************/ /* Lien d'import */ /*********************/ // Changer le lien d'import en lien vers la page [[Aide:Importer un fichier]] // Copié depuis Wikipédia jQuery( function LienUpload() { uploadLink = document.getElementById("t-upload"); if (!uploadLink) return; a = uploadLink.firstChild; a.setAttribute('href', '/wiki/Aide:Importer_un_fichier'); } ); /******************************/ /* Navigation interprojet */ /******************************/ // Initialisation de la navigation interprojets (code adapté de de:wikt:Mediawiki:monobook.js) function iProject() { if (document.getElementById("interProject")) { var iProject = document.getElementById("interProject").innerHTML; var interProject = document.createElement("div"); interProject.style.marginTop = "0.7em"; interProject.innerHTML = '<h5>Autres projets<\/h5><div class="pBody">'+iProject+'<\/div>'; document.getElementById("p-tb").appendChild(interProject); } } hookEvent("load", iProject); // Navigation interprojets /* 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 Importation sur le Wiktionnaire par JackPotte */ function CadreOngletVoirOnglet(){ var vMbNom = this.id.substr(0,3); var vIndex = this.id.substr(5,1); var i=1 for (i=1;i<=9;i++){ var vOgElem = document.getElementById(vMbNom+"og"+i); if (!vOgElem) break; if (vIndex==i){ vOgElem.style.display = "block"; vOgElem.style.visibility = "visible"; document.getElementById(vMbNom+"bt"+i).className="mbBoutonSel"; } else { vOgElem.style.display = "none"; vOgElem.style.visibility = "hidden"; document.getElementById(vMbNom+"bt"+i).className="mbBouton"; } } return false; } jQuery( function CadreOngletInit(){ var i=0 for (i=0;i<=9;i++){ var vMb = document.getElementById("mb"+i); if (!vMb) break; var j=1 var vOgIni = 0 for (j=1;j<=9;j++){ var vBt = document.getElementById("mb"+i+"bt"+j); if (!vBt) break; vBt.onclick = CadreOngletVoirOnglet; if (vBt.className=="mbBoutonSel") { vOgIni=j; } else { document.getElementById("mb"+i+"og"+j).style.display = "none"; document.getElementById("mb"+i+"og"+j).style.visibility = "hidden"; } } if (vOgIni == 0) { vOgIni = 1+Math.floor((j-1)*Math.random()) ; document.getElementById("mb"+i+"og"+vOgIni).style.display = "block"; document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible"; document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel"; } } } ); /*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/ /** * application de [[w:Wikipédia:Prise de décision/Système de cache]], puis [[Wiktionnaire:Wikidémie/août_2010#Gestion_des_hyperliens_par_le_.22Syst.C3.A8me_de_cache.22]] * un <span class="noarchive"> autour du lien l'empêche d'être pris en compte * pour celui-ci uniquement * un no_external_cache=true dans un monobook personnel désactive le script */ jQuery( function () { if(mw.config.get('wgIsArticle') == false) { return; } if (mw.config.get('wgNamespaceNumber') == 0) { if ((typeof no_external_cache != "undefined") && (no_external_cache)) return; addcache(); } function addcache() { var external_links; if (document.getElementsByClassName) { external_links = document.getElementsByClassName('external'); } else { external_links = getElementsByClass('external',document.getElementById("bodyContent"),'a'); } for( i = 0;i < external_links.length;i++) { var chemin = external_links[i].href; if(chemin.indexOf("http://wikiwix.com/cache/")==-1 && chemin.indexOf("http://web.archive.org/web/*/")==-1 && chemin.indexOf(mw.config.get('wgServer'))==-1 && chemin.indexOf("wikimedia.org")==-1 && chemin.indexOf("stable.toolserver.org")==-1) { var li = external_links[i].parentNode; if (li.className == "noarchive") continue; /* Règle pour Wikipédia seulement (=listes de références). Sur le Wiktionnaire on en a besoin aussi au niveau des sources des citations. var depth = 0; while ((depth < 3) && (li.tagName != "OL") && (li.parentNode != null)) { li = li.parentNode; depth++; } if (li.tagName != "OL" || !li.hasClass('references') ) continue; */ var titre = getTextContent(external_links[i]); var last = document.createElement("small"); last.setAttribute("class", "cachelinks"); last.style.color = "#3366BB"; last.appendChild(document.createTextNode("\u00a0[")); last.insertAfter(external_links[i]); var link = document.createElement("a"); link.setAttribute("href", "http://wikiwix.com/cache/?org=" + mw.config.get('wgServer') + "&url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre)); link.setAttribute("title", "archive de "+ titre); link.appendChild(document.createTextNode("archive")); link.style.color = "#3366BB"; last.appendChild(link); last.appendChild(document.createTextNode("]")); } } } } ); /* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */ /* Plyd - 3 février 2009 */ jQuery( function Rebours() { if(mw.config.get('wgNamespaceNumber')==0) return; try { if (document.getElementById("rebours")) { destime = document.getElementById("rebours").title.split(";;"); Maintenant = (new Date).getTime(); Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime(); Diff = (Future-Maintenant); if (Diff < 0) {Diff = 0} TempsRestantJ = Math.floor(Diff/(24*3600*1000)); TempsRestantH = Math.floor(Diff/(3600*1000)) % 24; TempsRestantM = Math.floor(Diff/(60*1000)) % 60; TempsRestantS = Math.floor(Diff/1000) % 60; TempsRestant = "" + destime[6] + " "; if (TempsRestantJ == 1) { TempsRestant = TempsRestant + TempsRestantJ + " jour "; } else if (TempsRestantJ > 1) { TempsRestant = TempsRestant + TempsRestantJ + " jours "; } TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s"; document.getElementById("rebours").innerHTML = TempsRestant; setTimeout("Rebours()", 1000) } } catch (e) {} } ); // Inclusion du script HideCategories, qui permet de n'afficher que les dix premières catégories d'une page (nombre pouvant être changé // en modifiant la variable NombreDeCategoriesMax dans le script) - suite à la discussion // http://fr.wiktionary.org/wiki/Wiktionnaire:Wikid%C3%A9mie/ao%C3%BBt_2011#A.C3.AFe_.21_mes_yeux_sont_cat.C3.A9goris.C3.A9s_.21 if (!window.disableCat) { importScript("User:Quentinv57/HideCategories.js"); } // ajout du script qui permet de faire fonctionner [[Spécial:Utilisateurs à bienvenuter]] // qui fournit une liste des utilisateurs à bienvenuter if (mw.config.get('wgPageName')=="Spécial:Utilisateurs_à_bienvenuter") { importScript("User:Quentinv57/Utilisateurs-a-bienvenuter.js"); } /***************************************/ /* Raccourcir le sommaires des articles */ /***************************************/ if (!window.disableTOC) { importStylesheet("MediaWiki:Gadget-TOC.css"); } /** * retourne la valeur d'un attribut html, sinon une valeur par défaut */ function getAttr(node, name, defvalue) { if (!node.attributes) return defvalue; var v=node.attributes.getNamedItem(name); return (v&&v.nodeValue.length)?v.nodeValue:defvalue; } /** * Redirection automatique des page décrivant un fichier commons * vers la page de description sur commons pour éviter des erreurs * importé de Wikilivres */ jQuery( function RedirectCommonsFile() { if (mw.config.get('wgNamespaceNumber')!=6) return; // Search for link to commons // - search div with sharedUploadNotice class var shared_link = getElementsByClass("sharedUploadNotice"); if ((!shared_link)||(shared_link.length<1)) return; // No sharedUploadNotice div shared_link = shared_link[0]; // - external link within the div var links = getElementsByClass("external", shared_link, "a"); if ((!links)||(links.length<1)) links = getElementsByClass("external", shared_link, "A"); if ((!links)||(links.length<1)) return; // No external link // Get URL and redirect var url = getAttr(links[0], "href", null); if (url!=null) window.location = url; } );