import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { Utils } from '../../utils/utils'; import { gettext, siteRoot } from '../../utils/constants'; import { seafileAPI } from '../../utils/seafile-api'; import WikiMarkdownViewer from '../wiki-markdown-viewer'; const propTypes = { path: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired, hash: PropTypes.string, isDraft: PropTypes.bool, hasDraft: PropTypes.bool, goDraftPage: PropTypes.func.isRequired, isFileLoading: PropTypes.bool.isRequired, isFileLoadedErr: PropTypes.bool.isRequired, filePermission: PropTypes.bool, content: PropTypes.string, lastModified: PropTypes.string, latestContributor: PropTypes.string, onLinkClick: PropTypes.func.isRequired, }; class DirColumnFile extends React.Component { componentDidMount() { if (this.props.hash) { let hash = this.props.hash; setTimeout(function() { window.location.hash = hash; }, 500); } } 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'; }); } onOpenFile = (e) => { e.preventDefault(); let { path, repoID } = this.props; let newUrl = siteRoot + 'lib/' + repoID + '/file' + Utils.encodePath(path); window.open(newUrl, '_blank'); } goDraftPage = (e) => { e.preventDefault(); this.props.goDraftPage(); } render() { if (this.props.isFileLoadedErr) { return (
{gettext('File does not exist.')}
); } return ( {(!this.props.isDraft && this.props.hasDraft) &&
{gettext('This file is in draft stage.')} {gettext('View Draft')}
}
); } } DirColumnFile.propTypes = propTypes; export default DirColumnFile;