Merge branch 'master' of https://github.com/ONLYOFFICE/CommunityServer-AspNetCore
This commit is contained in:
commit
6895729945
@ -32,6 +32,7 @@ const App = ({ settings }) => {
|
||||
path={`${homepage}/edit/:userId`}
|
||||
component={ProfileAction}
|
||||
restricted
|
||||
allowForMe
|
||||
/>
|
||||
<PrivateRoute
|
||||
path={`${homepage}/create/:type`}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import React, { useCallback } from 'react';
|
||||
import React from 'react';
|
||||
import { utils } from 'asc-web-components';
|
||||
import { connect } from 'react-redux';
|
||||
import {
|
||||
TreeMenu,
|
||||
@ -50,16 +51,25 @@ const getItems = data => {
|
||||
});
|
||||
};
|
||||
|
||||
const PeopleTreeMenu = props => {
|
||||
const { data, selectGroup, defaultSelectedKeys } = props;
|
||||
class ArticleBodyContent extends React.Component {
|
||||
|
||||
console.log("PeopleTreeMenu", props);
|
||||
shouldComponentUpdate(nextProps) {
|
||||
if(!utils.array.isArrayEqual(nextProps.selectedKeys, this.props.selectedKeys)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const onSelect = useCallback(data => {
|
||||
selectGroup(data && data.length === 1 && data[0] !== "root" ? data[0] : null);
|
||||
}, [selectGroup])
|
||||
if(!utils.array.isArrayEqual(nextProps.data, this.props.data)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const switcherIcon = obj => {
|
||||
return false;
|
||||
}
|
||||
|
||||
onSelect = data => {
|
||||
this.props.selectGroup(data && data.length === 1 && data[0] !== "root" ? data[0] : null);
|
||||
};
|
||||
|
||||
switcherIcon = obj => {
|
||||
if (obj.isLeaf) {
|
||||
return null;
|
||||
}
|
||||
@ -74,6 +84,11 @@ const PeopleTreeMenu = props => {
|
||||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
const { data, selectedKeys } = this.props;
|
||||
|
||||
console.log("PeopleTreeMenu", this.props);
|
||||
|
||||
return (
|
||||
<TreeMenu
|
||||
checkable={false}
|
||||
@ -82,17 +97,16 @@ const PeopleTreeMenu = props => {
|
||||
multiple={false}
|
||||
showIcon={true}
|
||||
defaultExpandAll={true}
|
||||
switcherIcon={switcherIcon}
|
||||
onSelect={onSelect}
|
||||
defaultSelectedKeys={defaultSelectedKeys}
|
||||
switcherIcon={this.switcherIcon}
|
||||
onSelect={this.onSelect}
|
||||
defaultSelectedKeys={selectedKeys}
|
||||
>
|
||||
{getItems(data)}
|
||||
</TreeMenu>
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
const ArticleBodyContent = props => <PeopleTreeMenu {...props} />;
|
||||
|
||||
const getTreeGroups = (groups) => {
|
||||
const treeData = [
|
||||
{
|
||||
@ -113,7 +127,7 @@ const getTreeGroups = (groups) => {
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
data: getTreeGroups(state.people.groups),
|
||||
defaultSelectedKeys: state.people.selectedGroup ? [state.people.selectedGroup] : ["root"]
|
||||
selectedKeys: state.people.selectedGroup ? [state.people.selectedGroup] : ["root"]
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -4,11 +4,14 @@ import PropTypes from "prop-types";
|
||||
import { Route } from "react-router-dom";
|
||||
import ExternalRedirect from '../helpers/externalRedirect';
|
||||
import { PageLayout, Loader } from "asc-web-components";
|
||||
import { isAdmin } from "../store/auth/selectors";
|
||||
import { isAdmin, isMe } from "../store/auth/selectors";
|
||||
import { Error404 } from "../components/pages/Error";
|
||||
|
||||
const PrivateRoute = ({ component: Component, ...rest }) => {
|
||||
const { isAuthenticated, isLoaded, isAdmin, restricted } = rest;
|
||||
const { isAuthenticated, isLoaded, isAdmin, restricted, allowForMe, currentUser, computedMatch } = rest;
|
||||
const { userId } = computedMatch.params;
|
||||
|
||||
console.log("PrivateRoute render", rest);
|
||||
return (
|
||||
<Route
|
||||
{...rest}
|
||||
@ -21,7 +24,7 @@ const PrivateRoute = ({ component: Component, ...rest }) => {
|
||||
/>
|
||||
) : isAuthenticated ? (
|
||||
restricted
|
||||
? (isAdmin
|
||||
? (isAdmin || (allowForMe && userId && isMe(currentUser, userId))
|
||||
? <Component {...props} />
|
||||
: <Error404 />
|
||||
)
|
||||
@ -42,7 +45,8 @@ function mapStateToProps(state) {
|
||||
return {
|
||||
isAuthenticated: state.auth.isAuthenticated,
|
||||
isLoaded: state.auth.isLoaded,
|
||||
isAdmin: isAdmin(state.auth.user)
|
||||
isAdmin: isAdmin(state.auth.user),
|
||||
currentUser: state.auth.user
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -54,12 +54,7 @@ export function selectGroup(groupId) {
|
||||
let newFilter = filter.clone();
|
||||
newFilter.group = groupId;
|
||||
|
||||
fetchPeopleAsync(dispatch, newFilter);
|
||||
|
||||
return dispatch({
|
||||
type: SELECT_GROUP,
|
||||
groupId
|
||||
});
|
||||
return fetchPeopleByFilter(dispatch, newFilter);
|
||||
};
|
||||
}
|
||||
|
||||
@ -86,12 +81,7 @@ export function setFilter(filter) {
|
||||
|
||||
export function fetchPeople(filter) {
|
||||
return dispatch => {
|
||||
let filterData = (filter && filter.clone()) || Filter.getDefault();
|
||||
return api.getUserList(filterData).then(res => {
|
||||
filterData.total = res.data.total;
|
||||
dispatch(setFilter(filterData));
|
||||
return dispatch(setUsers(res.data.response));
|
||||
});
|
||||
return fetchPeopleByFilter(dispatch, filter);
|
||||
};
|
||||
}
|
||||
|
||||
@ -100,6 +90,10 @@ export function fetchPeopleByFilter(dispatch, filter) {
|
||||
return api.getUserList(filterData).then(res => {
|
||||
filterData.total = res.data.total;
|
||||
dispatch(setFilter(filterData));
|
||||
dispatch({
|
||||
type: SELECT_GROUP,
|
||||
groupId: filterData.group
|
||||
});
|
||||
return dispatch(setUsers(res.data.response));
|
||||
});
|
||||
}
|
||||
@ -112,6 +106,10 @@ export async function fetchPeopleAsync(dispatch, filter = null) {
|
||||
filterData.total = usersResp.data.total;
|
||||
|
||||
dispatch(setFilter(filterData));
|
||||
dispatch({
|
||||
type: SELECT_GROUP,
|
||||
groupId: filterData.group
|
||||
});
|
||||
dispatch(setUsers(usersResp.data.response));
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "asc-web-components",
|
||||
"version": "1.0.21",
|
||||
"version": "1.0.22",
|
||||
"description": "Ascensio System SIA component library",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "dist/asc-web-components.cjs.js",
|
||||
|
@ -54,3 +54,4 @@ export { default as AdvancedSelector } from './components/advanced-selector'
|
||||
export { default as ContextMenu } from './components/context-menu'
|
||||
export { default as RowContainer } from './components/row-container'
|
||||
export { default as FieldContainer } from './components/field-container'
|
||||
export { default as utils } from './utils'
|
4
web/ASC.Web.Components/src/utils/index.js
Normal file
4
web/ASC.Web.Components/src/utils/index.js
Normal file
@ -0,0 +1,4 @@
|
||||
import * as array from './array';
|
||||
import * as event from './event';
|
||||
|
||||
export default { array, event };
|
Loading…
Reference in New Issue
Block a user