Use OO.ui.MultilineTextInputWidget
[lhc/web/wiklou.git] / resources / src / mediawiki / mediawiki.Upload.BookletLayout.js
index 172cac2..3ade332 100644 (file)
@@ -1,4 +1,4 @@
-/* global moment*/
+/* global moment */
 ( function ( $, mw, moment ) {
 
        /**
         */
        mw.Upload.BookletLayout.prototype.uploadFile = function () {
                var deferred = $.Deferred(),
-                       startTime = new Date(),
+                       startTime = mw.now(),
                        layout = this,
                        file = this.getFile();
 
                                deferred.reject( errorMessage );
                        } );
                }, function ( progress ) {
-                       var elapsedTime = new Date() - startTime,
+                       var elapsedTime = mw.now() - startTime,
                                estimatedTotalTime = ( 1 / progress ) * elapsedTime,
                                estimatedRemainingTime = moment.duration( estimatedTotalTime - elapsedTime );
                        layout.emit( 'fileUploadProgress', progress, estimatedRemainingTime );
                        stateDetails = this.upload.getStateDetails(),
                        error = stateDetails.errors ? stateDetails.errors[ 0 ] : false,
                        warnings = stateDetails.upload && stateDetails.upload.warnings,
-                       $ul = $( '<ul>' );
+                       $ul = $( '<ul>' ),
+                       errorText;
 
                if ( state === mw.Upload.State.ERROR ) {
                        if ( !error ) {
+                               if ( stateDetails.textStatus === 'timeout' ) {
+                                       // in case of $.ajax.fail(), there is no response json
+                                       errorText = mw.message( 'apierror-timeout' ).parse();
+                               } else if ( stateDetails.xhr && stateDetails.xhr.status === 0 ) {
+                                       // failed to even connect to server
+                                       errorText = mw.message( 'apierror-offline' ).parse();
+                               } else if ( stateDetails.textStatus ) {
+                                       errorText = stateDetails.textStatus;
+                               } else {
+                                       errorText = mw.message( 'apierror-unknownerror', JSON.stringify( stateDetails ) ).parse();
+                               }
+
                                // If there's an 'exception' key, this might be a timeout, or other connection problem
                                return $.Deferred().resolve( new OO.ui.Error(
-                                       $( '<p>' ).msg( 'apierror-unknownerror', JSON.stringify( stateDetails ) ),
+                                       $( '<p>' ).html( errorText ),
                                        { recoverable: false }
                                ) );
                        }
                        required: true,
                        validate: /.+/
                } );
-               this.descriptionWidget = new OO.ui.TextInputWidget( {
+               this.descriptionWidget = new OO.ui.MultilineTextInputWidget( {
                        indicator: 'required',
                        required: true,
                        validate: /\S+/,
-                       multiline: true,
                        autosize: true
                } );