1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-24 12:58:34 +00:00
* ['deptments, members' dialog] fixed 'get members for the current department'

* ['share to user', 'manage group members' dialogs] don't offer the switch for 'select members from departments' dialog when there is no department
This commit is contained in:
llj
2025-05-21 11:15:44 +08:00
committed by GitHub
parent 5cf569b405
commit ccf8b24769
3 changed files with 70 additions and 19 deletions

View File

@@ -35,7 +35,7 @@ class DepartmentDetailDialog extends React.Component {
newMembersTempObj: {}, newMembersTempObj: {},
currentDepartment: {}, currentDepartment: {},
departmentsLoading: true, departmentsLoading: true,
membersLoading: true, membersLoading: false,
selectedMemberMap: {}, selectedMemberMap: {},
departmentsTree: [], departmentsTree: [],
keyword: '', keyword: '',
@@ -107,7 +107,9 @@ class DepartmentDetailDialog extends React.Component {
departmentsLoading: false, departmentsLoading: false,
departmentsTree: departmentsTree departmentsTree: departmentsTree
}); });
this.getMembers(currentDepartment.id); if (currentDepartment.id) {
this.getMembers(currentDepartment.id);
}
}).catch(error => { }).catch(error => {
this.onError(error); this.onError(error);
}); });
@@ -118,10 +120,14 @@ class DepartmentDetailDialog extends React.Component {
seafileAPI.listAddressBookDepartmentMembers(department_id).then((res) => { seafileAPI.listAddressBookDepartmentMembers(department_id).then((res) => {
this.setState({ this.setState({
departmentMembers: res.data.members, departmentMembers: res.data.members,
membersLoading: false, membersLoading: false
}); });
}).catch(error => { }).catch(error => {
this.onError(error); let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
this.setState({
membersLoading: false
});
}); });
}; };

View File

@@ -230,6 +230,7 @@ class ShareToUser extends React.Component {
sharedItems: [], sharedItems: [],
isWiki: this.props.repoType === 'wiki', isWiki: this.props.repoType === 'wiki',
tmpUserList: [], tmpUserList: [],
enableSelectMembersFromDept: false,
isShowDepartmentDetailDialog: false isShowDepartmentDetailDialog: false
}; };
this.options = []; this.options = [];
@@ -259,6 +260,7 @@ class ShareToUser extends React.Component {
componentDidMount() { componentDidMount() {
let path = this.props.itemPath; let path = this.props.itemPath;
let repoID = this.props.repoID; let repoID = this.props.repoID;
this.getPermForSelectMembersFromDept();
seafileAPI.listSharedItems(repoID, path, 'user').then((res) => { seafileAPI.listSharedItems(repoID, path, 'user').then((res) => {
if (res.data.length !== 0) { if (res.data.length !== 0) {
let tmpUserList = res.data.map(item => { let tmpUserList = res.data.map(item => {
@@ -483,15 +485,34 @@ class ShareToUser extends React.Component {
this.toggleDepartmentDetailDialog(); this.toggleDepartmentDetailDialog();
}; };
render() { getPermForSelectMembersFromDept = () => {
let showDeptBtn = true;
if (window.app.config.lang !== 'zh-cn') { if (window.app.config.lang !== 'zh-cn') {
showDeptBtn = false; this.setState({
enableSelectMembersFromDept: false
});
return;
} }
if (cloudMode && !isOrgContext) { if (cloudMode && !isOrgContext) {
showDeptBtn = false; this.setState({
enableSelectMembersFromDept: false
});
return;
} }
let { sharedItems } = this.state;
seafileAPI.listAddressBookDepartments().then((res) => {
this.setState({
enableSelectMembersFromDept: res.data.departments.length > 0
});
}).catch(error => {
this.setState({
enableSelectMembersFromDept: false
});
});
};
render() {
const { sharedItems, enableSelectMembersFromDept } = this.state;
let thead = ( let thead = (
<thead> <thead>
<tr> <tr>
@@ -522,12 +543,12 @@ class ShareToUser extends React.Component {
<div className='add-members'> <div className='add-members'>
<UserSelect <UserSelect
isMulti={true} isMulti={true}
className={classnames('reviewer-select', { 'user-select-right-btn': showDeptBtn })} className={classnames('reviewer-select', { 'user-select-right-btn': enableSelectMembersFromDept })}
placeholder={gettext('Search users...')} placeholder={gettext('Search users...')}
onSelectChange={this.handleSelectChange} onSelectChange={this.handleSelectChange}
selectedUsers={this.state.selectedUsers} selectedUsers={this.state.selectedUsers}
/> />
{showDeptBtn && {enableSelectMembersFromDept &&
<span <span
onClick={this.toggleDepartmentDetailDialog} onClick={this.toggleDepartmentDetailDialog}
className="sf3-font sf3-font-invite-visitors toggle-detail-btn"> className="sf3-font sf3-font-invite-visitors toggle-detail-btn">

View File

@@ -21,6 +21,7 @@ class ManageMembersDialog extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
enableSelectMembersFromDept: false,
isLoading: true, // first loading isLoading: true, // first loading
isLoadingMore: false, isLoadingMore: false,
groupMembers: [], groupMembers: [],
@@ -37,6 +38,7 @@ class ManageMembersDialog extends React.Component {
} }
componentDidMount() { componentDidMount() {
this.getPermForSelectMembersFromDept();
this.listGroupMembers(this.state.page); this.listGroupMembers(this.state.page);
} }
@@ -164,19 +166,41 @@ class ManageMembersDialog extends React.Component {
this.props.toggleDepartmentDetailDialog(); this.props.toggleDepartmentDetailDialog();
}; };
getPermForSelectMembersFromDept = () => {
if (window.app.config.lang !== 'zh-cn') {
this.setState({
enableSelectMembersFromDept: false
});
return;
}
if (cloudMode && !isOrgContext) {
this.setState({
enableSelectMembersFromDept: false
});
return;
}
seafileAPI.listAddressBookDepartments().then((res) => {
this.setState({
enableSelectMembersFromDept: res.data.departments.length > 0
});
}).catch(error => {
this.setState({
enableSelectMembersFromDept: false
});
});
};
render() { render() {
const { const {
enableSelectMembersFromDept,
isLoading, hasNextPage, groupMembers, isLoading, hasNextPage, groupMembers,
keyword, membersFound, keyword, membersFound,
searchActive searchActive
} = this.state; } = this.state;
let showDeptBtn = true;
if (window.app.config.lang !== 'zh-cn') {
showDeptBtn = false;
}
if (cloudMode && !isOrgContext) {
showDeptBtn = false;
}
return ( return (
<Fragment> <Fragment>
<p className="mb-2">{gettext('Add group member')}</p> <p className="mb-2">{gettext('Add group member')}</p>
@@ -188,7 +212,7 @@ class ManageMembersDialog extends React.Component {
isMulti={true} isMulti={true}
className="add-members-select" className="add-members-select"
/> />
{showDeptBtn && {enableSelectMembersFromDept &&
<span onClick={this.onClickDeptBtn} className="sf3-font sf3-font-invite-visitors toggle-detail-btn"></span> <span onClick={this.onClickDeptBtn} className="sf3-font sf3-font-invite-visitors toggle-detail-btn"></span>
} }
{this.state.selectedUsers.length > 0 ? {this.state.selectedUsers.length > 0 ?