import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import MediaQuery from 'react-responsive'; import { gettext, repoID, slug, siteRoot, username } from '../../utils/constants'; import CommonToolbar from '../../components/toolbar/common-toolbar'; import WikiMarkdownViewer from '../../components/wiki-markdown-viewer'; import WikiDirListView from '../../components/wiki-dir-list-view/wiki-dir-list-view'; import Loading from '../../components/loading'; import { Utils } from '../../utils/utils'; import Search from '../../components/search/search'; const propTypes = { path: PropTypes.string.isRequired, pathExist: PropTypes.bool.isRequired, isViewFile: PropTypes.bool.isRequired, isDataLoading: PropTypes.bool.isRequired, content: PropTypes.string, permission: PropTypes.string, lastModified: PropTypes.string, latestContributor: PropTypes.string, direntList: PropTypes.array.isRequired, onMenuClick: PropTypes.func.isRequired, onSearchedClick: PropTypes.func.isRequired, onMainNavBarClick: PropTypes.func.isRequired, onDirentClick: PropTypes.func.isRequired, onLinkClick: PropTypes.func.isRequired, }; class MainPanel extends Component { onMenuClick = () => { this.props.onMenuClick(); } onEditClick = (e) => { e.preventDefault(); let url = siteRoot + 'lib/' + repoID + '/file' + this.props.path + '?mode=edit'; window.open(url); } onMainNavBarClick = (e) => { let path = Utils.getEventData(e, 'path'); this.props.onMainNavBarClick(path); } renderNavPath = () => { let paths = this.props.path.split('/'); let nodePath = ''; let pathElem = paths.map((item, index) => { if (item === '') { return; } if (index === (paths.length - 1)) { return ( /{item} ); } else { nodePath += '/' + item; return ( / {item} ); } }); return pathElem; } render() { const errMessage = (
{gettext('Folder does not exist.')}
); return (
{!username &&
} {username && (
{this.props.permission === 'rw' && } {this.props.permission === 'rw' && }
)}
{slug} {this.renderNavPath()}
{!this.props.pathExist && errMessage} {this.props.pathExist && this.props.isDataLoading && } {(this.props.pathExist && !this.props.isDataLoading && this.props.isViewFile) && ( )} {(!this.props.isDataLoading && !this.props.isViewFile) && ( )}
); } } MainPanel.propTypes = propTypes; export default MainPanel;