import React, {Fragment} from 'react'; import PropTypes from 'prop-types'; import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Nav, NavItem, NavLink, TabContent, TabPane } from 'reactstrap'; import makeAnimated from 'react-select/animated'; import { seafileAPI } from '../../utils/seafile-api'; import {gettext, isPro, orgID} from '../../utils/constants'; import { Utils } from '../../utils/utils'; import toaster from '../toast'; import UserSelect from '../user-select'; import { SeahubSelect } from '../common/select'; import '../../css/transfer-dialog.css'; const propTypes = { itemName: PropTypes.string.isRequired, toggleDialog: PropTypes.func.isRequired, submit: PropTypes.func.isRequired, canTransferToDept: PropTypes.bool, isOrgAdmin: PropTypes.bool, isSysAdmin: PropTypes.bool, }; class TransferDialog extends React.Component { constructor(props) { super(props); this.state = { selectedOption: null, errorMsg: [], transferToUser: true, transferToGroup: false, activeTab: 'transUser' }; this.options = []; } handleSelectChange = (option) => { this.setState({ selectedOption: option }); }; submit = () => { let user = this.state.selectedOption; this.props.submit(user); }; componentDidMount() { if (this.props.isOrgAdmin) { seafileAPI.orgAdminListDepartments(orgID).then((res) => { for (let i = 0; i < res.data.length; i++) { let obj = {}; obj.value = res.data[i].name; obj.email = res.data[i].email; obj.label = res.data[i].name; this.options.push(obj); } }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); } else if (this.props.isSysAdmin) { seafileAPI.sysAdminListDepartments().then((res) => { for (let i = 0; i < res.data.length; i++) { let obj = {}; obj.value = res.data[i].name; obj.email = res.data[i].email; obj.label = res.data[i].name; this.options.push(obj); } }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); } else { seafileAPI.listDepartments().then((res) => { for (let i = 0; i < res.data.length; i++) { let obj = {}; obj.value = res.data[i].name; obj.email = res.data[i].email; obj.label = res.data[i].name; this.options.push(obj); } }).catch(error => { let errMessage = Utils.getErrorMsg(error); toaster.danger(errMessage); }); } } onClick = () => { this.setState({ transferToUser: !this.state.transferToUser, }); }; toggle = (tab) => { if (this.state.activeTab !== tab) { this.setState({ activeTab: tab }); } }; renderTransContent = () => { let activeTab = this.state.activeTab; let canTransferToDept = true; if (this.props.canTransferToDept != undefined) { canTransferToDept = this.props.canTransferToDept; } return (
{isPro && canTransferToDept && }
); }; render() { const { itemName: repoName } = this.props; let title = gettext('Transfer Library {library_name}'); title = title.replace('{library_name}', '' + Utils.HTMLescape(repoName) + ''); return ( {this.renderTransContent()} ); } } TransferDialog.propTypes = propTypes; export default TransferDialog;