From: Bartosz DziewoƄski Date: Thu, 22 Oct 2015 19:25:32 +0000 (+0200) Subject: mediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form X-Git-Tag: 1.31.0-rc.0~8669^2 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/exercices/journal.php?a=commitdiff_plain;h=bcf968010b07d0281d4accf753113610791666ab;p=lhc%2Fweb%2Fwiklou.git mediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form Second attempt. First, reverted one: I6f68122b5399f4b8766825c752e964478ae7563d. To improve in the future: * Use a better error message when not all logged-in users can upload Bug: T115866 Change-Id: I1ac083fd491c7445240b4fd9f7b3badacb2d2d37 --- diff --git a/resources/Resources.php b/resources/Resources.php index fce4383504..3bce6659af 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1186,6 +1186,7 @@ return array( ), 'dependencies' => array( 'oojs-ui', + 'mediawiki.user', 'mediawiki.Upload', 'mediawiki.jqueryMsg', ), diff --git a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js index 47f438863f..60c99918e5 100644 --- a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js +++ b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js @@ -151,10 +151,29 @@ * @return {jQuery.Promise} Promise resolved when everything is initialized */ mw.Upload.BookletLayout.prototype.initialize = function () { + var + apiPromise, + booklet = this, + deferred = $.Deferred(); + this.clear(); this.upload = this.createUpload(); this.setPage( 'upload' ); - return $.Deferred().resolve().promise(); + + apiPromise = this.upload.apiPromise || $.Deferred.resolve( this.upload.api ); + apiPromise.done( function ( api ) { + // If the user can't upload anything, don't give them the option to. + api.getUserInfo().done( function ( userInfo ) { + if ( userInfo.rights.indexOf( 'upload' ) === -1 ) { + // TODO Use a better error message when not all logged-in users can upload + booklet.getPage( 'upload' ).$element.msg( 'api-error-mustbeloggedin' ); + } + } ).always( function () { + deferred.resolve(); + } ); + } ); + + return deferred.promise(); }; /**