|
|
(347 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| /* La première lecture du jour de la page Accueil de la veille | | {{Sidebar |
| /* provoque son rafraichissement par purge du cache */
| | | name = News/In Brief |
| | | title =In Brief |
| | <br> |
| | | heading1 = [[File:Nathan Larson.jpg|100 px|center|link=Nathan Larson dies in custody]] |
| | | content1 = '''[[Nathan Larson dies in custody]]'''<br>[[File:News icon.jpg|30 px]] by Staff Writer - October 18, 2022 |
| | [[File:Transgender Pride flag.png|200 px|center|link=Transsexual group caves in to pressure]]{{clr}} |
| | '''[[Transsexual group caves in to pressure]]'''<br>[[File:News icon.jpg|30 px]] by Staff Writer - October 6, 2022 |
| | [[File:Scam-Alert-Fraud-Alert.jpg|200 px|center|link=Scam targets those on the registry]]{{clr}} |
| | '''[[Scam targets those on the registry]]'''<br> [[File:News icon.jpg]] Staff Writer, BoyWiki, Sept. 2, 2022 |
| | }} |
|
| |
|
| function refresh_citation_du_jour() {
| | [[Category:Project pages]] |
| // 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();
| |
| }
| |