BoyWiki:Etenne's Palaestra: Difference between revisions

From BoyWiki
Replacing page with '{{Template:Image of the day}}'
No edit summary
Line 1: Line 1:
{{Template:Image of the day}}
/* La première lecture du jour de la page Accueil de la veille
/* provoque son rafraichissement par purge du cache */
 
function refresh_citation_du_jour() {
  // seulement pour page Accueil (tout utilisateur a visiblement le droit de puger le cache)
  if (wgPageName != 'Accueil') return;
  if (wgAction != 'view') return;
 
  // récup date dernière mise en cache de la page
  var datecache = null;
  var nodes = document.getElementById('bodyContent').childNodes;
  for (var i=0; i < nodes.length ; i++) {
      if (nodes[i].nodeName == '#comment' && nodes[i].data.match(/timestamp [0-9]{14}/)) {
        datecache = nodes[i].data.match(/timestamp ([0-9]{8})/);
        break;
      }
  }
  if (datecache == null) return;
 
  // date actuelle locale
  var now = new Date();
  var datenow = formatdateyyyymmdd(now);
 
  if (datecache[1] < datenow) {
 
      // init objet requete serveur
      var xhr_object = createxhrobject();
      if (xhr_object == null) return;
 
      // init requete serveur - purge cache pour page Accueil
      xhr_object.open('POST', '/wiki/Accueil', true);
      xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr_object.setRequestHeader("Charset", "utf-8");
      // action sur fin requete async
      //xhr_object.onreadystatechange = function() {
      //  if (xhr_object.readyState == 4)  alert(xhr_object.status);
      //}
      xhr_object.send('action=purge');
  }
}
 
 
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.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(/scribe|sysop|fsc|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(/scribe|sysop|fsc|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();
}

Revision as of 12:24, 17 February 2013

/* La première lecture du jour de la page Accueil de la veille /* provoque son rafraichissement par purge du cache */

function refresh_citation_du_jour() {

  // seulement pour page Accueil (tout utilisateur a visiblement le droit de puger le cache)
  if (wgPageName != 'Accueil') return;
  if (wgAction != 'view') return;
  
  // récup date dernière mise en cache de la page
  var datecache = null;
  var nodes = document.getElementById('bodyContent').childNodes;
  for (var i=0; i < nodes.length ; i++) {
     if (nodes[i].nodeName == '#comment' && nodes[i].data.match(/timestamp [0-9]{14}/)) {
        datecache = nodes[i].data.match(/timestamp ([0-9]{8})/);
        break;
     }
  }
  if (datecache == null) return;
  // date actuelle locale
  var now = new Date();
  var datenow = formatdateyyyymmdd(now);
  if (datecache[1] < datenow) {
     // init objet requete serveur
     var xhr_object = createxhrobject();
     if (xhr_object == null) return;
     // init requete serveur - purge cache pour page Accueil
     xhr_object.open('POST', '/wiki/Accueil', true);
     xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     xhr_object.setRequestHeader("Charset", "utf-8");
     // action sur fin requete async
     //xhr_object.onreadystatechange = function() {
     //   if (xhr_object.readyState == 4)  alert(xhr_object.status);
     //}
     xhr_object.send('action=purge');
  }

}


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.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 Template:Extrait
  var content = content.split(/\{\{[Ee]xtrait\|/g);
  if (content == null) return;
  // copie texte zone edit avant premier Template: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 = 'Template:Extrait';
     } else {
        // recrée modèle orig
        var tmp = 'Template:Extrait';
     }
     // 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 Template: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 Template:Image texte
  var content = content.split(/\{\{[Ii]mage texte\|/g);
  if (content == null) return;
  // copie texte zone edit avant premier Template: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 = 'Template:Image texte';
     } else {
        // recrée modèle orig
        var tmp = 'Template:Image texte';
     }
     // 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(/scribe|sysop|fsc|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(/scribe|sysop|fsc|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();

}