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, canGenerateShareLink } 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 RelatedFileDialogs from '../dialog/related-file-dialogs'; 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.string, 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, isRelatedFileDialogShow: false, showRelatedFileDialog: 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({ isRelatedFileDialogShow: true, showRelatedFileDialog: true, }); } toggleCancel = () => { this.setState({ isRelatedFileDialogShow: false, showRelatedFileDialog: false, }); } render() { let { filePermission } = this.props; let name = Utils.getFileName(this.props.path); let dirent = { name: name }; return (
{((filePermission === 'rw' || filePermission === 'cloud-edit') && !this.props.hasDraft) && ( )} {(filePermission === 'rw' && !this.props.isDraft && !this.props.hasDraft) && ( {gettext('Create a draft from this file, instead of editing it directly.')} )} {filePermission === 'rw' && ( {gettext('More')} {canGenerateShareLink && {gettext('Share')} } {gettext('Tags')} {gettext('Related Files')} )}
{this.state.isShareDialogShow && ( )} {this.state.isEditTagDialogShow && ( )} {this.state.showRelatedFileDialog && }
); } } ViewFileToolbar.propTypes = propTypes; export default ViewFileToolbar;