1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-13 13:50:07 +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:
llj
2023-11-24 18:57:31 +08:00
committed by GitHub
parent 29fa239cd0
commit e8048b6d4e
3 changed files with 29 additions and 94 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -9,7 +9,6 @@ import toaster from '../../../components/toast';
import EmptyTip from '../../../components/empty-tip';
import Loading from '../../../components/loading';
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 CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';
import OpMenu from '../../../components/dialog/op-menu';
@@ -163,8 +162,8 @@ class Item extends Component {
this.props.updateStatus(this.props.item.email, statusOption.value);
};
updateMembership= (membershipValue) => {
this.props.updateMembership(this.props.item.email, membershipValue);
updateMembership= (membershipOption) => {
this.props.updateMembership(this.props.item.email, membershipOption.value);
};
deleteUser = () => {
@@ -204,6 +203,15 @@ class Item extends Component {
}
};
translateMembership = (membership) => {
switch (membership) {
case 'Admin':
return gettext('Admin');
case 'Member':
return gettext('Member');
}
};
render() {
const { item } = this.props;
const { highlight, isOpIconShown, isDeleteDialogOpen, isResetPasswordDialogOpen } = this.state;
@@ -223,6 +231,17 @@ class Item extends Component {
});
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 (
<Fragment>
<tr className={this.state.highlight ? 'tr-highlight' : ''} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
@@ -237,12 +256,12 @@ class Item extends Component {
/>
</td>
<td>
<SysAdminUserMembershipEditor
isTextMode={true}
isEditIconShow={isOpIconShown}
currentStatus={item.is_org_staff ? 'is_org_staff' : 'not_is_org_staff'}
statusOptions={['is_org_staff', 'not_is_org_staff']}
onStatusChanged={this.updateMembership}
<Selector
isDropdownToggleShown={highlight}
currentSelectedOption={currentSelectedMembershipOption}
options={this.membershipOptions}
selectOption={this.updateMembership}
toggleItemFreezed={this.props.toggleItemFreezed}
/>
</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) => {
const isOrgStaff = membershipValue == 'is_org_staff';
const isOrgStaff = membershipValue == 'Admin';
seafileAPI.sysAdminUpdateOrgUser(this.props.orgID, email, 'is_org_staff', isOrgStaff).then(res => {
let newUserList = this.state.userList.map(item => {
if (item.email == email) {