From 949f3fc7b3e9fe5d1e7b1ee0ca4d9eb4a6476bb0 Mon Sep 17 00:00:00 2001 From: Michael An <37589122+Michael18811380328@users.noreply.github.com> Date: Mon, 25 Feb 2019 18:17:04 +0800 Subject: [PATCH] move share dialog (#2995) --- .../src/components/dialog/share-dialog.js | 7 +- frontend/src/markdown-editor.js | 76 ++++++++++--------- frontend/src/utils/constants.js | 2 +- seahub/templates/view_file_markdown.html | 1 + 4 files changed, 47 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/dialog/share-dialog.js b/frontend/src/components/dialog/share-dialog.js index efc1b1b831..6c4e286962 100644 --- a/frontend/src/components/dialog/share-dialog.js +++ b/frontend/src/components/dialog/share-dialog.js @@ -14,7 +14,10 @@ const propTypes = { itemName: PropTypes.string.isRequired, itemPath: PropTypes.string.isRequired, toggleDialog: PropTypes.func.isRequired, - repoID: PropTypes.string.isRequired + repoID: PropTypes.string.isRequired, + repoEncrypted: PropTypes.bool, + userPerm: PropTypes.string, + enableDirPrivateShare: PropTypes.bool, }; class ShareDialog extends React.Component { @@ -94,7 +97,7 @@ class ShareDialog extends React.Component { itemPath={this.props.itemPath} repoID={this.props.repoID} closeShareDialog={this.props.toggleDialog} - /> + /> } {enableUploadLink && diff --git a/frontend/src/markdown-editor.js b/frontend/src/markdown-editor.js index b7510d6989..0f4806eb4d 100644 --- a/frontend/src/markdown-editor.js +++ b/frontend/src/markdown-editor.js @@ -3,35 +3,17 @@ import SeafileEditor from '@seafile/seafile-editor'; import 'whatwg-fetch'; import { seafileAPI } from './utils/seafile-api'; import { Utils } from './utils/utils'; -import cookie from 'react-cookies'; import ModalPortal from './components/modal-portal'; -import { Modal } from 'reactstrap'; import EditFileTagDialog from './components/dialog/edit-filetag-dialog'; import ListRelatedFileDialog from './components/dialog/list-related-file-dialog'; import AddRelatedFileDialog from './components/dialog/add-related-file-dialog'; -import Dirent from './models/dirent'; -let repoID = window.app.pageOptions.repoID; -let repoName = window.app.pageOptions.repoName; -let filePath = window.app.pageOptions.filePath; -let fileName = window.app.pageOptions.fileName; -let siteRoot = window.app.config.siteRoot; -let domain = window.app.pageOptions.domain; -let protocol = window.app.pageOptions.protocol; -let mode = window.app.pageOptions.mode; -let draftID = window.app.pageOptions.draftID; -let reviewID = window.app.pageOptions.reviewID; -let reviewStatus = window.app.pageOptions.reviewStatus; -let isDraft = window.app.pageOptions.isDraft; -let hasDraft = window.app.pageOptions.hasDraft; -let draftFilePath = window.app.pageOptions.draftFilePath; -let shareLinkExpireDaysMin = window.app.pageOptions.shareLinkExpireDaysMin; -let shareLinkExpireDaysMax = window.app.pageOptions.shareLinkExpireDaysMax; -let userName = window.app.userInfo.username; -let dirPath = '/'; +import ShareDialog from './components/dialog/share-dialog'; -const serviceUrl = window.app.config.serviceUrl; -const seafileCollabServer = window.app.config.seafileCollabServer; +const { repoID, repoName, filePath, fileName, mode, draftID, reviewID, reviewStatus, draftFilePath, isDraft, hasDraft, shareLinkExpireDaysMin, shareLinkExpireDaysMax } = window.app.pageOptions; +const { siteRoot, serviceUrl, seafileCollabServer } = window.app.config; const userInfo = window.app.userInfo; +const userName = userInfo.username; +let dirPath = '/'; function getImageFileNameWithTimestamp() { var d = Date.now(); @@ -301,6 +283,7 @@ class MarkdownEditor extends React.Component { showEditFileTagDialog: false, showAddRelatedFileDialog: false, showMarkdownEditorDialog: false, + showShareLinkDialog: false, }; } @@ -310,6 +293,7 @@ class MarkdownEditor extends React.Component { showEditFileTagDialog: false, showAddRelatedFileDialog: false, showMarkdownEditorDialog: false, + showShareLinkDialog: false, }); } @@ -342,6 +326,12 @@ class MarkdownEditor extends React.Component { showMarkdownEditorDialog: true, }); break; + case 'share_link': + this.setState({ + showMarkdownEditorDialog: true, + showShareLinkDialog: true, + }); + break; default: return; } @@ -438,10 +428,9 @@ class MarkdownEditor extends React.Component { fileTagList={this.state.fileTagList} /> {this.state.showMarkdownEditorDialog && ( - - - { - this.state.showRelatedFileDialog && + + {this.state.showRelatedFileDialog && + - } - { - this.state.showEditFileTagDialog && + + } + {this.state.showEditFileTagDialog && + - } - { - this.state.showAddRelatedFileDialog && + + } + {this.state.showAddRelatedFileDialog && + - } - - + + } + {this.state.showShareLinkDialog && + + + + } + )} ); diff --git a/frontend/src/utils/constants.js b/frontend/src/utils/constants.js index 0d257a00d8..bb33b2d693 100644 --- a/frontend/src/utils/constants.js +++ b/frontend/src/utils/constants.js @@ -23,7 +23,7 @@ export const contactEmail = window.app.pageOptions.contactEmail; export const username = window.app.pageOptions.username; export const canAddRepo = window.app.pageOptions.canAddRepo; export const canGenerateShareLink = window.app.pageOptions.canGenerateShareLink; -export const canGenerateUploadLink = window.app.pageOptions.canGenerateUploadLink; +export const canGenerateUploadLink = window.app.pageOptions.canGenerateUploadLink ? true : false; export const canViewOrg = window.app.pageOptions.canViewOrg === 'True'; export const fileAuditEnabled = window.app.pageOptions.fileAuditEnabled ? true : false; export const enableFileComment = window.app.pageOptions.enableFileComment ? true : false; diff --git a/seahub/templates/view_file_markdown.html b/seahub/templates/view_file_markdown.html index 37cb05238b..8862b2556e 100644 --- a/seahub/templates/view_file_markdown.html +++ b/seahub/templates/view_file_markdown.html @@ -39,6 +39,7 @@ draftFilePath: '{{ draft_file_path }}', shareLinkExpireDaysMin: '{{ share_link_expire_days_min }}', shareLinkExpireDaysMax: '{{ share_link_expire_days_max }}', + canGenerateShareLink: {% if user.permissions.can_generate_share_link %} true {% else %} false {% endif %}, }, userInfo: { username: '{{ user.username }}',