mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-14 14:21:23 +00:00
Single selector (#5792)
* [system admin - orgs] member: replaced the membership selector with the new 'single selector' * deleted unused wiki-permission-editor.js
This commit is contained in:
@@ -1,41 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { gettext } from '../../utils/constants';
|
|
||||||
import SelectEditor from './select-editor';
|
|
||||||
|
|
||||||
const propTypes = {
|
|
||||||
isTextMode: PropTypes.bool.isRequired,
|
|
||||||
isEditIconShow: PropTypes.bool.isRequired,
|
|
||||||
statusOptions: PropTypes.array.isRequired,
|
|
||||||
currentStatus: PropTypes.string.isRequired,
|
|
||||||
onStatusChanged: PropTypes.func.isRequired
|
|
||||||
};
|
|
||||||
|
|
||||||
class SysAdminUserMembershipEditor extends React.Component {
|
|
||||||
|
|
||||||
translateStatus = (status) => {
|
|
||||||
switch (status) {
|
|
||||||
case 'is_org_staff':
|
|
||||||
return gettext('Admin');
|
|
||||||
case 'not_is_org_staff':
|
|
||||||
return gettext('Member');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return (
|
|
||||||
<SelectEditor
|
|
||||||
isTextMode={this.props.isTextMode}
|
|
||||||
isEditIconShow={this.props.isEditIconShow}
|
|
||||||
options={this.props.statusOptions}
|
|
||||||
currentOption={this.props.currentStatus}
|
|
||||||
onOptionChanged={this.props.onStatusChanged}
|
|
||||||
translateOption={this.translateStatus}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SysAdminUserMembershipEditor.propTypes = propTypes;
|
|
||||||
|
|
||||||
export default SysAdminUserMembershipEditor;
|
|
@@ -1,43 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { gettext } from '../../utils/constants';
|
|
||||||
import SelectEditor from './select-editor';
|
|
||||||
|
|
||||||
const propTypes = {
|
|
||||||
isTextMode: PropTypes.bool.isRequired,
|
|
||||||
isEditIconShow: PropTypes.bool.isRequired,
|
|
||||||
permissions: PropTypes.array.isRequired,
|
|
||||||
currentPermission: PropTypes.string.isRequired,
|
|
||||||
onPermissionChanged: PropTypes.func.isRequired
|
|
||||||
};
|
|
||||||
|
|
||||||
class WikiPermissionEditor extends React.Component {
|
|
||||||
|
|
||||||
translatePermission = (permission) => {
|
|
||||||
if (permission === 'private') {
|
|
||||||
return gettext('Private');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (permission === 'public') {
|
|
||||||
return gettext('Public');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return (
|
|
||||||
<SelectEditor
|
|
||||||
isTextMode={this.props.isTextMode}
|
|
||||||
isEditIconShow={this.props.isEditIconShow}
|
|
||||||
options={this.props.permissions}
|
|
||||||
currentOption={this.props.currentPermission}
|
|
||||||
onOptionChanged={this.props.onPermissionChanged}
|
|
||||||
translateOption={this.translatePermission}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
WikiPermissionEditor.propTypes = propTypes;
|
|
||||||
|
|
||||||
export default WikiPermissionEditor;
|
|
@@ -9,7 +9,6 @@ import toaster from '../../../components/toast';
|
|||||||
import EmptyTip from '../../../components/empty-tip';
|
import EmptyTip from '../../../components/empty-tip';
|
||||||
import Loading from '../../../components/loading';
|
import Loading from '../../../components/loading';
|
||||||
import Selector from '../../../components/single-selector';
|
import Selector from '../../../components/single-selector';
|
||||||
import SysAdminUserMembershipEditor from '../../../components/select-editor/sysadmin-user-membership-editor';
|
|
||||||
import SysAdminAddUserDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-user-dialog';
|
import SysAdminAddUserDialog from '../../../components/dialog/sysadmin-dialog/sysadmin-add-user-dialog';
|
||||||
import CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';
|
import CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';
|
||||||
import OpMenu from '../../../components/dialog/op-menu';
|
import OpMenu from '../../../components/dialog/op-menu';
|
||||||
@@ -163,8 +162,8 @@ class Item extends Component {
|
|||||||
this.props.updateStatus(this.props.item.email, statusOption.value);
|
this.props.updateStatus(this.props.item.email, statusOption.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
updateMembership= (membershipValue) => {
|
updateMembership= (membershipOption) => {
|
||||||
this.props.updateMembership(this.props.item.email, membershipValue);
|
this.props.updateMembership(this.props.item.email, membershipOption.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
deleteUser = () => {
|
deleteUser = () => {
|
||||||
@@ -204,6 +203,15 @@ class Item extends Component {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
translateMembership = (membership) => {
|
||||||
|
switch (membership) {
|
||||||
|
case 'Admin':
|
||||||
|
return gettext('Admin');
|
||||||
|
case 'Member':
|
||||||
|
return gettext('Member');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { item } = this.props;
|
const { item } = this.props;
|
||||||
const { highlight, isOpIconShown, isDeleteDialogOpen, isResetPasswordDialogOpen } = this.state;
|
const { highlight, isOpIconShown, isDeleteDialogOpen, isResetPasswordDialogOpen } = this.state;
|
||||||
@@ -223,6 +231,17 @@ class Item extends Component {
|
|||||||
});
|
});
|
||||||
const currentSelectedStatusOption = this.statusOptions.filter(item => item.isSelected)[0];
|
const currentSelectedStatusOption = this.statusOptions.filter(item => item.isSelected)[0];
|
||||||
|
|
||||||
|
// for 'user membership'
|
||||||
|
const curMembership = item.is_org_staff? 'Admin' : 'Member';
|
||||||
|
this.membershipOptions = ['Admin', 'Member'].map(item => {
|
||||||
|
return {
|
||||||
|
value: item,
|
||||||
|
text: this.translateMembership(item),
|
||||||
|
isSelected: item == curMembership
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const currentSelectedMembershipOption = this.membershipOptions.filter(item => item.isSelected)[0];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<tr className={this.state.highlight ? 'tr-highlight' : ''} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
<tr className={this.state.highlight ? 'tr-highlight' : ''} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||||
@@ -237,12 +256,12 @@ class Item extends Component {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<SysAdminUserMembershipEditor
|
<Selector
|
||||||
isTextMode={true}
|
isDropdownToggleShown={highlight}
|
||||||
isEditIconShow={isOpIconShown}
|
currentSelectedOption={currentSelectedMembershipOption}
|
||||||
currentStatus={item.is_org_staff ? 'is_org_staff' : 'not_is_org_staff'}
|
options={this.membershipOptions}
|
||||||
statusOptions={['is_org_staff', 'not_is_org_staff']}
|
selectOption={this.updateMembership}
|
||||||
onStatusChanged={this.updateMembership}
|
toggleItemFreezed={this.props.toggleItemFreezed}
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td>{`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}</td>
|
<td>{`${Utils.bytesToSize(item.quota_usage)} / ${item.quota_total > 0 ? Utils.bytesToSize(item.quota_total) : '--'}`}</td>
|
||||||
@@ -373,7 +392,7 @@ class OrgUsers extends Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
updateMembership = (email, membershipValue) => {
|
updateMembership = (email, membershipValue) => {
|
||||||
const isOrgStaff = membershipValue == 'is_org_staff';
|
const isOrgStaff = membershipValue == 'Admin';
|
||||||
seafileAPI.sysAdminUpdateOrgUser(this.props.orgID, email, 'is_org_staff', isOrgStaff).then(res => {
|
seafileAPI.sysAdminUpdateOrgUser(this.props.orgID, email, 'is_org_staff', isOrgStaff).then(res => {
|
||||||
let newUserList = this.state.userList.map(item => {
|
let newUserList = this.state.userList.map(item => {
|
||||||
if (item.email == email) {
|
if (item.email == email) {
|
||||||
|
Reference in New Issue
Block a user