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) { initialize: function(options) {
this.repo_id = options.repo_id; this.repo_id = options.repo_id;
this.is_group_owned_repo = options.is_group_owned_repo;
}, },
url: function() { url: function() {
return Common.getUrl({ 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 repo_id: this.repo_id
}); });
} }

View File

@@ -9,11 +9,14 @@ define([
initialize: function(options) { initialize: function(options) {
this.repo_id = options.repo_id; this.repo_id = options.repo_id;
this.is_group_owned_repo = options.is_group_owned_repo;
}, },
url: function() { url: function() {
return Common.getUrl({ 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 repo_id: this.repo_id
}); });
} }

View File

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

View File

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