[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/resources/src/mediawiki.page/ -> mediawiki.page.patrol.ajax.js (source)

   1  /*!
   2   * Animate patrol links to use asynchronous API requests to
   3   * patrol pages, rather than navigating to a different URI.
   4   *
   5   * @since 1.21
   6   * @author Marius Hoch <[email protected]>
   7   */
   8  ( function ( mw, $ ) {
   9      if ( !mw.user.tokens.exists( 'patrolToken' ) ) {
  10          // Current user has no patrol right, or an old cached version of user.tokens
  11          // that didn't have patrolToken yet.
  12          return;
  13      }
  14      $( function () {
  15          var $patrolLinks = $( '.patrollink a' );
  16          $patrolLinks.on( 'click', function ( e ) {
  17              var $spinner, href, rcid, apiRequest;
  18  
  19              // Start preloading the notification module (normally loaded by mw.notify())
  20              mw.loader.load( ['mediawiki.notification'], null, true );
  21  
  22              // Hide the link and create a spinner to show it inside the brackets.
  23              $spinner = $.createSpinner( {
  24                  size: 'small',
  25                  type: 'inline'
  26              } );
  27              $( this ).hide().after( $spinner );
  28  
  29              href = $( this ).attr( 'href' );
  30              rcid = mw.util.getParamValue( 'rcid', href );
  31              apiRequest = new mw.Api();
  32  
  33              apiRequest.postWithToken( 'patrol', {
  34                  action: 'patrol',
  35                  rcid: rcid
  36              } )
  37              .done( function ( data ) {
  38                  // Remove all patrollinks from the page (including any spinners inside).
  39                  $patrolLinks.closest( '.patrollink' ).remove();
  40                  if ( data.patrol !== undefined ) {
  41                      // Success
  42                      var title = new mw.Title( data.patrol.title );
  43                      mw.notify( mw.msg( 'markedaspatrollednotify', title.toText() ) );
  44                  } else {
  45                      // This should never happen as errors should trigger fail
  46                      mw.notify( mw.msg( 'markedaspatrollederrornotify' ) );
  47                  }
  48              } )
  49              .fail( function ( error ) {
  50                  $spinner.remove();
  51                  // Restore the patrol link. This allows the user to try again
  52                  // (or open it in a new window, bypassing this ajax module).
  53                  $patrolLinks.show();
  54                  if ( error === 'noautopatrol' ) {
  55                      // Can't patrol own
  56                      mw.notify( mw.msg( 'markedaspatrollederror-noautopatrol' ) );
  57                  } else {
  58                      mw.notify( mw.msg( 'markedaspatrollederrornotify' ) );
  59                  }
  60              } );
  61  
  62              e.preventDefault();
  63          } );
  64      } );
  65  }( mediaWiki, jQuery ) );


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1