Eranroz has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/356811 )
Change subject: WIP: Introducing crosswiki-upload right ...................................................................... WIP: Introducing crosswiki-upload right * A new user right crosswiki-upload to allow configuration whether user have right to upload files from external site. Bug: T166540 Change-Id: Ibfbf71c9fe295fd9f0580c427e21b5f773888d47 --- M includes/DefaultSettings.php M includes/user/User.php M languages/i18n/en.json M languages/i18n/qqq.json M resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js M resources/src/mediawiki/mediawiki.Upload.BookletLayout.js M resources/src/mediawiki/mediawiki.Upload.js 7 files changed, 50 insertions(+), 17 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/11/356811/1 diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index f7f52e5..189aa89 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -5125,6 +5125,7 @@ $wgGroupPermissions['user']['upload'] = true; $wgGroupPermissions['user']['reupload'] = true; $wgGroupPermissions['user']['reupload-shared'] = true; +$wgGroupPermissions['user']['crosswiki-upload'] = true; $wgGroupPermissions['user']['minoredit'] = true; $wgGroupPermissions['user']['purge'] = true; $wgGroupPermissions['user']['sendemail'] = true; diff --git a/includes/user/User.php b/includes/user/User.php index 99610c3..37d53ba 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -186,6 +186,7 @@ 'undelete', 'unwatchedpages', 'upload', + 'crosswiki-upload', 'upload_by_url', 'userrights', 'userrights-interwiki', diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 9fe0e3c..26817b1 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -1305,6 +1305,7 @@ "action-move-categorypages": "move category pages", "action-movefile": "move this file", "action-upload": "upload this file", + "action-crosswiki-upload": "upload file to shared repository", "action-reupload": "overwrite this existing file", "action-reupload-shared": "override this file on a shared repository", "action-upload_by_url": "upload this file from a URL", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index ee51075..e949fdc 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -1494,6 +1494,7 @@ "action-move-categorypages": "{{Doc-action|move-categorypages}}", "action-movefile": "{{doc-action|movefile}}", "action-upload": "{{Doc-action|upload}}", + "action-crosswiki-upload": "{{Doc-action|crosswiki-upload}}", "action-reupload": "{{Doc-action|reupload}}", "action-reupload-shared": "{{Doc-action|reupload-shared}}", "action-upload_by_url": "{{Doc-action|upload_by_url}}", diff --git a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js index 0c572d4..54f5411 100644 --- a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js +++ b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js @@ -260,5 +260,23 @@ return '[[' + namespace + ':' + username + '|' + username + ']]'; }; + /** + * @inheritdoc + */ + ForeignStructuredUpload.prototype.isUploadAllowed = function() { + var promise = new $.Deferred(), + userright = ( this.target === 'local' ) ? 'upload' : 'crosswiki-upload'; + + this.apiPromise.then( function ( api ) { + api.getUserInfo().then( + function ( userInfo ) { + promise.resolve( { allowed: userInfo.rights.indexOf( userright ) != -1, userInfo: userInfo, uploadRight: userright }); + } + ); + }); + + return promise; + } + mw.ForeignStructuredUpload = ForeignStructuredUpload; }( mediaWiki, jQuery, OO ) ); diff --git a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js index 3fcbb3f..eead5cc 100644 --- a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js +++ b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js @@ -174,23 +174,18 @@ this.setFilekey( this.filekey ); } - return this.upload.getApi().then( - function ( api ) { - // If the user can't upload anything, don't give them the option to. - return api.getUserInfo().then( - function ( userInfo ) { - if ( userInfo.rights.indexOf( 'upload' ) === -1 ) { - if ( mw.user.isAnon() ) { - booklet.getPage( 'upload' ).$element.msg( 'apierror-mustbeloggedin', mw.msg( 'action-upload' ) ); - } else { - booklet.getPage( 'upload' ).$element.msg( 'apierror-permissiondenied', mw.msg( 'action-upload' ) ); - } - } - return $.Deferred().resolve(); - }, - // Always resolve, never reject - function () { return $.Deferred().resolve(); } - ); + return this.upload.isUploadAllowed().then( + function ( res ) { + if (!res.allowed) { + // If the user can't upload anything, don't give them the option to. + if ( mw.user.isAnon() ) { + booklet.getPage( 'upload' ).$element.msg( 'apierror-mustbeloggedin', mw.msg( 'action-' + res.uploadRight ) ); + } else { + booklet.getPage( 'upload' ).$element.msg( 'apierror-permissiondenied', mw.msg( 'action-' + + res.uploadRight ) ); + } + } + + return $.Deferred().resolve(); }, function ( errorMsg ) { booklet.getPage( 'upload' ).$element.msg( errorMsg ); diff --git a/resources/src/mediawiki/mediawiki.Upload.js b/resources/src/mediawiki/mediawiki.Upload.js index 02df2a8..544a163 100644 --- a/resources/src/mediawiki/mediawiki.Upload.js +++ b/resources/src/mediawiki/mediawiki.Upload.js @@ -366,6 +366,22 @@ }; /** + * Get info whether the user have sufficent access rights for upload + * + * @return {jQuery.Promise} + */ + UP.isUploadAllowed = function() { + var promise = new $.Deferred(); + + this.api.getUserInfo().then( + function ( userInfo ) { + promise.resolve( { allowed: userInfo.rights.indexOf( 'upload' ) != -1, userInfo: userInfo, uploadRight: 'upload' }); + } + ); + return promise; + } + + /** * @enum mw.Upload.State * State of uploads represented in simple terms. */ -- To view, visit https://gerrit.wikimedia.org/r/356811 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibfbf71c9fe295fd9f0580c427e21b5f773888d47 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Eranroz <eranro...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits