Merge branch 'hotfix/v2.6.1' of github.com:ONLYOFFICE/DocSpace-client into hotfix/v2.6.1
This commit is contained in:
commit
3b6efea18f
@ -37,6 +37,7 @@ import {
|
|||||||
ConflictResolveDialogProps,
|
ConflictResolveDialogProps,
|
||||||
TActiveItem,
|
TActiveItem,
|
||||||
} from "./ConflictResolveDialog.types";
|
} from "./ConflictResolveDialog.types";
|
||||||
|
import { Text } from "@docspace/shared/components/text";
|
||||||
|
|
||||||
const ConflictResolveDialog = (props: ConflictResolveDialogProps) => {
|
const ConflictResolveDialog = (props: ConflictResolveDialogProps) => {
|
||||||
const {
|
const {
|
||||||
@ -217,7 +218,7 @@ const ConflictResolveDialog = (props: ConflictResolveDialogProps) => {
|
|||||||
ns="Common"
|
ns="Common"
|
||||||
i18nKey="FileActionRequired"
|
i18nKey="FileActionRequired"
|
||||||
values={{ fileName: items[0].title }}
|
values={{ fileName: items[0].title }}
|
||||||
components={{ 1: <span className="bold" /> }}
|
components={{ 1: <span className="bold truncate" /> }}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||||
|
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Loader } from "@docspace/shared/components/loader";
|
import { Loader } from "@docspace/shared/components/loader";
|
||||||
import Section from "@docspace/shared/components/section";
|
import Section from "@docspace/shared/components/section";
|
||||||
@ -42,6 +42,8 @@ const Auth = (props) => {
|
|||||||
let [searchParams, setSearchParams] = useSearchParams();
|
let [searchParams, setSearchParams] = useSearchParams();
|
||||||
const { t } = useTranslation(["Common"]);
|
const { t } = useTranslation(["Common"]);
|
||||||
|
|
||||||
|
const [authorized, setAuthorized] = useState(false);
|
||||||
|
|
||||||
const referenceUrl = searchParams.get("referenceUrl");
|
const referenceUrl = searchParams.get("referenceUrl");
|
||||||
const isFileHandler =
|
const isFileHandler =
|
||||||
referenceUrl && referenceUrl.indexOf("filehandler.ashx") !== -1;
|
referenceUrl && referenceUrl.indexOf("filehandler.ashx") !== -1;
|
||||||
@ -63,6 +65,7 @@ const Auth = (props) => {
|
|||||||
try {
|
try {
|
||||||
new URL(referenceUrl);
|
new URL(referenceUrl);
|
||||||
if (isFileHandler && isExternalDownloading) {
|
if (isFileHandler && isExternalDownloading) {
|
||||||
|
setAuthorized(true);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
return window.location.replace(referenceUrl);
|
return window.location.replace(referenceUrl);
|
||||||
@ -86,6 +89,7 @@ const Auth = (props) => {
|
|||||||
return isFileHandler && isExternalDownloading ? (
|
return isFileHandler && isExternalDownloading ? (
|
||||||
<OperationContainer
|
<OperationContainer
|
||||||
url={referenceUrl}
|
url={referenceUrl}
|
||||||
|
authorized={authorized}
|
||||||
title={t("DownloadOperationTitle")}
|
title={t("DownloadOperationTitle")}
|
||||||
description={t("DownloadOperationDescription")}
|
description={t("DownloadOperationDescription")}
|
||||||
/>
|
/>
|
||||||
|
@ -67,6 +67,15 @@ const StyledCertificatesTable = styled.div`
|
|||||||
|
|
||||||
.column-row {
|
.column-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
|
.description {
|
||||||
|
color: ${(props) =>
|
||||||
|
props.theme.client.settings.integration.sso.textColor};
|
||||||
|
}
|
||||||
|
.error-description {
|
||||||
|
color: ${(props) =>
|
||||||
|
props.theme.client.settings.integration.sso.errorColor};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,12 +30,13 @@ import FileSvgUrl from "PUBLIC_DIR/images/icons/32/file.svg?url";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { inject, observer } from "mobx-react";
|
import { inject, observer } from "mobx-react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import moment from "moment-timezone";
|
||||||
|
import { ReactSVG } from "react-svg";
|
||||||
|
|
||||||
import { Text } from "@docspace/shared/components/text";
|
import { Text } from "@docspace/shared/components/text";
|
||||||
import { ContextMenuButton } from "@docspace/shared/components/context-menu-button";
|
import { ContextMenuButton } from "@docspace/shared/components/context-menu-button";
|
||||||
|
|
||||||
import StyledCertificatesTable from "../styled-containers/StyledCertificatesTable";
|
import StyledCertificatesTable from "../styled-containers/StyledCertificatesTable";
|
||||||
import { ReactSVG } from "react-svg";
|
|
||||||
|
|
||||||
const CertificatesTable = (props) => {
|
const CertificatesTable = (props) => {
|
||||||
const { t } = useTranslation(["SingleSignOn", "Common"]);
|
const { t } = useTranslation(["SingleSignOn", "Common"]);
|
||||||
@ -50,7 +51,6 @@ const CertificatesTable = (props) => {
|
|||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const renderRow = (certificate, index) => {
|
const renderRow = (certificate, index) => {
|
||||||
console.log(prefix, index);
|
|
||||||
const onEdit = () => {
|
const onEdit = () => {
|
||||||
prefix === "sp"
|
prefix === "sp"
|
||||||
? setSpCertificate(certificate, index, true)
|
? setSpCertificate(certificate, index, true)
|
||||||
@ -86,6 +86,8 @@ const CertificatesTable = (props) => {
|
|||||||
return `${new Date(date).toLocaleDateString()}`;
|
return `${new Date(date).toLocaleDateString()}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isExpired = moment().isAfter(moment(certificate.expiredDate));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={`certificate-${index}`} className="row">
|
<div key={`certificate-${index}`} className="row">
|
||||||
<ReactSVG src={FileSvgUrl} />
|
<ReactSVG src={FileSvgUrl} />
|
||||||
@ -97,7 +99,7 @@ const CertificatesTable = (props) => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="column-row">
|
<div className="column-row">
|
||||||
<Text
|
<Text
|
||||||
color="#a3a9ae"
|
className={isExpired ? "error-description" : "description"}
|
||||||
fontSize="12px"
|
fontSize="12px"
|
||||||
fontWeight={600}
|
fontWeight={600}
|
||||||
lineHeight="16px"
|
lineHeight="16px"
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
export interface IOperationContainer {
|
export interface IOperationContainer {
|
||||||
url?: string;
|
url?: string;
|
||||||
|
authorized: boolean;
|
||||||
title: string;
|
title: string;
|
||||||
description: string;
|
description: string;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ import { Text } from "../text";
|
|||||||
import PortalLogo from "../portal-logo/PortalLogo";
|
import PortalLogo from "../portal-logo/PortalLogo";
|
||||||
|
|
||||||
const OperationContainer = (props: IOperationContainer) => {
|
const OperationContainer = (props: IOperationContainer) => {
|
||||||
const { url, title, description } = props;
|
const { url, authorized, title, description } = props;
|
||||||
|
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
@ -46,8 +46,8 @@ const OperationContainer = (props: IOperationContainer) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (url) window.location.replace(url);
|
if (url && authorized) window.location.replace(url);
|
||||||
}, [url]);
|
}, [url, authorized]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledOperationContainer>
|
<StyledOperationContainer>
|
||||||
|
@ -39,6 +39,12 @@ const StyledModalDialog = styled(ModalDialog)`
|
|||||||
.bold {
|
.bold {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.truncate {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.select-action {
|
.select-action {
|
||||||
@ -76,6 +82,10 @@ const StyledModalDialog = styled(ModalDialog)`
|
|||||||
color: #a3a9ae;
|
color: #a3a9ae;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.conflict-resolve_file-name {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default StyledModalDialog;
|
export default StyledModalDialog;
|
||||||
|
@ -115,7 +115,9 @@ const ConflictResolve = (props: ConflictResolveProps) => {
|
|||||||
>
|
>
|
||||||
<ModalDialog.Header>{headerLabel}</ModalDialog.Header>
|
<ModalDialog.Header>{headerLabel}</ModalDialog.Header>
|
||||||
<ModalDialog.Body>
|
<ModalDialog.Body>
|
||||||
<Text className="message">{messageText}</Text>
|
<Text truncate className="message conflict-resolve_file-name ">
|
||||||
|
{messageText}
|
||||||
|
</Text>
|
||||||
<Text className="select-action">{selectActionText}</Text>
|
<Text className="select-action">{selectActionText}</Text>
|
||||||
<RadioButtonGroup
|
<RadioButtonGroup
|
||||||
className="conflict-resolve-radio-button"
|
className="conflict-resolve-radio-button"
|
||||||
|
@ -3064,6 +3064,8 @@ export const getBaseTheme = () => {
|
|||||||
linkColor: link,
|
linkColor: link,
|
||||||
|
|
||||||
sso: {
|
sso: {
|
||||||
|
textColor: gray,
|
||||||
|
errorColor: lightErrorStatus,
|
||||||
toggleContentBackground: grayLight,
|
toggleContentBackground: grayLight,
|
||||||
iconButton: black,
|
iconButton: black,
|
||||||
iconButtonDisabled: gray,
|
iconButtonDisabled: gray,
|
||||||
|
@ -3043,6 +3043,8 @@ const Dark: TTheme = {
|
|||||||
linkColor: "#E06A1B",
|
linkColor: "#E06A1B",
|
||||||
|
|
||||||
sso: {
|
sso: {
|
||||||
|
textColor: grayDark,
|
||||||
|
errorColor: darkErrorStatus,
|
||||||
toggleContentBackground: "#474747",
|
toggleContentBackground: "#474747",
|
||||||
iconButton: white,
|
iconButton: white,
|
||||||
iconButtonDisabled: "#333",
|
iconButtonDisabled: "#333",
|
||||||
|
Loading…
Reference in New Issue
Block a user