mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-05 00:43:53 +00:00
@@ -11,6 +11,7 @@ import '../../css/sub-folder-permission.css';
|
|||||||
const propTypes = {
|
const propTypes = {
|
||||||
repoID: PropTypes.string.isRequired,
|
repoID: PropTypes.string.isRequired,
|
||||||
repoName: PropTypes.string,
|
repoName: PropTypes.string,
|
||||||
|
isDepartmentRepo: PropTypes.bool,
|
||||||
folderPath: PropTypes.string,
|
folderPath: PropTypes.string,
|
||||||
folderName: PropTypes.string,
|
folderName: PropTypes.string,
|
||||||
toggleDialog: PropTypes.func.isRequired
|
toggleDialog: PropTypes.func.isRequired
|
||||||
@@ -52,10 +53,10 @@ class LibSubFolderPermissionDialog extends React.Component {
|
|||||||
<div className="share-dialog-main">
|
<div className="share-dialog-main">
|
||||||
<TabContent activeTab={this.state.activeTab}>
|
<TabContent activeTab={this.state.activeTab}>
|
||||||
<TabPane tabId="userPermission">
|
<TabPane tabId="userPermission">
|
||||||
<LibSubFolderSetUserPermissionDialog repoID={this.props.repoID} repoName={this.props.repoName} folderPath={this.props.folderPath} />
|
<LibSubFolderSetUserPermissionDialog repoID={this.props.repoID} repoName={this.props.repoName} folderPath={this.props.folderPath} isDepartmentRepo={this.props.isDepartmentRepo} />
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane tabId="groupPermission">
|
<TabPane tabId="groupPermission">
|
||||||
<LibSubFolderSetGroupPermissionDialog repoID={this.props.repoID} repoName={this.props.repoName} folderPath={this.props.folderPath} />
|
<LibSubFolderSetGroupPermissionDialog repoID={this.props.repoID} repoName={this.props.repoName} folderPath={this.props.folderPath} isDepartmentRepo={this.props.isDepartmentRepo} />
|
||||||
</TabPane>
|
</TabPane>
|
||||||
</TabContent>
|
</TabContent>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -71,7 +71,8 @@ class GroupItem extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
repoID: PropTypes.string.isRequired
|
repoID: PropTypes.string.isRequired,
|
||||||
|
isDepartmentRepo: PropTypes.bool
|
||||||
};
|
};
|
||||||
|
|
||||||
const NoOptionsMessage = (props) => {
|
const NoOptionsMessage = (props) => {
|
||||||
@@ -122,9 +123,11 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
listGroupPermissionItems = () => {
|
listGroupPermissionItems = () => {
|
||||||
let repoID = this.props.repoID;
|
const { isDepartmentRepo, repoID, folderPath } = this.props;
|
||||||
let folderPath = this.props.folderPath;
|
const request = isDepartmentRepo ?
|
||||||
seafileAPI.listGroupFolderPerm(repoID, folderPath).then((res) => {
|
seafileAPI.listDepartmentRepoGroupFolderPerm(repoID, folderPath) :
|
||||||
|
seafileAPI.listGroupFolderPerm(repoID, folderPath);
|
||||||
|
request.then((res) => {
|
||||||
if (res.data.length !== 0) {
|
if (res.data.length !== 0) {
|
||||||
this.setState({
|
this.setState({
|
||||||
groupPermissionItems: res.data
|
groupPermissionItems: res.data
|
||||||
@@ -144,7 +147,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
seafileAPI.addGroupFolderPerm(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 = [];
|
let errorMsg = [];
|
||||||
if (res.data.failed.length > 0) {
|
if (res.data.failed.length > 0) {
|
||||||
for (let i = 0; i < res.data.failed.length; i++) {
|
for (let i = 0; i < res.data.failed.length; i++) {
|
||||||
@@ -177,7 +183,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
deleteGroupPermissionItem = (item) => {
|
deleteGroupPermissionItem = (item) => {
|
||||||
seafileAPI.deleteGroupFolderPerm(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({
|
this.setState({
|
||||||
groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; })
|
groupPermissionItems: this.state.groupPermissionItems.filter(deletedItem => { return deletedItem != item; })
|
||||||
});
|
});
|
||||||
@@ -185,7 +194,10 @@ class LibSubFolderSerGroupPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onChangeGroupPermission = (item, permission) => {
|
onChangeGroupPermission = (item, permission) => {
|
||||||
seafileAPI.updateGroupFolderPerm(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);
|
this.updateGroupPermission(item, permission);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -72,7 +72,8 @@ class UserItem extends React.Component {
|
|||||||
|
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
repoID: PropTypes.string.isRequired
|
repoID: PropTypes.string.isRequired,
|
||||||
|
isDepartmentRepo: PropTypes.bool
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -100,9 +101,11 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
let repoID = this.props.repoID;
|
const {repoID, folderPath, isDepartmentRepo} = this.props;
|
||||||
let folderPath = this.props.folderPath;
|
const request = isDepartmentRepo ?
|
||||||
seafileAPI.listUserFolderPerm(repoID, folderPath).then((res) => {
|
seafileAPI.listDepartmentRepoUserFolderPerm(repoID, folderPath) :
|
||||||
|
seafileAPI.listUserFolderPerm(repoID, folderPath);
|
||||||
|
request.then((res) => {
|
||||||
if (res.data.length !== 0) {
|
if (res.data.length !== 0) {
|
||||||
this.setState({userFolderPermItems: res.data});
|
this.setState({userFolderPermItems: res.data});
|
||||||
}
|
}
|
||||||
@@ -121,7 +124,11 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const users = selectedUsers.map((item, index) => item.email);
|
const users = selectedUsers.map((item, index) => item.email);
|
||||||
seafileAPI.addUserFolderPerm(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 = [];
|
let errorMsg = [];
|
||||||
if (res.data.failed.length > 0) {
|
if (res.data.failed.length > 0) {
|
||||||
for (let i = 0; i < res.data.failed.length; i++) {
|
for (let i = 0; i < res.data.failed.length; i++) {
|
||||||
@@ -154,7 +161,10 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
deleteUserFolderPermItem = (item) => {
|
deleteUserFolderPermItem = (item) => {
|
||||||
seafileAPI.deleteUserFolderPerm(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({
|
this.setState({
|
||||||
userFolderPermItems: this.state.userFolderPermItems.filter(deletedItem => {
|
userFolderPermItems: this.state.userFolderPermItems.filter(deletedItem => {
|
||||||
return deletedItem != item;
|
return deletedItem != item;
|
||||||
@@ -164,7 +174,10 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onChangeUserFolderPerm = (repoID, permission, folderPath, userEmail) => {
|
onChangeUserFolderPerm = (repoID, permission, folderPath, userEmail) => {
|
||||||
seafileAPI.updateUserFolderPerm(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 => {
|
let userFolderPermItems = this.state.userFolderPermItems.map(item => {
|
||||||
if (item.user_email === userEmail && item.folder_path === folderPath) {
|
if (item.user_email === userEmail && item.folder_path === folderPath) {
|
||||||
item.permission = permission;
|
item.permission = permission;
|
||||||
|
@@ -5,8 +5,9 @@ import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap
|
|||||||
import { Link } from '@reach/router';
|
import { Link } from '@reach/router';
|
||||||
import { Utils } from '../../utils/utils';
|
import { Utils } from '../../utils/utils';
|
||||||
import { gettext, siteRoot, isPro, username, folderPermEnabled, isSystemStaff } from '../../utils/constants';
|
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 ShareDialog from '../../components/dialog/share-dialog';
|
||||||
|
import LibSubFolderPermissionDialog from '../../components/dialog/lib-sub-folder-permission-dialog';
|
||||||
import Rename from '../rename';
|
import Rename from '../rename';
|
||||||
import { seafileAPI } from '../../utils/seafile-api';
|
import { seafileAPI } from '../../utils/seafile-api';
|
||||||
|
|
||||||
@@ -34,6 +35,7 @@ class SharedRepoListItem extends React.Component {
|
|||||||
isShowSharedDialog: false,
|
isShowSharedDialog: false,
|
||||||
isRenaming: false,
|
isRenaming: false,
|
||||||
isStarred: this.props.repo.starred,
|
isStarred: this.props.repo.starred,
|
||||||
|
isFolderPermissionDialogOpen: false
|
||||||
};
|
};
|
||||||
this.isDeparementOnwerGroupMember = false;
|
this.isDeparementOnwerGroupMember = false;
|
||||||
}
|
}
|
||||||
@@ -109,7 +111,7 @@ class SharedRepoListItem extends React.Component {
|
|||||||
this.onItemRenameToggle();
|
this.onItemRenameToggle();
|
||||||
break;
|
break;
|
||||||
case 'Folder Permission':
|
case 'Folder Permission':
|
||||||
this.onItemPermisionChanged();
|
this.onItemFolderPermissionToggle();
|
||||||
break;
|
break;
|
||||||
case 'Details':
|
case 'Details':
|
||||||
this.onItemDetails();
|
this.onItemDetails();
|
||||||
@@ -143,8 +145,8 @@ class SharedRepoListItem extends React.Component {
|
|||||||
this.setState({isRenaming: !this.state.isRenaming});
|
this.setState({isRenaming: !this.state.isRenaming});
|
||||||
}
|
}
|
||||||
|
|
||||||
onItemPermisionChanged = () => {
|
onItemFolderPermissionToggle = () => {
|
||||||
// todo
|
this.setState({isFolderPermissionDialogOpen: !this.state.isFolderPermissionDialogOpen});
|
||||||
}
|
}
|
||||||
|
|
||||||
onItemDetails = () => {
|
onItemDetails = () => {
|
||||||
@@ -364,7 +366,7 @@ class SharedRepoListItem extends React.Component {
|
|||||||
<td title={repo.owner_contact_email}>{repo.owner_name}</td>
|
<td title={repo.owner_contact_email}>{repo.owner_name}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{this.state.isShowSharedDialog && (
|
{this.state.isShowSharedDialog && (
|
||||||
<ModalPotal>
|
<ModalPortal>
|
||||||
<ShareDialog
|
<ShareDialog
|
||||||
itemType={'library'}
|
itemType={'library'}
|
||||||
itemName={repo.repo_name}
|
itemName={repo.repo_name}
|
||||||
@@ -377,7 +379,17 @@ class SharedRepoListItem extends React.Component {
|
|||||||
isGroupOwnedRepo={isGroupOwnedRepo}
|
isGroupOwnedRepo={isGroupOwnedRepo}
|
||||||
toggleDialog={this.toggleShareDialog}
|
toggleDialog={this.toggleShareDialog}
|
||||||
/>
|
/>
|
||||||
</ModalPotal>
|
</ModalPortal>
|
||||||
|
)}
|
||||||
|
{this.state.isFolderPermissionDialogOpen && (
|
||||||
|
<ModalPortal>
|
||||||
|
<LibSubFolderPermissionDialog
|
||||||
|
toggleDialog={this.onItemFolderPermissionToggle}
|
||||||
|
repoID={repo.repo_id}
|
||||||
|
repoName={repo.repo_name}
|
||||||
|
isDepartmentRepo={true}
|
||||||
|
/>
|
||||||
|
</ModalPortal>
|
||||||
)}
|
)}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
@@ -404,7 +416,7 @@ class SharedRepoListItem extends React.Component {
|
|||||||
<td>{this.generatorMobileMenu()}</td>
|
<td>{this.generatorMobileMenu()}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{this.state.isShowSharedDialog && (
|
{this.state.isShowSharedDialog && (
|
||||||
<ModalPotal>
|
<ModalPortal>
|
||||||
<ShareDialog
|
<ShareDialog
|
||||||
itemType={'library'}
|
itemType={'library'}
|
||||||
itemName={repo.repo_name}
|
itemName={repo.repo_name}
|
||||||
@@ -417,7 +429,7 @@ class SharedRepoListItem extends React.Component {
|
|||||||
isGroupOwnedRepo={isGroupOwnedRepo}
|
isGroupOwnedRepo={isGroupOwnedRepo}
|
||||||
toggleDialog={this.toggleShareDialog}
|
toggleDialog={this.toggleShareDialog}
|
||||||
/>
|
/>
|
||||||
</ModalPotal>
|
</ModalPortal>
|
||||||
)}
|
)}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user