Utilisateur:Pinocchio/index pages articles.js

De BoyWiki
Révision datée du 23 novembre 2010 à 22:40 par Pinocchio (discussion | contributions) (code index des pages)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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.
/* Affiche l'ensemble des pages articles sur 2 tableaux (dates séparées) */


function index_allpages() {

   // uniquement pour page index
   if (document.getElementById('idx_pages_articles') == undefined) return;

   var tbl = document.getElementById('idx_pages_articles');
   var mode = 'alph';
   var suite = 'A';
   var pages = index_allpages_receive(tbl,mode,suite);
   pages.sort (alphacompare);
   // tri unique
   for(i=1; i<pages.length; i++) {
      if (pages[i] == pages[i-1]) pages.splice (i,1);
   }	
   index_allpages_affich(pages,tbl,2);

   var tbl = document.getElementById('idx_pages_dates');
   var mode = 'date';
   var suite = '0';
   var pages = index_allpages_receive(tbl,mode,suite);
   pages.sort (datemonthcompare);
   // tri unique
   for(i=1; i<pages.length; i++) {
      if (pages[i] == pages[i-1]) pages.splice (i,1);
   }    
   index_allpages_affich(pages,tbl,4);
}

addOnloadHook(index_allpages);


/* Transfert liste allpages espace 0 sans redirect format xml */
function index_allpages_receive(tbl,mode,suite) {
   var xhr_object = createxhrobject();
   xhr_object.open('GET', '/w/api.php?action=query&list=allpages&apfilterredir=nonredirects&apnamespace=0&aplimit=500&format=xml&apfrom='+suite, false);
   xhr_object.send('');
   if (xhr_object.readyState != 4 || xhr_object.status != 200) return;
   var pglst = xhr_object.responseText;
   var pglst = xhr_object.responseXML.documentElement;

   if (pglst.getElementsByTagName('query-continue').length) {
      suite = pglst.getElementsByTagName('allpages')[0].getAttribute('apfrom');
      var pgtab = pglst.getElementsByTagName('allpages')[1].childNodes;
   } else {
      suite = null;
      var pgtab = pglst.getElementsByTagName('allpages')[0].childNodes;
   }
	
   // recup chaque title dans tabl
   var pages = new Array();
   for (var i=0; i<pgtab.length; i++) {
      var ti = pgtab[i].getAttribute('title');
      // cas particulier pour pages dates test dépassemt (articles après dates)
      if(mode=='date' && ti.charAt(0)>='A') {
         suite = null;
         break;
      }
      pages[pages.length] = ti;
   }
   return pages;
}


/* Affiche index des pages dans tableau respectif - n=nbre_cols */
function index_allpages_affich(pages,tbl,n) {
   for(i=0; i<pages.length; i++) {
      var lnk = "<a href=\"/wiki/"+escape(pages[i])+"\">"+pages[i]+"</a>";
      if((i & (n-1)) ==0) var tr = document.createElement('tr');
      var td = document.createElement('td');
      td.innerHTML = lnk;
      tr.appendChild(td);
      if(i & (n-1)) tbl.appendChild(tr);
   }
   // ajout dernier tr si incomplet
   if(i & (n-1)) {tbl.appendChild(tr);}
}