diff --git a/static/scripts/app/views/folder-share-item.js b/static/scripts/app/views/folder-share-item.js index 2af626e6c4..f3623cb833 100644 --- a/static/scripts/app/views/folder-share-item.js +++ b/static/scripts/app/views/folder-share-item.js @@ -88,6 +88,29 @@ define([ }, del: function () { + var _this = this; + var item_data = this.item_data; + var url = Common.getUrl({ + name: 'dir_shared_items', + repo_id: this.repo_id + }) + '?p=' + encodeURIComponent(this.path); + if (item_data.for_user) { + url += '&share_type=user&username=' + encodeURIComponent(item_data.user); + } else { + url += '&share_type=group&username=' + encodeURIComponent(item_data.group_id); + } + $.ajax({ + url: url, + dataType: 'json', + method: 'DELETE', + beforeSend: Common.prepareCSRFToken, + success: function () { + _this.remove(); + }, + error: { + // TODO + } + }); } }); diff --git a/static/scripts/app/views/share.js b/static/scripts/app/views/share.js index eebd37c48d..c03dcbd7fd 100644 --- a/static/scripts/app/views/share.js +++ b/static/scripts/app/views/share.js @@ -474,18 +474,24 @@ define([ path = this.dirent_path; Common.ajaxGet({ 'get_url': Common.getUrl({ - name: 'get_dir_user_share_items', + name: 'dir_shared_items', repo_id: repo_id }), - 'data': {'p': path}, + 'data': { + 'p': path, + 'share_type': 'user' + }, 'after_op_success': function (data) { $(data).each(function(index, item) { var new_item = new FolderShareItemView({ 'repo_id': repo_id, 'path': path, - 'item_data':$.extend(item, { + 'item_data': { + "user": item.user_info.name, + "user_name": item.user_info.nickname, + "perm": item.permission, 'for_user': true - }) + } }); $add_item.after(new_item.el); }); @@ -516,19 +522,25 @@ define([ path = this.dirent_path; Common.ajaxGet({ 'get_url': Common.getUrl({ - name: 'get_dir_group_share_items', + name: 'dir_shared_items', repo_id: repo_id - }), - 'data': {'p': path}, + }), + 'data': { + 'p': path, + 'share_type': 'group' + }, 'after_op_success': function (data) { $(data).each(function(index, item) { var new_item = new FolderShareItemView({ 'repo_id': repo_id, 'path': path, - 'item_data': $.extend(item, { + 'item_data': { + "group_id": item.group_info.id, + "group_name": item.group_info.name, + "perm": item.permission, 'for_user': false - }) - }); + } + }); $add_item.after(new_item.el); }); } @@ -539,8 +551,7 @@ define([ }, dirUserShare: function () { - var form = this.$('#add-dir-user-share-item'), - form_id = form.attr('id'); + var form = this.$('#add-dir-user-share-item'); var emails_input = $('[name="emails"]', form), emails = emails_input.val(); // string @@ -552,40 +563,46 @@ define([ var repo_id = this.repo_id, path = this.dirent_path; var perm = $('[name="permission"]', form).val(); - var post_data = { - 'repo_id': repo_id, - 'path': path, - 'emails': emails, - 'perm': perm - }; - var post_url = Common.getUrl({name: 'private_share_dir'}); // TODO: modify url - var after_op_success = function(data) { - $(data).each(function(index, item) { - var new_item = new FolderShareItemView({ - 'repo_id': repo_id, - 'path': path, - 'item_data': $.extend(item, { - 'for_user': false - }) - }); - $add_item.after(new_item.el); - }); - emails_input.select2("val", ""); - }; - Common.ajaxPost({ - 'form': form, - 'post_url': post_url, - 'post_data': post_data, - 'after_op_success': after_op_success, - 'form_id': form_id + $.ajax({ + url: Common.getUrl({ + name: 'dir_shared_items', + repo_id: repo_id + }) + '?p=' + encodeURIComponent(path), + dataType: 'json', + method: 'PUT', + beforeSend: Common.prepareCSRFToken, + trandition: true, + data: { + 'share_type': 'user', + 'username': emails.split(','), + 'permission': perm + }, + success: function(data) { + // todo: those failed to share to + $(data.success).each(function(index, item) { + var new_item = new FolderShareItemView({ + 'repo_id': repo_id, + 'path': path, + 'item_data': { + "user": item.user_info.name, + "user_name": item.user_info.nickname, + "perm": item.permission, + 'for_user': true + } + }); + $add_item.after(new_item.el); + }); + emails_input.select2("val", ""); + }, + error: function(xhr) { + // todo + } }); - return false; }, dirGroupShare: function () { - var form = this.$('#add-dir-group-share-item'), - form_id = form.attr('id'); + var form = this.$('#add-dir-group-share-item'); var groups_input = $('[name="groups"]', form), groups = groups_input.val(); // null or [group.id] @@ -598,35 +615,42 @@ define([ var repo_id = this.repo_id, path = this.dirent_path; var perm = $('[name="permission"]', form).val(); - var post_data = { - 'repo_id': repo_id, - 'path': path, - 'groups': groups.join(','), - 'perm': perm - }; - var post_url = Common.getUrl({name: 'private_share_dir'}); // TODO: modify url - var after_op_success = function(data) { - $(data).each(function(index, item) { - var new_item = new FolderShareItemView({ - 'repo_id': repo_id, - 'path': path, - 'item_data': $.extend(item, { - 'for_user': false - }) - }); - $add_item.after(new_item.el); - }); - groups_input.select2("val", ""); - }; - Common.ajaxPost({ - 'form': form, - 'post_url': post_url, - 'post_data': post_data, - 'after_op_success': after_op_success, - 'form_id': form_id + $.ajax({ + url: Common.getUrl({ + name: 'dir_shared_items', + repo_id: repo_id + }) + '?p=' + encodeURIComponent(path), + dataType: 'json', + method: 'PUT', + beforeSend: Common.prepareCSRFToken, + trandition: true, + data: { + 'share_type': 'group', + 'group_id': groups, + 'permission': perm + }, + success: function(data) { + // todo: those failed to share to + $(data.success).each(function(index, item) { + var new_item = new FolderShareItemView({ + 'repo_id': repo_id, + 'path': path, + 'item_data': { + "group_id": item.group_info.id, + "group_name": item.group_info.name, + "perm": item.permission, + 'for_user': false + } + }); + $add_item.after(new_item.el); + }); + groups_input.select2("val", ""); + }, + error: function(xhr) { + // todo + } }); - return false; } }); diff --git a/static/scripts/common.js b/static/scripts/common.js index d1c35ae8a4..bcd43a0a08 100644 --- a/static/scripts/common.js +++ b/static/scripts/common.js @@ -95,7 +95,7 @@ define([ case 'send_shared_upload_link': return siteRoot + 'share/upload_link/send/'; case 'delete_shared_upload_link': return siteRoot + 'share/ajax/upload_link/remove/'; case 'get_share_upload_link': return siteRoot + 'share/ajax/get-upload-link/'; - case 'private_share_dir': return siteRoot + 'share/ajax/private-share-dir/'; + //case 'private_share_dir': return siteRoot + 'share/ajax/private-share-dir/'; case 'private_share_file': return siteRoot + 'share/ajax/private-share-file/'; case 'get_popup_notices': return siteRoot + 'ajax/get_popup_notices/'; case 'set_notices_seen': return siteRoot + 'ajax/set_notices_seen/'; @@ -114,8 +114,9 @@ define([ case 'shared_repos': return siteRoot + 'api2/shared-repos/' + options.repo_id + '/'; case 'search_user': return siteRoot + 'api2/search-user/'; case 'share_permission_admin': return siteRoot + 'share/permission_admin/'; - case 'get_dir_user_share_items': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir-user-share-items/'; - case 'get_dir_group_share_items': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir-group-share-items/'; + //case 'get_dir_user_share_items': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir-user-share-items/'; + //case 'get_dir_group_share_items': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir-group-share-items/'; + case 'dir_shared_items': return siteRoot + 'api2/repos/' + options.repo_id + '/dir/shared_items/'; } },