1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-05 00:43:53 +00:00

Wiki bug repair (#2492)

This commit is contained in:
杨顺强
2018-11-01 18:40:18 +08:00
committed by Daniel Pan
parent 4cc735cf1f
commit c93e8aa603
10 changed files with 60 additions and 28 deletions

View File

@@ -22,6 +22,8 @@ const propTypes = {
onDirentItemCopy: PropTypes.func.isRequired,
onItemDetails: PropTypes.func.isRequired,
updateViewList: PropTypes.func.isRequired,
currentRepo: PropTypes.object,
isRepoOwner: PropTypes.bool,
};
class DirentListItem extends React.Component {
@@ -184,12 +186,12 @@ class DirentListItem extends React.Component {
}
onRenameMenuItemClick = () => {
this.props.onRenameMenuItemClick(this.props.dirent);
this.setState({
isOperationShow: false,
isItemMenuShow: false,
isRenameing: true,
});
this.props.onRenameMenuItemClick(this.props.dirent);
}
onRenameConfirm = (newName) => {
@@ -349,6 +351,8 @@ class DirentListItem extends React.Component {
dirent={this.props.dirent}
menuPosition={this.state.menuPosition}
onMenuItemClick={this.onItemMenuItemClick}
currentRepo={this.props.currentRepo}
isRepoOwner={this.props.isRepoOwner}
/>
}
</div>

View File

@@ -20,6 +20,8 @@ const propTypes = {
onItemDetails: PropTypes.func.isRequired,
updateViewList: PropTypes.func.isRequired,
isDirentListLoading: PropTypes.bool.isRequired,
isRepoOwner: PropTypes.bool,
currentRepo: PropTypes.object,
};
class DirentListView extends React.Component {
@@ -159,6 +161,8 @@ class DirentListView extends React.Component {
key={index}
dirent={dirent}
filePath={this.props.filePath}
currentRepo={this.props.currentRepo}
isRepoOwner={this.props.isRepoOwner}
onItemClick={this.props.onItemClick}
onRenameMenuItemClick={this.onRenameMenuItemClick}
onItemDelete={this.props.onItemDelete}

View File

@@ -16,13 +16,14 @@ class DirentMenuItem extends React.Component {
}
render() {
let operationName = gettext(this.props.item);
let operation = this.props.item;
let operationMessage = gettext(operation);
return (
<Fragment>
{
operationName !== 'Divider' ?
<li className="dropdown-item operation-menu-item" data-type={operationName} onClick={this.onClick}>
<span className="user-select-none" data-type={operationName} title={operationName} aria-label={operationName}>{operationName}</span>
operation !== 'Divider' ?
<li className="dropdown-item operation-menu-item" data-type={operation} onClick={this.onClick}>
<span className="user-select-none" data-type={operation} title={operationMessage} aria-label={operationMessage}>{operationMessage}</span>
</li> :
<li className="dropdown-divider"></li>
}

View File

@@ -1,14 +1,14 @@
import React from 'react';
import PropTypes from 'prop-types';
import { seafileAPI } from '../../utils/seafile-api';
import { repoID, isPro, enableFileComment, fileAuditEnabled, folderPermEnabled} from '../../utils/constants';
import Repo from '../../models/repo';
import { isPro, enableFileComment, fileAuditEnabled, folderPermEnabled} from '../../utils/constants';
import DirentMenuItem from './dirent-menu-item';
const propTypes = {
dirent: PropTypes.object.isRequired,
menuPosition: PropTypes.object.isRequired,
onMenuItemClick: PropTypes.func.isRequired,
currentRepo: PropTypes.object.isRequired,
isRepoOwner: PropTypes.bool.isRequired,
};
class DirentMenu extends React.Component {
@@ -16,32 +16,25 @@ class DirentMenu extends React.Component {
constructor(props) {
super(props);
this.state = {
repo: null,
menuList: [],
};
this.is_repo_owner = false;
}
componentDidMount() {
seafileAPI.getRepoInfo(repoID).then(res => {
let repo = new Repo(res.data);
seafileAPI.getAccountInfo().then(res => {
let user_email = res.data.email;
this.is_repo_owner = repo.owner_email === user_email;
let menuList = this.calculateMenuList(repo);
this.setState({
repo: repo,
menuList: menuList
});
});
let repo = this.props.currentRepo;
let menuList = this.calculateMenuList(repo);
this.setState({
menuList: menuList
});
}
calculateMenuList(repoInfo) {
let dirent = this.props.dirent;
let isRepoOwner = this.props.isRepoOwner;
let type = dirent.type;
let permission = dirent.permission;
let can_set_folder_perm = folderPermEnabled && ((this.is_repo_owner && repoInfo.has_been_shared_out) || repoInfo.is_admin);
let can_set_folder_perm = folderPermEnabled && ((isRepoOwner && repoInfo.has_been_shared_out) || repoInfo.is_admin);
if (type === 'dir' && permission === 'rw') {
let menuList = [];
if (can_set_folder_perm) {

View File

@@ -18,6 +18,7 @@ class FileChooser extends React.Component {
super(props);
this.state = {
hasRequest: false,
isCurrentRepoShow: true,
isOtherRepoShow: false,
repoList: [],
currentRepo: null,
@@ -62,6 +63,10 @@ class FileChooser extends React.Component {
}
}
onCurrentRepoToggle = () => [
this.setState({isCurrentRepoShow: !this.state.isCurrentRepoShow})
]
onDirentItemClick = (repo, filePath) => {
this.props.onDirentItemClick(repo, filePath);
this.setState({
@@ -83,11 +88,11 @@ class FileChooser extends React.Component {
<div className="file-chooser-container">
<div className="list-view">
<div className="list-view-header">
<span className="item-toggle fa fa-caret-down"></span>
<span className={`item-toggle fa ${this.state.isCurrentRepoShow ? 'fa-caret-down' : 'fa-caret-right'}`} onClick={this.onCurrentRepoToggle}></span>
<span className="library">{gettext('Current Library')}</span>
</div>
{
this.state.currentRepo &&
this.state.isCurrentRepoShow && this.state.currentRepo &&
<RepoListView
initToShowChildren={true}
repo={this.state.currentRepo}

View File

@@ -78,6 +78,10 @@ class Node {
}
}
isFile() {
return this.type === 'file';
}
isDir() {
return this.type == 'dir';
}