« Utilisateur:Pinocchio/yearnav.js » : différence entre les versions
De BoyWiki
(test nouvelle version) |
Aucun résumé des modifications |
||
(21 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 14 : | Ligne 14 : | ||
if (document.getElementById('yearnav') == undefined) return; | if (document.getElementById('yearnav') == undefined) return; | ||
/* import page yearnav_dates | /* import page yearnav_dates - tableau des pages années créées | ||
/* tableau yearnavdatestab[] généré par yearnav_collect() au moment de la publication */ | /* tableau yearnavdatestab[] généré par yearnav_collect() au moment de la publication */ | ||
/* maj fonctionne pour une page année incluant catégorie siècle seulement */ | /* maj fonctionne pour une page année incluant catégorie siècle seulement */ | ||
// init objet requete serveur | |||
var xhr_object = createxhrobject(); | |||
if (xhr_object == null) return; | |||
/* lecture page tableau dates */ | /* lecture page tableau dates */ | ||
xhr_object.open('GET', '/fr/index.php?title=Utilisateur:Pinocchio/yearnav_dates', false); | |||
xhr_object.send(''); | xhr_object.send(''); | ||
if (xhr_object.readyState == 4 && xhr_object.status == 200) { | if (xhr_object.readyState == 4 && xhr_object.status == 200) { | ||
Ligne 33 : | Ligne 29 : | ||
var txt = xhr_object.responseText.split(/<pre|<\/pre>/gi); | var txt = xhr_object.responseText.split(/<pre|<\/pre>/gi); | ||
txt = txt[1].replace(/^[^>]*>/,''); | txt = txt[1].replace(/^[^>]*>/,''); | ||
var tab = txt.split(/ | var tab = txt.split(/yearnav_tableau_dates ?= ?\[/); | ||
tab = tab[1].replace(/\ | tab = tab[1].replace(/\[|\]|\n/g,''); | ||
yearnavdatestab = | yearnavdatestab = tab.split(/,/); | ||
} | } | ||
Ligne 77 : | Ligne 73 : | ||
var lnk = 'nolnk'; | var lnk = 'nolnk'; | ||
if(yearnav_datexist(yearnavparam['yini'])) lnk = ''; | if(yearnav_datexist(yearnavparam['yini'])) lnk = ''; | ||
var str = '<a class="'+lnk+'" href="/ | var str = '<a class="'+lnk+'" href="/fr/'+yearnavparam['ymid']+'">'+yearnavparam['ymid']+'</a>'; | ||
var n = 1, m = -1; | var n = 1, m = -1; | ||
/* création dates */ | /* création dates */ | ||
Ligne 84 : | Ligne 80 : | ||
lnk = 'nolnk'; | lnk = 'nolnk'; | ||
if(yearnav_datexist(yearnavparam['ymid']+m)) lnk = ''; | if(yearnav_datexist(yearnavparam['ymid']+m)) lnk = ''; | ||
str = '<a class="'+lnk+'" href="/ | str = '<a class="'+lnk+'" href="/fr/'+(yearnavparam['ymid']+m)+'">'+(yearnavparam['ymid']+m--)+'</a> '+str; | ||
if (yearnavparam['ymid']+n == 0) n++; | if (yearnavparam['ymid']+n == 0) n++; | ||
lnk = 'nolnk'; | lnk = 'nolnk'; | ||
if(yearnav_datexist(yearnavparam['ymid']+n)) lnk = ''; | if(yearnav_datexist(yearnavparam['ymid']+n)) lnk = ''; | ||
str = str+' <a class="'+lnk+'" href="/ | str = str+' <a class="'+lnk+'" href="/fr/'+(yearnavparam['ymid']+n)+'">'+(yearnavparam['ymid']+n++)+'</a>'; | ||
} | } | ||
yearnavparam['bar'].innerHTML = str; | yearnavparam['bar'].innerHTML = str; | ||
Ligne 101 : | Ligne 97 : | ||
/* init siècle et millénaire */ | /* init siècle et millénaire */ | ||
if (yearnavparam['ymid'] > | if (yearnavparam['ymid'] > 999) { | ||
var x = Math.ceil(yearnavparam['ymid'] / 100); | var x = Math.ceil(yearnavparam['ymid'] / 100); | ||
yearnavparam['cen'].firstChild.href = '/ | yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle'; | ||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle'; | yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle'; | ||
x = Math.ceil(yearnavparam['ymid'] / 1000); | var x = Math.ceil(yearnavparam['ymid'] / 1000); | ||
yearnavparam['mil'].firstChild.href = '/ | yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire'; | ||
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire'; | yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire'; | ||
} else if (yearnavparam['ymid'] > 99) { | |||
var x = Math.ceil(yearnavparam['ymid'] / 100); | |||
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle'; | |||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire'; | |||
} else if (yearnavparam['ymid'] > 0) { | |||
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle'; | |||
yearnavparam['cen'].firstChild.title = 'Ier siècle'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire'; | |||
} else if (yearnavparam['ymid'] > -100) { | |||
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle_AEC'; | |||
yearnavparam['cen'].firstChild.title = 'Ier siècle AEC'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC'; | |||
} else if (yearnavparam['ymid'] > -1000) { | |||
var x = Math.floor(yearnavparam['ymid'] / 100); | |||
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC'; | |||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC'; | |||
} else { | } else { | ||
var x = Math.floor(yearnavparam['ymid'] / 100); | var x = Math.floor(yearnavparam['ymid'] / 100); | ||
yearnavparam['cen'].firstChild.href = '/ | yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC'; | ||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle | yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC'; | ||
var x = Math.floor(yearnavparam['ymid'] / 1000); | var x = Math.floor(yearnavparam['ymid'] / 1000); | ||
yearnavparam['mil'].firstChild.href = '/ | yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire_AEC'; | ||
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire | yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire AEC'; | ||
} | } | ||
} | } | ||
Ligne 164 : | Ligne 182 : | ||
var lnk = 'nolnk'; | var lnk = 'nolnk'; | ||
if(yearnav_datexist(newy)) lnk = ''; | if(yearnav_datexist(newy)) lnk = ''; | ||
var str = '<a class="'+lnk+'" href="/ | var str = '<a class="'+lnk+'" href="/fr/'+newy+'">'+newy+'</a>'; | ||
var n = 1, m = -1; | var n = 1, m = -1; | ||
for (var i = 1; i < 4 ; i++) { | for (var i = 1; i < 4 ; i++) { | ||
Ligne 170 : | Ligne 188 : | ||
lnk = 'nolnk'; | lnk = 'nolnk'; | ||
if(yearnav_datexist(newy+m)) lnk = ''; | if(yearnav_datexist(newy+m)) lnk = ''; | ||
str = '<a class="'+lnk+'" href="/ | str = '<a class="'+lnk+'" href="/fr/'+(newy + m)+'">'+(newy + m--)+'</a> '+str; | ||
if (newy + n == 0) n++; | if (newy + n == 0) n++; | ||
lnk = 'nolnk'; | lnk = 'nolnk'; | ||
if(yearnav_datexist(newy+n)) lnk = ''; | if(yearnav_datexist(newy+n)) lnk = ''; | ||
str = str+' <a class="'+lnk+'" href="/ | str = str+' <a class="'+lnk+'" href="/fr/'+(newy + n)+'">'+(newy + n++)+'</a>'; | ||
} | } | ||
yearnavparam['bar'].innerHTML = str; | yearnavparam['bar'].innerHTML = str; | ||
Ligne 188 : | Ligne 206 : | ||
/* init siècle et millénaire */ | /* init siècle et millénaire */ | ||
if (yearnavparam['ymid'] > | if (yearnavparam['ymid'] > 999) { | ||
var x = Math.ceil(yearnavparam['ymid'] / 100); | var x = Math.ceil(yearnavparam['ymid'] / 100); | ||
yearnavparam['cen'].firstChild.href = '/ | yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle'; | ||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle'; | yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle'; | ||
x = Math.ceil(yearnavparam['ymid'] / 1000); | var x = Math.ceil(yearnavparam['ymid'] / 1000); | ||
yearnavparam['mil'].firstChild.href = '/ | yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire'; | ||
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire'; | yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire'; | ||
} else if (yearnavparam['ymid'] > 99) { | |||
var x = Math.ceil(yearnavparam['ymid'] / 100); | |||
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle'; | |||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire'; | |||
} else if (yearnavparam['ymid'] > 0) { | |||
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle'; | |||
yearnavparam['cen'].firstChild.title = 'Ier siècle'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire'; | |||
} else if (yearnavparam['ymid'] > -100) { | |||
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle_AEC'; | |||
yearnavparam['cen'].firstChild.title = 'Ier siècle AEC'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC'; | |||
} else if (yearnavparam['ymid'] > -1000) { | |||
var x = Math.floor(yearnavparam['ymid'] / 100); | |||
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC'; | |||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC'; | |||
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC'; | |||
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC'; | |||
} else { | } else { | ||
var x = Math.floor(yearnavparam['ymid'] / 100); | var x = Math.floor(yearnavparam['ymid'] / 100); | ||
yearnavparam['cen'].firstChild.href = '/ | yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC'; | ||
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle | yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC'; | ||
var x = Math.floor(yearnavparam['ymid'] / 1000); | var x = Math.floor(yearnavparam['ymid'] / 1000); | ||
yearnavparam['mil'].firstChild.href = '/ | yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire_AEC'; | ||
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire | yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire AEC'; | ||
} | } | ||
Ligne 225 : | Ligne 265 : | ||
var u = Math.abs(num) % 10; | var u = Math.abs(num) % 10; | ||
return(tens[t]+unit[u]); | return(tens[t]+unit[u]); | ||
} | |||
function romantoarab(num) { | |||
var val = {I:1,V:5,X:10,L:50,C:100}; | |||
var a = 0; | |||
num = num.replace(/[^CLXVI]+/,''); | |||
var i = num.length; | |||
while (i--) { | |||
if (val[num[i]] < val[num[i+1]]) a -= val[num[i]]; | |||
else a += val[num[i]]; | |||
} | |||
return a; | |||
} | } | ||
Ligne 240 : | Ligne 292 : | ||
function yearnav_collect() { | function yearnav_collect() { | ||
if (wgNamespaceNumber != 0) return true; | if (wgNamespaceNumber != 0) return true; | ||
if (wgPageName == null || wgPageName.match(/[0-9 | if (wgPageName == null || wgPageName.match(/^-?[0-9]{1,4}$/) == null) return true; | ||
if (wgUserName == null) return true; | if (wgUserName == null) return true; | ||
if (wgAction != 'edit' && wgAction != 'submit') return true; | if (wgAction != 'edit' && wgAction != 'submit') return true; | ||
Ligne 247 : | Ligne 299 : | ||
if (document.forms['editform'] == undefined || document.forms['editform'].elements['wpTextbox1'] == undefined) return true; | if (document.forms['editform'] == undefined || document.forms['editform'].elements['wpTextbox1'] == undefined) return true; | ||
var content = document.forms['editform'].elements['wpTextbox1'].value; | var content = document.forms['editform'].elements['wpTextbox1'].value; | ||
if (content.match(/\[\[[Cc]atégorie: ?[IVX]+[er]+ [Ss]iècle.[^\]]*\]\]/) == null) return true; | if (content.match(/\[\[[Cc]atégorie: ?-?[IVX]+[er]+ [Ss]iècle.[^\]]*\]\]/) == null) return true; | ||
/* lecture page tableau dates - init syntaxe requete serveur */ | /* lecture page tableau dates - init syntaxe requete serveur */ | ||
var xhr_object = createxhrobject(); | |||
if (xhr_object == null) return; | |||
/* init requete serveur - get sous-page tableau */ | /* init requete serveur - get sous-page tableau */ | ||
xhr_object.open('GET', '/ | xhr_object.open('GET', '/fr/index.php?title=Utilisateur:Pinocchio/yearnav_dates&action=edit', false); | ||
xhr_object.send(''); | xhr_object.send(''); | ||
if (xhr_object.readyState == 4 && xhr_object.status == 200) { | if (xhr_object.readyState == 4 && xhr_object.status == 200) { | ||
/* recup contenu zone édition */ | /* recup contenu zone édition */ | ||
var txt = xhr_object.responseText.split(/ | var txt = xhr_object.responseText.split(/<\;pre|<\;\/pre>\;/gi); | ||
var newtab = txt[1].split(/yearnav_tableau_dates ?= ?\[|\]\n?/g); | |||
/* test date déjà collectée */ | /* test date déjà collectée */ | ||
yearnavdatestab = | yearnavdatestab = newtab[1].split(/,/); | ||
if(yearnav_datexist(wgPageName)) return true; | if(yearnav_datexist(wgPageName)) return true; | ||
/* remplace | /* remplace nouveau tableau au format txt et texte avant */ | ||
yearnavdatestab[yearnavdatestab.length] = wgPageName; | |||
var newtxt = | yearnavdatestab.sort; | ||
var newtxt = '<pre '+newtab[0]+'yearnav_tableau_dates = ['+yearnavdatestab.join(',')+']\n</pre>'; | |||
/* remplace html entities (dues à texte origine edit vers view) */ | |||
newtxt = newtxt.replace(/</g, '<'); | |||
newtxt = newtxt.replace(/>/g, '>'); | |||
newtxt = newtxt.replace(/&/g, '&'); | |||
newtxt = newtxt.replace(/"/g, '"'); | |||
/* récup éléments du formulaire */ | /* récup éléments du formulaire */ | ||
Ligne 301 : | Ligne 352 : | ||
data += '--'+boundary+'--\r\n'; | data += '--'+boundary+'--\r\n'; | ||
xhr_object.open('POST', '/ | xhr_object.open('POST', '/fr/index.php?title=Utilisateur:Pinocchio/yearnav_dates&action=submit', false); | ||
//xhr_object.setRequestHeader("Host", " | //xhr_object.setRequestHeader("Host", "www.boywiki.org"); | ||
xhr_object.setRequestHeader("Charset", "utf-8"); | xhr_object.setRequestHeader("Charset", "utf-8"); | ||
xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary); | xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary); |
Dernière version du 1 avril 2014 à 15:24
/* Yearnav - utilisé par le modèle Navigtemps */
/* Navigation à travers les années - destiné aux pages années
/* moyen d'accès aux pages des autres années, siècles ou millénaires */
var yearnavdatestab = new Array();
var yearnavparam = new Array();
function yearnav() {
/* si pas de modèle présent sur la page */
if (document.getElementById('yearnav') == undefined) return;
/* import page yearnav_dates - tableau des pages années créées
/* tableau yearnavdatestab[] généré par yearnav_collect() au moment de la publication */
/* maj fonctionne pour une page année incluant catégorie siècle seulement */
// init objet requete serveur
var xhr_object = createxhrobject();
if (xhr_object == null) return;
/* lecture page tableau dates */
xhr_object.open('GET', '/fr/index.php?title=Utilisateur:Pinocchio/yearnav_dates', false);
xhr_object.send('');
if (xhr_object.readyState == 4 && xhr_object.status == 200) {
/* récup contenu utile et init tab */
var txt = xhr_object.responseText.split(/<pre|<\/pre>/gi);
txt = txt[1].replace(/^[^>]*>/,'');
var tab = txt.split(/yearnav_tableau_dates ?= ?\[/);
tab = tab[1].replace(/\[|\]|\n/g,'');
yearnavdatestab = tab.split(/,/);
}
/* init barre dates event boutons shift */
yearnavparam['cdr'] = document.getElementById('yearnav');
yearnavparam['win'] = document.getElementById('yearwin');
yearnavparam['bar'] = document.getElementById('yearbar');
yearnavparam['cen'] = document.getElementById('yearbtnsc');
yearnavparam['mil'] = document.getElementById('yearbtnmc');
var btntab = 'yearbtnal yearbtnar yearbtnsl yearbtnsr yearbtnml yearbtnmr'.split(/ /);
for (var i = 0; i < btntab.length ; i++) {
document.getElementById(btntab[i]).onmousedown = yearnav_shift_start;
document.getElementById(btntab[i]).onmouseup = yearnav_shift_stop;
document.getElementById(btntab[i]).onmouseout = yearnav_shift_stop;
}
document.getElementById('yearbtnac').onclick = yearnav_init;
/* récup année initiale */
yearnavparam['yini'] = 0;
if (yearnavparam['bar'].firstChild.data) yearnavparam['yini'] = parseInt(yearnavparam['bar'].firstChild.data.replace(/\n/g,''));
if (yearnavparam['yini'] > 9990 || yearnavparam['yini'] < -9990) yearnavparam['yini'] = 0;
/* init barre dates initiales */
if (yearnavparam['yini'] == 0) {
var now = new Date();
yearnavparam['yini'] = parseInt(now.getFullYear());
}
document.getElementById('yearbtnac').title = 'Retour à '+yearnavparam['yini'];
yearnav_init();
}
addOnloadHook(yearnav);
/* date initiale */
function yearnav_init() {
yearnavparam['ymid'] = yearnavparam['yini'];
/* si lien vers page inexistant */
var lnk = 'nolnk';
if(yearnav_datexist(yearnavparam['yini'])) lnk = '';
var str = '<a class="'+lnk+'" href="/fr/'+yearnavparam['ymid']+'">'+yearnavparam['ymid']+'</a>';
var n = 1, m = -1;
/* création dates */
for (var i = 1; i < 4 ; i++) {
if (yearnavparam['ymid']+m == 0) m--;
lnk = 'nolnk';
if(yearnav_datexist(yearnavparam['ymid']+m)) lnk = '';
str = '<a class="'+lnk+'" href="/fr/'+(yearnavparam['ymid']+m)+'">'+(yearnavparam['ymid']+m--)+'</a> '+str;
if (yearnavparam['ymid']+n == 0) n++;
lnk = 'nolnk';
if(yearnav_datexist(yearnavparam['ymid']+n)) lnk = '';
str = str+' <a class="'+lnk+'" href="/fr/'+(yearnavparam['ymid']+n)+'">'+(yearnavparam['ymid']+n++)+'</a>';
}
yearnavparam['bar'].innerHTML = str;
yearnavparam['ylow'] = (yearnavparam['ymid'])+m+1;
yearnavparam['yhig'] = (yearnavparam['ymid'])+n-1;
/* ajuste espacement contenu à largeur fenêtre */
yearnavparam['bar'].style.wordSpacing = 0;
var lgbar = yearnavparam['bar'].offsetWidth;
var initwin = yearnavparam['win'].offsetWidth;
yearnavparam['bar'].style.wordSpacing = ((initwin - lgbar)/6)+'px';
/* init siècle et millénaire */
if (yearnavparam['ymid'] > 999) {
var x = Math.ceil(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle';
var x = Math.ceil(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire';
} else if (yearnavparam['ymid'] > 99) {
var x = Math.ceil(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire';
yearnavparam['mil'].firstChild.title = 'Ier millénaire';
} else if (yearnavparam['ymid'] > 0) {
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle';
yearnavparam['cen'].firstChild.title = 'Ier siècle';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire';
yearnavparam['mil'].firstChild.title = 'Ier millénaire';
} else if (yearnavparam['ymid'] > -100) {
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle_AEC';
yearnavparam['cen'].firstChild.title = 'Ier siècle AEC';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC';
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC';
} else if (yearnavparam['ymid'] > -1000) {
var x = Math.floor(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC';
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC';
} else {
var x = Math.floor(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC';
var x = Math.floor(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire_AEC';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire AEC';
}
}
/* lancée par flèches de navigation années/siècles/millénaires */
function yearnav_shift_start() {
var idevent = this.id;
yearnav_shift(idevent);
yearnavparam['cnt'] = 0;
yearnavparam['int'] = setInterval(function() { yearnav_shift(idevent); }, 300);
}
/* boucle de défilement des années */
function yearnav_shift(idevent) {
var lgbar = yearnavparam['bar'].offsetWidth;
var newy = yearnavparam['ymid'];
switch (idevent) {
case "yearbtnal":
if (yearnavparam['ylow'] > -9999) newy = newy - 1;
if (newy == 0) newy = -1;
break;
case "yearbtnar":
if (yearnavparam['yhig'] < 9999) newy = newy + 1;
if (newy == 0) newy = 1;
break;
case "yearbtnsl":
if (yearnavparam['ylow'] > -9900) newy = newy - 100;
if (newy == 0) newy = -1;
break;
case "yearbtnsr":
if (yearnavparam['yhig'] < 9900) newy = newy + 100;
if (newy == 0) newy = 1;
break;
case "yearbtnml":
if (yearnavparam['ylow'] > -9000) newy = newy - 1000;
if (newy == 0) newy = -1;
yearnavparam['cnt'] = 0;
break;
case "yearbtnmr":
if (yearnavparam['yhig'] < 9000) newy = newy + 1000;
if (newy == 0) newy = 1;
yearnavparam['cnt'] = 0;
break;
}
/* recrée barre avec nouvelles dates */
var lnk = 'nolnk';
if(yearnav_datexist(newy)) lnk = '';
var str = '<a class="'+lnk+'" href="/fr/'+newy+'">'+newy+'</a>';
var n = 1, m = -1;
for (var i = 1; i < 4 ; i++) {
if (newy + m == 0) m--;
lnk = 'nolnk';
if(yearnav_datexist(newy+m)) lnk = '';
str = '<a class="'+lnk+'" href="/fr/'+(newy + m)+'">'+(newy + m--)+'</a> '+str;
if (newy + n == 0) n++;
lnk = 'nolnk';
if(yearnav_datexist(newy+n)) lnk = '';
str = str+' <a class="'+lnk+'" href="/fr/'+(newy + n)+'">'+(newy + n++)+'</a>';
}
yearnavparam['bar'].innerHTML = str;
yearnavparam['ymid'] = newy;
yearnavparam['ylow'] = (newy + m + 1);
yearnavparam['yhig'] = (newy + n - 1);
/* réajuste espacement (si largeur nombres diff) */
yearnavparam['bar'].style.wordSpacing = 0;
var lgbar = yearnavparam['bar'].offsetWidth;
var initwin = yearnavparam['win'].offsetWidth;
yearnavparam['bar'].style.wordSpacing = ((initwin - lgbar) / 6)+'px';
/* init siècle et millénaire */
if (yearnavparam['ymid'] > 999) {
var x = Math.ceil(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle';
var x = Math.ceil(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire';
} else if (yearnavparam['ymid'] > 99) {
var x = Math.ceil(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire';
yearnavparam['mil'].firstChild.title = 'Ier millénaire';
} else if (yearnavparam['ymid'] > 0) {
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle';
yearnavparam['cen'].firstChild.title = 'Ier siècle';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire';
yearnavparam['mil'].firstChild.title = 'Ier millénaire';
} else if (yearnavparam['ymid'] > -100) {
yearnavparam['cen'].firstChild.href = '/fr/Ier_siècle_AEC';
yearnavparam['cen'].firstChild.title = 'Ier siècle AEC';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC';
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC';
} else if (yearnavparam['ymid'] > -1000) {
var x = Math.floor(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC';
yearnavparam['mil'].firstChild.href = '/fr/Ier_millénaire AEC';
yearnavparam['mil'].firstChild.title = 'Ier millénaire AEC';
} else {
var x = Math.floor(yearnavparam['ymid'] / 100);
yearnavparam['cen'].firstChild.href = '/fr/'+arabtoroman(x)+'e_siècle_AEC';
yearnavparam['cen'].firstChild.title = arabtoroman(x)+'e siècle AEC';
var x = Math.floor(yearnavparam['ymid'] / 1000);
yearnavparam['mil'].firstChild.href = '/fr/'+arabtoroman(x)+'e_millénaire_AEC';
yearnavparam['mil'].firstChild.title = arabtoroman(x)+'e millénaire AEC';
}
/* vitesse shift */
if (yearnavparam['cnt']++ == 6) {
clearInterval(yearnavparam['int']);
yearnavparam['int'] = setInterval(function() { yearnav_shift(idevent); }, 100);
}
}
/* arrêt défilement */
function yearnav_shift_stop() {
clearInterval(yearnavparam['int']);
}
/* convertisseur nombre en romain de 1 à 99 */
function arabtoroman(num) {
var unit = new Array('','I','II','III','IV','V','VI','VII','VIII','IX');
var tens = new Array('','X','XX','XXX','XL','L','LX','LXX','LXXX','XC');
var t = Math.floor(Math.abs(num) / 10);
var u = Math.abs(num) % 10;
return(tens[t]+unit[u]);
}
function romantoarab(num) {
var val = {I:1,V:5,X:10,L:50,C:100};
var a = 0;
num = num.replace(/[^CLXVI]+/,'');
var i = num.length;
while (i--) {
if (val[num[i]] < val[num[i+1]]) a -= val[num[i]];
else a += val[num[i]];
}
return a;
}
/* teste année présente dans tableau des pages */
function yearnav_datexist(yr) {
for (y in yearnavdatestab) {if (yearnavdatestab[y] == yr) return true;}
return false;
}
/* Collecte les dates des pages années créées lors de la publication */
function yearnav_collect() {
if (wgNamespaceNumber != 0) return true;
if (wgPageName == null || wgPageName.match(/^-?[0-9]{1,4}$/) == null) return true;
if (wgUserName == null) return true;
if (wgAction != 'edit' && wgAction != 'submit') return true;
/* test si appel à une catégorie siècle */
if (document.forms['editform'] == undefined || document.forms['editform'].elements['wpTextbox1'] == undefined) return true;
var content = document.forms['editform'].elements['wpTextbox1'].value;
if (content.match(/\[\[[Cc]atégorie: ?-?[IVX]+[er]+ [Ss]iècle.[^\]]*\]\]/) == null) return true;
/* lecture page tableau dates - init syntaxe requete serveur */
var xhr_object = createxhrobject();
if (xhr_object == null) return;
/* init requete serveur - get sous-page tableau */
xhr_object.open('GET', '/fr/index.php?title=Utilisateur:Pinocchio/yearnav_dates&action=edit', false);
xhr_object.send('');
if (xhr_object.readyState == 4 && xhr_object.status == 200) {
/* recup contenu zone édition */
var txt = xhr_object.responseText.split(/<\;pre|<\;\/pre>\;/gi);
var newtab = txt[1].split(/yearnav_tableau_dates ?= ?\[|\]\n?/g);
/* test date déjà collectée */
yearnavdatestab = newtab[1].split(/,/);
if(yearnav_datexist(wgPageName)) return true;
/* remplace nouveau tableau au format txt et texte avant */
yearnavdatestab[yearnavdatestab.length] = wgPageName;
yearnavdatestab.sort;
var newtxt = '<pre '+newtab[0]+'yearnav_tableau_dates = ['+yearnavdatestab.join(',')+']\n</pre>';
/* remplace html entities (dues à texte origine edit vers view) */
newtxt = newtxt.replace(/</g, '<');
newtxt = newtxt.replace(/>/g, '>');
newtxt = newtxt.replace(/&/g, '&');
newtxt = newtxt.replace(/"/g, '"');
/* récup éléments du formulaire */
var pagedit = xhr_object.responseText.replace(/\n/g, '');
var startime = pagedit.match(/wpSection.*name="wpStarttime/i);
startime = startime[0].replace(/.*value="([0-9]+)" name="wpStarttime/i, '$1');
var editime = pagedit.match(/wpStarttime.*name="wpEdittime/i);
editime = editime[0].replace(/.*value="([0-9]+)" name="wpEdittime/i, '$1');
var editoken = pagedit.match(/.{80}name="wpEditToken/i);
editoken = editoken[0].replace(/.*value="([0-f+]+)" name="wpEditToken/i, '$1');
var autosummary = pagedit.match(/wpAutoSummary.{1,30}value="[^"]+"/i);
autosummary = autosummary[0].replace(/.*value="([0-f]+)"/i, '$1');
var summary = 'Routine maj tableau dates ('+wgPageName+')';
/* init requete serveur - maj sous-page tableau */
var boundary = '--------------23242526272829';
var data = '--'+boundary+'\r\nContent-Disposition: form-data; name="wpSection"\r\n\r\n\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpScrolltop"\r\n\r\n0\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpStarttime"\r\n\r\n'+startime+'\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpEdittime"\r\n\r\n'+editime+'\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpEditToken"\r\n\r\n'+editoken+'\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpSummary"\r\n\r\n'+summary+'\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpAutoSummary"\r\n\r\n'+autosummary+'\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpSave"\r\n\r\nPublier\r\n';
data += '--'+boundary+'\r\nContent-Disposition: form-data; name="wpTextbox1"\r\n\r\n'+newtxt+'\r\n';
data += '--'+boundary+'--\r\n';
xhr_object.open('POST', '/fr/index.php?title=Utilisateur:Pinocchio/yearnav_dates&action=submit', false);
//xhr_object.setRequestHeader("Host", "www.boywiki.org");
xhr_object.setRequestHeader("Charset", "utf-8");
xhr_object.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary);
xhr_object.setRequestHeader("Content-Length", String(data.length));
xhr_object.send(data);
//if (xhr_object.readyState == 4 && xhr_object.status == 200) {
//}
}
}