mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-05 08:53:14 +00:00
['tag edit'] fixup for 'tag edit' in 'dir view - file details panel' & 'markdown file view - info panel' (#5962)
This commit is contained in:
@@ -13,6 +13,7 @@ import ConfirmApplyFolderPropertiesDialog from '../dialog/confirm-apply-folder-p
|
|||||||
const propTypes = {
|
const propTypes = {
|
||||||
repoInfo: PropTypes.object.isRequired,
|
repoInfo: PropTypes.object.isRequired,
|
||||||
repoID: PropTypes.string.isRequired,
|
repoID: PropTypes.string.isRequired,
|
||||||
|
repoTags: PropTypes.array.isRequired,
|
||||||
dirent: PropTypes.object.isRequired,
|
dirent: PropTypes.object.isRequired,
|
||||||
direntType: PropTypes.string.isRequired,
|
direntType: PropTypes.string.isRequired,
|
||||||
direntDetail: PropTypes.object.isRequired,
|
direntDetail: PropTypes.object.isRequired,
|
||||||
@@ -150,6 +151,7 @@ class DetailListView extends React.Component {
|
|||||||
{this.state.isEditFileTagShow &&
|
{this.state.isEditFileTagShow &&
|
||||||
<EditFileTagPopover
|
<EditFileTagPopover
|
||||||
repoID={this.props.repoID}
|
repoID={this.props.repoID}
|
||||||
|
repoTags={this.props.repoTags}
|
||||||
filePath={direntPath}
|
filePath={direntPath}
|
||||||
fileTagList={fileTagList}
|
fileTagList={fileTagList}
|
||||||
toggleCancel={this.onEditFileTagToggle}
|
toggleCancel={this.onEditFileTagToggle}
|
||||||
|
@@ -17,6 +17,7 @@ const propTypes = {
|
|||||||
onItemDetailsClose: PropTypes.func.isRequired,
|
onItemDetailsClose: PropTypes.func.isRequired,
|
||||||
onFileTagChanged: PropTypes.func.isRequired,
|
onFileTagChanged: PropTypes.func.isRequired,
|
||||||
direntDetailPanelTab: PropTypes.string,
|
direntDetailPanelTab: PropTypes.string,
|
||||||
|
repoTags: PropTypes.array,
|
||||||
fileTags: PropTypes.array,
|
fileTags: PropTypes.array,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -119,6 +120,7 @@ class DirentDetail extends React.Component {
|
|||||||
dirent={this.props.dirent || folderDirent}
|
dirent={this.props.dirent || folderDirent}
|
||||||
direntType={this.state.direntType}
|
direntType={this.state.direntType}
|
||||||
direntDetail={this.state.direntDetail}
|
direntDetail={this.state.direntDetail}
|
||||||
|
repoTags={this.props.repoTags}
|
||||||
fileTagList={dirent ? dirent.file_tags : fileTags}
|
fileTagList={dirent ? dirent.file_tags : fileTags}
|
||||||
onFileTagChanged={this.props.onFileTagChanged}
|
onFileTagChanged={this.props.onFileTagChanged}
|
||||||
/>
|
/>
|
||||||
|
@@ -37,8 +37,8 @@ class EditFileTagPopover extends React.Component {
|
|||||||
let color = this.generateRandomColor();
|
let color = this.generateRandomColor();
|
||||||
let repoID = this.props.repoID;
|
let repoID = this.props.repoID;
|
||||||
seafileAPI.createRepoTag(repoID, name, color).then((res) => {
|
seafileAPI.createRepoTag(repoID, name, color).then((res) => {
|
||||||
let repoTagID = res.data.repo_tag.repo_tag_id;
|
const { repo_tag: newTag } = res.data;
|
||||||
this.onRepoTagCreated(repoTagID);
|
this.onRepoTagCreated(newTag);
|
||||||
this.setState({
|
this.setState({
|
||||||
searchVal: '',
|
searchVal: '',
|
||||||
highlightIndex: -1,
|
highlightIndex: -1,
|
||||||
@@ -49,10 +49,14 @@ class EditFileTagPopover extends React.Component {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
onRepoTagCreated = (repoTagID) => {
|
onRepoTagCreated = (newTag) => {
|
||||||
let {repoID, filePath} = this.props;
|
const { repoID, filePath } = this.props;
|
||||||
|
const { repo_tag_id: repoTagID } = newTag;
|
||||||
seafileAPI.addFileTag(repoID, filePath, repoTagID).then(() => {
|
seafileAPI.addFileTag(repoID, filePath, repoTagID).then(() => {
|
||||||
this.props.onFileTagChanged();
|
this.props.onFileTagChanged();
|
||||||
|
if (this.props.onNewRepoTagAdded) {
|
||||||
|
this.props.onNewRepoTagAdded(newTag);
|
||||||
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
let errMessage = Utils.getErrorMsg(error);
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
toaster.danger(errMessage);
|
toaster.danger(errMessage);
|
||||||
@@ -196,6 +200,7 @@ EditFileTagPopover.propTypes = {
|
|||||||
repoTags: PropTypes.array.isRequired,
|
repoTags: PropTypes.array.isRequired,
|
||||||
toggleCancel: PropTypes.func.isRequired,
|
toggleCancel: PropTypes.func.isRequired,
|
||||||
onFileTagChanged: PropTypes.func.isRequired,
|
onFileTagChanged: PropTypes.func.isRequired,
|
||||||
|
onNewRepoTagAdded: PropTypes.func
|
||||||
};
|
};
|
||||||
|
|
||||||
export default EditFileTagPopover;
|
export default EditFileTagPopover;
|
||||||
|
@@ -356,6 +356,7 @@ class LibContentContainer extends React.Component {
|
|||||||
path={this.props.path}
|
path={this.props.path}
|
||||||
dirent={this.state.currentDirent}
|
dirent={this.state.currentDirent}
|
||||||
currentRepoInfo={this.props.currentRepoInfo}
|
currentRepoInfo={this.props.currentRepoInfo}
|
||||||
|
repoTags={this.props.repoTags}
|
||||||
fileTags={this.props.isViewFile ? this.props.fileTags : []}
|
fileTags={this.props.isViewFile ? this.props.fileTags : []}
|
||||||
onFileTagChanged={this.props.onFileTagChanged}
|
onFileTagChanged={this.props.onFileTagChanged}
|
||||||
onItemDetailsClose={this.props.closeDirentDetail}
|
onItemDetailsClose={this.props.closeDirentDetail}
|
||||||
|
@@ -1,9 +1,12 @@
|
|||||||
import React, { Fragment } from 'react';
|
import React, { Fragment } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import Icon from '../../../components/icon';
|
|
||||||
import { gettext } from '../../../utils/constants';
|
import { gettext } from '../../../utils/constants';
|
||||||
import { Utils } from '../../../utils/utils';
|
import { Utils } from '../../../utils/utils';
|
||||||
|
import { seafileAPI } from '../../../utils/seafile-api';
|
||||||
|
import RepoTag from '../../../models/repo-tag';
|
||||||
|
import toaster from '../../../components/toast';
|
||||||
|
import Icon from '../../../components/icon';
|
||||||
import EditFileTagPopover from '../../../components/popover/edit-filetag-popover';
|
import EditFileTagPopover from '../../../components/popover/edit-filetag-popover';
|
||||||
import FileTagList from '../../../components/file-tag-list';
|
import FileTagList from '../../../components/file-tag-list';
|
||||||
|
|
||||||
@@ -23,16 +26,43 @@ class DetailListView extends React.Component {
|
|||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
|
repoTags: [],
|
||||||
isEditFileTagShow: false
|
isEditFileTagShow: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
seafileAPI.listRepoTags(repoID).then(res => {
|
||||||
|
let repoTags = [];
|
||||||
|
res.data.repo_tags.forEach(item => {
|
||||||
|
const repoTag = new RepoTag(item);
|
||||||
|
repoTags.push(repoTag);
|
||||||
|
});
|
||||||
|
this.setState({
|
||||||
|
repoTags: repoTags
|
||||||
|
});
|
||||||
|
}).catch(error => {
|
||||||
|
let errMessage = Utils.getErrorMsg(error);
|
||||||
|
toaster.danger(errMessage);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onNewRepoTagAdded = (newTag) => {
|
||||||
|
const repoTag = new RepoTag(newTag);
|
||||||
|
const { repoTags: newTags } = this.state;
|
||||||
|
newTags.push(repoTag);
|
||||||
|
this.setState({
|
||||||
|
repoTags: newTags
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
onEditFileTagToggle = () => {
|
onEditFileTagToggle = () => {
|
||||||
this.setState({isEditFileTagShow: !this.state.isEditFileTagShow});
|
this.setState({isEditFileTagShow: !this.state.isEditFileTagShow});
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { fileInfo } = this.props;
|
const { fileInfo } = this.props;
|
||||||
|
const { repoTags } = this.state;
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<div className="dirent-table-container p-2">
|
<div className="dirent-table-container p-2">
|
||||||
@@ -57,10 +87,12 @@ class DetailListView extends React.Component {
|
|||||||
{this.state.isEditFileTagShow &&
|
{this.state.isEditFileTagShow &&
|
||||||
<EditFileTagPopover
|
<EditFileTagPopover
|
||||||
repoID={repoID}
|
repoID={repoID}
|
||||||
|
repoTags={repoTags}
|
||||||
filePath={filePath}
|
filePath={filePath}
|
||||||
fileTagList={this.props.fileTagList}
|
fileTagList={this.props.fileTagList}
|
||||||
toggleCancel={this.onEditFileTagToggle}
|
toggleCancel={this.onEditFileTagToggle}
|
||||||
onFileTagChanged={this.props.onFileTagChanged}
|
onFileTagChanged={this.props.onFileTagChanged}
|
||||||
|
onNewRepoTagAdded={this.onNewRepoTagAdded}
|
||||||
target={'file-tag-container-icon'}
|
target={'file-tag-container-icon'}
|
||||||
isEditFileTagShow={this.state.isEditFileTagShow}
|
isEditFileTagShow={this.state.isEditFileTagShow}
|
||||||
/>
|
/>
|
||||||
|
Reference in New Issue
Block a user