diff options
author | Morris Jobke <hey@morrisjobke.de> | 2016-11-02 22:36:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-02 22:36:05 +0100 |
commit | 39573e602d5e38e4b71b3d197d08798dd9558659 (patch) | |
tree | 1a4045bda8e05ad3537a9bf974834e1731a1e2cd | |
parent | 178d7f5bfa49bcf54d85ce788268ba592608627a (diff) | |
parent | 7d17b42f4df2322c1078c99840a9d35415ffd7aa (diff) | |
download | nextcloud-server-39573e602d5e38e4b71b3d197d08798dd9558659.tar.gz nextcloud-server-39573e602d5e38e4b71b3d197d08798dd9558659.zip |
Merge pull request #1978 from nextcloud/remove-send-mail-option
Remove send mail option
22 files changed, 69 insertions, 500 deletions
diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index d3708915273..6f74fec861f 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -235,8 +235,6 @@ class ViewController extends Controller { $params['owner'] = $storageInfo['owner']; $params['ownerDisplayName'] = $storageInfo['ownerDisplayName']; $params['isPublic'] = false; - $params['mailNotificationEnabled'] = $this->config->getAppValue('core', 'shareapi_allow_mail_notification', 'no'); - $params['mailPublicNotificationEnabled'] = $this->config->getAppValue('core', 'shareapi_allow_public_notification', 'no'); $params['allowShareWithLink'] = $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'); $user = $this->userSession->getUser()->getUID(); $params['defaultFileSorting'] = $this->config->getUserValue($user, 'files', 'file_sorting', 'name'); diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index 17958d330b7..1670ccfd138 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -16,8 +16,6 @@ <input type="hidden" name="ownerDisplayName" id="ownerDisplayName" value="<?php p($_['ownerDisplayName']); ?>" /> <input type="hidden" name="fileNotFound" id="fileNotFound" value="<?php p($_['fileNotFound']); ?>" /> <?php if (!$_['isPublic']) :?> -<input type="hidden" name="mailNotificationEnabled" id="mailNotificationEnabled" value="<?php p($_['mailNotificationEnabled']) ?>" /> -<input type="hidden" name="mailPublicNotificationEnabled" id="mailPublicNotificationEnabled" value="<?php p($_['mailPublicNotificationEnabled']) ?>" /> <input type="hidden" name="allowShareWithLink" id="allowShareWithLink" value="<?php p($_['allowShareWithLink']) ?>" /> <input type="hidden" name="defaultFileSorting" id="defaultFileSorting" value="<?php p($_['defaultFileSorting']) ?>" /> <input type="hidden" name="defaultFileSortingDirection" id="defaultFileSortingDirection" value="<?php p($_['defaultFileSortingDirection']) ?>" /> diff --git a/apps/files/tests/Controller/ViewControllerTest.php b/apps/files/tests/Controller/ViewControllerTest.php index 179aaa373b3..25445567ea9 100644 --- a/apps/files/tests/Controller/ViewControllerTest.php +++ b/apps/files/tests/Controller/ViewControllerTest.php @@ -218,8 +218,6 @@ class ViewControllerTest extends TestCase { 'defaultFileSortingDirection' => 'asc', 'showHiddenFiles' => 0, 'fileNotFound' => 0, - 'mailNotificationEnabled' => 'no', - 'mailPublicNotificationEnabled' => 'no', 'allowShareWithLink' => 'yes', 'appNavigation' => $nav, 'appContents' => [ diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml index 133119feabd..cc97f65a5e6 100644 --- a/apps/files_sharing/appinfo/info.xml +++ b/apps/files_sharing/appinfo/info.xml @@ -10,7 +10,7 @@ Turning the feature off removes shared files and folders on the server for all s <licence>AGPL</licence> <author>Michael Gapczynski, Bjoern Schiessle</author> <default_enable/> - <version>1.1.0</version> + <version>1.1.1</version> <types> <filesystem/> </types> diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php index d53d878881e..ed0d7732b37 100644 --- a/apps/files_sharing/appinfo/update.php +++ b/apps/files_sharing/appinfo/update.php @@ -26,7 +26,11 @@ $installedVersion = \OC::$server->getConfig()->getAppValue('files_sharing', 'ins // Migration OC8.2 -> OC9 if (version_compare($installedVersion, '0.9.1', '<')) { - $m = new Migration(\OC::$server->getDatabaseConnection()); + $m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()); $m->removeReShares(); $m->updateInitiatorInfo(); } + +if (version_compare($installedVersion, '1.1.1', '<')) { + $m = new Migration(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()); +} diff --git a/apps/files_sharing/lib/Capabilities.php b/apps/files_sharing/lib/Capabilities.php index 9da6dbbc995..bfbd15c1122 100644 --- a/apps/files_sharing/lib/Capabilities.php +++ b/apps/files_sharing/lib/Capabilities.php @@ -73,10 +73,10 @@ class Capabilities implements ICapability { } $res["public"] = $public; - $res['user']['send_mail'] = $this->config->getAppValue('core', 'shareapi_allow_mail_notification', 'no') === 'yes'; - $res['resharing'] = $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes') === 'yes'; + $res['user']['send_mail'] = false; + $res['group_sharing'] = $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes'; } diff --git a/apps/files_sharing/lib/Migration.php b/apps/files_sharing/lib/Migration.php index 9c971bf7f49..605a11fd22c 100644 --- a/apps/files_sharing/lib/Migration.php +++ b/apps/files_sharing/lib/Migration.php @@ -27,6 +27,7 @@ namespace OCA\Files_Sharing; use Doctrine\DBAL\Connection; use OCP\ICache; +use OCP\IConfig; use OCP\IDBConnection; use OC\Cache\CappedMemoryCache; @@ -41,14 +42,18 @@ class Migration { /** @var IDBConnection */ private $connection; + /** @var IConfig */ + private $config; + /** @var ICache with all shares we already saw */ private $shareCache; /** @var string */ private $table = 'share'; - public function __construct(IDBConnection $connection) { + public function __construct(IDBConnection $connection, IConfig $config) { $this->connection = $connection; + $this->config = $config; // We cache up to 10k share items (~20MB) $this->shareCache = new CappedMemoryCache(10000); @@ -111,6 +116,14 @@ class Migration { } /** + * this was dropped for Nextcloud 11 in favour of share by mail + */ + public function removeSendMailOption() { + $this->config->deleteAppValue('core', 'shareapi_allow_mail_notification'); + $this->config->deleteAppValue('core', 'shareapi_allow_public_notification'); + } + + /** * find the owner of a re-shared file/folder * * @param array $share diff --git a/apps/files_sharing/tests/CapabilitiesTest.php b/apps/files_sharing/tests/CapabilitiesTest.php index 254f7cdaa7c..3d59b1f6f34 100644 --- a/apps/files_sharing/tests/CapabilitiesTest.php +++ b/apps/files_sharing/tests/CapabilitiesTest.php @@ -188,24 +188,6 @@ class CapabilitiesTest extends \Test\TestCase { $this->assertFalse($result['public']['send_mail']); } - public function testUserSendMail() { - $map = [ - ['core', 'shareapi_enabled', 'yes', 'yes'], - ['core', 'shareapi_allow_mail_notification', 'no', 'yes'], - ]; - $result = $this->getResults($map); - $this->assertTrue($result['user']['send_mail']); - } - - public function testUserNoSendMail() { - $map = [ - ['core', 'shareapi_enabled', 'yes', 'yes'], - ['core', 'shareapi_allow_mail_notification', 'no', 'no'], - ]; - $result = $this->getResults($map); - $this->assertFalse($result['user']['send_mail']); - } - public function testResharing() { $map = [ ['core', 'shareapi_enabled', 'yes', 'yes'], diff --git a/apps/files_sharing/tests/MigrationTest.php b/apps/files_sharing/tests/MigrationTest.php index 7d6ca7840ed..572f64da743 100644 --- a/apps/files_sharing/tests/MigrationTest.php +++ b/apps/files_sharing/tests/MigrationTest.php @@ -39,6 +39,9 @@ class MigrationTest extends TestCase { /** @var \OCP\IDBConnection */ private $connection; + /** @var \OCP\IConfig */ + private $config; + /** @var Migration */ private $migration; @@ -48,7 +51,8 @@ class MigrationTest extends TestCase { parent::setUp(); $this->connection = \OC::$server->getDatabaseConnection(); - $this->migration = new Migration($this->connection); + $this->config = \OC::$server->getConfig(); + $this->migration = new Migration($this->connection, $this->config); $this->cleanDB(); } @@ -351,4 +355,26 @@ class MigrationTest extends TestCase { $stmt->closeCursor(); $this->assertEquals(1001, $i); } + + /** + * test that we really remove the "shareapi_allow_mail_notification" setting only + */ + public function testRemoveSendMailOption() { + $this->config->setAppValue('core', 'shareapi_setting1', 'dummy-value'); + $this->config->setAppValue('core', 'shareapi_allow_mail_notification', 'no'); + $this->config->setAppValue('core', 'shareapi_allow_public_notification', 'no'); + + $this->migration->removeSendMailOption(); + + $this->assertNull( + $this->config->getAppValue('core', 'shareapi_allow_mail_notification', null) + ); + $this->assertNull( + $this->config->getAppValue('core', 'shareapi_allow_public_notification', null) + ); + + $this->assertSame('dummy-value', + $this->config->getAppValue('core', 'shareapi_setting1', null) + ); + } } diff --git a/core/js/core.json b/core/js/core.json index 7e72234aaa4..d589208c828 100644 --- a/core/js/core.json +++ b/core/js/core.json @@ -33,7 +33,6 @@ "sharedialogview.js", "sharedialogexpirationview.js", "sharedialoglinkshareview.js", - "sharedialogmailview.js", "sharedialogresharerinfoview.js", "sharedialogshareelistview.js", "octemplate.js", diff --git a/core/js/shareconfigmodel.js b/core/js/shareconfigmodel.js index 24922d62636..7c92853f682 100644 --- a/core/js/shareconfigmodel.js +++ b/core/js/shareconfigmodel.js @@ -49,20 +49,6 @@ /** * @returns {boolean} */ - isMailPublicNotificationEnabled: function() { - return $('input:hidden[name=mailPublicNotificationEnabled]').val() === 'yes'; - }, - - /** - * @returns {boolean} - */ - isMailNotificationEnabled: function() { - return $('input:hidden[name=mailNotificationEnabled]').val() === 'yes'; - }, - - /** - * @returns {boolean} - */ isShareWithLinkAllowed: function() { return $('#allowShareWithLink').val() === 'yes'; }, diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js index 1d6a0f03d4d..bbc8f1b4547 100644 --- a/core/js/sharedialoglinkshareview.js +++ b/core/js/sharedialoglinkshareview.js @@ -332,7 +332,6 @@ hideFileListChecked: hideFileListChecked, publicUploadLabel: t('core', 'Allow upload and editing'), hideFileListLabel: t('core', 'Hide file listing'), - mailPublicNotificationEnabled: isLinkShare && this.configModel.isMailPublicNotificationEnabled(), mailPrivatePlaceholder: t('core', 'Email link to person'), mailButtonText: t('core', 'Send') })); diff --git a/core/js/sharedialogmailview.js b/core/js/sharedialogmailview.js deleted file mode 100644 index ce0893cb25c..00000000000 --- a/core/js/sharedialogmailview.js +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -/* globals escapeHTML, Handlebars */ - -(function() { - if (!OC.Share) { - OC.Share = {}; - } - - var TEMPLATE = - '{{#if shareAllowed}}' + - ' {{#if mailPublicNotificationEnabled}}' + - '<form id="emailPrivateLink" class="emailPrivateLinkForm oneline">' + - ' <input id="email" class="emailField" value="{{email}}" placeholder="{{mailPrivatePlaceholder}}" type="text" />' + - ' <a id="emailButton" class="icon icon-mail hasTooltip" title="Send e-mail"></a>' + - '</form>' + - ' {{/if}}' + - '{{/if}}' - ; - - /** - * @class OCA.Share.ShareDialogMailView - * @member {OC.Share.ShareItemModel} model - * @member {jQuery} $el - * @memberof OCA.Sharing - * @classdesc - * - * Represents the GUI of the share dialogue - * - */ - var ShareDialogMailView = OC.Backbone.View.extend({ - /** @type {string} **/ - id: 'shareDialogMailView', - - /** @type {OC.Share.ShareConfigModel} **/ - configModel: undefined, - - /** @type {Function} **/ - _template: undefined, - - /** @type {boolean} **/ - showLink: true, - - events: { - 'click #emailButton': '_onEmailPrivateLink' - }, - - initialize: function(options) { - var view = this; - - this.model.on('change:linkShare', function() { - view.render(); - }); - - if(!_.isUndefined(options.configModel)) { - this.configModel = options.configModel; - } else { - throw 'missing OC.Share.ShareConfigModel'; - } - - _.bindAll( - this, - '_onEmailPrivateLink' - ); - }, - - _onEmailPrivateLink: function(event) { - event.preventDefault(); - - var $emailField = this.$el.find('.emailField'); - var $emailButton = this.$el.find('.emailButton'); - var email = $emailField.val(); - if (email !== '') { - $emailField.prop('disabled', true); - $emailButton.prop('disabled', true); - $emailField.val(t('core', 'Sending ...')); - this.model.sendEmailPrivateLink(email).done(function() { - $emailField.css('font-weight', 'bold').val(t('core','Email sent')); - setTimeout(function() { - $emailField.val(''); - $emailField.css('font-weight', 'normal'); - $emailField.prop('disabled', false); - $emailButton.prop('disabled', false); - }, 2000); - }).fail(function() { - $emailField.val(email); - $emailField.css('font-weight', 'normal'); - $emailField.prop('disabled', false); - $emailButton.prop('disabled', false); - }); - } - return false; - }, - - render: function() { - var linkShareTemplate = this.template(); - var resharingAllowed = this.model.sharePermissionPossible(); - var email = this.$el.find('.emailField').val(); - - if(!resharingAllowed - || !this.showLink - || !this.configModel.isShareWithLinkAllowed()) - { - var templateData = {shareAllowed: false}; - if (!resharingAllowed) { - // add message - templateData.noSharingPlaceholder = t('core', 'Resharing is not allowed'); - } - this.$el.html(linkShareTemplate(templateData)); - return this; - } - - var isLinkShare = this.model.get('linkShare').isLinkShare; - - this.$el.html(linkShareTemplate({ - cid: this.cid, - shareAllowed: true, - mailPublicNotificationEnabled: isLinkShare && this.configModel.isMailPublicNotificationEnabled(), - mailPrivatePlaceholder: t('core', 'Email link to person'), - mailButtonText: t('core', 'Send link via email'), - email: email - })); - - var $emailField = this.$el.find('.emailField'); - if (isLinkShare && $emailField.length !== 0) { - $emailField.autocomplete({ - minLength: 1, - source: function (search, response) { - $.get( - OC.generateUrl('core/ajax/share.php'), { - fetch: 'getShareWithEmail', - search: search.term - }, function(result) { - if (result.status === 'success' && result.data.length > 0) { - response(result.data); - } - }); - }, - select: function( event, item ) { - $emailField.val(item.item.email); - return false; - } - }) - .data("ui-autocomplete")._renderItem = function( ul, item ) { - return $('<li>') - .append('<a>' + escapeHTML(item.displayname) + "<br>" + escapeHTML(item.email) + '</a>' ) - .appendTo( ul ); - }; - } - this.delegateEvents(); - - return this; - }, - - /** - * @returns {Function} from Handlebars - * @private - */ - template: function () { - if (!this._template) { - this._template = Handlebars.compile(TEMPLATE); - } - return this._template; - } - - }); - - OC.Share.ShareDialogMailView = ShareDialogMailView; - -})(); diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 775eaa554b0..f532d27c4b6 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -173,7 +173,6 @@ hasCreatePermission: this.model.hasCreatePermission(shareIndex), hasUpdatePermission: this.model.hasUpdatePermission(shareIndex), hasDeletePermission: this.model.hasDeletePermission(shareIndex), - wasMailSent: this.model.notificationMailWasSent(shareIndex), shareWith: shareWith, shareWithDisplayName: shareWithDisplayName, shareWithTitle: shareWithTitle, @@ -189,7 +188,6 @@ getShareeList: function() { var universal = { avatarEnabled: this.configModel.areAvatarsEnabled(), - notifyByMailLabel: t('core', 'notify by email'), unshareLabel: t('core', 'Unshare'), canShareLabel: t('core', 'can reshare'), canEditLabel: t('core', 'can edit'), diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index 3b2a7480c47..b277a1226c7 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -28,7 +28,6 @@ '<div class="shareeListView subView"></div>' + '<div class="linkShareView subView"></div>' + '<div class="expirationView subView"></div>' + - '<div class="mailView subView"></div>' + '<div class="loading hidden" style="height: 50px"></div>'; var TEMPLATE_REMOTE_SHARE_INFO = @@ -70,9 +69,6 @@ /** @type {object} **/ shareeListView: undefined, - /** @type {object} **/ - mailView: undefined, - events: { 'input .shareWithField': 'onShareWithFieldChanged' }, @@ -109,8 +105,7 @@ resharerInfoView: 'ShareDialogResharerInfoView', linkShareView: 'ShareDialogLinkShareView', expirationView: 'ShareDialogExpirationView', - shareeListView: 'ShareDialogShareeListView', - mailView: 'ShareDialogMailView' + shareeListView: 'ShareDialogShareeListView' }; for(var name in subViews) { @@ -383,9 +378,6 @@ this.shareeListView.$el = this.$el.find('.shareeListView'); this.shareeListView.render(); - this.mailView.$el = this.$el.find('.mailView'); - this.mailView.render(); - this.$el.find('.hasTooltip').tooltip(); return this; diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js index ecc75ab147c..a784f59f67f 100644 --- a/core/js/shareitemmodel.js +++ b/core/js/shareitemmodel.js @@ -417,49 +417,6 @@ return (share.permissions & permission) === permission; }, - notificationMailWasSent: function(shareIndex) { - /** @type OC.Share.Types.ShareInfo **/ - var share = this.get('shares')[shareIndex]; - if(!_.isObject(share)) { - throw "Unknown Share"; - } - return share.mail_send === 1; - }, - - /** - * Send the link share information by email - * - * @param {string} recipientEmail recipient email address - */ - sendEmailPrivateLink: function(recipientEmail) { - var deferred = $.Deferred(); - var itemType = this.get('itemType'); - var itemSource = this.get('itemSource'); - var linkShare = this.get('linkShare'); - - $.post( - OC.generateUrl('core/ajax/share.php'), { - action: 'email', - toaddress: recipientEmail, - link: linkShare.link, - itemType: itemType, - itemSource: itemSource, - file: this.fileInfoModel.get('name'), - expiration: linkShare.expiration || '' - }, - function(result) { - if (!result || result.status !== 'success') { - // FIXME: a model should not show dialogs - OC.dialogs.alert(result.data.message, t('core', 'Error while sending notification')); - deferred.reject(); - } else { - deferred.resolve(); - } - }); - - return deferred.promise(); - }, - /** * @returns {boolean} */ diff --git a/core/js/tests/specs/sharedialogshareelistview.js b/core/js/tests/specs/sharedialogshareelistview.js index 699e2e58d7b..bcc596a1386 100644 --- a/core/js/tests/specs/sharedialogshareelistview.js +++ b/core/js/tests/specs/sharedialogshareelistview.js @@ -34,8 +34,6 @@ describe('OC.Share.ShareDialogShareeListView', function () { oldAppConfig = _.extend({}, oc_appconfig.core); oc_appconfig.core.enforcePasswordForPublicLink = false; - $('#testArea').append('<input id="mailNotificationEnabled" name="mailNotificationEnabled" type="hidden" value="yes">'); - fileInfoModel = new OCA.Files.FileInfoModel({ id: 123, name: 'shared_file_name.txt', diff --git a/core/js/tests/specs/sharedialogviewSpec.js b/core/js/tests/specs/sharedialogviewSpec.js index f0e027d9fb9..6e86cb8eff7 100644 --- a/core/js/tests/specs/sharedialogviewSpec.js +++ b/core/js/tests/specs/sharedialogviewSpec.js @@ -41,7 +41,6 @@ describe('OC.Share.ShareDialogView', function() { beforeEach(function() { // horrible parameters $('#testArea').append('<input id="allowShareWithLink" type="hidden" value="yes">'); - $('#testArea').append('<input id="mailPublicNotificationEnabled" name="mailPublicNotificationEnabled" type="hidden" value="yes">'); $container = $('#shareContainer'); /* jshint camelcase:false */ oldAppConfig = _.extend({}, oc_appconfig.core); @@ -247,7 +246,7 @@ describe('OC.Share.ShareDialogView', function() { expect(slideToggleStub.callCount).toEqual(1); expect(slideToggleStub.getCall(0).thisValue.eq(0).attr('id')).toEqual('linkPass'); expect(fakeServer.requests.length).toEqual(0); - + // Now untoggle share by link dialog.$el.find('.linkCheckbox').click(); dialog.render(); @@ -402,76 +401,7 @@ describe('OC.Share.ShareDialogView', function() { expect($.datepicker._defaults.maxDate).toEqual(new Date(2014, 0, 27, 0, 0, 0, 0)); }); }); - describe('send link by email', function() { - var sendEmailPrivateLinkStub; - var clock; - - beforeEach(function() { - configModel.set({ - isMailPublicNotificationEnabled: true - }); - - shareModel.set('linkShare', { - isLinkShare: true, - token: 'tehtoken', - permissions: OC.PERMISSION_READ, - expiration: null - }); - - sendEmailPrivateLinkStub = sinon.stub(dialog.model, "sendEmailPrivateLink"); - clock = sinon.useFakeTimers(); - }); - afterEach(function() { - sendEmailPrivateLinkStub.restore(); - clock.restore(); - }); - it('displays form when sending emails is enabled', function() { - $('input[name=mailPublicNotificationEnabled]').val('yes'); - dialog.render(); - expect(dialog.$('.emailPrivateLinkForm').length).toEqual(1); - }); - it('form not rendered when sending emails is disabled', function() { - $('input[name=mailPublicNotificationEnabled]').val('no'); - dialog.render(); - expect(dialog.$('.emailPrivateLinkForm').length).toEqual(0); - }); - it('input cleared on success', function() { - var defer = $.Deferred(); - sendEmailPrivateLinkStub.returns(defer.promise()); - - $('input[name=mailPublicNotificationEnabled]').val('yes'); - dialog.render(); - - dialog.$el.find('.emailPrivateLinkForm .emailField').val('a@b.c'); - dialog.$el.find('#emailButton').trigger('click'); - - expect(sendEmailPrivateLinkStub.callCount).toEqual(1); - expect(dialog.$el.find('.emailPrivateLinkForm .emailField').val()).toEqual('Sending ...'); - - defer.resolve(); - expect(dialog.$el.find('.emailPrivateLinkForm .emailField').val()).toEqual('Email sent'); - - clock.tick(2000); - expect(dialog.$el.find('.emailPrivateLinkForm .emailField').val()).toEqual(''); - }); - it('input not cleared on failure', function() { - var defer = $.Deferred(); - sendEmailPrivateLinkStub.returns(defer.promise()); - - $('input[name=mailPublicNotificationEnabled]').val('yes'); - dialog.render(); - - dialog.$el.find('.emailPrivateLinkForm .emailField').val('a@b.c'); - dialog.$el.find('#emailButton').trigger('click'); - - expect(sendEmailPrivateLinkStub.callCount).toEqual(1); - expect(dialog.$el.find('.emailPrivateLinkForm .emailField').val()).toEqual('Sending ...'); - - defer.reject(); - expect(dialog.$el.find('.emailPrivateLinkForm .emailField').val()).toEqual('a@b.c'); - }); - }); }); describe('check for avatar', function() { beforeEach(function() { diff --git a/core/js/tests/specs/shareitemmodelSpec.js b/core/js/tests/specs/shareitemmodelSpec.js index 9d9001dc9e8..1cddcb2acaa 100644 --- a/core/js/tests/specs/shareitemmodelSpec.js +++ b/core/js/tests/specs/shareitemmodelSpec.js @@ -464,107 +464,7 @@ describe('OC.Share.ShareItemModel', function() { }); }); - describe('sendEmailPrivateLink', function() { - it('succeeds', function() { - /* jshint camelcase: false */ - fetchReshareDeferred.resolve(makeOcsResponse([])); - fetchSharesDeferred.resolve(makeOcsResponse([{ - displayname_owner: 'root', - expiration: null, - file_source: 123, - file_target: '/folder', - id: 20, - item_source: '123', - item_type: 'folder', - mail_send: '0', - parent: null, - path: '/folder', - permissions: OC.PERMISSION_READ, - share_type: OC.Share.SHARE_TYPE_LINK, - share_with: null, - stime: 1403884258, - storage: 1, - token: 'tehtoken', - uid_owner: 'root' - }])); - OC.currentUser = 'root'; - model.fetch(); - - var res = model.sendEmailPrivateLink('foo@bar.com'); - - expect(res.state()).toEqual('pending'); - expect(fakeServer.requests.length).toEqual(1); - expect(fakeServer.requests[0].url).toEqual(OC.generateUrl('core/ajax/share.php')); - expect(OC.parseQueryString(fakeServer.requests[0].requestBody)).toEqual( - { - action: 'email', - toaddress: 'foo@bar.com', - link: model.get('linkShare').link, - itemType: 'file', - itemSource: '123', - file: 'shared_file_name.txt', - expiration: '' - } - ) - - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({status: 'success'}) - ); - expect(res.state()).toEqual('resolved'); - }); - - it('fails', function() { - /* jshint camelcase: false */ - fetchReshareDeferred.resolve(makeOcsResponse([])); - fetchSharesDeferred.resolve(makeOcsResponse([{ - displayname_owner: 'root', - expiration: null, - file_source: 123, - file_target: '/folder', - id: 20, - item_source: '123', - item_type: 'folder', - mail_send: '0', - parent: null, - path: '/folder', - permissions: OC.PERMISSION_READ, - share_type: OC.Share.SHARE_TYPE_LINK, - share_with: null, - stime: 1403884258, - storage: 1, - token: 'tehtoken', - uid_owner: 'root' - }])); - OC.currentUser = 'root'; - model.fetch(); - - var res = model.sendEmailPrivateLink('foo@bar.com'); - - expect(res.state()).toEqual('pending'); - expect(fakeServer.requests.length).toEqual(1); - expect(fakeServer.requests[0].url).toEqual(OC.generateUrl('core/ajax/share.php')); - expect(OC.parseQueryString(fakeServer.requests[0].requestBody)).toEqual( - { - action: 'email', - toaddress: 'foo@bar.com', - link: model.get('linkShare').link, - itemType: 'file', - itemSource: '123', - file: 'shared_file_name.txt', - expiration: '' - } - ) - - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify({data: {message: 'fail'}, status: 'error'}) - ); - expect(res.state()).toEqual('rejected'); - }); - }); + describe('share permissions', function() { beforeEach(function() { oc_appconfig.core.resharingAllowed = true; @@ -635,7 +535,7 @@ describe('OC.Share.ShareItemModel', function() { addShareStub = sinon.stub(model, 'addShare'); updateShareStub = sinon.stub(model, 'updateShare'); }); - afterEach(function() { + afterEach(function() { addShareStub.restore(); updateShareStub.restore(); }); diff --git a/lib/private/Settings/Admin/Sharing.php b/lib/private/Settings/Admin/Sharing.php index 59821044605..9b17efa8028 100644 --- a/lib/private/Settings/Admin/Sharing.php +++ b/lib/private/Settings/Admin/Sharing.php @@ -52,8 +52,6 @@ class Sharing implements ISettings { // Built-In Sharing 'allowGroupSharing' => $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes'), 'allowLinks' => $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'), - 'allowMailNotification' => $this->config->getAppValue('core', 'shareapi_allow_mail_notification', 'no'), - 'allowPublicMailNotification' => $this->config->getAppValue('core', 'shareapi_allow_public_notification', 'no'), 'allowPublicUpload' => $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes'), 'allowResharing' => $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes'), 'allowShareDialogUserEnumeration' => $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes'), diff --git a/settings/templates/admin/sharing.php b/settings/templates/admin/sharing.php index eed8f36dbda..db025c8f205 100644 --- a/settings/templates/admin/sharing.php +++ b/settings/templates/admin/sharing.php @@ -81,11 +81,6 @@ <label for="onlyShareWithGroupMembers"><?php p($l->t('Restrict users to only share with users in their groups'));?></label><br/> </p> <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> - <input type="checkbox" name="shareapi_allow_mail_notification" id="allowMailNotification" class="checkbox" - value="1" <?php if ($_['allowMailNotification'] === 'yes') print_unescaped('checked="checked"'); ?> /> - <label for="allowMailNotification"><?php p($l->t('Allow users to send mail notification for shared files to other users'));?></label><br/> - </p> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> <input type="checkbox" name="shareapi_exclude_groups" id="shareapiExcludeGroups" class="checkbox" value="1" <?php if ($_['shareExcludeGroups']) print_unescaped('checked="checked"'); ?> /> <label for="shareapiExcludeGroups"><?php p($l->t('Exclude groups from sharing'));?></label><br/> diff --git a/tests/lib/Settings/Admin/SharingTest.php b/tests/lib/Settings/Admin/SharingTest.php index d0cda5308f5..122bf2b6caf 100644 --- a/tests/lib/Settings/Admin/SharingTest.php +++ b/tests/lib/Settings/Admin/SharingTest.php @@ -62,55 +62,45 @@ class SharingTest extends TestCase { $this->config ->expects($this->at(3)) ->method('getAppValue') - ->with('core', 'shareapi_allow_mail_notification', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_public_notification', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(5)) - ->method('getAppValue') ->with('core', 'shareapi_allow_public_upload', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(6)) + ->expects($this->at(4)) ->method('getAppValue') ->with('core', 'shareapi_allow_resharing', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(7)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(8)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'shareapi_enabled', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(9)) + ->expects($this->at(7)) ->method('getAppValue') ->with('core', 'shareapi_default_expire_date', 'no') ->willReturn('no'); $this->config - ->expects($this->at(10)) + ->expects($this->at(8)) ->method('getAppValue') ->with('core', 'shareapi_expire_after_n_days', '7') ->willReturn('7'); $this->config - ->expects($this->at(11)) + ->expects($this->at(9)) ->method('getAppValue') ->with('core', 'shareapi_enforce_expire_date', 'no') ->willReturn('no'); $this->config - ->expects($this->at(12)) + ->expects($this->at(10)) ->method('getAppValue') ->with('core', 'shareapi_exclude_groups', 'no') ->willReturn('no'); $this->config - ->expects($this->at(13)) + ->expects($this->at(11)) ->method('getAppValue') ->with('core', 'shareapi_public_link_disclaimertext', null) ->willReturn('Lorem ipsum'); @@ -121,8 +111,6 @@ class SharingTest extends TestCase { [ 'allowGroupSharing' => 'yes', 'allowLinks' => 'yes', - 'allowMailNotification' => 'no', - 'allowPublicMailNotification' => 'no', 'allowPublicUpload' => 'yes', 'allowResharing' => 'yes', 'allowShareDialogUserEnumeration' => 'yes', @@ -161,55 +149,45 @@ class SharingTest extends TestCase { $this->config ->expects($this->at(3)) ->method('getAppValue') - ->with('core', 'shareapi_allow_mail_notification', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_public_notification', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(5)) - ->method('getAppValue') ->with('core', 'shareapi_allow_public_upload', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(6)) + ->expects($this->at(4)) ->method('getAppValue') ->with('core', 'shareapi_allow_resharing', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(7)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(8)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'shareapi_enabled', 'yes') ->willReturn('yes'); $this->config - ->expects($this->at(9)) + ->expects($this->at(7)) ->method('getAppValue') ->with('core', 'shareapi_default_expire_date', 'no') ->willReturn('no'); $this->config - ->expects($this->at(10)) + ->expects($this->at(8)) ->method('getAppValue') ->with('core', 'shareapi_expire_after_n_days', '7') ->willReturn('7'); $this->config - ->expects($this->at(11)) + ->expects($this->at(9)) ->method('getAppValue') ->with('core', 'shareapi_enforce_expire_date', 'no') ->willReturn('no'); $this->config - ->expects($this->at(12)) + ->expects($this->at(10)) ->method('getAppValue') ->with('core', 'shareapi_exclude_groups', 'no') ->willReturn('yes'); $this->config - ->expects($this->at(13)) + ->expects($this->at(11)) ->method('getAppValue') ->with('core', 'shareapi_public_link_disclaimertext', null) ->willReturn('Lorem ipsum'); @@ -220,8 +198,6 @@ class SharingTest extends TestCase { [ 'allowGroupSharing' => 'yes', 'allowLinks' => 'yes', - 'allowMailNotification' => 'no', - 'allowPublicMailNotification' => 'no', 'allowPublicUpload' => 'yes', 'allowResharing' => 'yes', 'allowShareDialogUserEnumeration' => 'yes', |