From 8f54bbf6ff52233ad9516657136af0c3001deac3 Mon Sep 17 00:00:00 2001 From: llj Date: Wed, 15 May 2019 14:04:29 +0800 Subject: [PATCH 1/3] [department] folder permission --- .../lib-sub-folder-permission-dialog.js | 1 + .../shared-repo-list-item.js | 30 +++++++++++++------ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js index cd8835a1b2..c6a8af7cf5 100644 --- a/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js @@ -11,6 +11,7 @@ import '../../css/sub-folder-permission.css'; const propTypes = { repoID: PropTypes.string.isRequired, repoName: PropTypes.string, + isDepartmentRepo: PropTypes.bool, folderPath: PropTypes.string, folderName: PropTypes.string, toggleDialog: PropTypes.func.isRequired diff --git a/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js b/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js index c40eac2246..1316164585 100644 --- a/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js +++ b/frontend/src/components/shared-repo-list-view/shared-repo-list-item.js @@ -5,8 +5,9 @@ import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap import { Link } from '@reach/router'; import { Utils } from '../../utils/utils'; import { gettext, siteRoot, isPro, username, folderPermEnabled, isSystemStaff } from '../../utils/constants'; -import ModalPotal from '../../components/modal-portal'; +import ModalPortal from '../../components/modal-portal'; import ShareDialog from '../../components/dialog/share-dialog'; +import LibSubFolderPermissionDialog from '../../components/dialog/lib-sub-folder-permission-dialog'; import Rename from '../rename'; import { seafileAPI } from '../../utils/seafile-api'; @@ -33,6 +34,7 @@ class SharedRepoListItem extends React.Component { isShowSharedDialog: false, isRenaming: false, isStarred: this.props.repo.starred, + isFolderPermissionDialogOpen: false }; this.isDeparementOnwerGroupMember = false; } @@ -108,7 +110,7 @@ class SharedRepoListItem extends React.Component { this.onItemRenameToggle(); break; case 'Folder Permission': - this.onItemPermisionChanged(); + this.onItemFolderPermissionToggle(); break; case 'Details': this.onItemDetails(); @@ -142,8 +144,8 @@ class SharedRepoListItem extends React.Component { this.setState({isRenaming: !this.state.isRenaming}); } - onItemPermisionChanged = () => { - // todo + onItemFolderPermissionToggle = () => { + this.setState({isFolderPermissionDialogOpen: !this.state.isFolderPermissionDialogOpen}); } onItemDetails = () => { @@ -333,7 +335,7 @@ class SharedRepoListItem extends React.Component { } else { seafileAPI.starItem(this.props.repo.repo_id, '/').then(() => { this.setState({isStarred: !this.state.isStarred}); - }) + }); } } @@ -363,7 +365,7 @@ class SharedRepoListItem extends React.Component { {repo.owner_name} {this.state.isShowSharedDialog && ( - + - + + )} + {this.state.isFolderPermissionDialogOpen && ( + + + )} ); @@ -403,7 +415,7 @@ class SharedRepoListItem extends React.Component { {this.generatorMobileMenu()} {this.state.isShowSharedDialog && ( - + - + )} ); From 31a5e955cc7c1b3547beb267a5041e1b51a100cb Mon Sep 17 00:00:00 2001 From: llj Date: Thu, 16 May 2019 17:28:04 +0800 Subject: [PATCH 2/3] [folder perm] added it for department repo --- .../dialog/lib-sub-folder-permission-dialog.js | 4 ++-- .../lib-sub-folder-set-group-permission-dialog.js | 14 +++++++------- .../lib-sub-folder-set-user-permission-dialog.js | 14 +++++++------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js index c6a8af7cf5..5c851bfc1b 100644 --- a/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-permission-dialog.js @@ -53,10 +53,10 @@ class LibSubFolderPermissionDialog extends React.Component {
- + - +
diff --git a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js index 79748f619a..f72f9520aa 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js @@ -71,7 +71,8 @@ class GroupItem extends React.Component { } const propTypes = { - repoID: PropTypes.string.isRequired + repoID: PropTypes.string.isRequired, + isDepartmentRepo: PropTypes.bool }; const NoOptionsMessage = (props) => { @@ -122,9 +123,8 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { } listGroupPermissionItems = () => { - let repoID = this.props.repoID; - let folderPath = this.props.folderPath; - seafileAPI.listGroupFolderPerm(repoID, folderPath).then((res) => { + const { isDepartmentRepo, repoID, folderPath } = this.props; + seafileAPI.listGroupFolderPerm(isDepartmentRepo, repoID, folderPath).then((res) => { if (res.data.length !== 0) { this.setState({ groupPermissionItems: res.data @@ -144,7 +144,7 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { return false; } - seafileAPI.addGroupFolderPerm(this.props.repoID, this.state.permission, folderPath, selectedOption.id).then(res => { + seafileAPI.addGroupFolderPerm(this.props.isDepartmentRepo, this.props.repoID, this.state.permission, folderPath, selectedOption.id).then(res => { let errorMsg = []; if (res.data.failed.length > 0) { for (let i = 0; i < res.data.failed.length; i++) { @@ -177,7 +177,7 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { } deleteGroupPermissionItem = (item) => { - seafileAPI.deleteGroupFolderPerm(item.repo_id, item.permission, item.folder_path, item.group_id).then(() => { + seafileAPI.deleteGroupFolderPerm(this.props.isDepartmentRepo, item.repo_id, item.permission, item.folder_path, item.group_id).then(() => { this.setState({ groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; }) }); @@ -185,7 +185,7 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { } onChangeGroupPermission = (item, permission) => { - seafileAPI.updateGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id).then(() => { + seafileAPI.updateGroupFolderPerm(this.props.isDepartmentRepo, item.repo_id, permission, item.folder_path, item.group_id).then(() => { this.updateGroupPermission(item, permission); }); } diff --git a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js index 5e50657e85..656912e5c0 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js @@ -72,7 +72,8 @@ class UserItem extends React.Component { const propTypes = { - repoID: PropTypes.string.isRequired + repoID: PropTypes.string.isRequired, + isDepartmentRepo: PropTypes.bool }; @@ -100,9 +101,8 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } componentDidMount() { - let repoID = this.props.repoID; - let folderPath = this.props.folderPath; - seafileAPI.listUserFolderPerm(repoID, folderPath).then((res) => { + const {repoID, folderPath, isDepartmentRepo} = this.props; + seafileAPI.listUserFolderPerm(isDepartmentRepo, repoID, folderPath).then((res) => { if (res.data.length !== 0) { this.setState({userFolderPermItems: res.data}); } @@ -121,7 +121,7 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } const users = selectedUsers.map((item, index) => item.email); - seafileAPI.addUserFolderPerm(this.props.repoID, this.state.permission, folderPath, users).then(res => { + seafileAPI.addUserFolderPerm(this.props.isDepartmentRepo, this.props.repoID, this.state.permission, folderPath, users).then(res => { let errorMsg = []; if (res.data.failed.length > 0) { for (let i = 0; i < res.data.failed.length; i++) { @@ -154,7 +154,7 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } deleteUserFolderPermItem = (item) => { - seafileAPI.deleteUserFolderPerm(item.repo_id, item.permission, item.folder_path, item.user_email).then(res => { + seafileAPI.deleteUserFolderPerm(this.props.isDepartmentRepo, item.repo_id, item.permission, item.folder_path, item.user_email).then(res => { this.setState({ userFolderPermItems: this.state.userFolderPermItems.filter(deletedItem => { return deletedItem != item; @@ -164,7 +164,7 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } onChangeUserFolderPerm = (repoID, permission, folderPath, userEmail) => { - seafileAPI.updateUserFolderPerm(repoID, permission, folderPath, userEmail).then(res => { + seafileAPI.updateUserFolderPerm(this.props.isDepartmentRepo, repoID, permission, folderPath, userEmail).then(res => { let userFolderPermItems = this.state.userFolderPermItems.map(item => { if (item.user_email === userEmail && item.folder_path === folderPath) { item.permission = permission; From 32eac3f826f70e07c87ac2d5e5dfec68e4123f94 Mon Sep 17 00:00:00 2001 From: llj Date: Fri, 17 May 2019 09:14:26 +0800 Subject: [PATCH 3/3] [folder perm] modification for department repo --- ...-sub-folder-set-group-permission-dialog.js | 20 ++++++++++++++---- ...b-sub-folder-set-user-permission-dialog.js | 21 +++++++++++++++---- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js index f72f9520aa..01ea19301c 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-group-permission-dialog.js @@ -124,7 +124,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { listGroupPermissionItems = () => { const { isDepartmentRepo, repoID, folderPath } = this.props; - seafileAPI.listGroupFolderPerm(isDepartmentRepo, repoID, folderPath).then((res) => { + const request = isDepartmentRepo ? + seafileAPI.listDepartmentRepoGroupFolderPerm(repoID, folderPath) : + seafileAPI.listGroupFolderPerm(repoID, folderPath); + request.then((res) => { if (res.data.length !== 0) { this.setState({ groupPermissionItems: res.data @@ -144,7 +147,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { return false; } - seafileAPI.addGroupFolderPerm(this.props.isDepartmentRepo, this.props.repoID, this.state.permission, folderPath, selectedOption.id).then(res => { + const request = this.props.isDepartmentRepo ? + seafileAPI.addDepartmentRepoGroupFolderPerm(this.props.repoID, this.state.permission, folderPath, selectedOption.id) : + seafileAPI.addGroupFolderPerm(this.props.repoID, this.state.permission, folderPath, selectedOption.id) + request.then(res => { let errorMsg = []; if (res.data.failed.length > 0) { for (let i = 0; i < res.data.failed.length; i++) { @@ -177,7 +183,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { } deleteGroupPermissionItem = (item) => { - seafileAPI.deleteGroupFolderPerm(this.props.isDepartmentRepo, item.repo_id, item.permission, item.folder_path, item.group_id).then(() => { + const request = this.props.isDepartmentRepo ? + seafileAPI.deleteDepartmentRepoGroupFolderPerm(item.repo_id, item.permission, item.folder_path, item.group_id) : + seafileAPI.deleteGroupFolderPerm(item.repo_id, item.permission, item.folder_path, item.group_id) + request.then(() => { this.setState({ groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; }) }); @@ -185,7 +194,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component { } onChangeGroupPermission = (item, permission) => { - seafileAPI.updateGroupFolderPerm(this.props.isDepartmentRepo, item.repo_id, permission, item.folder_path, item.group_id).then(() => { + const request = this.props.isDepartmentRepo ? + seafileAPI.updateDepartmentRepoGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id) : + seafileAPI.updateGroupFolderPerm(item.repo_id, permission, item.folder_path, item.group_id); + request.then(() => { this.updateGroupPermission(item, permission); }); } diff --git a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js index 656912e5c0..c5dda1fa47 100644 --- a/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js +++ b/frontend/src/components/dialog/lib-sub-folder-set-user-permission-dialog.js @@ -102,7 +102,10 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { componentDidMount() { const {repoID, folderPath, isDepartmentRepo} = this.props; - seafileAPI.listUserFolderPerm(isDepartmentRepo, repoID, folderPath).then((res) => { + const request = isDepartmentRepo ? + seafileAPI.listDepartmentRepoUserFolderPerm(repoID, folderPath) : + seafileAPI.listUserFolderPerm(repoID, folderPath); + request.then((res) => { if (res.data.length !== 0) { this.setState({userFolderPermItems: res.data}); } @@ -121,7 +124,11 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } const users = selectedUsers.map((item, index) => item.email); - seafileAPI.addUserFolderPerm(this.props.isDepartmentRepo, this.props.repoID, this.state.permission, folderPath, users).then(res => { + + const request = this.props.isDepartmentRepo ? + seafileAPI.addDepartmentRepoUserFolderPerm(this.props.repoID, this.state.permission, folderPath, users) : + seafileAPI.addUserFolderPerm(this.props.repoID, this.state.permission, folderPath, users); + request.then(res => { let errorMsg = []; if (res.data.failed.length > 0) { for (let i = 0; i < res.data.failed.length; i++) { @@ -154,7 +161,10 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } deleteUserFolderPermItem = (item) => { - seafileAPI.deleteUserFolderPerm(this.props.isDepartmentRepo, item.repo_id, item.permission, item.folder_path, item.user_email).then(res => { + const request = this.props.isDepartmentRepo ? + seafileAPI.deleteDepartmentRepoUserFolderPerm(item.repo_id, item.permission, item.folder_path, item.user_email) : + seafileAPI.deleteUserFolderPerm(item.repo_id, item.permission, item.folder_path, item.user_email); + request.then(res => { this.setState({ userFolderPermItems: this.state.userFolderPermItems.filter(deletedItem => { return deletedItem != item; @@ -164,7 +174,10 @@ class LibSubFolderSetUserPermissionDialog extends React.Component { } onChangeUserFolderPerm = (repoID, permission, folderPath, userEmail) => { - seafileAPI.updateUserFolderPerm(this.props.isDepartmentRepo, repoID, permission, folderPath, userEmail).then(res => { + const request = this.props.isDepartmentRepo ? + seafileAPI.updateDepartmentRepoUserFolderPerm(repoID, permission, folderPath, userEmail) : + seafileAPI.updateUserFolderPerm(repoID, permission, folderPath, userEmail); + request.then(res => { let userFolderPermItems = this.state.userFolderPermItems.map(item => { if (item.user_email === userEmail && item.folder_path === folderPath) { item.permission = permission;