« 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 | var tbla = document.getElementById('idx_pages_articles'); | ||
var | var tbld = document.getElementById('idx_pages_dates'); | ||
var | var pagesdates = new Array(); | ||
var | var pagescents = new Array(); | ||
var pagesartcs = new Array(); | |||
var | 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; | |||
if ( | //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); | |||
for ( | |||
} | } | ||
// 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=\"/ | 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);}
}