1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-02 23:48:47 +00:00

[folder perm] modification for group owned repo

This commit is contained in:
llj
2018-08-13 16:28:05 +08:00
parent 76183310e0
commit cfb9c9b319
5 changed files with 56 additions and 32 deletions

View File

@@ -9,11 +9,14 @@ define([
initialize: function(options) {
this.repo_id = options.repo_id;
this.is_group_owned_repo = options.is_group_owned_repo;
},
url: function() {
return Common.getUrl({
name: 'repo_group_folder_perm',
name: this.is_group_owned_repo ?
'group-owned-library-group-folder-permission' :
'repo_group_folder_perm',
repo_id: this.repo_id
});
}

View File

@@ -9,11 +9,14 @@ define([
initialize: function(options) {
this.repo_id = options.repo_id;
this.is_group_owned_repo = options.is_group_owned_repo;
},
url: function() {
return Common.getUrl({
name: 'repo_user_folder_perm',
name: this.is_group_owned_repo ?
'group-owned-library-user-folder-permission' :
'repo_user_folder_perm',
repo_id: this.repo_id
});
}

View File

@@ -8,7 +8,8 @@ define([
'app/collections/repo-user-folder-perm',
'app/collections/repo-group-folder-perm',
'app/views/repo-folder-perm-item'
], function($, _, Backbone, Common, jQueryUI, FileTree, UserFolderPerm, GroupFolderPerm, ItemView) {
], function($, _, Backbone, Common, jQueryUI, FileTree,
UserFolderPerm, GroupFolderPerm, ItemView) {
'use strict';
var View = Backbone.View.extend({
@@ -19,6 +20,7 @@ define([
initialize: function(options) {
this.repo_name = options.repo_name;
this.repo_id = options.repo_id;
this.is_group_owned_repo = options.is_group_owned_repo;
this.render();
this.$('.op-target').css({'max-width':280}); // for long repo name
@@ -44,11 +46,17 @@ define([
}
this.$('.js-tabs').tabs();
this.userPerm = new UserFolderPerm({repo_id: this.repo_id});
this.userPerm = new UserFolderPerm({
is_group_owned_repo: this.is_group_owned_repo,
repo_id: this.repo_id
});
this.userPerm.perm_type = 'user';
this.$userPermPanel = this.$('#js-repo-user-folder-perm .js-folder-perm-content');
this.groupPerm = new GroupFolderPerm({repo_id: this.repo_id});
this.groupPerm = new GroupFolderPerm({
is_group_owned_repo: this.is_group_owned_repo,
repo_id: this.repo_id
});
this.groupPerm.perm_type = 'group';
this.$groupPermPanel = this.$('#js-repo-group-folder-perm .js-folder-perm-content');
@@ -103,10 +111,9 @@ define([
}));
} else {
var groups = [];
$.ajax({
url: Common.getUrl({
name: app.pageOptions.enable_share_to_all_groups ? 'shareable_groups' : 'groups'
name: 'shareable_groups'
}),
type: 'GET',
dataType: 'json',
@@ -162,7 +169,12 @@ define([
var for_user = perm_type == 'user' ? true : false;
var encoded_path = Common.encodePath(model.get('folder_path'));
var view = new ItemView({
item_data: $.extend(model.toJSON(), {'for_user': for_user, 'show_folder_path': true, 'encoded_path': encoded_path})
item_data: $.extend(model.toJSON(), {
'for_user': for_user,
'show_folder_path': true,
'encoded_path': encoded_path,
'is_group_owned_repo': this.is_group_owned_repo
})
});
if (options.prepend) {
@@ -242,7 +254,12 @@ define([
if ($submit.hasClass('js-user-perm-add-submit')) {
for_user = true;
$panel = this.$userPermPanel;
url = Common.getUrl({name: 'repo_user_folder_perm', repo_id: this.repo_id});
url = Common.getUrl({
name: this.is_group_owned_repo ?
'group-owned-library-user-folder-permission' :
'repo_user_folder_perm',
repo_id: this.repo_id
});
var $email_or_group = $('[name="emails"]', $panel);
var email = $email_or_group.val();
@@ -256,7 +273,12 @@ define([
} else {
for_user = false;
$panel = this.$groupPermPanel;
url = Common.getUrl({name: 'repo_group_folder_perm', repo_id: this.repo_id});
url = Common.getUrl({
name: this.is_group_owned_repo ?
'group-owned-library-group-folder-permission' :
'repo_group_folder_perm',
repo_id: this.repo_id
});
var $email_or_group = $('[name="groups"]', $panel);
var group_val = $email_or_group.val().join(',');
@@ -281,6 +303,7 @@ define([
var $error = $('.error', $panel);
Common.disableButton($submit);
var is_group_owned_repo = this.is_group_owned_repo;
$.ajax({
url: url,
dataType: 'json',
@@ -293,7 +316,12 @@ define([
$(data.success).each(function(index, item) {
var encoded_path = Common.encodePath(item.folder_path);
var perm_item = new ItemView({
item_data: $.extend(item, {'for_user': for_user, 'show_folder_path': true, 'encoded_path': encoded_path})
item_data: $.extend(item, {
'for_user': for_user,
'show_folder_path': true,
'encoded_path': encoded_path,
'is_group_owned_repo': is_group_owned_repo
})
});
$('[name="folder_path"]', $panel).closest('tr').after(perm_item.el);
});

View File

@@ -112,17 +112,11 @@ define([
// use select2 to 'user' input in 'add user perm'
var url;
if (this.is_group_owned_repo) {
url = Common.getUrl({
'name': 'address_book_group_search_members',
'group_id': this.group_id
});
}
$('[name="email"]', this.$add_user_perm).select2(
Common.contactInputOptionsForSelect2({'url': url}));
Common.contactInputOptionsForSelect2());
// use select2 to 'group' input in 'add group perm'
var groups, groups_url;
var groups;
var prepareGroupSelector = function(groups) {
var g_opts = '';
for (var i = 0, len = groups.length; i < len; i++) {
@@ -134,13 +128,10 @@ define([
});
};
if (this.is_group_owned_repo) {
groups_url = Common.getUrl({'name': 'address_book_sub_groups', 'group_id': this.group_id});
} else {
groups_url = Common.getUrl({name: app.pageOptions.enable_share_to_all_groups ? 'shareable_groups' : 'groups'});
}
$.ajax({
url: groups_url,
url: Common.getUrl({
name: 'shareable_groups'
}),
cache: false,
dataType: 'json',
success: function(data) {

View File

@@ -4,10 +4,10 @@ define([
'backbone',
'common',
'app/views/share',
'app/views/folder-perm',
'app/views/dialogs/repo-folder-perm-admin',
'app/views/widgets/hl-item-view',
'app/views/widgets/dropdown'
], function($, _, Backbone, Common, ShareView, FolderPermView,
], function($, _, Backbone, Common, ShareView, RepoFolderPerm,
HLItemView, DropdownView) {
'use strict';
@@ -70,14 +70,13 @@ define([
setRepoPerm: function() {
var options = {
'obj_name': this.model.get('name'),
'dir_path': '/',
'repo_id': this.model.get('id'),
'is_group_owned_repo': true,
'group_id': this.group_id
'repo_name': this.model.get('name'),
'repo_id': this.model.get('id')
};
new RepoFolderPerm(options);
this._hideMenu();
new FolderPermView(options);
return false;
},