From aeee19b3f24eb60252ba55b89be745027ed39faf Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 14 Sep 2015 18:03:44 +0200 Subject: [PATCH] Implement "notify by email" checkbox in share dialog --- core/js/sharedialogshareelistview.js | 15 ++++++++++++--- core/js/shareitemmodel.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 8f68231398..463d2468bb 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -84,7 +84,8 @@ events: { 'click .unshare': 'onUnshare', 'click .permissions': 'onPermissionChange', - 'click .showCruds': 'onCrudsToggle' + 'click .showCruds': 'onCrudsToggle', + 'click .mailNotification': 'onSendMailNotification' }, initialize: function(options) { @@ -279,11 +280,19 @@ this.model.setPermissions(shareType, shareWith, permissions); }, - onCrudsToggle: function(event) { + onCrudsToggle: function() { this.$el.find('.cruds').toggleClass('hidden'); return false; - } + }, + onSendMailNotification: function(event) { + var $target = $(event.target); + var $li = $(event.target).closest('li'); + var shareType = $li.data('share-type'); + var shareWith = $li.attr('data-share-with'); + + this.model.sendNotificationForShare(shareType, shareWith, $target.is(':checked')); + } }); OC.Share.ShareDialogShareeListView = ShareDialogShareeListView; diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js index 877b3cb230..595670faae 100644 --- a/core/js/shareitemmodel.js +++ b/core/js/shareitemmodel.js @@ -465,6 +465,34 @@ return share.share_mail_send === '1'; }, + /** + * Sends an email notification for the given share + * + * @param {int} shareType share type + * @param {string} shareWith recipient + * @param {bool} state whether to set the notification flag or remove it + */ + sendNotificationForShare: function(shareType, shareWith, state) { + var itemType = this.get('itemType'); + var itemSource = this.get('itemSource'); + + $.post( + OC.generateUrl('core/ajax/share.php'), + { + action: state ? 'informRecipients' : 'informRecipientsDisabled', + recipient: shareWith, + shareType: shareType, + itemSource: itemSource, + itemType: itemType + }, + function(result) { + if (result.status !== 'success') { + OC.dialogs.alert(t('core', result.data.message), t('core', 'Warning')); + } + } + ); + }, + /** * @returns {boolean} */