Utilisateur:Pinocchio/création commentaire image.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.
/* Formulaire création sous-pages Commentaires des images */
/* Lancé par bouton page BoyWiki:Commentaires des images */
/* creat. et maj lien page récapitul. */

function creatimgtxt_form() {
   var ctnr = document.getElementById('creatimgtxt');
   var contxt = '<fieldset><legend>Création nouvelle page commentaire</legend>';
   contxt += '<form method="post" action="#" name="creat_imgtxt_frm">';
   contxt += '<table border="0" align="center">';
   contxt += '<tr><td class="tit">Nom de l’image</td><td><input name="imgnm" type="text" size="100%" /></td></tr>';
   contxt += '<tr><td class="tit">Prénom et nom de l’artiste</td><td><input name="artnm" type="text" size="100%" /></td></tr>';
   contxt += '<tr><td class="tit">Description</td><td><textarea name="dscr" style="width:100%; height:4em;"></textarea></td></tr>';
   contxt += '<tr><td class="tit">Commentaire</td><td><textarea name="comt" style="width:100%; height:5em;"></textarea></td></tr>';
   contxt += '<tr><td></td><td><input type="button" name="valid" value="Valider" onclick="creatimgtxt_exec()" /></td></tr>';
   contxt += '</table></form></fieldset>';
   ctnr.innerHTML = contxt;
}

/* Creation page */
function creatimgtxt_exec() {
   // recup formulaire
   var frm = document.forms['creat_imgtxt_frm'];
   var imgnm = frm.elements['imgnm'].value;
   imgnm = imgnm.replace(/^Image:/,'');
   if (imgnm.length ==0) {
      alert('Nom image incorrect');
      return;
   }
   var artnm = frm.elements['artnm'].value;
   var dscr = frm.elements['dscr'].value;
   var comt = frm.elements['comt'].value;

   // init objet requete serveur
   var xhr_object = createxhrobject();
   if (xhr_object == null) return;

   // test si page existe deja
   var pg = imgnm.replace(/&/g,'\%26');
   pg = pg.replace(/\?/g,'\%3F');
   pg = 'BoyWiki:Commentaires_des_images/'+pg;
   xhr_object.open('GET', '/w/index.php?title='+pg+'&action=raw&ctype=text/plain', false);
   xhr_object.send('');
   if (xhr_object.readyState == 4 && xhr_object.status == 200) {
      alert('Cette page existe déjà');
      return;
   }

   // init contenu
   var sspgcmt = '{{Image texte|id='+Math.floor(8999999 * Math.random()) + 1000000;
   if (artnm.length >0) sspgcmt += '|artiste='+artnm;
   if (dscr.length >0) sspgcmt += '|descr='+dscr;
   sspgcmt += '|'+comt+'}}';

   // création souspage comment
   xhr_object.open('GET', '/w/index.php?title='+pg+'&action=edit', false);
   xhr_object.send('');
   if (xhr_object.readyState != 4 || xhr_object.status != 200) {
      alert('Erreur édition page '+pg);
      return;
   }

   // récup variables edit
   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 création référence biblio.';

   // init requete serveur - maj page édition
   var boundary = '--------------23242526272829';
   var data = '';
   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'+sspgcmt+'\r\n';
   data += '--'+boundary+'--\r\n';

   xhr_object.open('POST', '/w/index.php?title='+x+'&action=submit', false);
   xhr_object.setRequestHeader("Charset", "utf-8");
   xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary);
   xhr_object.setRequestHeader("Content-Length", String(data.length));
   xhr_object.send(data);

   if (xhr_object.readyState != 4 || xhr_object.status != 200) {
      alert('Erreur écriture sous-page '+imgnm);
      return;
   }

   // maj page commentaires des images
   pg = 'BoyWiki:Commentaires_des_images';
   xhr_object.open('GET', '/w/index.php?title='+pg+'&action=edit', false);
   xhr_object.send('');
   if (xhr_object.readyState != 4 || xhr_object.status != 200) {
      alert("Erreur edition page "+pg);
      return;
   }

   // recup contenu
   var pagedit = xhr_object.responseText.split(/<textarea[^>]*>|<\/textarea>/gi);
   var pgdit = pagedit[1];
   pgdit = pgdit.replace(/\n+$/,'');
   pgdit = pgdit.replace(/&lt;/g, '<');
   pgdit = pgdit.replace(/&gt;/g, '>');
   pgdit = pgdit.replace(/&amp;/g, '&');
   pgdit = pgdit.replace(/&quot;/g, '"');

   // init contenu ajouté
   var pgaj = '\n';
   pgaj += '[[Image:'+imgnm+'|100x100px|frameless|left]]\n';
   pgaj += '<div style="float:right;">[[BoyWiki:Commentaires des images/'+imgnm+'|Page commentaire]]</div>\n';
   pgaj += '{{Image commentée|'+imgnm+'}}\n';
   pgaj += '{{Clr}}\n----';

   // récup variables edit
   pagedit = pagedit[0]+pagedit[2];
   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 création référence biblio.';

   /* init requete serveur - maj page oeuvre */
   var boundary = '--------------23242526272829';
   var data = '';
   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'+pgdit+pgaj+'\r\n';
   data += '--'+boundary+'--\r\n';

   xhr_object.open('POST', '/w/index.php?title='+x+'&action=submit', false);
   xhr_object.setRequestHeader("Charset", "utf-8");
   xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary);
   xhr_object.setRequestHeader("Content-Length", String(data.length));
   xhr_object.send(data);
   
   if (xhr_object.readyState != 4 || xhr_object.status != 200) {
    alert('Erreur écriture page Commentaires des images');
    return;
   }

   alert('Fin création');
}