Utilisateur:Phe/Sort author.js
Apparence
Note : après avoir enregistré 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 pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
function get_sort_key(a)
{
var expr = new RegExp("\\[\\[Author:.*\\|(.*)\\]\\]");
a = expr.exec(a)[1];
a = a.replace(/[XIV]+, Pope$/, '');
a = a.split(',');
for (var i = 0; i < a.length; ++i) {
a[i] = a[i].replace(/^ */, '')
a[i] = a[i].replace(/ *$/, '')
a[i] = a[i].replace(/'/g, '');
a[i] = a[i].replace(/^Sir /, '');
a[i] = a[i].replace(/^Captain /, '');
a[i] = a[i].replace(/^Rev\. /, '');
a[i] = a[i].replace(/^Lord /, '');
a[i] = a[i].replace(/^de /, '');
a[i] = a[i].replace(/^du /, '');
a[i] = a[i].replace(/^von /, '');
a[i] = a[i].replace(/^van /, '');
}
return a;
}
function compare_author(a, b)
{
var date_a = a.replace(/.*\((\d+).*/, '$1');
var date_b = b.replace(/.*\((\d+).*/, '$1');
a = get_sort_key(a);
b = get_sort_key(b);
for (var i = 0; i < (a.length < b.length ? a.length : b.length); ++i) {
alert(a[i]);
alert(b[i]);
var ret = a[i].toLowerCase().localeCompare(b[i].toLowerCase());
if (ret != 0)
return ret;
}
return Number(date_a) - Number(date_b);
}
function sort_author()
{
var wpTextbox1 = document.getElementById("wpTextbox1");
if (!wpTextbox1)
return;
var text = wpTextbox1.value.substring(8);
var header = wpTextbox1.value.substring(0, 7);
text = text.split('*');
text.sort(compare_author);
text = text.join('*');
wpTextbox1.value = header + '*' + text;
}
function sort_author_1()
{
if ((wgAction == "edit" || wgAction == 'submit') && wgPageName.search('Wikisource:Authors-') == 0)
sort_author();
}
function add_author_sort_button()
{
var toolbar = document.getElementById("toolbar");
if(toolbar && wgPageName.search('Wikisource:Authors-') == 0) {
var image = document.createElement("img");
image.width = 23;
image.height = 22;
image.border = 0;
image.className = "mw-toolbar-editbutton";
image.style.cursor = "pointer";
image.alt = "regexp";
image.title = "Sort authors";
image.src = "http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png";
image.onclick = sort_author_1;
toolbar.appendChild(image);
}
}
$(document).ready(add_author_sort_button);