Merge branch 'develop' into feature/oauth2-client

This commit is contained in:
Timofey Boyko 2023-09-22 17:31:22 +03:00
commit 31bf677340
125 changed files with 5600 additions and 534 deletions

View File

@ -39,9 +39,11 @@ if (-not $ExistsNetwork) {
Write-Host "Run MySQL" -ForegroundColor Green
docker compose -f "$DockerDir\db.yml" up -d
Write-Host "Run local dns server" -ForegroundColor Green
$Env:ROOT_DIR=$RootDir
docker compose -f "$DockerDir\dnsmasq.yml" up -d
if ($args[0] -eq "--dns" ) {
Write-Host "Run local dns server" -ForegroundColor Green
$Env:ROOT_DIR=$RootDir
docker compose -f "$DockerDir\dnsmasq.yml" up -d
}
Write-Host "Build backend services (to `publish/` folder)" -ForegroundColor Green
& "$PSScriptRoot\install\common\build-services.ps1"

View File

@ -56,9 +56,11 @@ else
exit 1
fi
echo "Run local dns server"
ROOT_DIR=$dir \
docker compose -f $dockerDir/dnsmasq.yml up -d
if [ "$1" = "--dns" ]; then
echo "Run local dns server"
ROOT_DIR=$dir \
docker compose -f $dockerDir/dnsmasq.yml up -d
fi
echo "Clear publish folder"
rm -rf $dir/publish

View File

@ -68,7 +68,7 @@ public class StorageFactoryConfig
public static class StorageFactoryExtenstion
{
public static void InitializeHttpHandlers(this IEndpointRouteBuilder builder, string config = null)
public static void InitializeHttpHandlers(this IEndpointRouteBuilder builder, string module = null)
{
//TODO:
//if (!HostingEnvironment.IsHosted)
@ -82,7 +82,7 @@ public static class StorageFactoryExtenstion
{
if (section.Module != null)
{
foreach (var m in section.Module)
foreach (var m in section.Module.Where(r => string.IsNullOrEmpty(module) || r.Name == module))
{
//todo: add path criterion
if (m.Type == "disc" || !m.Public || m.Path.Contains(Constants.StorageRootParam))

View File

@ -276,11 +276,15 @@ server {
rewrite sso/(.*) /$1 break;
proxy_pass http://127.0.0.1:9834;
}
location ~* /storage/files_template/ {
proxy_pass http://127.0.0.1:5007;
}
location ~* /(ssologin.ashx|login.ashx|storage) {
proxy_pass http://127.0.0.1:5003;
}
location /socket.io/ {
proxy_pass http://127.0.0.1:9899;
proxy_redirect off;

File diff suppressed because it is too large Load Diff

View File

@ -15502,6 +15502,246 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>Example</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>ExpiredLink</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>FEB</name>
<description/>
@ -24262,6 +24502,126 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>OkButton</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>OKButton</name>
<description/>
@ -38663,7 +39023,7 @@
</translations>
</concept_node>
<concept_node>
<name>Yes</name>
<name>Yesterday</name>
<description/>
<comment/>
<default_text/>
@ -38783,7 +39143,7 @@
</translations>
</concept_node>
<concept_node>
<name>Yesterday</name>
<name>You</name>
<description/>
<comment/>
<default_text/>

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -1,5 +0,0 @@
{
"DeleteGroupUsersSuccessMessage": "تم حذف المستخدمين بنجاح.",
"DeleteUsers": "حذف المستخدمين",
"DeleteUsersMessage": "سيتم حذف المستخدمين الغير مفعلين المحددين من +. سيتم حذف المستندات الشخصية لهؤلاء المستخدمين والمتوفرة للآخرين."
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,13 @@
"DNSSettingsMobile": "Sorğunuzu dəstək komandamıza göndərin və mütəxəssislərimiz sizə parametrlərdə kömək edəcəklər.",
"DNSSettingsTooltipMain": "DNS Parametrləri sizə {{ organizationName }} domeniniz üçün alternativ URL ünvanı təyin etməyə imkan verir.",
"DNSSettingsTooltipStandalone": "Siz istədiyiniz ləqəbi 'Portal Ünvanı' sahəsinə daxil edə, və ya 'İstifadəçi domen adı' qutusunu yoxlaya və aşağı sahədə ONLYOFFICE üçün öz domen adınızı təyin edə bilərsiniz. Etdiyiniz dəyişiklikləri tətbiq etmək üçün, bölmənin aşağı tərəfində 'Qeyd et' düyməsini basın.",
"DocumentService": "Sənəd Xidməti",
"DocumentServiceLocationHeader": "Sənəd Xidməti Yeri",
"DocumentServiceLocationHeaderHelp": "Document Service sənədin redaktəsini həyata keçirməyə və sənəd faylını müvafiq OfficeOpen XML formatına çevirməyə imkan verən server xidmətidir.",
"DocumentServiceLocationHeaderInfo": "Sənəd xidmətinin yeri quraşdırılmış sənəd xidmətləri ilə serverin ünvanını müəyyən edir. ",
"DocumentServiceLocationUrlApi": "Sənəd Redaktə Xidmətinin Ünvanı",
"DocumentServiceLocationUrlInternal": "İcma Serverindən sorğular üçün DocSpace ünvanı",
"DocumentServiceLocationUrlPortal": "Sənəd Xidmətindən sorğular üçün İcma Server ünvanı",
"DownloadCopy": "Nüsxəni endirin",
"DownloadReportBtnText": "Hesabatı yükləyin",
"DownloadReportDescription": "Hesabat Sənədlərimdə saxlanacaq",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,13 @@
"DNSSettingsMobile": "Изпратете заявката си до нашия екип за обслужване на клиенти и специалистите ни ще Ви помогнат с настройките.",
"DNSSettingsTooltipMain": "DNS настройките Ви позволяват да зададете алтернативен URL адрес за вашето {{ organizationName }} пространство.",
"DNSSettingsTooltipStandalone": "Поставете отметка в полето „Име на домейн по избор“ и посочете името на собствения си домейн за ONLYOFFICE пространството в полето по-долу. За да влязат в сила зададените от вас параметри, щракнете върху бутона „Запазване“ в долната част на секцията.",
"DocumentService": "Служба за документи",
"DocumentServiceLocationHeader": "Местоположение на услугата за документи",
"DocumentServiceLocationHeaderHelp": "Document Service е услуга на сървъра, която позволява извършването на редактиране на документа и позволява конвертиране на документа в съответния формат OfficeOpen XML.",
"DocumentServiceLocationHeaderInfo": "Местоположението на услугата документ указва адреса на сървъра с инсталираните услуги за документи. ",
"DocumentServiceLocationUrlApi": "Адрес на услугата за редактиране на документи",
"DocumentServiceLocationUrlInternal": "Адрес на услугата за документи за заявки от DocSpace",
"DocumentServiceLocationUrlPortal": "Адрес на DocSpace за заявки от услугата за документи",
"DownloadCopy": "Изтеглете копието",
"DownloadReportBtnText": "Изтегляне на доклад",
"DownloadReportDescription": "Отчетът ще бъде записан в Моите документи",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Pošlete svůj požadavek našemu týmu podpory a naši specialisté vám pomohou s nastavením.",
"DNSSettingsTooltipMain": "Nastavení DNS umožňuje nastavit alternativní adresu URL pro váš prostor {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Zaškrtněte'Vlastní název domény'a zadejte Váš vlastní název domény pro prostor ONLYOFFICE níže. Chcete-li nastavené parametry aktivovat, klikněte na tlačítko 'Uložit' v dolní části.",
"DocumentService": "Dokumentační služba",
"DocumentServiceLocationHeader": "Umístění služby Dokumentu",
"DocumentServiceLocationHeaderInfo": "Umístění dokumentační služby specifikuje adresu serveru s nainstalovanou dokumentační službou. ",
"DocumentServiceLocationUrlApi": "Adres editovací služby Dokumentu",
"DownloadCopy": "Stáhnout kopii",
"DownloadReportBtnText": "Stáhnout zprávu",
"DownloadReportDescription": "Zpráva se uloží do složky Moje dokumenty",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -90,6 +90,13 @@
"DNSSettingsMobile": "Senden Sie Ihre Anfrage an unser Support-Team, und unsere Spezialisten werden Ihnen bei den Einstellungen helfen.",
"DNSSettingsTooltipMain": "Mit den DNS-Einstellungen können Sie eine alternative URL-Adresse für Ihren {{ organizationName }}-Bereich festlegen.",
"DNSSettingsTooltipStandalone": "Markieren Sie das Kontrollkästchen 'Benutzerdefinierter Domain-Name' und geben Sie Ihren eigenen Domain-Namen für den ONLYOFFICE-Space im Feld unten ein. Um die Änderungen zu übernehmen, klicken Sie auf den Button 'Speichern' im unteren Bereich.",
"DocumentService": "Dokumentenservice",
"DocumentServiceLocationHeader": "Adressen des Dokumentendienstes",
"DocumentServiceLocationHeaderHelp": " Der Dokumentendienst ist der Serverdienst, der die Dokumentbearbeitung ermöglicht und die Konvertierung der Dokumentdatei in das entsprechende OfficeOpen XML-Format ermöglicht.",
"DocumentServiceLocationHeaderInfo": "Adressen des Dokumentendienstes gibt die Serveradresse mit den dazu installierten Dokumentendienstes. ",
"DocumentServiceLocationUrlApi": "die Adresse des Dokumentenbearbeitungsservices",
"DocumentServiceLocationUrlInternal": "Sie Adresse des Dokumenten Services für Anforderungen vom DocSpace",
"DocumentServiceLocationUrlPortal": "Sie Adresse des Dokumenten Services für Anforderungen vom DocSpace",
"DownloadCopy": "Die Sicherungskopie herunterladen",
"DownloadReportBtnText": "Bericht herunterladen",
"DownloadReportDescription": "Der Bericht wird unter Eigene Dateien gespeichert.",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -1,7 +1,7 @@
{
"DeleteGroupUsersSuccessMessage": "Users have been successfully deleted.",
"DeleteMyDocumentsUser": "All personal files and folders in My documents section of this user will be permanently deleted.",
"DeleteReassignDescriptionUser": "{{warningMessageMyDocuments}} Rooms created by this user and documents stored in these rooms will be reassigned automatically to an admin performing the deletion: <strong>{{userPerformedDeletion}} ({{userYou}})</strong>. Reassign data manually to choose another destination user for reassignment.",
"DeleteGroupUsersSuccessMessage": "Users have been successfully deleted.",
"DeleteUser": "Delete user",
"DeleteUserMessage": "{{userCaption}} <strong>{{user}}</strong> will be deleted. This action cannot be undone.",
"ReassignDataToAnotherUser": "Reassign data to another user",

View File

@ -97,6 +97,13 @@
"DNSSettingsNavDescription": "DNS Settings is a way to set an alternative URL for your portal.",
"DNSSettingsTooltipMain": "DNS Settings allow you to set an alternative URL address for your {{ organizationName }} space.",
"DNSSettingsTooltipStandalone": "Check the 'Custom domain name box' and specify your own domain name for the ONLYOFFICE space in the field below. To make the parameters you set take effect click the 'Save button' at the bottom of the section.",
"DocumentService": "Document Service",
"DocumentServiceLocationHeader": "Document Service Location",
"DocumentServiceLocationHeaderHelp": "Document Service is the server service which allows to perform the document editing and allows to convert the document file into the appropriate OfficeOpen XML format.",
"DocumentServiceLocationHeaderInfo": "Document service location specifies the address of the server with the document services installed. ",
"DocumentServiceLocationUrlApi": "Document Editing Service Address",
"DocumentServiceLocationUrlInternal": "Document Service address for requests from the DocSpace",
"DocumentServiceLocationUrlPortal": "DocSpace address for requests from the Document Service",
"DownloadCopy": "Download copy",
"DownloadReportBtnText": "Download report",
"DownloadReportDescription": "The report will be saved to My Documents",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -85,6 +85,13 @@
"DNSSettingsMobile": "Envíe su solicitud a nuestro equipo de soporte y nuestros especialistas le ayudarán con la configuración.",
"DNSSettingsTooltipMain": "La configuración DNS le permite establecer una dirección URL alternativa para su espacio {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Marque la casilla 'Nombre de dominio personalizado' y especifique su propio nombre del espacio ONLYOFFICE en el campo debajo. Para aplicar los cambios hechos, use el botón 'Guardar' en la parte inferior de la sección.",
"DocumentService": "Servicio de documentos",
"DocumentServiceLocationHeader": "Ubicación de servicio de documentos",
"DocumentServiceLocationHeaderHelp": "Document Service es el servicio del servidor que permite realizar ediciones a los documentos y convertir los archivos de documentos a los formatos OfficeOpen XML apropiados.",
"DocumentServiceLocationHeaderInfo": "Ubicación de servicio de documentos especifica la dirección del servidor con servicios de documentos instalados. ",
"DocumentServiceLocationUrlApi": "Dirección de servicio de edición de documentos",
"DocumentServiceLocationUrlInternal": "Dirección del Servicio de Documentos para realizar peticiones desde el DocSpace",
"DocumentServiceLocationUrlPortal": "Dirección del DocSpace para realizar peticiones desde el Servicio de Documentos",
"DownloadCopy": "Descargar la copia",
"DownloadReportBtnText": "Descargar informe",
"DownloadReportDescription": "El informe se guardará en Mis Documentos",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Lähetä pyyntösi tukitiimillemme ja asiantuntijamme auttavat sinua asetusten kanssa.",
"DNSSettingsTooltipMain": "DNS-asetukset antavat mahdollisuuden asettaa {{organizationName }} tilallesi vaihtoehtoisen URL-osoitteen.",
"DNSSettingsTooltipStandalone": "Voit joko syöttää halutun aliaksen 'sivuston osoite' -kenttään tai valita 'oman verkkotunnuksen' ONLYOFFICE-sivustolle. Ota tekemäsi asetukset käyttöön klikkaamalla 'Tallenna' painiketta.",
"DocumentService": "Asiakirja palvelu",
"DocumentServiceLocationHeader": "Asiakirja palvelun sijainti",
"DocumentServiceLocationHeaderInfo": "Asiakirjan palvelun sijainti määrittelee palvelimen osoitteen, mihin asiakirjan palvelu on asennettu. ",
"DocumentServiceLocationUrlApi": "Asiakirjan muokkauspalvelun osoite",
"DownloadCopy": "Lataa kopio",
"DownloadReportBtnText": "Lataa raportti",
"DownloadReportDescription": "Raportti tallennetaan Minun dokumentteihin",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -85,6 +85,13 @@
"DNSSettingsMobile": "Envoyez votre demande à notre équipe de support et nos spécialistes vous aideront à définir les paramètres.",
"DNSSettingsTooltipMain": "Les paramètres DNS vous permettent de définir une adresse URL alternative pour votre espace {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Cochez la case 'Nom de domaine personnalisé' et spécifiez votre propre nom de domaine pour l'espace ONLYOFFICE dans le champ ci-dessous. Pour appliquer les modifications effectuées utilisez le bouton 'Enregistrer' en bas de la section.",
"DocumentService": "Service de documents",
"DocumentServiceLocationHeader": "Emplacement du service de documents",
"DocumentServiceLocationHeaderHelp": "Document Service est le service serveur qui permet d'effectuer l'édition du document et permet de convertir le fichier document au format OfficeOpen XML approprié.",
"DocumentServiceLocationHeaderInfo": "L'emplacement du service de documents spécifie l'adresse du serveur avec les services de documents installés. ",
"DocumentServiceLocationUrlApi": "Adresse du service de modification de documents",
"DocumentServiceLocationUrlInternal": "Adresse du service de documents pour les demandes provenant du DocSpace",
"DocumentServiceLocationUrlPortal": "Adresse du DocSpace pour les demandes provenant du service de documents",
"DownloadCopy": "Télécharger la copie",
"DownloadReportBtnText": "Télécharger le rapport",
"DownloadReportDescription": "Le rapport sera enregistré dans Mes documents",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -90,6 +90,13 @@
"DNSSettingsMobile": "Invia la tua richiesta al nostro team di supporto e i nostri specialisti ti aiuteranno con le impostazioni.",
"DNSSettingsTooltipMain": "Le impostazioni DNS ti consentono di impostare un indirizzo URL alternativo per il tuo spazio {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Spunta la casella 'Nome dominio personalizzato' e specifica il proprio nome a dominio per il spazio ONLYOFFICE nel campo di sotto. Per applicare i parametri impostati clicca su 'Salva' nella parte inferiore della sezione",
"DocumentService": "Servizio documenti",
"DocumentServiceLocationHeader": "Locazione del servizio documenti",
"DocumentServiceLocationHeaderHelp": "Document Service è il servizio server che consente di eseguire l'editing dei documenti ed inoltre di convertire il file di documento nel formato XML appropriato di OfficeOpen.",
"DocumentServiceLocationHeaderInfo": "La locazione del servizio documenti determina l'indirizzo del server con i servizi documenti installati. ",
"DocumentServiceLocationUrlApi": "Indirizzo del servizio di modifica documenti",
"DocumentServiceLocationUrlInternal": "Document Service Address per le richieste dal DocSpace",
"DocumentServiceLocationUrlPortal": "DocSpace Address per le richieste dal Document Service",
"DownloadCopy": "Scaricare la copia",
"DownloadReportBtnText": "Scarica il report",
"DownloadReportDescription": "Il report verrà salvato in Documenti",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,13 @@
"DNSSettingsMobile": "弊社サポートチームまでご連絡いただければ、専門スタッフが設定をお手伝いさせていただきます。",
"DNSSettingsTooltipMain": "DNS設定により、{{ organizationName }}スペースの代替URLアドレスを設定することができます。",
"DNSSettingsTooltipStandalone": "'カスタムドメイン名'ボックスを確認して、下のフィールドにONLYOFFICEポータル用に独自ドメイン名を入力してください。 変更を適用するように、セクションの下部に'保存'ボタンを押してください。",
"DocumentService": "文書サービス",
"DocumentServiceLocationHeader": "文書サービス位置",
"DocumentServiceLocationHeaderHelp": "文書サービスは文書編集したり、適切なOfficeOpen XML形式に変換したりすることを可能にするサーバーサービスです。",
"DocumentServiceLocationHeaderInfo": "文書サービス位置は文書サービスがインストルしたサーバアドレスを指定しています。",
"DocumentServiceLocationUrlApi": "文書編集サービスアドレス",
"DocumentServiceLocationUrlInternal": "コミュニティ・サーバーからの要求に対するのための文書サービスアドレス",
"DocumentServiceLocationUrlPortal": "文書サービスからの要求に対するのためのコミュニティ・サーバー・アドレス",
"DownloadCopy": "コピーを保存",
"DownloadReportBtnText": "ダウンロードのレポート",
"DownloadReportDescription": "レポートは「私の文書」に保存されます",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -83,6 +83,12 @@
"DNSSettingsMobile": "Nosūtiet savu pieprasījumu mūsu atbalsta komandai, un mūsu speciālisti palīdzēs jums ar iestatījumiem.",
"DNSSettingsTooltipMain": "DNS iestatījumi ļauj iestatīt alternatīvu vietrāža URL adresi jūsu {{ organizationName }} telpai.",
"DNSSettingsTooltipStandalone": "Pārbaudiet'Pielāgotā domēna nosaukuma' lauku un precizējiet ONLYOFFICE nosaukumu zemāk esošajā laukā. Lai aktivizētu uzstādītos parametrus, nospiediet 'Saglabāt', kas atrodas sadaļas apakšā.",
"DocumentService": "Dokumentu apkalpošana",
"DocumentServiceLocationHeader": "Dokumentu apkalpošanas izvietojums",
"DocumentServiceLocationHeaderInfo": "Dokumentu servisa atrašanās vieta norāda servera adresi ar instalētiem dokumenta pakalpojumiem. ",
"DocumentServiceLocationUrlApi": "Dokumentu rediģēšanas servisa adrese",
"DocumentServiceLocationUrlInternal": "Dokumentu apkalpošanas adrese pieprasījumiem no Kopējā darba servera",
"DocumentServiceLocationUrlPortal": "Kopienas servera adrese Document Service pieprasījumiem",
"DownloadCopy": "Lejupielādēt kopiju",
"DownloadReportBtnText": "Lejupielādēt pārskatu",
"DownloadReportDescription": "Atskaite tiks saglabāta mapē Mani dokumenti",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Stuur uw verzoek naar ons ondersteuningsteam, en onze specialisten zullen u helpen met de instellingen.",
"DNSSettingsTooltipMain": "Met DNS Instellingen kunt u een alternatief URL-adres instellen voor uw {{ organizationName }} ruimte.",
"DNSSettingsTooltipStandalone": "Vink het vakje 'Aangepaste domeinnaam' aan en specificeer uw eigen domeinnaam voor het ONLYOFFICE-ruimte in het veld hieronder. Om de parameters die u heeft ingesteld door te voeren klik op de knop 'Opslaan' onderaan in dit onderdeel.",
"DocumentService": "Documentservice",
"DocumentServiceLocationHeader": "Documentservice Locatie",
"DocumentServiceLocationHeaderInfo": "Documentservice locatie specificeert het adres van de server met de geïnstalleerde documentservices. ",
"DocumentServiceLocationUrlApi": "Documentbewerking Serviceadres",
"DownloadCopy": "Download de kopie",
"DownloadReportBtnText": "Download verslag",
"DownloadReportDescription": "Het verslag wordt opgeslagen in Mijn Documenten",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Wyślij prośbę do naszego zespołu obsługi klienta, a nasi specjaliści pomogą Ci w konfiguracji.",
"DNSSettingsTooltipMain": "Ustawienia DNS umożliwiają konfigurację alternatywnego adresu URL dla Twojego obszaru {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Możesz wpisać wybrany alias w polu 'Adres portalu' lub zaznaczyć okienko 'Własna nazwa domeny' i wpisać własny adres przestrzeni ONLYOFFICE w polu poniżej. By zapisać wybrane ustawienia, kliknij na przycisku 'Zapisz' znajdującym się na dole sekcji.",
"DocumentService": "Usługi dokumentacyjne",
"DocumentServiceLocationHeader": "Lokalizacja usługi dokumentowej",
"DocumentServiceLocationHeaderInfo": "Lokalizacja usługi dokumentów określa adres serwera z zainstalowanymi usługami dokumentacji. ",
"DocumentServiceLocationUrlApi": "Adres usługi edycji dokumentu",
"DownloadCopy": "Pobierz kopię",
"DownloadReportBtnText": "Pobierz raport",
"DownloadReportDescription": "Raport zostanie zapisany w Moich dokumentach",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -85,6 +85,13 @@
"DNSSettingsMobile": "Envie sua solicitação para nossa equipe de suporte e nossos especialistas o ajudarão com as configurações.",
"DNSSettingsTooltipMain": "As configurações de DNS permitem que você defina um endereço de URL alternativo para seu espaço {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Marque a caixa 'Personalizar nome do domínio' e especifique seu próprio nome do domínio para o espaço ONLYOFFICE no campo abaixo. Para que os parâmetros que você definiu tenham efeito, clique no botão 'Salvar' na parte inferior da seção.",
"DocumentService": "Serviço de documento",
"DocumentServiceLocationHeader": "Localização de serviço de documento",
"DocumentServiceLocationHeaderHelp": "Document Service é o serviço servidor que permite realizar a edição de documentos e permite converter o arquivo de documentos para o formato OfficeOpen XML apropriado.",
"DocumentServiceLocationHeaderInfo": "Localização de serviço de documento especifica o endereço do servidor com os serviços de documentos instalados. ",
"DocumentServiceLocationUrlApi": "Endereço de serviço de edição de documento",
"DocumentServiceLocationUrlInternal": "Endereço de serviço de documentos para solicitações do DocSpace",
"DocumentServiceLocationUrlPortal": "Endereço do DocSpace para solicitações do serviço de documentos",
"DownloadCopy": "Baixe a cópia",
"DownloadReportBtnText": "Baixar relatório",
"DownloadReportDescription": "O relatório será salvo em Meus Documentos",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -90,6 +90,13 @@
"DNSSettingsMobile": "Отправьте запрос в нашу службу поддержки, и наши специалисты помогут вам с настройками.",
"DNSSettingsTooltipMain": "Настройки DNS позволяют задать альтернативный адрес URL для вашего {{ organizationName }} портала.",
"DNSSettingsTooltipStandalone": "Установите флажок 'Пользовательское доменное имя' и укажите собственное доменное имя для пространства ONLYOFFICE в поле ниже. Чтобы применить внесенные изменения, используйте кнопку 'Сохранить' внизу раздела.",
"DocumentService": "Служба документов",
"DocumentServiceLocationHeader": "Расположение службы документов",
"DocumentServiceLocationHeaderHelp": "Служба документов - это серверная служба, которая позволяет осуществлять редактирование документов и позволяет конвертировать файл документа в соответствующий формат OfficeOpen XML.",
"DocumentServiceLocationHeaderInfo": "Расположение службы документов определяет адрес сервера с установленными службами документов. ",
"DocumentServiceLocationUrlApi": "Адрес службы редактирования документов",
"DocumentServiceLocationUrlInternal": "Адрес Службы документов для запросов от DocSpace",
"DocumentServiceLocationUrlPortal": "Адрес DocSpace для запросов от Службы документов",
"DownloadCopy": "Скачать копию",
"DownloadReportBtnText": "Скачать отчет",
"DownloadReportDescription": "Отчет будет сохранен в \"Мои документы\"",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Pošlite svoju požiadavku nášmu tímu podpory a naši špecialisti vám pomôžu s nastavením.",
"DNSSettingsTooltipMain": "Nastavenia DNS vám umožňujú nastaviť alternatívnu adresu URL pre váš priestor {{organizationName}}.",
"DNSSettingsTooltipStandalone": "Zaškrtnite políčko 'Vlastné meno domény' a nižšie zadajte vlastný názov domény pre priestor ONLYOFFICE. Ak chcete nastavené parametre potvrdiť, kliknite na tlačidlo 'Uložiť' v dolnej časti sekcie.",
"DocumentService": "Dokumentová služba",
"DocumentServiceLocationHeader": "Umiestnenie Dokumentovej služby",
"DocumentServiceLocationHeaderInfo": "Umiestnenie Dokumentovej služby určuje adresu servera s nainštalovanou dokumentovou službou. ",
"DocumentServiceLocationUrlApi": "Adresa editovacej služby Dokumentu",
"DownloadCopy": "Stiahnuť si kópiu",
"DownloadReportBtnText": "Stiahnuť správu",
"DownloadReportDescription": "Správa sa uloží do priečinka Moje dokumenty",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "İsteğinizi destek ekibimize gönderin, uzmanlarımız ayarlar konusunda size yardımcı olacaktır.",
"DNSSettingsTooltipMain": "DNS Ayarları, {{ organizationName }} alanınız için alternatif bir URL adresi belirlemenizi sağlar.",
"DNSSettingsTooltipStandalone": "'Özel alan adı'kutusunu kontrol edin ve aşağıdaki alana ONLYOFFICE portalınız için alan adınızı girin. Girdiğiniz parametrelerin çalışmaya başlaması için bölümün altındaki 'Kaydet' tuşuna tıklayın.",
"DocumentService": "Belge Servisi",
"DocumentServiceLocationHeader": "Belge Servis Konumu",
"DocumentServiceLocationHeaderInfo": "Belge servis konumu belge servislerinin yüklü olduğu sunucunun adresini belirler. ",
"DocumentServiceLocationUrlApi": "Belge Düzenleme Servisi Adresi",
"DownloadCopy": "Kopyayı indir",
"DownloadReportBtnText": "Raporu indir",
"DownloadReportDescription": "Rapor Belgelerim'e kaydedilecek",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Надішліть запит до нашої служби підтримки, і наші спеціалісти допоможуть вам із параметрами.",
"DNSSettingsTooltipMain": "Параметри DNS дозволяють установити альтернативну URL-адресу для вашого простору {{ organizationName }}.",
"DNSSettingsTooltipStandalone": "Установіть прапорець «Ім’я настроюваного домену» і вкажіть ім’я свого власного домену для простору ONLYOFFICE у полі нижче. Щоб активувати вибрані вами параметри, натисніть кнопку «Зберегти» внизу розділу.",
"DocumentService": "Сервіс документів",
"DocumentServiceLocationHeader": "Місцезнаходження служби документів",
"DocumentServiceLocationHeaderInfo": "Місцезнаходження служби документа визначає адресу сервера за встановленими службами документа. ",
"DocumentServiceLocationUrlApi": "Сервісна адреса редагування документів",
"DownloadCopy": "Завантажити копію",
"DownloadReportBtnText": "Завантажити звіт",
"DownloadReportDescription": "Звіт буде збережено в розділі «Мої документи»",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "Gửi yêu cầu của bạn đến nhóm hỗ trợ của chúng tôi và các chuyên gia của chúng tôi sẽ giúp bạn cài đặt.",
"DNSSettingsTooltipMain": "Thiết lập DNS cho phép bạn đặt địa chỉ URL thay thế cho không gian {{ organizationName }} của mình.",
"DNSSettingsTooltipStandalone": "Bạn có thể hoặc nhập đường dẫn bạn muốn trong 'trường địa chỉ của trang thông tin' hoặc kiểm tra phần 'Chỉnh sửa tên miền' và chỉ định tên miền riêng của bạn cho trang thông tin ở mục dưới đây. Để áp dụng những thay đổi bạn đã sử dụng nút 'Lưu' ở dưới cùng.",
"DocumentService": "Dịch vụ Tài liệu",
"DocumentServiceLocationHeader": "Địa điểm Dịch vụ Tài liệu",
"DocumentServiceLocationHeaderInfo": "Địa điểm dịch vụ tài liệu chỉ rõ địa chỉ server của dịch vụ tài liệu được cài đặt. ",
"DocumentServiceLocationUrlApi": "Địa chỉ Dịch vụ Chỉnh sửa Tài liệu",
"DownloadCopy": "Tải xuống bản sao",
"DownloadReportBtnText": "Tải báo cáo xuống",
"DownloadReportDescription": "Báo cáo sẽ được lưu vào Tài liệu Của tôi",

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -84,6 +84,10 @@
"DNSSettingsMobile": "您可向我们的支持团队发送请求,我们将有专员帮助您进行设置。",
"DNSSettingsTooltipMain": "DNS 设置可用于为 {{ organizationName }} 空间设置替代 URL 地址。",
"DNSSettingsTooltipStandalone": "选择'使用域名'并选择自己的域名门户ONLYOFFICE在下面的字段。要应用更改使用'保存'以下部分。",
"DocumentService": "文件服务",
"DocumentServiceLocationHeader": "文件服务位置",
"DocumentServiceLocationHeaderInfo": "文档服务位置指定安装了文档服务服务器的地址。 ",
"DocumentServiceLocationUrlApi": "文件编辑服务地址",
"DownloadCopy": "下载副本",
"DownloadReportBtnText": "下载报告",
"DownloadReportDescription": "报告将被保存至“我的文档”",

View File

@ -445,7 +445,7 @@ const CreateUserForm = (props) => {
{roomName ? (
<Trans
t={t}
i18nKey="WelcomeToRoomName"
i18nKey="WelcomeToRoom"
ns="Confirm"
key={roomName}
>

View File

@ -53,6 +53,8 @@ const getTreeItems = (data, path, t) => {
return t("PortalDeletion");
case "Common:PaymentsTitle":
return t("Common:PaymentsTitle");
case "DocumentService":
return t("DocumentService");
case "SingleSignOn":
return t("SingleSignOn");
case "SMTPSettings":

View File

@ -0,0 +1,280 @@
import React, { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { useTranslation } from "react-i18next";
import * as Styled from "./index.styled";
import {
Link,
Button,
Heading,
HelpButton,
InputBlock,
Label,
Text,
} from "@docspace/components";
import toastr from "@docspace/components/toast/toastr";
import Loaders from "@docspace/common/components/Loaders";
const URL_REGEX = /^https?:\/\/[-a-zA-Z0-9@:%._\+~#=]{1,256}\/?$/;
const EDITOR_URL_PLACEHOLDER = `${window.location.protocol}//<editors-dns-name>/`;
const DocumentService = ({
getDocumentServiceLocation,
changeDocumentServiceLocation,
currentColorScheme,
integrationSettingsUrl,
}) => {
const { t, ready } = useTranslation(["Settings", "Common"]);
const [isLoading, setIsLoading] = useState(true);
const [isSaveLoading, setSaveIsLoading] = useState(false);
const [isResetLoading, setResetIsLoading] = useState(false);
const [isDefaultSettings, setIsDefaultSettiings] = useState(false);
const [portalUrl, setPortalUrl] = useState("");
const [portalUrlIsValid, setPortalUrlIsValid] = useState(true);
const [docServiceUrl, setDocServiceUrl] = useState("");
const [docServiceUrlIsValid, setDocServiceUrlIsValid] = useState(true);
const [internalUrl, setInternalUrl] = useState("");
const [internalUrlIsValid, setInternalUrlIsValid] = useState(true);
const [initPortalUrl, setInitPortalUrl] = useState("");
const [initDocServiceUrl, setInitDocServiceUrl] = useState("");
const [initInternalUrl, setInitInternalUrl] = useState("");
useEffect(() => {
setIsLoading(true);
getDocumentServiceLocation()
.then((result) => {
setIsDefaultSettiings(result?.isDefault || false);
setPortalUrl(result?.docServicePortalUrl);
setInternalUrl(result?.docServiceUrlInternal);
setDocServiceUrl(result?.docServiceUrl);
setInitPortalUrl(result?.docServicePortalUrl);
setInitInternalUrl(result?.docServiceUrlInternal);
setInitDocServiceUrl(result?.docServiceUrl);
})
.catch((error) => toastr.error(error))
.finally(() => setIsLoading(false));
}, []);
const onChangeDocServiceUrl = (e) => {
setDocServiceUrl(e.target.value);
if (!e.target.value) setDocServiceUrlIsValid(true);
else setDocServiceUrlIsValid(URL_REGEX.test(e.target.value));
};
const onChangeInternalUrl = (e) => {
setInternalUrl(e.target.value);
if (!e.target.value) setInternalUrlIsValid(true);
else setInternalUrlIsValid(URL_REGEX.test(e.target.value));
};
const onChangePortalUrl = (e) => {
setPortalUrl(e.target.value);
if (!e.target.value) setPortalUrlIsValid(true);
else setPortalUrlIsValid(URL_REGEX.test(e.target.value));
};
const onSubmit = (e) => {
e.preventDefault();
setSaveIsLoading(true);
changeDocumentServiceLocation(docServiceUrl, internalUrl, portalUrl)
.then((response) => {
toastr.success(t("Common:ChangesSavedSuccessfully"));
setDocServiceUrl(response[0]);
setInternalUrl(response[1]);
setPortalUrl(response[2]);
setInitDocServiceUrl(response[0]);
setInitInternalUrl(response[1]);
setInitPortalUrl(response[2]);
setIsDefaultSettiings(false);
})
.catch((e) => toastr.error(e))
.finally(() => setSaveIsLoading(false));
};
const onReset = () => {
setDocServiceUrlIsValid(true);
setInternalUrlIsValid(true);
setPortalUrlIsValid(true);
setResetIsLoading(true);
changeDocumentServiceLocation(null, null, null)
.then((response) => {
toastr.success(t("Common:ChangesSavedSuccessfully"));
setDocServiceUrl(response[0]);
setInternalUrl(response[1]);
setPortalUrl(response[2]);
setInitDocServiceUrl(response[0]);
setInitInternalUrl(response[1]);
setInitPortalUrl(response[2]);
setIsDefaultSettiings(true);
})
.catch((e) => toastr.error(e))
.finally(() => setResetIsLoading(false));
};
const isFormEmpty = !docServiceUrl && !internalUrl && !portalUrl;
const allInputsValid =
docServiceUrlIsValid && internalUrlIsValid && portalUrlIsValid;
const isValuesInit =
docServiceUrl == initDocServiceUrl &&
internalUrl == initInternalUrl &&
portalUrl == initPortalUrl;
if (isLoading || !ready) return <Loaders.SettingsDSConnect />;
return (
<Styled.Location>
<Styled.LocationHeader>
<div className="main">
<Heading className={"heading"} isInline level={3}>
{t("Settings:DocumentServiceLocationHeader")}
</Heading>
<div className="help-button-wrapper">
<HelpButton
tooltipContent={t("Settings:DocumentServiceLocationHeaderHelp")}
/>
</div>
</div>
<div className="secondary">
{t("Settings:DocumentServiceLocationHeaderInfo")}
</div>
<div>
<Link
className="third-party-link"
color={currentColorScheme.main.accent}
isHovered
target="_blank"
href={integrationSettingsUrl}
>
{t("Common:LearnMore")}
</Link>
</div>
</Styled.LocationHeader>
<Styled.LocationForm onSubmit={onSubmit}>
<div className="form-inputs">
<div className="input-wrapper">
<Label
htmlFor="docServiceAdress"
text={t("Settings:DocumentServiceLocationUrlApi")}
/>
<InputBlock
id="docServiceAdress"
type="text"
autoComplete="off"
tabIndex={1}
scale
iconButtonClassName={"icon-button"}
value={docServiceUrl}
onChange={onChangeDocServiceUrl}
placeholder={EDITOR_URL_PLACEHOLDER}
hasError={!docServiceUrlIsValid}
isDisabled={isSaveLoading || isResetLoading}
/>
<Text className="subtitle">
{t("Common:Example", {
example: EDITOR_URL_PLACEHOLDER,
})}
</Text>
</div>
<div className="input-wrapper">
<Label
htmlFor="internalAdress"
text={t("Settings:DocumentServiceLocationUrlInternal")}
/>
<InputBlock
id="internalAdress"
type="text"
autoComplete="off"
tabIndex={2}
scale
iconButtonClassName={"icon-button"}
value={internalUrl}
onChange={onChangeInternalUrl}
placeholder={EDITOR_URL_PLACEHOLDER}
hasError={!internalUrlIsValid}
isDisabled={isSaveLoading || isResetLoading}
/>
<Text className="subtitle">
{t("Common:Example", {
example: EDITOR_URL_PLACEHOLDER,
})}
</Text>
</div>
<div className="input-wrapper">
<Label
htmlFor="portalAdress"
text={t("Settings:DocumentServiceLocationUrlPortal")}
/>
<InputBlock
id="portalAdress"
type="text"
autoComplete="off"
tabIndex={3}
scale
iconButtonClassName={"icon-button"}
value={portalUrl}
onChange={onChangePortalUrl}
placeholder={"http://<docspace-dns-name>/"}
hasError={!portalUrlIsValid}
isDisabled={isSaveLoading || isResetLoading}
/>
<Text className="subtitle">
{t("Common:Example", {
example: `${window.location.origin}`,
})}
</Text>
</div>
</div>
<div className="form-buttons">
<Button
onClick={onSubmit}
className="button"
primary
size={"small"}
label={t("Common:SaveButton")}
isDisabled={
isFormEmpty ||
isValuesInit ||
!allInputsValid ||
isSaveLoading ||
isResetLoading
}
isLoading={isSaveLoading}
/>
<Button
onClick={onReset}
className="button"
size={"small"}
label={t("Settings:RestoreDefaultButton")}
isDisabled={isDefaultSettings || isSaveLoading || isResetLoading}
isLoading={isResetLoading}
/>
</div>
</Styled.LocationForm>
</Styled.Location>
);
};
export default inject(({ auth, settingsStore }) => {
const { currentColorScheme, integrationSettingsUrl } = auth.settingsStore;
const { getDocumentServiceLocation, changeDocumentServiceLocation } =
settingsStore;
return {
getDocumentServiceLocation,
changeDocumentServiceLocation,
currentColorScheme,
integrationSettingsUrl,
};
})(observer(DocumentService));

View File

@ -0,0 +1,83 @@
import { mobile } from "@docspace/components/utils/device";
import styled from "styled-components";
export const Location = styled.div`
display: flex;
flex-direction: column;
gap: 20px;
`;
export const LocationHeader = styled.div`
display: flex;
flex-direction: column;
gap: 8px;
margin: 5px 0 2px 0;
.main {
display: flex;
flex-direction: row;
align-items: center;
gap: 4px;
.heading {
margin: 0;
font-size: 16px;
font-weight: 700;
line-height: 22px;
}
.help-button-wrapper {
width: 12px;
height: 12px;
}
}
.secondary {
width: 100%;
max-width: 700px;
font-size: 13px;
font-weight: 400;
line-height: 20px;
}
`;
export const LocationForm = styled.form`
display: flex;
flex-direction: column;
gap: 20px;
.form-inputs {
width: 100%;
max-width: 350px;
display: flex;
flex-direction: column;
gap: 16px;
.input-wrapper {
display: flex;
flex-direction: column;
gap: 4px;
.icon-button {
display: none;
}
}
.subtitle {
color: ${(props) => props.theme.client.settings.common.descriptionColor};
}
}
.form-buttons {
display: flex;
flex-direction: row;
gap: 8px;
@media ${mobile} {
.button {
width: 100%;
}
}
}
`;

View File

@ -10,9 +10,11 @@ import SSO from "./SingleSignOn";
import ThirdParty from "./ThirdPartyServicesSettings";
import SMTPSettings from "./SMTPSettings";
import DocumentService from "./DocumentService";
const IntegrationWrapper = (props) => {
const { t, tReady, enablePlugins, toDefault, isSSOAvailable } = props;
const { t, tReady, enablePlugins, toDefault, isSSOAvailable, standalone } =
props;
const navigate = useNavigate();
useEffect(() => {
@ -41,6 +43,16 @@ const IntegrationWrapper = (props) => {
},
];
if (standalone) {
const documentServiceData = {
id: "document-service",
name: t("DocumentService"),
content: <DocumentService />,
};
data.push(documentServiceData);
}
const getCurrentTab = () => {
const path = location.pathname;
const currentTab = data.findIndex((item) => path.includes(item.id));
@ -63,6 +75,7 @@ const IntegrationWrapper = (props) => {
};
export default inject(({ auth, ssoStore }) => {
const { standalone } = auth.settingsStore;
const { load: toDefault } = ssoStore;
const { enablePlugins } = auth.settingsStore;
const { isSSOAvailable } = auth.currentQuotaStore;
@ -71,6 +84,7 @@ export default inject(({ auth, ssoStore }) => {
enablePlugins,
toDefault,
isSSOAvailable,
standalone,
};
})(
withTranslation(["Settings", "SingleSignOn", "Translations"])(

View File

@ -302,9 +302,17 @@ export const settingsTree = [
isCategory: true,
},
{
id: "portal-settings_catalog-smtp-settings",
id: "portal-settings_catalog-document-service",
key: "4-3",
icon: "",
link: "document-service",
tKey: "DocumentService",
isCategory: true,
},
{
id: "portal-settings_catalog-smtp-settings",
key: "4-4",
icon: "",
link: "smtp-settings",
tKey: "SMTPSettings",
isCategory: true,

View File

@ -90,6 +90,11 @@ const ThirdParty = loadable(() =>
"../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"
)
);
const DocumentService = loadable(() =>
import("../pages/PortalSettings/categories/integration/DocumentService")
);
const SingleSignOn = loadable(() =>
import("../pages/PortalSettings/categories/integration/SingleSignOn")
);
@ -257,6 +262,10 @@ const PortalSettingsRoutes = {
path: "integration/portal-integration",
element: <Integration />,
},
{
path: "integration/document-service",
element: <Integration />,
},
{
path: "integration/smtp-settings",
element: <Integration />,

View File

@ -190,6 +190,15 @@ class SettingsStore {
setForceSave = (data) =>
api.files.forceSave(data).then((res) => this.setForcesave(res));
getDocumentServiceLocation = () => api.files.getDocumentServiceLocation();
changeDocumentServiceLocation = (docServiceUrl, internalUrl, portalUrl) =>
api.files.changeDocumentServiceLocation(
docServiceUrl,
internalUrl,
portalUrl
);
setForcesave = (val) => (this.forcesave = val);
updateRootTreeFolders = () => {

View File

@ -830,10 +830,6 @@ export function removeFromFavorite(ids) {
return request(options);
}
export function getDocServiceUrl() {
return request({ method: "get", url: `/files/docservice` });
}
export function getIsEncryptionSupport() {
return request({
method: "get",
@ -1010,3 +1006,27 @@ export function sendEditorNotify(fileId, actionLink, emails, message) {
},
});
}
export function getDocumentServiceLocation(version = true) {
return request({
method: "get",
url: `/files/docservice`,
params: { version },
});
}
export function changeDocumentServiceLocation(
docServiceUrl,
internalUrl,
portalUrl
) {
return request({
method: "put",
url: `files/docservice`,
data: {
DocServiceUrl: docServiceUrl,
DocServiceUrlInternal: internalUrl,
DocServiceUrlPortal: portalUrl,
},
});
}

View File

@ -0,0 +1,190 @@
import React from "react";
import { LoaderStyle } from "../../../constants";
import RectangleLoader from "../RectangleLoader";
import { StyledSMTPContent } from "./StyledComponent";
const speed = 2;
const SettingsDSConnect = () => {
const firstComponent = (
<div>
<div>
<RectangleLoader
height="22"
width="56"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
<RectangleLoader
className="rectangle-loader-2"
height="46"
width="348"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
);
const secondComponent = (
<div>
<RectangleLoader
height="20"
width="101"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
<RectangleLoader
className="rectangle-loader-2"
height="32"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
);
const thirdComponent = (
<div>
<RectangleLoader
height="20"
width="138"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
<RectangleLoader
className="rectangle-loader-2"
height="32"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
);
const checkboxComponent = (
<div className="rectangle-loader_checkbox">
<RectangleLoader
height="16"
width="16"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
<RectangleLoader
height="22"
width="101"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
);
const secondCheckboxComponent = (
<div className="rectangle-loader_checkbox">
<RectangleLoader
height="16"
width="16"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
<RectangleLoader
height="20"
width="70"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
);
const buttonsComponent = (
<div className="rectangle-loader_buttons">
<RectangleLoader
height="32"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
<RectangleLoader
height="32"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
</div>
);
return (
<StyledSMTPContent>
<RectangleLoader
className="rectangle-loader_title"
height="22"
width="128"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
<RectangleLoader
className="rectangle-loader_description"
height="40"
backgroundColor={LoaderStyle.backgroundColor}
foregroundColor={LoaderStyle.foregroundColor}
backgroundOpacity={LoaderStyle.backgroundOpacity}
foregroundOpacity={LoaderStyle.foregroundOpacity}
speed={speed}
animate={true}
/>
{firstComponent}
{firstComponent}
{firstComponent}
{buttonsComponent}
</StyledSMTPContent>
);
};
export default SettingsDSConnect;

View File

@ -49,6 +49,7 @@ import SettingsHeader from "./SettingsLoader/SettingsHeaderLoader";
import SettingsAdmin from "./SettingsLoader/SettingsAdminLoader";
import SettingsCommon from "./SettingsLoader/SettingsCommonLoader";
import SettingsSMTP from "./SettingsLoader/SettingsSMTPLoader";
import SettingsDSConnect from "./SettingsLoader/SettingsDSConnectLoader";
import EmptyContainerLoader from "./EmptyContainerLoader/EmptyContainerLoader";
import ContextMenuLoader from "./ContextMenuLoader";
@ -103,6 +104,7 @@ export default {
SettingsAdmin,
SettingsCommon,
SettingsSMTP,
SettingsDSConnect,
EmptyContainerLoader,
Notifications,

View File

@ -62,6 +62,7 @@ class InputBlock extends React.Component {
forwardedRef,
iconButtonClassName,
iconNode,
...props
} = this.props;
if (typeof iconSize == "number" && iconSize > 0) {
@ -124,6 +125,7 @@ class InputBlock extends React.Component {
mask={mask}
keepCharPositions={keepCharPositions}
forwardedRef={forwardedRef}
{...props}
/>
{
//iconNames.includes(iconName) && (

View File

@ -47,7 +47,7 @@ public class FilesLinkUtility
CoreBaseSettings coreBaseSettings,
CoreSettings coreSettings,
IConfiguration configuration,
InstanceCrypto instanceCrypto,
InstanceCrypto instanceCrypto,
ExternalShare externalShare)
{
_commonLinkUtility = commonLinkUtility;
@ -85,11 +85,12 @@ public class FilesLinkUtility
get { return FilesBaseAbsolutePath + "filehandler.ashx"; }
}
private const string PublicUrlKey = "public";
public string DocServiceUrl
{
get
{
var url = GetUrlSetting("public");
var url = GetUrlSetting(PublicUrlKey, out _);
if (!string.IsNullOrEmpty(url) && url != "/")
{
url = url.TrimEnd('/') + "/";
@ -98,7 +99,7 @@ public class FilesLinkUtility
}
set
{
SetUrlSetting("api", null);
SetUrlSetting(ApiUrlKey, null);
value = (value ?? "").Trim().ToLowerInvariant();
if (!string.IsNullOrEmpty(value))
@ -110,15 +111,16 @@ public class FilesLinkUtility
}
}
SetUrlSetting("public", value);
SetUrlSetting(PublicUrlKey, value);
}
}
private const string InternalUrlKey = "internal";
public string DocServiceUrlInternal
{
get
{
var url = GetUrlSetting("internal");
var url = GetUrlSetting(InternalUrlKey, out _);
if (string.IsNullOrEmpty(url))
{
url = DocServiceUrl;
@ -146,15 +148,16 @@ public class FilesLinkUtility
}
}
SetUrlSetting("internal", value);
SetUrlSetting(InternalUrlKey, value);
}
}
private const string ApiUrlKey = "api";
public string DocServiceApiUrl
{
get
{
var url = GetUrlSetting("api");
var url = GetUrlSetting(ApiUrlKey, out _);
if (string.IsNullOrEmpty(url))
{
url = DocServiceUrl;
@ -171,7 +174,7 @@ public class FilesLinkUtility
{
get
{
var url = GetUrlSetting("converter");
var url = GetUrlSetting("converter", out _);
if (string.IsNullOrEmpty(url))
{
url = DocServiceUrlInternal;
@ -188,7 +191,7 @@ public class FilesLinkUtility
{
get
{
var url = GetUrlSetting("command");
var url = GetUrlSetting("command", out _);
if (string.IsNullOrEmpty(url))
{
url = DocServiceUrlInternal;
@ -205,7 +208,7 @@ public class FilesLinkUtility
{
get
{
var url = GetUrlSetting("docbuilder");
var url = GetUrlSetting("docbuilder", out _);
if (string.IsNullOrEmpty(url))
{
url = DocServiceUrlInternal;
@ -222,7 +225,7 @@ public class FilesLinkUtility
{
get
{
var url = GetUrlSetting("healthcheck");
var url = GetUrlSetting("healthcheck", out _);
if (string.IsNullOrEmpty(url))
{
url = DocServiceUrlInternal;
@ -235,9 +238,10 @@ public class FilesLinkUtility
}
}
private const string PortalUrlKey = "portal";
public string DocServicePortalUrl
{
get { return GetUrlSetting("portal"); }
get { return GetUrlSetting(PortalUrlKey, out _); }
set
{
value = (value ?? "").Trim().ToLowerInvariant();
@ -250,7 +254,26 @@ public class FilesLinkUtility
}
}
SetUrlSetting("portal", value);
SetUrlSetting(PortalUrlKey, value);
}
}
public bool IsDefault
{
get
{
bool isDefault;
GetUrlSetting(PublicUrlKey, out isDefault);
if (!isDefault) return false;
GetUrlSetting(InternalUrlKey, out isDefault);
if (!isDefault) return false;
GetUrlSetting(PortalUrlKey, out isDefault);
if (!isDefault) return false;
return true;
}
}
@ -415,20 +438,30 @@ public class FilesLinkUtility
return virtualPath.EndsWith(".ashx") ? virtualPath : virtualPath.TrimEnd('/') + "/ChunkedUploader.ashx";
}
private string GetUrlSetting(string key, string appSettingsKey = null)
private string GetUrlSetting(string key, out bool isDefault)
{
var value = string.Empty;
isDefault = false;
if (_coreBaseSettings.Standalone)
{
value = _coreSettings.GetSetting(GetSettingsKey(key));
}
if (string.IsNullOrEmpty(value))
{
value = _configuration["files:docservice:url:" + (appSettingsKey ?? key)];
value = GetDefaultUrlSetting(key);
isDefault = true;
}
return value;
}
private string GetDefaultUrlSetting(string key)
{
return _configuration[$"files:docservice:url:{key}"];
}
private void SetUrlSetting(string key, string value)
{
if (!_coreBaseSettings.Standalone)
@ -441,9 +474,18 @@ public class FilesLinkUtility
value = null;
}
if (GetUrlSetting(key) != value)
if (value != null)
{
_coreSettings.SaveSetting(GetSettingsKey(key), value);
var def = GetDefaultUrlSetting(key);
if (def == value)
{
value = null;
}
}
if (GetUrlSetting(key, out _) != value)
{
_coreSettings.SaveSetting(GetSettingsKey(key), value);
}
}
@ -451,7 +493,7 @@ public class FilesLinkUtility
{
return "DocKey_" + key;
}
private string GetUrlWithShare(string url)
{
if (_externalShare.GetLinkId() == default)

View File

@ -406,7 +406,8 @@ public class EditorController : ApiControllerBase
docServiceUrlApi = url,
_filesLinkUtility.DocServiceUrl,
_filesLinkUtility.DocServiceUrlInternal,
_filesLinkUtility.DocServicePortalUrl
_filesLinkUtility.DocServicePortalUrl,
_filesLinkUtility.IsDefault
};
}
}

View File

@ -24,6 +24,8 @@
// 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
using ASC.Data.Storage;
namespace ASC.Files;
public class Startup : BaseStartup
@ -99,5 +101,10 @@ public class Startup : BaseStartup
{
appBranch.UseDocuSignHandler();
});
app.UseEndpoints(endpoints =>
{
endpoints.InitializeHttpHandlers("files_template");
});
}
}

View File

@ -113,6 +113,7 @@
"EveryMonth": "كل شهر",
"EveryWeek": "كل اسبوع",
"Exabyte": "البايت",
"Example": "مثال: {{example}}",
"ExpiredLink": "رابط منتهي الصلاحية",
"FeedbackAndSupport": "التقييم والدعم",
"FillFormButton": "إملأ النموذج",

View File

@ -113,6 +113,7 @@
"ErrorReportDescription": "Hansı məlumatın daxil olduğunu görmək üçün aşağıdakı hesabatıın. Xəta hesabatlarında istifadəçilərin şəxsi məlumatları əks olunmur. Komandamızın problemi daha yaxşı başa düşməsi üçün şərh sahəsindən istifadə edərək məsələni aydın şəkildə təsvir edin.",
"ErrorReportSuccess": "Xəta hesabatı uğurla göndərildi",
"Exabyte": "EB",
"Example": "Nümunə: {{example}}",
"ExpiredLink": "İstifadə müddəti bitmiş keçid",
"FeedbackAndSupport": "Rəy və Dəstək",
"FillFormButton": "Formu doldurun",

View File

@ -113,6 +113,7 @@
"ErrorReportDescription": "Отворете доклада по-долу, за да видите какви данни са включени. Докладите за грешки не съдържат лични данни на потребителите. За да помогнете на нашия екип да разбере по-добре проблема, опишете го в свободна форма, като използвате полето за коментар.",
"ErrorReportSuccess": "Докладът за грешка беше изпратен успешно",
"Exabyte": "EB",
"Example": "Пример: {{example}}",
"ExpiredLink": "Изтекъл линк",
"FeedbackAndSupport": "Обратна връзка и поддръжка",
"FillFormButton": "Попълнете формуляра",

Some files were not shown because too many files have changed in this diff Show More