MediaWiki:Gadget-PatrolAll.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
(WIP)
 
(finished)
 
Line 4: Line 4:
   if ($diffMultiNotice.length > 0) {
   if ($diffMultiNotice.length > 0) {
     var $patrolAllLink = $('<a href="#">Mark all as patrolled</a>');
     var $patrolAllLink = $('<a href="#">Mark all as patrolled</a>');
     $diffMultiNotice.append('<br>').append($patrolAllLink);
     $diffMultiNotice.append('<br>[').append($patrolAllLink).append(']');


     // patrol link click handler
     // patrol link click handler
     $patrolAllLink.click(function() {
     $patrolAllLink.click(function(e) {
       mw.loader.load('mediawiki.notification');
       var $this = $(this);
 
      var $spinner;
       // replace text with spinner
       // replace text with spinner
       var $spinner = $.createSpinner({ size :'small', type: 'inline' });
       mw.loader.using('jquery.spinner').then(function() {
      $(this).hide().after($spinner);
        $spinner = $.createSpinner({ size :'small', type: 'inline' });
        $this.hide().after($spinner);
      });


       // find bounding revision ids
       // find bounding revision ids
       var oldid = mw.util.getParamValue('oldid', $('#mw-diff-otitle1 strong a').attr('href'));
       var oldid = mw.util.getParamValue('oldid');
       var newid = mw.util.getParamValue('oldid', $('#mw-diff-ntitle1 strong a').attr('href'));
       var newid = mw.util.getParamValue('diff');
       var title = mw.util.getParamValue('title', $('#mw-diff-ntitle1 strong a').attr('href'));
       var pageid = mw.util.getParamValue('curid');


       // call api for all revisions in that span
       // call api for all revisions in that span
Line 27: Line 29:
         rvstartid: newid,
         rvstartid: newid,
         rvendid: oldid,
         rvendid: oldid,
         titles: title
         rvlimit: 'max',
       } ).done( function ( data ) {
        pageids: pageid
         console.log( data );
       }).done(function (data) {
/*
         var revisions = data.query.pages[pageid].revisions;
      apiRequest.postWithToken('patrol', { formatversion: 2, action: 'patrol', rcid: rcid })
 
         .done(function(data) {
        // fire off a patrol action for each revision
          $patrolLinks.closest('.patrollink').remove();
        var promises = [];
           if(data.patrol !== undefined) {
        for (var i = 0; i < revisions.length; i++) {
             var title = new mw.Title(data.patrol.title);
          promises.push(api.postWithToken('patrol', {
             mw.notify(mw.msg('markedaspatrollednotify', title.toText()));
            formatversion: 2, // no clue what this is or if it's needed
           } else {
            action: 'patrol',
            mw.notify(mw.msg('markedaspatrollederrornotify'), { type: 'error' });
            revid: revisions[i].revid
          }
          }));
        })
         }
        .fail(function(error) {
        $.when.apply($, promises).then(
          $spinner.remove();
           function(result) {
          $patrolLinks.show();
             $spinner.remove();
          if (error === 'noautopatrol') {
             $this.after($('<span style="color:green">Marked as patrolled</span>'));
            mw.notify(mw.msg('markedaspatrollederror-noautopatrol'), { type: 'warn' });
           }, function(error) {
          } else {
            $spinner.remove();
            mw.notify(mw.msg('markedaspatrollederrornotify'), { type: 'error' });
            $this.after($('<span style="color:red">Cannot mark as patrolled</span>'));
           }
           });
        });
 
*/
       });
       } );
      e.preventDefault();
        e.preventDefault();
/*{"markedaspatrollederror-noautopatrol":"You are not allowed to mark your own changes as patrolled.","markedaspatrollederrornotify":"Marking as patrolled failed.","markedaspatrollednotify":"This change to $1 has been marked as patrolled."});*/
     });
     });
   }
   }
}
}

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

if (mw.user.tokens.exists('patrolToken')) {
  // add patrol link under diff-multi notice
  var $diffMultiNotice = $('td.diff-multi');
  if ($diffMultiNotice.length > 0) {
    var $patrolAllLink = $('<a href="#">Mark all as patrolled</a>');
    $diffMultiNotice.append('<br>[').append($patrolAllLink).append(']');

    // patrol link click handler
    $patrolAllLink.click(function(e) {
      var $this = $(this);
      var $spinner;
      // replace text with spinner
      mw.loader.using('jquery.spinner').then(function() {
        $spinner = $.createSpinner({ size :'small', type: 'inline' });
        $this.hide().after($spinner);
      });

      // find bounding revision ids
      var oldid = mw.util.getParamValue('oldid');
      var newid = mw.util.getParamValue('diff');
      var pageid = mw.util.getParamValue('curid');

      // 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();
    });
  }
}