Merge branch 'feature/virtual-rooms-1.2' of github.com:ONLYOFFICE/AppServer into feature/virtual-rooms-1.2
This commit is contained in:
commit
48ad201583
@ -54,3 +54,11 @@ export function getInvitationLinks() {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setPortalRename(alias) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: "/portal/portalrename.json",
|
||||||
|
data: { alias },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -25,6 +25,67 @@ export function getPortalPasswordSettings(confirmKey = null) {
|
|||||||
return request(options);
|
return request(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setPortalPasswordSettings(
|
||||||
|
minLength,
|
||||||
|
upperCase,
|
||||||
|
digits,
|
||||||
|
specSymbols
|
||||||
|
) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: "/settings/security/password.json",
|
||||||
|
data: { minLength, upperCase, digits, specSymbols },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setMailDomainSettings(type, domains, inviteUsersAsVisitors) {
|
||||||
|
return request({
|
||||||
|
method: "post",
|
||||||
|
url: "/settings/maildomainsettings.json",
|
||||||
|
data: { type, domains, inviteUsersAsVisitors },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setIpRestrictions(data) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: "/settings/iprestrictions.json",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setIpRestrictionsEnable(data) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: "/settings/iprestrictions/settings.json",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setMessageSettings(turnOn) {
|
||||||
|
return request({
|
||||||
|
method: "post",
|
||||||
|
url: "/settings/messagesettings.json",
|
||||||
|
data: { turnOn },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setCookieSettings(lifeTime) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: "/settings/cookiesettings.json",
|
||||||
|
data: { lifeTime },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setLifetimeAuditSettings(loginHistoryLifeTime) {
|
||||||
|
return request({
|
||||||
|
method: "post",
|
||||||
|
url: "/audit/settings/lifetime.json",
|
||||||
|
data: { loginHistoryLifeTime },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function getPortalTimezones(confirmKey = null) {
|
export function getPortalTimezones(confirmKey = null) {
|
||||||
const options = {
|
const options = {
|
||||||
method: "get",
|
method: "get",
|
||||||
@ -79,6 +140,24 @@ export function getLogoUrls() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setWhiteLabelSettings(data) {
|
||||||
|
const options = {
|
||||||
|
method: "post",
|
||||||
|
url: "/settings/whitelabel/save.json",
|
||||||
|
data,
|
||||||
|
};
|
||||||
|
|
||||||
|
return request(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function restoreWhiteLabelSettings(isDefault) {
|
||||||
|
return request({
|
||||||
|
method: "put",
|
||||||
|
url: "/settings/whitelabel/restore.json",
|
||||||
|
data: { isDefault },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function getCustomSchemaList() {
|
export function getCustomSchemaList() {
|
||||||
return request({
|
return request({
|
||||||
method: "get",
|
method: "get",
|
||||||
|
@ -324,6 +324,20 @@ class SettingsStore {
|
|||||||
this.setPasswordSettings(settings);
|
this.setPasswordSettings(settings);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setPortalPasswordSettings = async (
|
||||||
|
minLength,
|
||||||
|
upperCase,
|
||||||
|
digits,
|
||||||
|
specSymbols
|
||||||
|
) => {
|
||||||
|
const settings = await api.settings.setPortalPasswordSettings(
|
||||||
|
minLength,
|
||||||
|
upperCase,
|
||||||
|
digits,
|
||||||
|
specSymbols
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
setTimezones = (timezones) => {
|
setTimezones = (timezones) => {
|
||||||
this.timezones = timezones;
|
this.timezones = timezones;
|
||||||
};
|
};
|
||||||
|
@ -15,6 +15,7 @@ import withCultureNames from "@appserver/common/hoc/withCultureNames";
|
|||||||
import LanguageAndTimeZone from "./language-and-time-zone";
|
import LanguageAndTimeZone from "./language-and-time-zone";
|
||||||
import CustomTitles from "./custom-titles";
|
import CustomTitles from "./custom-titles";
|
||||||
import PortalRenaming from "./portal-renaming";
|
import PortalRenaming from "./portal-renaming";
|
||||||
|
import WhiteLabel from "./whitelabel";
|
||||||
import { Base } from "@appserver/components/themes";
|
import { Base } from "@appserver/components/themes";
|
||||||
import { Consumer } from "@appserver/components/utils/context";
|
import { Consumer } from "@appserver/components/utils/context";
|
||||||
|
|
||||||
@ -221,6 +222,7 @@ class Customization extends React.Component {
|
|||||||
<div className="category-item-wrapper">
|
<div className="category-item-wrapper">
|
||||||
<PortalRenaming sectionWidth={context.sectionWidth} />
|
<PortalRenaming sectionWidth={context.sectionWidth} />
|
||||||
</div>
|
</div>
|
||||||
|
<WhiteLabel />
|
||||||
</StyledComponent>
|
</StyledComponent>
|
||||||
)}
|
)}
|
||||||
</Consumer>
|
</Consumer>
|
||||||
|
@ -1,7 +1,103 @@
|
|||||||
import React from "react";
|
import React, { useState } from "react";
|
||||||
|
import { withTranslation } from "react-i18next";
|
||||||
|
import styled from "styled-components";
|
||||||
|
import Loader from "@appserver/components/loader";
|
||||||
|
import HelpButton from "@appserver/components/help-button";
|
||||||
|
import FieldContainer from "@appserver/components/field-container";
|
||||||
|
import TextInput from "@appserver/components/text-input";
|
||||||
|
import SaveCancelButtons from "@appserver/components/save-cancel-buttons";
|
||||||
|
import { inject, observer } from "mobx-react";
|
||||||
|
|
||||||
const PortalRenaming = () => {
|
const StyledComponent = styled.div`
|
||||||
return <div></div>;
|
.margin-top {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin-left {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-block {
|
||||||
|
margin-bottom: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-block {
|
||||||
|
max-width: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.combo-button-label {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-item-heading {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.category-item-title {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 22px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const PortalRenaming = ({ t, theme, sectionWidth }) => {
|
||||||
|
// todo: Изменить на false
|
||||||
|
const [isLoadedData, setIsLoadedData] = useState(true);
|
||||||
|
|
||||||
|
const onSavePortalRename = () => {
|
||||||
|
// setPortalRename("waw");
|
||||||
};
|
};
|
||||||
|
|
||||||
export default PortalRenaming;
|
return !isLoadedData ? (
|
||||||
|
<Loader className="pageLoader" type="rombs" size="40px" />
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<StyledComponent>
|
||||||
|
<div className="category-item-heading">
|
||||||
|
<div className="category-item-title">{t("Portal Renaming")}</div>
|
||||||
|
<HelpButton
|
||||||
|
iconName="static/images/combined.shape.svg"
|
||||||
|
size={12}
|
||||||
|
// tooltipContent={tooltipCustomTitlesTooltip}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="settings-block">
|
||||||
|
<FieldContainer
|
||||||
|
id="fieldContainerWelcomePage"
|
||||||
|
className="field-container-width"
|
||||||
|
labelText={`${t("New portal name")}:`}
|
||||||
|
isVertical={true}
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
scale={true}
|
||||||
|
// value={greetingTitle}
|
||||||
|
//onChange={this.onChangeGreetingTitle}
|
||||||
|
// isDisabled={isLoadingGreetingSave || isLoadingGreetingRestore}
|
||||||
|
placeholder={`${t("room")}`}
|
||||||
|
/>
|
||||||
|
</FieldContainer>
|
||||||
|
</div>
|
||||||
|
<SaveCancelButtons
|
||||||
|
onSaveClick={onSavePortalRename}
|
||||||
|
saveButtonLabel={t("Common:SaveButton")}
|
||||||
|
cancelButtonLabel={t("Common:CancelButton")}
|
||||||
|
displaySettings={true}
|
||||||
|
sectionWidth={sectionWidth}
|
||||||
|
/>
|
||||||
|
</StyledComponent>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default inject(({ auth, setup }) => {
|
||||||
|
const { theme } = auth.settingsStore;
|
||||||
|
const { setPortalRename } = setup;
|
||||||
|
|
||||||
|
return {
|
||||||
|
theme,
|
||||||
|
setPortalRename,
|
||||||
|
};
|
||||||
|
})(withTranslation(["Settings", "Common"])(observer(PortalRenaming)));
|
||||||
|
@ -219,10 +219,30 @@ class WhiteLabel extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onRestoreLogo = () => {
|
onRestoreLogo = () => {
|
||||||
|
const { restoreWhiteLabelSettings } = this.props;
|
||||||
console.log("restore button action");
|
console.log("restore button action");
|
||||||
|
restoreWhiteLabelSettings(true);
|
||||||
this.setState({ isCanvasProcessing: false });
|
this.setState({ isCanvasProcessing: false });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onSave = () => {
|
||||||
|
const { setWhiteLabelSettings } = this.props;
|
||||||
|
const { logoText, logoUrls } = this.state;
|
||||||
|
|
||||||
|
let fd = new FormData();
|
||||||
|
fd.append("logoText", logoText);
|
||||||
|
|
||||||
|
// TODO: Переделать с for
|
||||||
|
for (let i = 0; i < logoUrls.length; i++) {
|
||||||
|
fd.append(`logo[${i}][key]`, i);
|
||||||
|
fd.append(`logo[${i}][value]`, logoUrls[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = new URLSearchParams(fd);
|
||||||
|
|
||||||
|
setWhiteLabelSettings(data);
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { t, theme } = this.props;
|
const { t, theme } = this.props;
|
||||||
const {
|
const {
|
||||||
@ -308,7 +328,12 @@ class WhiteLabel extends React.Component {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{isPortalPaid && (
|
{isPortalPaid && (
|
||||||
<Link type="action" isHovered onClick={this.onChangeLogo}>
|
<Link
|
||||||
|
type="action"
|
||||||
|
color={theme.studio.settings.common.linkColorHelp}
|
||||||
|
isHovered
|
||||||
|
onClick={this.onChangeLogo}
|
||||||
|
>
|
||||||
{t("ChangeLogoButton")}
|
{t("ChangeLogoButton")}
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
@ -343,7 +368,12 @@ class WhiteLabel extends React.Component {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{isPortalPaid && (
|
{isPortalPaid && (
|
||||||
<Link type="action" isHovered onClick={this.onChangeLogo}>
|
<Link
|
||||||
|
type="action"
|
||||||
|
color={theme.studio.settings.common.linkColorHelp}
|
||||||
|
isHovered
|
||||||
|
onClick={this.onChangeLogo}
|
||||||
|
>
|
||||||
{t("ChangeLogoButton")}
|
{t("ChangeLogoButton")}
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
@ -377,7 +407,12 @@ class WhiteLabel extends React.Component {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{isPortalPaid && (
|
{isPortalPaid && (
|
||||||
<Link type="action" isHovered onClick={this.onChangeLogo}>
|
<Link
|
||||||
|
type="action"
|
||||||
|
color={theme.studio.settings.common.linkColorHelp}
|
||||||
|
isHovered
|
||||||
|
onClick={this.onChangeLogo}
|
||||||
|
>
|
||||||
{t("ChangeLogoButton")}
|
{t("ChangeLogoButton")}
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
@ -451,7 +486,12 @@ class WhiteLabel extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{isPortalPaid && (
|
{isPortalPaid && (
|
||||||
<Link type="action" isHovered onClick={this.onChangeLogo}>
|
<Link
|
||||||
|
type="action"
|
||||||
|
color={theme.studio.settings.common.linkColorHelp}
|
||||||
|
isHovered
|
||||||
|
onClick={this.onChangeLogo}
|
||||||
|
>
|
||||||
{t("ChangeLogoButton")}
|
{t("ChangeLogoButton")}
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
@ -465,7 +505,8 @@ class WhiteLabel extends React.Component {
|
|||||||
label={t("Common:SaveButton")}
|
label={t("Common:SaveButton")}
|
||||||
isLoading={false}
|
isLoading={false}
|
||||||
isDisabled={false}
|
isDisabled={false}
|
||||||
onClick={() => console.log("Save button action")}
|
//onClick={() => console.log("Save button action")}
|
||||||
|
onClick={this.onSave}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
@ -490,6 +531,8 @@ export default inject(({ setup, auth }) => {
|
|||||||
getWhiteLabelLogoText,
|
getWhiteLabelLogoText,
|
||||||
getWhiteLabelLogoSizes,
|
getWhiteLabelLogoSizes,
|
||||||
getWhiteLabelLogoUrls,
|
getWhiteLabelLogoUrls,
|
||||||
|
setWhiteLabelSettings,
|
||||||
|
restoreWhiteLabelSettings,
|
||||||
} = setup;
|
} = setup;
|
||||||
|
|
||||||
const { logoText, logoSizes: rawSizes, logoUrls } = common.whiteLabel;
|
const { logoText, logoSizes: rawSizes, logoUrls } = common.whiteLabel;
|
||||||
@ -502,5 +545,7 @@ export default inject(({ setup, auth }) => {
|
|||||||
getWhiteLabelLogoText,
|
getWhiteLabelLogoText,
|
||||||
getWhiteLabelLogoSizes,
|
getWhiteLabelLogoSizes,
|
||||||
getWhiteLabelLogoUrls,
|
getWhiteLabelLogoUrls,
|
||||||
|
setWhiteLabelSettings,
|
||||||
|
restoreWhiteLabelSettings,
|
||||||
};
|
};
|
||||||
})(withTranslation(["Settings", "Common"])(observer(WhiteLabel)));
|
})(withTranslation(["Settings", "Common"])(observer(WhiteLabel)));
|
||||||
|
@ -197,12 +197,55 @@ class SettingsSetupStore {
|
|||||||
this.setLogoUrls(Object.values(res));
|
this.setLogoUrls(Object.values(res));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setWhiteLabelSettings = async (data) => {
|
||||||
|
const response = await api.settings.setWhiteLabelSettings(data);
|
||||||
|
return Promise.resolve(response);
|
||||||
|
};
|
||||||
|
|
||||||
|
restoreWhiteLabelSettings = async (isDefault) => {
|
||||||
|
const res = await api.settings.restoreWhiteLabelSettings(isDefault);
|
||||||
|
};
|
||||||
|
|
||||||
setLanguageAndTime = async (lng, timeZoneID) => {
|
setLanguageAndTime = async (lng, timeZoneID) => {
|
||||||
const res = await api.settings.setLanguageAndTime(lng, timeZoneID);
|
const res = await api.settings.setLanguageAndTime(lng, timeZoneID);
|
||||||
//console.log("setLanguageAndTime", res);
|
//console.log("setLanguageAndTime", res);
|
||||||
//if (res) this.setPortalLanguageAndTime({ lng, timeZoneID });
|
//if (res) this.setPortalLanguageAndTime({ lng, timeZoneID });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setPortalRename = async (alias) => {
|
||||||
|
const res = await api.portal.setPortalRename(alias);
|
||||||
|
};
|
||||||
|
|
||||||
|
setMailDomainSettings = async (type, domains, inviteUsersAsVisitors) => {
|
||||||
|
const res = await api.settings.setMailDomainSettings(
|
||||||
|
type,
|
||||||
|
domains,
|
||||||
|
inviteUsersAsVisitors
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
setIpRestrictions = async (data) => {
|
||||||
|
const res = await api.settings.setIpRestrictions(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
setIpRestrictionsEnable = async (data) => {
|
||||||
|
const res = await api.settings.setIpRestrictionsEnable(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
setMessageSettings = async (turnOn) => {
|
||||||
|
const res = await api.settings.setMessageSettings(turnOn);
|
||||||
|
};
|
||||||
|
|
||||||
|
setCookieSettings = async (lifeTime) => {
|
||||||
|
const res = await api.settings.setCookieSettings(lifeTime);
|
||||||
|
};
|
||||||
|
|
||||||
|
setLifetimeAuditSettings = async (loginHistoryLifeTime) => {
|
||||||
|
const res = await api.settings.setLifetimeAuditSettings(
|
||||||
|
loginHistoryLifeTime
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
setGreetingTitle = async (greetingTitle) => {
|
setGreetingTitle = async (greetingTitle) => {
|
||||||
const res = await api.settings.setGreetingSettings(greetingTitle);
|
const res = await api.settings.setGreetingSettings(greetingTitle);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user