functionmarkBlocked(container){varcontentLinks=container?$(container).find('a'):mw.util.$content.find('a').add('#ca-nstab-user a');mw.util.addCSS('\ .mediawiki .user-blocked-temp{'+(window.mbTempStyle||'opacity: 0.7; text-decoration: line-through')+'}\ .mediawiki .user-blocked-indef{'+(window.mbIndefStyle||'opacity: 0.4; font-style: italic; text-decoration: line-through')+'}\ .mediawiki .user-blocked-tipbox{'+(window.mbTipBoxStyle||'font-size:smaller; background:#FFFFF0; border:1px solid #FEA; padding:0 0.3em; color:#AAA')+'}\ ');varmbTooltip=window.mbTooltip||'; blocked ($1) by $2: $3 ($4 ago)';//get all aliases for user: & user_talk:varuserNS=[];for(varnsinmw.config.get('wgNamespaceIds')){if(mw.config.get('wgNamespaceIds')[ns]==2||mw.config.get('wgNamespaceIds')[ns]==3){userNS.push(ns.replace(/_/g,' ')+':');}}//RegExp for all titles that are User:| User_talk: | Special:Contributions/ (localized) | Special:Contributions/ (for userscripts)varuserTitleRX=newRegExp('^'+'('+userNS.join('|')+'|Служебная:Вклад\\/|Special:Contributions\\/'+')'+'([^\\/#]+)$','i');//RegExp for linksvararticleRX=newRegExp('^'+mw.config.get('wgArticlePath').replace('$1','')+'([^#]+)');varscriptRX=newRegExp('^'+mw.config.get('wgScript')+'\\?title=([^#&]+)');varuserLinks={};varurl,ma,pgTitle;//find all "user" links and save them in userLinks : { 'users': [<link1>, <link2>, ...], 'user2': [<link3>, <link3>, ...], ... }contentLinks.each(function(i,lnk){url=$(lnk).attr('href');if(!url||url.charAt(0)!='/'){return;}if(ma=articleRX.exec(url)){pgTitle=ma[1];}elseif(ma=scriptRX.exec(url)){pgTitle=ma[1];}else{return;}pgTitle=decodeURIComponent(pgTitle).replace(/_/g,' ');user=userTitleRX.exec(pgTitle);if(!user){return;}user=user[2];if(user=="К удалению"){return;}$(lnk).addClass('userlink')if(!userLinks[user]){userLinks[user]=[];}userLinks[user].push(lnk);});//convert users into arrayvarusers=[];for(varuinuserLinks){users.push(u);}if(users.length==0){return;}//API requestvarserverTime,apiRequests=0;varwaitingCSS=mw.util.addCSS('a.userlink {opacity:'+(window.mbLoadingOpacity||0.85)+'}');while(users.length>0){apiRequests++;$.post(mw.util.wikiScript('api')+'?format=json&action=query',{list:'blocks',bklimit:100,bkusers:users.splice(0,50).join('|'),bkprop:'user|by|timestamp|expiry|reason'//no need for 'id|flags'},markLinks);}return;//the end//callback: receive data and mark linksfunctionmarkLinks(resp,status,xhr){serverTime=newDate(xhr.getResponseHeader('Date'));varlist,blk,tip,links,lnk;if(!resp||!(list=resp.query)||!(list=list.blocks)){return;}for(vari=0;i<list.length;i++){blk=list[i];if(/^in/.test(blk.expiry)){clss='user-blocked-indef';blTime=blk.expiry;}else{clss='user-blocked-temp';blTime=inHours(parseTS(blk.expiry)-parseTS(blk.timestamp));}tip=mbTooltip.replace('$1',blTime).replace('$2',blk.by).replace('$3',blk.reason).replace('$4',inHours(serverTime-parseTS(blk.timestamp)));links=userLinks[blk.user];for(vark=0;k<links.length;k++){lnk=$(links[k]).addClass(clss);if(window.mbTipBox){$('<span class=user-blocked-tipbox>#</span>').attr('title',tip).insertBefore(lnk);}else{lnk.attr('title',lnk.attr('title')+tip);}}}if(--apiRequests==0){//last responsewaitingCSS.disabled=true;$('#ca-showblocks').parent().remove();// remove added portlet link}}//--------AUX functions//20081226220605 or 2008-01-26T06:34:19Z -> datefunctionparseTS(ts){varm=ts.replace(/\D/g,'').match(/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/);returnnewDate(Date.UTC(m[1],m[2]-1,m[3],m[4],m[5],m[6]));}functioninHours(ms){//milliseconds -> "2:30" or 5,06d or 21dvarmm=Math.floor(ms/60000);if(!mm){returnMath.floor(ms/1000)+'s';}varhh=Math.floor(mm/60);mm=mm%60;vardd=Math.floor(hh/24);hh=hh%24;if(dd){returndd+(dd<10?'.'+zz(hh):'')+'d';}returnhh+':'+zz(mm);}functionzz(v){// 6 -> '06'if(v<=9){v='0'+v;}returnv;}}// -- end of main function//start on some pagesswitch(mw.config.get('wgAction')){case'edit':case'submit':break;case'view':if(mw.config.get('wgNamespaceNumber')==0){break;}//otherwise continue with defaultdefault:// 'history', 'purge'mw.hook('wikipage.content').add(function(){if(mw.util.$content.hasClass('mw-body')){if(window.mbNoAutoStart){mw.util.addPortletLink('p-cactions','javascript:markBlocked()','XX','ca-showblocks');}else{markBlocked();}}});}