Merge branch 'develop' into refactoring/data-import

Conflicts:
	packages/client/src/pages/PortalSettings/categories/data-import/NextCloudWorkspace/index.js
	packages/shared/api/settings/index.ts
	packages/shared/api/settings/types.ts
This commit is contained in:
Vladimir Khvan 2024-06-06 13:08:57 +05:00
commit c6e0638509
203 changed files with 2728 additions and 1165 deletions

View File

@ -56364,6 +56364,134 @@
</translation>
</translations>
</concept_node>
<concept_node>
<name>OpenSameTab</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>si-SI</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>sr-Latn-RS</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>OriginalCopy</name>
<description/>

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "أنشئ جدول بيانات",
"HotkeysCreatingObjects": "إنشاء العناصر",
"HotkeysCutSelected": "قص العناصر المحددة إلى الحافظة.",
"HotkeysEnterKey": "ادخل",
"HotkeysExtendSelectionDown": "تمديد التحديد لأسفل",
"HotkeysExtendSelectionLeft": "تمديد التحديد لليسار",
"HotkeysExtendSelectionRight": "تمديد التحديد لليمين",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "حدد العنصر التالي على اليمين",
"HotkeysSelectUp": "حدد العنصر التالي لأعلى",
"HotkeysShortcuts": "عرض قائمة مفاتيح الاخصار للوحة المفاتيح",
"HotkeysSpaceKey": "إستضافة",
"HotkeysUndoLastAction": "التراجع عن الإجراء الأخير",
"HotkeysUploadFile": "ارفع الملف",
"HotkeysUploadingObjects": "رفع العناصر",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "اختر ملفات النسخ الاحتياطي",
"ClearBackupList": "احذف جميع النسخ الاحتياطية",
"CloseMenu": "أغلاق القائمة",
"CommonFilesDescription": "بالنسبة للملفات الموجودة في القسم العام، سيتم إنشاء غرفة منفصلة (غرفة مشتركة). سيتمكن مسؤولو DocSpace فقط من الوصول إلى هذه الغرفة. بشكل افتراضي، سيكون مالك الغرفة هو المستخدم الذي يبدأ الاستيراد: John Smith (You).",
"CommonFilesDescription": "بالنسبة للملفات الموجودة في القسم العام، سيتم إنشاء غرفة منفصلة (غرفة مشتركة). سيتمكن مسؤولو DocSpace فقط من الوصول إلى هذه الغرفة. بشكل افتراضي، سيكون مالك الغرفة هو المستخدم الذي يبدأ الاستيراد: {{user}} (You).",
"CompanyInfoSettings": "إعدادات معلومات الشركة",
"CompanyInfoSettingsDescription": "سيتم عرض هذه المعلومات في النافذة <1> {{link}} </1>.",
"ConfirmEmailSended": "تم إرسال بريد التأكيد الإلكتروني إلى {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Cədvəl yarat",
"HotkeysCreatingObjects": "Elementlərin yaradılması",
"HotkeysCutSelected": "Seçilmiş elementləri mübadilə buferinə kopyalayın",
"HotkeysEnterKey": "Daxil olun",
"HotkeysExtendSelectionDown": "Seçimi sağa doğru uzadın",
"HotkeysExtendSelectionLeft": "Seçimi sola doğru uzadın",
"HotkeysExtendSelectionRight": "Seçimi sağa doğru uzadın",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Sağdakı növbəti elementi seçin",
"HotkeysSelectUp": "Yuxarıdakı növbəti elementi seçin",
"HotkeysShortcuts": "Klaviaturadakı qısayollar siyahısını göstərin",
"HotkeysSpaceKey": "Boşluq",
"HotkeysUndoLastAction": "Son hərəkəti ləğv edin",
"HotkeysUploadFile": "Fayl yüklə",
"HotkeysUploadingObjects": "Elementlərin yüklənilməsi",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Ehtiyat faylları seçin",
"ClearBackupList": "Bütün ehtiyat nüsxələri silin",
"CloseMenu": "Menyunu bağlayın",
"CommonFilesDescription": "Ümumi bölmədəki fayllar üçün ayrıca otaq (Ümumi otaq) yaradılacaq. Bu otağa yalnız DocSpace administratorları daxil ola bilər. Defolt olaraq, otağın sahibi idxalı başladan istifadəçi olacaq: John Smith (Siz).",
"CommonFilesDescription": "Ümumi bölmədəki fayllar üçün ayrıca otaq (Ümumi otaq) yaradılacaq. Bu otağa yalnız DocSpace administratorları daxil ola bilər. Defolt olaraq, otağın sahibi idxalı başladan istifadəçi olacaq: {{user}} (Siz).",
"CompanyInfoSettings": "Şirkət məlumatları parametrləri",
"CompanyInfoSettingsDescription": "Bu məlumat <1>{{link}}</1> pəncərəsində göstəriləcək.",
"ConfirmEmailSended": "Təsdiqləmə e-məktubu {{ownerName}} göndərilmişdir",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Създайте таблица",
"HotkeysCreatingObjects": "Създаване на елементи",
"HotkeysCutSelected": "Изрежи избраните елементи в клипборда",
"HotkeysEnterKey": "Влез",
"HotkeysExtendSelectionDown": "Разширяване на избора надолу",
"HotkeysExtendSelectionLeft": "Разширяване на избора вляво",
"HotkeysExtendSelectionRight": "Разширете избора надясно",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Изберете следващия елемент вдясно",
"HotkeysSelectUp": "Изберете следващия елемент нагоре",
"HotkeysShortcuts": "Показване на списък с клавишни комбинации на клавиатурата",
"HotkeysSpaceKey": "Пространство",
"HotkeysUndoLastAction": "Отмяна на последното действие",
"HotkeysUploadFile": "Качи файл",
"HotkeysUploadingObjects": "Качване на елементи",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Изберете архивните файлове",
"ClearBackupList": "Изтриване на всички архиви",
"CloseMenu": "Затвори меню",
"CommonFilesDescription": "За файловете в раздела Общи ще бъде създадена отделна стая (Обща стая). Само администраторите на DocSpace ще имат достъп до тази стая. По подразбиране собственикът на стаята ще бъде потребителят, иницииращ импортирането: Джон Смит (Вие).",
"CommonFilesDescription": "За файловете в раздела Общи ще бъде създадена отделна стая (Обща стая). Само администраторите на DocSpace ще имат достъп до тази стая. По подразбиране собственикът на стаята ще бъде потребителят, иницииращ импортирането: {{user}} (Вие).",
"CompanyInfoSettings": "Настройки на фирмените данни",
"CompanyInfoSettingsDescription": "Тази информация ще се покаже в прозореца <1>{{link}}</1>.",
"ConfirmEmailSended": "Имейлът за потвърждение бе изпратен на {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Vytvořit tabulku",
"HotkeysCreatingObjects": "Vytváření položek",
"HotkeysCutSelected": "Vyjmutí vybraných položek do schránky",
"HotkeysEnterKey": "Zadat",
"HotkeysExtendSelectionDown": "Rozšířit výběr dolů",
"HotkeysExtendSelectionLeft": "Rozšířit výběr vlevo",
"HotkeysExtendSelectionRight": "Rozšířit výběr doprava",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Vybrat další položku vpravo",
"HotkeysSelectUp": "Vybrat další položku nahoru",
"HotkeysShortcuts": "Zobrazit seznam klávesových zkratek",
"HotkeysSpaceKey": "Mezera",
"HotkeysUndoLastAction": "Vrátit poslední akci",
"HotkeysUploadFile": "Nahrát soubor",
"HotkeysUploadingObjects": "Nahrávání položek",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Výběr záložních souborů",
"ClearBackupList": "Odstranit všechny zálohy",
"CloseMenu": "Zavřít nabídku",
"CommonFilesDescription": "Pro soubory ve společné části bude vytvořena samostatná místnost (Společná místnost). Do této místnosti budou mít přístup pouze správci DocSpace. Ve výchozím nastavení bude vlastníkem místnosti uživatel, který iniciuje import: Jan Novák (Vy).",
"CommonFilesDescription": "Pro soubory ve společné části bude vytvořena samostatná místnost (Společná místnost). Do této místnosti budou mít přístup pouze správci DocSpace. Ve výchozím nastavení bude vlastníkem místnosti uživatel, který iniciuje import: {{user}} (Vy).",
"CompanyInfoSettings": "Nastavení informací o společnosti",
"CompanyInfoSettingsDescription": "Tyto informace se zobrazí v okně <1>{{link}}</1>.",
"ConfirmEmailSended": "Potvrzující e-mail byl odeslán{{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Eine Tabelle erstellen",
"HotkeysCreatingObjects": "Erstellen von Elementen",
"HotkeysCutSelected": "Ausgewählte Elemente in der Zwischenablage ausschneiden",
"HotkeysEnterKey": "Eingeben",
"HotkeysExtendSelectionDown": "Auswahl nach unten erweitern",
"HotkeysExtendSelectionLeft": "Auswahl nach links erweitern",
"HotkeysExtendSelectionRight": "Auswahl nach rechts erweitern",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Nächstes Element nach rechts auswählen",
"HotkeysSelectUp": "Nächstes Element nach oben auswählen",
"HotkeysShortcuts": "Liste der Tastenkombinationen anzeigen",
"HotkeysSpaceKey": "Leerzeichen",
"HotkeysUndoLastAction": "Rückgängig machen",
"HotkeysUploadFile": "Datei hochladen",
"HotkeysUploadingObjects": "Hochladen von Elementen",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Sicherungsdateien wählen",
"ClearBackupList": "Alle Datensicherungen löschen",
"CloseMenu": "Menü schließen",
"CommonFilesDescription": "Für die Dateien im Abschnitt „Gemeinsam“ wird ein separater Raum erstellt (Gemeinsamer Raum). Nur DocSpace-Administratoren haben Zugriff auf diesen Raum. Standardmäßig ist der Besitzer des Raums der Benutzer, der den Import initiiert: John Smith (Sie).",
"CommonFilesDescription": "Für die Dateien im Abschnitt „Gemeinsam“ wird ein separater Raum erstellt (Gemeinsamer Raum). Nur DocSpace-Administratoren haben Zugriff auf diesen Raum. Standardmäßig ist der Besitzer des Raums der Benutzer, der den Import initiiert: {{user}} (Sie).",
"CompanyInfoSettings": "Einstellungen zum Unternehmen",
"CompanyInfoSettingsDescription": "Diese Informationen werden im Fenster <1>{{link}}</1> angezeigt.",
"ConfirmEmailSended": "Bestätiguns-E-Mail wurde an {{ownerName}} gesendet.",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Δημιουργία υπολογιστικού φύλλου",
"HotkeysCreatingObjects": "Δημιουργία στοιχείων",
"HotkeysCutSelected": "Αποκοπή επιλεγμένων στοιχείων στο πρόχειρο",
"HotkeysEnterKey": "Εισαγωγή",
"HotkeysExtendSelectionDown": "Επέκταση της επιλογής προς τα κάτω",
"HotkeysExtendSelectionLeft": "Επέκταση της επιλογής αριστερά",
"HotkeysExtendSelectionRight": "Επέκταση της επιλογής δεξιά",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Επιλέξτε το επόμενο στοιχείο στα δεξιά",
"HotkeysSelectUp": "Επιλέξτε το επόμενο στοιχείο επάνω",
"HotkeysShortcuts": "Εμφάνιση λίστας πλήκτρων συντομεύσεων πληκτρολογίου",
"HotkeysSpaceKey": "Κενό διάστημα",
"HotkeysUndoLastAction": "Αναίρεση της τελευταίας ενέργειας",
"HotkeysUploadFile": "Μεταφόρτωση αρχείου",
"HotkeysUploadingObjects": "Μεταφόρτωση στοιχείων",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Επιλογή αρχείων αντιγράφων ασφαλείας",
"ClearBackupList": "Διαγραφή όλων των αντιγράφων ασφαλείας",
"CloseMenu": "Κλείσιμο μενού",
"CommonFilesDescription": "Για τα αρχεία στην ενότητα Κοινά, θα δημιουργηθεί ένα ξεχωριστό δωμάτιο (Κοινό δωμάτιο). Μόνο οι διαχειριστές του DocSpace θα έχουν πρόσβαση σε αυτό το δωμάτιο. Από προεπιλογή, ο ιδιοκτήτης του δωματίου θα είναι ο χρήστης που ξεκινά την εισαγωγή: Γιώργος Παπαδόπουλος (Εσείς).",
"CommonFilesDescription": "Για τα αρχεία στην ενότητα Κοινά, θα δημιουργηθεί ένα ξεχωριστό δωμάτιο (Κοινό δωμάτιο). Μόνο οι διαχειριστές του DocSpace θα έχουν πρόσβαση σε αυτό το δωμάτιο. Από προεπιλογή, ο ιδιοκτήτης του δωματίου θα είναι ο χρήστης που ξεκινά την εισαγωγή: {{user}} (Εσείς).",
"CompanyInfoSettings": "Ρυθμίσεις πληροφοριών εταιρείας",
"CompanyInfoSettingsDescription": "Αυτές οι πληροφορίες θα εμφανιστούν στο παράθυρο <1>{{link}}</1>.",
"ConfirmEmailSended": "Το e-mail επιβεβαίωσης έχει σταλεί στον χρήστη {{ownerName}}",

View File

@ -182,6 +182,7 @@
"WantLeaveRoom": "Do you really want to leave this room? You will be able to join it again via new invitation by a room admin.",
"WantToRestoreTheRoom": "All shared links in this room will become active, and its contents will be available to everyone with the link. Do you want to restore the room?",
"WantToRestoreTheRooms": "All shared links in restored rooms will become active, and their contents will be available to everyone with the room links. Do you want to restore the rooms?",
"WaitOperation": "Wait for the current operation to complete",
"WithSubfolders": "With subfolders",
"YouLeftTheRoom": "You have left the room"
}

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Create spreadsheet",
"HotkeysCreatingObjects": "Creating items",
"HotkeysCutSelected": "Cut selected items to the clipboard",
"HotkeysEnterKey": "Enter",
"HotkeysExtendSelectionDown": "Extend selection down",
"HotkeysExtendSelectionLeft": "Extend selection left",
"HotkeysExtendSelectionRight": "Extend selection right",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Select next item to the right",
"HotkeysSelectUp": "Select next item up",
"HotkeysShortcuts": "Display keyboard hotkeys list",
"HotkeysSpaceKey": "Space",
"HotkeysUndoLastAction": "Undo the last action",
"HotkeysUploadFile": "Upload file",
"HotkeysUploadingObjects": "Uploading items",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Crear hoja de cálculo",
"HotkeysCreatingObjects": "Creando elementos",
"HotkeysCutSelected": "Cortar los elementos seleccionados en el portapapeles",
"HotkeysEnterKey": "Introducir",
"HotkeysExtendSelectionDown": "Ampliar la selección hacia abajo",
"HotkeysExtendSelectionLeft": "Ampliar la selección hacia la izquierda",
"HotkeysExtendSelectionRight": "Ampliar la selección hacia la derecha",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Seleccionar el siguiente elemento hacia la derecha",
"HotkeysSelectUp": "Seleccionar el siguiente elemento hacia arriba",
"HotkeysShortcuts": "Mostrar la lista de atajos de teclado",
"HotkeysSpaceKey": "Espacio",
"HotkeysUndoLastAction": "Deshacer la última acción",
"HotkeysUploadFile": "Cargar archivo",
"HotkeysUploadingObjects": "Cargando elementos",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Elija los archivos de copia de seguridad",
"ClearBackupList": "Eliminar todas las copias de seguridad",
"CloseMenu": "Cerrar menú",
"CommonFilesDescription": "Para los archivos de la sección Común, se creará una sala separada (Sala común). Solo los administradores de DocSpace tendrán acceso a esta sala. De forma predeterminada, el propietario de la sala será el usuario que inicie la importación: John Smith (usted).",
"CommonFilesDescription": "Para los archivos de la sección Común, se creará una sala separada (Sala común). Solo los administradores de DocSpace tendrán acceso a esta sala. De forma predeterminada, el propietario de la sala será el usuario que inicie la importación: {{user}} (usted).",
"CompanyInfoSettings": "Configuración de la información de la empresa",
"CompanyInfoSettingsDescription": "Esta información se mostrará en la ventana <1>{{link}}</1>.",
"ConfirmEmailSended": "El correo electrónico de confirmación ha sido enviado a {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Luo laskentataulukko",
"HotkeysCreatingObjects": "Kohteiden luominen",
"HotkeysCutSelected": "Leikkaa valitut kohteet leikepöydälle",
"HotkeysEnterKey": "Syötä",
"HotkeysExtendSelectionDown": "Laajenna valintaa alaspäin",
"HotkeysExtendSelectionLeft": "Laajenna valintaa vasemmalle",
"HotkeysExtendSelectionRight": "Laajenna valintaa oikealle",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Valitse seuraava kohde oikealta",
"HotkeysSelectUp": "Valitse seuraava kohde yltä",
"HotkeysShortcuts": "Näytä näppäimistön pikanäppäinten luettelo",
"HotkeysSpaceKey": "Väli",
"HotkeysUndoLastAction": "Kumoa viimeinen toiminto",
"HotkeysUploadFile": "Lataa tiedosto",
"HotkeysUploadingObjects": "Kohteiden lataaminen",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Valitse varmuuskopiotiedostot",
"ClearBackupList": "Poista kaikki varmuuskopiot",
"CloseMenu": "Sulje menu ",
"CommonFilesDescription": "Erillinen huone luodaan Yleistä-osion tiedostoille (Yleistä-huone). Vain DocSpace-järjestelmänvalvojilla on oikeudet tähän huoneeseen. Huoneen omistaja on oletuksena käyttäjä, joka voi aloittaa tuonnin: John Smith (sinä).",
"CommonFilesDescription": "Erillinen huone luodaan Yleistä-osion tiedostoille (Yleistä-huone). Vain DocSpace-järjestelmänvalvojilla on oikeudet tähän huoneeseen. Huoneen omistaja on oletuksena käyttäjä, joka voi aloittaa tuonnin: {{user}} (sinä).",
"CompanyInfoSettings": "Yrityksen info-asetukset",
"CompanyInfoSettingsDescription": "Tämä informaatio näytetään <1>{{link}}</1> ikkunassa.",
"ConfirmEmailSended": "Vahvistusviesti on lähetetty osoitteen {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Créer une feuille de calcul",
"HotkeysCreatingObjects": "Création d'éléments",
"HotkeysCutSelected": "Couper les éléments sélectionnés dans le presse-papiers",
"HotkeysEnterKey": "Entrer",
"HotkeysExtendSelectionDown": "Étendre la sélection vers le bas",
"HotkeysExtendSelectionLeft": "Étendre la sélection vers la gauche",
"HotkeysExtendSelectionRight": "Étendre la sélection vers la droite",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Sélectionner l'élément suivant à droite",
"HotkeysSelectUp": "Sélectionner l'élément suivant vers le haut",
"HotkeysShortcuts": "Afficher la liste des raccourcis clavier",
"HotkeysSpaceKey": "Espace",
"HotkeysUndoLastAction": "Annuler la dernière action",
"HotkeysUploadFile": "Télécharger le fichier",
"HotkeysUploadingObjects": "Chargement d'éléments",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Choisissez les fichiers de sauvegarde",
"ClearBackupList": "Supprimer toutes les sauvegardes",
"CloseMenu": "Fermer le menu",
"CommonFilesDescription": "Quant aux fichiers depuis la section Commun, une salle séparée sera crée (Salle Commune). Ce sont uniquement les administrateurs DocSpace qui auront l'accès à cette salle. Par défaut, le propriétaire de la salle sera l'utilisateur qui a lancé l'importation: John Smith (Vous).",
"CommonFilesDescription": "Quant aux fichiers depuis la section Commun, une salle séparée sera crée (Salle Commune). Ce sont uniquement les administrateurs DocSpace qui auront l'accès à cette salle. Par défaut, le propriétaire de la salle sera l'utilisateur qui a lancé l'importation: {{user}} (Vous).",
"CompanyInfoSettings": "Paramètres dinformation de lentreprise",
"CompanyInfoSettingsDescription": "Ces informations seront affichées dans la fenêtre <1>{{link}}</1>.",
"ConfirmEmailSended": "Un e-mail de confirmation a été envoyé à {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Ստեղծել աղյուսակաթերթ",
"HotkeysCreatingObjects": "Միավորների ստեղծում",
"HotkeysCutSelected": "Կտրեք ընտրված տարրերը սեղմատախտակի վրա",
"HotkeysEnterKey": "Մուտքագրել",
"HotkeysExtendSelectionDown": "Ընդարձակում է ընտրարկումը վար",
"HotkeysExtendSelectionLeft": "Ընդարձակում է ընտրարկումը ձախ",
"HotkeysExtendSelectionRight": "Ընդարձակում է ընտրարկումը աջ",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Ընտրեք հաջորդ միավորը ձախ կողմում",
"HotkeysSelectUp": "Ընտրեք հաջորդ միավորը աջ կողմում",
"HotkeysShortcuts": "Ցուցադրել ստեղնաշարի թեժ ստեղների ցանկը",
"HotkeysSpaceKey": "Բացատ",
"HotkeysUndoLastAction": "Հետարկել վերջին գործողությունը",
"HotkeysUploadFile": "Վերբեռնել ֆայլը",
"HotkeysUploadingObjects": "Միավորների վերբեռնում",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Ընտրել պահուստային կրկնօրինակ ֆայլերը",
"ClearBackupList": "Ջնջել բոլոր պահուստները",
"CloseMenu": "Փակել մենյուն",
"CommonFilesDescription": "Ընդհանուր բաժնի ֆայլերի համար կստեղծվի առանձին սենյակ (Ընդհանուր սենյակ): Այս սենյակ մուտք կունենան միայն DocSpace-ի ադմինիստրատորները: Լռելյայնորեն, սենյակի սեփականատերը կլինի ներմուծումը նախաձեռնող օգտատերը՝ Ջոն Սմիթը (Դուք):",
"CommonFilesDescription": "Ընդհանուր բաժնի ֆայլերի համար կստեղծվի առանձին սենյակ (Ընդհանուր սենյակ): Այս սենյակ մուտք կունենան միայն DocSpace-ի ադմինիստրատորները: Լռելյայնորեն, սենյակի սեփականատերը կլինի ներմուծումը նախաձեռնող օգտատերը՝ {{user}} (Դուք):",
"CompanyInfoSettings": "Ընկերության տեղեկատվության կարգավորումները",
"CompanyInfoSettingsDescription": "Այս տեղեկատվությունը կցուցադրվի <1>{{link}}</1> պատուհանում:",
"ConfirmEmailSended": "Հաստատման էլ-նամակը ուղարկվել է {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Creare foglio di calcolo",
"HotkeysCreatingObjects": "Creazione elementi",
"HotkeysCutSelected": "Tagliare gli elementi selezionati negli appunti",
"HotkeysEnterKey": "Invio",
"HotkeysExtendSelectionDown": "Estendere la selezione verso il basso",
"HotkeysExtendSelectionLeft": "Estendere la selezione a sinistra",
"HotkeysExtendSelectionRight": "Estendere la selezione a destra",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selezionare l'elemento successivo a destra",
"HotkeysSelectUp": "Selezionare l'elemento successivo in alto",
"HotkeysShortcuts": "Visualizzare l'elenco dei tasti di scelta rapida della tastiera",
"HotkeysSpaceKey": "Spazio",
"HotkeysUndoLastAction": "Annullare l'ultima azione",
"HotkeysUploadFile": "Caricare file",
"HotkeysUploadingObjects": "Caricamento elementi",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Scegli i file di backup",
"ClearBackupList": "Elimina tutti i backup",
"CloseMenu": "Chiudi menù",
"CommonFilesDescription": "Per i file presenti nella sezione Comune verrà creata una stanza separata (Stanza Comune). Solo gli amministratori di DocSpace avranno accesso a questa stanza. Per impostazione predefinita, il proprietario della stanza sarà l'utente che avvia l'importazione: John Smith (Tu).",
"CommonFilesDescription": "Per i file presenti nella sezione Comune verrà creata una stanza separata (Stanza Comune). Solo gli amministratori di DocSpace avranno accesso a questa stanza. Per impostazione predefinita, il proprietario della stanza sarà l'utente che avvia l'importazione: {{user}} (Tu).",
"CompanyInfoSettings": "Impostazioni delle informazioni aziendali",
"CompanyInfoSettingsDescription": "Queste informazioni verranno visualizzate nella finestra <1>{{link}}</1>.",
"ConfirmEmailSended": "Un messaggio e-mail di conferma è stato spedito a {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "スプレッドシートを作成する",
"HotkeysCreatingObjects": "アイテムの作成",
"HotkeysCutSelected": "選択した項目をクリップボードにカット",
"HotkeysEnterKey": "入力",
"HotkeysExtendSelectionDown": "選択範囲の拡大(下)",
"HotkeysExtendSelectionLeft": "選択範囲の拡大(左)",
"HotkeysExtendSelectionRight": "選択範囲の拡大(右)",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "次のアイテムを選択(右)",
"HotkeysSelectUp": "次のアイテムを選択(上)",
"HotkeysShortcuts": "キーボードのホットキーリストを表示",
"HotkeysSpaceKey": "スペース",
"HotkeysUndoLastAction": "直前のアクションを元に戻す",
"HotkeysUploadFile": "ファイルをアップロード",
"HotkeysUploadingObjects": "アイテムのアップロード",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "バックアップファイルの選択",
"ClearBackupList": "すべてのバックアップを削除",
"CloseMenu": "メニューを閉じる",
"CommonFilesDescription": "共通セクションのファイルについては、別のルーム共通ルームが作成されます。このルームには、DocSpaceの管理者のみがアクセスできます。デフォルトでは、ルームの所有者はインポートを開始したユーザーです John Smith(あなた)です。",
"CommonFilesDescription": "共通セクションのファイルについては、別のルーム共通ルームが作成されます。このルームには、DocSpaceの管理者のみがアクセスできます。デフォルトでは、ルームの所有者はインポートを開始したユーザーです {{user}}(あなた)です。",
"CompanyInfoSettings": "会社情報設定",
"CompanyInfoSettingsDescription": "この情報は、<1>{{link}}</1>ウィンドウに表示されます。",
"ConfirmEmailSended": "確認のメールが{{ownerName}}に送信されました。",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "스프레드 시트를 만듭니다",
"HotkeysCreatingObjects": "항목 생성",
"HotkeysCutSelected": "선택한 항목을 클립보드로 잘라내기",
"HotkeysEnterKey": "입력",
"HotkeysExtendSelectionDown": "아래쪽으로 선택 확장",
"HotkeysExtendSelectionLeft": "왼쪽으로 선택 확장",
"HotkeysExtendSelectionRight": "오른쪽으로 선택 확장",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "오른쪽으로 다음 항목 선택",
"HotkeysSelectUp": "위로 다음 항목 선택",
"HotkeysShortcuts": "키보드 단축키 목록 표시",
"HotkeysSpaceKey": "공간",
"HotkeysUndoLastAction": "마지막 작업 실행 취소",
"HotkeysUploadFile": "파일 업로드",
"HotkeysUploadingObjects": "항목 업로드",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "백업 파일을 선택하세요",
"ClearBackupList": "모든 백업 삭제",
"CloseMenu": "메뉴 닫기",
"CommonFilesDescription": "공용 섹션의 파일에 대해 별도의 공간(공용 방)이 생성됩니다. DocSpace 관리자만 이 방에 액세스할 수 있습니다. 기본적으로 방 소유자는 가져오기를 시작하는 사용자인 귀하(John Smith)입니다.",
"CommonFilesDescription": "공용 섹션의 파일에 대해 별도의 공간(공용 방)이 생성됩니다. DocSpace 관리자만 이 방에 액세스할 수 있습니다. 기본적으로 방 소유자는 가져오기를 시작하는 사용자인 귀하({{user}})입니다.",
"CompanyInfoSettings": "회사 정보 설정",
"CompanyInfoSettingsDescription": "이 정보가 <1>{{link}}</1> 창에 표시됩니다.",
"ConfirmEmailSended": "확인 이메일이 {{ownerName}} 님에게 전송되었습니다",

View File

@ -12,7 +12,6 @@
"HotkeysCreatePresentation": "ສ້າງການນໍາສະເຫນີ",
"HotkeysCreateSpreadsheet": "ສ້າງຕາຕະລາງ",
"HotkeysCreatingObjects": "ການສ້າງລາຍການ",
"HotkeysEnterKey": "ເຂົ້າ",
"HotkeysExtendSelectionDown": "ຂະຫຍາຍການເລືອກລົງ",
"HotkeysExtendSelectionLeft": "ຂະຫຍາຍການເລືອກຊ້າຍ",
"HotkeysExtendSelectionRight": "ຂະຫຍາຍການເລືອກທີ່ຖືກຕ້ອງ",
@ -36,7 +35,6 @@
"HotkeysSelectRight": "ເລືອກລາຍການຕໍ່ໄປໄປທາງຂວາ",
"HotkeysSelectUp": "ເລືອກລາຍການຕໍ່ໄປ",
"HotkeysShortcuts": "ສະແດງລາຍການຄີບອດແປ້ນພິມ",
"HotkeysSpaceKey": "ຍະຫວ່າງ",
"HotkeysUndoLastAction": "ຍົກເລີກການກະ ທຳ ສຸດທ້າຍ",
"HotkeysUploadFile": "ອັບໂຫລດໄຟລ໌",
"HotkeysUploadingObjects": "ການອັບໂຫລດລາຍການ"

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Izveidot tabulu",
"HotkeysCreatingObjects": "Izveidot vienumus",
"HotkeysCutSelected": "Izgrieziet atlasītos vienumus starpliktuvē",
"HotkeysEnterKey": "Ievadīt",
"HotkeysExtendSelectionDown": "Paplašināt atlasi uz leju",
"HotkeysExtendSelectionLeft": "Paplašināt atlasi pa kreisi",
"HotkeysExtendSelectionRight": "Paplašināt atlasi pa labi",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Atlasīt nākamo vienumu pa labi",
"HotkeysSelectUp": "Izvēlēties nākamo vienumu uz augšu",
"HotkeysShortcuts": "Parādīt tastatūras karsto taustiņu sarakstu",
"HotkeysSpaceKey": "Atstarpe",
"HotkeysUndoLastAction": "Atsaukt pēdējo darbību",
"HotkeysUploadFile": "Augšupielādēt failu",
"HotkeysUploadingObjects": "Notiek vienumu augšupielāde",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Atlasīt dublējuma failus",
"ClearBackupList": "Dzēst visus dublējumus",
"CloseMenu": "Aizvērt izvēlni",
"CommonFilesDescription": "Kopējās sadaļas failiem tiks izveidota atsevišķa telpa (kopējā telpa). Tikai DocSpace administratoriem būs piekļuve šai telpai. Pēc noklusējuma telpas īpašnieks būs lietotājs, kas uzsāks importēšanu: Džons Smits (jūs).",
"CommonFilesDescription": "Kopējās sadaļas failiem tiks izveidota atsevišķa telpa (kopējā telpa). Tikai DocSpace administratoriem būs piekļuve šai telpai. Pēc noklusējuma telpas īpašnieks būs lietotājs, kas uzsāks importēšanu: {{user}} (jūs).",
"CompanyInfoSettings": "Uzņēmuma informācijas iestatījumi",
"CompanyInfoSettingsDescription": "Šī informācija tiks parādīta logā <1>{{link}}</1>.",
"ConfirmEmailSended": "Apstiprinājuma e-pasts ir nosūtīts uz {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Spreadsheet maken",
"HotkeysCreatingObjects": "Items aanmaken",
"HotkeysCutSelected": "Knip geselecteerde items naar het klembord",
"HotkeysEnterKey": "Invoeren",
"HotkeysExtendSelectionDown": "Selectie uitbreiden naar beneden",
"HotkeysExtendSelectionLeft": "Selectie naar links uitbreiden",
"HotkeysExtendSelectionRight": "Selectie naar rechts uitbreiden",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Kies het volgende item aan de rechterkant",
"HotkeysSelectUp": "Kies het volgende item omhoog",
"HotkeysShortcuts": "Lijst met sneltoetsen weergeven",
"HotkeysSpaceKey": "Spatie",
"HotkeysUndoLastAction": "Laatste actie ongedaan maken",
"HotkeysUploadFile": "Bestand uploaden",
"HotkeysUploadingObjects": "Items uploaden",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Kies de back-up bestanden",
"ClearBackupList": "Verwijder alle back-ups",
"CloseMenu": "Sluit menu",
"CommonFilesDescription": "Voor de bestanden in de Algemene sectie wordt een aparte ruimte gemaakt (Algemene kamer). Alleen DocSpace beheerders hebben toegang tot deze ruimte. Standaard is de eigenaar van de kamer de gebruiker die de import start: John Smith (U).",
"CommonFilesDescription": "Voor de bestanden in de Algemene sectie wordt een aparte ruimte gemaakt (Algemene kamer). Alleen DocSpace beheerders hebben toegang tot deze ruimte. Standaard is de eigenaar van de kamer de gebruiker die de import start: {{user}} (U).",
"CompanyInfoSettings": "Bedrijfsinformatie instellingen",
"CompanyInfoSettingsDescription": "Deze informatie wordt weergegeven in het venster <1>{{link}}</1>.",
"ConfirmEmailSended": "Bevestiging e-mail is gestuurd naar {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Utwórz arkusz kalkulacyjny",
"HotkeysCreatingObjects": "Tworzenie elementów",
"HotkeysCutSelected": "Wytnij zaznaczone pliki do schowka",
"HotkeysEnterKey": "Wpisz",
"HotkeysExtendSelectionDown": "Rozszerz zaznaczenie w dół",
"HotkeysExtendSelectionLeft": "Rozszerz zaznaczenie w lewo",
"HotkeysExtendSelectionRight": "Rozszerz zaznaczenie w prawo",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Zaznacz kolejny element po prawej",
"HotkeysSelectUp": "Zaznacz kolejny element powyżej",
"HotkeysShortcuts": "Wyświetl listę skrótów klawiaturowych",
"HotkeysSpaceKey": "Odstęp",
"HotkeysUndoLastAction": "Cofnij ostatnią akcję",
"HotkeysUploadFile": "Przesyłanie pliku",
"HotkeysUploadingObjects": "Wgrywanie elementów",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Wybierz pliki kopii zapasowej",
"ClearBackupList": "Usuń wszystkie kopie zapasowe",
"CloseMenu": "Zamknij menu",
"CommonFilesDescription": "Dla plików w sekcji Wspólne zostanie utworzony osobny pokój (pokój Wspólny). Tylko administratorzy DocSpace będą mieli dostęp do tego pokoju Domyślnie, właścicielem pokoju będzie użytkownik inicjujący import: Jan Kowalski (Ty).",
"CommonFilesDescription": "Dla plików w sekcji Wspólne zostanie utworzony osobny pokój (pokój Wspólny). Tylko administratorzy DocSpace będą mieli dostęp do tego pokoju Domyślnie, właścicielem pokoju będzie użytkownik inicjujący import: {{user}} (Ty).",
"CompanyInfoSettings": "Ustawienia informacji o firmie",
"CompanyInfoSettingsDescription": "Dana informacja wyświetli się w oknie <1>{{link}}</1>.",
"ConfirmEmailSended": "Wiadomość e-mail z potwierdzeniem została wysłana do {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Criar Planilha",
"HotkeysCreatingObjects": "Criar itens",
"HotkeysCutSelected": "Cortar itens selecionados para a área de transferência",
"HotkeysEnterKey": "Inserir",
"HotkeysExtendSelectionDown": "Estender seleção para baixo",
"HotkeysExtendSelectionLeft": "Estender seleção para a esquerda",
"HotkeysExtendSelectionRight": "Estender seleção para a direita",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selecionar o próximo item à direita",
"HotkeysSelectUp": "Selecionar o próximo item acima",
"HotkeysShortcuts": "Exibir lista de teclas de acesso do teclado",
"HotkeysSpaceKey": "Espaço",
"HotkeysUndoLastAction": "Desfazer a última ação",
"HotkeysUploadFile": "Carregar arquivo",
"HotkeysUploadingObjects": "Fazer upload de itens",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Escolha os arquivos de backup",
"ClearBackupList": "Excluir todos os backups",
"CloseMenu": "Fechar menu",
"CommonFilesDescription": "Para os arquivos da seção Comum será criada uma sala separada (Sala Comum). Somente administradores do DocSpace terão acesso a esta sala. Por padrão, o proprietário da sala será o usuário que inicia a importação: John Smith (Você).",
"CommonFilesDescription": "Para os arquivos da seção Comum será criada uma sala separada (Sala Comum). Somente administradores do DocSpace terão acesso a esta sala. Por padrão, o proprietário da sala será o usuário que inicia a importação: {{user}} (Você).",
"CompanyInfoSettings": "Configurações de informações da empresa",
"CompanyInfoSettingsDescription": "Essas informações serão exibidas na janela <1>{{link}}</1>.",
"ConfirmEmailSended": "O e-mail de confirmação foi enviado para {{ownerName}}.",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Criar folha de cálculo",
"HotkeysCreatingObjects": "A criar itens",
"HotkeysCutSelected": "Cortar itens selecionados para a área de transferência",
"HotkeysEnterKey": "Introduzir",
"HotkeysExtendSelectionDown": "Expandir a seleção para baixo",
"HotkeysExtendSelectionLeft": "Expandir a seleção para a esquerda",
"HotkeysExtendSelectionRight": "Expandir a seleção para a direita",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selecionar o próximo item à direita",
"HotkeysSelectUp": "Selecionar o próximo item acima",
"HotkeysShortcuts": "Mostrar lista de teclas de atalho",
"HotkeysSpaceKey": "Espaço",
"HotkeysUndoLastAction": "Anular a última ação",
"HotkeysUploadFile": "Carregar ficheiro",
"HotkeysUploadingObjects": "A carregar itens",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Escolha os arquivos de backup",
"ClearBackupList": "Eliminar todas as cópias de segurança",
"CloseMenu": "Fechar menu",
"CommonFilesDescription": "Para os arquivos da seção Comum será criada uma sala separada (Sala Comum). Somente administradores do DocSpace terão acesso a esta sala. Por padrão, o proprietário da sala será o usuário que inicia a importação: John Smith (Você).",
"CommonFilesDescription": "Para os arquivos da seção Comum será criada uma sala separada (Sala Comum). Somente administradores do DocSpace terão acesso a esta sala. Por padrão, o proprietário da sala será o usuário que inicia a importação: {{user}} (Você).",
"CompanyInfoSettings": "Definições das informações sobre a empresa",
"CompanyInfoSettingsDescription": "Esta informação será exibida na janela <1>{{link}}</1>.",
"ConfirmEmailSended": "Um email de confirmação foi enviado para {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Creează o foaie de calcul",
"HotkeysCreatingObjects": "Creează elemente",
"HotkeysCutSelected": "Decupare elemente selectate în clipboard",
"HotkeysEnterKey": "Enter",
"HotkeysExtendSelectionDown": "Extinde selecția în jos",
"HotkeysExtendSelectionLeft": "Extinde selecția la stânga",
"HotkeysExtendSelectionRight": "Extinde selecția la dreapta",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Selectează următorul element din dreapta",
"HotkeysSelectUp": "Selectează următorul element de deasupra",
"HotkeysShortcuts": "Afișează lista de comenzi rapide de la tastatură",
"HotkeysSpaceKey": "Spațiu",
"HotkeysUndoLastAction": "Anulează ultima acțiune",
"HotkeysUploadFile": "Încarcă fișier",
"HotkeysUploadingObjects": "Încărcare elemente",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Alegeți fișiere de rezervă",
"ClearBackupList": "Șterge toate copiile de rezervă",
"CloseMenu": "Închidere meniu",
"CommonFilesDescription": "Pentru fișiere din secțiunea Comun, o sală separată va fi creată (Sală comună). Numai administratorii DocSpace vor avea acces la această sală. În mod implicit, proprietarul sălii va fi utilizatorul care poate iniția importul: John Smith (Dumneavoastră).",
"CommonFilesDescription": "Pentru fișiere din secțiunea Comun, o sală separată va fi creată (Sală comună). Numai administratorii DocSpace vor avea acces la această sală. În mod implicit, proprietarul sălii va fi utilizatorul care poate iniția importul: {{user}} (Dumneavoastră).",
"CompanyInfoSettings": "Setări Informaţii companie",
"CompanyInfoSettingsDescription": "Aceste informaţii vor fi afişate în fereastra <1>{{link}}</1>.",
"ConfirmEmailSended": "Un mesaj pentru confirmarea adresei de email a fost trimis către {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Создать таблицу",
"HotkeysCreatingObjects": "Создание объектов",
"HotkeysCutSelected": "Вырезать выбранные элементы в буфер обмена",
"HotkeysEnterKey": "Ввод",
"HotkeysExtendSelectionDown": "Расширить выделение вниз",
"HotkeysExtendSelectionLeft": "Расширить выделение влево",
"HotkeysExtendSelectionRight": "Расширить выделение вправо",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Выделить следующий объект справа",
"HotkeysSelectUp": "Выделить следующий объект сверху",
"HotkeysShortcuts": "Показать список быстрых клавиш",
"HotkeysSpaceKey": "Пробел",
"HotkeysUndoLastAction": "Отменить последнее действие",
"HotkeysUploadFile": "Загрузить файл",
"HotkeysUploadingObjects": "Загрузка объектов",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Выберите файлы резервных копий",
"ClearBackupList": "Удалить все резервные копии",
"CloseMenu": "Закрыть меню",
"CommonFilesDescription": "Для файлов в разделе \"Общие\" будет создана отдельная комната (Общая комната). Только администраторы DocSpace будут иметь доступ к этой комнате. По умолчанию владельцем комнаты будет пользователь, инициирующий импорт: Джон Смит (Вы).",
"CommonFilesDescription": "Для файлов в разделе \"Общие\" будет создана отдельная комната (Общая комната). Только администраторы DocSpace будут иметь доступ к этой комнате. По умолчанию владельцем комнаты будет пользователь, инициирующий импорт: {{user}} (Вы).",
"CompanyInfoSettings": "Настройки информации о компании",
"CompanyInfoSettingsDescription": "Эта информация будет отображаться в окне <1>{{link}}</1> .",
"ConfirmEmailSended": "Письмо с подтверждением отправлено {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "පැතුරුම්පතක් සාදන්න",
"HotkeysCreatingObjects": "අථක සෑදීම",
"HotkeysCutSelected": "තෝරාගත් අථක කපන්න",
"HotkeysEnterKey": "ඇතුල් කරන්න",
"HotkeysExtendSelectionDown": "තේරීම පහළට පතුරුවන්න",
"HotkeysExtendSelectionLeft": "තේරීම වමට පතුරුවන්න",
"HotkeysExtendSelectionRight": "තේරීම දකුණට පතුරුවන්න",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "දකුණු පස ඊළඟ අථකය තෝරන්න",
"HotkeysSelectUp": "ඉහළ ඊළඟ අථකය තෝරන්න",
"HotkeysShortcuts": "කෙටිමං ලැයිස්තුව පෙන්වන්න",
"HotkeysSpaceKey": "හිස්තැන",
"HotkeysUndoLastAction": "අවසාන ක්‍රියාව පෙරසේ තබන්න",
"HotkeysUploadFile": "ගොනුවක් උඩුගත කරන්න",
"HotkeysUploadingObjects": "අථක උඩුගත වෙමින්",

View File

@ -70,7 +70,7 @@
"ChooseBackupFiles": "උපස්ථ ගොනු තෝරන්න",
"ClearBackupList": "සියළුම උපස්ථ මකන්න",
"CloseMenu": "වට්ටෝරුව වසන්න",
"CommonFilesDescription": "පොදු කොටසේ ගොනු සඳහා වෙනම කාමරයක් (පොදු කාමරය) සාදනු ලැබේ. DocSpace පරිපාලකයින්ට පමණක් මෙම කාමරයට ප්‍රවේශය ඇත. පෙරනිමි පරිදි කාමරයේ හිමිකරු ආයාත කිරීම අරඹන පරිශ්‍රීලකයා වනු ඇත: හසිත ජයවර්ධන (ඔබ).",
"CommonFilesDescription": "පොදු කොටසේ ගොනු සඳහා වෙනම කාමරයක් (පොදු කාමරය) සාදනු ලැබේ. DocSpace පරිපාලකයින්ට පමණක් මෙම කාමරයට ප්‍රවේශය ඇත. පෙරනිමි පරිදි කාමරයේ හිමිකරු ආයාත කිරීම අරඹන පරිශ්‍රීලකයා වනු ඇත: {{user}} (ඔබ).",
"CompanyInfoSettings": "සමාගමේ තොරතුරු සැකසුම්",
"CompanyInfoSettingsDescription": "මෙම තොරතුරු <1>{{link}}</1> කවුළුවෙහි දිස් වේ.",
"ConfirmEmailSended": "තහවුරු කිරීමේ වි-තැපෑල {{ownerName}} වෙත යවා ඇත",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Vytvoriť tabuľku",
"HotkeysCreatingObjects": "Vytváranie položiek",
"HotkeysCutSelected": "Vyrezať vybrané položky do schránky",
"HotkeysEnterKey": "Zadať",
"HotkeysExtendSelectionDown": "Rozšíriť výber nadol",
"HotkeysExtendSelectionLeft": "Rozšíriť výber doľava",
"HotkeysExtendSelectionRight": "Rozšíriť výber doprava",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Vybrať ďalšiu položku vpravo",
"HotkeysSelectUp": "Vybrať ďalšiu položku hore",
"HotkeysShortcuts": "Zobraziť zoznam klávesových skratiek na klávesnici",
"HotkeysSpaceKey": "Priestor",
"HotkeysUndoLastAction": "Vrátiť späť poslednú akciu",
"HotkeysUploadFile": "Nahrať súbor",
"HotkeysUploadingObjects": "Nahrávanie položiek",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Vyberte záložné súbory",
"ClearBackupList": "Odstrániť všetky zálohované údaje",
"CloseMenu": "Zatvoriť menu",
"CommonFilesDescription": "Pre súbory v Spoločnej časti bude vytvorená samostatná miestnosť (Spoločná miestnosť). Prístup do tejto miestnosti budú mať len administrátori DocSpace. V predvolenom nastavení bude vlastníkom miestnosti používateľ, ktorý iniciuje import: John Smith (Vy).",
"CommonFilesDescription": "Pre súbory v Spoločnej časti bude vytvorená samostatná miestnosť (Spoločná miestnosť). Prístup do tejto miestnosti budú mať len administrátori DocSpace. V predvolenom nastavení bude vlastníkom miestnosti používateľ, ktorý iniciuje import: {{user}} (Vy).",
"CompanyInfoSettings": "Nastavenia informácií o spoločnosti",
"CompanyInfoSettingsDescription": "Tieto informácie sa zobrazia v okne <1>{{link}}</1>.",
"ConfirmEmailSended": "Potvrdzujúci mail bol odoslaný {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Ustvari preglednico",
"HotkeysCreatingObjects": "Ustvarjanje predmetov",
"HotkeysCutSelected": "Izreži izbrane elemente v odložišče",
"HotkeysEnterKey": "Vstopi",
"HotkeysExtendSelectionDown": "Premakni izbiro navzdol",
"HotkeysExtendSelectionLeft": "Premakni izbiro na levo",
"HotkeysExtendSelectionRight": "Premakni izbiro na desno",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Izberi naslednji predmet desno",
"HotkeysSelectUp": "Izberi naslednji predmet zgoraj",
"HotkeysShortcuts": "Prikaži seznam bližnjic na tipkovnici",
"HotkeysSpaceKey": "Razmik",
"HotkeysUndoLastAction": "Razveljavi zadnjo akcijo",
"HotkeysUploadFile": "Naloži datoteko",
"HotkeysUploadingObjects": "Nalaganje predmetov",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Izberi datoteke varnostne kopije",
"ClearBackupList": "Izbriši vse varnostne kopije",
"CloseMenu": "Zapri menu",
"CommonFilesDescription": "Za datoteke v razdelku Skupno bo ustvarjena posebna soba (Skupna soba). Samo skrbniki DocSpace bodo imeli dostop do te sobe. Privzeto bo lastnik sobe uporabnik, ki začne uvoz: John Smith (Vi).",
"CommonFilesDescription": "Za datoteke v razdelku Skupno bo ustvarjena posebna soba (Skupna soba). Samo skrbniki DocSpace bodo imeli dostop do te sobe. Privzeto bo lastnik sobe uporabnik, ki začne uvoz: {{user}} (Vi).",
"CompanyInfoSettings": "Nastavitve informacij o podjetju",
"CompanyInfoSettingsDescription": "Te informacije bodo prikazane v <1>{{link}}</1> oknu.",
"ConfirmEmailSended": "Potrditveni e-mail je bil poslan na {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Kreiraj proračunsku tabelu",
"HotkeysCreatingObjects": "Kreiranje stavki",
"HotkeysCutSelected": "Iseci odabrane stavke na privremenu memoriju",
"HotkeysEnterKey": "Uđi",
"HotkeysExtendSelectionDown": "Proširi selekciju dole",
"HotkeysExtendSelectionLeft": "Proširi selekciju levo",
"HotkeysExtendSelectionRight": "Proširi selekciju desno",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Odaberi sledeću stavku sa desne strane",
"HotkeysSelectUp": "Odaberi sledeću stavku gore",
"HotkeysShortcuts": "Prikaži listu prečica tastature",
"HotkeysSpaceKey": "Prostor",
"HotkeysUndoLastAction": "Poništi poslednju radnju",
"HotkeysUploadFile": "Otpremi datoteku",
"HotkeysUploadingObjects": "Otpremljivanje stavki",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Izaberi rezervne datoteke",
"ClearBackupList": "Obriši sve rezervne kopije",
"CloseMenu": "Zatvori meni",
"CommonFilesDescription": "Za datoteke u odeljku Zajedničko, biće kreirana posebna soba (Zajednička soba). Samo administratori DocSpace-a će imati pristup ovoj sobi. Po podrazumevanim podešavanjima, vlasnik sobe će biti korisnik koji je inicirao uvoz: John Smith (Vi).",
"CommonFilesDescription": "Za datoteke u odeljku Zajedničko, biće kreirana posebna soba (Zajednička soba). Samo administratori DocSpace-a će imati pristup ovoj sobi. Po podrazumevanim podešavanjima, vlasnik sobe će biti korisnik koji je inicirao uvoz: {{user}} (Vi).",
"CompanyInfoSettings": "Informacije o Kompaniji podešavanja",
"CompanyInfoSettingsDescription": "Ova informacija će biti prikazana u <1>{{link}}</1> prozoru.",
"ConfirmEmailSended": "Email konfirmacije je poslat {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Elektronik Tablo Oluştur",
"HotkeysCreatingObjects": "Öğeler oluşturuluyor",
"HotkeysCutSelected": "Seçilen öğeleri panoya kes",
"HotkeysEnterKey": "Giriş",
"HotkeysExtendSelectionDown": "Seçimi aşağı genişlet",
"HotkeysExtendSelectionLeft": "Seçimi sola genişlet",
"HotkeysExtendSelectionRight": "Seçimi sağa genişlet",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Sıradaki öğeyi sağa doğru seç",
"HotkeysSelectUp": "Sıradaki öğeyi yukarı doğru seç",
"HotkeysShortcuts": "Klavye kısayol tuşları listesini görüntüle",
"HotkeysSpaceKey": "Boşluk",
"HotkeysUndoLastAction": "Son işlemi geri al",
"HotkeysUploadFile": "Dosya yükle",
"HotkeysUploadingObjects": "Öğeler yükleniyor",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Yedekleme dosyalarını seç",
"ClearBackupList": "Tüm yedekleri sil",
"CloseMenu": "Menüyü kapat",
"CommonFilesDescription": "Ortak bölümdeki dosyalar için ayrı bir oda oluşturulacaktır (Ortak oda). Bu odaya yalnızca DocSpace yöneticilerinin erişimi olacaktır. Varsayılan olarak, odanın sahibi içe aktarmayı başlatan kullanıcı olacaktır: John Smith (Siz).",
"CommonFilesDescription": "Ortak bölümdeki dosyalar için ayrı bir oda oluşturulacaktır (Ortak oda). Bu odaya yalnızca DocSpace yöneticilerinin erişimi olacaktır. Varsayılan olarak, odanın sahibi içe aktarmayı başlatan kullanıcı olacaktır: {{user}} (Siz).",
"CompanyInfoSettings": "Şirket bilgileri ayarları",
"CompanyInfoSettingsDescription": "Bu bilgi <1>{{link}}</1> penceresinde görüntülenecektir.",
"ConfirmEmailSended": "Onay e-postası şu kişiye gönderildi {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Створити таблицю",
"HotkeysCreatingObjects": "Створення елементів",
"HotkeysCutSelected": "Вирізати вибрані елементи до буфера обміну",
"HotkeysEnterKey": "Ввести",
"HotkeysExtendSelectionDown": "Розширити виділення вниз",
"HotkeysExtendSelectionLeft": "Розширити виділення ліворуч",
"HotkeysExtendSelectionRight": "Розширити виділення праворуч",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Вибрати наступний елемент праворуч",
"HotkeysSelectUp": "Вибрати наступний елемент угорі",
"HotkeysShortcuts": "Показати список сполучень клавіш",
"HotkeysSpaceKey": "Пробіл",
"HotkeysUndoLastAction": "Скасувати останню дію",
"HotkeysUploadFile": "Завантажити файл",
"HotkeysUploadingObjects": "Передавання елементів",

View File

@ -72,7 +72,7 @@
"ChooseBackupFiles": "Вибрати файли резервної копії",
"ClearBackupList": "Видалити всі резервні копії",
"CloseMenu": "Закрити меню",
"CommonFilesDescription": "Для файлів у розділі «Загальні» буде створено окрему кімнату (кімната «Загальні»). До цієї кімнати будуть мати доступ лише адміністратори DocSpace. За замовчуванням власником кімнати буде користувач, який ініціював імпорт: Джон Сміт (ви). ",
"CommonFilesDescription": "Для файлів у розділі «Загальні» буде створено окрему кімнату (кімната «Загальні»). До цієї кімнати будуть мати доступ лише адміністратори DocSpace. За замовчуванням власником кімнати буде користувач, який ініціював імпорт: {{user}} (ви). ",
"CompanyInfoSettings": "Параметри інформації про компанію",
"CompanyInfoSettingsDescription": "Цю інформацію буде показано у вікні <1>{{link}}</1>.",
"ConfirmEmailSended": "Електронний лист-підтвердження надіслано {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Tạo bảng tính",
"HotkeysCreatingObjects": "Tạo mục",
"HotkeysCutSelected": "Cắt các mục đã chọn vào bộ nhớ tạm",
"HotkeysEnterKey": "Nhập",
"HotkeysExtendSelectionDown": "Mở rộng lựa chọn xuống",
"HotkeysExtendSelectionLeft": "Mở rộng lựa chọn bên trái",
"HotkeysExtendSelectionRight": "Mở rộng lựa chọn bên phải",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "Chọn mục tiếp theo bên phải",
"HotkeysSelectUp": "Chọn mục tiếp theo bên trên",
"HotkeysShortcuts": "Hiển thị danh sách phím tắt",
"HotkeysSpaceKey": "Khoảng cách",
"HotkeysUndoLastAction": "Hoàn tác hành động cuối cùng",
"HotkeysUploadFile": "Tải file lên",
"HotkeysUploadingObjects": "Đang tải lên các mục",

View File

@ -71,7 +71,7 @@
"ChooseBackupFiles": "Chọn các tập tin sao lưu",
"ClearBackupList": "Xóa tất cả bản sao lưu",
"CloseMenu": "Đóng menu",
"CommonFilesDescription": "Đối với các tập tin trong phần Chung, một phòng riêng biệt sẽ được tạo (Phòng chung). Chỉ quản trị viên DocSpace mới có quyền truy cập vào phòng này. Theo mặc định, chủ phòng sẽ là người dùng bắt đầu nhập: John Smith (Bạn).",
"CommonFilesDescription": "Đối với các tập tin trong phần Chung, một phòng riêng biệt sẽ được tạo (Phòng chung). Chỉ quản trị viên DocSpace mới có quyền truy cập vào phòng này. Theo mặc định, chủ phòng sẽ là người dùng bắt đầu nhập: {{user}} (Bạn).",
"CompanyInfoSettings": "Cài đặt thông tin công ty",
"CompanyInfoSettingsDescription": "Thông tin này sẽ được hiển thị trong cửa sổ <1>{{link}}</1>.",
"ConfirmEmailSended": "Email xác nhận đã được gửi tới {{ownerName}}",

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "新建电子表格",
"HotkeysCreatingObjects": "创建项目",
"HotkeysCutSelected": "将选定的项目剪切到剪贴板",
"HotkeysEnterKey": "输入",
"HotkeysExtendSelectionDown": "向下扩展选定",
"HotkeysExtendSelectionLeft": "向左扩展选定",
"HotkeysExtendSelectionRight": "向右扩展选定",
@ -39,7 +38,6 @@
"HotkeysSelectRight": "向右选择下一个项目",
"HotkeysSelectUp": "向上选择下一个项目",
"HotkeysShortcuts": "显示快捷键列表",
"HotkeysSpaceKey": "空格",
"HotkeysUndoLastAction": "撤销上次的行动",
"HotkeysUploadFile": "上传文件",
"HotkeysUploadingObjects": "上传项目",

View File

@ -70,7 +70,7 @@
"ChooseBackupFiles": "选择备份文件",
"ClearBackupList": "删除所有备份",
"CloseMenu": "关闭菜单",
"CommonFilesDescription": "系统会为“公共”板块中的文件创建一个单独的房间(公共房间)。只有协作空间管理员可访问此房间。默认情况下,房间的所有者是发起导入的用户:John Smith(您)。",
"CommonFilesDescription": "系统会为“公共”板块中的文件创建一个单独的房间(公共房间)。只有协作空间管理员可访问此房间。默认情况下,房间的所有者是发起导入的用户:{{user}}(您)。",
"CompanyInfoSettings": "公司信息设置",
"CompanyInfoSettingsDescription": "此信息将展示在 <1>{{link}}</1> 窗口中。",
"ConfirmEmailSended": "确认邮件已发送至{{ownerName}}",

View File

@ -26,19 +26,19 @@
import { observer, inject } from "mobx-react";
import React, { useEffect, useMemo } from "react";
import { withTranslation, I18nextProviderProps } from "react-i18next";
import { withTranslation } from "react-i18next";
import { isBetaLanguage } from "@docspace/shared/utils";
import { flagsIcons } from "@docspace/shared/utils/image-flags";
import { getCookie, setCookie } from "@docspace/shared/utils/cookie";
import { Loader, LoaderTypes } from "@docspace/shared/components/loader";
type I18n = I18nextProviderProps["i18n"];
import { COOKIE_EXPIRATION_YEAR, LANGUAGE } from "@docspace/shared/constants";
import { mapCulturesToArray } from "@docspace/shared/utils/common";
import i18n from "../i18n";
interface ComponentWithCultureNamesProps {
tReady: boolean;
cultures: string[];
isAuthenticated: boolean;
getPortalCultures: () => Promise<void>;
i18n: I18n;
}
interface WrappedComponentProps extends ComponentWithCultureNamesProps {
@ -60,7 +60,7 @@ export default function withCultureNames<
props: Omit<T, keyof WrappedComponentProps> &
ComponentWithCultureNamesProps,
) => {
const { tReady, cultures, i18n, getPortalCultures } = props;
const { tReady, cultures, getPortalCultures, isAuthenticated } = props;
useEffect(() => {
if (cultures.length > 0) return;
@ -69,21 +69,9 @@ export default function withCultureNames<
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const mapCulturesToArray = (culturesArg: string[], i18nArg: I18n) => {
const t = i18nArg.getFixedT(null, "Common");
return culturesArg.map((culture) => {
return {
key: culture,
label: t(`Culture_${culture}`),
icon: flagsIcons?.get(`${culture}.react.svg`),
isBeta: isBetaLanguage(culture),
};
});
};
const cultureNames = useMemo(
() => mapCulturesToArray(cultures, i18n),
[cultures, i18n],
() => mapCulturesToArray(cultures, true, i18n),
[cultures, isAuthenticated],
);
return cultures.length > 0 && tReady ? (
@ -93,11 +81,13 @@ export default function withCultureNames<
);
};
const Injected = inject<TStore>(({ settingsStore }) => {
const Injected = inject<TStore>(({ authStore, settingsStore }) => {
const { cultures, getPortalCultures } = settingsStore;
const { isAuthenticated } = authStore;
return {
cultures,
getPortalCultures,
isAuthenticated,
};
})(
observer(withTranslation("Common")(ComponentWithCultureNames)),

View File

@ -89,6 +89,8 @@ const withHotkeys = (Component) => {
security,
copyToClipboard,
uploadClipboardFiles,
isGroupMenuBlocked,
} = props;
const navigate = useNavigate();
@ -158,7 +160,7 @@ const withHotkeys = (Component) => {
document.addEventListener("paste", onPaste);
return () => {
window.removeEventListener("keypress", throttledKeyDownEvent);
window.removeEventListener("keydown", throttledKeyDownEvent);
document.removeEventListener("paste", onPaste);
};
});
@ -317,7 +319,7 @@ const withHotkeys = (Component) => {
return;
}
if (isAvailableOption("delete")) {
if (isAvailableOption("delete") && !isGroupMenuBlocked) {
if (isRecentFolder) return;
if (isFavoritesFolder) {
@ -460,6 +462,7 @@ const withHotkeys = (Component) => {
setFavoriteAction,
deleteRooms,
archiveRooms,
isGroupMenuBlocked,
} = filesActionsStore;
const { visible: mediaViewerIsVisible } = mediaViewerDataStore;
@ -533,6 +536,8 @@ const withHotkeys = (Component) => {
copyToClipboard,
uploadClipboardFiles,
isGroupMenuBlocked,
};
},
)(observer(WithHotkeys));

View File

@ -34,6 +34,7 @@ import FilesSelector from "@docspace/shared/selectors/Files";
import { toastr } from "@docspace/shared/components/toast";
import { SettingsStore } from "@docspace/shared/store/SettingsStore";
import {
TFile,
TFileSecurity,
TFolder,
TFolderSecurity,
@ -41,7 +42,7 @@ import {
import { TBreadCrumb } from "@docspace/shared/components/selector/Selector.types";
import { TData } from "@docspace/shared/components/toast/Toast.type";
import { TSelectedFileInfo } from "@docspace/shared/selectors/Files/FilesSelector.types";
import { TRoomSecurity } from "@docspace/shared/api/rooms/types";
import { TRoom, TRoomSecurity } from "@docspace/shared/api/rooms/types";
import { TTranslation } from "@docspace/shared/types";
import SelectedFolderStore from "SRC_DIR/store/SelectedFolderStore";
@ -55,6 +56,8 @@ import InfoPanelStore from "SRC_DIR/store/InfoPanelStore";
import { FilesSelectorProps } from "./FilesSelector.types";
import { getAcceptButtonLabel, getHeaderLabel, getIsDisabled } from "./utils";
let disabledItems: (string | number)[] = [];
const FilesSelectorWrapper = ({
isPanelVisible = false,
// withoutImmediatelyClose = false,
@ -87,7 +90,7 @@ const FilesSelectorWrapper = ({
treeFolders,
selection,
disabledItems,
// disabledItems,
setConflictDialogData,
checkFileConflicts,
itemOperationToFolder,
@ -169,8 +172,16 @@ const FilesSelectorWrapper = ({
onCloseAction();
};
const getFilesArchiveError = (name: string) =>
t("Common:ArchivedRoomAction", { name });
const getFilesArchiveError = React.useCallback(
(name: string) => t("Common:ArchivedRoomAction", { name }),
[t],
);
React.useEffect(() => {
return () => {
disabledItems = [];
};
}, []);
const onAccept = async (
selectedItemId: string | number | undefined,
@ -375,6 +386,9 @@ const FilesSelectorWrapper = ({
isMove || isCopy || isRestore ? "select-file-modal-cancel" : ""
}
getFilesArchiveError={getFilesArchiveError}
withCreateFolder={
(isMove || isCopy || isRestore || isRestoreAll) ?? false
}
/>
);
};
@ -471,10 +485,13 @@ export default inject(
? selections
: selections.filter((f) => f && !f?.isEditing);
const disabledItems: (string | number)[] = [];
selectionsWithoutEditing.forEach((item) => {
if ((item?.isFolder || item?.parentId) && item?.id) {
selectionsWithoutEditing.forEach((item: TFile | TFolder | TRoom) => {
if (
(("isFolder" in item && item?.isFolder) ||
("parentId" in item && item?.parentId)) &&
item?.id &&
!disabledItems.includes(item.id)
) {
disabledItems.push(item.id);
}
});

View File

@ -184,6 +184,8 @@ const CreateEvent = ({
searchParams.append("formId", gallerySelected.id);
}
searchParams.append("hash", new Date().getTime());
const url = combineUrl(
window.location.origin,
window.DocSpaceConfig?.proxy?.url,

View File

@ -1,4 +1,4 @@
// (c) Copyright Ascensio System SIA 2009-2024
// (c) Copyright Ascensio System SIA 2009-2024
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
@ -28,11 +28,14 @@ import React from "react";
import PropTypes from "prop-types";
import styled from "styled-components";
import { Box } from "@docspace/shared/components/box";
import { useTranslation } from "react-i18next";
import { inject, observer } from "mobx-react";
import { Base } from "@docspace/shared/themes";
import { mobile, getLogoUrl } from "@docspace/shared/utils";
import { WhiteLabelLogoType } from "@docspace/shared/enums";
import { LanguageCombobox } from "@docspace/shared/components/language-combobox";
import { setLanguageForUnauthorized } from "@docspace/shared/utils/common";
import i18n from "../../../i18n";
const Header = styled.header`
align-items: left;
@ -71,6 +74,14 @@ const Header = styled.header`
padding: 12px 0;
cursor: pointer;
}
.language-combo-box {
//margin: auto;
// margin-right: 8px;
position: absolute;
right: 8px;
top: 6px;
}
`;
Header.defaultProps = { theme: Base };
@ -81,10 +92,17 @@ const HeaderUnAuth = ({
isAuthenticated,
isLoaded,
theme,
cultures,
}) => {
const { t } = useTranslation("NavMenu");
const logo = getLogoUrl(WhiteLabelLogoType.LightSmall, !theme.isBase);
const currentCultureName = i18n.language;
const onSelect = (culture) => {
const { key } = culture;
setLanguageForUnauthorized(key, i18n);
};
return (
<Header isLoaded={isLoaded} className="navMenuHeaderUnAuth">
<Box
@ -103,6 +121,17 @@ const HeaderUnAuth = ({
<></>
)}
</Box>
{!wizardToken && (
<LanguageCombobox
className="language-combo-box"
onSelectLanguage={onSelect}
cultures={cultures}
selectedCulture={currentCultureName}
withBorder={false}
isMobileView
/>
)}
</Header>
);
};
@ -118,7 +147,7 @@ HeaderUnAuth.propTypes = {
export default inject(({ authStore, settingsStore }) => {
const { isAuthenticated, isLoaded } = authStore;
const { enableAdmMess, wizardToken, theme } = settingsStore;
const { enableAdmMess, wizardToken, theme, cultures } = settingsStore;
return {
enableAdmMess,
@ -126,5 +155,6 @@ export default inject(({ authStore, settingsStore }) => {
isAuthenticated,
isLoaded,
theme,
cultures,
};
})(observer(HeaderUnAuth));

View File

@ -103,6 +103,8 @@ const ConvertPasswordDialogComponent = (props) => {
searchParams.append("password", password);
searchParams.append("fromFile", true);
searchParams.append("hash", new Date().getTime());
const url = combineUrl(
window.location.origin,
window.DocSpaceConfig?.proxy?.url,

View File

@ -24,6 +24,7 @@
// 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
import { inject, observer } from "mobx-react";
import ArrowReactSvgUrl from "PUBLIC_DIR/images/arrow.react.svg?url";
import React from "react";
import PropTypes from "prop-types";
@ -102,6 +103,15 @@ const StyledListItem = styled(StyledRoomType)`
${(props) => props.theme.createEditRoomDialog.roomType.listItem.borderColor};
border-radius: 6px;
&:hover:not(:active) {
background-color: ${(props) =>
props.theme.createEditRoomDialog.roomType.listItem.hoverBackground};
}
&:active {
border-color: ${({ accentColor }) => accentColor};
}
.choose_room-description {
color: ${(props) =>
props.theme.createEditRoomDialog.roomType.listItem.descriptionText};
@ -112,12 +122,26 @@ const StyledDropdownButton = styled(StyledRoomType)`
border-radius: 6px;
background-color: ${(props) =>
props.theme.createEditRoomDialog.roomType.dropdownButton.background};
${({ isOpen }) =>
!isOpen &&
css`
&:hover:not(:active) {
background-color: ${(props) =>
props.theme.createEditRoomDialog.roomType.dropdownButton
.hoverBackground};
}
`}
border: 1px solid
${(props) =>
props.isOpen
? props.theme.createEditRoomDialog.roomType.dropdownButton
.isOpenBorderColor
: props.theme.createEditRoomDialog.roomType.dropdownButton.borderColor};
${({ isOpen, accentColor, theme }) =>
isOpen
? accentColor
: theme.createEditRoomDialog.roomType.dropdownButton.borderColor};
&:active {
border-color: ${({ accentColor }) => accentColor};
}
.choose_room-description {
color: ${(props) =>
@ -178,6 +202,7 @@ const RoomType = ({
isOpen,
id,
selectedId,
currentColorScheme,
}) => {
const room = {
type: roomType,
@ -185,6 +210,8 @@ const RoomType = ({
description: getRoomTypeDescriptionTranslation(roomType, t),
};
const accentColor = currentColorScheme?.main?.accent;
const arrowClassName =
type === "dropdownButton"
? "choose_room-forward_btn dropdown-button"
@ -219,7 +246,12 @@ const RoomType = ({
);
return type === "listItem" ? (
<StyledListItem id={id} title={t(room.title)} onClick={onClick}>
<StyledListItem
accentColor={accentColor}
id={id}
title={t(room.title)}
onClick={onClick}
>
{content}
</StyledListItem>
) : type === "dropdownButton" ? (
@ -229,6 +261,7 @@ const RoomType = ({
onClick={onClick}
isOpen={isOpen}
data-selected-id={selectedId}
accentColor={accentColor}
>
{content}
</StyledDropdownButton>
@ -239,6 +272,7 @@ const RoomType = ({
onClick={onClick}
isOpen={isOpen}
data-selected-id={selectedId}
currentColorScheme={currentColorScheme}
>
{content}
</StyledDropdownItem>
@ -247,6 +281,7 @@ const RoomType = ({
id={id}
title={t(room.title)}
data-selected-id={selectedId}
currentColorScheme={currentColorScheme}
>
{content}
</StyledDisplayItem>
@ -268,6 +303,9 @@ RoomType.propTypes = {
"dropdownItem",
]),
isOpen: PropTypes.bool,
currentColorScheme: PropTypes.object,
};
export default RoomType;
export default inject(({ settingsStore }) => ({
currentColorScheme: settingsStore.currentColorScheme,
}))(observer(RoomType));

View File

@ -62,7 +62,11 @@ const StyledModalDialogContainer = styled(ModalDialogContainer)`
.user-delete {
line-height: 20px;
padding-bottom: 16px;
${(props) =>
(!props.areUsersOnly || props.deleteWithoutReassign) &&
css`
padding-bottom: 16px;
`}
}
.text-warning {
@ -118,6 +122,8 @@ const DeleteProfileEverDialogComponent = (props) => {
usersToDelete[0].isAdmin ||
usersToDelete[0].isCollaborator);
const areUsersOnly = usersToDelete.every((user) => user.isVisitor);
const onDeleteUser = (id) => {
const filter = Filter.getDefault();
setIsRequestRunning(true);
@ -182,6 +188,8 @@ const DeleteProfileEverDialogComponent = (props) => {
visible={visible}
onClose={onClose}
needReassignData={needReassignData}
deleteWithoutReassign={deleteWithoutReassign}
areUsersOnly={areUsersOnly}
>
<ModalDialog.Header>
{onlyOneUser ? t("DeleteUser") : t("DeletingUsers")}
@ -193,6 +201,7 @@ const DeleteProfileEverDialogComponent = (props) => {
deleteWithoutReassign={deleteWithoutReassign}
users={usersToDelete}
onlyOneUser={onlyOneUser}
areUsersOnly={areUsersOnly}
t={t}
/>
</ModalDialog.Body>

View File

@ -40,6 +40,7 @@ const BodyComponent = (props) => {
userPerformedDeletion,
users,
onlyOneUser,
areUsersOnly,
} = props;
const warningMessageMyDocuments = t("DeleteMyDocumentsUser");
@ -87,8 +88,12 @@ const BodyComponent = (props) => {
return (
<>
<Text className="user-delete">{t("ActionCannotBeUndone")}</Text>
<Text className="text-warning">{t("Common:Warning")}</Text>
<Text className="text-delete-description">{warningMessage}</Text>
{!areUsersOnly && (
<>
<Text className="text-warning">{t("Common:Warning")}</Text>
<Text className="text-delete-description">{warningMessage}</Text>
</>
)}
</>
);
}
@ -96,8 +101,12 @@ const BodyComponent = (props) => {
return (
<>
<Text className="user-delete">{deleteMessage}</Text>
<Text className="text-warning">{t("Common:Warning")}</Text>
<Text className="text-delete-description">{warningMessage}</Text>
{!areUsersOnly && (
<>
<Text className="text-warning">{t("Common:Warning")}</Text>
<Text className="text-delete-description">{warningMessage}</Text>
</>
)}
{needReassignData && (
<Link

View File

@ -321,8 +321,11 @@ const AddUsersPanel = ({
const onClearSearch = useCallback(
(callback?: Function) => {
isFirstLoad.current = true;
setIsLoading(true);
setSearchValue(() => {
setSearchValue((prevValue: string) => {
if (prevValue !== "") {
setIsLoading(true);
}
return "";
});
callback?.();

View File

@ -34,7 +34,7 @@ const ActionsBlock = ({ t, textStyles, keyTextStyles, CtrlKey }) => {
<Row className="hotkeys_row">
<>
<Text {...textStyles}>{t("HotkeysOpen")}</Text>
<Text {...keyTextStyles}>{t("HotkeysEnterKey")}</Text>
<Text {...keyTextStyles}>Enter</Text>
</>
</Row>
<Row className="hotkeys_row">

View File

@ -40,7 +40,7 @@ const PreviewActionsBlock = ({ t, textStyles, keyTextStyles }) => {
<Row className="hotkeys_row">
<>
<Text {...textStyles}>{t("HotkeysPlayPause")}</Text>
<Text {...keyTextStyles}>{t("HotkeysSpaceKey")}</Text>
<Text {...keyTextStyles}>Space</Text>
</>
</Row>
<Row className="hotkeys_row">

View File

@ -80,8 +80,8 @@ const InvitePanel = ({
defaultAccess,
inviteUsers,
setInfoPanelIsMobileHidden,
updateInfoPanelSelection,
addInfoPanelMembers,
updateInfoPanelMembers,
isRoomMembersPanelOpen,
setInviteLanguage,
getUsersList,
filter,
@ -291,28 +291,6 @@ const InvitePanel = ({
setIsLoading(false);
const invitedViaEmail = data.invitations
.filter((inv) => inv.email && !inv.id)
.map((invitation) => ({
access: invitation.access,
sharedTo: {
name: invitation.email,
userName: invitation.email,
email: invitation.email,
displayName: invitation.email,
status: 1,
activationStatus: 2,
usedSpace: 0,
hasAvatar: false,
},
canEditAccess: false,
}));
if (isRooms) {
const newInfoPanelMembers = [...result.members, ...invitedViaEmail];
addInfoPanelMembers(t, newInfoPanelMembers);
}
onClose();
toastr.success(t("Common:UsersInvited"));
@ -320,7 +298,9 @@ const InvitePanel = ({
toastr.warning(result?.warning);
}
updateInfoPanelSelection();
if (isRoomMembersPanelOpen) {
updateInfoPanelMembers(t);
}
} catch (err) {
toastr.error(err);
setIsLoading(false);
@ -503,8 +483,8 @@ export default inject(
const { filter } = peopleStore.filterStore;
const {
setIsMobileHidden: setInfoPanelIsMobileHidden,
updateInfoPanelSelection,
addInfoPanelMembers,
updateInfoPanelMembers,
isRoomMembersPanelOpen,
} = infoPanelStore;
const {
@ -547,8 +527,8 @@ export default inject(
collaboratorLink,
inviteUsers,
setInfoPanelIsMobileHidden,
updateInfoPanelSelection,
addInfoPanelMembers,
updateInfoPanelMembers,
isRoomMembersPanelOpen,
getUsersList,
filter,
currentDeviceType,

View File

@ -37,6 +37,8 @@ import { combineUrl } from "@docspace/shared/utils/combineUrl";
import SectionWrapper from "SRC_DIR/components/Section";
import { AuthenticatedAction, ValidationResult } from "SRC_DIR/helpers/enums";
import { getCookie } from "@docspace/shared/utils";
import { LANGUAGE } from "@docspace/shared/constants";
const ConfirmRoute = ({
doAuthenticated,
@ -57,8 +59,9 @@ const ConfirmRoute = ({
React.useEffect(() => {
if (location.search.includes("culture")) return;
storeIsLoaded && i18n.changeLanguage(culture);
const lng = getCookie(LANGUAGE);
storeIsLoaded && i18n.changeLanguage(lng);
}, [storeIsLoaded]);
const location = useLocation();

View File

@ -0,0 +1,69 @@
// (c) Copyright Ascensio System SIA 2009-2024
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// 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
import { inject, observer } from "mobx-react";
import { setLanguageForUnauthorized } from "@docspace/shared/utils/common";
import { LanguageCombobox } from "@docspace/shared/components/language-combobox";
import { TPortalCultures } from "@docspace/shared/api/settings/types";
import { DeviceType } from "@docspace/shared/enums";
export interface TLanguageCombobox {
cultures: TPortalCultures;
currentDeviceType: string;
currentCultureName: string;
}
const LanguageComboboxWrapper = (props: TLanguageCombobox) => {
const { cultures, currentCultureName, currentDeviceType } = props;
const onLanguageSelect = (culture: { key: string }) => {
const { key } = culture;
setLanguageForUnauthorized(key);
};
const isMobileView = currentDeviceType === DeviceType.mobile;
if (isMobileView) return <></>;
return (
<LanguageCombobox
className="language-combo-box"
onSelectLanguage={onLanguageSelect}
cultures={cultures}
selectedCulture={currentCultureName}
withBorder={false}
/>
);
};
export default inject<TStore>(({ settingsStore }) => {
const { currentDeviceType } = settingsStore;
return {
currentDeviceType,
};
})(observer(LanguageComboboxWrapper));

View File

@ -47,6 +47,10 @@ export const StyledPage = styled.div`
width: 100%;
padding: ${({ theme }) =>
getCorrectFourValuesStyle("32px 8px 0 16px", theme.interfaceDirection)};
.language-combo-box {
display: none;
}
}
.subtitle {
@ -61,6 +65,12 @@ export const StyledPage = styled.div`
.subtitle {
margin-bottom: 32px;
}
.language-combo-box {
position: absolute;
right: 28px;
top: 28px;
}
`;
export const StyledContent = styled.div`

View File

@ -29,7 +29,6 @@ import SsoReactSvgUrl from "PUBLIC_DIR/images/sso.react.svg?url";
import React, { useEffect, useState, useCallback } from "react";
import { withTranslation, Trans } from "react-i18next";
import { inject, observer } from "mobx-react";
import { useSearchParams } from "react-router-dom";
import { Button } from "@docspace/shared/components/button";
import { TextInput } from "@docspace/shared/components/text-input";
import { Text } from "@docspace/shared/components/text";
@ -52,10 +51,12 @@ import {
getLoginLink,
} from "@docspace/shared/utils/common";
import { login } from "@docspace/shared/utils/loginUtils";
import { PROVIDERS_DATA } from "@docspace/shared/constants";
import {
COOKIE_EXPIRATION_YEAR,
LANGUAGE,
PROVIDERS_DATA,
} from "@docspace/shared/constants";
import { combineUrl } from "@docspace/shared/utils/combineUrl";
import { IconButton } from "@docspace/shared/components/icon-button";
import { ColorTheme, ThemeId } from "@docspace/shared/components/color-theme";
import { getPasswordErrorMessage } from "@docspace/shared/utils/getPasswordErrorMessage";
import DocspaceLogo from "@docspace/shared/components/docspace-logo/DocspaceLogo";
@ -68,6 +69,10 @@ import {
StyledCreateUserContent,
} from "./StyledCreateUser";
import GreetingUserContainer from "./GreetingUserContainer";
import LanguageComboboxWrapper from "./LanguageCombobox";
import withCultureNames from "SRC_DIR/HOCs/withCultureNames";
import { setCookie } from "@docspace/shared/utils/cookie";
const DEFAULT_ROOM_TEXT =
"<strong>{{firstName}} {{lastName}}</strong> invites you to join the room <strong>{{roomName}}</strong> for secure document collaboration.";
@ -105,7 +110,12 @@ const CreateUserForm = (props) => {
currentColorScheme,
userNameRegex,
defaultPage,
cultures,
i18n,
} = props;
const currentCultureName = i18n.language;
const inputRef = React.useRef(null);
const emailFromLink = linkData?.email ? linkData.email : "";
@ -132,8 +142,6 @@ const CreateUserForm = (props) => {
const [isEmailErrorShow, setIsEmailErrorShow] = useState(false);
const [isPasswordErrorShow, setIsPasswordErrorShow] = useState(false);
const [searchParams, setSearchParams] = useSearchParams();
const [registrationForm, setRegistrationForm] = useState(emailFromLink);
const focusInput = () => {
@ -204,6 +212,10 @@ const CreateUserForm = (props) => {
await getUserByEmail(email, headerKey);
setCookie(LANGUAGE, currentCultureName, {
"max-age": COOKIE_EXPIRATION_YEAR,
});
window.location.href = combineUrl(
window.DocSpaceConfig?.proxy?.url,
"/login",
@ -225,7 +237,7 @@ const CreateUserForm = (props) => {
const onSubmit = () => {
const { linkData, hashSettings } = props;
const type = parseInt(linkData.emplType);
const culture = searchParams.get("culture");
setIsLoading(true);
setErrorText("");
@ -272,7 +284,7 @@ const CreateUserForm = (props) => {
firstname: fname.trim(),
lastname: sname.trim(),
email: email,
cultureName: culture,
cultureName: currentCultureName,
};
if (!!type) {
@ -311,6 +323,7 @@ const CreateUserForm = (props) => {
Email: linkData.email,
Key: linkData.key,
SerializedProfile: profile,
culture: currentCultureName,
};
signupOAuth(signupAccount)
@ -466,6 +479,11 @@ const CreateUserForm = (props) => {
return (
<StyledPage>
<LanguageComboboxWrapper
cultures={cultures}
currentCultureName={currentCultureName}
/>
<StyledCreateUserContent>
<GreetingContainer>
<DocspaceLogo className="docspace-logo" />
@ -723,6 +741,7 @@ export default inject(({ settingsStore, authStore }) => {
getPortalPasswordSettings,
currentColorScheme,
userNameRegex,
cultures,
} = settingsStore;
return {
settings: passwordSettings,
@ -736,9 +755,12 @@ export default inject(({ settingsStore, authStore }) => {
capabilities,
currentColorScheme,
userNameRegex,
cultures,
};
})(
withTranslation(["Confirm", "Common", "Wizard"])(
withLoader(observer(CreateUserForm)),
withCultureNames(
withTranslation(["Confirm", "Common", "Wizard"])(
withLoader(observer(CreateUserForm)),
),
),
);

View File

@ -127,14 +127,14 @@ export const CategoryFilterSubList = styled(DropDown)`
${({ theme }) =>
theme.interfaceDirection !== "rtl"
? css`
left: -5px;
left: -4px;
`
: css`
right: -5px;
right: -4px;
`};
top: 0;
width: 4px;
width: 6px;
height: 100%;
}
`;

View File

@ -24,22 +24,36 @@
// 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
import * as Styled from "./index.styled";
import { withTranslation } from "react-i18next";
import { useState, useEffect } from "react";
import { useEffect } from "react";
import { inject, observer } from "mobx-react";
import { flagsIcons } from "@docspace/shared/utils/image-flags";
import { convertToCulture } from "@docspace/shared/utils/common";
import { isMobile } from "@docspace/shared/utils";
import { RectangleSkeleton } from "@docspace/shared/skeletons";
import { LanguageCombobox } from "@docspace/shared/components/language-combobox";
import { DeviceType } from "@docspace/shared/enums";
const keyedCollections = {
ar: "ar-SA",
en: "en-US",
el: "el-GR",
hy: "hy-AM",
ko: "ko-KR",
lo: "lo-LA",
pt: "pt-BR",
uk: "uk-UA",
ja: "ja-JP",
zh: "zh-CN",
};
const convertToCulture = (key) => {
return keyedCollections[key] ?? key;
};
const getOformLocaleByIndex = (index, array) => {
return array[index];
};
const LanguageFilter = ({
t,
oformsFilter,
defaultOformLocale,
oformLocales,
filterOformsByLocale,
filterOformsByLocaleIsLoading,
@ -47,14 +61,15 @@ const LanguageFilter = ({
categoryFilterLoaded,
languageFilterLoaded,
oformFilesLoaded,
oformsLocal,
isMobileView,
}) => {
const [isOpen, setIsOpen] = useState(false);
const onToggleDropdownIsOpen = () => setIsOpen(!isOpen);
const onCloseDropdown = () => setIsOpen(false);
const convertedLocales = oformLocales.map((item) => convertToCulture(item));
const onFilterByLocale = async (newLocale) => {
await filterOformsByLocale(newLocale);
onCloseDropdown();
const key = getOformLocaleByIndex(newLocale.index, oformLocales);
await filterOformsByLocale(key);
const [sectionScroll] = document.getElementsByClassName("section-scroll");
sectionScroll.scrollTop = 0;
@ -71,72 +86,43 @@ const LanguageFilter = ({
return <RectangleSkeleton width="41px" height="32px" />;
return (
<Styled.LanguageFilter>
<Styled.LanguangeComboBox
id="comboBoxLanguage"
tabIndex={1}
className={"combobox"}
opened={isOpen}
onClick={onToggleDropdownIsOpen}
onSelect={onCloseDropdown}
isDisabled={false}
showDisabledItems={true}
directionX={"right"}
directionY={"both"}
scaled={true}
size={"base"}
manualWidth={"41px"}
disableIconClick={false}
disableItemClick={false}
isDefaultMode={false}
fixedDirection={true}
advancedOptionsCount={5}
fillIcon={false}
withBlur={isMobile()}
options={[]}
selectedOption={{}}
advancedOptions={
<>
{oformLocales?.map((locale) => (
<Styled.LanguageFilterItem
className={"language-item"}
key={locale}
isSelected={locale === oformsFilter.locale}
icon={flagsIcons?.get(`${convertToCulture(locale)}.react.svg`)}
label={
isMobile()
? t(`Common:Culture_${convertToCulture(locale)}`)
: undefined
}
onClick={() => onFilterByLocale(locale)}
fillIcon={false}
/>
))}
</>
}
>
<Styled.LanguageFilterSelectedItem
key={oformsFilter.locale}
icon={flagsIcons?.get(
`${convertToCulture(
oformsFilter.locale || defaultOformLocale,
)}.react.svg`,
)}
fillIcon={false}
/>
</Styled.LanguangeComboBox>
</Styled.LanguageFilter>
<LanguageCombobox
cultures={convertedLocales}
isAuthenticated
onSelectLanguage={onFilterByLocale}
selectedCulture={convertToCulture(oformsLocal)}
id="comboBoxLanguage"
isMobileView={isMobileView}
/>
);
};
export default inject(({ oformsStore }) => ({
oformsFilter: oformsStore.oformsFilter,
defaultOformLocale: oformsStore.defaultOformLocale,
oformLocales: oformsStore.oformLocales,
filterOformsByLocale: oformsStore.filterOformsByLocale,
filterOformsByLocaleIsLoading: oformsStore.filterOformsByLocaleIsLoading,
setLanguageFilterLoaded: oformsStore.setLanguageFilterLoaded,
categoryFilterLoaded: oformsStore.categoryFilterLoaded,
languageFilterLoaded: oformsStore.languageFilterLoaded,
oformFilesLoaded: oformsStore.oformFilesLoaded,
}))(withTranslation(["Common"])(observer(LanguageFilter)));
export default inject(({ oformsStore, settingsStore }) => {
const {
oformLocales,
filterOformsByLocale,
filterOformsByLocaleIsLoading,
setLanguageFilterLoaded,
languageFilterLoaded,
oformFilesLoaded,
categoryFilterLoaded,
oformsFilter,
} = oformsStore;
const { currentDeviceType } = settingsStore;
const isMobileView = currentDeviceType === DeviceType.mobile;
return {
oformLocales,
filterOformsByLocale,
filterOformsByLocaleIsLoading,
setLanguageFilterLoaded,
categoryFilterLoaded,
languageFilterLoaded,
oformFilesLoaded,
oformsLocal: oformsFilter.locale,
isMobileView,
};
})(withTranslation(["Common"])(observer(LanguageFilter)));

View File

@ -1,125 +0,0 @@
// (c) Copyright Ascensio System SIA 2009-2024
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// 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
import { DropDownItem } from "@docspace/shared/components/drop-down-item";
import styled, { css } from "styled-components";
import Base from "@docspace/shared/themes/base";
import { ComboBox } from "@docspace/shared/components/combobox";
import { mobile } from "@docspace/shared/utils";
export const LanguageFilter = styled.div`
width: 41px;
box-sizing: border-box;
.dropdown-container {
width: 100%;
box-sizing: border-box;
margin-top: 4px;
}
`;
export const LanguangeComboBox = styled(ComboBox)`
width: 41px;
padding: 0;
box-sizing: border-box;
.combo-button {
padding: 8px;
gap: 4px;
.optionalBlock {
margin: 0;
& > div {
width: 16px;
height: 16px;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
}
}
.combo-button-label {
display: none;
}
.combo-buttons_arrow-icon {
margin: 0;
}
}
`;
export const LanguageFilterSelectedItem = styled(DropDownItem)`
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
.drop-down-icon {
margin: 0;
width: 16px;
height: 16px;
div {
display: flex;
align-items: center;
justify-content: center;
}
}
`;
export const LanguageFilterItem = styled(DropDownItem)`
height: 32px;
width: 41px;
box-sizing: border-box;
padding: 8px;
display: flex;
align-items: center;
justify-content: center;
${({ isSelected, theme }) =>
isSelected &&
css`
background-color: ${theme.dropDownItem.hoverBackgroundColor};
`}
.drop-down-icon {
margin: 0;
width: 16px;
height: 16px;
line-height: 0 !important;
}
@media ${mobile} {
height: 36px;
width: 100%;
justify-content: start;
gap: 8px;
}
`;
LanguageFilterItem.defaultProps = { theme: Base };

View File

@ -31,6 +31,7 @@ import { ComboBox } from "@docspace/shared/components/combobox";
export const SortButton = styled.div`
.combo-button {
padding-inline-end: 3px;
background: ${(props) =>
props.theme.filterInput.sort.background} !important;
@ -67,6 +68,7 @@ export const SortButton = styled.div`
align-items: center;
justify-content: center;
margin: 0;
padding: 0 16px;
}
.combo-buttons_arrow-icon {

View File

@ -36,6 +36,8 @@ interface AccountsHotkeysProps {
selectBottom: () => void;
selectUpper: () => void;
activateHotkeys: (e: KeyboardEvent) => void;
setSelected: (value: string) => void;
selectAll: () => void;
}
const useAccountsHotkeys = ({
@ -44,6 +46,8 @@ const useAccountsHotkeys = ({
selectBottom,
selectUpper,
activateHotkeys,
setSelected,
selectAll,
}: AccountsHotkeysProps) => {
const [isEnabled, setIsEnabled] = useState(true);
@ -73,10 +77,10 @@ const useAccountsHotkeys = ({
useEffect(() => {
const throttledKeyDownEvent = throttle(onKeyDown, 300);
window.addEventListener("keydown", onKeyDown);
window.addEventListener("keydown", throttledKeyDownEvent);
return () => {
window.removeEventListener("keypress", throttledKeyDownEvent);
window.removeEventListener("keydown", throttledKeyDownEvent);
};
}, [onKeyDown]);
@ -104,6 +108,12 @@ const useAccountsHotkeys = ({
},
hotkeysFilter,
);
// Select all accounts
useHotkeys("shift+a, ctrl+a", selectAll, hotkeysFilter);
// Deselect all accounts
useHotkeys("shift+n, ESC", () => setSelected("none"), hotkeysFilter);
};
export default useAccountsHotkeys;

View File

@ -144,11 +144,19 @@ const User = ({
newMembersFilter.total -= 1;
if (hasNextPage) {
const oldStartIndex = newMembersFilter.startIndex;
const oldPageCount = newMembersFilter.pageCount;
newMembersFilter.startIndex =
(newMembersFilter.page + 1) * newMembersFilter.pageCount - 1;
newMembersFilter.pageCount = 1;
const fetchedMembers = await fetchMembers(t, false);
const fetchedMembers = await fetchMembers(
t,
false,
withoutTitles,
newMembersFilter,
);
const newMembers = {
administrators: [
@ -164,6 +172,9 @@ const User = ({
roomId: infoPanelSelection.id,
...newMembers,
});
newMembersFilter.startIndex = oldStartIndex;
newMembersFilter.pageCount = oldPageCount;
}
setMembersFilter(newMembersFilter);

View File

@ -65,7 +65,7 @@ const Members = ({
isPublicRoomType,
membersFilter,
infoPanelMembers,
setInfoPanelMembers,
updateInfoPanelMembers,
primaryLink,
isArchiveFolder,
isPublicRoom,
@ -75,38 +75,24 @@ const Members = ({
getPrimaryLink,
setExternalLink,
withPublicRoomBlock,
fetchMembers,
fetchMoreMembers,
membersIsLoading,
searchValue,
searchResultIsLoading,
isMembersPanelUpdating,
}) => {
const withoutTitlesAndLinks = !!searchValue;
const membersHelper = new MembersHelper({ t });
const scrollContext = useContext(ScrollbarContext);
const updateInfoPanelMembers = async () => {
if (
!infoPanelSelection ||
!infoPanelSelection.isRoom ||
!infoPanelSelection.id
) {
return;
}
const fetchedMembers = await fetchMembers(t, true, withoutTitlesAndLinks);
setInfoPanelMembers(fetchedMembers);
};
useEffect(() => {
updateInfoPanelMembers();
updateInfoPanelMembers(t);
}, [infoPanelSelection, searchValue]);
useEffect(() => {
if (searchResultIsLoading) return;
if (isMembersPanelUpdating) return;
scrollContext?.parentScrollbar?.scrollToTop();
}, [searchResultIsLoading]);
}, [isMembersPanelUpdating]);
const loadNextPage = async () => {
await fetchMoreMembers(t, withoutTitlesAndLinks);
@ -259,8 +245,8 @@ const Members = ({
<MembersList
loadNextPage={loadNextPage}
hasNextPage={
membersList.length - headersCount < membersFilter.total &&
!searchResultIsLoading
!isMembersPanelUpdating &&
membersList.length - headersCount < membersFilter.total
}
itemCount={membersFilter.total + headersCount + publicRoomItemsLength}
showPublicRoomBar={showPublicRoomBar}
@ -279,6 +265,7 @@ const Members = ({
membersHelper={membersHelper}
currentMember={currentMember}
hasNextPage={
!isMembersPanelUpdating &&
membersList.length - headersCount < membersFilter.total
}
/>
@ -303,13 +290,12 @@ export default inject(
infoPanelSelection,
setIsScrollLocked,
infoPanelMembers,
setInfoPanelMembers,
fetchMembers,
updateInfoPanelMembers,
fetchMoreMembers,
membersIsLoading,
withPublicRoomBlock,
searchValue,
searchResultIsLoading,
isMembersPanelUpdating,
} = infoPanelStore;
const { membersFilter } = filesStore;
const { id: selfId, isAdmin } = userStore.user;
@ -337,7 +323,7 @@ export default inject(
isPublicRoomType,
membersFilter,
infoPanelMembers,
setInfoPanelMembers,
updateInfoPanelMembers,
roomType,
primaryLink,
isArchiveFolder: isArchiveFolderRoot,
@ -348,11 +334,10 @@ export default inject(
getPrimaryLink: filesStore.getPrimaryLink,
setExternalLink,
withPublicRoomBlock,
fetchMembers,
fetchMoreMembers,
membersIsLoading,
searchValue,
searchResultIsLoading,
isMembersPanelUpdating,
};
},
)(

View File

@ -55,6 +55,8 @@ const SectionBodyContent = (props) => {
activateHotkeys,
setHotkeyCaretStart,
setHotkeyCaret,
setSelected,
selectAll,
} = props;
const location = useLocation();
@ -66,6 +68,8 @@ const SectionBodyContent = (props) => {
selectBottom,
selectUpper,
activateHotkeys,
setSelected,
selectAll,
});
useEffect(() => {
@ -140,6 +144,8 @@ export default inject(({ peopleStore }) => {
setSelection: setPeopleSelection,
setBufferSelection: setPeopleBufferSelection,
selectUser,
setSelected,
selectAll,
} = peopleStore.selectionStore;
const {
@ -176,6 +182,8 @@ export default inject(({ peopleStore }) => {
setEnabledHotkeys,
setHotkeyCaretStart,
setHotkeyCaret,
setSelected,
selectAll,
};
})(
withTranslation(["People", "Common", "PeopleTranslations"])(

View File

@ -126,7 +126,7 @@ const StyledSimpleFilesRow = styled(Row)`
!props.isThirdPartyFolder &&
(props.checked || props.isActive) &&
props.canDrag &&
`url(${CursorPalmReactSvgUrl}), auto`};
`url(${CursorPalmReactSvgUrl}) 8 0, auto`};
${(props) =>
props.inProgress &&
css`

View File

@ -148,7 +148,7 @@ const StyledTableRow = styled(TableRow)`
!props.isThirdPartyFolder &&
(props.checked || props.isActive) &&
props.canDrag &&
`url(${CursorPalmSvgUrl}), auto !important`};
`url(${CursorPalmSvgUrl}) 8 0, auto !important`};
${(props) =>
props.inProgress &&
@ -438,24 +438,17 @@ const StyledQuickButtonsContainer = styled.div`
}
.badge {
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`
margin-left: 14px;
`
: css`
margin-right: 14px;
`}
padding: 12px 7px;
}
.badge:last-child {
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`
margin-left: 10px;
margin-left: 3px;
`
: css`
margin-right: 10px;
margin-right: 3px;
`}
}

View File

@ -827,7 +827,7 @@ const SectionHeaderContent = (props) => {
};
const onNavigationButtonClick = () => {
onCreateAndCopySharedLink(props.roomItem, t);
onCreateAndCopySharedLink(selectedFolder, t);
};
const headerMenu = isAccountsPage
@ -1236,11 +1236,6 @@ export default inject(
shared) ||
(sharedItem && sharedItem.canCopyPublicLink);
const roomItem =
navigationPath.length > 1
? navigationPath[navigationPath.length - 2]
: selectedFolder;
return {
isGracePeriod,
setInviteUsersWarningDialogVisible,
@ -1366,8 +1361,6 @@ export default inject(
onClickReconnectStorage,
getFolderModel,
onCreateRoom,
roomItem,
};
},
)(

View File

@ -94,6 +94,8 @@ const HeaderContainer = styled.div`
}
.arrow-button {
flex-shrink: 0;
${(props) =>
props.theme.interfaceDirection === "rtl"
? css`

View File

@ -107,7 +107,7 @@ const ImportCompleteStep = ({
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
navigate(-1);
navigate("/portal-settings/data-import/migration");
}, 1000);
};

View File

@ -89,6 +89,8 @@ const ErrorBlock = styled.div`
}
`;
const FAILS_TRIES = 1;
const SelectFileStep = ({
t,
onNextStep,
@ -117,9 +119,10 @@ const SelectFileStep = ({
const uploadInterval = useRef(null);
const navigate = useNavigate();
const [failTries, setFailsTries] = useState(FAILS_TRIES);
const goBack = () => {
cancelMigration();
setTimeout(() => navigate(-1), 100);
navigate("/portal-settings/data-import/migration");
};
const checkMigrationStatusAndUpdate = async () => {
@ -187,7 +190,6 @@ const SelectFileStep = ({
};
const onUploadFile = async (file) => {
setProgress(0);
setIsVisible(true);
try {
if (file.length) {
@ -195,23 +197,18 @@ const SelectFileStep = ({
} else {
await singleFileUploading(file, setProgress, isAbort);
}
if (isAbort.current) return;
await initMigrationName(searchParams.get("service"));
uploadInterval.current = setInterval(async () => {
try {
const res = await getMigrationStatus();
setProgress(res?.progress);
if (res.progress > 10) {
setIsVisible(false);
} else {
setIsVisible(true);
}
if (res.error || res.parseResult.failedArchives.length > 0) {
setShowErrorText(true);
} else {
setShowErrorText(false);
if (!res && failTries) {
setFailsTries((tries) => tries - 1);
return;
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
@ -219,12 +216,14 @@ const SelectFileStep = ({
setIsFileError(true);
setIsFileLoading(false);
clearInterval(uploadInterval.current);
} else if (res.isCompleted || res.parseResult.progress === 100) {
setShowErrorText(true);
return;
}
if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setProgress(100);
if (
res.parseResult.users.length +
res.parseResult.existUsers.length +
@ -239,12 +238,23 @@ const SelectFileStep = ({
cancelMigration();
}
}
setProgress(res?.progress);
if (res.progress > 10) {
setIsVisible(false);
} else {
setIsVisible(true);
}
setShowErrorText(false);
} catch (error) {
toastr.error(error || t("Common:SomethingWentWrong"));
setIsFileError(true);
setIsFileLoading(false);
setIsError(true);
clearInterval(uploadInterval.current);
} finally {
isAbort.current = false;
}
}, 1000);
} catch (error) {
@ -259,6 +269,7 @@ const SelectFileStep = ({
setIsFileError(false);
setShowReminder(false);
setIsFileLoading(true);
setFailsTries(FAILS_TRIES);
try {
onUploadFile(file);
} catch (error) {
@ -286,7 +297,6 @@ const SelectFileStep = ({
});
} catch (error) {
toastr.error(error);
console.log(error);
}
};

View File

@ -32,9 +32,9 @@ import { SearchInput } from "@docspace/shared/components/search-input";
import AccountsTable from "./AccountsTable";
import AccountsPaging from "../../../sub-components/AccountsPaging";
// import UsersInfoBlock from "./../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "./../../../sub-components/UsersInfoBlock";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const SelectUsersStep = ({
t,
@ -46,11 +46,16 @@ const SelectUsersStep = ({
setResultUsers,
areCheckedUsersEmpty,
cancelMigration,
checkedUsers,
quotaCharacteristics,
}) => {
const [dataPortion, setDataPortion] = useState(withEmailUsers.slice(0, 25));
const [quota, setQuota] = useState({ used: 0, max: 0 });
const [isSaving, setIsSaving] = useState(false);
useEffect(() => {
setSearchValue("");
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const handleDataChange = (leftBoundary, rightBoundary) => {
@ -79,9 +84,17 @@ const SelectUsersStep = ({
const goBack = () => {
cancelMigration();
setTimeout(onPrevStep, 100);
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
onPrevStep();
}, 1000);
};
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length;
return (
<>
<SaveCancelButtons
@ -92,15 +105,21 @@ const SelectUsersStep = ({
saveButtonLabel={t("Settings:NextStep")}
cancelButtonLabel={t("Common:Back")}
displaySettings={true}
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
isSaving={isSaving}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={100}
totalUsers={withEmailUsers.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={checkedUsers.withEmail.length}
totalUsers={withEmailUsers.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-withEmailUsers-input"
@ -131,14 +150,17 @@ const SelectUsersStep = ({
saveButtonLabel={t("Settings:NextStep")}
cancelButtonLabel={t("Common:Back")}
displaySettings={true}
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
isSaving={isSaving}
/>
)}
</>
);
};
export default inject(({ importAccountsStore }) => {
export default inject(({ importAccountsStore, currentQuotaStore }) => {
const {
withEmailUsers,
searchValue,
@ -146,7 +168,9 @@ export default inject(({ importAccountsStore }) => {
areCheckedUsersEmpty,
setResultUsers,
cancelMigration,
checkedUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
withEmailUsers,
@ -155,5 +179,7 @@ export default inject(({ importAccountsStore }) => {
areCheckedUsersEmpty,
setResultUsers,
cancelMigration,
checkedUsers,
quotaCharacteristics,
};
})(observer(SelectUsersStep));

View File

@ -51,11 +51,11 @@ const StyledTableContainer = styled(TableContainer)`
position: sticky;
z-index: 201;
width: calc(100% + 40px);
margin-top: 20px;
margin-top: -33px;
margin-left: -20px;
top: 0;
margin-bottom: -37.5px;
margin-bottom: -36px;
.table-container_group-menu {
border-image-slice: 0;

View File

@ -92,16 +92,14 @@ const SelectUsersTypeStep = ({
{filteredUsers.length > 0 && (
<>
{!checkedUsers.result.length > 0 && (
<StyledSearchInput
id="search-users-type-input"
placeholder={t("Common:Search")}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
)}
<StyledSearchInput
id="search-users-type-input"
placeholder={t("Common:Search")}
value={searchValue}
onChange={onChangeInput}
refreshTimeout={100}
onClearSearch={onClearSearchInput}
/>
<AccountsTable t={t} accountsData={filteredAccounts} />

View File

@ -28,7 +28,10 @@ import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { Trans, withTranslation } from "react-i18next";
import { getStepTitle, getGoogleStepDescription } from "../../../utils";
import { tablet } from "@docspace/shared/utils/device";
import {
tablet,
isMobile as isMobileBreakpoint,
} from "@docspace/shared/utils/device";
import { isMobile } from "react-device-detect";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
@ -215,7 +218,7 @@ const GoogleWorkspace = ({
return clearCheckedAccounts;
}, []);
if (isMobile)
if (isMobile || isMobileBreakpoint())
return (
<BreakpointWarning
isMobileUnavailableOnly

View File

@ -178,7 +178,7 @@ const UsersTableRow = ({
{isEmailOpen ? (
<EmailInputWrapper ref={emailInputRef}>
<EmailInput
placeholder={t("Settings:NoEmail")}
placeholder={t("EnterEmail")}
className="import-email-input"
value={tempEmail}
onChange={handleEmailChange}
@ -197,7 +197,7 @@ const UsersTableRow = ({
<span onClick={openEmail} className="user-email" ref={emailTextRef}>
<EditSvg />
<Text fontWeight={600} color="#A3A9AE" className="textOverflow">
{prevEmail !== "" ? prevEmail : t("EnterEmail")}
{prevEmail !== "" ? prevEmail : t("Settings:NoEmail")}
</Text>
</span>
)}

View File

@ -24,7 +24,7 @@
// 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
import { useState } from "react";
import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { SaveCancelButtons } from "@docspace/shared/components/save-cancel-buttons";
@ -36,10 +36,10 @@ import { Text } from "@docspace/shared/components/text";
import { Wrapper } from "../StyledStepper";
// import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import { NoEmailUsersBlock } from "../../../sub-components/NoEmailUsersBlock";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const AddEmailsStep = (props) => {
const {
@ -51,11 +51,15 @@ const AddEmailsStep = (props) => {
setSearchValue,
setResultUsers,
areCheckedUsersEmpty,
checkedUsers,
quotaCharacteristics,
withEmailUsers,
} = props;
const [dataPortion, setDataPortion] = useState(
users.withoutEmail.slice(0, 25),
);
const [quota, setQuota] = useState({ used: 0, max: 0 });
const handleDataChange = (leftBoundary, rightBoundary) => {
setDataPortion(users.withoutEmail.slice(leftBoundary, rightBoundary));
@ -80,6 +84,18 @@ const AddEmailsStep = (props) => {
incrementStep();
};
const numberOfSelectedUsers =
checkedUsers.withEmail.length + checkedUsers.withoutEmail.length;
useEffect(() => {
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length +
checkedUsers.withoutEmail.length;
return (
<Wrapper>
{users.withoutEmail.length > 0 && (
@ -100,15 +116,20 @@ const AddEmailsStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={numberOfCheckedAccounts}
totalUsers={users.withoutEmail.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={numberOfSelectedUsers}
totalUsers={withEmailUsers.length + users.withoutEmail.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-users-input"
@ -143,13 +164,15 @@ const AddEmailsStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
saveButtonDisabled={areCheckedUsersEmpty}
saveButtonDisabled={
areCheckedUsersEmpty || (quota.max && totalUsedUsers > quota.max)
}
/>
</Wrapper>
);
};
export default inject(({ setup, importAccountsStore }) => {
export default inject(({ setup, importAccountsStore, currentQuotaStore }) => {
const { viewAs } = setup;
const {
searchValue,
@ -157,7 +180,10 @@ export default inject(({ setup, importAccountsStore }) => {
users,
setResultUsers,
areCheckedUsersEmpty,
checkedUsers,
withEmailUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
viewAs,
@ -166,5 +192,8 @@ export default inject(({ setup, importAccountsStore }) => {
users,
setResultUsers,
areCheckedUsersEmpty,
checkedUsers,
quotaCharacteristics,
withEmailUsers,
};
})(observer(AddEmailsStep));

View File

@ -96,7 +96,7 @@ const ImportCompleteStep = ({
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
navigate(-1);
navigate("/portal-settings/data-import/migration");
}, 1000);
};

View File

@ -39,7 +39,6 @@ import { SaveCancelButtons } from "@docspace/shared/components/save-cancel-butto
import { Box } from "@docspace/shared/components/box";
import { Link } from "@docspace/shared/components/link";
import { toastr } from "@docspace/shared/components/toast";
// import { mockRes } from "./tempMock";
const Wrapper = styled.div`
max-width: 700px;
@ -101,6 +100,8 @@ const ErrorBlock = styled.div`
}
`;
const FAILS_TRIES = 1;
const SelectFileStep = ({
t,
incrementStep,
@ -125,9 +126,10 @@ const SelectFileStep = ({
const uploadInterval = useRef(null);
const navigate = useNavigate();
const [failTries, setFailsTries] = useState(FAILS_TRIES);
const goBack = () => {
cancelMigration();
setTimeout(() => navigate(-1), 100);
navigate("/portal-settings/data-import/migration");
};
const checkMigrationStatusAndUpdate = async () => {
@ -188,15 +190,41 @@ const SelectFileStep = ({
};
const onUploadFile = async (file) => {
setProgress(0);
setIsVisible(true);
try {
if (Array.isArray(file)) throw new Error(t("Common:SomethingWentWrong"));
await singleFileUploading(file, setProgress, isAbort);
if (isAbort.current) return;
await initMigrationName(searchParams.get("service"));
uploadInterval.current = setInterval(async () => {
try {
const res = await getMigrationStatus();
if (!res && failTries) {
setFailsTries((tries) => tries - 1);
return;
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
clearInterval(uploadInterval.current);
setIsFileError(true);
setIsFileLoading(false);
toastr.error(res.error);
return;
}
if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setUsers(res.parseResult);
setIsSaveDisabled(true);
}
setProgress(res.progress);
if (res.progress > 10) {
@ -204,26 +232,14 @@ const SelectFileStep = ({
} else {
setIsVisible(true);
}
if (!res || res.parseResult.failedArchives.length > 0 || res.error) {
toastr.error(res.error);
setIsFileError(true);
setIsFileLoading(false);
clearInterval(uploadInterval.current);
} else if (res.isCompleted || res.parseResult.progress === 100) {
clearInterval(uploadInterval.current);
setIsFileLoading(false);
setIsVisible(false);
setProgress(100);
setUsers(res.parseResult);
setIsSaveDisabled(true);
}
} catch (error) {
toastr.error(error || error.message);
setIsFileError(true);
setIsFileLoading(false);
setIsError(true);
clearInterval(uploadInterval.current);
} finally {
isAbort.current = false;
}
}, 1000);
} catch (error) {
@ -238,6 +254,7 @@ const SelectFileStep = ({
setIsFileError(false);
setIsSaveDisabled(false);
setIsFileLoading(true);
setFailsTries(FAILS_TRIES);
try {
onUploadFile(file);
} catch (error) {
@ -264,7 +281,6 @@ const SelectFileStep = ({
window.URL.revokeObjectURL(url);
});
} catch (error) {
console.log(error);
toastr.error(error);
}
};

View File

@ -34,10 +34,10 @@ import { Text } from "@docspace/shared/components/text";
import AccountsTable from "./AccountsTable";
import AccountsPaging from "../../../sub-components/AccountsPaging";
// import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import UsersInfoBlock from "../../../sub-components/UsersInfoBlock";
import { Wrapper } from "../StyledStepper";
// const LICENSE_LIMIT = 100;
import { parseQuota } from "../../../utils";
const SelectUsersStep = (props) => {
const {
@ -48,12 +48,18 @@ const SelectUsersStep = (props) => {
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
quotaCharacteristics,
users,
} = props;
const [dataPortion, setDataPortion] = useState(withEmailUsers.slice(0, 25));
const [quota, setQuota] = useState({ used: 0, max: 0 });
const [isSaving, setIsSaving] = useState(false);
useEffect(() => {
setSearchValue("");
setQuota(parseQuota(quotaCharacteristics[1]));
}, []);
const handleDataChange = (leftBoundary, rightBoundary) => {
@ -77,9 +83,21 @@ const SelectUsersStep = (props) => {
const goBack = () => {
cancelMigration();
setTimeout(decrementStep, 100);
setIsSaving(true);
setTimeout(() => {
setIsSaving(false);
decrementStep();
}, 1000);
};
const numberOfSelectedUsers =
checkedUsers.withEmail.length + checkedUsers.withoutEmail.length;
const totalUsedUsers =
quota.used +
checkedUsers.withEmail.filter((user) => !user.isDuplicate).length +
checkedUsers.withoutEmail.length;
return (
<Wrapper>
{withEmailUsers.length > 0 ? (
@ -92,14 +110,18 @@ const SelectUsersStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
isSaving={isSaving}
/>
{/* <UsersInfoBlock
t={t}
selectedUsers={numberOfCheckedAccounts}
totalUsers={users.length}
totalLicenceLimit={LICENSE_LIMIT}
/> */}
{quota.max && (
<UsersInfoBlock
t={t}
totalUsedUsers={totalUsedUsers}
selectedUsers={numberOfSelectedUsers}
totalUsers={withEmailUsers.length + users.withoutEmail.length}
totalLicenceLimit={quota.max}
/>
)}
<SearchInput
id="search-users-input"
@ -135,20 +157,23 @@ const SelectUsersStep = (props) => {
cancelButtonLabel={t("Common:Back")}
showReminder
displaySettings
isSaving={isSaving}
/>
)}
</Wrapper>
);
};
export default inject(({ importAccountsStore }) => {
export default inject(({ importAccountsStore, currentQuotaStore }) => {
const {
users,
withEmailUsers,
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
} = importAccountsStore;
const { quotaCharacteristics } = currentQuotaStore;
return {
users,
@ -156,5 +181,7 @@ export default inject(({ importAccountsStore }) => {
searchValue,
setSearchValue,
cancelMigration,
checkedUsers,
quotaCharacteristics,
};
})(observer(SelectUsersStep));

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