diff --git a/frontend/src/pages/wiki/side-panel.js b/frontend/src/pages/wiki/side-panel.js
index 256281f880..5e80fa3061 100644
--- a/frontend/src/pages/wiki/side-panel.js
+++ b/frontend/src/pages/wiki/side-panel.js
@@ -1,9 +1,10 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
-import { gettext, siteRoot, logoPath, mediaUrl, siteTitle, logoWidth, logoHeight, repoID } from '../../utils/constants';
+import { Dropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap';
+import { gettext, siteRoot, repoID } from '../../utils/constants';
+import Logo from '../../components/logo';
import TreeView from '../../components/tree-view/tree-view';
import NodeMenu from '../../components/tree-view/node-menu';
-import MenuControl from '../../components/menu-control';
import Delete from '../../components/dialog/delete-dialog';
import Rename from '../../components/dialog/rename-dialog';
import CreateFolder from '../../components/dialog/create-folder-dialog';
@@ -43,28 +44,41 @@ class SidePanel extends Component {
},
isLoadFailed: false,
isMenuIconShow: false,
- showDelete: false,
- showFile: false,
- showFolder: false,
- showRename: false,
+ isHeaderMenuShow: false,
+ isDeleteDialogShow: false,
+ isAddFileDialogShow: false,
+ isAddFolderDialogShow: false,
+ isRenameDialogShow: false,
};
- this.searchedPath = null;
}
- closeSide = () => {
- this.props.onCloseSide();
+ componentDidMount() {
+ document.addEventListener('click', this.onHideContextMenu);
+ }
+
+ componentWillReceiveProps(nextProps) {
+ this.setState({currentNode: nextProps.changedNode});
+ }
+
+ componentWillUnmount() {
+ document.removeEventListener('click', this.onHideContextMenu);
}
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 = (e, node) => {
@@ -84,19 +98,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;
@@ -107,76 +108,62 @@ class SidePanel extends Component {
});
}
- toggleAddFile = () => {
- this.setState({showFile: !this.state.showFile});
+ onAddFolderToggle = () => {
+ this.setState({isAddFolderDialogShow: !this.state.isAddFolderDialogShow});
this.onHideContextMenu();
}
- toggleAddFolder = () => {
- this.setState({showFolder: !this.state.showFolder});
+ onAddFileToggle = () => {
+ this.setState({isAddFileDialogShow: !this.state.isAddFileDialogShow});
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) => {
- this.setState({showFile: !this.state.showFile});
+ this.setState({isAddFileDialogShow: !this.state.isAddFileDialogShow});
this.props.onAddFileNode(filePath);
}
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);
}
- componentDidMount() {
- document.addEventListener('click', this.onHideContextMenu);
- }
-
- componentWillReceiveProps(nextProps) {
- this.setState({
- currentNode: nextProps.changedNode
- });
- }
-
- componentWillUnmount() {
- document.removeEventListener('click', this.onHideContextMenu);
- }
-
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});
}
onEditClick = (e) => {
@@ -188,100 +175,114 @@ class SidePanel extends Component {
// todo
}
+ renderIndexView = () => {
+ return (
+
+ {gettext('Contents')}
+ {this.props.indexPermission === 'rw' &&
+
+ }
+
+
+ {gettext('Pages')}
+
+