מדיה ויקי:Gadget-QuickRCDiff.js
קפיצה לניווט
קפיצה לחיפוש
|
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
|
if ($.inArray(mw.config.get('wgCanonicalSpecialPageName'),['Watchlist','Recentchanges'])!=-1) (function(){ var lastRequset, $diffDialog, $diffContent, patrolBtn, thanksBtn, diffId, diffTitle; function qRcDiffHandler(content){ mw.loader.load(['jquery.spinner', 'mediawiki.diff.styles']); $('.mw-changeslist-edit', content).not('qRcDiff').addClass('qRcDiff').click(function(e) { if (e.target !== this || ! $(this).find('a:contains(היסטוריה)').length) { return; } //initalizations if (!$diffContent) $diffContent = $('<div>'); if(!$diffDialog) { var buttons = { 'בדיקת העתקה': function() { window.open('http://tools.wmflabs.org/copyvios/?lang=he&project=wikipedia&title='+diffTitle+'&oldid='+diffId+'&action=search&use_engine=1&use_links=1', '_blank') }, '!': function(){ if (!diffId){ return;//nothing to do } var api = new mw.Api(); api.postWithToken('patrol', { action:'patrol', revid: diffId }).done(function(data){ if (data && data.patrol) { patrolBtn.hide(); mw.notify('העריכה סומנה כבדוקה'); } else { var desc = (data && data.error && data.error.info) || ''; mw.notify('שגיאה:' + desc); } }); }, '♥': function(){ if (!diffId){ return;//nothing to do } var api = new mw.Api(); api.postWithToken('csrf', { action:'thank', source: 'diff', rev: diffId }).done(function(data){ mw.notify('תודה נשלחה לעורך'); }); } }; $diffDialog = $('<div>').append($diffContent).dialog({ width: '100%', height: '300', draggable: false, resizable: false, buttons: buttons }); $diffDialog.dialog('widget').css({ position:'fixed', bottom: '0', top: 'auto' }); patrolBtn = $(":button:contains('!')").prop('title', 'סימון כבדוק'), thanksBtn = $(":button:contains('♥')").prop('title', 'תודה'); } var self = this, diffHref = $(this).find('a[href*=oldid]') .filter(function(){ return !$(this) .hasClass('WLM-icon'); // WLM collision fix }) .prop('href'), unpatrolled = $(this).find('.unpatrolled').length; diffTitle = $(this).find('.mw-changeslist-title').text(); patrolBtn.hide(); if(self == lastRequset) { return; } $diffContent.html($.createSpinner()); var param = { action: 'query', prop: 'revisions', }; var isWikidata = false; if(diffHref){ diffId = diffHref.match(/&diff=(\d+)&oldid=/)[1]; isWikidata = diffHref.match(/www\.wikidata\.org/); param.rvprop = 'timestamp'; param.rvdiffto = 'prev'; param.revids = diffId; } else { diffId = 0; param.rvprop = 'content'; param.titles = diffTitle; } var api = isWikidata? new mw.ForeignApi( 'https://www.wikidata.org/w/api.php' ) : new mw.Api(); api.get(param).done( function(res) { if (unpatrolled) patrolBtn.show(); $(self).addClass('changeslist-entry-active'); if(lastRequset){ $(lastRequset).addClass('changeslist-entry-visited'); $(lastRequset).removeClass('changeslist-entry-active'); } lastRequset = self; if(res === null) { $diffContent.html('Error'); return false; } var revision = res.query.pages[Object.keys(res.query.pages)[0]].revisions[0]; var diffString = diffHref ? revision.diff["*"] : revision['*']; if(diffString === null) { $diffContent.html('Error'); return false; } var trTemp = $('<tr><td class="diff-marker"> </td><td class="diff-context"></td></tr>'); var newTable = $('<table class="diff"></table>') .html('<colgroup><col class="diff-marker"><col class="diff-content"><col class="diff-marker"><col class="diff-content"></colgroup>'); if(! diffHref){ newTable.append($('<tr><td colspan="4" class="diff-lineno">דף חדש</td></tr>')); var rows = diffString.split('\n'); for(var tr in rows){ var curTr = trTemp.clone(); curTr.find('.diff-context').first().text(rows[tr]); newTable.append(curTr); } } else { newTable.append(diffString); } $diffDialog.dialog('option','title',diffTitle); $diffContent.html(newTable); $diffDialog.dialog('isOpen') || $diffDialog.dialog('open').dialog('widget').css({'height': '300px', 'top':'auto'}); }); }); } mw.hook( 'wikipage.content' ).add(qRcDiffHandler); })();