Merge pull request #738 from ONLYOFFICE/bugfix/doceditor-fix

Bugfix/doceditor fix
This commit is contained in:
Alexey Safronov 2022-07-26 17:13:03 +03:00 committed by GitHub
commit 391822a8d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
68 changed files with 352 additions and 255 deletions

View File

@ -173,7 +173,11 @@ class SettingsStore {
};
getSettings = async () => {
const newSettings = await api.settings.getSettings();
let newSettings = null;
if (window?.__ASC_INITIAL_EDITOR_STATE__?.portalSettings)
newSettings = window.__ASC_INITIAL_EDITOR_STATE__.portalSettings;
else newSettings = await api.settings.getSettings();
if (window["AscDesktopEditor"] !== undefined || this.personal) {
const dp = combineUrl(proxyURL, "/products/files/");
@ -213,7 +217,12 @@ class SettingsStore {
};
getCurrentCustomSchema = async (id) => {
this.customNames = await api.settings.getCurrentCustomSchema(id);
let customNames = null;
if (window?.__ASC_INITIAL_EDITOR_STATE__?.customNames) {
customNames = window.__ASC_INITIAL_EDITOR_STATE__.customNames;
window.__ASC_INITIAL_EDITOR_STATE__.customNames = null;
} else customNames = await api.settings.getCurrentCustomSchema(id);
this.customNames = customNames;
};
getCustomSchemaList = async () => {
@ -428,7 +437,10 @@ class SettingsStore {
}
getBuildVersionInfo = async () => {
const versionInfo = await api.settings.getBuildVersion();
let versionInfo = null;
if (window?.__ASC_INITIAL_EDITOR_STATE__?.versionInfo)
versionInfo = window.__ASC_INITIAL_EDITOR_STATE__.versionInfo;
else versionInfo = await api.settings.getBuildVersion();
this.setBuildVersionInfo(versionInfo);
};

View File

@ -12,7 +12,11 @@ class UserStore {
}
loadCurrentUser = async () => {
const user = await api.people.getUser();
let user = null;
if (window?.__ASC_INITIAL_EDITOR_STATE__?.user)
user = window.__ASC_INITIAL_EDITOR_STATE__.user;
else user = await api.people.getUser();
this.setUser(user);
};

View File

@ -55,11 +55,13 @@ const SharingDialogWrapper = inject(({ dialogsStore, filesStore }) => {
})(observer(SharingDialog));
class SharingModal extends React.Component {
static getSharingSettings = (fileId) => {
return getShareFiles([+fileId], []).then((users) =>
SharingPanel.convertSharingUsers(users)
static getSharingSettings = (fileId) =>
getShareFiles([+fileId], []).then((users) =>
this.convertSharingUsers(users)
);
};
static convertSharingUsers = (users) =>
Promise.resolve(SharingPanel.convertSharingUsers(users));
componentDidMount() {
authStore.init(true);

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimal uzunluq",
"People": "İnsanlar",
"Phone": "Nömrə",
"PreparationPortalTitle": "Portalın bərpası davam edir",
"Previous": "Əvvəlki ",
"Profile": "Profil",
"ProjectsProduct": "Layihələr",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Proqram haqqında",
"LogoutButton": ıxış edin",
"HelpCenter": "Yardım Mərkəzi"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Минимална дължина",
"People": "Хора",
"Phone": "Телефон",
"PreparationPortalTitle": "Възстановяването на портала е в ход.",
"Previous": "Предишен",
"Profile": "Профил",
"ProjectsProduct": "Проекти",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "За тази програма",
"LogoutButton": "Отписване",
"HelpCenter": "Помощен център"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimální délka",
"People": "Lidé",
"Phone": "Telefon",
"PreparationPortalTitle": "Probíhá obnova portálu",
"Previous": "Předchozí",
"Profile": "Profil",
"ProjectsProduct": "Projekty",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "O tomto programu",
"LogoutButton": "Odhlásit se",
"HelpCenter": "Centrum nápovědy"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimale Länge",
"People": "Personen",
"Phone": "Telefon",
"PreparationPortalTitle": "Wiederherstellung des Portals ist im Gange",
"Previous": "Zurück",
"Profile": "Profil",
"ProjectsProduct": "Projekte",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Über diese Software",
"LogoutButton": "Ausloggen",
"HelpCenter": "Hilfe-Center"
}
}

View File

@ -121,6 +121,7 @@
"PasswordMinimumLength": "Ελάχιστο μήκος",
"People": "Άτομα",
"Phone": "Τηλέφωνο",
"PreparationPortalTitle": "Η αποκατάσταση της πύλης βρίσκεται σε εξέλιξη",
"Previous": "Προηγούμενο",
"Profile": "Προφίλ",
"ProjectsProduct": "Έργα",
@ -172,4 +173,4 @@
"AboutCompanyTitle": "Σχετικά με αυτό το πρόγραμμα",
"LogoutButton": "Αποσύνδεση",
"HelpCenter": "Κέντρο Βοήθειας"
}
}

View File

@ -123,6 +123,7 @@
"PasswordMinimumLength": "Minimum length",
"People": "People",
"Phone": "Phone",
"PreparationPortalTitle": "Portal restoring is underway",
"Previous": "Previous",
"Profile": "Profile",
"ProjectsProduct": "Projects",
@ -176,4 +177,4 @@
"HelpCenter": "Help center",
"FeedbackAndSupport": "Feedback & Support",
"VideoGuides": "Video Guides"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Longitud mínima",
"People": "Personas",
"Phone": "Teléfono",
"PreparationPortalTitle": "Restauración de portal está en progreso",
"Previous": "Anterior",
"Profile": "Perfil",
"ProjectsProduct": "Proyectos",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Acerca del programa",
"LogoutButton": "Salir",
"HelpCenter": "Centro de ayuda"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Vähimmäispituus",
"People": "Ihmiset",
"Phone": "Puhelin",
"PreparationPortalTitle": "Portaalin palautus on käynnissä.",
"Previous": "Edellinen",
"Profile": "Profiili",
"ProjectsProduct": "Projektit",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Tietoja tästä ohjelmasta",
"LogoutButton": "Kirjaudu ulos",
"HelpCenter": "Ohjekeskus (englanniksi)"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Longueur minimale",
"People": "Personnes",
"Phone": "Téléphone",
"PreparationPortalTitle": "Restauration du portail est en cours.",
"Previous": "Précédent",
"Profile": "Profil",
"ProjectsProduct": "Projets",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "À propos de ce programme",
"LogoutButton": "Déconnexion",
"HelpCenter": "Centre d'aide"
}
}

View File

@ -121,6 +121,7 @@
"PasswordMinimumLength": "Նվազագույն երկարությունը",
"People": "Մարդիկ",
"Phone": "Հեռախոս",
"PreparationPortalTitle": "Կայքէջի վերականգնումը ընթացքի մեջ է",
"Previous": "Նախորդ",
"Profile": "Պրոֆիլ",
"ProjectsProduct": "Նախագծեր",
@ -170,4 +171,4 @@
"PaymentsTitle": "Վճարումներ",
"AboutCompanyTitle": "Այս ծրագրի մասին",
"LogoutButton": "Դուրս գալ"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Lunghezza minima",
"People": "Persone",
"Phone": "Telefono",
"PreparationPortalTitle": "Ripristino portale in corso.",
"Previous": "Indietro",
"Profile": "Profilo",
"ProjectsProduct": "Progetti",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Informazioni sul programma",
"LogoutButton": "Disconnetti",
"HelpCenter": "Centro assistenza"
}
}

View File

@ -121,6 +121,7 @@
"PasswordMinimumLength": "最小の長さ",
"People": "方々",
"Phone": "電話",
"PreparationPortalTitle": "ポータルの復元が実施中です。",
"Previous": "前",
"Profile": "プロフィール",
"ProjectsProduct": "プロジェクト",
@ -172,4 +173,4 @@
"AboutCompanyTitle": "本プログラムについて",
"LogoutButton": "サインアウト",
"HelpCenter": "ヘルプセンター"
}
}

View File

@ -121,6 +121,7 @@
"PasswordMinimumLength": "최소 길이",
"People": "사람들",
"Phone": "휴대전화",
"PreparationPortalTitle": "포털 복원이 진행 중입니다",
"Previous": "이전",
"Profile": "프로필",
"ProjectsProduct": "프로젝트",
@ -172,4 +173,4 @@
"AboutCompanyTitle": "프로그램 소개",
"LogoutButton": "로그아웃",
"HelpCenter": "도움말 센터"
}
}

View File

@ -120,6 +120,7 @@
"PasswordMinimumLength": "ຄວາມຍາວຕໍ່າສຸດ",
"People": "ຄົນ",
"Phone": "ໂທລະສັບ",
"PreparationPortalTitle": "ກໍາລັງດໍາເນີນການກູ້ຄືນພອດທັອນ",
"Previous": "ທີ່ຜ່ານມາ",
"Profile": "ຂໍ້ມູນສ່ວນໂຕ",
"ProjectsProduct": "ໂຄງການ",
@ -170,4 +171,4 @@
"PaymentsTitle": "ການຊຳລະເງິນ",
"AboutCompanyTitle": "ກ່ຽວກັບໂປແກລມນີ້",
"LogoutButton": "ອອກຈາກລະບົບ"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimālais garums",
"People": "Cilvēki",
"Phone": "Tālrunis",
"PreparationPortalTitle": "Notiek portāla atjaunošana.",
"Previous": "Iepriekšējais",
"Profile": "Profils",
"ProjectsProduct": "Projekti",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Par šo programmu",
"LogoutButton": "Izrakstīties",
"HelpCenter": "Palīdzības centrs"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimum lengte",
"People": "Mensen",
"Phone": "Telefoon",
"PreparationPortalTitle": "Portaal herstel is bezig.",
"Previous": "Vorige",
"Profile": "Profiel",
"ProjectsProduct": "Projecten",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Over dit programma",
"LogoutButton": "Uitloggen",
"HelpCenter": "Help en ondersteuning"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimalna długość",
"People": "Ludzie",
"Phone": "Telefon",
"PreparationPortalTitle": "Odtwarzanie portalu jest w toku.",
"Previous": "Poprzednia",
"Profile": "Profil",
"ProjectsProduct": "Projekty",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "O tym programie",
"LogoutButton": "Wyloguj",
"HelpCenter": "Centrum pomocy"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Comprimento mínimo",
"People": "Pessoas",
"Phone": "Telefone",
"PreparationPortalTitle": "Restauração do portal está em andamento.",
"Previous": "Anterior",
"Profile": "Perfil",
"ProjectsProduct": "Projetos",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Sobre este programa",
"LogoutButton": "Sair",
"HelpCenter": "Central de Ajuda"
}
}

View File

@ -121,6 +121,7 @@
"PasswordMinimumLength": "Comprimento mínimo",
"People": "Pessoas",
"Phone": "Telemóvel",
"PreparationPortalTitle": "A restauração do Portal está em curso",
"Previous": "Anterior",
"Profile": "Perfil",
"ProjectsProduct": "Projetos",
@ -172,4 +173,4 @@
"AboutCompanyTitle": "Sobre este programa",
"LogoutButton": "Terminar Sessão",
"HelpCenter": "Help Center"
}
}

View File

@ -121,6 +121,7 @@
"PasswordMinimumLength": "Lungimea minimă",
"People": "Persoane",
"Phone": "Telefon",
"PreparationPortalTitle": "Restaurarea portalului este în curs de desfășurare",
"Previous": "Anterior",
"Profile": "Profil",
"ProjectsProduct": "Proiecte",
@ -171,4 +172,4 @@
"PaymentsTitle": "Plăți",
"AboutCompanyTitle": "Despre aplicația",
"LogoutButton": "Deconectare"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Минимальная длина",
"People": "Люди",
"Phone": "Телефон",
"PreparationPortalTitle": "Выполняется восстановление портала",
"Previous": "Предыдущая",
"Profile": "Профиль",
"ProjectsProduct": "Проекты",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "О программе",
"LogoutButton": "Выйти",
"HelpCenter": "Справочный центр"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimálna dĺžka",
"People": "Ľudia",
"Phone": "Telefón",
"PreparationPortalTitle": "Prebieha obnova portálu.",
"Previous": "Predchádzajúci",
"Profile": "Profil",
"ProjectsProduct": "Projekty",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "O programe",
"LogoutButton": "Odhlásiť Sa",
"HelpCenter": "Centrum pomoci"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimalna dolžina",
"People": "Ljudje",
"Phone": "Telefon",
"PreparationPortalTitle": "Obnavljanje portala je v teku",
"Previous": "Prejšnji",
"Profile": "Profil",
"ProjectsProduct": "Projekti",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "O tem programu",
"LogoutButton": "Odjava",
"HelpCenter": "Center pomoči"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Minimum uzunluk",
"People": "Kişiler",
"Phone": "Telefon",
"PreparationPortalTitle": "Portal geri yükleme yapılıyor.",
"Previous": "Önceki",
"Profile": "Profil",
"ProjectsProduct": "Projeler",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Bu program hakkında",
"LogoutButton": ıkış",
"HelpCenter": "Yardım Merkezi"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Мінімальна довжина",
"People": "Люди",
"Phone": "Телефон",
"PreparationPortalTitle": "Портал відновлюється.",
"Previous": "Назад",
"Profile": "Профіль",
"ProjectsProduct": "Проекти",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Про цю програму",
"LogoutButton": "Вихід",
"HelpCenter": "Центр довідки"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "Chiều dài tối thiểu",
"People": "Người",
"Phone": "Điện thoại",
"PreparationPortalTitle": "Đang tiến hành khôi phục cổng.",
"Previous": "Trước",
"Profile": "Hồ sơ",
"ProjectsProduct": "Dự án",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "Giới thiệu về chương trình này",
"LogoutButton": "Đăng xuất",
"HelpCenter": "Trung tâm Hỗ trợ"
}
}

View File

@ -122,6 +122,7 @@
"PasswordMinimumLength": "最小长度",
"People": "人脉",
"Phone": "电话",
"PreparationPortalTitle": "门户恢复正在进行中。",
"Previous": "上一个",
"Profile": "档案",
"ProjectsProduct": "项目",
@ -173,4 +174,4 @@
"AboutCompanyTitle": "关于本计划",
"LogoutButton": "登出",
"HelpCenter": "帮助中心"
}
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portalın bərpası",
"PreparationPortalDescription": "Bərpa prosesi başa çatdıqdan sonra siz avtomatik olaraq portalınıza yönləndiriləcəksiniz.",
"PreparationPortalTitle": "Portalın bərpası davam edir"
}
"PreparationPortalDescription": "Bərpa prosesi başa çatdıqdan sonra siz avtomatik olaraq portalınıza yönləndiriləcəksiniz."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Възстановяване на портала",
"PreparationPortalDescription": "След като процесът на възстановяване приключи, ще бъдете автоматично пренасочени към портала си.",
"PreparationPortalTitle": "Възстановяването на портала е в ход."
}
"PreparationPortalDescription": "След като процесът на възстановяване приключи, ще бъдете автоматично пренасочени към портала си."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Obnovení portálu",
"PreparationPortalDescription": "Po ukončení procesu obnovy, budete automaticky přesměrováni na Váš portál.",
"PreparationPortalTitle": "Probíhá obnova portálu"
}
"PreparationPortalDescription": "Po ukončení procesu obnovy, budete automaticky přesměrováni na Váš portál."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Wiederherstellung des Portals",
"PreparationPortalDescription": "Nach Abschluss des Wiederherstellungsprozesses werden Sie automatisch an Ihr Portal umgeleitet.",
"PreparationPortalTitle": "Wiederherstellung des Portals ist im Gange"
}
"PreparationPortalDescription": "Nach Abschluss des Wiederherstellungsprozesses werden Sie automatisch an Ihr Portal umgeleitet."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Επαναφορά πύλης",
"PreparationPortalDescription": "Μόλις ολοκληρωθεί η διαδικασία επαναφοράς, θα μεταφερθείτε αυτόματα στην πύλη σας.",
"PreparationPortalTitle": "Η αποκατάσταση της πύλης βρίσκεται σε εξέλιξη"
}
"PreparationPortalDescription": "Μόλις ολοκληρωθεί η διαδικασία επαναφοράς, θα μεταφερθείτε αυτόματα στην πύλη σας."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portal restoring",
"PreparationPortalDescription": "Once the restore process is over, you'll be automatically redirected to your portal.",
"PreparationPortalTitle": "Portal restoring is underway"
}
"PreparationPortalDescription": "Once the restore process is over, you'll be automatically redirected to your portal."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Restauración de portal",
"PreparationPortalDescription": "Una vez terminado el proceso de restauración, usted será redirigido a su portal.",
"PreparationPortalTitle": "Restauración de portal está en progreso"
}
"PreparationPortalDescription": "Una vez terminado el proceso de restauración, usted será redirigido a su portal."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portaalin palauttaminen",
"PreparationPortalDescription": "Siinä vaiheessa kun palautuksen prosessi on ohi, sinut siirretään automaattisesti portaaliisi.",
"PreparationPortalTitle": "Portaalin palautus on käynnissä."
}
"PreparationPortalDescription": "Siinä vaiheessa kun palautuksen prosessi on ohi, sinut siirretään automaattisesti portaaliisi."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Restauration du portail",
"PreparationPortalDescription": "Une fois le processus de restauration est terminé, vous serez automatiquement redirigé vers votre portail.",
"PreparationPortalTitle": "Restauration du portail est en cours."
}
"PreparationPortalDescription": "Une fois le processus de restauration est terminé, vous serez automatiquement redirigé vers votre portail."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Կայքէջի վերականգնում",
"PreparationPortalDescription": "Վերականգնման գործընթացն ավարտվելուց հետո Դուք ավտոմատ կերպով կվերահղվեք Ձեր կայքէջ:",
"PreparationPortalTitle": "Կայքէջի վերականգնումը ընթացքի մեջ է"
}
"PreparationPortalDescription": "Վերականգնման գործընթացն ավարտվելուց հետո Դուք ավտոմատ կերպով կվերահղվեք Ձեր կայքէջ:"
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Ripristino portale",
"PreparationPortalDescription": "Una volta completato il ripristino, sarai automaticamente reindirizzato al tuo portale.",
"PreparationPortalTitle": "Ripristino portale in corso."
}
"PreparationPortalDescription": "Una volta completato il ripristino, sarai automaticamente reindirizzato al tuo portale."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "ポータルがリストア中",
"PreparationPortalDescription": "復元過程が完了されると、自動的にポータルに移動されるようになります。",
"PreparationPortalTitle": "ポータルの復元が実施中です。"
}
"PreparationPortalDescription": "復元過程が完了されると、自動的にポータルに移動されるようになります。"
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "포털 복원 중",
"PreparationPortalDescription": "복원 과정이 끝나면 포털로 자동으로 리디렉션됩니다.",
"PreparationPortalTitle": "포털 복원이 진행 중입니다"
}
"PreparationPortalDescription": "복원 과정이 끝나면 포털로 자동으로 리디렉션됩니다."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "ການກູ້ຄືນພອດທັອນ",
"PreparationPortalDescription": "ເມື່ອຂະບວນການກູ້ຄືນສິ້ນສຸດລົງ, ທ່ານຈະຖືກໂອນໄປຫາພອດທັອນຂອງທ່ານໂດຍອັດຕະໂນມັດ.",
"PreparationPortalTitle": "ກໍາລັງດໍາເນີນການກູ້ຄືນພອດທັອນ"
}
"PreparationPortalDescription": "ເມື່ອຂະບວນການກູ້ຄືນສິ້ນສຸດລົງ, ທ່ານຈະຖືກໂອນໄປຫາພອດທັອນຂອງທ່ານໂດຍອັດຕະໂນມັດ."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portāla atjaunošana",
"PreparationPortalDescription": "Kad atjaunošanas process būs pabeigts, jūs automātiski pārsūtīs uz jūsu portālu.",
"PreparationPortalTitle": "Notiek portāla atjaunošana."
}
"PreparationPortalDescription": "Kad atjaunošanas process būs pabeigts, jūs automātiski pārsūtīs uz jūsu portālu."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portaal herstellen",
"PreparationPortalDescription": "Zodra het herstelproces voorbij is, wordt u automatisch doorgestuurd naar uw portaal.",
"PreparationPortalTitle": "Portaal herstel is bezig."
}
"PreparationPortalDescription": "Zodra het herstelproces voorbij is, wordt u automatisch doorgestuurd naar uw portaal."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Odzyskiwanie portalu",
"PreparationPortalDescription": "Po zakończeniu procesu przywracania zostanie automatycznie przekierowany do portalu.",
"PreparationPortalTitle": "Odtwarzanie portalu jest w toku."
}
"PreparationPortalDescription": "Po zakończeniu procesu przywracania zostanie automatycznie przekierowany do portalu."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Restauração de portais",
"PreparationPortalDescription": "Assim que o processo de restauração for concluído, você será automaticamente redirecionado para seu portal.",
"PreparationPortalTitle": "Restauração do portal está em andamento."
}
"PreparationPortalDescription": "Assim que o processo de restauração for concluído, você será automaticamente redirecionado para seu portal."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portal em Restauração",
"PreparationPortalDescription": "Uma vez que o processo de restauração tenha terminado, será automaticamente redirecionado para o seu portal.",
"PreparationPortalTitle": "A restauração do Portal está em curso"
}
"PreparationPortalDescription": "Uma vez que o processo de restauração tenha terminado, será automaticamente redirecionado para o seu portal."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Restaurarea portalului",
"PreparationPortalDescription": "După finalizarea procesului de restaurare, veți fi redirecționat automat către portalul dvs.",
"PreparationPortalTitle": "Restaurarea portalului este în curs de desfășurare"
}
"PreparationPortalDescription": "După finalizarea procesului de restaurare, veți fi redirecționat automat către portalul dvs."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Восстановление портала",
"PreparationPortalDescription": "Когда восстановление завершится, Вы будете автоматически перенаправлены на ваш портал.",
"PreparationPortalTitle": "Выполняется восстановление портала"
}
"PreparationPortalDescription": "Когда восстановление завершится, Вы будете автоматически перенаправлены на ваш портал."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Obnovenie portálu",
"PreparationPortalDescription": "Po dokončení procesu obnovenia budete automaticky presmerovaný na Váš portál.",
"PreparationPortalTitle": "Prebieha obnova portálu."
}
"PreparationPortalDescription": "Po dokončení procesu obnovenia budete automaticky presmerovaný na Váš portál."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Obnavljanje portala",
"PreparationPortalDescription": "Ko bo postopek obnavljanja končan, boste samodejno preusmerjeni na svoj portal.",
"PreparationPortalTitle": "Obnavljanje portala je v teku"
}
"PreparationPortalDescription": "Ko bo postopek obnavljanja končan, boste samodejno preusmerjeni na svoj portal."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Portal geri yükleme",
"PreparationPortalDescription": "Geri yükleme süreci tamamlandığında, otomatik olarak portalınıza yönlendirileceksiniz.",
"PreparationPortalTitle": "Portal geri yükleme yapılıyor."
}
"PreparationPortalDescription": "Geri yükleme süreci tamamlandığında, otomatik olarak portalınıza yönlendirileceksiniz."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Відновлення порталу",
"PreparationPortalDescription": "Після завершення процесу відновлення ви автоматично перейдете на ваш портал.",
"PreparationPortalTitle": "Портал відновлюється."
}
"PreparationPortalDescription": "Після завершення процесу відновлення ви автоматично перейдете на ваш портал."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "Đang khôi phục cổng thông tin",
"PreparationPortalDescription": "Khi quá trình khôi phục kết thúc, bạn sẽ tự động được chuyển hướng đến cổng thông tin của bạn.",
"PreparationPortalTitle": "Đang tiến hành khôi phục cổng."
}
"PreparationPortalDescription": "Khi quá trình khôi phục kết thúc, bạn sẽ tự động được chuyển hướng đến cổng thông tin của bạn."
}

View File

@ -1,5 +1,4 @@
{
"PortalRestoring": "门户恢复",
"PreparationPortalDescription": "一旦恢复过程结束,您将自动重定向到您的门户。",
"PreparationPortalTitle": "门户恢复正在进行中。"
}
"PreparationPortalDescription": "一旦恢复过程结束,您将自动重定向到您的门户。"
}

View File

@ -190,7 +190,7 @@ class PreparationPortal extends React.Component {
return (
<StyledPreparationPortal>
<ErrorContainer
headerText={withoutHeader ? "" : t("PreparationPortalTitle")}
headerText={withoutHeader ? "" : t("Common:PreparationPortalTitle")}
style={style}
>
<StyledBodyPreparationPortal
@ -236,7 +236,9 @@ const PreparationPortalWrapper = inject(({ backup }) => {
return {
multiplicationFactor,
};
})(withTranslation("PreparationPortal")(observer(PreparationPortal)));
})(
withTranslation(["PreparationPortal", "Common"])(observer(PreparationPortal))
);
PreparationPortal.propTypes = {
withoutHeader: PropTypes.bool,

View File

@ -32,7 +32,8 @@ const App = ({ initialLanguage, initialI18nStoreASC, ...rest }) => {
useEffect(() => {
const tempElm = document.getElementById("loader");
if (tempElm && !rest.error && !rest.needLoader && rest.docApiUrl) {
if (tempElm && !rest.error && !rest.needLoader && rest?.config?.editorUrl) {
tempElm.outerHTML = "";
}
@ -42,7 +43,6 @@ const App = ({ initialLanguage, initialI18nStoreASC, ...rest }) => {
}, []);
const onError = () => {
console.log("Error");
window.open(
combineUrl(
AppServerConfig.proxyURL,

View File

@ -1,8 +1,4 @@
import React from "react";
// import AppLoader from "@appserver/common/components/AppLoader";
// import ErrorBoundary from "@appserver/common/components/ErrorBoundary";
// import Error520 from "studio/Error520";
// import Error404 from "studio/Error404";
export function loadComponent(scope, module) {
return async () => {

View File

@ -14,11 +14,12 @@ import {
getEditHistory,
updateFile,
checkFillFormDraft,
convertFile,
} from "@appserver/common/api/files";
import { EditorWrapper } from "../components/StyledEditor";
import { useTranslation } from "react-i18next";
import withDialogs from "../helpers/withDialogs";
import { canConvert, convertDocumentUrl } from "../helpers/utils";
import { canConvert } from "../helpers/utils";
import { assign } from "@appserver/common/utils";
toast.configure();
@ -73,20 +74,15 @@ function Editor({
onSDKRequestCompareFile,
selectFolderDialog,
onSDKRequestSaveAs,
isFileDialogVisible,
isFolderDialogVisible,
isDesktopEditor,
initDesktop,
view,
preparationPortalDialog,
mfReady,
...rest
fileId,
url,
filesSettings,
}) {
const [fileInfo, setFileInfo] = useState(rest.fileInfo);
const [url, setUrl] = useState(rest.url);
const [fileId, setFileId] = useState(rest.fileId);
const [version, setVersion] = useState(rest.version);
const fileInfo = config?.file;
const { t } = useTranslation(["Editor", "Common"]);
useEffect(() => {
@ -147,7 +143,7 @@ function Editor({
url.indexOf("#message/") > -1 &&
fileInfo &&
fileInfo?.fileExst &&
canConvert(fileInfo.fileExst)
canConvert(fileInfo.fileExst, filesSettings)
) {
showDocEditorMessage(url);
}
@ -163,6 +159,11 @@ function Editor({
document.location.reload();
};
const convertDocumentUrl = async () => {
const convert = await convertFile(fileId, null, true);
return convert && convert[0]?.result;
};
const showDocEditorMessage = async (url) => {
const result = await convertDocumentUrl();
const splitUrl = url.split("#message/");
@ -171,11 +172,6 @@ function Editor({
const newUrl = `${result.webUrl}#message/${splitUrl[1]}`;
history.pushState({}, null, newUrl);
setFileInfo(result);
setUrl(newUrl);
setFileId(fileId);
setVersion(version);
}
};
@ -207,7 +203,7 @@ function Editor({
if (index) {
let convertUrl = url.substring(0, index);
if (canConvert(fileInfo.fileExst)) {
if (canConvert(fileInfo.fileExst, filesSettings)) {
const newUrl = await convertDocumentUrl();
if (newUrl) {
convertUrl = newUrl.webUrl;
@ -412,7 +408,7 @@ function Editor({
docSaved = !event.data;
throttledChangeTitle();
}; //+++
};
const onSDKAppReady = () => {
console.log("ONLYOFFICE Document Editor is ready");
@ -567,7 +563,6 @@ function Editor({
{sharingDialog}
{selectFileDialog}
{selectFolderDialog}
{preparationPortalDialog}
<Toast />
</EditorWrapper>
);

View File

@ -0,0 +1,37 @@
import React from "react";
import DynamicComponent from "./DynamicComponent";
import { FILES_REMOTE_ENTRY_URL, FILES_SCOPE } from "../helpers/constants";
const SelectFileDialog = ({
isVisible,
mfReady,
onCloseFileDialog,
onSelectFile,
filesListTitle,
settings,
successAuth,
...rest
}) => {
return (
(mfReady && isVisible && successAuth && (
<DynamicComponent
{...rest}
system={{
scope: FILES_SCOPE,
url: FILES_REMOTE_ENTRY_URL,
module: "./SelectFileDialog",
}}
resetTreeFolders
foldersType="exceptPrivacyTrashFolders"
isPanelVisible={isVisible}
onClose={onCloseFileDialog}
onSelectFile={onSelectFile}
filesListTitle={filesListTitle}
settings={settings}
/>
)) ||
null
);
};
export default SelectFileDialog;

View File

@ -0,0 +1,68 @@
import React from "react";
import DynamicComponent from "./DynamicComponent";
import { FILES_REMOTE_ENTRY_URL, FILES_SCOPE } from "../helpers/constants";
import Text from "@appserver/components/text";
import TextInput from "@appserver/components/text-input";
import Checkbox from "@appserver/components/checkbox";
import { StyledSelectFolder } from "../components/StyledEditor";
import { useTranslation } from "react-i18next";
const SelectFolderDialog = ({
successAuth,
folderId,
isVisible,
onCloseFolderDialog,
onClickSaveSelectFolder,
titleSelectorFolder,
onChangeInput,
extension,
onClickCheckbox,
mfReady,
openNewTab,
}) => {
const { t } = useTranslation(["Editor", "Common"]);
return (
(mfReady && isVisible && successAuth && (
<DynamicComponent
system={{
scope: FILES_SCOPE,
url: FILES_REMOTE_ENTRY_URL,
module: "./SelectFolderDialog",
}}
needProxy
folderId={folderId}
isPanelVisible={isVisible}
onClose={onCloseFolderDialog}
foldersType="exceptSortedByTags"
onSave={onClickSaveSelectFolder}
isDisableButton={!titleSelectorFolder.trim()}
header={
<StyledSelectFolder>
<Text className="editor-select-folder_text">{t("FileName")}</Text>
<TextInput
className="editor-select-folder_text-input"
scale
onChange={onChangeInput}
value={titleSelectorFolder}
/>
</StyledSelectFolder>
}
{...(extension !== "fb2" && {
footer: (
<StyledSelectFolder>
<Checkbox
className="editor-select-folder_checkbox"
label={t("OpenSavedDocument")}
onChange={onClickCheckbox}
isChecked={openNewTab}
/>
</StyledSelectFolder>
),
})}
/>
)) ||
null
);
};
export default SelectFolderDialog;

View File

@ -0,0 +1,34 @@
import React from "react";
import DynamicComponent from "./DynamicComponent";
import { FILES_REMOTE_ENTRY_URL, FILES_SCOPE } from "../helpers/constants";
const SharingDialog = ({
isVisible,
fileInfo,
onCancel,
loadUsersRightsList,
filesSettings,
mfReady,
}) => {
return (
(mfReady && isVisible && (
<DynamicComponent
className="dynamic-sharing-dialog"
system={{
scope: FILES_SCOPE,
url: FILES_REMOTE_ENTRY_URL,
module: "./SharingDialog",
name: "SharingDialog",
}}
isVisible={isVisible}
sharingObject={fileInfo}
onCancel={onCancel}
onSuccess={loadUsersRightsList}
settings={filesSettings}
/>
)) ||
null
);
};
export default SharingDialog;

View File

@ -1,4 +1,3 @@
import { convertFile } from "@appserver/common/api/files";
import pkg from "../../../package.json";
export const canConvert = (extension, filesSettings) => {
@ -7,11 +6,6 @@ export const canConvert = (extension, filesSettings) => {
return result === -1 ? false : true;
};
export const convertDocumentUrl = async () => {
const convert = await convertFile(fileId, null, true);
return convert && convert[0]?.result;
};
export const initI18n = (initialI18nStoreASC) => {
if (!initialI18nStoreASC || window.i18n) return;

View File

@ -1,17 +1,9 @@
import React, { useState, useEffect } from "react";
import DynamicComponent from "../components/DynamicComponent";
import { getPresignedUri } from "@appserver/common/api/files";
import {
FILES_REMOTE_ENTRY_URL,
FILES_SCOPE,
STUDIO_SCOPE,
STUDIO_REMOTE_ENTRY_URL,
} from "./constants";
import Text from "@appserver/components/text";
import TextInput from "@appserver/components/text-input";
import Checkbox from "@appserver/components/checkbox";
import { StyledSelectFolder } from "../components/StyledEditor";
import { useTranslation } from "react-i18next";
import SharingDialog from "../components/SharingDialog";
import SelectFileDialog from "../components/SelectFileDialog";
import SelectFolderDialog from "../components/SelectFolderDialog";
const insertImageAction = "imageFileType";
const mailMergeAction = "mailMergeFileType";
@ -28,14 +20,11 @@ const withDialogs = (WrappedComponent) => {
const [urlSelectorFolder, setUrlSelectorFolder] = useState("");
const [extension, setExtension] = useState();
const [openNewTab, setNewOpenTab] = useState(false);
const [
preparationPortalDialogVisible,
setPreparationPortalDialogVisible,
] = useState(false);
const { t } = useTranslation(["Editor", "Common"]);
const { fileInfo, fileId, mfReady } = props;
const { config, fileId, mfReady, sharingSettings } = props;
const fileInfo = config?.file;
useEffect(() => {
if (window.authStore) {
@ -52,7 +41,8 @@ const withDialogs = (WrappedComponent) => {
data: "backup-restore",
});
socketHelper.on("restore-backup", () => {
setPreparationPortalDialogVisible(true);
const message = t("Common:PreparationPortalTitle");
window.docEditor.showMessage(message);
});
};
@ -65,7 +55,7 @@ const withDialogs = (WrappedComponent) => {
};
const loadUsersRightsList = () => {
window.SharingDialog.getSharingSettings(fileId).then(
window.SharingDialog.convertSharingUsers(sharingSettings).then(
(sharingSettings) => {
window.docEditor.setSharingSettings({
sharingSettings,
@ -202,7 +192,7 @@ const withDialogs = (WrappedComponent) => {
if (savingInfo) {
const convertedInfo = savingInfo.split(": ").pop();
docEditor.showMessage(convertedInfo);
window.docEditor.showMessage(convertedInfo);
}
};
@ -234,89 +224,42 @@ const withDialogs = (WrappedComponent) => {
setTitleSelectorFolder(e.target.value);
};
const sharingDialog = mfReady && (
<DynamicComponent
className="dynamic-sharing-dialog"
system={{
scope: FILES_SCOPE,
url: FILES_REMOTE_ENTRY_URL,
module: "./SharingDialog",
name: "SharingDialog",
}}
const sharingDialog = (
<SharingDialog
mfReady={mfReady}
isVisible={isVisible}
sharingObject={fileInfo}
fileInfo={fileInfo}
onCancel={onCancel}
onSuccess={loadUsersRightsList}
settings={props.filesSettings}
loadUsersRightsList={loadUsersRightsList}
filesSettings={props.filesSettings}
/>
);
const selectFileDialog = mfReady && props.successAuth && (
<DynamicComponent
system={{
scope: FILES_SCOPE,
url: FILES_REMOTE_ENTRY_URL,
module: "./SelectFileDialog",
}}
resetTreeFolders
foldersType="exceptPrivacyTrashFolders"
isPanelVisible={isFileDialogVisible}
const selectFileDialog = (
<SelectFileDialog
isVisible={isFileDialogVisible}
onSelectFile={onSelectFile}
onClose={onCloseFileDialog}
onCloseFileDialog={onCloseFileDialog}
{...fileTypeDetection()}
filesListTitle={selectFilesListTitle()}
settings={props.filesSettings}
mfReady={mfReady}
successAuth={props.successAuth}
/>
);
const selectFolderDialog = mfReady && props.successAuth && (
<DynamicComponent
system={{
scope: FILES_SCOPE,
url: FILES_REMOTE_ENTRY_URL,
module: "./SelectFolderDialog",
}}
needProxy
const selectFolderDialog = (
<SelectFolderDialog
successAuth={props.successAuth}
folderId={fileInfo?.folderId}
isPanelVisible={isFolderDialogVisible}
onClose={onCloseFolderDialog}
foldersType="exceptSortedByTags"
onSave={onClickSaveSelectFolder}
isDisableButton={!titleSelectorFolder.trim()}
header={
<StyledSelectFolder>
<Text className="editor-select-folder_text">{t("FileName")}</Text>
<TextInput
className="editor-select-folder_text-input"
scale
onChange={onChangeInput}
value={titleSelectorFolder}
/>
</StyledSelectFolder>
}
{...(extension !== "fb2" && {
footer: (
<StyledSelectFolder>
<Checkbox
className="editor-select-folder_checkbox"
label={t("OpenSavedDocument")}
onChange={onClickCheckbox}
isChecked={openNewTab}
/>
</StyledSelectFolder>
),
})}
/>
);
const preparationPortalDialog = mfReady && (
<DynamicComponent
system={{
scope: STUDIO_SCOPE,
url: STUDIO_REMOTE_ENTRY_URL,
module: "./PreparationPortalDialog",
}}
visible={preparationPortalDialogVisible}
isVisible={isFolderDialogVisible}
onCloseFolderDialog={onCloseFolderDialog}
onClickSaveSelectFolder={onClickSaveSelectFolder}
titleSelectorFolder={titleSelectorFolder}
onChangeInput={onChangeInput}
onClickCheckbox={onClickCheckbox}
openNewTab={openNewTab}
mfReady={mfReady}
/>
);
@ -335,7 +278,6 @@ const withDialogs = (WrappedComponent) => {
selectFolderDialog={selectFolderDialog}
onSDKRequestSaveAs={onSDKRequestSaveAs}
isFolderDialogVisible={isFolderDialogVisible}
preparationPortalDialog={preparationPortalDialog}
/>
);
};

View File

@ -2,14 +2,17 @@ import path from "path";
import fs from "fs";
import { initSSR } from "@appserver/common/api/client";
import { getUser } from "@appserver/common/api/people";
import { getSettings } from "@appserver/common/api/settings";
import {
getSettings,
getBuildVersion,
getCurrentCustomSchema,
} from "@appserver/common/api/settings";
import combineUrl from "@appserver/common/utils/combineUrl";
import { AppServerConfig } from "@appserver/common/constants";
import {
getDocServiceUrl,
getFileInfo,
openEdit,
getSettingsFiles,
getShareFiles,
} from "@appserver/common/api/files";
import pkg from "../../../../package.json";
@ -60,10 +63,18 @@ export const initDocEditor = async (req) => {
const view = url.indexOf("action=view") !== -1;
const fileVersion = version || null;
const [user, settings, filesSettings] = await Promise.all([
const [
user,
settings,
filesSettings,
versionInfo,
customNames,
] = await Promise.all([
getUser(),
getSettings(),
getSettingsFiles(),
getBuildVersion(),
getCurrentCustomSchema("Common"),
]);
const successAuth = !!user;
@ -80,13 +91,11 @@ export const initDocEditor = async (req) => {
return { error };
}
let [config, docApiUrl, fileInfo] = await Promise.all([
openEdit(fileId, fileVersion, doc, view),
getDocServiceUrl(),
getFileInfo(fileId),
]);
const config = await openEdit(fileId, fileVersion, doc, view);
const isSharingAccess = fileInfo && fileInfo.canShare;
const sharingSettings = await getShareFiles([+fileId], []);
const isSharingAccess = config?.file && config?.file?.canShare;
if (view) {
config.editorConfig.mode = "view";
@ -95,8 +104,6 @@ export const initDocEditor = async (req) => {
const actionLink = config?.editorConfig?.actionLink || null;
return {
fileInfo,
docApiUrl,
config,
personal,
successAuth,
@ -109,6 +116,10 @@ export const initDocEditor = async (req) => {
fileId,
view,
filesSettings,
sharingSettings,
portalSettings: settings,
versionInfo,
customNames,
};
} catch (err) {
error = { errorMessage: typeof err === "string" ? err : err.message };

View File

@ -10,8 +10,8 @@ export default function template(
assets
) {
const { title } = pkg;
const { docApiUrl, error } = initialEditorState;
const { error } = initialEditorState;
const editorUrl = initialEditorState?.config?.editorUrl;
const faviconHref = getFavicon(initialEditorState?.config?.documentType);
let clientScripts =
@ -20,9 +20,9 @@ export default function template(
: "";
const editorApiScript =
error || !docApiUrl
error || !editorUrl
? ""
: `<script type='text/javascript' id='scripDocServiceAddress' src="${docApiUrl}" async></script>`;
: `<script type='text/javascript' id='scripDocServiceAddress' src="${editorUrl}" async></script>`;
if (!IS_DEVELOPMENT) {
const productionBundleKeys = getScripts(assets);