Modèle:Ligne Wikipompiers/MenuJavascript/Aide
Un article de Wikipédia, l'encyclopédie libre.
Le contenu de ce petit menu supplémentaire peut être modifié facilement par un wikipompier, directement dans ce modèle-même ; de préférence après discussion avec les autres wikipompiers. La modification est propagée à tous les inscrits. Un conseil : gardez ce menu le plus conscis possible ! Il se doit de rester sobre. Le menu inclut déjà, automatiquement, l'alerte quand il y en a une en cours (c'est sa raison d'être !) ; l'alarme est ainsi connue et suivie par les inscrits.
Enfin, après installation, cet outil est capable de compter depuis la page Wikipompiers le nombre de feux où une intervention est demandée, soit parce qu'ils sont nouveaux, soit parce qu'ils nécessitent de l'aide. Il indique et ajoute cette information automatiquement ( cette option est désactivable). De plus, l'information peut être affichée à la place par un message d'alerte donné par votre navigateur.
Sommaire |
[modifier] De quoi s'agit-il ?
[modifier] principe
Ce modèle renvoie un petit menu supplémentaire pour les wikipompiers qui le désirent. Grâce à ça, ils peuvent être averti d'une alerte en cours sur la {{Ligne Wikipompiers}} dès qu'ils consultent n'importe quelle page depuis leur compte Wikipédia !
Il reprend le principe de la {{Ligne Wikipompiers}}. Au lieu d'afficher le niveau d'alerte sur une page particulière, il est destiné à être appelé via javascript et ainsi s'afficher dans la barre de menu, sur toutes les pages consultées. C'est sa particularité.
Si la {{Ligne Wikipompiers}} peut être ajoutée par chaque wikipompier sur sa page de discussion (ou où bon lui semble) elle n'apporte aucune véritable alerte. Car il faut venir consulter une page précise pour savoir le niveau d'alerte. Ceux qui cherchent un vrai système d'alerte utiliseront cette nouvelle méthode.
Il offre en prime des liens directs vers les outils utiles aux wikipompiers.
[modifier] comportement
Le comportement se modifie par des options à la fin du code si vous n'aimez pas le comportement par défaut:
- Le menu peut être désactivé temporairement
- Le compteur (feux nouveaux ou demandes d'aide) offre plusieurs affichages possibles :
- désactivé;
- en bandeau à l'intérieur du menu (par défaut, le plus pratique);
- en message d'alerte lancé par le navigateur quand utile (pour les stressés).
Dans tous les cas, si votre navigateur accepte les cookies du site, il est possible de masquer le compteur jusqu'au prochain changement de la page Wikipompiers. (Il renouvelle néanmoins l'avertissement après quelques jours si aucun autre pompier n'est intervenu.)
[modifier] Paramètres
Le niveau d'alerte se change dans le Modèle:Ligne_Wikipompiers/Niveau. Tout changement propagera le nouveau niveau d'alerte.
Un message peut être ajouté indépendamment du niveau d'alerte, il se définit quant à lui dans le Modèle:Ligne Wikipompiers/Message.
(les options du menu se règlent à la fin de son code)
[modifier] Aperçu
Voilà ce que voient les volontaires inscrits :
- Remarque importante
- si vous baissez le niveau en dessous de 2, allez juste ensuite vérifier qu'un nouveau feu n'aurait pas été déposé entre temps (sans quoi revenir à un niveau 2).
Niveau | Descriptif | Aperçu |
---|---|---|
0 | Aucune alerte | (pas d'affichage) |
1 | Informations à lire |
Wikipompiers |
2 | Intervention demandée |
Wikipompiers |
3 (actuel) | Renforts demandés |
Wikipompiers |
4 | Alerte générale |
Wikipompiers |
La signification des différents niveaux est détaillée sur le modèle {{Ligne_Wikipompiers}}.
[modifier] Comment l'installer sur son compte ?
Si le menu ajouté est défini ici, dans ce modèle, il faut en revanche une particularité pour l'insérer dans son menu Wiki habituel. Une sorte d'inscription :
- Aller dans la page /monobook.js de votre compte utilisateur.
- Y entrer (ou ajouter) le code donné ci-après par un copier-coller
- Prévisualiser ; après plusieurs secondes le menu nouveau doit apparaître.
Dès lors, faire la sauvegarde définitive pour enregistrer cet ajout.
Remarque : les navigateurs ont un système dit de "cache" qui leur évite de tout recharger à chaque fois : ils gardent des copies locales des pages web. Si le nouveau menu s'est affiché en prévisualisation mais ne s'affiche plus après sauvegarde, c'est que votre navigateur utilise encore votre ancien monobook.js au lieu du nouveau. Vous pouvez si utile forcer la mise à jour de votre cache, par exemple dans les options du navigateur ou via des raccourcis comme CTRL+F5... N'hésitez pas à demander de l'aide en page de discussion.
Le code à inclure :
//====================================fonctions communes function MygetObj(name) { if (document.getElementById) { this.obj = document.getElementById(name); } else if (document.all) { this.obj = document.all[name]; } else if (document.layers) { this.obj = document.layers[name]; } } //endGetObj function getHTTPObject() { var xmlhttp = false; /* on teste la présence des fonctions */ /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ /* fin du test */ /* on essaie de créer l'objet si ce n'est pas déjà fait */ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } //==============================Outils Javascript Wikipompiers function InitWikiPompiers() { if (MenuJavascriptWPP || (OptionCompteurWPP==1)) { //menu à insérer var l = new MygetObj("column-one"); if (l.obj) {if (l.obj.innerHTML) { l.obj.innerHTML = '<div class="portlet" id="CadreAlerteWikipompiers">' + '<h5>Wikipompiers</h5><div class="pBody" id="MenuJavascriptWikipompiers">' + ' ' + '</div></div>' + l.obj.innerHTML; }}//fin deux if l.obj } // fin if menu à insérer if (MenuJavascriptWPP) { //on active d'abord le menu : LancementMenuJavascriptWPP(); // l'option compteur est lancée depuis cette fonction } else { // pas de MenuJavascriptWPP : if (OptionCompteurWPP) LancementOptionCompteurWPP(); } } //fin fonction InitWikipompiers //------- function LancementMenuJavascriptWPP() { var HTTPWikiPompiers = new getHTTPObject(); if (HTTPWikiPompiers) {// requête HTTPWikiPompiers: HTTPWikiPompiers.open('GET', 'http://fr.wikipedia.org/wiki/Modèle:Ligne_Wikipompiers/MenuJavascript/Menu?action=render&'+(new Date()).getTime(), true); //forçage mise à jour cache navigateur HTTPWikiPompiers.onreadystatechange = function () { if (HTTPWikiPompiers.readyState == 4) { var l = new MygetObj("MenuJavascriptWikipompiers"); if (l.obj) {if (l.obj.innerHTML) { l.obj.innerHTML = HTTPWikiPompiers.responseText; }} if (OptionCompteurWPP) LancementOptionCompteurWPP(); }//fin if readystate == 4 }// fin fonction onreadystatechange HTTPWikiPompiers.send(null); }//fin de requête HTTPWikiPompiers }// fin fonction LancementMenuJavascriptWPP // --------Option Compteur Wiki WPPCookN='stampMenuWikipompier='; //terminer par un '=' final if (document.cookie) { WPPCookOK=true; } else { document.cookie = WPPCookN+'0'; if (document.cookie) WPPCookOK=true; else WPPCookOK=false; } function CookBandeauWPPVu(stamp,dateGMT) {//cookN termine par '=' document.cookie = WPPCookN+stamp+'; expires=' + dateGMT+'; path=/'; var l = new MygetObj("CompteurWPP"); if (l.obj) {if (l.obj.innerHTML) l.obj.innerHTML=''; l.obj.style.display='none';} } function LancementOptionCompteurWPP() { var HTTPWikiPompiers = new getHTTPObject(); if (HTTPWikiPompiers) {// requête HTTPWikiPompiers: HTTPWikiPompiers.open('GET','http://fr.wikipedia.org/wiki/Wikipédia:Wikipompiers?action=render&ctype=text/css&'+(new Date()).getTime(), true); //forçage mise à jour cache navigateur HTTPWikiPompiers.onreadystatechange = function () { if (HTTPWikiPompiers.readyState == 4) { var Statuts = HTTPWikiPompiers.responseText.match(/class\s*=\s*"StatutWPP2"/gi); var WikiFeuNew=0; WikiFeuNew=(Statuts? Statuts.length : 0 ); Statuts = HTTPWikiPompiers.responseText.match(/class\s*=\s*"StatutWPP3"/gi) ; var WikiFeuAide=0; WikiFeuAide=(Statuts? Statuts.length : 0 ); Statuts=0; //récupération en-tête HTTP de date dernière mise à jour try {var stamp = HTTPWikiPompiers.getResponseHeader('ETag'); var istamp=stamp.indexOf('--'); } catch(e){var istamp=-1; var stamp=''; WPPCookOK=false;} if (istamp<0) {stamp='0';} else {stamp=stamp.substring(istamp+2,istamp+16);} // récupération ancien stamp dans cookie var cookDeb = document.cookie.indexOf(WPPCookN); var cookFIN = document.cookie.indexOf(';',cookDeb); var cookVal = document.cookie.substring(cookDeb+WPPCookN.length,cookFIN); //affichage du résultat s'il y en a un if ((WikiFeuAide+WikiFeuNew>0) && (cookVal!=stamp) ) { if (OptionCompteurWPP==1) { var l = new MygetObj("MenuJavascriptWikipompiers"); if (l.obj) {if (l.obj.innerHTML) { if (WPPCookOK) { texte='<a title="Masquer pour quelques temps OU jusqu\'au 1er changement de la page WPP" href="javascript:CookBandeauWPPVu('+stamp+',\''+(new Date((new Date()).getTime()+UpdateTimeWPP*24*3600000)).toGMTString()+'\')"> <i>-Vu</i></a>'; } else { texte=''; } l.obj.innerHTML='<div id="CompteurWPP" style="background:#FF0; border:solid #F00 thin;">' +'Aides demandées:'+WikiFeuAide+'<br>' +'Feux nouveaux:'+WikiFeuNew +texte+'</div>' +l.obj.innerHTML; }} } else if (OptionCompteurWPP==2) { if (WPPCookOK) { texte="\n\n(Ce message se réaffiche après quelques temps OU dès changement de la page WPP)"; } else { texte=''; } alert("Alertes Wikipompiers\n\nAides demandées:"+WikiFeuAide+"\nFeux nouveaux:"+WikiFeuNew+texte); CookBandeauWPPVu(stamp,(new Date((new Date()).getTime()+UpdateTimeWPP*24*3600000)).toGMTString()); } } // fin test si résultat à afficher }//fin if readystate == 4 }// fin fonction onreadystatechange HTTPWikiPompiers.send(null); }//fin de requête HTTPWikiPompiers } //fin fonction LancementOptionCompteurWPP //--------------Lancement commun au Menu et à l'Option MenuJavascriptWPP= true ; //pour désactiver temporairement le MenuJavascript WPP, // remplacer ci-dessus true par false. OptionCompteurWPP= 1 ; //modifier la valeur ci-dessus pour changer l'affichage du Compteur WPP, // (0=compteur désactivé / 1=bandeau dans le menu / 2=message navigateur) UpdateTimeWPP= 10 ; //compteur réaffiché après UpdateTimeWPP jours même sans changement addLoadEvent(InitWikiPompiers);