Aller au contenu

Utilisateur:CreatixEA/Forum/Script

Une page de Wikipédia, l'encyclopédie libre.

/*

 */

 function addToLoad(func)
 {
  addEvent(window, 'load', func);
 }

 function addEvent(obj, event, func)
 {
  if (obj.addEventListener) {
  	obj.addEventListener(event, func, false);
  }
  else if (obj.attachEvent) {
  	obj.attachEvent('on' + event, func);
  }
 }

 var avant;
 var apres;
 var reponseAvant;
 var reponseApres;
 var ta;
 var msg;
 var forum;
 var decalage;

 function parseForum()
 {
   ta = document.getElementById('wpTextbox1');
   if (ta == null) { return; }
   
   var reg = new RegExp('([\?&])([a-z0-9]+)=([^=&]+)', 'gi');
   
   var tmp2 = reg.exec(document.URL);
   while (tmp2 != null)
   {
     if (tmp2[2] == 'forum') { forum = tmp2[3]; }
     else if (tmp2[2] == 'msg') { msg = tmp2[3]; }
     else if (tmp2[2] == 'decalage') { decalage = tmp2[3]; }
     else if (tmp2[2] == 'tmp') { tmp = tmp2[3]; }
     tmp2 = reg.exec(document.URL);
   }
   
   if (forum == 'repondre') { forum2 = 'previsualiser'; decalage++; }
   else if (forum == 'previsualiser') { forum2 = 'previsualiser'; }
   else if (forum == 'nouveau') { ta.innerHTML = ta.innerHTML.replace(new RegExp('wgUserName', 'gi'), wgUserName); return; }
   else { return; }

   document.getElementById('editform').action += '&forum=' + forum2 + '&msg=' + msg + '&decalage=' + decalage;
   
   reponseAvant = '{{' + '/Reponse|' + decalage + '|';
   reponseApres = '|[[Utilisateur:' + wgUserName + '|]] <small>[[Discussion Utilisateur:' + wgUserName + '|Discuter]]</small>|~~' + '~~' + '~|{{subst:' + '#time: U}}}}';
   
   if (forum == 'repondre')
   {
     var str = new String('|' + msg + '}}');
     var pos = ta.innerHTML.lastIndexOf(str);
     if (decalage > 1) { pos += str.length; }
     avant = ta.innerHTML.substring(0, pos);
     apres = ta.innerHTML.substring(pos);
     ta.innerHTML = '';
   }
   else if (forum == 'previsualiser')
   {
     var str = reponseAvant + decodeURI(tmp) + reponseApres;
     var txt = decodeText(ta.value);
     var pos = txt.lastIndexOf(str);
     avant = txt.substring(0, pos);
     apres = txt.substring(pos + str.length);
     ta.innerHTML = decodeURI(tmp);
   }
   
   addEvent(document.getElementById('wpPreview'), 'click', validateForumPreview);
   addEvent(document.getElementById('wpSave'), 'click', validateForum);
 }

 addToLoad(parseForum);

 function validateForumPreview()
 {
   validateForum(true);
 }

 function validateForum(preview)
 {
   ta = document.getElementById('wpTextbox1');
   tmp = ta.value;
   if (decalage == 1) { rl1 = ''; rl2 = '\n'; }
   else if (decalage > 1) { rl1 = '\n'; rl2 = ''; }
   ta.value = decodeText(avant) + rl1 + decodeText(reponseAvant) + tmp + decodeText(reponseApres) + rl2 + decodeText(apres);
   if (preview) { document.getElementById('editform').action += '&tmp=' + tmp; }
 }

 function decodeText(txt)
 {
   txt = txt.replace(/</g, '<');
   txt = txt.replace(/>/g, '>');
   txt = txt.replace(/&/g, '&');
   return txt;
 }

 /* 

*/