MediaWiki:Gadget-AjaxPatrolLinks.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
(finished)
(woah wrong page lol)
 
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);

Latest revision as of 23:31, March 20, 2017

function kAjaxPatrolLinks() {
	var $patrollinks = $('.patrollink a');
	if ( $patrollinks.length > 0 ) {
		$patrollinks.click( function(e) {
			e.preventDefault();
			var href = $(this).attr( 'href' );
			$patrollinks.text('Marking as patrolled...');
			$patrollinks = $patrollinks.parent();
			$.get(
				href,
				null,
				function( data, status, request ) {
					//window.data = arguments; // DEBUG
					if ( status == 'success' ) {
						$patrollinks.html('<span style="color:green">Marked as patrolled</span>');// MediaWiki:Markedaspatrolled
						if (typeof kAjaxPatrolLinks_closeafter !== 'undefined' && kAjaxPatrolLinks_closeafter == true){
							window.close();
							// Firefox 2+ doesn't allow closing normal windows. If we're still here, open up the selfclosing page.
							window.open("http://toolserver.org/~krinkle/close.html", "_self");
						}
					} else {
						$patrollinks.html('<span style="color:red">Cannot mark as patrolled</span>');// MediaWiki:Markedaspatrollederror
					}
			});
		});
	}
}
$(kAjaxPatrolLinks);