« Utilisateur:Pinocchio/index pages articles.js » : différence entre les versions

De BoyWiki
(code index des pages)
 
(query continue compatibility v1.26)
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
/* Affiche et trie l'ensemble des pages articles sur 2 tableaux (dates séparées) */
/* Affiche l'ensemble des pages articles sur 2 tableaux (dates séparées) */




Ligne 8 : Ligne 7 :
   if (document.getElementById('idx_pages_articles') == undefined) return;
   if (document.getElementById('idx_pages_articles') == undefined) return;


   var tbl = document.getElementById('idx_pages_articles');
   var tbla = document.getElementById('idx_pages_articles');
   var mode = 'alph';
   var tbld = document.getElementById('idx_pages_dates');
   var suite = 'A';
   var pagesdates = new Array();
   var pages = index_allpages_receive(tbl,mode,suite);
   var pagescents = new Array();
   pages.sort (alphacompare);
   var pagesartcs = new Array();
  // 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 suite = '!';
   var mode = 'date';
   while (suite!=null) {
  var suite = '0';
      // transfert liste allpages espace 0 sans redirect format xml
  var pages = index_allpages_receive(tbl,mode,suite);
      var xhr_object = createxhrobject();
  pages.sort (datemonthcompare);
      xhr_object.open('GET', '/fr/api.php?action=query&list=allpages&apfilterredir=nonredirects&apnamespace=0&aplimit=500&format=xml&rawcontinue&apfrom='+suite, false);
  // tri unique
      xhr_object.send('');
  for(i=1; i<pages.length; i++) {
       if (xhr_object.readyState != 4 || xhr_object.status != 200) return;
       if (pages[i] == pages[i-1]) pages.splice (i,1);
      //var pglst = xhr_object.responseText;
  }   
      var pglst = xhr_object.responseXML.documentElement;
  index_allpages_affich(pages,tbl,4);
}


addOnloadHook(index_allpages);
      if (pglst.getElementsByTagName('query-continue').length) {
        suite = pglst.getElementsByTagName('allpages')[0].getAttribute('apcontinue');
        var pgtab = pglst.getElementsByTagName('allpages')[1].childNodes;
      } else {
        suite = null;
        var pgtab = pglst.getElementsByTagName('allpages')[0].childNodes;
      }


      // recup chaque title et distrib selon type
      for (var i=0; i<pgtab.length; i++) {
        var ti = pgtab[i].getAttribute('title');
        // page siecle
        if (ti.match(/^[IVXer]+ siècle/)) {
            pagescents[pagescents.length] = ti;
            continue;
        }
        // page année
        if (ti.match(/^-?[0-9]+$/)) {
            pagesdates[pagesdates.length] = ti;
            continue;
        }
        // page mois
        if (ti.match(/^(Janv|Févr|Mars|Avri|Mai|Juin|Juil|Août|Sept|Octo|Nove|Déce)/) && ti.length < 10) {
            pagesdates[pagesdates.length] = ti;
            continue;
        }
        // pages jour
        if (ti.match(/^[0-9er]+ (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)$/)) {
            pagesdates[pagesdates.length] = ti;
            continue;
        }
        // page autre
        pagesartcs[pagesartcs.length] = ti;
      }   
  }


/* Transfert liste allpages espace 0 sans redirect format xml */
  // tri alpha
function index_allpages_receive(tbl,mode,suite) {
   pagesartcs.sort (alphacompare);
   var xhr_object = createxhrobject();
   pagesdates.sort (datecymcompare);
   xhr_object.open('GET', '/w/api.php?action=query&list=allpages&apfilterredir=nonredirects&apnamespace=0&aplimit=500&format=xml&apfrom='+suite, false);
   pagescents.sort (datecymcompare);
   xhr_object.send('');
   // tri unique
   if (xhr_object.readyState != 4 || xhr_object.status != 200) return;
   for(i=1; i<pagesartcs.length; i++) {
   var pglst = xhr_object.responseText;
       if (pagesartcs[i] == pagesartcs[i-1]) pagesartcs.splice (i,1);
  var pglst = xhr_object.responseXML.documentElement;
   }
 
  for(i=1; i<pagesdates.length; i++) {
  if (pglst.getElementsByTagName('query-continue').length) {
       if (pagesdates[i] == pagesdates[i-1]) pagesdates.splice (i,1);
       suite = pglst.getElementsByTagName('allpages')[0].getAttribute('apfrom');
      var pgtab = pglst.getElementsByTagName('allpages')[1].childNodes;
   } else {
      suite = null;
       var pgtab = pglst.getElementsByTagName('allpages')[0].childNodes;
   }
   }
   for(i=1; i<pagescents.length; i++) {
  // recup chaque title dans tabl
       if (pagescents[i] == pagescents[i-1]) pagescents.splice (i,1);
  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_allpages_affich(pagesartcs,tbla,2);
  index_allpages_affich(pagescents.concat(pagesdates),tbld,4);
}
}
addOnloadHook(index_allpages);




Ligne 69 : Ligne 84 :
function index_allpages_affich(pages,tbl,n) {
function index_allpages_affich(pages,tbl,n) {
   for(i=0; i<pages.length; i++) {
   for(i=0; i<pages.length; i++) {
       var lnk = "<a href=\"/wiki/"+escape(pages[i])+"\">"+pages[i]+"</a>";
       var lnk = "<a href=\"/fr/"+encodeURIComponent(pages[i])+"\">"+pages[i]+"</a>";
       if((i & (n-1)) ==0) var tr = document.createElement('tr');
       if((i & (n-1)) ==0) var tr = document.createElement('tr');
       var td = document.createElement('td');
       var td = document.createElement('td');

Dernière version du 15 décembre 2015 à 17:12

/* Affiche et trie 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 tbla = document.getElementById('idx_pages_articles');
   var tbld = document.getElementById('idx_pages_dates');
   var pagesdates = new Array();
   var pagescents = new Array();
   var pagesartcs = new Array();

   var suite = '!';
   while (suite!=null) {
      // transfert liste allpages espace 0 sans redirect format xml
      var xhr_object = createxhrobject();
      xhr_object.open('GET', '/fr/api.php?action=query&list=allpages&apfilterredir=nonredirects&apnamespace=0&aplimit=500&format=xml&rawcontinue&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('apcontinue');
         var pgtab = pglst.getElementsByTagName('allpages')[1].childNodes;
      } else {
         suite = null;
         var pgtab = pglst.getElementsByTagName('allpages')[0].childNodes;
      }

      // recup chaque title et distrib selon type
      for (var i=0; i<pgtab.length; i++) {
         var ti = pgtab[i].getAttribute('title');
         // page siecle
         if (ti.match(/^[IVXer]+ siècle/)) {
             pagescents[pagescents.length] = ti;
             continue;
         }
         // page année
         if (ti.match(/^-?[0-9]+$/)) {
             pagesdates[pagesdates.length] = ti;
             continue;
         }
         // page mois
         if (ti.match(/^(Janv|Févr|Mars|Avri|Mai|Juin|Juil|Août|Sept|Octo|Nove|Déce)/) && ti.length < 10) {
             pagesdates[pagesdates.length] = ti;
             continue;
         }
         // pages jour
         if (ti.match(/^[0-9er]+ (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)$/)) {
             pagesdates[pagesdates.length] = ti;
             continue;
         }
         // page autre
         pagesartcs[pagesartcs.length] = ti;
      }    
   }

   // tri alpha
   pagesartcs.sort (alphacompare);
   pagesdates.sort (datecymcompare);
   pagescents.sort (datecymcompare);
   // tri unique
   for(i=1; i<pagesartcs.length; i++) {
      if (pagesartcs[i] == pagesartcs[i-1]) pagesartcs.splice (i,1);
   }
   for(i=1; i<pagesdates.length; i++) {
      if (pagesdates[i] == pagesdates[i-1]) pagesdates.splice (i,1);
   }
   for(i=1; i<pagescents.length; i++) {
      if (pagescents[i] == pagescents[i-1]) pagescents.splice (i,1);
   }
   // affiche	
   index_allpages_affich(pagesartcs,tbla,2);
   index_allpages_affich(pagescents.concat(pagesdates),tbld,4);
}

addOnloadHook(index_allpages);


/* 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=\"/fr/"+encodeURIComponent(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);}
}