Merge branch 'feature/files' of github.com:ONLYOFFICE/AppServer into feature/files

This commit is contained in:
Alexey Safronov 2020-08-25 16:28:23 +03:00
commit 07d8868eef
8 changed files with 63 additions and 34 deletions

View File

@ -7,7 +7,7 @@ import { history, utils } from "asc-web-common";
import { withTranslation, I18nextProvider } from "react-i18next"; import { withTranslation, I18nextProvider } from "react-i18next";
import { createI18N } from "../../../helpers/i18n"; import { createI18N } from "../../../helpers/i18n";
import { setSelectedSetting, setExpandSettingsTree } from '../../../store/files/actions'; import { setSelectedNode, setExpandSettingsTree } from '../../../store/files/actions';
const i18n = createI18N({ const i18n = createI18N({
page: "Settings", page: "Settings",
@ -34,9 +34,9 @@ class PureTreeSettings extends React.Component {
} }
componentDidMount() { componentDidMount() {
const { match, setSelectedSetting, setExpandSettingsTree } = this.props; const { match, setSelectedNode, setExpandSettingsTree } = this.props;
const { setting } = match.params; const { setting } = match.params;
setSelectedSetting([setting]); setSelectedNode([setting]);
if (setting) if (setting)
setExpandSettingsTree(['settings']); setExpandSettingsTree(['settings']);
} }
@ -53,22 +53,21 @@ class PureTreeSettings extends React.Component {
} }
onSelect = (section) => { onSelect = (section) => {
const { setSelectedSetting, setExpandSettingsTree } = this.props; const { setSelectedNode, setExpandSettingsTree } = this.props;
const path = section[0]; const path = section[0];
if(path === 'settings') { if(path === 'settings') {
setSelectedSetting(['common']); setSelectedNode(['common']);
setExpandSettingsTree(section); setExpandSettingsTree(section);
return history.push('/products/files/settings/common'); return history.push('/products/files/settings/common');
} }
setSelectedSetting(section); setSelectedNode(section);
return history.push(`/products/files/settings/${path}`); return history.push(`/products/files/settings/${path}`);
} }
onExpand = (data) => { onExpand = (data) => {
const { setExpandSettingsTree, setSelectedSetting } = this.props; const { setExpandSettingsTree } = this.props;
setSelectedSetting(['common']);
setExpandSettingsTree(data); setExpandSettingsTree(data);
} }
@ -110,7 +109,7 @@ class PureTreeSettings extends React.Component {
render() { render() {
const { const {
selectedSetting, selectedTreeNode,
expandedSetting expandedSetting
} = this.props; } = this.props;
const nodes = this.renderTreeNode(); const nodes = this.renderTreeNode();
@ -118,7 +117,7 @@ class PureTreeSettings extends React.Component {
return ( return (
<StyledTreeMenu <StyledTreeMenu
expandedKeys={expandedSetting} expandedKeys={expandedSetting}
selectedKeys={selectedSetting} selectedKeys={selectedTreeNode}
defaultExpandParent={false} defaultExpandParent={false}
className="settings-tree-menu" className="settings-tree-menu"
switcherIcon={this.switcherIcon} switcherIcon={this.switcherIcon}
@ -145,17 +144,17 @@ const TreeSettings = props => {
function mapStateToProps(state) { function mapStateToProps(state) {
const { const {
selectedSetting, selectedTreeNode,
expandedSetting expandedSetting
} = state.files; } = state.files;
return { return {
selectedSetting, selectedTreeNode,
expandedSetting expandedSetting
} }
} }
export default connect( export default connect(
mapStateToProps, { mapStateToProps, {
setSelectedSetting, setSelectedNode,
setExpandSettingsTree setExpandSettingsTree
})(withRouter(TreeSettings)); })(withRouter(TreeSettings));

View File

@ -10,7 +10,8 @@ import {
setDragItem, setDragItem,
setDragging, setDragging,
setNewTreeFilesBadge, setNewTreeFilesBadge,
setIsLoading setIsLoading,
setSelectedNode
} from "../../../store/files/actions"; } from "../../../store/files/actions";
import store from "../../../store/store"; import store from "../../../store/store";
import isEqual from "lodash/isEqual"; import isEqual from "lodash/isEqual";
@ -55,8 +56,9 @@ class ArticleBodyContent extends React.Component {
} }
onSelect = data => { onSelect = data => {
const { selectedKeys, filter, setIsLoading } = this.props; const { filter, setIsLoading, selectedTreeNode, setSelectedNode } = this.props;
if (selectedKeys[0] !== data[0]) { if (selectedTreeNode[0] !== data[0]) {
setSelectedNode(data)
setIsLoading(true); setIsLoading(true);
const newFilter = filter.clone(); const newFilter = filter.clone();
newFilter.page = 0; newFilter.page = 0;
@ -83,7 +85,6 @@ class ArticleBodyContent extends React.Component {
render() { render() {
const { const {
data, data,
selectedKeys,
filter, filter,
setFilter, setFilter,
setTreeFolders, setTreeFolders,
@ -100,6 +101,7 @@ class ArticleBodyContent extends React.Component {
isShare, isShare,
setDragging, setDragging,
onTreeDrop, onTreeDrop,
selectedTreeNode
} = this.props; } = this.props;
const { showNewFilesPanel, expandedKeys, newFolderId } = this.state; const { showNewFilesPanel, expandedKeys, newFolderId } = this.state;
@ -121,7 +123,7 @@ class ArticleBodyContent extends React.Component {
/> />
)} )}
<TreeFolders <TreeFolders
selectedKeys={selectedKeys} selectedKeys={selectedTreeNode}
onSelect={this.onSelect} onSelect={this.onSelect}
data={data} data={data}
filter={filter} filter={filter}
@ -150,7 +152,7 @@ class ArticleBodyContent extends React.Component {
} }
function mapStateToProps(state) { function mapStateToProps(state) {
const { treeFolders, selectedFolder, filter, selection, dragging, updateTreeNew, isLoading } = state.files; const { treeFolders, selectedFolder, filter, selection, dragging, updateTreeNew, isLoading, selectedTreeNode } = state.files;
const currentFolderId = selectedFolder.id.toString(); const currentFolderId = selectedFolder.id.toString();
const myFolderIndex = 0; const myFolderIndex = 0;
const shareFolderIndex = 1; const shareFolderIndex = 1;
@ -172,6 +174,8 @@ function mapStateToProps(state) {
selectedFolder.pathParts && selectedFolder.pathParts &&
selectedFolder.pathParts[0] === commonId; selectedFolder.pathParts[0] === commonId;
const selected = selectedTreeNode.length>0 ? selectedTreeNode : [ selectedFolder.id.toString() ];
return { return {
data: treeFolders, data: treeFolders,
selectedKeys: selectedFolder ? [currentFolderId] : [""], selectedKeys: selectedFolder ? [currentFolderId] : [""],
@ -186,10 +190,11 @@ function mapStateToProps(state) {
selection, selection,
dragging, dragging,
updateTreeNew, updateTreeNew,
isLoading isLoading,
selectedTreeNode: selected
}; };
} }
export default connect(mapStateToProps, { setFilter, setTreeFolders, setDragItem, setDragging, setNewTreeFilesBadge, setIsLoading })( export default connect(mapStateToProps, { setFilter, setTreeFolders, setDragItem, setDragging, setNewTreeFilesBadge, setIsLoading, setSelectedNode })(
ArticleBodyContent ArticleBodyContent
); );

View File

@ -36,6 +36,10 @@ class SectionBodyContent extends React.Component {
document.title = t(`${setting}`); document.title = t(`${setting}`);
} }
componentWillUnmount() {
document.title = 'ASC.Files';
}
renderAdminSettings = () => { renderAdminSettings = () => {
const { const {
intermediateVersion, intermediateVersion,

View File

@ -2,6 +2,7 @@ import React from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { withRouter } from "react-router"; import { withRouter } from "react-router";
import { PageLayout, utils } from "asc-web-common"; import { PageLayout, utils } from "asc-web-common";
import { RequestLoader } from "asc-web-components";
import { import {
ArticleHeaderContent, ArticleHeaderContent,
ArticleBodyContent, ArticleBodyContent,
@ -52,9 +53,18 @@ class PureSettings extends React.Component {
} = this.state; } = this.state;
const { match, t, isLoading, setIsLoading } = this.props; const { match, t, isLoading, setIsLoading } = this.props;
const { setting } = match.params; const { setting } = match.params;
console.log(setting)
return ( return (
<>
<RequestLoader
visible={isLoading}
zIndex={256}
loaderSize="16px"
loaderColor={"#999"}
label={`${t("LoadingProcessing")} ${t("LoadingDescription")}`}
fontSize="12px"
fontColor={"#999"}
/>
<PageLayout> <PageLayout>
<PageLayout.ArticleHeader> <PageLayout.ArticleHeader>
<ArticleHeaderContent /> <ArticleHeaderContent />
@ -95,6 +105,7 @@ class PureSettings extends React.Component {
/> />
</PageLayout.SectionBody> </PageLayout.SectionBody>
</PageLayout> </PageLayout>
</>
); );
} }
} }

View File

@ -19,5 +19,8 @@
"storingFileVersion": "Storing file versions", "storingFileVersion": "Storing file versions",
"updateOrCreate": "Update the file version for the existing file with the same name. Otherwise, a copy of the file will be created.", "updateOrCreate": "Update the file version for the existing file with the same name. Otherwise, a copy of the file will be created.",
"keepIntermediateVersion": "Keep intermediate versions when editing" "keepIntermediateVersion": "Keep intermediate versions when editing",
"LoadingProcessing": "Loading...",
"LoadingDescription": "Please wait..."
} }

View File

@ -19,5 +19,8 @@
"storingFileVersion": "Хранение версий файлов", "storingFileVersion": "Хранение версий файлов",
"updateOrCreate": "Обновлять версию файла для существующего файла с таким же именем. В противном случае будет создаваться копия файла.", "updateOrCreate": "Обновлять версию файла для существующего файла с таким же именем. В противном случае будет создаваться копия файла.",
"keepIntermediateVersion": "Хранить промежуточные версии при редактировании" "keepIntermediateVersion": "Хранить промежуточные версии при редактировании",
"LoadingProcessing": "Загрузка...",
"LoadingDescription": "Пожалуйста, подождите..."
} }

View File

@ -39,7 +39,7 @@ export const SET_VIEW_AS = "SET_VIEW_AS";
export const SET_CONVERT_DIALOG_VISIBLE = "SET_CONVERT_DIALOG_VISIBLE"; export const SET_CONVERT_DIALOG_VISIBLE = "SET_CONVERT_DIALOG_VISIBLE";
export const SET_NEW_TREE_FILES = "SET_NEW_TREE_FILES"; export const SET_NEW_TREE_FILES = "SET_NEW_TREE_FILES";
export const SET_NEW_ROW_ITEMS = "SET_NEW_ROW_ITEMS"; export const SET_NEW_ROW_ITEMS = "SET_NEW_ROW_ITEMS";
export const SET_SELECTED_SETTING = "SET_SELECTED_SETTING"; export const SET_SELECTED_NODE = "SET_SELECTED_NODE";
export const SET_EXPAND_SETTINGS_TREE = "SET_EXPAND_SETTINGS_TREE"; export const SET_EXPAND_SETTINGS_TREE = "SET_EXPAND_SETTINGS_TREE";
export const SET_IS_LOADING = "SET_IS_LOADING"; export const SET_IS_LOADING = "SET_IS_LOADING";
@ -190,10 +190,10 @@ export function setNewRowItems(newRowItems) {
}; };
} }
export function setSelectedSetting(setting) { export function setSelectedNode(node) {
return { return {
type: SET_SELECTED_SETTING, type: SET_SELECTED_NODE,
setting node
} }
} }

View File

@ -20,7 +20,7 @@ import {
SET_CONVERT_DIALOG_VISIBLE, SET_CONVERT_DIALOG_VISIBLE,
SET_NEW_TREE_FILES, SET_NEW_TREE_FILES,
SET_NEW_ROW_ITEMS, SET_NEW_ROW_ITEMS,
SET_SELECTED_SETTING, SET_SELECTED_NODE,
SET_EXPAND_SETTINGS_TREE, SET_EXPAND_SETTINGS_TREE,
SET_IS_LOADING SET_IS_LOADING
} from "./actions"; } from "./actions";
@ -47,7 +47,7 @@ const initialState = {
convertDialogVisible: false, convertDialogVisible: false,
updateTreeNew: false, updateTreeNew: false,
newRowItems: [], newRowItems: [],
selectedSetting: [], selectedTreeNode: [],
expandedSetting: [], expandedSetting: [],
isLoading: false isLoading: false
}; };
@ -147,10 +147,14 @@ const filesReducer = (state = initialState, action) => {
return Object.assign({}, state, { return Object.assign({}, state, {
newRowItems: action.newRowItems newRowItems: action.newRowItems
}); });
case SET_SELECTED_SETTING: case SET_SELECTED_NODE:
if ( action.node[0] ) {
return Object.assign({}, state, { return Object.assign({}, state, {
selectedSetting: action.setting selectedTreeNode: action.node
}) })
} else {
return state;
}
case SET_EXPAND_SETTINGS_TREE: case SET_EXPAND_SETTINGS_TREE:
return Object.assign({}, state, { return Object.assign({}, state, {
expandedSetting: action.setting expandedSetting: action.setting