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:
@@ -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
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
});
|
});
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user