mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 10:58:33 +00:00
Sys department (#5471)
* [system admin - department] redesigned it (split it into 3 tabs/pages) * [system admin - department] fixup & improvements; code cleanup
This commit is contained in:
@@ -8,7 +8,7 @@ const propTypes = {
|
||||
groupID: PropTypes.string,
|
||||
parentGroupID: PropTypes.string,
|
||||
toggle: PropTypes.func.isRequired,
|
||||
onDepartChanged: PropTypes.func.isRequired,
|
||||
onAddNewDepartment: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
class AddDepartDialog extends React.Component {
|
||||
@@ -30,7 +30,7 @@ class AddDepartDialog extends React.Component {
|
||||
}
|
||||
seafileAPI.sysAdminAddNewDepartment(parentGroup, this.state.departName.trim()).then((res) => {
|
||||
this.props.toggle();
|
||||
this.props.onDepartChanged();
|
||||
this.props.onAddNewDepartment(res.data);
|
||||
}).catch(error => {
|
||||
let errorMsg = gettext(error.response.data.error_msg);
|
||||
this.setState({ errMessage: errorMsg });
|
||||
@@ -80,9 +80,10 @@ class AddDepartDialog extends React.Component {
|
||||
/>
|
||||
</FormGroup>
|
||||
</Form>
|
||||
{ this.state.errMessage && <p className="error">{this.state.errMessage}</p> }
|
||||
{this.state.errMessage && <p className="error">{this.state.errMessage}</p>}
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.handleSubmit}>{gettext('Submit')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
|
@@ -10,7 +10,7 @@ import UserSelect from '../../user-select.js';
|
||||
const propTypes = {
|
||||
toggle: PropTypes.func.isRequired,
|
||||
groupID: PropTypes.string.isRequired,
|
||||
onMemberChanged: PropTypes.func.isRequired
|
||||
onAddNewMembers: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
class AddMemberDialog extends React.Component {
|
||||
@@ -38,7 +38,7 @@ class AddMemberDialog extends React.Component {
|
||||
this.setState({ errMessage: res.data.failed[0].error_msg });
|
||||
}
|
||||
if (res.data.success.length > 0) {
|
||||
this.props.onMemberChanged();
|
||||
this.props.onAddNewMembers(res.data.success);
|
||||
this.props.toggle();
|
||||
}
|
||||
}).catch(error => {
|
||||
@@ -62,8 +62,8 @@ class AddMemberDialog extends React.Component {
|
||||
{ this.state.errMessage && <p className="error">{this.state.errMessage}</p> }
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="primary" onClick={this.handleSubmit}>{gettext('Submit')}</Button>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.handleSubmit}>{gettext('Submit')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
);
|
||||
|
@@ -8,7 +8,7 @@ import { Utils } from '../../../utils/utils';
|
||||
const propTypes = {
|
||||
toggle: PropTypes.func.isRequired,
|
||||
groupID: PropTypes.string.isRequired,
|
||||
onRepoChanged: PropTypes.func.isRequired,
|
||||
onAddNewRepo: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
class AddRepoDialog extends React.Component {
|
||||
@@ -26,7 +26,7 @@ class AddRepoDialog extends React.Component {
|
||||
if (isValid) {
|
||||
seafileAPI.sysAdminAddRepoInDepartment(this.props.groupID, this.state.repoName.trim()).then((res) => {
|
||||
this.props.toggle();
|
||||
this.props.onRepoChanged();
|
||||
this.props.onAddNewRepo(res.data);
|
||||
}).catch(error => {
|
||||
let errorMsg = Utils.getErrorMsg(error);
|
||||
this.setState({ errMessage: errorMsg });
|
||||
@@ -78,6 +78,7 @@ class AddRepoDialog extends React.Component {
|
||||
{this.state.errMessage && <p className="error">{this.state.errMessage}</p> }
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.handleSubmit}>{gettext('Submit')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
|
@@ -7,13 +7,12 @@ import { Utils } from '../../../utils/utils';
|
||||
import toaster from '../../../components/toast';
|
||||
|
||||
const propTypes = {
|
||||
groupName: PropTypes.string,
|
||||
groupID: PropTypes.number.isRequired,
|
||||
group: PropTypes.object.isRequired,
|
||||
toggle: PropTypes.func.isRequired,
|
||||
onDepartChanged: PropTypes.func.isRequired
|
||||
onDeleteDepartment: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
class DeleteDepartDialog extends React.Component {
|
||||
class DeleteDepartmentDialog extends React.Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -21,8 +20,9 @@ class DeleteDepartDialog extends React.Component {
|
||||
|
||||
deleteDepart = () => {
|
||||
this.props.toggle();
|
||||
seafileAPI.sysAdminDeleteDepartment(this.props.groupID).then((res) => {
|
||||
this.props.onDepartChanged();
|
||||
const { group } = this.props;
|
||||
seafileAPI.sysAdminDeleteDepartment(group.id).then((res) => {
|
||||
this.props.onDeleteDepartment(group.id);
|
||||
}).catch(error => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
toaster.danger(errMessage);
|
||||
@@ -30,8 +30,10 @@ class DeleteDepartDialog extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const { group } = this.props;
|
||||
|
||||
let tipMessage = gettext('Are you sure you want to delete {placeholder} ?');
|
||||
tipMessage = tipMessage.replace('{placeholder}', '<span class="op-target">' + Utils.HTMLescape(this.props.groupName) + '</span>');
|
||||
tipMessage = tipMessage.replace('{placeholder}', '<span class="op-target">' + Utils.HTMLescape(group.name) + '</span>');
|
||||
return (
|
||||
<Modal isOpen={true} toggle={this.props.toggle}>
|
||||
<ModalHeader toggle={this.props.toggle}>{gettext('Delete Department')}</ModalHeader>
|
||||
@@ -47,6 +49,6 @@ class DeleteDepartDialog extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
DeleteDepartDialog.propTypes = propTypes;
|
||||
DeleteDepartmentDialog.propTypes = propTypes;
|
||||
|
||||
export default DeleteDepartDialog;
|
||||
export default DeleteDepartmentDialog;
|
||||
|
@@ -42,8 +42,8 @@ class DeleteMemberDialog extends React.Component {
|
||||
<div dangerouslySetInnerHTML={{__html: tipMessage}}></div>
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="primary" onClick={this.deleteMember}>{gettext('Delete')}</Button>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.deleteMember}>{gettext('Delete')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
);
|
||||
|
@@ -25,8 +25,9 @@ class DeleteRepoDialog extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
const { repo } = this.props;
|
||||
let tipMessage = gettext('Are you sure you want to delete {placeholder} ?');
|
||||
tipMessage = tipMessage.replace('{placeholder}', '<span class="op-target">' + Utils.HTMLescape(this.props.repo.name) + '</span>');
|
||||
tipMessage = tipMessage.replace('{placeholder}', '<span class="op-target">' + Utils.HTMLescape(repo.name || repo.repo_name) + '</span>');
|
||||
return (
|
||||
<Modal isOpen={true} toggle={this.props.toggle}>
|
||||
<ModalHeader toggle={this.props.toggle}>{gettext('Delete Library')}</ModalHeader>
|
||||
@@ -34,8 +35,8 @@ class DeleteRepoDialog extends React.Component {
|
||||
<div dangerouslySetInnerHTML={{__html: tipMessage}}></div>
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="primary" onClick={this.deleteRepo}>{gettext('Delete')}</Button>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.deleteRepo}>{gettext('Delete')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
);
|
||||
|
@@ -92,6 +92,7 @@ class RenameDepartmentDialog extends React.Component {
|
||||
{this.state.errMessage && <p className="error">{this.state.errMessage}</p>}
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.handleSubmit}>{gettext('Submit')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
|
@@ -9,7 +9,7 @@ import toaster from '../../toast';
|
||||
const propTypes = {
|
||||
toggle: PropTypes.func.isRequired,
|
||||
groupID: PropTypes.number.isRequired,
|
||||
onDepartChanged: PropTypes.func.isRequired,
|
||||
onSetQuota: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
class SetGroupQuotaDialog extends React.Component {
|
||||
@@ -30,7 +30,7 @@ class SetGroupQuotaDialog extends React.Component {
|
||||
let newQuota = this.state.quota == -2 ? this.state.quota : this.state.quota * 1000000;
|
||||
seafileAPI.sysAdminUpdateDepartmentQuota(this.props.groupID, newQuota).then((res) => {
|
||||
this.props.toggle();
|
||||
this.props.onDepartChanged();
|
||||
this.props.onSetQuota(res.data);
|
||||
}).catch(error => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
toaster.danger(errMessage);
|
||||
@@ -71,9 +71,10 @@ class SetGroupQuotaDialog extends React.Component {
|
||||
<br/><span>{gettext('An integer that is greater than 0 or equal to -2.')}</span><br/>
|
||||
<span>{gettext('Tip: -2 means no limit.')}</span>
|
||||
</p>
|
||||
{ this.state.errMessage && <p className="error">{this.state.errMessage}</p> }
|
||||
{this.state.errMessage && <p className="error">{this.state.errMessage}</p>}
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button color="secondary" onClick={this.props.toggle}>{gettext('Cancel')}</Button>
|
||||
<Button color="primary" onClick={this.setGroupQuota}>{gettext('Submit')}</Button>
|
||||
</ModalFooter>
|
||||
</Modal>
|
||||
|
Reference in New Issue
Block a user