Diferencia entre revisiones de «Usuario:Leoncastro/Taller/MediaWiki:Gadget-DeluxeHistory.js»
Apariencia
Contenido eliminado Contenido añadido
Deshecha la edición 96896947 de Leoncastro (disc.) |
Sin resumen de edición |
||
Línea 1: | Línea 1: | ||
(function(mw, $){ |
$((function(mw, $){ |
||
if(window.deluxehistory && window.deluxehistory.loaded) |
if(window.deluxehistory && window.deluxehistory.loaded) |
||
Línea 125: | Línea 125: | ||
} |
} |
||
})(mediaWiki, jQuery); |
})(mediaWiki, jQuery)); |
Revisión del 02:00 14 feb 2017
$((function(mw, $){
if(window.deluxehistory && window.deluxehistory.loaded)
return;
var op = window.deluxehistory ? (window.deluxehistory.options ? window.deluxehistory.options : window.deluxehistory) : ['sysop', 'bot'];
var cs = window.deluxehistory ? (window.deluxehistory.css ? window.deluxehistory.css : '') : '';
var ls = window.deluxehistory ? (window.deluxehistory.cache ? window.deluxehistory.cache : 90) : 90; // 90 days cache
window.deluxehistory = { loaded: true, options: typeof op == 'string' ? [op] : op, style: cs, cache: parseInt(ls) };
var lsDateName = 'mw-deluxehistory-userlist-date';
var lsListName = 'mw-deluxehistory-userlist-list';
var lsDelCache = '&deluxehistory=nocache';
function addClassName(item, name)
{
item.className = (' ' + item.className + ' ').split(' ' + name + ' ').join('').trim() + ' ' + name;
}
function checkUserlist()
{
var opts = window.deluxehistory.options;
if( !localStorage[lsDateName] || localStorage[lsDateName] < Date.now() )
{
var valid_groups = [
'abusefilter', 'accountcreator', 'autopatrolled', 'bot', 'bureaucrat', 'checkuser', 'confirmed',
'epcampus', 'epcoordinator', 'epinstructor', 'eponline', 'extendedmover', 'filemover',
'flood', 'flow-bot', 'founder', 'import', 'ipblock-exempt', 'massmessage-sender', 'oversight',
'patroller', 'researcher', 'reviewer', 'rollbacker', 'sysop', 'templateeditor', 'transwiki'
/* 'autoreviewer': obsolete type replaced by 'autopatrolled' */
/* 'extendedconfirmed': too big // [[:en:Wikipedia:User_access_levels#Extended_confirmed_users]] (31632 users) */
/* 'steward': only listed on [[:m:Template:StewardsList]], CORS */
];
var file = [];
opts.forEach(function(group){
if( $.inArray(valid_groups, group) )
{
file.push(
$.get( mw.util.wikiScript(), {title: 'Special:Listusers', group: group, limit: 10000 } ) // en:wiki reviewer (6721 users) (27-jan-2017)
.done(function(d){
var list = localStorage[lsListName] ? JSON.parse(localStorage[lsListName]) : {};
var html = new DOMParser().parseFromString(d, 'text/html');
Array.prototype.forEach.call(html.querySelectorAll('#mw-content-text > #mw-listusers-form + ul > li'), function(li){
var a = li.querySelector('a.mw-userlink');
var user = a.querySelector('bdi');
user = user.innerText || user.textContent;
list[user] = list[user] || {className: ''};
addClassName(list[user], 'mw-listuserlink-' + group);
});
localStorage[lsListName] = JSON.stringify(list);
})
);
}
});
return $.when.apply($, file)
.done(function(d){
localStorage[lsDateName] = Date.now() + window.deluxehistory.cache * 24 * 60 * 60 * 1000;
})
.fail(function(e){
mw.notify('DeluxeHistory: Error en la recuperación de datos de la API');
});
}
return $.when(true);
}
function markHistory(ul)
{
var scCSS = document.createElement('style');
scCSS.type = 'text/css';
scCSS.innerHTML = '.mw-userlink{background-color:#ff8;}\r\n' +
'.mw-userlink.mw-anonuserlink{background-color:#f88;}\r\n' +
'.mw-userlink[class*="mw-listuserlink-"]{background-color:#8cf;}\r\n' +
'.mw-userlink.mw-listuserlink-sysop{background-color:#8f8;}\r\n' +
'.mw-userlink.mw-listuserlink-bot{background-color:#8ff;}\r\n' +
window.deluxehistory.style;
document.getElementsByTagName('head')[0].appendChild(scCSS);
checkUserlist().done(function(){
if(ul)
{
var list = JSON.parse(localStorage[lsListName]);
Array.prototype.forEach.call(document.querySelectorAll(ul), function(li){
var user, a = li.querySelector('a.mw-userlink, .wikibase-edit ~ .mw-changeslist-separator + a.extiw');
user = a.querySelector('bdi') || a;
user = user.innerText || user.textContent;
if( !li.querySelector('a.mw-userlink') )
addClassName(a, 'mw-userlink');
if( /(\d{1,3}\.){3}\d{1,3}|([\da-f]{1,4}:){7}[\da-f]{1,4}/i.test(user) )
addClassName(a, 'mw-anonuserlink');
if( li.querySelector('a.mw-anonuserlink') )
addClassName(li, 'mw-anonuserlink');
if( list[user] && list[user].className )
{
addClassName(li, list[user].className);
addClassName(a, list[user].className);
}
});
}
});
}
if( mw.util.getParamValue('deluxehistory') == 'nocache' )
{
localStorage.removeItem(lsDateName);
localStorage.removeItem(lsListName);
location.href = location.href.replace(lsDelCache, '');
}
if( mw.config.get('wgAction') == 'history' )
{
mw.util.addPortletLink(
'p-cactions',
location.href + lsDelCache,
'Purgar historial',
'ca-purge-deluxehistory',
'Purgar la caché del historial'
);
markHistory('#pagehistory > li');
}
else if( mw.config.get('wgCanonicalSpecialPageName') == 'Recentchanges' ||
mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist' )
{
markHistory('.mw-changeslist > ul.special > li');
}
})(mediaWiki, jQuery));