mediawiki.api.upload: Use this.defaults.parameters instead of all-custom params
authorBartosz Dziewoński <matma.rex@gmail.com>
Tue, 18 Aug 2015 22:11:14 +0000 (00:11 +0200)
committerBartosz Dziewoński <matma.rex@gmail.com>
Thu, 20 Aug 2015 15:47:14 +0000 (15:47 +0000)
Change-Id: I3326f30a52949bbe85aee9fcff39ca34002aab90

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

index 9b29bbf..cec352a 100644 (file)
                 * @return {jQuery.Promise}
                 */
                uploadWithIframe: function ( file, data ) {
-                       var tokenPromise = $.Deferred(),
+                       var key,
+                               tokenPromise = $.Deferred(),
                                api = this,
-                               filenameFound = false,
                                deferred = $.Deferred(),
                                nonce = getNonce(),
                                id = 'uploadframe-' + nonce,
                                iframe = getNewIframe( id ),
                                $iframe = $( iframe );
 
-                       $form.addClass( 'mw-api-upload-form' );
+                       for ( key in data ) {
+                               if ( !fieldsAllowed[key] ) {
+                                       delete data[key];
+                               }
+                       }
 
-                       $form.append(
-                               getHiddenInput( 'action', 'upload' ),
-                               getHiddenInput( 'format', 'json' ),
-                               file
-                       );
+                       data = $.extend( {}, this.defaults.parameters, { action: 'upload' }, data );
+                       $form.addClass( 'mw-api-upload-form' );
 
                        $form.css( 'display', 'none' )
                                .attr( {
                        file.name = 'file';
 
                        $.each( data, function ( key, val ) {
-                               if ( key === 'filename' ) {
-                                       filenameFound = true;
-                               }
-
-                               if ( fieldsAllowed[key] === true ) {
-                                       $form.append( getHiddenInput( key, val ) );
-                               }
+                               $form.append( getHiddenInput( key, val ) );
                        } );
 
-                       if ( !filenameFound && !data.stash ) {
+                       if ( !data.filename && !data.stash ) {
                                return $.Deferred().reject( 'Filename not included in file data.' );
                        }
 
                 * @param {Object} data
                 */
                uploadWithFormData: function ( file, data ) {
-                       var xhr,
+                       var key, xhr,
                                api = this,
                                formData = new FormData(),
-                               deferred = $.Deferred(),
-                               filenameFound = false;
-
-                       formData.append( 'action', 'upload' );
-                       formData.append( 'format', 'json' );
+                               deferred = $.Deferred();
 
-                       $.each( data, function ( key, val ) {
-                               if ( key === 'filename' ) {
-                                       filenameFound = true;
+                       for ( key in data ) {
+                               if ( !fieldsAllowed[key] ) {
+                                       delete data[key];
                                }
+                       }
 
-                               if ( fieldsAllowed[key] === true ) {
-                                       formData.append( key, val );
-                               }
+                       data = $.extend( {}, this.defaults.parameters, { action: 'upload' }, data );
+
+                       $.each( data, function ( key, val ) {
+                               formData.append( key, val );
                        } );
 
-                       if ( !filenameFound && !data.stash ) {
+                       if ( !data.filename && !data.stash ) {
                                return $.Deferred().reject( 'Filename not included in file data.' );
                        }