Prtksxna has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/243144

Change subject: mw.Upload.BookletLayout: Show errors and try to recover from 
warnings
......................................................................

mw.Upload.BookletLayout: Show errors and try to recover from warnings

Show useful errors and try and recover from warning by changing the
state of the upload.

Bug: T114130
Change-Id: I08704108704ffaa70245c5facfca4b063a61f01b
---
M resources/Resources.php
M resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
M resources/src/mediawiki/mediawiki.Upload.js
3 files changed, 55 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/44/243144/1

diff --git a/resources/Resources.php b/resources/Resources.php
index ccc3cd5..b851916 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -1220,6 +1220,7 @@
                'dependencies' => array(
                        'oojs-ui',
                        'mediawiki.Upload',
+                       'mediawiki.jqueryMsg',
                ),
                'messages' => array(
                        'upload-process-error',
@@ -1230,6 +1231,8 @@
                        'upload-form-label-infoform-description',
                        'upload-form-label-usage-title',
                        'upload-form-label-usage-filename',
+                       'fileexists',
+                       'filepageexists',
                ),
        ),
        'mediawiki.ForeignStructuredUpload.BookletLayout' => array(
diff --git a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js 
b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
index d1e01b1..8146a4b 100644
--- a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
+++ b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
@@ -232,23 +232,9 @@
                this.upload.setFilename( this.getFilename() );
                this.upload.setText( this.getText() );
 
-               this.uploadPromise.always( function () {
-                       layout.upload.finishStashUpload().always( function () {
+               this.uploadPromise.then( function () {
+                       layout.upload.finishStashUpload().then( function () {
                                var name;
-
-                               if ( layout.upload.getState() === 
mw.Upload.State.ERROR ) {
-                                       deferred.reject( new OO.ui.Error( 
mw.msg( 'upload-process-error' ), {
-                                               recoverable: false
-                                       } ) );
-                                       return false;
-                               }
-
-                               if ( layout.upload.getState() === 
mw.Upload.State.WARNING ) {
-                                       deferred.reject( new OO.ui.Error( 
mw.msg( 'upload-process-warning' ), {
-                                               recoverable: false
-                                       } ) );
-                                       return false;
-                               }
 
                                // Normalize page name and localise the 'File:' 
prefix
                                name = new mw.Title( 'File:' + 
layout.upload.getFilename() ).toString();
@@ -257,6 +243,42 @@
 
                                deferred.resolve();
                                layout.emit( 'fileSaved' );
+                       }, function () {
+                               var stateDetails = 
layout.upload.getStateDetails();
+                               console.log( stateDetails );
+
+                               if ( layout.upload.getState() === 
mw.Upload.State.ERROR ) {
+                                       deferred.reject( new OO.ui.Error( 
stateDetails, {
+                                               recoverable: false
+                                       } ) );
+                                       return false;
+                               }
+
+                               if ( layout.upload.getState() === 
mw.Upload.State.WARNING ) {
+                                       if ( stateDetails.exists !== undefined 
) {
+                                               deferred.reject( new 
OO.ui.Error(
+                                                       $( '<p>' ).html(
+                                                               mw.message( 
'filepageexists', stateDetails.exists ).parse()
+                                                       )
+                                               ) );
+                                       }
+
+                                       if ( stateDetails.duplicate !== 
undefined ) {
+                                               deferred.reject( new 
OO.ui.Error(
+                                                       $( '<p>' ).html(
+                                                               mw.message( 
'fileexists', stateDetails.duplicate[ 0 ] ).parse()
+                                                       )
+                                               ) );
+                                       }
+
+                                       // Change the name if the current name 
isn't acceptable
+                                       if ( stateDetails.badfilename !== 
undefined ) {
+                                               layout.filenameWidget.setValue( 
stateDetails.badfilename );
+                                               deferred.reject( new 
OO.ui.Error( 'Changing name to ' + stateDetails.badfilename ) );
+                                       }
+
+                                       return false;
+                               }
                        } );
                } );
 
diff --git a/resources/src/mediawiki/mediawiki.Upload.js 
b/resources/src/mediawiki/mediawiki.Upload.js
index 56f4f83..a882014 100644
--- a/resources/src/mediawiki/mediawiki.Upload.js
+++ b/resources/src/mediawiki/mediawiki.Upload.js
@@ -310,7 +310,20 @@
                                upload.setState( Upload.State.UPLOADED );
                                upload.imageinfo = result.upload.imageinfo;
                                return result;
-                       }, function () {
+                       }, function ( result ) {
+                               // Errors are strings that can be used to get 
error message
+                               if ( typeof result === 'string' ) {
+                                       upload.setState( Upload.State.ERROR, 
mw.message( 'api-error-' + result ) );
+                                       return;
+                               }
+
+                               // Warnings come in the form of objects
+                               if ( $.isPlainObject( result ) ) {
+                                       upload.setState( Upload.State.WARNING, 
result );
+                                       return;
+                               }
+
+                               // Throw an empty error if we can't figure it 
out
                                upload.setState( Upload.State.ERROR );
                        } );
                } );

-- 
To view, visit https://gerrit.wikimedia.org/r/243144
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I08704108704ffaa70245c5facfca4b063a61f01b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Prtksxna <psax...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to