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: {