|
|
Line 1: |
Line 1: |
| if (mw.user.tokens.exists('patrolToken')) {
| | function kAjaxPatrolLinks() { |
| // add patrol link under diff-multi notice
| | var $patrollinks = $('.patrollink a'); |
| var $diffMultiNotice = $('td.diff-multi');
| | if ( $patrollinks.length > 0 ) { |
| if ($diffMultiNotice.length > 0) {
| | $patrollinks.click( function(e) { |
| var $patrolAllLink = $('<a href="#">Mark all as patrolled</a>');
| | e.preventDefault(); |
| $diffMultiNotice.append('<br>[').append($patrolAllLink).append(']');
| | var href = $(this).attr( 'href' ); |
| | | $patrollinks.text('Marking as patrolled...'); |
| // patrol link click handler
| | $patrollinks = $patrollinks.parent(); |
| $patrolAllLink.click(function(e) {
| | $.get( |
| var $this = $(this);
| | href, |
| var $spinner;
| | null, |
| // replace text with spinner
| | function( data, status, request ) { |
| mw.loader.using('jquery.spinner').then(function() {
| | //window.data = arguments; // DEBUG |
| $spinner = $.createSpinner({ size :'small', type: 'inline' });
| | if ( status == 'success' ) { |
| $this.hide().after($spinner);
| | $patrollinks.html('<span style="color:green">Marked as patrolled</span>');// MediaWiki:Markedaspatrolled |
| });
| | if (typeof kAjaxPatrolLinks_closeafter !== 'undefined' && kAjaxPatrolLinks_closeafter == true){ |
| | | window.close(); |
| // find bounding revision ids
| | // Firefox 2+ doesn't allow closing normal windows. If we're still here, open up the selfclosing page. |
| var oldid = mw.util.getParamValue('oldid');
| | window.open("http://toolserver.org/~krinkle/close.html", "_self"); |
| var newid = mw.util.getParamValue('diff');
| | } |
| var pageid = mw.util.getParamValue('curid');
| | } else { |
| | | $patrollinks.html('<span style="color:red">Cannot mark as patrolled</span>');// MediaWiki:Markedaspatrollederror |
| // call api for all revisions in that span
| | } |
| var api = new mw.Api();
| | }); |
| api.get({
| | }); |
| action: 'query',
| | } |
| prop: 'revisions',
| |
| rvprop: 'ids',
| |
| rvstartid: newid,
| |
| rvendid: oldid,
| |
| rvlimit: 'max',
| |
| pageids: pageid
| |
| }).done(function (data) {
| |
| var revisions = data.query.pages[pageid].revisions;
| |
| | |
| // fire off a patrol action for each revision
| |
| var promises = [];
| |
| for (var i = 0; i < revisions.length; i++) {
| |
| promises.push(api.postWithToken('patrol', {
| |
| formatversion: 2, // no clue what this is or if it's needed
| |
| action: 'patrol',
| |
| revid: revisions[i].revid
| |
| }));
| |
| }
| |
| $.when.apply($, promises).then(
| |
| function(result) {
| |
| $spinner.remove();
| |
| $this.after($('<span style="color:green">Marked as patrolled</span>'));
| |
| }, function(error) {
| |
| $spinner.remove();
| |
| $this.after($('<span style="color:red">Cannot mark as patrolled</span>'));
| |
| });
| |
| | |
| });
| |
| e.preventDefault();
| |
| });
| |
| }
| |
| } | | } |
| | $(kAjaxPatrolLinks); |