« Utilisateur:Pinocchio/citation du jour.js » : différence entre les versions

De BoyWiki
Aucun résumé des modifications
(efface fonction inutile)
 
(98 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
/* Ajoute une citation dans la page de préparation des citations - BoyWiki:Accueil/Citation du jour */
/* les citations sont préparées pour n jours suivants */


function update_citation_du_jour() {


   /* seulement pour page Accueil et utilisateur ayant droit */
/* Retourne la date formatée yyyymmdd */
   //if (document.body.className.match(/page-Accueil/) == null) return;
 
   if (document.body.className.match(/page-Utilisateur_Pinocchio/) == null) return;
function formatdateyyyymmdd(obj) {
   if (wgUserGroups && wgUserGroups.join(" ").match(/scribe|sysop|bureaucrat/) == null) return;
   var yer = obj.getFullYear();
  if (wgAction != 'view') return;
  var mon = (obj.getMonth() + 1);
  var day = obj.getDate();
  if (mon < 10) mon = '0'+mon;
  if (day < 10) day = '0'+day;
  return yer.toString()+mon.toString()+day.toString();
}
 
 
 
 
/* Affecte un identifiant à chaque citation utilisant le modèle Extrait
/* une seule fois au moment de sa création
/* utilisé pour sélection aléatoire citation du jour
/* lancé par submit */
 
function ident_citation_du_jour() {
   // contenu zone édition
  if (document.forms['editform'].elements['wpTextbox1'] == undefined) return true;
  // seulement les pages articles de l'espace principal (ns0)
  if (wgNamespaceNumber != 0) return true;
   var content = document.forms['editform'].elements['wpTextbox1'].value;
 
  // recherche chaines modèles {{Extrait}}
  var content = content.split(/\{\{[Ee]xtrait\|/g);
  if (content == null) return;
 
   // copie texte zone edit avant premier {{extrait}}
  var buf = content[0];
  // pour tout les modèles trouvés
  for (var m = 1; m < content.length ; m++) {
      // recherche fin modèle (parenthèses fermeture) - extraction contenu
      var open = 1;
      var close = 0;
      for (var i = 0; i < content[m].length ; i++) {
        if (content[m][i] == '{' && content[m][i+1] == '{') {open++; i++;}
        if (content[m][i] == '}' && content[m][i+1] == '}') {close++; i++;}
        if (open == close) break;
      }
      var submodl = content[m].substr(0,i-1);


  /* init syntaxe requete serveur */
      // controle args (si id déjà affecté ou cdj=non)
  if (window.XMLHttpRequest) { // Firefox
      if (! submodl.match(/^id=[0-9]{6,9}\||^ ?cdj=non ?\|/)) {
      xhr_object = new XMLHttpRequest();
        // génére nombre aléatoire entre 1000000 et 9999999
       xhr_object2 = new XMLHttpRequest();
        var rdm = Math.floor(8999999 * Math.random()) + 1000000;
        // recrée syntaxe modèle avec id
        var tmp = '{{Extrait|id='+rdm+'|'+submodl+'}}';
       } else {
        // recrée modèle orig
        var tmp = '{{Extrait|'+submodl+'}}';
      }
      // ajoute contenu modèle + texte restant après fin modèle
      buf += tmp;
      buf += content[m].substr(i+1);
   }
   }
  else if (window.ActiveXObject) { // IE
      xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
      xhr_object2 = new ActiveXObject("Msxml2.XMLHTTP");
  }
  else return;
    
    
   /* init requete serveur - get page préparation des citations */
   // insertion modifs dans zone edit
   xhr_object.open('GET', '/w/index.php?title=Utilisateur:Pinocchio/Test2&action=edit', false);
   document.forms['editform'].elements['wpTextbox1'].value = buf;
   xhr_object.send('');
}
   if (xhr_object.readyState == 4 && xhr_object.status == 200) {
 
      var pagedit = xhr_object.responseText.substr(4000);
 
 
/* Affecte un identifiant à chaque commentaire d'image utilisant le modèle {{Image texte}}
/* une seule fois au moment de sa création
/* utilisé pour sélection aléatoire image du jour
/* lancé par submit */
 
function ident_image_du_jour() {
   if (document.forms['editform'].elements['wpTextbox1'] == undefined) return true;
  // seulement les pages commentaires images
   if (! wgPageName.match(/BoyWiki:Commentaires_des_images/)) return true;
  // contenu zone édition
  var content = document.forms['editform'].elements['wpTextbox1'].value;
 
  // recherche chaines modèles {{Image texte}}
  var content = content.split(/\{\{[Ii]mage texte\|/g);
  if (content == null) return;


      /* copie contenu <textarea> en conservant les \n */
  // copie texte zone edit avant premier {{Image texte}}
      var idxtxta = pagedit.search(/<textarea/i);
  var buf = content[0];
       if (idxtxta >0) {
  // pour tout les modèles trouvés
        var strtxta = '';
  for (var m = 1; m < content.length ; m++) {
        for (var i = idxtxta; i < pagedit.length; i++) {
      // recherche fin modèle (parenthèses fermeture) - extraction contenu
            strtxta += pagedit[i];
      var open = 1;
            if (pagedit[i] == '>' && pagedit[i-1] == 'a' && pagedit[i-2] == 'e' && pagedit[i-3] == 'r' && pagedit[i-9] == '/' && pagedit[i-10] == '<') break;
       var close = 0;
            if (pagedit[i] == '>' && pagedit[i-1] == 'A' && pagedit[i-2] == 'E' && pagedit[i-3] == 'R' && pagedit[i-9] == '/' && pagedit[i-10] == '<') break;
      for (var i = 0; i < content[m].length ; i++) {
        }
        if (content[m][i] == '{' && content[m][i+1] == '{') {open++; i++;}
        if (content[m][i] == '}' && content[m][i+1] == '}') {close++; i++;}
        if (open == close) break;
       }
       }
       strtxta = strtxta.replace(/<textarea[^>]*>(.*)<\/textarea>/i, '$1');
       var submodl = content[m].substr(0,i-1);
  }
  else return;


  /* init date du jour - date min - date max */
      // controle args (si id déjà affecté ou idj=non)
  var now = new Date();
      if (! submodl.match(/^id=[0-9]{6,9}\||^ ?idj=non ?\|/)) {
  var today = formatdateyyyymmdd(now);
        // génére nombre aléatoire entre 1000000 et 9999999
  now.setDate(now.getDate() - 2);
        var rdm = Math.floor(8999999 * Math.random()) + 1000000;
  var minday = formatdateyyyymmdd(now);
        // recrée syntaxe modèle avec id
  now.setDate(now.getDate() + 10);
        var tmp = '{{Image texte|id='+rdm+'|'+submodl+'}}';
  var maxday = formatdateyyyymmdd(now);
      } else {
alert(today+' '+minday+' '+maxday);
        // recrée modèle orig
 
        var tmp = '{{Image texte|'+submodl+'}}';
  /* découpe contenu de textarea (= sous-page citation du jour) par cas du switch */
  tabswtxta = strtxta.split(/\n ?\| ?/);
  /* conserve début page jusqu'à switch */
  var buf = tabswtxta[0]+'\n';
  var max = 0;
  /* parcourt les dates élimine les cas obsolètes et ajoute à buf les cas conservés */
  for (var i = 1; i < tabswtxta.length ; i++) {
      var cas = tabswtxta[i].match(/^[0-9]{8}=/);
      if (cas >= minday+'=') {
        buf += '| '+tabswtxta[i]+'\n';
        if (cas > max) max = cas;
       }
       }
      // ajoute contenu modèle + texte restant après fin modèle
      buf += tmp;
      buf += content[m].substr(i+1);
   }
   }


   /* si nécessaire génére requête recherche nouvelle citation */
   // insertion modifs dans zone edit
  document.forms['editform'].elements['wpTextbox1'].value = buf;
}






  /* ajoute fin switch */
  buf += '|#default=\n}}';
alert(buf);


/* Prépare lots de citations et images pour les jours suivants
/* Création page de lancement manuel */


function prepare_citation_du_jour() {
// seulement pour page Accueil/Prépare et utilisateur ayant droit écriture dans sous-page Accueil
  if (wgPageName != 'BoyWiki:Accueil/Citation_du_jour_Prepare') return;
  if (wgUserGroups == null || wgUserGroups.join(" ").match(/user|sysop|bureaucrat/) == null) return;
  if (wgAction != 'view') return;


  // créat div déroulement procédure
  var progressop = document.createElement('div');
  progressop.setAttribute('id', 'progress_op');
  progressop.style.textAlign = 'center';
  // ajout boutons lancement
  progressop.innerHTML = '<button type="button" style="margin:20px;" value="" onclick="prepare_cdj_idj_load(\'c\')" />Citations</button>';
  progressop.innerHTML += '<button type="button" style="margin:20px;" value="" onclick="prepare_cdj_idj_load(\'i\')" />Images</button>';
  document.getElementById('bodyContent').appendChild(progressop);
}


addOnloadHook(prepare_citation_du_jour);




/* suite lancée par action boutons */


var newtxt=buf;
/* Chargement de la page code avant exec */
function prepare_cdj_idj_load(q) {
  importScript('Utilisateur:Pinocchio/citations_images_du_jour.js');
  setTimeout(function() {prepare_cdj_idj_load_wait(q);},500);
}


/* Attente fin chargement avant exec */
function prepare_cdj_idj_load_wait(q) {
  if (typeof(getabcitationperpage) == 'function') {
      switch(q){
        case 'c': prepare_cdj_exec(); break;
        case 'i': prepare_idj_exec(); break;
      }
  }
  else var x = setTimeout(function() {prepare_cdj_idj_load_wait(q);},500);
}


  /* récup éléments du formulaire */
  pagedit = pagedit.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 citation du jour';


//alert(startime+'  '+editime+'  '+editoken+'  '+autosummary);
/************************/
//alert(strtxta);


  /* init requete serveur - maj sous-page Accueil/Citation */
/* Bouton création sous-pages Commentaires des images */
  var boundary = '--------------23242526272829';
  var data = '';
  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', false);
function creatimgtxt_start() {
   //xhr_object.setRequestHeader("Host", "fr.boywiki.org");
   /* seulement pour page commentaires des images et utilisateur ayant droit écriture */
   xhr_object.setRequestHeader("Charset", "utf-8");
   if (wgPageName != 'BoyWiki:Commentaires_des_images') return;
   xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary);
   if (wgUserGroups == null || wgUserGroups.join(" ").match(/user|sysop|bureaucrat/) == null) return;
  xhr_object.setRequestHeader("Content-Length", String(data.length));
   if (wgAction != 'view') return;
   xhr_object.send(data);


alert(xhr_object.readyState+'   '+xhr_object.status);
  // affiche bouton lancement
  var ctnr = document.getElementById('creatimgtxt');
  var contxt = '<button type="button" style="margin:20px;" value="" onclick="creatimgtxt_load()" />Créer une nouvelle sous-page commentaire</button>';
  ctnr.innerHTML = contxt;
}


}
addOnloadHook(creatimgtxt_start);


addOnloadHook(update_citation_du_jour);


/* suite lancée par action bouton */


/* Chargement de la page code avant */
function creatimgtxt_load() {
  importScript('Utilisateur:Pinocchio/création_commentaire_image.js');
  setTimeout("creatimgtxt_load_wait()",500);
}


/* Retourne la date formatée yyyymmdd */
/* Attente fin chargement code */
function formatdateyyyymmdd(obj) {
function creatimgtxt_load_wait() {
   var yer = obj.getFullYear();
   if (typeof(creatimgtxt_exec) != 'function') setTimeout("creatimgtxt_load_wait()",500);
  var mon = (obj.getMonth() + 1);
   else creatimgtxt_form();
  var day = obj.getDate();
  if (mon < 10) mon = '0'+mon;
   if (day < 10) day = '0'+day;
  return yer+mon+day;
}
}

Dernière version du 28 avril 2014 à 08:07


/* 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.toString()+mon.toString()+day.toString();
}




/* Affecte un identifiant à chaque citation utilisant le modèle Extrait
/* une seule fois au moment de sa création
/* utilisé pour sélection aléatoire citation du jour
/* lancé par submit */

function ident_citation_du_jour() {
   // contenu zone édition
   if (document.forms['editform'].elements['wpTextbox1'] == undefined) return true;
   // seulement les pages articles de l'espace principal (ns0)
   if (wgNamespaceNumber != 0) return true;
   var content = document.forms['editform'].elements['wpTextbox1'].value;

   // recherche chaines modèles {{Extrait}}
   var content = content.split(/\{\{[Ee]xtrait\|/g);
   if (content == null) return;

   // copie texte zone edit avant premier {{extrait}}
   var buf = content[0];
   // pour tout les modèles trouvés
   for (var m = 1; m < content.length ; m++) {
      // recherche fin modèle (parenthèses fermeture) - extraction contenu
      var open = 1;
      var close = 0;
      for (var i = 0; i < content[m].length ; i++) {
         if (content[m][i] == '{' && content[m][i+1] == '{') {open++; i++;}
         if (content[m][i] == '}' && content[m][i+1] == '}') {close++; i++;}
         if (open == close) break;
      }
      var submodl = content[m].substr(0,i-1);

      // controle args (si id déjà affecté ou cdj=non)
      if (! submodl.match(/^id=[0-9]{6,9}\||^ ?cdj=non ?\|/)) {
         // génére nombre aléatoire entre 1000000 et 9999999
         var rdm = Math.floor(8999999 * Math.random()) + 1000000;
         // recrée syntaxe modèle avec id
         var tmp = '{{Extrait|id='+rdm+'|'+submodl+'}}';
      } else {
         // recrée modèle orig
         var tmp = '{{Extrait|'+submodl+'}}';
      }
      // ajoute contenu modèle + texte restant après fin modèle
      buf += tmp;
      buf += content[m].substr(i+1);
   }
   
   // insertion modifs dans zone edit
   document.forms['editform'].elements['wpTextbox1'].value = buf;
}



/* Affecte un identifiant à chaque commentaire d'image utilisant le modèle {{Image texte}}
/* une seule fois au moment de sa création
/* utilisé pour sélection aléatoire image du jour
/* lancé par submit */

function ident_image_du_jour() {
   if (document.forms['editform'].elements['wpTextbox1'] == undefined) return true;
   // seulement les pages commentaires images
   if (! wgPageName.match(/BoyWiki:Commentaires_des_images/)) return true;
   // contenu zone édition
   var content = document.forms['editform'].elements['wpTextbox1'].value;

   // recherche chaines modèles {{Image texte}}
   var content = content.split(/\{\{[Ii]mage texte\|/g);
   if (content == null) return;

   // copie texte zone edit avant premier {{Image texte}}
   var buf = content[0];
   // pour tout les modèles trouvés
   for (var m = 1; m < content.length ; m++) {
      // recherche fin modèle (parenthèses fermeture) - extraction contenu
      var open = 1;
      var close = 0;
      for (var i = 0; i < content[m].length ; i++) {
         if (content[m][i] == '{' && content[m][i+1] == '{') {open++; i++;}
         if (content[m][i] == '}' && content[m][i+1] == '}') {close++; i++;}
         if (open == close) break;
      }
      var submodl = content[m].substr(0,i-1);

      // controle args (si id déjà affecté ou idj=non)
      if (! submodl.match(/^id=[0-9]{6,9}\||^ ?idj=non ?\|/)) {
         // génére nombre aléatoire entre 1000000 et 9999999
         var rdm = Math.floor(8999999 * Math.random()) + 1000000;
         // recrée syntaxe modèle avec id
         var tmp = '{{Image texte|id='+rdm+'|'+submodl+'}}';
      } else {
         // recrée modèle orig
         var tmp = '{{Image texte|'+submodl+'}}';
      }
      // ajoute contenu modèle + texte restant après fin modèle
      buf += tmp;
      buf += content[m].substr(i+1);
   }

   // insertion modifs dans zone edit
   document.forms['editform'].elements['wpTextbox1'].value = buf;
}




/* Prépare lots de citations et images pour les jours suivants
/* Création page de lancement manuel */

function prepare_citation_du_jour() {
// seulement pour page Accueil/Prépare et utilisateur ayant droit écriture dans sous-page Accueil
   if (wgPageName != 'BoyWiki:Accueil/Citation_du_jour_Prepare') return;
   if (wgUserGroups == null || wgUserGroups.join(" ").match(/user|sysop|bureaucrat/) == null) return;
   if (wgAction != 'view') return;

   // créat div déroulement procédure
   var progressop = document.createElement('div');
   progressop.setAttribute('id', 'progress_op');
   progressop.style.textAlign = 'center';
   // ajout boutons lancement
   progressop.innerHTML = '<button type="button" style="margin:20px;" value="" onclick="prepare_cdj_idj_load(\'c\')" />Citations</button>';
   progressop.innerHTML += '<button type="button" style="margin:20px;" value="" onclick="prepare_cdj_idj_load(\'i\')" />Images</button>';
   document.getElementById('bodyContent').appendChild(progressop);
}

addOnloadHook(prepare_citation_du_jour);


/* suite lancée par action boutons */

/* Chargement de la page code avant exec */
function prepare_cdj_idj_load(q) {
   importScript('Utilisateur:Pinocchio/citations_images_du_jour.js');
   setTimeout(function() {prepare_cdj_idj_load_wait(q);},500);
}

/* Attente fin chargement avant exec */
function prepare_cdj_idj_load_wait(q) {
   if (typeof(getabcitationperpage) == 'function') {
      switch(q){
         case 'c': prepare_cdj_exec(); break;
         case 'i': prepare_idj_exec(); break;
      }
   }
   else var x = setTimeout(function() {prepare_cdj_idj_load_wait(q);},500);
}


/************************/

/* Bouton création sous-pages Commentaires des images */

function creatimgtxt_start() {
   /* seulement pour page commentaires des images et utilisateur ayant droit écriture */
   if (wgPageName != 'BoyWiki:Commentaires_des_images') return;
   if (wgUserGroups == null || wgUserGroups.join(" ").match(/user|sysop|bureaucrat/) == null) return;
   if (wgAction != 'view') return;

   // affiche bouton lancement
   var ctnr = document.getElementById('creatimgtxt');
   var contxt = '<button type="button" style="margin:20px;" value="" onclick="creatimgtxt_load()" />Créer une nouvelle sous-page commentaire</button>';
   ctnr.innerHTML = contxt;
}

addOnloadHook(creatimgtxt_start);


/* suite lancée par action bouton */

/* Chargement de la page code avant */
function creatimgtxt_load() {
   importScript('Utilisateur:Pinocchio/création_commentaire_image.js');
   setTimeout("creatimgtxt_load_wait()",500);
}

/* Attente fin chargement code */
function creatimgtxt_load_wait() {
   if (typeof(creatimgtxt_exec) != 'function') setTimeout("creatimgtxt_load_wait()",500);
   else creatimgtxt_form();
}