diff options
Diffstat (limited to 'www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js')
-rw-r--r-- | www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js b/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js new file mode 100644 index 00000000..8efd129d --- /dev/null +++ b/www/wiki/extensions/UploadWizard/resources/handlers/mw.ApiUploadPostHandler.js @@ -0,0 +1,45 @@ +( function ( mw, OO ) { + /** + * Represents an object which send a direct request to the MediaWiki API. + * This is used when there is no actual file payload (eg. Flickr import) + * + * @param {mw.UploadWizardUpload} upload current upload + * @param {mw.Api} api + */ + mw.ApiUploadPostHandler = function ( upload, api ) { + mw.ApiUploadHandler.call( this, upload, api ); + + this.request = null; + }; + + OO.inheritClass( mw.ApiUploadPostHandler, mw.ApiUploadHandler ); + + mw.ApiUploadPostHandler.prototype.abort = function () { + this.request.abort(); + }; + + /** + * @return {jQuery.Promise} + */ + mw.ApiUploadPostHandler.prototype.submit = function () { + var tempname = this.upload.getFilename(), + ext = tempname.split( '.' ).pop(); + + // Limit filename length to 240 bytes (limit hardcoded in UploadBase.php). + if ( tempname.length > 240 ) { + tempname = tempname.substr( 0, 240 - ext.length - 1 ) + '.' + ext; + } + + this.upload.ui.setStatus( 'mwe-upwiz-transport-started' ); + + this.request = this.api.postWithToken( 'csrf', { + action: 'upload', + stash: 1, + ignorewarnings: 1, + url: this.upload.file.url, + filename: tempname + } ); + + return this.request; + }; +}( mediaWiki, OO ) ); |