Add a bailout method for getEditToken
authorMark Holmquist <mtraceur@member.fsf.org>
Wed, 15 Jul 2015 20:41:36 +0000 (15:41 -0500)
committerMark Holmquist <mtraceur@member.fsf.org>
Wed, 15 Jul 2015 21:09:07 +0000 (16:09 -0500)
getEditToken is right handy for doing requests on the local wiki, but
CentralAuth yells at you if you leave a token= parameter in the request,
so we need to be able to turn this off.

Change-Id: I6212c6aa2f52671f22e227950a37dde6b65d5316

resources/src/mediawiki.api/mediawiki.api.upload.js

index f147ac8..6347828 100644 (file)
                 * @return {jQuery.Promise}
                 */
                uploadWithIframe: function ( file, data ) {
-                       var tokenPromise,
+                       var tokenPromise = $.Deferred(),
                                api = this,
                                filenameFound = false,
                                deferred = $.Deferred(),
                                return $.Deferred().reject( 'Filename not included in file data.' );
                        }
 
-                       tokenPromise = this.getEditToken().then( function ( token ) {
-                               $form.append( getHiddenInput( 'token', token ) );
-                       } );
+                       if ( this.needToken() ) {
+                               this.getEditToken().then( function ( token ) {
+                                       $form.append( getHiddenInput( 'token', token ) );
+                                       tokenPromise.resolve();
+                               }, tokenPromise.reject );
+                       } else {
+                               tokenPromise.resolve();
+                       }
 
                        $( 'body' ).append( $form, $iframe );
 
                 * @param {Object} data
                 */
                uploadWithFormData: function ( file, data ) {
-                       var xhr, tokenPromise,
+                       var xhr,
                                api = this,
                                formData = new FormData(),
                                deferred = $.Deferred(),
 
                        xhr.open( 'POST', this.defaults.ajax.url, true );
 
-                       tokenPromise = this.getEditToken().then( function ( token ) {
-                               formData.append( 'token', token );
-                               xhr.send( formData );
-                       }, function () {
-                               // Mark the edit token as bad, it's been used.
-                               api.badToken( 'edit' );
-                       } );
+                       if ( this.needToken() ) {
+                               this.getEditToken().then( function ( token ) {
+                                       formData.append( 'token', token );
+                                       xhr.send( formData );
+                               }, function () {
+                                       // Mark the edit token as bad, it's been used.
+                                       api.badToken( 'edit' );
+                               } );
+                       }
 
                        return deferred.promise();
                },
 
                                return finishUpload;
                        } );
+               },
+
+               needToken: function () {
+                       return true;
                }
        } );