import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { DropdownToggle, Dropdown, DropdownMenu, DropdownItem, Tooltip } from 'reactstrap'; import { Utils } from '../../utils/utils'; import { gettext, siteRoot } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import ModalPotal from '../modal-portal'; import ShareDialog from '../dialog/share-dialog'; import EditFileTagDialog from '../dialog/edit-filetag-dialog'; import ListRelatedFileDialog from '../dialog/list-related-file-dialog'; import AddRelatedFileDialog from '../dialog/add-related-file-dialog'; const propTypes = { path: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired, userPerm: PropTypes.string.isRequired, repoEncrypted: PropTypes.bool.isRequired, enableDirPrivateShare: PropTypes.bool.isRequired, isGroupOwnedRepo: PropTypes.bool.isRequired, filePermission: PropTypes.bool.isRequired, isDraft: PropTypes.bool.isRequired, hasDraft: PropTypes.bool.isRequired, fileTags: PropTypes.array.isRequired, relatedFiles: PropTypes.array.isRequired, onFileTagChanged: PropTypes.func.isRequired, onRelatedFileChange: PropTypes.func.isRequired, }; class ViewFileToolbar extends React.Component { constructor(props) { super(props); this.state = { isDraftMessageShow: false, isMoreMenuShow: false, isShareDialogShow: false, isEditTagDialogShow: false, isListRelatedFileDialogShow: false, isAddRelatedFileDialogShow: false, }; } onEditClick = (e) => { e.preventDefault(); let { path, repoID } = this.props; let url = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(path) + '?mode=edit'; window.open(url); } onNewDraft = (e) => { e.preventDefault(); let { path, repoID } = this.props; seafileAPI.createDraft(repoID, path).then(res => { window.location.href = siteRoot + 'lib/' + res.data.origin_repo_id + '/file' + res.data.draft_file_path + '?mode=edit'; }); } onDraftHover = () => { this.setState({isDraftMessageShow: !this.state.isDraftMessageShow}); } toggleMore = () => { this.setState({isMoreMenuShow: !this.state.isMoreMenuShow}); } onShareToggle = () => { this.setState({isShareDialogShow: !this.state.isShareDialogShow}); } onEditFileTagToggle = () => { this.setState({isEditTagDialogShow: !this.state.isEditTagDialogShow}); } onListRelatedFileToggle = () => { this.setState({isListRelatedFileDialogShow: !this.state.isListRelatedFileDialogShow}) } onAddRelatedFileToggle = () => { this.setState({ isListRelatedFileDialogShow: !this.state.isListRelatedFileDialogShow, isAddRelatedFileDialogShow: !this.state.isAddRelatedFileDialogShow, }); } render() { let name = Utils.getFileName(this.props.path); let dirent = { name: name }; return (
{(this.props.filePermission && !this.props.hasDraft) && ( )} {/* default have read priv */} {(!this.props.isDraft && !this.props.hasDraft) && ( {gettext('Create a draft from this file, instead of editing it directly.')} )} {this.props.filePermission && ( {gettext('More')} {gettext('Share')} {gettext('Edit File Tag')} {gettext('Add Relative File')} )}
{this.state.isShareDialogShow && ( )} {this.state.isEditTagDialogShow && ( )} {this.state.isListRelatedFileDialogShow && } {this.state.isAddRelatedFileDialogShow && ( )}
); } } ViewFileToolbar.propTypes = propTypes; export default ViewFileToolbar;