User:Locke/common.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
(get params from location.href)
(add patrol calls)
Line 9: Line 9:
     $patrolAllLink.click(function(e) {
     $patrolAllLink.click(function(e) {
       var $this = $(this);
       var $this = $(this);
      var $spinner;
       // replace text with spinner
       // replace text with spinner
       mw.loader.using('jquery.spinner').then(function() {
       mw.loader.using('jquery.spinner').then(function() {
         var $spinner = $.createSpinner({ size :'small', type: 'inline' });
         $spinner = $.createSpinner({ size :'small', type: 'inline' });
         $this.hide().after($spinner);
         $this.hide().after($spinner);
       });
       });
Line 30: Line 31:
         rvlimit: 'max',
         rvlimit: 'max',
         pageids: pageid
         pageids: pageid
       } ).done( function ( data ) {
       }).done(function (data) {
         console.log( data );
         console.log(data);
/*
        var revisions = data.query.pages[pageid].revisions;
      // mw.loader.load('mediawiki.notification');
        var promises = [];
      apiRequest.postWithToken('patrol', { formatversion: 2, action: 'patrol', rcid: rcid })
        for (int i = 0; i < revisions.length; i++) {
         .done(function(data) {
          promises.push(api.postWithToken('patrol', {
          $patrolLinks.closest('.patrollink').remove();
            formatversion: 2, // no clue what this is or if it's needed
           if(data.patrol !== undefined) {
            action: 'patrol',
             var title = new mw.Title(data.patrol.title);
            revid: revisions[i].revid
             mw.notify(mw.msg('markedaspatrollednotify', title.toText()));
          }));
           } else {
         }
            mw.notify(mw.msg('markedaspatrollederrornotify'), { type: 'error' });
        $.when.apply($, promises).then(
          }
           function(result) {
        })
             $spinner.remove();
        .fail(function(error) {
             $this.after($('<span style="color:green">Marked as patrolled</span>'));
          $spinner.remove();
           }, function(error) {
          $patrolLinks.show();
            $spinner.remove();
          if (error === 'noautopatrol') {
            $this.after($('<span style="color:red">Cannot mark as patrolled</span>'))
            mw.notify(mw.msg('markedaspatrollederror-noautopatrol'), { type: 'warn' });
           });
          } else {
 
            mw.notify(mw.msg('markedaspatrollederrornotify'), { type: 'error' });
       });
           }
      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."});*/
     });
     });
   }
   }
}
}

Revision as of 23:25, 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) {
        console.log(data);
        var revisions = data.query.pages[pageid].revisions;
        var promises = [];
        for (int 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();
    });
  }
}