MediaWiki:Gadget-markAdmins.js: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix
fix regex: sostituisci tutti gli underscore nei nomi utente, non solo il primo
 
(10 versioni intermedie di 5 utenti non mostrate)
Riga 1:
/**
//copiato da https://www.wikidata.org/w/index.php?title=MediaWiki:Gadget-markAdmins.js&oldid=424200848
* This script highlights the users in special groups thanks to a JSON that is
//piccoli adattamenti per la Wiki italiana
* populated with these data by a bot (in this case, using APIs).
*
* This script needs the page [[Utente:ItwikiBot/AdminList]]
* @FixMe Find a better place to insert abbrs. The huge fantasy of wikipedians
* may produce weird results, e.g. breaking the username when half of it links
* to the user page, and the other half to the talk page. This should also avoid
* cases where the abbr inherits some CSS from the signature (currently handled
* with font-style: initial).
*/
 
// <nowiki>
//***********************************************************************
// Skript ursprünglich von [[Benutzer:Euku]], 28. Dez. 2005
// Adaptierung/zusätzliche Markierungen/Fixes: [[Benutzer:PDD]]
// Aufgeräumt & beschleunigt: [[Benutzer:Littl]]
// Etwas umgeräumt und potentielle Skinabhängigkeit entfernt: [[Benutzer:Guandalug]]
// Anpassung an WikiData: [[User:NordNordWest]]
//***********************************************************************
 
// <nowiki>
( function ( mw, $ ) {
'use strict';
function markAdmins( $content ) {
 
// run only if in allowed ns, history, talks, and diffs
var marksubpages = false;
var allowedNs = [ 'Help', 'User', 'User_talk', 'Project', 'Special' ],
var dontmarkmyself = false;
disabledPages = [ 'Prefixindex', 'Allpages' ],
cfgPage = 'Utente:ItwikiBot/AdminList',
specialPage = mw.config.get( 'wgCanonicalSpecialPageName' );
 
if ( ! (
// static list per ora è escluso Legoktm
allowedNs.indexOf( mw.config.get( 'wgCanonicalNamespace' ) ) !== -1 ||
var admins=[".avgas", "Abisys", "Ale_Sasso", "Alkalin", "Amarvudol", "Antonio1952", "Aplasia", "Archenzo", "ArtAttack", "Ary29", "Ask21", "AttoRenato", "Basilicofresco", "BohemianRhapsody", "Bradipo_Lento", "Bramfab", "Buggia", "Bultro", "Burgundo", "Carlomartini86", "Carlomorino", "Castagna", "Caulfield", "Ceppicone","Civv%C3%AC", "Daimona_Eaytoy", "Dan_Kenshi", "Delfort", "Dimitrij_Kasev", "Doc.mari", "Dome", "Dr_Zimbu", "Elwood", "Ep%C3%ACdosis", "Er_Cicero", "Erinaceus", "Esculapio", "Eumolpo", "Euphydryas", "Eustace_Bagge", "Fabexplosive", "Fabyrav","FeltriaUrbsPicta", "Fringio", "Fullerene", "Gac", "Gianfranco", "Guidomac", "Gvf", "Horcrux", "Hypergio", "Ignisdelavega", "Ilario", "IndyJr", "Jaqen", "Kirk39", "Klaudio", "KS", "L736E", "Laurentius", "Lepido", "Lucas", "LukeWiller", "M%26A", "Madaki", "MapiVanPelt", "Marcok", ".mau.", "Melos", "Mess", "MM", "Moroboshi", "Narayan89", "Nicolabel", "Nubifer", "Ombra", "Osk", "Paginazero", "Parma1983", "Pequod76", "Phantomas", "Phyrexian", "%25Pier%25", "Pierpao", "Pil56", "RanZag", "Remulazz", "Retaggio", "Ripepette", "Roberto_Mura", "Rojelio", "Rotpunkt", "Ruthven", "Sannita", "Sanremofilo", "Sakretsu", "Shivanarayana", ".snoopy.", "Soprano71", "Superchilum", "Supernino", "Syrio", "Threecharlie", "Tirinto", "Tooby", "Torsolo", "Vale93b", "Valepert", "Valerio_Bozzolan","ValterVB", "Vegetable", "Veneziano", "Vituzzu", "Yiyi"];
mw.config.get( 'wgAction' ) === 'history' ||
var admins_str = '|'+admins.join('|')+'|';
mw.config.get( 'wgNamespaceNumber' ) % 2 === 1 ||
mw.util.getParamValue( 'diff' ) !== null
) ) {
return;
}
 
// do nothing in these special pages (to have clean copy-paste)
var botadmins=["Filtro_anti_abusi"];
if( disabledPages.indexOf( specialPage ) !== -1 ) {
var botadmins_str = '|'+botadmins.join('|')+'|';
return;
}
 
mw.hook( 'wikipage.content' ).add( function markAdmins ( $content ) {
var renadmins=[];
mw.util.addCSS( 'abbr.adminMark { font-style: initial; font-weight: bold; padding-left: 5px; font-size: 0.7em; }' );
var renadmins_str = '|'+renadmins.join('|')+'|';
$.getJSON( '/wiki/' + cfgPage + '?action=raw&ctype=application/json', function processList ( response ) {
var userNs = mw.config.get( 'wgFormattedNamespaces' )[ 2 ],
userPath = mw.config.get( 'wgArticlePath' ).replace( '$1', userNs ),
userPattern = /.wiki.Utente.(.+)/;
 
// for each link
var bureaucrats=["Ary29", "Vituzzu", "Roberto_Mura", "Buggia", "Euphydryas", "Civv%C3%AC"];
$content.find( 'a' ).each( function addPerUserGroups () {
var bureaucrats_str = '|'+bureaucrats.join('|')+'|';
var $link = $( this ), userPatternMatch,
href = $link.attr( 'href' ),
userLink, userName, knownUserGroups, groupShort, groupName, i,
$container, $abbr;
 
// only links to users
var checkusers=["Melos", "Gac", "Ask21", "L736E", "Shivanarayana", "Vituzzu", "Ruthven"];
if ( href && href.indexOf( userPath ) !== -1 ) {
var checkusers_str = '|'+checkusers.join('|')+'|';
 
// Stewardsno sub pages
userPatternMatch = userPattern.exec( href );
var stewards=["Ajraddatz", "Melos", "Vituzzu", "Avraham", "Bsadowski1", "Defender", "DerHexer", "Einsbor", "HakanIST", "Hoo_man", "Jyothis", "Linedwell", "MarcoAurelio", "Mardetanha", "Matanya", "Matiia", "MBisanz", "Mentifisto", "MF-Warburg", "Pmlineditor", "QuiteUnusual", "RadiX", "Ruslik0", "Savh", "Shanmugamp7", "Sjoerddebruin", "Stryn", "Tegel", "Teles", "Trijnstel", "Masti", "NahidSultan"];
userLink = userPatternMatch ? userPatternMatch[ 1 ] : null;
var stewards_str = '|'+stewards.join('|')+'|';
if( userLink && userLink.indexOf( '/' ) === -1 ) {
 
userName = decodeURIComponent( userLink.replace( /\/.*/, '' ).replace( /_/g, ' ' ) );
if (
knownUserGroups = response.users[ userName ];
mw.config.get( 'wgCanonicalNamespace' ) === 'Special' ||
if ( knownUserGroups ) {
mw.config.get( 'wgAction' ) === 'history' ||
$container = $( '<span>' );
mw.config.get( 'wgCanonicalNamespace' ) === 'User' ||
for( i in knownUserGroups ) {
mw.config.get( 'wgCanonicalNamespace' ) === 'User_talk' ||
groupShort = knownUserGroups[ i ];
mw.config.get( 'wgNamespaceNumber' ) % 2 === 1 ||
groupName = response.legend[ groupShort ];
mw.config.get( 'wgCanonicalNamespace' ) === 'Project' ||
$abbr = $( '<abbr class="adminMark">' )
mw.config.get( 'wgCanonicalNamespace' ) === 'Help' ||
.attr( 'title', groupName )
mw.util.getParamValue('diff') !== null
.text( groupShort );
) {
$container.append( $abbr );
var i;
var aNode; }
$link.after( $container );
var allanchors = $content.get( 0 ).getElementsByTagName("A");
var searchExp = /.wiki.Utente.(.+)/;
var trenn = mw.config.get( 'wgArticlePath' ).replace( '$1', mw.config.get( 'wgFormattedNamespaces' )[2] );
var marker;
var mainpageanchor;
var href;
 
mw.util.addCSS('span.adminMark { font-weight: bold; }');
for (i=0; i < allanchors.length; i++) {
aNode = allanchors[i];
mainpageanchor = true;
// if it's a link to a user
if ((href = aNode.getAttribute("href")) && (href.indexOf(trenn) !== -1)) {
var currUser = searchExp.exec(href)[1];
var currUserClean = currUser.replace(/\/.*/,'');
if (currUserClean !== currUser) mainpageanchor = false;
currUser= "|" + currUserClean + "|";
marker = [];
 
// is this user an admin?
if (admins_str.indexOf(currUser) !== -1) marker.push( 'A' );
// is this user an adminbot?
if (botadmins_str.indexOf(currUser) !== -1) marker.push( 'A-Bot' );
// is this user a renamed admin?
if (renadmins_str.indexOf(currUser) !== -1) marker.push( 'A-Ren' );
// is this user a bureaucrat?
if (bureaucrats_str.indexOf(currUser) !== -1) marker.push( 'B' );
// is this user a checkuser?
if (checkusers_str.indexOf(currUser) !== -1) marker.push( 'CU' );
// is this user a steward?
if (stewards_str.indexOf(currUser) !== -1) marker.push( 'S' );
 
// don't mark certain pages, except link to user main page
if (mainpageanchor ||
(marksubpages && (mw.config.get( 'wgCanonicalSpecialPageName' ) !== "Prefixindex") &&
(mw.config.get( 'wgCanonicalSpecialPageName' ) !== "Allpages")) )
// check finished, now append node
if ((marker.length > 0) && !(dontmarkmyself && (currUserClean === mw.config.get( 'wgUserName' )))) {
// Variante 1 (traditionell)
// var aMark = document.createElement("b");
// Variante 2 (vom Erzbschof)
var aMark = document.createElement("span");
aMark.className = "adminMark";
 
var aMarkText = document.createTextNode(" (" + marker.join("/") + ")");
aMark.appendChild(aMarkText);
aNode.appendChild(aMark);
}
}
}
} );
} );
} );
 
} )( mediaWiki, jQuery );
mw.hook( 'wikipage.content' ).add( markAdmins );
}( mediaWiki, jQuery ) );
// </nowiki>