1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 10:58:33 +00:00

Implement file upload (#2506)

This commit is contained in:
杨顺强
2018-11-14 10:55:11 +08:00
committed by Daniel Pan
parent dbbba4f93c
commit 360bd739ce
14 changed files with 701 additions and 23 deletions

View File

@@ -2,6 +2,7 @@ import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { gettext, repoID, serviceUrl, slug, siteRoot } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
import Repo from '../../models/repo';
import Dirent from '../../models/dirent';
import CommonToolbar from '../../components/toolbar/common-toolbar';
@@ -11,6 +12,7 @@ import DirentListView from '../../components/dirent-list-view/dirent-list-view';
import DirentDetail from '../../components/dirent-detail/dirent-details';
import CreateFolder from '../../components/dialog/create-folder-dialog';
import CreateFile from '../../components/dialog/create-file-dialog';
import FileUploader from '../../components/file-uploader/file-uploader';
const propTypes = {
content: PropTypes.string,
@@ -208,6 +210,20 @@ class MainPanel extends Component {
this.updateViewList(this.props.filePath);
}
uploadFile = (e) => {
e.nativeEvent.stopImmediatePropagation();
this.uploader.onFileUpload();
}
uploadFolder = (e) => {
e.nativeEvent.stopImmediatePropagation();
this.uploader.onFolderUpload();
}
onFileSuccess = (file) => {
}
render() {
let filePathList = this.props.filePath.split('/');
let nodePath = '';
@@ -249,17 +265,21 @@ class MainPanel extends Component {
{
!this.props.isViewFileState &&
<Fragment>
<button className="btn btn-secondary operation-item" title={gettext('Edit File')} onClick={this.onUploadClick}>{gettext('Upload')}</button>
<button className="btn btn-secondary operation-item" title={gettext('Edit File')} onClick={this.onNewClick}>{gettext('New')}</button>
<button className="btn btn-secondary operation-item" title={gettext('Edit File')} onClick={this.onShareClick}>{gettext('Share')}</button>
{
Utils.isSupportUploadFolder() ?
<button className="btn btn-secondary operation-item" title={gettext('Upload')} onClick={this.onUploadClick}>{gettext('Upload')}</button> :
<button className="btn btn-secondary operation-item" title={gettext('Upload')} onClick={this.uploadFile}>{gettext('Upload')}</button>
}
<button className="btn btn-secondary operation-item" title={gettext('New')} onClick={this.onNewClick}>{gettext('New')}</button>
<button className="btn btn-secondary operation-item" title={gettext('Share')} onClick={this.onShareClick}>{gettext('Share')}</button>
</Fragment>
}
</div>
{
{
this.state.uploadMenuShow &&
<ul className="menu dropdown-menu" style={this.state.operationMenuStyle}>
<li className="dropdown-item">{gettext('Upload Files')}</li>
<li className="dropdown-item">{gettext('Upload Folder')}</li>
<li className="dropdown-item" onClick={this.uploadFile}>{gettext('File Upload')}</li>
<li className="dropdown-item" onClick={this.uploadFolder}>{gettext('Folder Upload')}</li>
</ul>
}
{
@@ -303,20 +323,29 @@ class MainPanel extends Component {
onLinkClick={this.props.onLinkClick}
isFileLoading={this.props.isFileLoading}
/> :
<DirentListView
direntList={this.state.direntList}
filePath={this.props.filePath}
onItemClick={this.props.onMainItemClick}
onItemDelete={this.props.onMainItemDelete}
onItemRename={this.props.onMainItemRename}
onItemMove={this.props.onMainItemMove}
onItemCopy={this.props.onMainItemCopy}
onItemDetails={this.onItemDetails}
updateViewList={this.updateViewList}
isDirentListLoading={this.state.isDirentListLoading}
currentRepo={this.state.currentRepo}
isRepoOwner={this.state.isRepoOwner}
/>
<Fragment>
<DirentListView
direntList={this.state.direntList}
filePath={this.props.filePath}
onItemClick={this.props.onMainItemClick}
onItemDelete={this.props.onMainItemDelete}
onItemRename={this.props.onMainItemRename}
onItemMove={this.props.onMainItemMove}
onItemCopy={this.props.onMainItemCopy}
onItemDetails={this.onItemDetails}
updateViewList={this.updateViewList}
isDirentListLoading={this.state.isDirentListLoading}
currentRepo={this.state.currentRepo}
isRepoOwner={this.state.isRepoOwner}
/>
<FileUploader
ref={uploader => this.uploader = uploader}
dragAndDrop={true}
filePath={this.props.filePath}
onFileSuccess={this.onFileSuccess}
direntList={this.state.direntList}
/>
</Fragment>
}
</div>
</div>