BoyWiki:Etenne's Palaestra: Difference between revisions
Replacing page with '{{Template:Image of the day}}' |
No edit summary |
||
Line 1: | Line 1: | ||
{{ | /* 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();
}