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 }}',