From 1181ac14f7cad23bb49ed749bfa60f40d57a977f Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Wed, 27 Jul 2016 15:08:24 +0200 Subject: [PATCH 1/6] move sharing options into popover menu --- core/js/sharedialogshareelistview.js | 122 ++++++++++++++++----------- 1 file changed, 74 insertions(+), 48 deletions(-) diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 540bafa5c1..04cd64603d 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -1,3 +1,5 @@ +/* global OC, Handlebars */ + /* * Copyright (c) 2015 * @@ -19,7 +21,6 @@ '' - ; + ''; /** * @class OCA.Share.ShareDialogShareeListView @@ -92,8 +110,8 @@ events: { 'click .unshare': 'onUnshare', + 'click .icon-more': 'onToggleMenu', 'click .permissions': 'onPermissionChange', - 'click .showCruds': 'onCrudsToggle', 'click .mailNotification': 'onSendMailNotification' }, @@ -224,6 +242,8 @@ }, onUnshare: function(event) { + event.preventDefault(); + event.stopPropagation(); var self = this; var $element = $(event.target); if (!$element.is('a')) { @@ -237,7 +257,7 @@ } $loading.removeClass('hidden'); - var $li = $element.closest('li'); + var $li = $element.closest('li[data-share-id]'); var shareId = $li.data('share-id'); @@ -252,9 +272,21 @@ return false; }, - onPermissionChange: function(event) { + onToggleMenu: function(event) { + event.preventDefault(); + event.stopPropagation(); var $element = $(event.target); - var $li = $element.closest('li'); + var $li = $element.closest('li[data-share-id]'); + var $menu = $li.find('.popovermenu'); + + OC.showMenu(null, $menu); + }, + + onPermissionChange: function(event) { + event.preventDefault(); + event.stopPropagation(); + var $element = $(event.target); + var $li = $element.closest('li[data-share-id]'); var shareId = $li.data('share-id'); // adjust checkbox states @@ -278,15 +310,9 @@ this.model.updateShare(shareId, {permissions: permissions}); }, - onCrudsToggle: function(event) { - var $target = $(event.target); - $target.closest('li').find('.cruds').toggleClass('hidden'); - return false; - }, - onSendMailNotification: function(event) { var $target = $(event.target); - var $li = $(event.target).closest('li'); + var $li = $(event.target).closest('li[data-share-id]'); var shareType = $li.data('share-type'); var shareWith = $li.attr('data-share-with'); From 7533fcb977f6153065ad99b9c9e046c4e744f84e Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Thu, 28 Jul 2016 10:46:00 +0200 Subject: [PATCH 2/6] move unshare button out of popover menu; keep menu opened on re-render --- core/css/share.css | 1 - core/js/sharedialogshareelistview.js | 23 +++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/core/css/share.css b/core/css/share.css index 0da3aa5359..7d11cbff38 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -105,7 +105,6 @@ a.showCruds { a.unshare { display:inline; - float:right; opacity:.5; padding: 10px; margin-top: -5px; diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 04cd64603d..7caefcca30 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -75,14 +75,9 @@ '' + '{{/if}}' + '{{/if}}' + - '
  • ' + - '' + - '' + - '{{unshareLabel}}' + - '' + - '
  • ' + '' + '' + + '{{unshareLabel}}' + '' + '' + '{{/each}}' + @@ -108,6 +103,8 @@ /** @type {Function} **/ _template: undefined, + _menuOpen: false, + events: { 'click .unshare': 'onUnshare', 'click .icon-more': 'onToggleMenu', @@ -210,7 +207,7 @@ })); if(this.configModel.areAvatarsEnabled()) { - this.$el.find('.avatar').each(function() { + this.$('.avatar').each(function() { var $this = $(this); if ($this.hasClass('imageplaceholderseed')) { $this.css({width: 32, height: 32}); @@ -221,10 +218,19 @@ }); } - this.$el.find('.has-tooltip').tooltip({ + this.$('.has-tooltip').tooltip({ placement: 'bottom' }); + var _this = this; + this.$('.popovermenu').on('afterHide', function() { + _this._menuOpen = false; + }); + if (this._menuOpen) { + // Open menu again if it was opened before + OC.showMenu(null, this.$('.popovermenu')); + } + this.delegateEvents(); return this; @@ -280,6 +286,7 @@ var $menu = $li.find('.popovermenu'); OC.showMenu(null, $menu); + this._menuOpen = true; }, onPermissionChange: function(event) { From 5cda38346086ebc78f27eda412d316000f5131a1 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 10 Aug 2016 10:32:59 +0200 Subject: [PATCH 3/6] Make can edit checkbox work for file shares --- core/js/sharedialogshareelistview.js | 29 ++++++++++++------- .../tests/specs/sharedialogshareelistview.js | 5 +++- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 7caefcca30..0b4658f92f 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -296,20 +296,27 @@ var $li = $element.closest('li[data-share-id]'); var shareId = $li.data('share-id'); - // adjust checkbox states - var $checkboxes = $('.permissions', $li).not('input[name="edit"]').not('input[name="share"]'); - var checked; - if ($element.attr('name') === 'edit') { - checked = $element.is(':checked'); - // Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck - $($checkboxes).prop('checked', checked); + var permissions = OC.PERMISSION_READ; + + if (this.model.isFolder()) { + // adjust checkbox states + var $checkboxes = $('.permissions', $li).not('input[name="edit"]').not('input[name="share"]'); + var checked; + if ($element.attr('name') === 'edit') { + checked = $element.is(':checked'); + // Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck + $($checkboxes).prop('checked', checked); + } else { + var numberChecked = $checkboxes.filter(':checked').length; + checked = numberChecked > 0; + $('input[name="edit"]', $li).prop('checked', checked); + } } else { - var numberChecked = $checkboxes.filter(':checked').length; - checked = numberChecked > 0; - $('input[name="edit"]', $li).prop('checked', checked); + if ($element.attr('name') === 'edit' && $element.is(':checked')) { + permissions |= OC.PERMISSION_UPDATE; + } } - var permissions = OC.PERMISSION_READ; $('.permissions', $li).not('input[name="edit"]').filter(':checked').each(function(index, checkbox) { permissions |= $(checkbox).data('permissions'); }); diff --git a/core/js/tests/specs/sharedialogshareelistview.js b/core/js/tests/specs/sharedialogshareelistview.js index cef9746975..9aab46d911 100644 --- a/core/js/tests/specs/sharedialogshareelistview.js +++ b/core/js/tests/specs/sharedialogshareelistview.js @@ -102,6 +102,7 @@ describe('OC.Share.ShareDialogShareeListView', function () { share_with: 'user1', share_with_displayname: 'User One' }]); + shareModel.set('itemType', 'folder'); listView.render(); listView.$el.find("input[name='edit']").click(); expect(listView.$el.find("input[name='update']").is(':checked')).toEqual(true); @@ -115,8 +116,10 @@ describe('OC.Share.ShareDialogShareeListView', function () { permissions: 1, share_type: OC.Share.SHARE_TYPE_USER, share_with: 'user1', - share_with_displayname: 'User One' + share_with_displayname: 'User One', + itemType: 'folder' }]); + shareModel.set('itemType', 'folder'); listView.render(); listView.$el.find("input[name='update']").click(); expect(listView.$el.find("input[name='edit']").is(':checked')).toEqual(true); From e343d6fb0132a0b593dc86aec72626c24d408e29 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Fri, 19 Aug 2016 12:49:42 +0200 Subject: [PATCH 4/6] can share => can reshare --- core/js/sharedialogshareelistview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 0b4658f92f..77f6d96ece 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -165,7 +165,7 @@ mailNotificationEnabled: this.configModel.isMailNotificationEnabled(), notifyByMailLabel: t('core', 'notify by email'), unshareLabel: t('core', 'Unshare'), - canShareLabel: t('core', 'can share'), + canShareLabel: t('core', 'can reshare'), canEditLabel: t('core', 'can edit'), createPermissionLabel: t('core', 'create'), updatePermissionLabel: t('core', 'change'), From 092eae496638a487b1329f6a10f48d73073a9296 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Fri, 19 Aug 2016 13:07:04 +0200 Subject: [PATCH 5/6] Move options to the right --- core/css/share.css | 12 ++++++++++-- core/js/sharedialogshareelistview.js | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/css/share.css b/core/css/share.css index 7d11cbff38..40f00fde39 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -63,6 +63,15 @@ white-space: normal; } +#shareWithList .sharingOptionsGroup { + position: absolute; + right: 0; +} + +#shareWithList .sharingOptionsGroup .popovermenu { + right: 12px; +} + #shareWithList .shareOption { white-space: nowrap; display: inline-block; @@ -104,11 +113,10 @@ a.showCruds { } a.unshare { - display:inline; + display:inline-block; opacity:.5; padding: 10px; margin-top: -5px; - margin-right: -10px; } #link { diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 77f6d96ece..212bca9618 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -38,7 +38,7 @@ '' + '' + '{{/if}}' + - '' + + '' + '