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