diff --git a/frontend/src/components/file-view/file-toolbar.js b/frontend/src/components/file-view/file-toolbar.js index 7a12ab5dd0..fd17d708f1 100644 --- a/frontend/src/components/file-view/file-toolbar.js +++ b/frontend/src/components/file-view/file-toolbar.js @@ -54,10 +54,6 @@ class FileToolbar extends React.Component { }); } - openFileViaClient = () => { - location.href = `seafile://openfile?repo_id=${encodeURIComponent(repoID)}&path=${encodeURIComponent(filePath)}`; - } - render() { const { isLocked, lockedByMe } = this.props; const { moreDropdownOpen } = this.state; diff --git a/frontend/src/components/toolbar/markdown-viewer-toolbar.js b/frontend/src/components/toolbar/markdown-viewer-toolbar.js index ad157d252c..c97d4eacf4 100644 --- a/frontend/src/components/toolbar/markdown-viewer-toolbar.js +++ b/frontend/src/components/toolbar/markdown-viewer-toolbar.js @@ -6,6 +6,7 @@ import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Tooltip } from 'r import FileInfo from '@seafile/seafile-editor/dist/components/topbar-component/file-info'; const { seafileCollabServer } = window.app.config; +const { canDownloadFile } = window.app.pageOptions; const propTypes = { isDocs: PropTypes.bool.isRequired, @@ -62,6 +63,10 @@ class MoreMenu extends React.PureComponent { this.setState({ dropdownOpen:!this.state.dropdownOpen }); } + downloadFile = () => { + location.href = '?dl=1'; + } + render() { const editorMode = this.props.editorMode; const isSmall = this.props.isSmallScreen; @@ -77,13 +82,18 @@ class MoreMenu extends React.PureComponent { {gettext('Switch to plain text editor')}} {(!this.props.readOnly && editorMode === 'plain') && {gettext('Switch to rich text editor')}} + {!isSmall && this.props.showFileHistory && + {gettext('History')}} {(this.props.openDialogs && editorMode === 'rich') && {gettext('Help')} } - {isSmall && canGenerateShareLink && {gettext('Share')}} {isSmall && {gettext('Open parent directory')}} + {isSmall && canGenerateShareLink && {gettext('Share')}} {(isSmall && this.props.showFileHistory) && - {gettext('File History')} + {gettext('History')} + } + {isSmall && canDownloadFile && + {gettext('Download')} } @@ -100,6 +110,15 @@ class MarkdownViewerToolbar extends React.Component { super(props); } + downloadFile = () => { + location.href = '?dl=1'; + } + + openFileViaClient = () => { + const { repoID, path } = this.props.fileInfo; + location.href = `seafile://openfile?repo_id=${encodeURIComponent(repoID)}&path=${encodeURIComponent(path)}`; + } + render() { let { contentChanged, saving, isLocked, lockedByMe } = this.props; let canPublishDraft = this.props.fileInfo.permission == 'rw'; @@ -160,10 +179,6 @@ class MarkdownViewerToolbar extends React.Component { } - { - this.props.showFileHistory && - } { saving ? @@ -171,12 +186,30 @@ class MarkdownViewerToolbar extends React.Component { } + {canDownloadFile && ( + + )} + {this.props.fileInfo.permission == 'rw' && + + } diff --git a/seahub/templates/markdown_file_view_react.html b/seahub/templates/markdown_file_view_react.html index 7a5f38c3e8..e587a68c07 100644 --- a/seahub/templates/markdown_file_view_react.html +++ b/seahub/templates/markdown_file_view_react.html @@ -56,6 +56,7 @@ isLocked: {% if file_locked %}true{% else %}false{% endif %}, lockedByMe: {% if locked_by_me %}true{% else %}false{% endif %}, canLockUnlockFile: {% if can_lock_unlock_file %}true{% else %}false{% endif %}, + canDownloadFile: {% if can_download_file %}true{% else %}false{% endif %}, }, userInfo: { username: '{{ user.username }}',