Discussion MediaWiki:Gadget-QPreview.js

Un article de Wikipédia, l'encyclopédie libre.

Notes sur le script :

1er mai 2007
  • la prévisualisation du texte est fournie directement par le serveur, mais pas les catégories, ni les interwikis
  • les interwikis sont émulés en local, d'ailleurs ça ne marche pas quand ils sont tous sur une ligne unique, mais ça ne devrait pas arriver
  • je n'ai mis que les noms des interwikis des principales Wikipédia (+10 000 articles) pour ne pas surcharger le script, mais je n'ai pas testé pour voir si ça prenait beaucoup plus de temps avec toutes les langues (chargement + exécution)
  • les catégories ne sont pas affichées : il faudrait faire un deuxième appel au serveur pour vérifier si une catégorie existe

~ Seb35 [^_^] 1 mai 2007 à 18:06 (CEST)

20 juin 2007
  • les catégories présentes dans la page sont affichées (par un 2e appel au serveur), mais pas celles inclues dans des modèles.

~ Seb35 [^_^] 20 juin 2007 à 20:07 (CEST)

4 août 2007
  • l'ordre d'inclusion des catégories est préservé
  • résolution de qq bugs concernant les interwikis et catégories

~ Seb35 [^_^] 4 août 2007 à 16:29 (CEST)

[modifier] Erreur sur les interwikis

Bonjour, il y a une erreur dans ce script. Dans le traitement des interwikis, le script plante si les interwikis n'existent pas. Lorsque l'on modifie juste une section par exemple. Il faudrait rajouter :

"if(!result) {}"

comme par exemple :

// Traitement des interwikis
 qPreviewIw = '';
 reg3 = new RegExp('\\|'); reg4 = new RegExp('(.*)]'); reg5 = new RegExp(';(.*)');
 regexIw = new RegExp('\\[\\[(\\w{2,12}) *:(.*)\\]\\]', 'gi');
 result = qPreviewTextbox.match(regexIw);

 if(!result) {

   for(i=0;i<result.length;i++)
   {
      r1 = result[i].replace(regexIw, '$1');
      r2 = result[i].replace(regexIw, '$2').replace(reg1, '_');
      r3 = qPreviewLang.search(RegExp('\\|'+r1+'(?:;|\\|)', 'i'));
      if(r3 != -1) { r3 = qPreviewLang.substr(r3+1).replace(reg3,']'); r3 = reg4.exec(r3)[1]; qPreviewIw += '<li class="interwiki-'+r1+'"><a href="http://'+r1+'.wikipedia.org/wiki/'+r2+'">'+(r3.indexOf(';')!=-1 ? reg5.exec(r3)[1] : 'Langue \''+r1+'\'')+'</a></li>'; }
   }
   document.getElementById('p-lang').getElementsByTagName('ul')[0].innerHTML = qPreviewIw;
   if(qPreviewIw) document.getElementById('p-lang').style.display = 'block';
      else document.getElementById('p-lang').style.display = 'none';
 }

Je l'aurai bien fait moi-même mais il me semble que la page est protégé en écriture. Sinon c'est du super boulot, tous ces scripts Javascript. Merci --Pinpin 27 juillet 2007 à 17:22 (CEST)

Ok, c'est résolu. Je n'avais pas compris où était exactement le bug (quel comportement) jusqu'à ce que je l'expérimente par hasard ce matin, ce qui m'a rappelé ta remarque. ~ Seb35 [^_^] 4 août 2007 à 16:29 (CEST)
Ah merci car j'utilise firebug (une extension firefox) qui me ressortait sans arrêt des erreurs Javascript. --Pinpin 15 août 2007 à 16:45 (CEST)

[modifier] Un bug?

Bonjour! J'ai ajouté ce script, mais lorsque prévisualise toute une page, les liens interwikis entrent en conflits (voir capture d'écran). J'utilise IE7. Merci et au plaisir, Antaya - 15 novembre 2007 à 13:46 (CET)

J'ai pas réussi à reproduire ce que tu as pris en photo avec IE7, mais à mon avis ça peut venir de l'utilisation de innerHTML. ~ Seb35 [^_^] 11 janvier 2008 à 17:56 (CET)

[modifier] Qpreview et Firefox 3 bêta

Bonjour, ce script ne semble plus fonctionner avec Firefox 3. Ce n'est pas urgent mais c'est juste pour prévenir afin d'anticiper la sortie de la version finale de Firefox. Clin d'œil Il faudrait peut être aussi qu'une autre personne essaye pour confirmer. --Pinpin (d) 11 février 2008 à 14:28 (CET)