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

optimize frontend

This commit is contained in:
Junxiang Huang
2024-06-12 15:31:14 +08:00
parent 452c8b8ff1
commit 2d4dae7d87
3 changed files with 66 additions and 7 deletions

View File

@@ -10,7 +10,10 @@ import CreateFolder from '../../components/dialog/create-folder-dialog';
import CreateFile from '../../components/dialog/create-file-dialog'; import CreateFile from '../../components/dialog/create-file-dialog';
import ImageDialog from '../../components/dialog/image-dialog'; import ImageDialog from '../../components/dialog/image-dialog';
import { siteRoot, thumbnailSizeForOriginal } from '../../utils/constants'; import { siteRoot, thumbnailSizeForOriginal } from '../../utils/constants';
import seahubMetadataAPI from '../metadata-manage/seahub-metadata-api';
import { gettext } from '../../utils/constants';
import { Utils } from '../../utils/utils'; import { Utils } from '../../utils/utils';
import toaster from '../../components/toast';
const propTypes = { const propTypes = {
currentPath: PropTypes.string.isRequired, currentPath: PropTypes.string.isRequired,
@@ -99,6 +102,22 @@ class DirColumnNav extends React.Component {
case 'Open in New Tab': case 'Open in New Tab':
this.onOpenFile(node); this.onOpenFile(node);
break; break;
case 'Enable Metadata':
if (confirm(gettext('Enable metadata management?'))){
seahubMetadataAPI.enableMetadataManagement(this.props.repoID).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
break;
case 'Disable Metadata':
if (confirm(gettext('Disable metadata management?'))){
seahubMetadataAPI.disableMetadataManagement(this.props.repoID).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
}
break;
} }
}; };

View File

@@ -4,6 +4,8 @@ import { Utils } from '../../utils/utils';
import { gettext } from '../../utils/constants'; import { gettext } from '../../utils/constants';
import toaster from '../../components/toast'; import toaster from '../../components/toast';
import seahubMetadataAPI from './seahub-metadata-api'; import seahubMetadataAPI from './seahub-metadata-api';
import { hideMenu, showMenu } from '../context-menu/actions';
import TextTranslation from '../../utils/text-translation';
const propTypes = { const propTypes = {
repoID: PropTypes.string.isRequired, repoID: PropTypes.string.isRequired,
@@ -15,27 +17,24 @@ class MetadataManageView extends React.Component {
super(props); super(props);
this.state = { this.state = {
isHighlight: false, isHighlight: false,
isShowOperationMenu: false, menuList: []
}; };
} }
onMouseEnter = () => { onMouseEnter = () => {
this.setState({ this.setState({
isShowOperationMenu: true,
isHighlight: true, isHighlight: true,
}); });
}; };
onMouseOver = () => { onMouseOver = () => {
this.setState({ this.setState({
isShowOperationMenu: true,
isHighlight: true, isHighlight: true,
}); });
}; };
onMouseLeave = () => { onMouseLeave = () => {
this.setState({ this.setState({
isShowOperationMenu: false,
isHighlight: false, isHighlight: false,
}); });
}; };
@@ -47,13 +46,51 @@ class MetadataManageView extends React.Component {
} }
}; };
getMenuList = () => {
let { ENABLE_METADATA, DISABLE_METADATA } = TextTranslation;
seahubMetadataAPI.getMetadataManagementEnabledStatus(this.props.repoID).then((res) => {
if (res.data.enabled){
this.setState({ menuList: [DISABLE_METADATA] });
} else {
this.setState({ menuList: [ENABLE_METADATA] });
}
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
this.setState({ menuList: [] });
});
};
onItemContextMenu = (event) => {
event.preventDefault();
event.stopPropagation();
let x = event.clientX || (event.touches && event.touches[0].pageX);
let y = event.clientY || (event.touches && event.touches[0].pageY);
hideMenu();
this.getMenuList();
let showMenuConfig = {
id: 'tree-node-contextmenu',
position: { x, y },
target: event.target,
menuList: this.state.menuList,
};
showMenu(showMenuConfig);
};
onClick = () => { onClick = () => {
seahubMetadataAPI.getMetadataManagementEnabledStatus(this.props.repoID).then((res) => { seahubMetadataAPI.getMetadataManagementEnabledStatus(this.props.repoID).then((res) => {
if (res.data.enabled){ if (res.data.enabled){
this.viewMetadata(); this.viewMetadata();
} else if (confirm(gettext('Enable-Metadata-Manage?'))){ } else if (confirm(gettext('Enable metadata management?'))){
seahubMetadataAPI.enableMetadataManagement(this.props.repoID).then((res) => { seahubMetadataAPI.enableMetadataManagement(this.props.repoID).then((res) => {
if (res.data.success){
this.viewMetadata(); this.viewMetadata();
}
}).catch((error) => { }).catch((error) => {
let errMessage = Utils.getErrorMsg(error); let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage); toaster.danger(errMessage);
@@ -81,6 +118,7 @@ class MetadataManageView extends React.Component {
onMouseLeave={this.onMouseLeave} onMouseLeave={this.onMouseLeave}
onMouseDown={this.onItemMouseDown} onMouseDown={this.onItemMouseDown}
onClick={this.onClick} onClick={this.onClick}
onContextMenu={this.onItemContextMenu}
> >
<div className="tree-node-text">{gettext('Metadata-View')} <div className="tree-node-text">{gettext('Metadata-View')}
<div className="left-icon"> <div className="left-icon">

View File

@@ -33,7 +33,9 @@ const TextTranslation = {
'PROPERTIES' : {key : 'Properties', value : gettext('Properties')}, 'PROPERTIES' : {key : 'Properties', value : gettext('Properties')},
'TAGS': {key: 'Tags', value: gettext('Tags')}, 'TAGS': {key: 'Tags', value: gettext('Tags')},
'TRASH': {key: 'Trash', value: gettext('Trash')}, 'TRASH': {key: 'Trash', value: gettext('Trash')},
'ONLYOFFICE_CONVERT': {key: 'Convert with ONLYOFFICE', value: gettext('Convert with ONLYOFFICE')} 'ONLYOFFICE_CONVERT': {key: 'Convert with ONLYOFFICE', value: gettext('Convert with ONLYOFFICE')},
'ENABLE_METADATA': {key: 'Enable Metadata', value: gettext('Enable Metadata')},
'DISABLE_METADATA': {key: 'Disable Metadata', value: gettext('Disable Metadata')}
}; };
export default TextTranslation; export default TextTranslation;