From cfb9c9b31961bb2c5ae5a718910c42af246e7e82 Mon Sep 17 00:00:00 2001 From: llj Date: Mon, 13 Aug 2018 16:28:05 +0800 Subject: [PATCH] [folder perm] modification for group owned repo --- .../app/collections/repo-group-folder-perm.js | 5 +- .../app/collections/repo-user-folder-perm.js | 5 +- .../views/dialogs/repo-folder-perm-admin.js | 46 +++++++++++++++---- static/scripts/app/views/folder-perm.js | 19 ++------ static/scripts/app/views/group-repo.js | 13 +++--- 5 files changed, 56 insertions(+), 32 deletions(-) diff --git a/static/scripts/app/collections/repo-group-folder-perm.js b/static/scripts/app/collections/repo-group-folder-perm.js index e606c5aed4..c6d364bf5b 100644 --- a/static/scripts/app/collections/repo-group-folder-perm.js +++ b/static/scripts/app/collections/repo-group-folder-perm.js @@ -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 }); } diff --git a/static/scripts/app/collections/repo-user-folder-perm.js b/static/scripts/app/collections/repo-user-folder-perm.js index 389dc69606..6ef8bfcc2d 100644 --- a/static/scripts/app/collections/repo-user-folder-perm.js +++ b/static/scripts/app/collections/repo-user-folder-perm.js @@ -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 }); } 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 b14e5f8542..9266c03071 100644 --- a/static/scripts/app/views/dialogs/repo-folder-perm-admin.js +++ b/static/scripts/app/views/dialogs/repo-folder-perm-admin.js @@ -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); }); diff --git a/static/scripts/app/views/folder-perm.js b/static/scripts/app/views/folder-perm.js index 53c7303e6c..5e1d403878 100644 --- a/static/scripts/app/views/folder-perm.js +++ b/static/scripts/app/views/folder-perm.js @@ -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) { diff --git a/static/scripts/app/views/group-repo.js b/static/scripts/app/views/group-repo.js index cd0e5109e9..5978ac70a7 100644 --- a/static/scripts/app/views/group-repo.js +++ b/static/scripts/app/views/group-repo.js @@ -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; },