MediaWiki:Monobook.js
Citations « Monobook.js » sur Wikiquote, le recueil de citations libre
Note : après avoir enregistré vos préférences, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements. Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Maj-Cmd-R sur Apple Mac) ; Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/* __FORCETOC__ == infobulles et touches d’accès == <pre>*/ var ta = new Object(); ta['pt-userpage'] = new Array('.','Ma page utilisateur'); ta['pt-anonuserpage'] = new Array('.','La page utilisateur de l’IP avec laquelle vous contribuez'); ta['pt-mytalk'] = new Array('n','Ma page de discussion'); ta['pt-anontalk'] = new Array('n','Discussion à propos des modifications depuis cette adresse IP'); ta['pt-preferences'] = new Array('','Mes préférences'); ta['pt-watchlist'] = new Array('l','liste des pages dont vous suivez les modifications.'); ta['pt-mycontris'] = new Array('y','Liste de mes contributions'); ta['pt-login'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.'); ta['pt-anonlogin'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.'); ta['pt-logout'] = new Array('o','Se déconnecter'); ta['ca-talk'] = new Array('t','Discussion à propos de l’article'); ta['ca-edit'] = new Array('e','Vous pouvez modifier cette page. Merci d’utiliser le bouton de prévisualisation avant de sauvegarder.'); ta['ca-addsection'] = new Array('+','Ajouter un commentaire à cette discussion.'); ta['ca-viewsource'] = new Array('e','Cette page est protégée. Vous pouvez voir sa source.'); ta['ca-history'] = new Array('h','Anciennes versions de cette page.'); ta['ca-protect'] = new Array('=','Protéger cette page'); ta['ca-delete'] = new Array('d','Supprimer cette page'); ta['ca-undelete'] = new Array('d','Restaurer les modifications effectuées sur cette page avant sa suppression'); ta['ca-move'] = new Array('m','Renommer cette page'); ta['ca-watch'] = new Array('w','Ajouter cette page à votre liste de suivi'); ta['ca-unwatch'] = new Array('w','Retirer cette page de votre liste de suivi'); ta['search'] = new Array('f','Chercher dans ce wiki'); ta['p-logo'] = new Array('','Page principale'); ta['n-mainpage'] = new Array('z','Visitez la page principale'); ta['n-portal'] = new Array('','À propos de ce projet, ce que vous pouvez faire, où trouver les choses'); ta['n-currentevents'] = new Array('','Trouver des informations sur les évènements actuels'); ta['n-recentchanges'] = new Array('r','Liste des changements récents sur le wiki'); ta['n-randompage'] = new Array('x','Charger une page aléatoire'); ta['n-help'] = new Array('','Aide'); ta['n-sitesupport'] = new Array('','Aidez-nous'); ta['t-whatlinkshere'] = new Array('j','Liste de tous les wikis qui lient vers cette page'); ta['t-recentchangeslinked'] = new Array('k','Changements récents dans les pages qui lient vers cette page'); ta['feed-rss'] = new Array('','Flux RSS pour cette page'); ta['feed-atom'] = new Array('','Flux Atom pour cette page'); ta['t-contributions'] = new Array('','Voir la liste de contributions de cet utilisateur'); ta['t-emailuser'] = new Array('','Envoyer un courriel à cet utilisateur'); ta['t-upload'] = new Array('u','Télécharger une image ou des fichiers'); ta['t-specialpages'] = new Array('q','Liste de toutes les pages spéciales'); ta['ca-nstab-main'] = new Array('c','Voir l’article'); ta['ca-nstab-user'] = new Array('c','Voir la page utilisateur'); ta['ca-nstab-media'] = new Array('c','Voir la page du média'); ta['ca-nstab-special'] = new Array('','Ceci est une page spéciale, vous ne pouvez la modifier.'); ta['ca-nstab-project'] = new Array('a','Voir la page du projet'); ta['ca-nstab-image'] = new Array('c','Voir la page de l’image'); ta['ca-nstab-mediawiki'] = new Array('c','Voir le message système'); ta['ca-nstab-template'] = new Array('c','Voir le modèle'); ta['ca-nstab-help'] = new Array('c','Voir la page d’aide'); ta['ca-nstab-category'] = new Array('c','Voir la page de la catégorie'); /*</pre> == Fonctions de base pour monobook == <pre>*/ /** * Installation d'une nouvelle fonction de cette façon : * aOnloadFunctions[aOnloadFunctions.length] = nom_de_la_fonction; // (sans parenthèses) */ if (!window.aOnloadFunctions) { var aOnloadFunctions = new Array(); } window.onload = function() { if (window.aOnloadFunctions) { for (var _i=0; _i<aOnloadFunctions.length; _i++) { aOnloadFunctions[_i](); } } } /** * Ajouter une nouvelle fonction à exécuter au chargement de la page. */ function addLoadEvent(func) { if (window.addEventListener) window.addEventListener("load", func, false); else if (window.attachEvent) window.attachEvent("onload", func); } /** * Insérer un javascript d'une page particulière (pris de fr.wikipedia.org) */ function loadJs(page) { document.write('<script type="text/javascript" src="' + 'http://fr.wikiquote.org/w/index.php?title=' + page + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); } function obtenir(name) { loadJs('MediaWiki:JSScripts/' + name); } /*</pre> === Fonctions manipulant les classes === <pre>*/ /** * 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) { var s=" "+element.className+" "; return s.indexOf(" "+classe+" ")>=0; } 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; } 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); } /*</pre> === Navigation interprojet === <pre>*/ // Initialisation de la navigation interprojets (code adapté de de:wikt:Mediawiki:monobook.js) document.write('<style type="text/css">#interProject {display: none; speak: none;} #p-tb .pBody {padding-right: 0;}<\/style>'); 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 /* </pre> == Liste des caractères spéciaux == <pre>*/ //============================================================ // // Caractères spéciaux // //============================================================ /** * Ajoutez le menu pour choisir des sous-ensembles de caractères spéciaux * @note L'ordre de cette liste doit correspondre a celui de MediaWiki:Edittools ! */ function addCharSubsetMenu() { var specialchars = document.getElementById('specialchars'); if (specialchars) { var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">"; menu += "<option>Wiki</option>"; menu += "<option>Mathématiques</option>"; menu += "<option>API</option>"; menu += "<option>Latin/Romain</option>"; menu += "<option>Grec</option>"; menu += "<option>Cyrillique</option>"; menu += "<option>AHD</option>"; menu += "<option>Allemand</option>"; menu += "<option>Arabe</option>"; menu += "<option>Catalan</option>"; menu += "<option>Croate</option>"; menu += "<option>Espagnol</option>"; menu += "<option>Espéranto</option>"; menu += "<option>Estonien</option>"; menu += "<option>Gallois</option>"; menu += "<option>Hawaien</option>"; menu += "<option>Hébreu</option>"; menu += "<option>Hiéroglyphe</option>"; menu += "<option>Hollandais</option>"; menu += "<option>Hongrois</option>"; menu += "<option>Indo-européen</option>"; menu += "<option>Irlandais</option>"; menu += "<option>Islandais</option>"; menu += "<option>Italien</option>"; menu += "<option>Letton</option>"; menu += "<option>Lituanien</option>"; menu += "<option>Maltais</option>"; menu += "<option>Navajo & Apache</option>"; menu += "<option>Pinyin</option>"; menu += "<option>Polonais</option>"; menu += "<option>Portugais</option>"; menu += "<option>Rōmaji</option>"; menu += "<option>Roumain</option>"; menu += "<option>Scandinave</option>"; menu += "<option>Serbe</option>"; menu += "<option>Tchèque</option>"; menu += "<option>Turc</option>"; menu += "<option>Vieil anglais</option>"; menu += "<option>Vietnamien</option>"; menu += "<option>Yiddish</option>"; menu += "</select>"; specialchars.innerHTML = menu + specialchars.innerHTML; /* 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); /*</pre> == Boîtes déroulantes == <pre>*/ // BEGIN Dynamic Navigation Bars (experimantal) // set up the words in your language var NavigationBarHide = '[ Enrouler ]'; var NavigationBarShow = '[ Dérouler ]'; var NavigationBarShowDefault = 0; // 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; } // ajout par Dake // permet de créer un titre en lieu et place du "Dérouler" grâce // à l'attribut "title" du tag. var ShowText; if (NavFrame.title == undefined || NavFrame.title.length == 0 ) { ShowText = NavigationBarShow; } else { ShowText = NavFrame.title; } // 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 = ShowText; } } // if hidden now } else if (NavToggle.firstChild.data == ShowText) { 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 function createNavigationBarToggleButton() { var indexNavigationBar = 0; // iterate over all < div >-elements for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) { // if found a navigation bar 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); } } // if more Navigation Bars found than Default: hide all if (NavigationBarShowDefault < indexNavigationBar) { for( var i=1; i<=indexNavigationBar; i++ ) { toggleNavigationBar(i); } } } addOnloadHook(createNavigationBarToggleButton); // END Dynamic Navigation Bars /*</pre> == Barre d'outil == === Générateur de tableaux === <pre>*/ /** * * English: Generate an array using Mediawiki syntax * * @author: fr:user:dake * @version: 0.1 */ function generateTableau(nbCol, nbRow, border, styleHeader, styleLine) { var code = "\n"; if (styleHeader==1) { code += '{{entête tableau charte}}\n'; } else { code += '{| border="' + border + '"\n'; code += '|+ Titre du tableau\n'; } for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '\n'; for (var j=0; j<nbRow; j++) { if ((j+1)%2==0 && styleLine==1) { code += '|-{'+'{ligne grise}'+'}\n'; } else { code += '|-----\n'; } for (var i=0; i<nbCol; i++) code += '| élément\n'; } code += '|}'; insertTags('','', code); } /** * * English: Open a popup with parameters to generate an array. * The number of rows/columns can be modified. Some additional * parameters are related to templates available on :fr * * @author: fr:user:dake * @version: 0.1 */ function popupTableau() { var popup = window.open('','name','height=400,width=500'); javaCode = '<script type="text\/javascript">function insertCode(){'; javaCode += 'var row = parseInt(document.paramForm.inputRow.value); '; javaCode += 'var col = parseInt(document.paramForm.inputCol.value); '; javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); '; javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; '; javaCode += 'var styleLine = document.paramForm.inputLine.checked; '; javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); '; javaCode += '}<\/script>'; popup.document.write('<html><head><title>Paramètres du tableau</title>'); popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>'); popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>'); popup.document.write(javaCode); popup.document.write('</head><body>'); popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>'); popup.document.write('<form name="paramForm">'); popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>'); popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>'); popup.document.write('Largeur de la bordure : <input type="text" name="inputBorder" value="1" ><p>'); popup.document.write('En-tête en gris (style « charte graphique ») : <input type="checkbox" name="inputHeader" checked="1" ><p>'); popup.document.write('Lignes grises alternées (style « charte graphique ») : <input type="checkbox" name="inputLine" checked="1" ><p>'); popup.document.write('</form">'); popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>'); popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>'); popup.document.write('</body></html>'); popup.document.close(); } /*</pre> === Insertion de nouveaux boutons dans la barre d'outil === <pre>*/ //Remplit la variable mwCustomEditButtons (voir /skins-1.5/commons/wikibits.js) pour ajouter des boutons à la barre d'outils function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText) { mwCustomEditButtons[mwCustomEditButtons.length] = {"imageFile": imageFile, "speedTip": speedTip, "tagOpen": tagOpen, "tagClose": tagClose, "sampleText": sampleText}; } addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png','Rayer',"<s>","</s>",''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png','Énumération',"\\n# élément 1\\n# élément 2\\n# élément 3","",''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png','Liste',"\\n* élément A\\n* élément B\\n* élément C","",''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png','Galerie d\'images',"\\n<gallery>\\nImage:M63.jpg|[[M63]]\\nImage:Mona Lisa.jpg|[[La Joconde]]\\nImage:Truite arc-en-ciel.jpg|Une [[truite]]\\n</gallery>","",''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Commentaire',"<!--","-->",''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png','Redirection',"#REDIRECT [[","]]",'nom de la destination'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png','Catégorie',"[[Catégorie:","]]",'nom de la catégorie'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/e/e2/Button_contexto.png','Modèle Citation','\{\{citation\|citation=','\n\|original=\n\|langue=\n\|précisions=\n\}\}','Texte de la citation'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/02/Button_fuente_primaria.png','Source Livre','\{\{Réf Livre\|titre=','\n\|auteur=\n\|éditeur=\n\|année=\n\|page=\n\|tome=\n\|partie=\n\|chapitre=\n\|acte=\n\|scène=\n\|section=\n\|ISBN=\n\|traducteur=\n\|année d\'origine=\n\|collection=\n\|auteur de la contribution=\n\|titre de la contribution=\n\|traducteur de la contribution=\n\|année de la contribution=\n\|vers=\n\|s=\n\|langue=\n\}\}','Titre du livre'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/38/Button_plume.png','Source Article','\{\{Réf Article\n\|titre=','\n\|auteur=\n\|publication=\n\|numéro=\n\|date=\n\|page=\n\|ISSN=\n\|ISBN=\n\|s=\n\}\}','Titre Article'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9a/Button_references.png','Source Film','\{\{Réf Film\|titre=','\n\|auteur=\n\|date=\n\|acteur=\n\}\}','Titre du Film'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/be/Topdown.png','Source Série','\{\{Réf Série\n\|acteur=','\n\|auteur=\n\|traducteur=\n\|série=\n\|saison=\n\|épisode=\n\|langue=\n\|diffusion=\n\|diffuseur=\n\}\}','Nom de l’acteur'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b0/Button_note.png','Source Chanson','\{\{Réf Chanson\|titre=','\n\|auteur=\n\|interprète=\n\|album=\n\|date=\n\|label=\n\|traducteur=\n\}\}','Titre de la Chanson'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/82/Button_publication.png','Source Émission','\{\{Réf Émission\|émission=','\n\|auteur=\n\|diffuseur=\n\|date=\n\|langue=\n\}\}','Titre de l\'émission'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/5/5c/Button_references2.png','Source discours','\{\{Réf Pub\|nom=','\n\|date=\n\|lieu=\n\|source=\n\|parution=\n\|auteur=\n\|précision=\n\}\}','Nom de l\'auteur'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Button_source_jv.png','Source jeu vidéo','\{\{Réf Jeu vidéo\|titre=','\n\|auteur=\n\|éditeur=\n\|développeur=\n\|date=\n\|personnage=\n\}\}','Nom du jeu vidéo'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/2/29/Button_user.png','Modèle Personnage','\{\{Personnage\|','\}\} \: ','Nom du personnage'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4e/Button_romain.png','Modèle Romain','\{\{romain\|','\}\}','Texte à mettre en caractères romains'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4c/Button_interprojet.png','Interprojet','\{\{interprojet\|w=\|s=\|wikt=\|b=\|n=\|v=\|commons=\}\}','',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/13/Button_enter.png','Aller à la ligne','<br />','',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png','Espace insécable',' \;','',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/8f/Button_poeme.png','Poésie','<poem>\n','\n</poem>',''); //Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags function marque_tab() { var toolbar = document.getElementById('toolbar'); if (!toolbar) return false; var textbox = document.getElementById('wpTextbox1'); if (!textbox) return false; if (!document.selection && textbox.selectionStart == null) return false; var image = document.createElement("img"); image.width = 23; image.height = 22; image.src = 'http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png'; image.border = 0; image.alt = 'Tableau'; image.title = 'Tableau'; image.style.cursor = "pointer"; image.onclick = function() { popupTableau(); return false; } toolbar.appendChild(image); } addOnloadHook(marque_tab); /*</pre> == Historique en couleurs == <pre>*/ var ajax = new objAJAX() var cookies = new objCookies() //--------------------------------------------------------------------------------------------objAJAX function objAJAX() { // AJAX taken from http://jibbering.com/2002/4/httprequest.html. Thanx :) this.conn = false /*@cc_on @*/ /*@if (@_jscript_version >= 5) // JScript gives us Conditional compilation, we can cope with old IE versions. // and security blocked creation of the objects. try { this.conn = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { this.conn = new ActiveXObject("Microsoft.XMLHTTP") } catch (E) { this.conn = false } } @end @*/ if (!this.conn && typeof XMLHttpRequest != 'undefined') { try { this.conn = new XMLHttpRequest() } catch (e) { this.conn =false } } if (!this.conn && window.createRequest) { try { this.conn = window.createRequest() } catch (e) { this.conn = false } } this.url = null this.requestType = "GET" this.unsync = true this.parser = new objHTMLparser() } objAJAX.prototype.sendRequest = function (url, type, unsync, data) { if (!this.conn) return null if (this.conn.readyState != 0 && this.conn.readyState != 4) return "busy" if (url) this.url = url if (type) this.requestType = type if (unsync != null) this.unsync = unsync //alert(this.requestType + " ++ " + this.url + " ++ " + this.unsync) this.conn.open(this.requestType, this.url, this.unsync) this.conn.send(data) } objAJAX.prototype.getResult = function () { if (!this.conn) return null return this.conn.responseText } objAJAX.prototype.abort = function () { this.conn.onreadystatechange = null this.conn.abort() } //------------------------------------------------------------------------------------------ObjCookie function objCookies() { this.value = null this.name = null this.expires = null } objCookies.prototype.get = function (which) { this.allcookies = document.cookie var start = this.allcookies.indexOf("; " + which + "=") if (start == -1) { start = this.allcookies.indexOf(which + "=") if (start != 0) return null } else start += "; ".length this.name = which var end = this.allcookies.indexOf(";", start) if (end == -1) end = this.allcookies.length this.value = this.allcookies.substring(start + which.length + 1, end) var arr = this.allcookies.substring(start, this.allcookies.length).split("; ") this.expires = null if (arr.length > 0) if (/expires=/.test(arr[1])) this.expires = arr[1].substring("expires=".length, arr[1].length) return this.value } objCookies.prototype.set = function (name, value, expires) { document.cookie = name + "=" + value + ";" + (expires ? "expires=" + expires + ";" : "") + "path=/;" + "domain=fr.wikiquote.org;" this.allcookies = document.cookie } objCookies.prototype.setWithDelay = function (name, value, delay) { // delay is in millisecond var d = new Date() d.setTime(d.getTime() + delay) this.set(name, value, d.toGMTString()) } objCookies.prototype.kill = function (which) { if (this.get(which)) this.set(which, null, "Thu, 01-Jan-70 00:00:01 GMT") } //--------------------------------------------------------------------------------------objHTMLparser function objHTMLparser(str) { this.html = str } objHTMLparser.prototype.parse = function (elmt, str) { if (str !== null) this.html = str if (this.html.indexOf("<" + elmt) == -1 || this.html.indexOf("</" + elmt + ">") == -1) return null var arr1 = this.html.split("<" + elmt) var elmts = new Array() for (var cpt = 1 ; cpt < arr1.length ; cpt++) { var el = new Object() el.innerHTML = arr1[cpt].substring(arr1[cpt].indexOf(">"), arr1[cpt].length).split("</" + elmt)[0] var prop = arr1[cpt].split(">")[0].split(/\s/g) for (var cpt1 = 1 ; cpt1 < prop.length ; cpt1++) { if (prop[cpt1].indexOf("=") != -1) el[prop[cpt1]] = true else el[prop[cpt1].split("=")[0]] = prop[cpt1].substring(prop[cpt1].indexOf("="), prop[cpt1].length) } elmts[cpt-1] = el } this.elmts[elmt] = elmts } /*************************************************/ // Nom : DeluxeHistory // Auteur : Dake // Basé sur du code Ajax de GôTô // Dernière mise à jour : 8 avril 2006 // Commentaires : /*************************************************/ var sysopsDeluxeHistory = null; var botsDeluxeHistory = null; function extractUsers(res) { pattern = /title\=\"Utilisateur:(.*?)\"/g; s = ""; while((result = pattern.exec(res)) != null) { s += result[1] + "||"; } return s; } /*************************************************/ // Auteur : Dake // Basé sur du code de GôTô /*************************************************/ function getBots() { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { // mange l'exception } if (!cookies.get("botsDeluxeHistory")) { ajax.conn.onreadystatechange = function () { if (ajax.conn.readyState == 4) { botsDeluxeHistory = extractUsers(ajax.getResult()) // conservé pour une semaine cookies.setWithDelay("botsDeluxeHistory", botsDeluxeHistory, 1000*3600*24*7) getSysops(); } } ajax.sendRequest("http://fr.wikiquote.org/w/index.php?title=Special:Listusers&group=bot&limit=500&offset=0&action=raw", "GET", true) } else { botsDeluxeHistory = cookies.get("botsDeluxeHistory") getSysops(); } } /*************************************************/ // Auteur : Dake // Basé sur du code de GôTô /*************************************************/ function getSysops() { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { // mange l'exception } if (!cookies.get("sysopsDeluxeHistory")) { ajax.conn.onreadystatechange = function () { if (ajax.conn.readyState == 4) { sysopsDeluxeHistory = extractUsers(ajax.getResult()) // conservé pour une semaine cookies.setWithDelay("sysopsDeluxeHistory", sysopsDeluxeHistory, 1000*3600*24*7) deluxeHistoryProcess(); } } ajax.sendRequest("http://fr.wikiquote.org/w/index.php?title=Special:Listusers&group=sysop&limit=500&offset=0&action=raw", "GET", true) } else { sysopsDeluxeHistory = cookies.get("sysopsDeluxeHistory") deluxeHistoryProcess(); } } // code by Martin Honnen function getOuterHTML (node) { if (node.nodeType == 3) return node.nodeValue; else if (node.nodeType == 1) { var html = ''; html += '<' + node.nodeName; for (var a = 0; a < node.attributes.length; a++) html += ' ' + node.attributes[a].nodeName + '="' + node.attributes[a].nodeValue + '"'; if (node.childNodes.length == 0) html += ' \/>'; else { html += '>'; for (var c = 0; c < node.childNodes.length; c++) html += getOuterHTML(node.childNodes[c]); html += '<\/' + node.nodeName + '>'; } return html; } } function deluxeHistoryProcess() { sysopsList = sysopsDeluxeHistory.split("||") botsList = botsDeluxeHistory.split("||") var lis = document.getElementById("pagehistory").getElementsByTagName("li"); for (i=0; i<lis.length; i++) { spanNode = lis[i].getElementsByTagName("span"); username = spanNode[0].childNodes[0].childNodes[0].nodeValue; // check le statut du contributeur var className = "history-user-normal"; // bot ? for (j=0;j<botsList.length;j++) { if (botsList[j].indexOf(username)==0) { className = "history-user-bot" break; } } // sysop ? for (j=0;j<sysopsList.length;j++) { if (sysopsList[j].indexOf(username)==0) { className = "history-user-sysop" break; } } // ip ? var ip = /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/; if (ip.exec(username)) { className = "history-user-ip" } // ajout des icônes specialOp = ""; var comment = ""; for (h=0;h<spanNode.length;h++) { if (spanNode[h].getAttribute("class") == "comment") { comment = getOuterHTML(spanNode[h]) break; } } var regexExpEvents = new Array(); regexExpEvents[0] = /((r|R)(é|e)vocation|(r|R)v |(R|r)evert|(v|V)andal(isme|e))/; regexExpEvents[1] = /(a restauré|a effacé|(s|S)uppression)/; regexExpEvents[2] = /((R|r)enommage|a déplacé)/; regexExpEvents[3] = /((semi|Semi)-(p|P)rotection|(P|p)rotection)/; var iconsEvents = new Array(); iconsEvents[0] = "http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Crystal_Clear_action_reload.png/20px-Crystal_Clear_action_reload.png" iconsEvents[1] = "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Crystal_Clear_action_exit.png/20px-Crystal_Clear_action_exit.png" iconsEvents[2] = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Crystal_Clear_action_2rightarrow.png/20px-Crystal_Clear_action_2rightarrow.png" iconsEvents[3] = "http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Crystal_Clear_action_lock.png/20px-Crystal_Clear_action_lock.png" if (comment) { for (k=0;k<regexExpEvents.length;k++) { if (regexExpEvents[k].test(comment)) { imgTag = "<img src=\"" + iconsEvents[k] + "\" />" specialOp = "<div class=\"" + className + "\" style=\"float: right; vertical-align:top;\">" + imgTag + "</div>" } } } lis[i].innerHTML = "<div class=\"" + className + "\">" + specialOp + lis[i].innerHTML + "</div>" inputNodes = lis[i].getElementsByTagName("input"); for (j=0;j<inputNodes.length;j++) { inputNodes[j].style.visibility='visible'; } for (j=0;j<spanNode.length;j++) { if(spanNode[j].getAttribute("class")=="history-user") { spanNode[j].setAttribute("class", className) } } } } function deluxeHistoryLoader() { if (document.URL.indexOf("&action=history")==-1) return; getBots(); } addLoadEvent(deluxeHistoryLoader) /*</pre> == Pré-initialisation de certaines pages == <pre>*/ //============================================================ // // Fonctions de remplissage automatique // //============================================================ /*</pre> === Citation du jour === <pre>*/ function InitQOTD(page_name) { var cbeg = '<!--Remplissez les champs citation, auteur et article et sauvegardez la page. -->'; var template = '{{' + 'subst:' + 'Citation du jour/Préchargement' + '\n' + '|citation=\n' + '|auteur=\n' + '|article=\n' + '}}'; return cbeg + '\n' + template + '\n'; } /*</pre> === Espace Référence === <pre>*/ /* Pour les sous-pages de l'espace Référence (e.g. [[Référence:Page/Sous-page]]) */ function InitRefSub() { var cbeg = '<!-- Remplissez les champs ci-dessous et sauvegardez la page. Voyez la documentation de ' + '[[Modèle:' + 'Édition' + ']]' + ' pour la liste des champs disponibles. -->'; var beg = '{{' + 'subst:' + 'Édition début' + '}}'; var fields = '|titre=' + '\n' + '|auteur=' + '\n' + '|trad=' + '\n' + '|éditeur=' + '\n' + '|année=' + '\n' + '|lieu=' + '\n' + '|pages=' + '\n' + '|isbn='; var cend = '<!-- Ne pas modifier après cette ligne. -->'; var end = '{{' + 'subst:' + 'Édition fin' + '}}'; return cbeg + '\n' + beg + '\n' + fields + '\n' + cend + '\n' + end; } /* Pour les pages de l'espace Référence (e.g. [[Référence:Page]]) */ function InitRefPage() { var beg = '{{' + 'Référence' + '}}' + '\n\n== Éditions =='; var cbeg = "<!-- Attention : cette partie ne doit faire qu'inclure les sous-pages (une par édition). Pour ajouter une édition, il faut créer une nouvelle sous-page. -->"; var body = '\n<!-- Exemple : \n\n=== [[/Gallimard-Folio|Gallimard]] ===\n\n' + '{{' + '/Gallimard-Folio' + '}}\n\n-->'; return beg + "\n" + cbeg + "\n" + body; } function InitRef(page_name) { var retval; var index = page_name.indexOf('/'); if (index != -1) retval = InitRefSub(); else retval = InitRefPage(); return retval; } /*</pre> === Pré-initialisation === <pre>*/ var init_if_empty = new Array( new Array('R%C3%A9f%C3%A9rence:', InitRef), new Array('Mod%C3%A8le:Citation_du_jour/', InitQOTD) ); /** * Remplit la zone d'édition si elle est vide avec le texte retourné par * un pointeur de fonction sélectionné par le nom de la page. */ function InitPage() { // Tester si editdorm et wpTextbox1 existe sinon il y a une erreur lorsqu'on // ouvre l'historique d'une page qui match un des noms de init_if_empty[], // tester seulement le nom de la page n'est pas suffisant. if (document.editform == undefined || document.editform.wpTextbox1 == undefined) return; var text_area = document.editform.wpTextbox1; if (text_area.value.length != 0) return; ugly_url = 'http://fr.wikiquote.org/w/index.php?title='; for (var i = 0; i < init_if_empty.length; ++i) { var page_name = document.URL; var page_match = init_if_empty[i][0]; var index = page_name.indexOf(ugly_url + page_match); if (index != -1) { page_name = page_name.slice((ugly_url + page_match).length); page_name = page_name.split('&')[0]; page_name = decodeURI(page_name); page_name = page_name.replace(/_/g, ' ') text_area.value = init_if_empty[i][1](page_name); break; } } } addOnloadHook(InitPage); /*</pre> == Choix de l'affichage des références == <pre>*/ //============================================================ // // Choix de l'affichage des références // //============================================================ /** * Choix du mode d'affichage des références. * @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition ! */ function addBibSubsetMenu() { var specialBib = document.getElementById('specialBib'); if (specialBib) { specialBib.style.display = 'block'; var menu = "<select style=\"display:inline;\" onChange=\"chooseBibSubset(selectedIndex)\">"; menu += "<option>Liste</option>"; menu += "<option>WikiNorme</option>"; menu += "<option>BibTeX</option>"; menu += "<option>ISBD</option>"; menu += "<option>ISO690</option>"; menu += "</select>"; specialBib.innerHTML = specialBib.innerHTML + menu; } /* default subset - try to use a cookie some day */ chooseBibSubset(0); } /* select subsection of special characters */ function chooseBibSubset(s) { var l = document.getElementsByTagName('div'); for (var i = 0; i < l.length ; i++) { if(l[i].className == 'BibList') l[i].style.display = s == 0 ? 'block' : 'none'; else if(l[i].className == 'WikiNorme') l[i].style.display = s == 1 ? 'block' : 'none'; else if(l[i].className == 'BibTeX') l[i].style.display = s == 2 ? 'block' : 'none'; else if(l[i].className == 'ISBD') l[i].style.display = s == 3 ? 'block' : 'none'; else if(l[i].className == 'ISO690') l[i].style.display = s == 4 ? 'block' : 'none'; } } addOnloadHook(addBibSubsetMenu); /*</pre> == Style des pages du salon == <pre>*/ /** * Transformer les pages du Bistro en page de discussion */ function DiscussionBistro() { if( (wgPageName.search('Wikiquote:Le_Salon') != -1) ) addClass(document.body, 'salon'); } addOnloadHook(DiscussionBistro); /* </pre> == Catégories cachées == <pre> */ /** * Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) * à la manière des boîtes déroulantes */ function hiddencat() { var cl = document.getElementById('catlinks'); if(!cl) return; var hc = document.getElementById('mw-hidden-catlinks'); if(!hc) return; var nc = document.getElementById('mw-normal-catlinks'); if(!nc) { var ahc = '<div id="mw-normal-catlinks"><a href="/wiki/Cat%C3%A9gorie:Accueil" title="Catégorie:Accueil">Catégories</a> : <span dir="ltr"><a onclick="javascript:toggleHiddenCats();" id="mw-hidden-cats-link" style="cursor:pointer; color:black;" title="Cet article contient des catégories cachées">[+]</a></span></div>'; document.getElementById('catlinks').innerHTML = ahc + cl.innerHTML; } else if( isClass(hc, 'mw-hidden-cats-hidden') ) { var ahc = ' | <a onclick="javascript:toggleHiddenCats();" id="mw-hidden-cats-link" style="cursor:pointer; color:black;" title="Cet article contient des catégories cachées">[+]</a>'; document.getElementById('mw-normal-catlinks').innerHTML += ahc; } } function toggleHiddenCats() { var hc = document.getElementById('mw-hidden-catlinks'); if( isClass(hc, 'mw-hidden-cats-hidden') ) { removeClass(hc, 'mw-hidden-cats-hidden'); addClass(hc, 'mw-hidden-cat-user-shown'); document.getElementById('mw-hidden-cats-link').innerHTML = '[–]'; } else { removeClass(hc, 'mw-hidden-cat-user-shown'); addClass(hc, 'mw-hidden-cats-hidden'); document.getElementById('mw-hidden-cats-link').innerHTML = '[+]'; } } addOnloadHook(hiddencat); /* </pre> */