Utilisateur:Pinocchio/citation du jour.js

De BoyWiki

Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
  • Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
  • Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
  • Opera : appuyez sur Ctrl + F5.
/* La première lecture du jour de la page Accueil provoque le rafraichissement de la citation
/*  par maj d'une sous-page incluse (purge cache) */

function refresh_citation_du_jour() {
   /* seulement pour page Accueil et utilisateur ayant droit écriture dans sous-page Accueil */
   //if (document.body.className.match(/page-Accueil/) == null) return;
   if (wgPageName != 'Utilisateur:Pinocchio') return;
   if (wgUserGroups == null || wgUserGroups.join(" ").match(/scribe|sysop|fsc|bureaucrat/) == null) return;
   if (wgAction != 'view') return;

   /* init syntaxe requete serveur */
   if (window.XMLHttpRequest) { // Firefox
      xhr_object = new XMLHttpRequest();
   }
   else if (window.ActiveXObject) { // IE
      xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
   }
   else return;

   /* init date du jour à 0h au format wpEdittime */
   var now = new Date();
   var today = formatdateyyyymmdd(now);
   today = today+'010000';
   
   /* init requete serveur - get sous-page Accueil/refresh */
   xhr_object.open('GET', '/w/index.php?title=Utilisateur:Pinocchio/Test2&action=edit', true);
   /* action sur fin requete async */
   xhr_object.onreadystatechange = function() {
      if (xhr_object.readyState == 4 && xhr_object.status == 200) {
         /* récup éléments du formulaire */
         var pagedit = xhr_object.responseText.replace(/\n/g, '');
         var startime = pagedit.match(/wpSection.*name="wpStarttime/i);
         startime = startime[0].replace(/.*value="([0-9]+)" name="wpStarttime/i, '$1');
         var editime = pagedit.match(/wpStarttime.*name="wpEdittime/i);
         editime = editime[0].replace(/.*value="([0-9]+)" name="wpEdittime/i, '$1');
         var editoken = pagedit.match(/.{80}name="wpEditToken/i);
         editoken = editoken[0].replace(/.*value="([0-f+]+)" name="wpEditToken/i, '$1');
         var autosummary = pagedit.match(/wpAutoSummary.{1,30}value="[^"]+"/i);
         autosummary = autosummary[0].replace(/.*value="([0-f]+)"/i, '$1');
         var summary = 'Routine refresh citation du jour';
         var newtxt = '<!-- Cette page est utilisée pour le rafraichissement de la citation du jour.\nNe pas effacer. '+now+' -->';

         /* test date dernière édition de la sous-page */
         if (editime < today) {
            /* init requete serveur - maj sous-page Accueil/refresh */
            var boundary = '--------------23242526272829';
            var data = '--'+boundary+'\r\nContent-Disposition: form-data; name="wpAntispam"\r\n\r\n\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpSection"\r\n\r\n\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpScrolltop"\r\n\r\n0\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpStarttime"\r\n\r\n'+startime+'\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpEdittime"\r\n\r\n'+editime+'\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpEditToken"\r\n\r\n'+editoken+'\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpSummary"\r\n\r\n'+summary+'\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpAutoSummary"\r\n\r\n'+autosummary+'\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpSave"\r\n\r\nPublier\r\n';
            data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpTextbox1"\r\n\r\n'+newtxt+'\r\n';
            data += '--'+boundary+'--\r\n';

            xhr_object.open('POST', '/w/index.php?title=Utilisateur:Pinocchio/Test2&action=submit', true);
            //xhr_object.setRequestHeader("Host", "fr.boywiki.org");
            xhr_object.setRequestHeader("Charset", "utf-8");
            xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary);
            xhr_object.setRequestHeader("Content-Length", String(data.length));
            /* action sur fin requete async */
            xhr_object.onreadystatechange = function() {
               if (xhr_object.readyState == 4 && xhr_object.status == 200) {
                  /* reload page Accueil */
                  if(confirm('Cette page n’est plus à jour : recharger ?')) window.location.reload(true);
               }
            }
            xhr_object.send(data);
         }
      }
   }
   xhr_object.send('');
}


addOnloadHook(refresh_citation_du_jour);



/* Retourne la date formatée yyyymmdd */
function formatdateyyyymmdd(obj) {
   var yer = obj.getFullYear();
   var mon = (obj.getMonth() + 1);
   var day = obj.getDate();
   if (mon < 10) mon = '0'+mon;
   if (day < 10) day = '0'+day;
   return yer+mon+day;
}