Utilisateur:Mickachu/script/wikipompierScript-1.0
//====================================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 = '
Wikipompiers
+ ' '+ '
'
+ 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()+'\')"> -Vu</a>'; } else { texte=; }
l.obj.innerHTML='
+'Aides demandées:'+WikiFeuAide+'+texte+'
' +'Feux nouveaux:'+WikiFeuNew
'
+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
addOnloadHook(InitWikiPompiers);