1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-07 01:41:39 +00:00

Folder perm group (#2261)

* update shareable-groups api

return all groups, include address book groups

* update folder perm select group

send ajax groups request every time set folder perm
This commit is contained in:
lian
2018-08-08 17:52:16 +08:00
committed by llj
parent 54a01b495b
commit 8bb7b15082
3 changed files with 55 additions and 32 deletions

View File

@@ -53,7 +53,6 @@ class ShareableGroups(APIView):
except ValueError: except ValueError:
avatar_size = GROUP_AVATAR_DEFAULT_SIZE avatar_size = GROUP_AVATAR_DEFAULT_SIZE
result = [get_group_info(request, g.id, avatar_size) result = [get_group_info(request, g.id, avatar_size) for g in groups]
for g in groups if g.parent_group_id == 0]
return Response(result) return Response(result)

View File

@@ -102,17 +102,43 @@ define([
placeholder: gettext("Search user or enter email and press Enter") // to override 'placeholder' returned by `Common.conta...` placeholder: gettext("Search user or enter email and press Enter") // to override 'placeholder' returned by `Common.conta...`
})); }));
} else { } else {
var groups = app.pageOptions.joined_groups_exclude_address_book || []; var groups = [];
var g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) { $.ajax({
g_opts += '<option value="' + groups[i].id + '" data-index="' + i + '">' + groups[i].name + '</option>'; url: Common.getUrl({
} name: app.pageOptions.enable_share_to_all_groups ? 'shareable_groups' : 'groups'
$('[name="groups"]', $panel).html(g_opts).select2({ }),
placeholder: gettext("Select a group"), type: 'GET',
maximumSelectionSize: 1, dataType: 'json',
formatSelectionTooBig: gettext("You can only select 1 item"), cache: false,
escapeMarkup: function(m) { return m; } 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 += '<option value="' + groups[i].id + '" data-index="' + i + '">' + groups[i].name + '</option>';
}
$('[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 // show existing items

View File

@@ -122,7 +122,7 @@ define([
Common.contactInputOptionsForSelect2({'url': url})); Common.contactInputOptionsForSelect2({'url': url}));
// use select2 to 'group' input in 'add group perm' // use select2 to 'group' input in 'add group perm'
var groups; var groups, groups_url;
var prepareGroupSelector = function(groups) { var prepareGroupSelector = function(groups) {
var g_opts = ''; var g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) { for (var i = 0, len = groups.length; i < len; i++) {
@@ -133,28 +133,26 @@ define([
escapeMarkup: function(m) { return m; } escapeMarkup: function(m) { return m; }
}); });
}; };
if (this.is_group_owned_repo) { if (this.is_group_owned_repo) {
$.ajax({ groups_url = Common.getUrl({'name': 'address_book_sub_groups', 'group_id': this.group_id});
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);
}
});
} else { } else {
groups = app.pageOptions.joined_groups_exclude_address_book || []; groups_url = Common.getUrl({name: app.pageOptions.enable_share_to_all_groups ? 'shareable_groups' : 'groups'});
prepareGroupSelector(groups);
} }
$.ajax({
url: groups_url,
cache: false,
dataType: 'json',
success: function(data) {
groups = data;
},
error: function(xhr) {
groups = [];
},
complete: function() {
prepareGroupSelector(groups);
}
});
}, },
events: { events: {