mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-22 08:47:22 +00:00
02 org admin department set quota
This commit is contained in:
parent
14f04b4020
commit
ac8746e8fa
@ -9,7 +9,7 @@ import toaster from '../toast';
|
|||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
toggle: PropTypes.func.isRequired,
|
toggle: PropTypes.func.isRequired,
|
||||||
groupID: PropTypes.number.isRequired,
|
group: PropTypes.object.isRequired,
|
||||||
onSetQuota: PropTypes.func.isRequired,
|
onSetQuota: PropTypes.func.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ class SetGroupQuotaDialog extends React.Component {
|
|||||||
if ((quota.length && myReg.test(quota)) || quota == -2) {
|
if ((quota.length && myReg.test(quota)) || quota == -2) {
|
||||||
this.setState({ errMessage: '' });
|
this.setState({ errMessage: '' });
|
||||||
let newQuota = this.state.quota == -2 ? this.state.quota : this.state.quota * 1000000;
|
let newQuota = this.state.quota == -2 ? this.state.quota : this.state.quota * 1000000;
|
||||||
orgAdminAPI.orgAdminSetGroupQuota(orgID, this.props.groupID, newQuota).then((res) => {
|
orgAdminAPI.orgAdminSetGroupQuota(orgID, this.props.group.id, newQuota).then((res) => {
|
||||||
this.props.toggle();
|
this.props.toggle();
|
||||||
this.props.onSetQuota(res.data);
|
this.props.onSetQuota(res.data);
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
@ -55,10 +55,15 @@ class SetGroupQuotaDialog extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const group = this.props.group;
|
||||||
|
const oldQuota = Utils.bytesToSize(group.quota);
|
||||||
|
const message = gettext('The current quota for {group_name} is {quota}').replace('{group_name}', group.name).replace('{quota}', oldQuota);
|
||||||
return (
|
return (
|
||||||
<Modal isOpen={true} toggle={this.props.toggle} autoFocus={false}>
|
<Modal isOpen={true} toggle={this.props.toggle} autoFocus={false}>
|
||||||
<SeahubModalHeader toggle={this.props.toggle}>{gettext('Set Quota')}</SeahubModalHeader>
|
<SeahubModalHeader toggle={this.props.toggle}>{gettext('Set Quota')}</SeahubModalHeader>
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
|
<p>{message}</p>
|
||||||
|
<p>{gettext('Please enter a new quota')}</p>
|
||||||
<InputGroup>
|
<InputGroup>
|
||||||
<Input
|
<Input
|
||||||
onKeyDown={this.handleKeyDown}
|
onKeyDown={this.handleKeyDown}
|
||||||
|
@ -6,6 +6,7 @@ class DepartmentNode {
|
|||||||
this.children = props.children || [];
|
this.children = props.children || [];
|
||||||
this.parentNode = props.parentNode || null;
|
this.parentNode = props.parentNode || null;
|
||||||
this.orgId = props.orgId || '';
|
this.orgId = props.orgId || '';
|
||||||
|
this.quota = props.quota || -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
findNodeById(nodeId) {
|
findNodeById(nodeId) {
|
||||||
|
@ -132,6 +132,7 @@ class Department extends React.Component {
|
|||||||
<DepartmentNodeMenu
|
<DepartmentNodeMenu
|
||||||
node={currentDepartment}
|
node={currentDepartment}
|
||||||
toggleAddDepartment={this.props.toggleAddDepartment}
|
toggleAddDepartment={this.props.toggleAddDepartment}
|
||||||
|
toggleSetQuotaDialog={this.props.toggleSetQuotaDialog}
|
||||||
toggleAddLibrary={this.props.toggleAddLibrary}
|
toggleAddLibrary={this.props.toggleAddLibrary}
|
||||||
toggleAddMembers={this.props.toggleAddMembers}
|
toggleAddMembers={this.props.toggleAddMembers}
|
||||||
toggleRename={this.props.toggleRename}
|
toggleRename={this.props.toggleRename}
|
||||||
|
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
import { DropdownItem, DropdownMenu } from 'reactstrap';
|
import { DropdownItem, DropdownMenu } from 'reactstrap';
|
||||||
import { gettext } from '../../../utils/constants';
|
import { gettext } from '../../../utils/constants';
|
||||||
|
|
||||||
function DepartmentNodeMenu({ node, toggleDelete, toggleRename, toggleAddMembers, toggleAddDepartment, toggleAddLibrary }) {
|
function DepartmentNodeMenu({ node, toggleDelete, toggleRename, toggleAddMembers, toggleAddDepartment, toggleAddLibrary, toggleSetQuotaDialog }) {
|
||||||
return (
|
return (
|
||||||
<DropdownMenu
|
<DropdownMenu
|
||||||
modifiers={{ preventOverflow: { boundariesElement: document.body } }}
|
modifiers={{ preventOverflow: { boundariesElement: document.body } }}
|
||||||
@ -24,6 +24,9 @@ function DepartmentNodeMenu({ node, toggleDelete, toggleRename, toggleAddMembers
|
|||||||
<DropdownItem key={`${node.id}-delete`} onClick={() => toggleDelete(node)}>
|
<DropdownItem key={`${node.id}-delete`} onClick={() => toggleDelete(node)}>
|
||||||
{gettext('Delete')}
|
{gettext('Delete')}
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
|
<DropdownItem key={`${node.id}-set-quota`} onClick={() => toggleSetQuotaDialog(node)}>
|
||||||
|
{gettext('Set quota')}
|
||||||
|
</DropdownItem>
|
||||||
<DropdownItem key={`${node.id}-id`} disabled={true}>
|
<DropdownItem key={`${node.id}-id`} disabled={true}>
|
||||||
{`${gettext('Department ID')} : ${node.id}`}
|
{`${gettext('Department ID')} : ${node.id}`}
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
@ -38,6 +41,7 @@ DepartmentNodeMenu.propTypes = {
|
|||||||
toggleAddMembers: PropTypes.func.isRequired,
|
toggleAddMembers: PropTypes.func.isRequired,
|
||||||
toggleAddDepartment: PropTypes.func.isRequired,
|
toggleAddDepartment: PropTypes.func.isRequired,
|
||||||
toggleAddLibrary: PropTypes.func.isRequired,
|
toggleAddLibrary: PropTypes.func.isRequired,
|
||||||
|
toggleSetQuotaDialog: PropTypes.func.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default DepartmentNodeMenu;
|
export default DepartmentNodeMenu;
|
||||||
|
@ -9,6 +9,7 @@ const DepartmentsTreePanelPropTypes = {
|
|||||||
onChangeDepartment: PropTypes.func,
|
onChangeDepartment: PropTypes.func,
|
||||||
listSubDepartments: PropTypes.func,
|
listSubDepartments: PropTypes.func,
|
||||||
toggleAddDepartment: PropTypes.func,
|
toggleAddDepartment: PropTypes.func,
|
||||||
|
toggleSetQuotaDialog: PropTypes.func,
|
||||||
toggleAddLibrary: PropTypes.func,
|
toggleAddLibrary: PropTypes.func,
|
||||||
toggleAddMembers: PropTypes.func,
|
toggleAddMembers: PropTypes.func,
|
||||||
toggleRename: PropTypes.func,
|
toggleRename: PropTypes.func,
|
||||||
@ -29,6 +30,7 @@ class DepartmentsTreePanel extends Component {
|
|||||||
onChangeDepartment={this.props.onChangeDepartment}
|
onChangeDepartment={this.props.onChangeDepartment}
|
||||||
listSubDepartments={this.props.listSubDepartments}
|
listSubDepartments={this.props.listSubDepartments}
|
||||||
toggleAddDepartment={this.props.toggleAddDepartment}
|
toggleAddDepartment={this.props.toggleAddDepartment}
|
||||||
|
toggleSetQuotaDialog={this.props.toggleSetQuotaDialog}
|
||||||
toggleAddLibrary={this.props.toggleAddLibrary}
|
toggleAddLibrary={this.props.toggleAddLibrary}
|
||||||
toggleAddMembers={this.props.toggleAddMembers}
|
toggleAddMembers={this.props.toggleAddMembers}
|
||||||
toggleRename={this.props.toggleRename}
|
toggleRename={this.props.toggleRename}
|
||||||
|
@ -4,6 +4,7 @@ import { Utils } from '../../../utils/utils';
|
|||||||
import { gettext, orgID } from '../../../utils/constants';
|
import { gettext, orgID } from '../../../utils/constants';
|
||||||
import { orgAdminAPI } from '../../../utils/org-admin-api';
|
import { orgAdminAPI } from '../../../utils/org-admin-api';
|
||||||
import toaster from '../../../components/toast';
|
import toaster from '../../../components/toast';
|
||||||
|
import SetGroupQuotaDialog from '../../../components/dialog/org-set-group-quota-dialog';
|
||||||
import AddDepartmentDialog from '../../../components/dialog/sysadmin-dialog/add-department-v2-dialog';
|
import AddDepartmentDialog from '../../../components/dialog/sysadmin-dialog/add-department-v2-dialog';
|
||||||
import AddDepartMemberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-depart-member-v2-dialog';
|
import AddDepartMemberDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-depart-member-v2-dialog';
|
||||||
import RenameDepartmentDialog from '../../../components/dialog/sysadmin-dialog/rename-department-v2-dialog';
|
import RenameDepartmentDialog from '../../../components/dialog/sysadmin-dialog/rename-department-v2-dialog';
|
||||||
@ -30,6 +31,7 @@ class Departments extends React.Component {
|
|||||||
isRenameDepartmentDialogShow: false,
|
isRenameDepartmentDialogShow: false,
|
||||||
isDeleteDepartmentDialogShow: false,
|
isDeleteDepartmentDialogShow: false,
|
||||||
isShowAddRepoDialog: false,
|
isShowAddRepoDialog: false,
|
||||||
|
isSetQuotaDialogShow: false,
|
||||||
membersList: [],
|
membersList: [],
|
||||||
isTopDepartmentLoading: false,
|
isTopDepartmentLoading: false,
|
||||||
isMembersListLoading: false,
|
isMembersListLoading: false,
|
||||||
@ -48,6 +50,7 @@ class Departments extends React.Component {
|
|||||||
id: item.id,
|
id: item.id,
|
||||||
name: item.name,
|
name: item.name,
|
||||||
orgId: item.org_id,
|
orgId: item.org_id,
|
||||||
|
quota: item.quota,
|
||||||
});
|
});
|
||||||
return node;
|
return node;
|
||||||
});
|
});
|
||||||
@ -102,6 +105,7 @@ class Departments extends React.Component {
|
|||||||
parentGroupId: department.parent_group_id,
|
parentGroupId: department.parent_group_id,
|
||||||
orgId: department.org_id,
|
orgId: department.org_id,
|
||||||
parentNode: node,
|
parentNode: node,
|
||||||
|
quota: department.quota,
|
||||||
}));
|
}));
|
||||||
node.setChildren(childrenNodes);
|
node.setChildren(childrenNodes);
|
||||||
cb && cb(childrenNodes);
|
cb && cb(childrenNodes);
|
||||||
@ -285,6 +289,28 @@ class Departments extends React.Component {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
toggleSetQuotaDialog = (node) => {
|
||||||
|
this.setState({ operateNode: node, isSetQuotaDialogShow: !this.state.isSetQuotaDialogShow });
|
||||||
|
};
|
||||||
|
|
||||||
|
onSetQuota = (newNode) => {
|
||||||
|
const rootNodes = this.state.rootNodes.slice(0);
|
||||||
|
this._setQuota(rootNodes[0], newNode);
|
||||||
|
this.setState({
|
||||||
|
rootNodes: rootNodes
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_setQuota = (node, newNode) => {
|
||||||
|
if (node.id === newNode.id) {
|
||||||
|
node.quota = newNode.quota;
|
||||||
|
} else {
|
||||||
|
node.children.forEach(child => {
|
||||||
|
this._setQuota(child, newNode);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { rootNodes, operateNode, checkedDepartmentId, isAddDepartmentDialogShow, isAddMembersDialogShow,
|
const { rootNodes, operateNode, checkedDepartmentId, isAddDepartmentDialogShow, isAddMembersDialogShow,
|
||||||
@ -308,6 +334,7 @@ class Departments extends React.Component {
|
|||||||
onChangeDepartment={this.onChangeDepartment}
|
onChangeDepartment={this.onChangeDepartment}
|
||||||
listSubDepartments={this.listSubDepartments}
|
listSubDepartments={this.listSubDepartments}
|
||||||
toggleAddDepartment={this.toggleAddDepartment}
|
toggleAddDepartment={this.toggleAddDepartment}
|
||||||
|
toggleSetQuotaDialog={this.toggleSetQuotaDialog}
|
||||||
toggleAddLibrary={this.toggleAddLibrary}
|
toggleAddLibrary={this.toggleAddLibrary}
|
||||||
toggleAddMembers={this.toggleAddMembers}
|
toggleAddMembers={this.toggleAddMembers}
|
||||||
toggleRename={this.toggleRename}
|
toggleRename={this.toggleRename}
|
||||||
@ -328,6 +355,7 @@ class Departments extends React.Component {
|
|||||||
deleteGroup={this.deleteGroup}
|
deleteGroup={this.deleteGroup}
|
||||||
createGroup={this.createGroup}
|
createGroup={this.createGroup}
|
||||||
toggleAddDepartment={this.toggleAddDepartment}
|
toggleAddDepartment={this.toggleAddDepartment}
|
||||||
|
toggleSetQuotaDialog={this.toggleSetQuotaDialog}
|
||||||
toggleAddLibrary={this.toggleAddLibrary}
|
toggleAddLibrary={this.toggleAddLibrary}
|
||||||
toggleAddMembers={this.toggleAddMembers}
|
toggleAddMembers={this.toggleAddMembers}
|
||||||
toggleRename={this.toggleRename}
|
toggleRename={this.toggleRename}
|
||||||
@ -384,6 +412,13 @@ class Departments extends React.Component {
|
|||||||
groupID={String(operateNode.id)}
|
groupID={String(operateNode.id)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
{this.state.isSetQuotaDialogShow &&
|
||||||
|
<SetGroupQuotaDialog
|
||||||
|
group={operateNode}
|
||||||
|
onSetQuota={this.onSetQuota}
|
||||||
|
toggle={this.toggleSetQuotaDialog}
|
||||||
|
/>
|
||||||
|
}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ const departmentsV2TreeNodePropTypes = {
|
|||||||
listSubDepartments: PropTypes.func,
|
listSubDepartments: PropTypes.func,
|
||||||
onChangeDepartment: PropTypes.func,
|
onChangeDepartment: PropTypes.func,
|
||||||
toggleAddDepartment: PropTypes.func,
|
toggleAddDepartment: PropTypes.func,
|
||||||
|
toggleSetQuotaDialog: PropTypes.func,
|
||||||
toggleAddLibrary: PropTypes.func,
|
toggleAddLibrary: PropTypes.func,
|
||||||
toggleAddMembers: PropTypes.func,
|
toggleAddMembers: PropTypes.func,
|
||||||
toggleRename: PropTypes.func,
|
toggleRename: PropTypes.func,
|
||||||
@ -85,6 +86,7 @@ class DepartmentsV2TreeNode extends Component {
|
|||||||
toggleRename={this.props.toggleRename}
|
toggleRename={this.props.toggleRename}
|
||||||
toggleDelete={this.props.toggleDelete}
|
toggleDelete={this.props.toggleDelete}
|
||||||
toggleAddLibrary={this.props.toggleAddLibrary}
|
toggleAddLibrary={this.props.toggleAddLibrary}
|
||||||
|
toggleSetQuotaDialog={this.props.toggleSetQuotaDialog}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -151,6 +153,7 @@ class DepartmentsV2TreeNode extends Component {
|
|||||||
toggleAddDepartment={this.props.toggleAddDepartment}
|
toggleAddDepartment={this.props.toggleAddDepartment}
|
||||||
toggleAddLibrary={this.props.toggleAddLibrary}
|
toggleAddLibrary={this.props.toggleAddLibrary}
|
||||||
toggleAddMembers={this.props.toggleAddMembers}
|
toggleAddMembers={this.props.toggleAddMembers}
|
||||||
|
toggleSetQuotaDialog={this.props.toggleSetQuotaDialog}
|
||||||
toggleRename={this.props.toggleRename}
|
toggleRename={this.props.toggleRename}
|
||||||
toggleDelete={this.props.toggleDelete}
|
toggleDelete={this.props.toggleDelete}
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user