diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 28fb3d1655..4534840ba8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -5282,7 +5282,7 @@ }, "git-up": { "version": "1.2.1", - "resolved": "http://registry.npmjs.org/git-up/-/git-up-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-1.2.1.tgz", "integrity": "sha1-JkSAoAax2EJhrB/gmjpRacV+oZ0=", "requires": { "is-ssh": "^1.0.0", @@ -5291,7 +5291,7 @@ }, "git-url-parse": { "version": "5.0.1", - "resolved": "http://registry.npmjs.org/git-url-parse/-/git-url-parse-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-5.0.1.tgz", "integrity": "sha1-/j15xnRq4FBIz6UIyB553du6OEM=", "requires": { "git-up": "^1.0.0" @@ -7844,7 +7844,7 @@ }, "node-status-codes": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" }, "noop6": { @@ -8151,7 +8151,7 @@ }, "package.json": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/package.json/-/package.json-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/package.json/-/package.json-2.0.1.tgz", "integrity": "sha1-+IYFnSpJ7QduZIg2ldc7K0bSHW0=", "requires": { "git-package-json": "^1.4.0", @@ -8161,7 +8161,7 @@ "dependencies": { "got": { "version": "5.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-5.7.1.tgz", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", "requires": { "create-error-class": "^3.0.1", @@ -8183,7 +8183,7 @@ }, "package-json": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", "requires": { "got": "^5.0.0", @@ -10819,9 +10819,9 @@ } }, "seafile-js": { - "version": "0.2.57", - "resolved": "https://registry.npmjs.org/seafile-js/-/seafile-js-0.2.57.tgz", - "integrity": "sha512-LVZ63u9rp5UnKuifzlGb3DfHv9F5C/AANgii53cwHfcAJPI3Fws/dHQaWZU9c1kTjgf4e15lltQI+6ch4MKw0A==", + "version": "0.2.58", + "resolved": "https://registry.npmjs.org/seafile-js/-/seafile-js-0.2.58.tgz", + "integrity": "sha512-4/H5SLSZo4qBE3D9sdHyZqBtt3NZLEOhL+xSFcivE3lnCpITTaPaQZUl7Icx/PXHjD6CqIlM6EDKJgJz9m0BRA==", "requires": { "axios": "^0.18.0", "form-data": "^2.3.2", diff --git a/frontend/package.json b/frontend/package.json index 852f0a44bd..8fb4f90d8e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -32,7 +32,7 @@ "react-moment": "^0.7.9", "react-select": "^2.1.1", "reactstrap": "^6.4.0", - "seafile-js": "^0.2.57", + "seafile-js": "^0.2.58", "socket.io-client": "^2.2.0", "sw-precache-webpack-plugin": "0.11.4", "unified": "^7.0.0", diff --git a/frontend/src/pages/repo-wiki-mode/main-panel.js b/frontend/src/pages/repo-wiki-mode/main-panel.js index b5521941a4..429e5ed1d3 100644 --- a/frontend/src/pages/repo-wiki-mode/main-panel.js +++ b/frontend/src/pages/repo-wiki-mode/main-panel.js @@ -214,83 +214,81 @@ class MainPanel extends Component { )}
- {!this.props.pathExist ? - ErrMessage : + {!this.props.pathExist && ErrMessage } + {(this.props.pathExist && this.props.isViewFile) && ( + + + {this.props.reviewStatus === 'open' && +
+
+ {gettext('This file is in review stage')} + {gettext('View Review')} +
+
+ } + {(!this.props.isDraft && this.props.hasDraft && this.props.reviewStatus !== 'open') && +
+
+ {gettext('This file is in draft stage.')} + {gettext('Edit Draft')} +
+
+ } +
+
+ )} + {(this.props.pathExist && !this.props.isViewFile) && ( - {this.props.isViewFile ? - - - {this.props.reviewStatus === 'open' && -
-
- {gettext('This file is in review stage')} - {gettext('View Review')} -
-
- } - {(!this.props.isDraft && this.props.hasDraft && this.props.reviewStatus !== 'open') && -
-
- {gettext('This file is in draft stage.')} - {gettext('Edit Draft')} -
-
- } -
-
: - - {showRepoInfoBar && ( - - )} - - this.uploader = uploader} - dragAndDrop={true} - path={this.props.path} - repoID={repoID} - direntList={this.props.direntList} - onFileUploadSuccess={this.onFileUploadSuccess} - /> - - } + {showRepoInfoBar && ( + + )} + + this.uploader = uploader} + dragAndDrop={true} + path={this.props.path} + repoID={repoID} + direntList={this.props.direntList} + onFileUploadSuccess={this.onFileUploadSuccess} + />
- } + )}
{this.state.isDirentDetailShow && ( diff --git a/frontend/src/pages/repo-wiki-mode/side-panel.js b/frontend/src/pages/repo-wiki-mode/side-panel.js index d62d0a7b82..8cf4109f6a 100644 --- a/frontend/src/pages/repo-wiki-mode/side-panel.js +++ b/frontend/src/pages/repo-wiki-mode/side-panel.js @@ -1,9 +1,11 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import { gettext, siteRoot, logoPath, mediaUrl, siteTitle, logoWidth, logoHeight } from '../../utils/constants'; +import { gettext } from '../../utils/constants'; +import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap'; import TreeView from '../../components/tree-view/tree-view'; import NodeMenu from '../../components/tree-view/node-menu'; -import MenuControl from '../../components/menu-control'; +import Logo from '../../components/logo'; +import ModalPortal from '../../components/modal-portal'; import Delete from '../../components/dialog/delete-dialog'; import Rename from '../../components/dialog/rename-dialog'; import CreateFolder from '../../components/dialog/create-folder-dialog'; @@ -37,29 +39,29 @@ class SidePanel extends Component { }, isLoadFailed: false, isMenuIconShow: false, - showDelete: false, - showFile: false, - showFolder: false, - showRename: false, - isFile: false + isHeaderMenuShow: false, + isDeleteDialogShow: false, + isAddFileDialogShow: false, + isAddFolderDialogShow: false, + isRenameDialogShow: false, }; - this.searchedPath = null; - } - - closeSide = () => { - this.props.onCloseSide(); } onMouseEnter = () => { - this.setState({ - isMenuIconShow: true - }); + this.setState({isMenuIconShow: true}); } onMouseLeave = () => { - this.setState({ - isMenuIconShow: false - }); + this.setState({isMenuIconShow: false}); + } + + onDropdownToggleClick = (e) => { + e.preventDefault(); + this.toggleOperationMenu(); + } + + toggleOperationMenu = () => { + this.setState({isHeaderMenuShow: !this.state.isHeaderMenuShow}); } onNodeClick = (node) => { @@ -79,19 +81,6 @@ class SidePanel extends Component { }); } - onHeadingMenuClick = (e) => { - e.nativeEvent.stopImmediatePropagation(); - let node = this.props.treeData.root; - let left = e.clientX - 8*16; - let top = e.clientY + 10; - let position = Object.assign({},this.state.menuPosition, {left: left, top: top}); - this.setState({ - isShowMenu: !this.state.isShowMenu, - currentNode: node, - menuPosition: position - }); - } - onHideContextMenu = () => { if (!this.state.isShowMenu) { return; @@ -102,44 +91,50 @@ class SidePanel extends Component { }); } - toggleAddFile = () => { - this.setState({showFile: !this.state.showFile}); + onAddFileToggle = () => { + this.setState({ + isMenuIconShow: false, + isAddFileDialogShow: !this.state.isAddFileDialogShow + }); this.onHideContextMenu(); } - toggleAddFolder = () => { - this.setState({showFolder: !this.state.showFolder}); + onAddFolderToggle = () => { + this.setState({ + isMenuIconShow: false, + isAddFolderDialogShow: !this.state.isAddFolderDialogShow + }); this.onHideContextMenu(); } - toggleRename = () => { - this.setState({showRename: !this.state.showRename}); + onRenameToggle = () => { + this.setState({isRenameDialogShow: !this.state.isRenameDialogShow}); this.onHideContextMenu(); } - toggleDelete = () => { - this.setState({showDelete: !this.state.showDelete}); + onDeleteToggle = () => { + this.setState({isDeleteDialogShow: !this.state.isDeleteDialogShow}); this.onHideContextMenu(); } onAddFolderNode = (dirPath) => { - this.setState({showFolder: !this.state.showFolder}); + this.setState({isAddFolderDialogShow: !this.state.isAddFolderDialogShow}); this.props.onAddFolderNode(dirPath); } onAddFileNode = (filePath, isDraft) => { - this.setState({showFile: !this.state.showFile}); + this.setState({isAddFileDialogShow: !this.state.isAddFileDialogShow}); this.props.onAddFileNode(filePath, isDraft); } onRenameNode = (newName) => { - this.setState({showRename: !this.state.showRename}); + this.setState({isRenameDialogShow: !this.state.isRenameDialogShow}); let node = this.state.currentNode; this.props.onRenameNode(node, newName); } onDeleteNode = () => { - this.setState({showDelete: !this.state.showDelete}); + this.setState({isDeleteDialogShow: !this.state.isDeleteDialogShow}); let node = this.state.currentNode; this.props.onDeleteNode(node); } @@ -157,97 +152,109 @@ class SidePanel extends Component { } addFolderCancel = () => { - this.setState({showFolder: !this.state.showFolder}); + this.setState({isAddFolderDialogShow: !this.state.isAddFolderDialogShow}); } addFileCancel = () => { - this.setState({showFile: !this.state.showFile}); + this.setState({isAddFileDialogShow: !this.state.isAddFileDialogShow}); } deleteCancel = () => { - this.setState({showDelete: !this.state.showDelete}); + this.setState({isDeleteDialogShow: !this.state.isDeleteDialogShow}); } renameCancel = () => { - this.setState({showRename: !this.state.showRename}); + this.setState({isRenameDialogShow: !this.state.isRenameDialogShow}); } render() { return (
- - +
+ {this.state.isDeleteDialogShow && ( + - } - {this.state.showFile && + + )} + {this.state.isAddFileDialogShow && ( + - } - {this.state.showFolder && + + )} + {this.state.isAddFolderDialogShow && ( + - } - {this.state.showRename && + + )} + {this.state.isRenameDialogShow && ( + - } -
- + + )} ); }