1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-17 07:41:26 +00:00

Merge branch '6.3'

Conflicts:
	frontend/build/frontend/js/main.js
	frontend/build/frontend/js/main.js.map
	frontend/build/frontend/js/wiki.js
	frontend/build/frontend/js/wiki.js.map
	frontend/src/components/constance.js
	frontend/src/pages/wiki/main-panel.js
	frontend/src/pages/wiki/side-panel.js
	frontend/src/wiki.js
This commit is contained in:
ilearnit
2018-09-12 12:03:07 +08:00
117 changed files with 15135 additions and 14721 deletions

View File

@@ -1,4 +1,3 @@
let slug, repoID, serviceUrl, initialFilePath;
export const dirPath = '/';
export const gettext = window.gettext;
@@ -10,12 +9,10 @@ export const mediaUrl = window.app.config.mediaUrl;
export const siteTitle = window.app.config.siteTitle;
export const logoWidth = window.app.config.logoWidth;
export const logoHeight = window.app.config.logoHeight;
export const isPro = window.app.config.isPro === "True";
if (window.wiki) {
slug = window.wiki.config.slug;
repoID = window.wiki.config.repoId;
serviceUrl = window.wiki.config.serviceUrl;
initialFilePath = window.wiki.config.initial_file_path;
}
export { slug, repoID, serviceUrl, initialFilePath }
export const slug = window.wiki ? window.wiki.config.slug : '';
export const repoID = window.wiki ? window.wiki.config.repoId : '';
export const serviceUrl = window.wiki ? window.wiki.config.serviceUrl : '';
export const initialFilePath = window.wiki ? window.wiki.config.initial_file_path : '';
export const permission = window.wiki ? window.wiki.config.permission : '';

View File

@@ -6,6 +6,8 @@ import WikiOutline from './wiki-outline';
var URL = require('url-parse');
const gettext = window.gettext;
require('@seafile/seafile-editor/src/lib/code-hight-package');
const contentClass = "wiki-md-viewer-rendered-content";
@@ -181,7 +183,7 @@ class MarkdownViewer extends React.Component {
renderingContent={this.state.renderingContent} html={this.state.html}
onLinkClick={this.props.onLinkClick}
/>
<p id="wiki-page-last-modified">Last modified by {this.props.latestContributor}, <span>{this.props.lastModified}</span></p>
<p id="wiki-page-last-modified">{gettext("Last modified by")} {this.props.latestContributor}, <span>{this.props.lastModified}</span></p>
</div>
<div className="markdown-outline">
<WikiOutline

View File

@@ -59,7 +59,6 @@ class Rename extends React.Component {
render() {
let type = this.props.currentNode.type;
let preName = this.props.currentNode.name;
return (
<Modal isOpen={true} toggle={this.toggle}>
<ModalHeader toggle={this.toggle}>{type === 'file' ? gettext("Rename File") : gettext("Rename Folder") }</ModalHeader>

View File

@@ -1,101 +1,24 @@
import React from 'react'
import Delete from './menu-dialog/delete-dialog';
import CreateFlieFolder from './menu-dialog/create-fileforder-dialog';
import Rename from './menu-dialog/rename-dialog';
const gettext = window.gettext;
class NodeMenu extends React.Component {
constructor(props) {
super(props);
this.state = {
showDelete: false,
showAddFileFolder: false,
showRename: false,
isFile: false
};
}
toggleDelete = () => {
this.setState({showDelete: !this.state.showDelete});
this.props.onHideContextMenu();
}
toggleAddFileFolder = (ev, flag) => {
if(flag){
this.setState({
showAddFileFolder: !this.state.showAddFileFolder,
isFile: true
});
} else {
this.setState({
showAddFileFolder: !this.state.showAddFileFolder,
isFile: false
})
}
this.props.onHideContextMenu();
this.props.toggleAddFileFolder(flag);
}
toggleRename = () => {
this.setState({showRename: !this.state.showRename});
this.props.onHideContextMenu();
this.props.toggleRename();
}
onDelete = () => {
this.setState({showDelete: !this.state.showDelete});
this.props.onDeleteNode();
}
deleteCancel = () => {
this.setState({showDelete: !this.state.showDelete});
}
onAddFile = (filePath) => {
this.setState({
showAddFileFolder: !this.state.showAddFileFolder,
isFile: false
});
this.props.onAddFileNode(filePath);
}
addFileCancel = () => {
this.setState({
showAddFileFolder: !this.state.showAddFileFolder,
isFile: false
});
}
onAddFolder = (dirPath) => {
this.setState({
showAddFileFolder: !this.state.showAddFileFolder,
isFile: false
});
this.props.onAddFolderNode(dirPath);
}
addFolderCancel = () => {
this.setState({
showAddFileFolder: !this.state.showAddFileFolder,
isFile: false
});
}
onRename = (newName) => {
this.setState({showRename: !this.state.showRename});
this.props.onRenameNode(newName);
}
renameCancel = () => {
this.setState({showRename: !this.state.showRename});
toggleDelete = () => {
this.props.toggleDelete();
}
renderNodeMenu() {
let style = null;
let position = this.props.menuPosition;
if (this.props.isShowMenu) {
style = {position: "fixed",left: position.left, top: position.top, display: 'block'};
}
let style = {position: "fixed",left: position.left, top: position.top, display: 'block'};
if (this.props.currentNode.type === "dir") {
@@ -134,30 +57,6 @@ class NodeMenu extends React.Component {
return (
<div className="node-menu-module">
{this.renderNodeMenu()}
{this.state.showDelete &&
<Delete
currentNode={this.props.currentNode}
handleSubmit={this.onDelete}
toggleCancel={this.deleteCancel}
/>
}
{this.state.showAddFileFolder &&
<CreateFlieFolder
isFile={this.state.isFile}
currentNode={this.props.currentNode}
onAddFolder={this.onAddFolder}
addFolderCancel={this.addFolderCancel}
onAddFile={this.onAddFile}
addFileCancel={this.addFileCancel}
/>
}
{this.state.showRename &&
<Rename
currentNode={this.props.currentNode}
onRename={this.onRename}
toggleCancel={this.renameCancel}
/>
}
</div>
)
}

View File

@@ -1,5 +1,5 @@
import React, { Component } from 'react';
import { serviceUrl } from '../constance';
class TreeDirList extends React.Component {
constructor(props) {
@@ -18,7 +18,7 @@ class TreeDirList extends React.Component {
return (
<tr className='row' onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}>
<td className="dirent-icon" style={{width: "5%"}}>
<img src={node.type === "dir" ? "/media/img/folder-192.png" : "/media/img/file/192/txt.png"}></img>
<img src={node.type === "dir" ? serviceUrl + "/media/img/folder-192.png" : serviceUrl + "/media/img/file/192/txt.png"}></img>
</td>
<td style={{width: "60%"}}>
<a className="custom-link" onClick={this.onMainNodeClick}>{node.name}</a>

View File

@@ -1,5 +1,6 @@
import React from 'react';
import MenuControl from '../menu-component/node-menu-control'
import MenuControl from '../menu-component/node-menu-control';
import { permission } from '../constance';
function sortByType(a, b) {
if (a.type == "dir" && b.type != "dir") {
@@ -110,7 +111,6 @@ class TreeNodeView extends React.Component {
paddingLeft={this.props.paddingLeft}
treeView={this.props.treeView}
isNodeItemFrezee={this.props.isNodeItemFrezee}
permission={this.props.permission}
currentFilePath={this.props.currentFilePath}
onDirCollapse={this.props.onDirCollapse}
/>
@@ -124,7 +124,7 @@ class TreeNodeView extends React.Component {
}
renderMenuController() {
if (this.props.permission === "rw") {
if (permission === "True") {
let isShow = (this.props.node.path === this.props.currentFilePath);
return (
<div className="right-icon">

View File

@@ -1,5 +1,9 @@
import Node from './node';
import moment from 'moment';
import { bytesToSize } from '../utils';
const lang = window.app.config.lang;
moment.locale(lang)
class Tree {
@@ -90,8 +94,7 @@ class Tree {
return findNode;
}
setNodeToActivated(node) {
this.setTreeToUnActivated();
expandNode(node) {
let treeNode = this.findNodeFromTree(node);
if (treeNode) {
treeNode.isExpanded = true;
@@ -104,7 +107,16 @@ class Tree {
return false;
}
setTreeToUnActivated() {
collapseNode(node) {
let treeNode = this.findNodeFromTree(node);
if (treeNode) {
treeNode.isExpanded = false;
return true;
}
return false;
}
resetTreeState() {
function cb(treeNode) {
treeNode.isExpanded = false;
return false;
@@ -172,7 +184,7 @@ class Tree {
var node = new Node({
name: model.name,
type: model.type,
size: model.size,
size: bytesToSize(model.size),
last_update_time: moment.unix(model.last_update_time).fromNow(),
isExpanded: false
});
@@ -200,7 +212,7 @@ class Tree {
let node = new Node({
name: nodeObj.name,
type: nodeObj.type,
size: nodeObj.size,
size: bytesToSize(nodeObj.size),
last_update_time: moment.unix(nodeObj.last_update_time).fromNow(),
isExpanded: false
});
@@ -226,7 +238,7 @@ class Tree {
var node = new Node({
name: node.name,
type: node.type,
size: node.size,
size: bytesToSize(node.size),
last_update_time: moment.unix(node.last_update_time).fromNow(),
isExpanded: false
});