diff --git a/seahub/api2/endpoints/shareable_groups.py b/seahub/api2/endpoints/shareable_groups.py index c0f28215da..00e716d8d4 100644 --- a/seahub/api2/endpoints/shareable_groups.py +++ b/seahub/api2/endpoints/shareable_groups.py @@ -53,7 +53,6 @@ class ShareableGroups(APIView): except ValueError: avatar_size = GROUP_AVATAR_DEFAULT_SIZE - result = [get_group_info(request, g.id, avatar_size) - for g in groups if g.parent_group_id == 0] + result = [get_group_info(request, g.id, avatar_size) for g in groups] return Response(result) diff --git a/static/scripts/app/views/dialogs/repo-folder-perm-admin.js b/static/scripts/app/views/dialogs/repo-folder-perm-admin.js index e477a2f3da..b14e5f8542 100644 --- a/static/scripts/app/views/dialogs/repo-folder-perm-admin.js +++ b/static/scripts/app/views/dialogs/repo-folder-perm-admin.js @@ -102,17 +102,43 @@ define([ placeholder: gettext("Search user or enter email and press Enter") // to override 'placeholder' returned by `Common.conta...` })); } else { - var groups = app.pageOptions.joined_groups_exclude_address_book || []; - var g_opts = ''; - for (var i = 0, len = groups.length; i < len; i++) { - g_opts += ''; - } - $('[name="groups"]', $panel).html(g_opts).select2({ - placeholder: gettext("Select a group"), - maximumSelectionSize: 1, - formatSelectionTooBig: gettext("You can only select 1 item"), - escapeMarkup: function(m) { return m; } + var groups = []; + + $.ajax({ + url: Common.getUrl({ + name: app.pageOptions.enable_share_to_all_groups ? 'shareable_groups' : 'groups' + }), + type: 'GET', + dataType: 'json', + cache: false, + success: function(data) { + for (var i = 0, len = data.length; i < len; i++) { + groups.push({ + 'id': data[i].id, + 'name': data[i].name + }); + } + groups.sort(function(a, b) { + return Common.compareTwoWord(a.name, b.name); + }); + }, + error: function(xhr, textStatus, errorThrown) { + // do nothing + }, + complete: function() { + var g_opts = ''; + for (var i = 0, len = groups.length; i < len; i++) { + g_opts += ''; + } + $('[name="groups"]', $panel).html(g_opts).select2({ + placeholder: gettext("Select a group"), + maximumSelectionSize: 1, + formatSelectionTooBig: gettext("You can only select 1 item"), + escapeMarkup: function(m) { return m; } + }); + } }); + } // show existing items diff --git a/static/scripts/app/views/folder-perm.js b/static/scripts/app/views/folder-perm.js index 256ee9c825..53c7303e6c 100644 --- a/static/scripts/app/views/folder-perm.js +++ b/static/scripts/app/views/folder-perm.js @@ -122,7 +122,7 @@ define([ Common.contactInputOptionsForSelect2({'url': url})); // use select2 to 'group' input in 'add group perm' - var groups; + var groups, groups_url; var prepareGroupSelector = function(groups) { var g_opts = ''; for (var i = 0, len = groups.length; i < len; i++) { @@ -133,28 +133,26 @@ define([ escapeMarkup: function(m) { return m; } }); }; + if (this.is_group_owned_repo) { - $.ajax({ - url: Common.getUrl({ - 'name': 'address_book_sub_groups', - 'group_id': this.group_id - }), - cache: false, - dataType: 'json', - success: function(data) { - groups = data; - }, - error: function(xhr) { - groups = []; - }, - complete: function() { - prepareGroupSelector(groups); - } - }); + groups_url = Common.getUrl({'name': 'address_book_sub_groups', 'group_id': this.group_id}); } else { - groups = app.pageOptions.joined_groups_exclude_address_book || []; - prepareGroupSelector(groups); + groups_url = Common.getUrl({name: app.pageOptions.enable_share_to_all_groups ? 'shareable_groups' : 'groups'}); } + $.ajax({ + url: groups_url, + cache: false, + dataType: 'json', + success: function(data) { + groups = data; + }, + error: function(xhr) { + groups = []; + }, + complete: function() { + prepareGroupSelector(groups); + } + }); }, events: {