מדיה ויקי:Gadget-IsBlock.js
קפיצה לניווט
קפיצה לחיפוש
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
$( function() { if ($( '.blockRequestUserName ').length === 0) return; var list = {}; // collect all {{לחסום}} requests. note that it's an object, keyed by user name. // so, if there are multiple requests for same users, we only ask for one, and remember for each // all the spans we want to update for this user. $( '.blockRequestUserName ').each( function() { var span = $( this ), username = span.data( 'username' ); (list[username] = (list[username] || [])).push(span); }); // filter all anons to one list, and registered to another. var anons = Object.keys(list).filter( mw.util.isIPAddress ); var registered = Object.keys(list).filter( function(u) { return !mw.util.isIPAddress(u) } ); // construct an api object to be used below var api = new mw.Api(); // start sending api calls. for anons ("bkip" parameter), we can only ask one at a time. anons.forEach( function(anon) { api.get( { list: 'blocks', bkip: anon }) .done( reportBlocks ); }); // for registered, we can ask for up to 50 at a time. // todo: check list length, use .slice() or .splice() to chuck them in batches of 50. if (registered.length) { api.get( { list: 'blocks', bkusers: registered.join('|') }) .done( reportBlocks ); } // when query returns, see if there are any blocks, and if there are, add the block marker. // note that list[user] is an array of all the spans in the page requesting to block this user. // typically this array will be of length 1, but it can be more. function reportBlocks( data ) { if (data && data.query && data.query.blocks ) data.query.blocks.forEach( function(block) { var user = decodeURIComponent( block.user ); // the api returns the user name encoded. addBlockedMarker( list[user] || [], block.by ); }); } function addBlockedMarker( spans, by ) { spans.forEach( function(span) { span .text(' | חסומ/ה') .attr('title', 'נחסמ/ה על ידי ' + by); }); } });