From 5cdb23bc5d51f3b2a47ead14230ad8c572766c87 Mon Sep 17 00:00:00 2001 From: Maria-Sukhova Date: Fri, 9 Jun 2023 10:56:28 +0300 Subject: [PATCH 01/15] added translations --- common/ASC.Data.Backup.Core/BackupResource.ru.resx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/ASC.Data.Backup.Core/BackupResource.ru.resx b/common/ASC.Data.Backup.Core/BackupResource.ru.resx index bfe9935e1d..45f5a6da9d 100644 --- a/common/ASC.Data.Backup.Core/BackupResource.ru.resx +++ b/common/ASC.Data.Backup.Core/BackupResource.ru.resx @@ -120,4 +120,7 @@ Установка пароля + + Файл резервной копии недействителен. Пожалуйста, используйте файл, созданный в ONLYOFFICE v11.5 или в более поздней версии. + \ No newline at end of file From 0080212a4b05d1b0fdf0aac4ea3d57657491d118 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Fri, 9 Jun 2023 12:14:40 +0300 Subject: [PATCH 02/15] Common: Components: Article: fix style --- packages/common/components/Article/styled-article.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/common/components/Article/styled-article.js b/packages/common/components/Article/styled-article.js index 0a12cd204d..500bc368b0 100644 --- a/packages/common/components/Article/styled-article.js +++ b/packages/common/components/Article/styled-article.js @@ -118,6 +118,7 @@ const StyledArticle = styled.article` overflow-x: hidden !important; padding: 0 20px !important; + margin-bottom: 0px !important; @media ${tablet} { padding: 0 8px !important; From eb54e1bf6cd2df1fee8d1fc7b137c956735b6219 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Fri, 9 Jun 2023 14:32:49 +0300 Subject: [PATCH 03/15] Client: Wizard: delete useless request --- packages/client/src/pages/Wizard/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/client/src/pages/Wizard/index.js b/packages/client/src/pages/Wizard/index.js index 651745b1bf..73f4b700f6 100644 --- a/packages/client/src/pages/Wizard/index.js +++ b/packages/client/src/pages/Wizard/index.js @@ -67,7 +67,6 @@ const Wizard = (props) => { hashSettings, setPortalOwner, setWizardComplete, - getPortalSettings, isLicenseRequired, setLicense, licenseUpload, @@ -253,7 +252,6 @@ const Wizard = (props) => { analytics ); setWizardComplete(); - getPortalSettings(); history.push(combineUrl(window.DocSpaceConfig?.proxy?.url, "/")); } catch (error) { console.error(error); @@ -488,7 +486,6 @@ export default inject(({ auth, wizard }) => { timezone, urlLicense, hashSettings, - getPortalSettings, setWizardComplete, getPortalTimezones, getPortalPasswordSettings, @@ -522,7 +519,6 @@ export default inject(({ auth, wizard }) => { machineName, isLicenseRequired, licenseUpload, - getPortalSettings, setWizardComplete, getPortalPasswordSettings, getPortalTimezones, From 6e0efaeb0d1e35fdabbf04ce426270a4e0113dfc Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Fri, 9 Jun 2023 14:33:06 +0300 Subject: [PATCH 04/15] Common: SettingsStore: fix warning --- packages/common/store/SettingsStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/store/SettingsStore.js b/packages/common/store/SettingsStore.js index f96dfcca94..ec45f6f4ef 100644 --- a/packages/common/store/SettingsStore.js +++ b/packages/common/store/SettingsStore.js @@ -392,7 +392,7 @@ class SettingsStore { this.pluginOptions = origSettings.plugins.allow; } - if (origSettings.tenantAlias) { + if (origSettings?.tenantAlias) { this.setTenantAlias(origSettings.tenantAlias); } }; From 23ff9ddded8ff9c2481e5cd6d4186f3c875852be Mon Sep 17 00:00:00 2001 From: Tatiana Lopaeva Date: Fri, 9 Jun 2023 16:20:31 +0300 Subject: [PATCH 05/15] Web: Added save article hiding to local storage. --- packages/common/components/Article/index.js | 13 +++-- .../Article/sub-components/article-header.js | 42 ++++++++------- .../ArticleFolderLoader.js | 54 ++++++++++++++----- .../StyledArticleFolderLoader.js | 13 ++++- .../ArticleHeaderLoader.js | 17 ++++-- .../StyledArticleHeader.js | 7 +-- packages/common/store/SettingsStore.js | 8 ++- 7 files changed, 109 insertions(+), 45 deletions(-) diff --git a/packages/common/components/Article/index.js b/packages/common/components/Article/index.js index 866337e136..f6bc1fad40 100644 --- a/packages/common/components/Article/index.js +++ b/packages/common/components/Article/index.js @@ -47,8 +47,10 @@ const Article = ({ ...rest }) => { const [articleHeaderContent, setArticleHeaderContent] = React.useState(null); - const [articleMainButtonContent, setArticleMainButtonContent] = - React.useState(null); + const [ + articleMainButtonContent, + setArticleMainButtonContent, + ] = React.useState(null); const [articleBodyContent, setArticleBodyContent] = React.useState(null); const [correctTabletHeight, setCorrectTabletHeight] = React.useState(null); @@ -90,6 +92,8 @@ const Article = ({ }, [children]); const sizeChangeHandler = React.useCallback(() => { + const showArticle = JSON.parse(localStorage.getItem("showArticle")); + if (isMobileOnly || isMobileUtils() || window.innerWidth === 375) { setShowText(true); setIsMobileArticle(true); @@ -98,8 +102,11 @@ const Article = ({ ((isTabletUtils() && window.innerWidth !== 375) || isMobile) && !isMobileOnly ) { - setShowText(false); setIsMobileArticle(true); + + if (showArticle) return; + + setShowText(false); } if (isDesktopUtils() && !isMobile) { setShowText(true); diff --git a/packages/common/components/Article/sub-components/article-header.js b/packages/common/components/Article/sub-components/article-header.js index a09f079273..755d658897 100644 --- a/packages/common/components/Article/sub-components/article-header.js +++ b/packages/common/components/Article/sub-components/article-header.js @@ -35,29 +35,35 @@ const ArticleHeader = ({ : getLogoFromPath(whiteLabelLogoUrls[0].path.light); if (isMobileOnly) return <>; - return ( - - {isTabletView && isBurgerLoading ? ( - - ) : ( + + const isLoadingComponent = isTabletView ? ( + + ) : ( + + ); + + const mainComponent = ( + <> + {isTabletView && ( )} + + {isTabletView ? ( + + ) : ( + + + + )} + + + ); - {!isTabletView && isBurgerLoading ? ( - - ) : ( - - {isTabletView ? ( - - ) : ( - - - - )} - - )} + return ( + + {isBurgerLoading ? isLoadingComponent : mainComponent} ); }; diff --git a/packages/common/components/Loaders/ArticleFolderLoader/ArticleFolderLoader.js b/packages/common/components/Loaders/ArticleFolderLoader/ArticleFolderLoader.js index 5fec6e6862..161aa76afc 100644 --- a/packages/common/components/Loaders/ArticleFolderLoader/ArticleFolderLoader.js +++ b/packages/common/components/Loaders/ArticleFolderLoader/ArticleFolderLoader.js @@ -12,7 +12,6 @@ const ArticleFolderLoader = ({ className, style, showText, - isVisitor, ...rest }) => { @@ -25,27 +24,54 @@ const ArticleFolderLoader = ({ > {isVisitor ? ( <> - - - + + + - - + + ) : ( <> - - - - + + + + - - - - + + + + )} diff --git a/packages/common/components/Loaders/ArticleFolderLoader/StyledArticleFolderLoader.js b/packages/common/components/Loaders/ArticleFolderLoader/StyledArticleFolderLoader.js index 170e678f7a..821e78fd2a 100644 --- a/packages/common/components/Loaders/ArticleFolderLoader/StyledArticleFolderLoader.js +++ b/packages/common/components/Loaders/ArticleFolderLoader/StyledArticleFolderLoader.js @@ -51,6 +51,17 @@ const StyledBlock = styled.div` @media ${tablet} { margin-bottom: 24px; } + + .article-folder-loader { + @media ${tablet} { + ${(props) => (props.showText ? "width: 200px" : "width: 20px")}; + } + + ${isMobile && + css` + ${(props) => (props.showText ? "width: 200px" : "width: 20px")}; + `} + } `; const StyledRectangleLoader = styled(RectangleLoader)` @@ -60,14 +71,12 @@ const StyledRectangleLoader = styled(RectangleLoader)` @media ${tablet} { height: 20px; - width: 20px; padding: 0 0 24px; } ${isMobile && css` height: 20px; - width: 20px; padding: 0 0 24px; `} diff --git a/packages/common/components/Loaders/ArticleHeaderLoader/ArticleHeaderLoader.js b/packages/common/components/Loaders/ArticleHeaderLoader/ArticleHeaderLoader.js index b7946834c1..a5f772ad7d 100644 --- a/packages/common/components/Loaders/ArticleHeaderLoader/ArticleHeaderLoader.js +++ b/packages/common/components/Loaders/ArticleHeaderLoader/ArticleHeaderLoader.js @@ -1,9 +1,11 @@ import React from "react"; import PropTypes from "prop-types"; +import { inject, observer } from "mobx-react"; + import StyledContainer from "./StyledArticleHeader"; import RectangleLoader from "../RectangleLoader"; -const ArticleHeaderLoader = ({ id, className, style, ...rest }) => { +const ArticleHeaderLoader = ({ id, className, style, showText, ...rest }) => { const { title, width, @@ -17,7 +19,12 @@ const ArticleHeaderLoader = ({ id, className, style, ...rest }) => { animate, } = rest; return ( - + { + return { + showText: auth.settingsStore.showText, + }; +})(observer(ArticleHeaderLoader)); diff --git a/packages/common/components/Loaders/ArticleHeaderLoader/StyledArticleHeader.js b/packages/common/components/Loaders/ArticleHeaderLoader/StyledArticleHeader.js index dd34c070b2..52788cb36c 100644 --- a/packages/common/components/Loaders/ArticleHeaderLoader/StyledArticleHeader.js +++ b/packages/common/components/Loaders/ArticleHeaderLoader/StyledArticleHeader.js @@ -5,12 +5,13 @@ const StyledContainer = styled.div` max-width: 211px; margin-left: 1px; - @media ${tablet} { + ${isMobile} { margin-left: 0; } - ${isMobile} { - margin-left: 0; + @media ${tablet} { + + ${(props) => (props.showText ? "margin-left: 10px" : "margin-left:0")}; } `; diff --git a/packages/common/store/SettingsStore.js b/packages/common/store/SettingsStore.js index f96dfcca94..bb1d9b94aa 100644 --- a/packages/common/store/SettingsStore.js +++ b/packages/common/store/SettingsStore.js @@ -84,7 +84,7 @@ class SettingsStore { isHeaderVisible = false; isTabletView = false; - showText = false; + showText = JSON.parse(localStorage.getItem("showArticle")) ?? false; articleOpen = false; isMobileArticle = false; @@ -650,7 +650,11 @@ class SettingsStore { }; toggleShowText = () => { - this.showText = !this.showText; + const reverseValue = !this.showText; + + localStorage.setItem("showArticle", reverseValue); + + this.showText = reverseValue; }; setArticleOpen = (articleOpen) => { From b55b91f5e9c1bacdae2bcfec37efc4e89e79ee1b Mon Sep 17 00:00:00 2001 From: Maria-Sukhova Date: Fri, 9 Jun 2023 19:10:09 +0300 Subject: [PATCH 06/15] added translations --- .../BackupResource.es.resx | 126 +++++++++++ .../Resources/MigrationResource.es.resx | 204 ++++++++++++++++++ .../Resources/MigrationResource.fr.resx | 204 ++++++++++++++++++ .../AuditReportResource.es.resx | 48 +++++ .../AuditReportResource.fr.resx | 48 +++++ .../Resources/FilesCommonResource.es.resx | 45 ++++ .../Resources/FilesCommonResource.fr.resx | 45 ++++ .../FilesPatternResource.Designer.cs | 2 +- .../FilesPatternResource.fr.resx | 27 +++ .../NotifyService/FilesPatternResource.resx | 2 +- .../PublicResources/Resource.es.resx | 51 +++++ .../PublicResources/Resource.fr.resx | 21 ++ .../WebstudioNotifyPatternResource.es.resx | 24 +++ .../WebstudioNotifyPatternResource.fr.resx | 123 +++++++++++ 14 files changed, 968 insertions(+), 2 deletions(-) create mode 100644 common/ASC.Data.Backup.Core/BackupResource.es.resx create mode 100644 common/ASC.Migration/Resources/MigrationResource.es.resx create mode 100644 common/ASC.Migration/Resources/MigrationResource.fr.resx diff --git a/common/ASC.Data.Backup.Core/BackupResource.es.resx b/common/ASC.Data.Backup.Core/BackupResource.es.resx new file mode 100644 index 0000000000..c35b8728ec --- /dev/null +++ b/common/ASC.Data.Backup.Core/BackupResource.es.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Establecer contraseña + + + El archivo de copia de seguridad no es válido. Por favor, utilice un archivo creado en ONLYOFFICE v11.5 o superior. + + \ No newline at end of file diff --git a/common/ASC.Migration/Resources/MigrationResource.es.resx b/common/ASC.Migration/Resources/MigrationResource.es.resx new file mode 100644 index 0000000000..36ab8c8eaf --- /dev/null +++ b/common/ASC.Migration/Resources/MigrationResource.es.resx @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Análisis de la base de datos + + + Contactos de correo + + + Calendario + + + Calendario + + + Contactos + + + Correo + + + Correo + + + La migración se ha cancelado + + + Migración de grupo {0} ({1}/{2}) + + + Migración de usuarios {0} ({1}/{2}) + + + Migrando contactos de usuario {0} ({1}/{2}) + + + Migrando archivos de usuario {0} ({1}/{2}) + + + Migración del calendario de usuario {0} ({1}/{2}) + + + La migración se ha completado + + + Personas + + + Preparando la migración + + + El procesamiento de datos se ha completado + + + Procesamiento de datos... + + + Usuarios + + + Iniciando el procesamiento de datos... + + + La descompresión se ha completado... + + + Descomprimiendo... + + + Documentos + + + Échec de l'importation de l'utilisateur : {0} ({1}/{2}) + + + Effacement des données temporaires + + + Fichiers de Google Drive + + + Fichiers de l’utilisateur + + + Groupes + + \ No newline at end of file diff --git a/common/ASC.Migration/Resources/MigrationResource.fr.resx b/common/ASC.Migration/Resources/MigrationResource.fr.resx new file mode 100644 index 0000000000..9fa93f8dbf --- /dev/null +++ b/common/ASC.Migration/Resources/MigrationResource.fr.resx @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Effacement des données temporaires + + + Traitement des données... + + + Traitement des données terminé + + + Analyse de la base de données + + + Contacts de Mail + + + Fichiers de Google Drive + + + Migration de groupe {0} ({1}/{2}) + + + Migration des contacts de l'utilisateur {0} ({1}/{2}) + + + Migration des fichiers de l'utilisateur {0} ({1}/{2}) + + + Migration annulée + + + Migration terminée + + + Calendrier + + + Groupes + + + Mail + + + Utilisateurs + + + Contacts + + + Fichiers de l’utilisateur + + + Calendrier + + + Documents + + + Mail + + + Personnes + + + Préparation de la migration + + + Démarrage du traitement des données... + + + Dézippage... + + + Dézippage terminé... + + + Migration du calendrier de l'utilisateur {0} ({1}/{2}) + + + Migration de l'utilisateur {0} ({1}/{2}) + + + Échec de l'importation de l'utilisateur : {0} ({1}/{2}) + + \ No newline at end of file diff --git a/common/services/ASC.AuditTrail/AuditReportResource.es.resx b/common/services/ASC.AuditTrail/AuditReportResource.es.resx index 6bd2a7c1d5..731055d61f 100644 --- a/common/services/ASC.AuditTrail/AuditReportResource.es.resx +++ b/common/services/ASC.AuditTrail/AuditReportResource.es.resx @@ -670,4 +670,52 @@ Papelera vaciada + + {0} appointed: {1} {0} designado: {1} + + + Etiquetas añadidas: [{1}] + + + Etiquetas eliminadas: [{1}] + + + Etiquetas eliminadas: {0} + + + Etiqueta creada: {0} + + + Enlace creado. Rol: {1} + + + Enlace actualizado. Rol: {1} + + + El enlace se ha eliminado + + + El logotipo se ha creado + + + El logotipo se ha eliminado + + + La sala se ha desarchivado + + + Sala renombrada: {0} + + + La sala se ha archivado + + + La sala se ha eliminado + + + Usuario añadido: {0}. Rol: {1} + + + Usuario eliminado: {0} + \ No newline at end of file diff --git a/common/services/ASC.AuditTrail/AuditReportResource.fr.resx b/common/services/ASC.AuditTrail/AuditReportResource.fr.resx index 11f3546538..b4a0dd2228 100644 --- a/common/services/ASC.AuditTrail/AuditReportResource.fr.resx +++ b/common/services/ASC.AuditTrail/AuditReportResource.fr.resx @@ -670,4 +670,52 @@ Corbeille vidée + + Étiquettes ajoutées : [{1}] + + + Étiquettes supprimées : [{1}] + + + Salle archivée + + + Utilisateur ajouté : {0}. Rôle : {1} + + + Salle supprimée + + + Lien créé. Rôle : {1} + + + Lien supprimé + + + Lien mis à jour. Rôle : {1} + + + Logo créé + + + Logo supprimé + + + Utilisateur supprimé : {0} + + + Salle renommée : {0} + + + Salle non archivée + + + {0} nommé : {1} + + + Étiquette créée : {0} + + + Étiquettes supprimées : {0} + \ No newline at end of file diff --git a/products/ASC.Files/Core/Resources/FilesCommonResource.es.resx b/products/ASC.Files/Core/Resources/FilesCommonResource.es.resx index 99f682a80f..a16ebdcf88 100644 --- a/products/ASC.Files/Core/Resources/FilesCommonResource.es.resx +++ b/products/ASC.Files/Core/Resources/FilesCommonResource.es.resx @@ -371,4 +371,49 @@ Administrador de la sala + + Este proveedor ya está conectado a la sala + + + Proveedor no válido + + + No es posible utilizar esta carpeta para almacenar la sala + + + La nueva versión no puede ser la misma que la actual + + + El enlace de invitación no es válido o su validez ha expirado + + + El rol no está disponible para este tipo de usuario + + + No tiene permisos para editar la sala + + + No tiene permisos suficientes para archivar la sala + + + No tiene permisos para copiar algo a esta carpeta + + + No tiene permisos suficientes para copiar la carpeta + + + No tiene permisos suficientes para copiar el archivo + + + No tiene permisos suficientes para copiar la carpeta + + + No tiene permisos suficientes para desarchivar la sala + + + No puede anclar una sala + + + No puede editar salas archivadas + \ No newline at end of file diff --git a/products/ASC.Files/Core/Resources/FilesCommonResource.fr.resx b/products/ASC.Files/Core/Resources/FilesCommonResource.fr.resx index b8187e5788..64de222533 100644 --- a/products/ASC.Files/Core/Resources/FilesCommonResource.fr.resx +++ b/products/ASC.Files/Core/Resources/FilesCommonResource.fr.resx @@ -370,4 +370,49 @@ Administrateur de la salle + + La nouvelle version ne peut pas être identique à la version actuelle + + + Vous n'avez pas l'autorisation de copier le fichier + + + Vous n'avez pas l'autorisation de copier le dossier + + + Fournisseur non valide + + + Il n'est pas possible d'utiliser ce dossier pour stocker la salle + + + Le lien d'invitation n'est pas valide ou sa validité a expiré + + + Ce fournisseur est déjà connecté à la salle + + + Le rôle n'est pas disponible pour ce type d'utilisateur + + + Vous n'avez pas l'autorisation d'archiver la salle + + + Vous n'avez pas l'autorisation de copier dans ce dossier + + + Vous n'avez pas la permission d'éditer la salle + + + Vous n'avez pas l'autorisation de déplacer vers ce dossier + + + Vous n'avez pas suffisamment d'autorisation pour désarchiver la salle + + + Vous ne pouvez pas modifier les salles archivées + + + Vous ne pouvez pas épingler une salle + \ No newline at end of file diff --git a/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.Designer.cs b/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.Designer.cs index a9ccdcd6db..a002f5485f 100644 --- a/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.Designer.cs +++ b/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.Designer.cs @@ -279,7 +279,7 @@ namespace ASC.Files.Core.Services.NotifyService { } /// - /// Looks up a localized string similar to Access granted to the encrypted document: $DocumentTitle. + /// Looks up a localized string similar to Access granted to document: $DocumentTitle. /// public static string subject_ShareEncryptedDocument_push { get { diff --git a/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.fr.resx b/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.fr.resx index 20d09d14ff..14c6c3c4d4 100644 --- a/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.fr.resx +++ b/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.fr.resx @@ -125,4 +125,31 @@ $Message   $__AuthorName a supprimé la salle : $RoomTitle + + Tous les signataires ont rempli $DocumentTitle + + + Changement de statut du signe + + + Notification DocSpace. Mentionné dans le document + + + Mentionné dans le document + + + L'envoi est terminé. + + + Notification DocSpace. Salle supprimée + + + Accès accordé au document : $DocumentTitle + + + Accès accordé au document chiffré : $DocumentTitle + + + Accès autorisé au dossier : $DocumentTitle + \ No newline at end of file diff --git a/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.resx b/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.resx index 1be14a67ab..cfc8cc6439 100644 --- a/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.resx +++ b/products/ASC.Files/Core/Services/NotifyService/FilesPatternResource.resx @@ -143,7 +143,7 @@ $Message Mailing is complete. - Access granted to the encrypted document: $DocumentTitle + Access granted to document: $DocumentTitle Access granted to folder: $DocumentTitle diff --git a/web/ASC.Web.Core/PublicResources/Resource.es.resx b/web/ASC.Web.Core/PublicResources/Resource.es.resx index e18f2539c0..5358389df1 100644 --- a/web/ASC.Web.Core/PublicResources/Resource.es.resx +++ b/web/ASC.Web.Core/PublicResources/Resource.es.resx @@ -937,4 +937,55 @@ Habilite la aplicación para publicar fácilmente documentos en su sitio web de WordPress. {0}En la página de Desarrolladores de Wordpress, cree una nueva aplicación para la integración de ONLYOFFICE. Pegue los datos que recibió a continuación: + + Habilite esta aplicación para crear bibliografías en los editores ONLYOFFICE. {0}Vaya a la página de registro de EasyBib y rellene el formulario para añadir la integración de ONLYOFFICE. Después de obtener la clave de la aplicación, péguela a continuación: + + + Habilite la aplicación para iniciar sesión en el portal utilizando una cuenta de Microsoft. + + + Conecte la cuenta de Telegram para recibir notificaciones del portal a través de Telegram. + + + Introduzca el nombre del contenedor privado de Selectel para guardar las copias de seguridad. + + + Introduzca la dirección URL del contenedor privado Rackspace para guardar las copias de seguridad. + + + Para recibir notificaciones del portal a través de Telegram, habilite el bot de Telegram. Puede crear un nuevo bot usando BotFather en Telegram Desktop. Para usar este bot, los usuarios del portal deben habilitar las notificaciones a través de Telegram en su página de perfil. {0}Pegue el nombre de usuario del bot y el token que recibió en los campos de abajo. + + + Application Client ID ID del cliente de aplicación + + + Contenedor + + + Espacio en la nube para sus documentos ofimáticos + + + Enter the AWS region where your Amazon bucket resides. Introduzca la región de AWS en la que reside su cubo de Amazon. + + + Introduzca el nombre del contenedor privado de Selectel para almacenar las copias de seguridad. + + + Enter the name of the Selectel public container for storing backups. Introduzca el nombre del contenedor público de Selectel para almacenar las copias de seguridad. + + + Introduzca la región donde se encuentran sus contenedores de Rackspace. + + + Introduzca el nombre único del cubo de Amazon para almacenar las copias de seguridad. + + + Bot username Nombre de usuario del bot + + + Bot token Token del bot + + + Introduzca la dirección URL del contenedor público de Rackspace para almacenar las copias de seguridad. + \ No newline at end of file diff --git a/web/ASC.Web.Core/PublicResources/Resource.fr.resx b/web/ASC.Web.Core/PublicResources/Resource.fr.resx index e5d0282dd9..57e9c924fc 100644 --- a/web/ASC.Web.Core/PublicResources/Resource.fr.resx +++ b/web/ASC.Web.Core/PublicResources/Resource.fr.resx @@ -967,4 +967,25 @@ Connectez le service Selectel Cloud Storage pour sauvegarder et stocker les données de votre portail. {0}Obtenez les données d'accès utilisateur avec les permissions de lecture ou d'édition aux containeurs où vous envisagez de stocker les sauvegardes de vos données et collez-les ci-dessous : + + ID du client de l'application + + + Autoriser l’application de se connecter au portail avec un compte Microsoft. + + + Nom d'utilisateur du bot + + + Jeton de bot + + + Connectez votre compte Telegram pour recevoir les notifications du portail via Telegram. + + + Pour recevoir les notifications du portail via Telegram, activez le bot Telegram. Vous pouvez créer un nouveau bot à l'aide de BotFather dans Telegram Desktop. Pour utiliser ce bot, les utilisateurs du portail doivent activer les notifications Telegram sur leur page de profil. {0}Collez le nom d'utilisateur du bot et le jeton que vous avez reçu dans les champs ci-dessous. + + + Espace cloud pour vos documents bureautiques + \ No newline at end of file diff --git a/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.es.resx b/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.es.resx index f9758a6fc0..37efeb0247 100644 --- a/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.es.resx +++ b/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.es.resx @@ -1111,4 +1111,28 @@ El enlace es válido durante 7 días. CONFIRMAR + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + + + ¡Bienvenido/a a ONLYOFFICE DocSpace! + \ No newline at end of file diff --git a/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.fr.resx b/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.fr.resx index 82665926d4..37d2f5d49c 100644 --- a/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.fr.resx +++ b/web/ASC.Web.Core/PublicResources/WebstudioNotifyPatternResource.fr.resx @@ -1653,4 +1653,127 @@ Bien à vous, équipe ONLYOFFICE "www.onlyoffice.com":”https://www.onlyoffice.com/fr/” + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Quelques conseils pour travailler efficacement sur vos documents + + + Quelques conseils pour travailler efficacement sur vos documents + + + Quelques conseils pour travailler efficacement sur vos documents + + + Découvrez l'abonnement business d’ONLYOFFICE DocSpace + + + Découvrez l'abonnement business d’ONLYOFFICE DocSpace + + + Découvrez l'abonnement business d’ONLYOFFICE DocSpace + + + Découvrez l'abonnement business d’ONLYOFFICE DocSpace + + + Votre ONLYOFFICE DocSpace sera supprimé + + + ONLYOFFICE DocSpace a été désactivé + + + Obtenez des applications ONLYOFFICE gratuites + + + Obtenez des applications ONLYOFFICE gratuites + + + Obtenez des applications ONLYOFFICE gratuites + + + Obtenez des applications ONLYOFFICE gratuites + + + Obtenez des applications ONLYOFFICE gratuites + + + Bienvenue sur ONLYOFFICE DocSpace ! + + + Obtenez des applications ONLYOFFICE gratuites + + + Obtenez des applications ONLYOFFICE gratuites + + + Rejoindre ONLYOFFICE DocSpace + + + Votre abonnement ONLYOFFICE DocSpace va expirer + + + Période de grâce pour votre ONLYOFFICE DocSpace a expiré + + + La période de grâce pour votre ONLYOFFICE DocSpace expire demain + + + Configurez votre ONLYOFFICE DocSpace + + + h1.Message du portail "${__VirtualRootPath}":"${__VirtualRootPath}" + +Nom : $UserName + +E-mail : $UserEmail + +$Body + + + Connectez-vous à votre compte ONLYOFFICE Personal + + + Confirmez le changement de votre mot de passe + + + Demande du service des ventes + + + ACCEPTER + + + Rejoindre ONLYOFFICE DocSpace + + + Quoi de neuf sur votre portail pour le $Date + + + Quelques conseils pour travailler efficacement sur vos documents + + + CONFIRMER + + + Période de grâce pour votre ONLYOFFICE DocSpace activé + \ No newline at end of file From 680d75b213bc917887955d18021469ae1adb5e19 Mon Sep 17 00:00:00 2001 From: Alexey Bannov Date: Sat, 10 Jun 2023 09:33:59 +0300 Subject: [PATCH 07/15] s3: added support presigned cdn url for Media/Image viewer --- common/ASC.Data.Storage/BaseStorage.cs | 6 + common/ASC.Data.Storage/IDataStore.cs | 18 +++ common/ASC.Data.Storage/S3/S3Storage.cs | 106 +++++++++++++++--- .../Core/Core/Dao/TeamlabDao/FileDao.cs | 16 +++ 4 files changed, 130 insertions(+), 16 deletions(-) diff --git a/common/ASC.Data.Storage/BaseStorage.cs b/common/ASC.Data.Storage/BaseStorage.cs index 4b5e037659..60b9473e52 100644 --- a/common/ASC.Data.Storage/BaseStorage.cs +++ b/common/ASC.Data.Storage/BaseStorage.cs @@ -30,6 +30,7 @@ public abstract class BaseStorage : IDataStore { public IQuotaController QuotaController { get; set; } public virtual bool IsSupportInternalUri => true; + public virtual bool IsSupportCdnUri => false; public virtual bool IsSupportedPreSignedUri => true; public virtual bool IsSupportChunking => false; internal string Modulename { get; set; } @@ -154,6 +155,11 @@ public abstract class BaseStorage : IDataStore return null; } + public virtual Task GetCdnPreSignedUriAsync(string domain, string path, TimeSpan expire, IEnumerable headers) + { + return null; + } + public abstract Task GetReadStreamAsync(string domain, string path); public abstract Task GetReadStreamAsync(string domain, string path, long offset); diff --git a/common/ASC.Data.Storage/IDataStore.cs b/common/ASC.Data.Storage/IDataStore.cs index 7d263731bf..63f71fb914 100644 --- a/common/ASC.Data.Storage/IDataStore.cs +++ b/common/ASC.Data.Storage/IDataStore.cs @@ -63,12 +63,20 @@ public interface IDataStore /// /// Task GetPreSignedUriAsync(string domain, string path, TimeSpan expire, IEnumerable headers); + /// /// Supporting generate uri to the file /// /// bool IsSupportInternalUri { get; } + /// + /// Supporting generate uri to the file + /// + /// + bool IsSupportCdnUri { get; } + + /// /// Get absolute Uri for html links /// @@ -79,6 +87,16 @@ public interface IDataStore /// Task GetInternalUriAsync(string domain, string path, TimeSpan expire, IEnumerable headers); + /// + /// Get absolute Uri via CDN for html links + /// + /// + /// + /// + /// + /// + Task GetCdnPreSignedUriAsync(string domain, string path, TimeSpan expire, IEnumerable headers); + /// /// A stream of read-only. In the case of the C3 stream NetworkStream general, and with him we have to work /// Very carefully as a Jedi cutter groin lightsaber. diff --git a/common/ASC.Data.Storage/S3/S3Storage.cs b/common/ASC.Data.Storage/S3/S3Storage.cs index 0874816339..819b0ca7e2 100644 --- a/common/ASC.Data.Storage/S3/S3Storage.cs +++ b/common/ASC.Data.Storage/S3/S3Storage.cs @@ -33,6 +33,7 @@ namespace ASC.Data.Storage.S3; [Scope] public class S3Storage : BaseStorage { + public override bool IsSupportCdnUri => true; public override bool IsSupportChunking => true; private readonly List _domains = new List(); @@ -50,8 +51,10 @@ public class S3Storage : BaseStorage private readonly ServerSideEncryptionMethod _sse = ServerSideEncryptionMethod.AES256; private bool _useHttp = true; private bool _lowerCasing = true; - private bool _revalidateCloudFront; - private string _distributionId = ""; + private bool _cdnEnabled; + private string _cdnKeyPairId; + private string _cdnPrivateKeyPath; + private string _cdnDistributionDomain; private string _subDir = ""; private EncryptionMethod _encryptionMethod = EncryptionMethod.None; @@ -145,9 +148,80 @@ public class S3Storage : BaseStorage } using var client = GetClient(); + return Task.FromResult(MakeUri(client.GetPreSignedURL(pUrlRequest))); } + public override Task GetCdnPreSignedUriAsync(string domain, string path, TimeSpan expire, IEnumerable headers) + { + if (!_cdnEnabled) return GetInternalUriAsync(domain, path, expire, headers); + + var proto = SecureHelper.IsSecure(_httpContextAccessor?.HttpContext, _options) ? "https" : "http"; + + var baseUrl = $"{proto}://{_cdnDistributionDomain}/{MakePath(domain, path)}"; + + var uriBuilder = new UriBuilder(baseUrl) + { + Port = -1 + }; + + var queryParams = HttpUtility.ParseQueryString(uriBuilder.Query); + + if (headers != null && headers.Any()) + { + foreach (var h in headers) + { + if (h.StartsWith("Content-Disposition")) + { + queryParams["response-content-disposition"] = h.Substring("Content-Disposition".Length + 1); + } + else if (h.StartsWith("Cache-Control")) + { + queryParams["response-cache-control"] = h.Substring("Cache-Control".Length + 1); + } + else if (h.StartsWith("Content-Encoding")) + { + queryParams["response-content-encoding"] = h.Substring("Content-Encoding".Length + 1); + } + else if (h.StartsWith("Content-Language")) + { + queryParams["response-content-language"] = h.Substring("Content-Language".Length + 1); + } + else if (h.StartsWith("Content-Type")) + { + queryParams["response-content-type"] = h.Substring("Content-Type".Length + 1); + } + else if (h.StartsWith("Expires")) + { + queryParams["response-expires"] = h.Substring("Expires".Length + 1); + } + else if (h.StartsWith("Custom-Cache-Key")) + { + queryParams["custom-cache-key"] = h.Substring("Custom-Cache-Key".Length + 1); + } + else + { + throw new FormatException(string.Format("Invalid header: {0}", h)); + } + } + } + + uriBuilder.Query = queryParams.ToString(); + + var signedUrl = ""; + + using (TextReader textReader = File.OpenText(_cdnPrivateKeyPath)) + { + signedUrl = AmazonCloudFrontUrlSigner.GetCannedSignedURL( + uriBuilder.ToString(), + textReader, + _cdnKeyPairId, + DateTime.UtcNow.Add(expire)); + } + + return Task.FromResult(new Uri(signedUrl)); + } + public override Task GetReadStreamAsync(string domain, string path) { return GetReadStreamAsync(domain, path, 0); @@ -217,12 +291,7 @@ public class S3Storage : BaseStorage ContentType = mime, ServerSideEncryptionMethod = _sse, InputStream = buffered, - AutoCloseStream = false, - Headers = - { - CacheControl = string.Format("public, maxage={0}", (int)TimeSpan.FromDays(cacheDays).TotalSeconds), - ExpiresUtc = DateTime.UtcNow.Add(TimeSpan.FromDays(cacheDays)) - } + AutoCloseStream = false }; if (!(client is IAmazonS3Encryption)) @@ -259,7 +328,7 @@ public class S3Storage : BaseStorage await uploader.UploadAsync(request); - await InvalidateCloudFrontAsync(MakePath(domain, path)); + //await InvalidateCloudFrontAsync(MakePath(domain, path)); await QuotaUsedAdd(domain, buffered.Length); @@ -348,7 +417,7 @@ public class S3Storage : BaseStorage using (var s3 = GetClient()) { await s3.CompleteMultipartUploadAsync(request); - await InvalidateCloudFrontAsync(MakePath(domain, path)); + // await InvalidateCloudFrontAsync(MakePath(domain, path)); } if (QuotaController != null) @@ -969,12 +1038,17 @@ public class S3Storage : BaseStorage { bool.TryParse(lower, out _lowerCasing); } - if (props.TryGetValue("cloudfront", out var front)) + + if (props.TryGetValue("cdn_enabled", out var cdnEnabled)) { - bool.TryParse(front, out _revalidateCloudFront); + if (bool.TryParse(cdnEnabled, out _cdnEnabled)) + { + _cdnKeyPairId = props["cdn_keyPairId"]; + _cdnPrivateKeyPath = props["cdn_privateKeyPath"]; + _cdnDistributionDomain = props["cdn_distributionDomain"]; + } } - props.TryGetValue("distribution", out _distributionId); props.TryGetValue("subdir", out _subDir); return this; @@ -1026,10 +1100,10 @@ public class S3Storage : BaseStorage return new UnencodedUri(baseUri, signedPart); } - + private Task InvalidateCloudFrontAsync(params string[] paths) { - if (!_revalidateCloudFront || string.IsNullOrEmpty(_distributionId)) + if (!_cdnEnabled || string.IsNullOrEmpty(_cdnDistributionDomain)) { return Task.CompletedTask; } @@ -1042,7 +1116,7 @@ public class S3Storage : BaseStorage using var cfClient = GetCloudFrontClient(); var invalidationRequest = new CreateInvalidationRequest { - DistributionId = _distributionId, + DistributionId = _cdnDistributionDomain, InvalidationBatch = new InvalidationBatch { CallerReference = Guid.NewGuid().ToString(), diff --git a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs index c2dba3091f..0ca8fd3a79 100644 --- a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs +++ b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs @@ -48,11 +48,13 @@ internal class FileDao : AbstractDao, IFileDao private readonly IQuotaService _quotaService; private readonly StorageFactory _storageFactory; private readonly TenantQuotaController _tenantQuotaController; + private readonly FileUtility _fileUtility; public FileDao( ILogger logger, FactoryIndexerFile factoryIndexer, UserManager userManager, + FileUtility fileUtility, IDbContextFactory dbContextManager, TenantManager tenantManager, TenantUtil tenantUtil, @@ -108,6 +110,7 @@ internal class FileDao : AbstractDao, IFileDao _quotaService = quotaService; _storageFactory = storageFactory; _tenantQuotaController = tenantQuotaController; + _fileUtility = fileUtility; } public Task InvalidateCacheAsync(int fileId) @@ -377,6 +380,19 @@ internal class FileDao : AbstractDao, IFileDao public Task GetPreSignedUriAsync(File file, TimeSpan expires) { + var storage = _globalStore.GetStore(); + + if (storage.IsSupportCdnUri && !_fileUtility.CanWebEdit(file.Title) + && (_fileUtility.CanMediaView(file.Title) || _fileUtility.CanImageView(file.Title))) + { + return _globalStore.GetStore().GetCdnPreSignedUriAsync(string.Empty, GetUniqFilePath(file), expires, + new List + { + $"Content-Disposition:{ContentDispositionUtil.GetHeaderValue(file.Title, withoutBase: true)}", + $"Custom-Cache-Key:{file.ModifiedOn.Ticks}" + }); + } + return _globalStore.GetStore().GetPreSignedUriAsync(string.Empty, GetUniqFilePath(file), expires, new List { From fc688f4cc6458a4d6d72ef3cb909cd07a41ac335 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Mon, 12 Jun 2023 22:27:09 +0300 Subject: [PATCH 08/15] Web: add images --- public/images/iOS.react.svg | 14 +------------- public/images/iOSHover.react.svg | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 public/images/iOSHover.react.svg diff --git a/public/images/iOS.react.svg b/public/images/iOS.react.svg index 2489605afb..84bc6aa7cd 100644 --- a/public/images/iOS.react.svg +++ b/public/images/iOS.react.svg @@ -1,15 +1,3 @@ - - - - - - - - - - - - - + diff --git a/public/images/iOSHover.react.svg b/public/images/iOSHover.react.svg new file mode 100644 index 0000000000..bf93d95d23 --- /dev/null +++ b/public/images/iOSHover.react.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + From 3284febe900eebdd03bd2b65dfce567fb12dbf96 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Mon, 12 Jun 2023 22:27:48 +0300 Subject: [PATCH 09/15] Components: IconButton: add isFill rule --- packages/components/icon-button/index.js | 10 ++-- .../icon-button/styled-icon-button.js | 49 ++++++++++--------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/packages/components/icon-button/index.js b/packages/components/icon-button/index.js index 186d1da51f..f1e0a67eec 100644 --- a/packages/components/icon-button/index.js +++ b/packages/components/icon-button/index.js @@ -76,13 +76,8 @@ class IconButton extends React.PureComponent { onMouseDown && onMouseDown(e); } onMouseUp(e) { - const { - isDisabled, - iconHoverName, - iconName, - color, - onMouseUp, - } = this.props; + const { isDisabled, iconHoverName, iconName, color, onMouseUp } = + this.props; if (isDisabled) return; @@ -162,6 +157,7 @@ class IconButton extends React.PureComponent { id={id} style={style} color={this.state.currentIconColor} + isFill={isFill} {...rest} > {/* {React.createElement(Icons["CalendarIcon"], { diff --git a/packages/components/icon-button/styled-icon-button.js b/packages/components/icon-button/styled-icon-button.js index 129ff87c11..e8f7f50f22 100644 --- a/packages/components/icon-button/styled-icon-button.js +++ b/packages/components/icon-button/styled-icon-button.js @@ -1,4 +1,4 @@ -import styled from "styled-components"; +import styled, { css } from "styled-components"; import { Base } from "../themes"; const StyledOuter = styled.div` @@ -10,28 +10,33 @@ const StyledOuter = styled.div` props.isDisabled || !props.isClickable ? "default" : "pointer"}; line-height: 0; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - svg { - &:not(:root) { - width: 100%; - height: 100%; - } - path { - fill: ${(props) => - props.color ? props.color : props.theme.iconButton.color}; - } - } - &:hover { - svg { - path { - fill: ${(props) => - props.isDisabled - ? props.theme.iconButton.color - : props.color - ? props.color - : props.theme.iconButton.hoverColor}; + + ${(props) => + props.isFill && + css` + svg { + &:not(:root) { + width: 100%; + height: 100%; + } + path { + fill: ${(props) => + props.color ? props.color : props.theme.iconButton.color}; + } } - } - } + &:hover { + svg { + path { + fill: ${(props) => + props.isDisabled + ? props.theme.iconButton.color + : props.color + ? props.color + : props.theme.iconButton.hoverColor}; + } + } + } + `} `; StyledOuter.defaultProps = { theme: Base }; From e911487ba1ddc3b4a4ea18397c9d6b29b7d62199 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Mon, 12 Jun 2023 22:28:42 +0300 Subject: [PATCH 10/15] Common: Article: ArticleApps: fix ios hover icon --- .../Article/sub-components/article-apps.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/common/components/Article/sub-components/article-apps.js b/packages/common/components/Article/sub-components/article-apps.js index 64c31b47ea..eaac6f65a0 100644 --- a/packages/common/components/Article/sub-components/article-apps.js +++ b/packages/common/components/Article/sub-components/article-apps.js @@ -3,6 +3,8 @@ import MacOSReactSvgUrl from "PUBLIC_DIR/images/macOS.react.svg?url"; import LinuxReactSvgUrl from "PUBLIC_DIR/images/linux.react.svg?url"; import AndroidReactSvgUrl from "PUBLIC_DIR/images/android.react.svg?url"; import IOSReactSvgUrl from "PUBLIC_DIR/images/iOS.react.svg?url"; +import IOSHoverReactSvgUrl from "PUBLIC_DIR/images/iOSHover.react.svg?url"; + import React from "react"; import styled, { css } from "styled-components"; import { useTranslation } from "react-i18next"; @@ -65,7 +67,7 @@ const ArticleApps = React.memo(({ theme, showText }) => { onClick={() => window.open(desktopLink)} iconName={WindowsReactSvgUrl} size="32" - isfill={true} + isFill={true} hoverColor={theme.filesArticleBody.downloadAppList.winHoverColor} title={t("Translations:MobileWin")} /> @@ -73,7 +75,7 @@ const ArticleApps = React.memo(({ theme, showText }) => { onClick={() => window.open(desktopLink)} iconName={MacOSReactSvgUrl} size="32" - isfill={true} + isFill={true} hoverColor={theme.filesArticleBody.downloadAppList.macHoverColor} title={t("Translations:MobileMac")} /> @@ -81,7 +83,7 @@ const ArticleApps = React.memo(({ theme, showText }) => { onClick={() => window.open(desktopLink)} iconName={LinuxReactSvgUrl} size="32" - isfill={true} + isFill={true} hoverColor={theme.filesArticleBody.downloadAppList.linuxHoverColor} title={t("Translations:MobileLinux")} /> @@ -89,16 +91,16 @@ const ArticleApps = React.memo(({ theme, showText }) => { onClick={() => window.open(androidLink)} iconName={AndroidReactSvgUrl} size="32" - isfill={true} + isFill={true} hoverColor={theme.filesArticleBody.downloadAppList.androidHoverColor} title={t("Translations:MobileAndroid")} /> window.open(iosLink)} iconName={IOSReactSvgUrl} + iconHoverName={IOSHoverReactSvgUrl} size="32" - isfill={true} - hoverColor={theme.filesArticleBody.downloadAppList.iosHoverColor} + isFill={false} title={t("Translations:MobileIos")} /> From d9367bf4bc7f4badbe9a02906c2537603850e054 Mon Sep 17 00:00:00 2001 From: Viktor Fomin Date: Mon, 12 Jun 2023 22:28:58 +0300 Subject: [PATCH 11/15] Components: Themes: delete useless --- packages/components/themes/base.js | 1 - packages/components/themes/dark.js | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/components/themes/base.js b/packages/components/themes/base.js index 56e1437d4b..df3d91e313 100644 --- a/packages/components/themes/base.js +++ b/packages/components/themes/base.js @@ -2126,7 +2126,6 @@ const Base = { macHoverColor: "#000", linuxHoverColor: "#FFB800", androidHoverColor: "#9BD71C", - iosHoverColor: "url(#iosGradient-1)", }, thirdPartyList: { color: "#818b91", diff --git a/packages/components/themes/dark.js b/packages/components/themes/dark.js index 6e5415ecc3..3a9bb4c2c3 100644 --- a/packages/components/themes/dark.js +++ b/packages/components/themes/dark.js @@ -2121,7 +2121,6 @@ const Dark = { macHoverColor: "#000", linuxHoverColor: "#FFB800", androidHoverColor: "#9BD71C", - iosHoverColor: "url(#iosGradient-1)", }, thirdPartyList: { From baa18cab8bf7bec844ebddcce6e36182638d7364 Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Mon, 12 Jun 2023 23:54:10 +0300 Subject: [PATCH 12/15] fixed 62955 --- common/ASC.Core.Common/Tenants/TenantQuota.cs | 2 +- web/ASC.Web.Api/ASC.Web.Api.csproj | 2 ++ web/ASC.Web.Api/img/thirdparty.svg | 13 +++++++++++++ .../PublicResources/Resource.Designer.cs | 9 +++++++++ web/ASC.Web.Core/PublicResources/Resource.resx | 7 +++++-- 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 web/ASC.Web.Api/img/thirdparty.svg diff --git a/common/ASC.Core.Common/Tenants/TenantQuota.cs b/common/ASC.Core.Common/Tenants/TenantQuota.cs index b883c2ebc0..e63d82b389 100644 --- a/common/ASC.Core.Common/Tenants/TenantQuota.cs +++ b/common/ASC.Core.Common/Tenants/TenantQuota.cs @@ -241,7 +241,7 @@ public class TenantQuota : IMapFrom _autoBackupRestoreFeature = new TenantQuotaFeatureFlag(this) { Name = "restore", Order = 6 }; _oauthFeature = new TenantQuotaFeatureFlag(this) { Name = "oauth", Visible = false }; _contentSearchFeature = new TenantQuotaFeatureFlag(this) { Name = "contentsearch", Visible = false }; - _thirdPartyFeature = new TenantQuotaFeatureFlag(this) { Name = "thirdparty" }; + _thirdPartyFeature = new TenantQuotaFeatureFlag(this) { Name = "thirdparty", Order = 9 }; TenantQuotaFeatures = new List { diff --git a/web/ASC.Web.Api/ASC.Web.Api.csproj b/web/ASC.Web.Api/ASC.Web.Api.csproj index f47e1a1274..6a5951198b 100644 --- a/web/ASC.Web.Api/ASC.Web.Api.csproj +++ b/web/ASC.Web.Api/ASC.Web.Api.csproj @@ -26,6 +26,7 @@ + @@ -35,6 +36,7 @@ + diff --git a/web/ASC.Web.Api/img/thirdparty.svg b/web/ASC.Web.Api/img/thirdparty.svg new file mode 100644 index 0000000000..559a50861f --- /dev/null +++ b/web/ASC.Web.Api/img/thirdparty.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/web/ASC.Web.Core/PublicResources/Resource.Designer.cs b/web/ASC.Web.Core/PublicResources/Resource.Designer.cs index 025d1a1439..3dfae6f262 100644 --- a/web/ASC.Web.Core/PublicResources/Resource.Designer.cs +++ b/web/ASC.Web.Core/PublicResources/Resource.Designer.cs @@ -2697,6 +2697,15 @@ namespace ASC.Web.Core.PublicResources { } } + /// + /// Looks up a localized string similar to Third-party integrations. + /// + public static string TariffsFeature_thirdparty { + get { + return ResourceManager.GetString("TariffsFeature_thirdparty", resourceCulture); + } + } + /// /// Looks up a localized string similar to {0} storage space. /// diff --git a/web/ASC.Web.Core/PublicResources/Resource.resx b/web/ASC.Web.Core/PublicResources/Resource.resx index 959592c8a3..32b54cea37 100644 --- a/web/ASC.Web.Core/PublicResources/Resource.resx +++ b/web/ASC.Web.Core/PublicResources/Resource.resx @@ -53,10 +53,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Validation code field cannot be empty @@ -988,4 +988,7 @@ What's New + + Third-party integrations + \ No newline at end of file From 6491f137e538510252b43d1a0d242e4da7ac90ec Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Tue, 13 Jun 2023 00:08:10 +0300 Subject: [PATCH 13/15] fixed 61957 --- common/ASC.Core.Common/Tenants/TenantQuota.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/ASC.Core.Common/Tenants/TenantQuota.cs b/common/ASC.Core.Common/Tenants/TenantQuota.cs index e63d82b389..197eaa49b0 100644 --- a/common/ASC.Core.Common/Tenants/TenantQuota.cs +++ b/common/ASC.Core.Common/Tenants/TenantQuota.cs @@ -239,7 +239,7 @@ public class TenantQuota : IMapFrom _customizationFeature = new TenantQuotaFeatureFlag(this) { Name = "customization", Visible = false }; _customFeature = new TenantQuotaFeatureFlag(this) { Name = "custom", Visible = false }; _autoBackupRestoreFeature = new TenantQuotaFeatureFlag(this) { Name = "restore", Order = 6 }; - _oauthFeature = new TenantQuotaFeatureFlag(this) { Name = "oauth", Visible = false }; + _oauthFeature = new TenantQuotaFeatureFlag(this) { Name = "oauth" }; _contentSearchFeature = new TenantQuotaFeatureFlag(this) { Name = "contentsearch", Visible = false }; _thirdPartyFeature = new TenantQuotaFeatureFlag(this) { Name = "thirdparty", Order = 9 }; From a3bcd0a0994e5fede40d9940a807a86d7285309d Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Tue, 13 Jun 2023 00:39:02 +0300 Subject: [PATCH 14/15] fixed 62906 --- common/ASC.Core.Common/Billing/License/LicenseReader.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/ASC.Core.Common/Billing/License/LicenseReader.cs b/common/ASC.Core.Common/Billing/License/LicenseReader.cs index 49e4258b4e..2cdaf8d14f 100644 --- a/common/ASC.Core.Common/Billing/License/LicenseReader.cs +++ b/common/ASC.Core.Common/Billing/License/LicenseReader.cs @@ -206,8 +206,8 @@ public class LicenseReader AutoBackupRestore = true, Oauth = true, ContentSearch = true, - MaxTotalSize = TenantQuota.Default.MaxTotalSize, - MaxFileSize = TenantQuota.Default.MaxFileSize, + MaxTotalSize = long.MaxValue, + MaxFileSize = 100L * 1024 * 1024 * 1024, DocsEdition = true, Customization = license.Customization }; From 0be51699acf1a70963d5957f77f94bfee81aa505 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Tue, 13 Jun 2023 11:19:57 +0500 Subject: [PATCH 15/15] fix Bug 63001 - Correct the installation type setting --- build/install/docker/docspace.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/build/install/docker/docspace.yml b/build/install/docker/docspace.yml index 69d951f10d..a62d7abc1b 100644 --- a/build/install/docker/docspace.yml +++ b/build/install/docker/docspace.yml @@ -24,6 +24,7 @@ x-service: &x-service-base APP_KNOWN_PROXIES: ${APP_KNOWN_PROXIES} APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN} APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY} + INSTALLATION_TYPE: ${INSTALLATION_TYPE} DOCUMENT_SERVER_JWT_SECRET: ${DOCUMENT_SERVER_JWT_SECRET} DOCUMENT_SERVER_JWT_HEADER: ${DOCUMENT_SERVER_JWT_HEADER} DOCUMENT_SERVER_URL_PUBLIC: ${DOCUMENT_SERVER_URL_PUBLIC}