diff --git a/packages/client/public/locales/en/Settings.json b/packages/client/public/locales/en/Settings.json
index 8e4dfe6377..f68a4c8cf2 100644
--- a/packages/client/public/locales/en/Settings.json
+++ b/packages/client/public/locales/en/Settings.json
@@ -64,6 +64,7 @@
"CustomTitlesText": "Welcome Page",
"CustomTitlesWelcome": "Welcome Page Settings",
"DataBackup": "Data backup",
+ "DataImport": "Data import",
"Deactivate": "Deactivate",
"DeactivateOrDeletePortal": "Deactivate or delete space.",
"DeleteDocSpace": "Delete DocSpace",
diff --git a/packages/client/public/locales/ru/Settings.json b/packages/client/public/locales/ru/Settings.json
index 43c2ebf831..9d3aa9a613 100644
--- a/packages/client/public/locales/ru/Settings.json
+++ b/packages/client/public/locales/ru/Settings.json
@@ -64,6 +64,7 @@
"CustomTitlesText": "странице приветствия",
"CustomTitlesWelcome": "Настройки страницы приветствия",
"DataBackup": "Резервное копирование данных",
+ "DataImport": "Перенос данных",
"Deactivate": "Деактивировать",
"DeactivateOrDeletePortal": "Деактивировать или удалить портал.",
"DeleteDocSpace": "Удалить DocSpace",
diff --git a/packages/client/src/pages/PortalSettings/Layout/Article/Body/index.js b/packages/client/src/pages/PortalSettings/Layout/Article/Body/index.js
index dda679f475..96e0eb8923 100644
--- a/packages/client/src/pages/PortalSettings/Layout/Article/Body/index.js
+++ b/packages/client/src/pages/PortalSettings/Layout/Article/Body/index.js
@@ -57,6 +57,8 @@ const getTreeItems = (data, path, t) => {
return t("SingleSignOn");
case "DeveloperTools":
return t("DeveloperTools");
+ case "DataImport":
+ return t("DataImport");
default:
throw new Error("Unexpected translation key");
}
@@ -173,17 +175,21 @@ const ArticleBodyContent = (props) => {
setSelectedKeys(["4-0"]);
}
- if (location.pathname.includes("developer")) {
+ if (location.pathname.includes("migration")) {
setSelectedKeys(["5-0"]);
}
- if (location.pathname.includes("delete-data")) {
+ if (location.pathname.includes("developer")) {
setSelectedKeys(["6-0"]);
}
- if (location.pathname.includes("payments")) {
+ if (location.pathname.includes("delete-data")) {
setSelectedKeys(["7-0"]);
}
+
+ if (location.pathname.includes("payments")) {
+ setSelectedKeys(["8-0"]);
+ }
}
}, [tReady, setIsLoadedArticleBody, location.pathname, selectedKeys]);
@@ -244,6 +250,8 @@ const ArticleBodyContent = (props) => {
return t("PortalDeletion");
case "DeveloperTools":
return t("DeveloperTools");
+ case "DataImport":
+ return t("DataImport");
default:
throw new Error("Unexpected translation key");
}
@@ -285,7 +293,7 @@ const ArticleBodyContent = (props) => {
isActive={item.key === selectedKeys[0][0]}
onClick={() => onSelect(item.key)}
folderId={item.id}
- style={{ marginTop: `${item.key.includes(7) ? "16px" : "0"}` }}
+ style={{ marginTop: `${item.key.includes(8) ? "16px" : "0"}` }}
/>
);
});
diff --git a/packages/client/src/pages/PortalSettings/categories/data-import/index.js b/packages/client/src/pages/PortalSettings/categories/data-import/index.js
new file mode 100644
index 0000000000..e8b5689295
--- /dev/null
+++ b/packages/client/src/pages/PortalSettings/categories/data-import/index.js
@@ -0,0 +1,4 @@
+const DataImport = () => {
+ return
Data Import Page
;
+};
+export default DataImport;
diff --git a/packages/client/src/pages/PortalSettings/utils/settingsTree.js b/packages/client/src/pages/PortalSettings/utils/settingsTree.js
index 4ee7be4cba..409d55d071 100644
--- a/packages/client/src/pages/PortalSettings/utils/settingsTree.js
+++ b/packages/client/src/pages/PortalSettings/utils/settingsTree.js
@@ -7,6 +7,7 @@ import DataManagementIconUrl from "PUBLIC_DIR/images/data-management.react.svg?u
import RestoreIconUrl from "PUBLIC_DIR/images/restore.react.svg?url";
import TrashIconUrl from "PUBLIC_DIR/images/trash.react.svg?url";
import DeveloperReactSvgUrl from "PUBLIC_DIR/images/catalog.developer.react.svg?url";
+import DataImportReactSvgUrl from "PUBLIC_DIR/images/catalog.import.react.svg?url";
/**
* Array for generation current settings tree.
@@ -281,8 +282,26 @@ export const settingsTree = [
],
},
{
- id: "portal-settings_catalog-developer-tools",
+ id: "portal-settings_catalog-migration",
key: "5",
+ icon: DataImportReactSvgUrl,
+ link: "migration",
+ tKey: "DataImport",
+ isHeader: true,
+ children: [
+ {
+ id: "portal-settings_catalog-data-migration",
+ key: "5-0",
+ icon: "",
+ link: "data-import",
+ tKey: "DataImport",
+ isCategory: true,
+ },
+ ],
+ },
+ {
+ id: "portal-settings_catalog-developer-tools",
+ key: "6",
icon: DeveloperReactSvgUrl,
link: "developer-tools",
tKey: "DeveloperTools",
@@ -290,7 +309,7 @@ export const settingsTree = [
children: [
{
id: "portal-settings_catalog-javascript-sdk",
- key: "5-0",
+ key: "6-0",
icon: "",
link: "javascript-sdk",
tKey: "DeveloperTools",
@@ -298,7 +317,7 @@ export const settingsTree = [
},
{
id: "portal-settings_catalog-webhooks",
- key: "5-1",
+ key: "6-1",
icon: "",
link: "webhooks",
tKey: "DeveloperTools",
@@ -308,21 +327,21 @@ export const settingsTree = [
},
{
id: "portal-settings_catalog-delete",
- key: "6",
+ key: "7",
icon: TrashIconUrl,
link: "delete-data",
tKey: "PortalDeletion",
isHeader: true,
children: [
{
- key: "6-0",
+ key: "7-0",
icon: "",
link: "deletion",
tKey: "PortalDeletion",
isCategory: true,
},
{
- key: "6-1",
+ key: "7-1",
icon: "",
link: "deactivation",
tKey: "PortalDeactivation",
@@ -332,7 +351,7 @@ export const settingsTree = [
},
{
id: "portal-settings_catalog-payments",
- key: "7",
+ key: "8",
icon: PaymentIconUrl,
link: "payments",
tKey: "Common:PaymentsTitle",
@@ -340,7 +359,7 @@ export const settingsTree = [
children: [
{
id: "portal-settings_catalog-portal-payments",
- key: "7-0",
+ key: "8-0",
icon: "",
link: "portal-payments",
tKey: "Common:PaymentsTitle",
diff --git a/packages/client/src/routes/portalSettings.js b/packages/client/src/routes/portalSettings.js
index 09d42b06a7..8e5e38770b 100644
--- a/packages/client/src/routes/portalSettings.js
+++ b/packages/client/src/routes/portalSettings.js
@@ -12,65 +12,100 @@ import { generalRoutes } from "./general";
const PortalSettings = loadable(() => import("../pages/PortalSettings"));
const CustomizationSettings = loadable(() =>
- import("../pages/PortalSettings/categories/common/index.js"),
+ import("../pages/PortalSettings/categories/common/index.js")
);
const LanguageAndTimeZoneSettings = loadable(() =>
- import("../pages/PortalSettings/categories/common/Customization/language-and-time-zone"),
+ import(
+ "../pages/PortalSettings/categories/common/Customization/language-and-time-zone"
+ )
);
const WelcomePageSettings = loadable(() =>
- import("../pages/PortalSettings/categories/common/Customization/welcome-page-settings"),
+ import(
+ "../pages/PortalSettings/categories/common/Customization/welcome-page-settings"
+ )
);
const DNSSettings = loadable(() =>
- import("../pages/PortalSettings/categories/common/Customization/dns-settings"),
+ import("../pages/PortalSettings/categories/common/Customization/dns-settings")
);
const PortalRenaming = loadable(() =>
- import("../pages/PortalSettings/categories/common/Customization/portal-renaming"),
+ import(
+ "../pages/PortalSettings/categories/common/Customization/portal-renaming"
+ )
);
const WhiteLabel = loadable(() =>
- import("../pages/PortalSettings/categories/common/Branding/whitelabel"),
+ import("../pages/PortalSettings/categories/common/Branding/whitelabel")
);
const SecuritySettings = loadable(() =>
- import("../pages/PortalSettings/categories/security/index.js"),
+ import("../pages/PortalSettings/categories/security/index.js")
);
const TfaPage = loadable(() =>
- import("../pages/PortalSettings/categories/security/access-portal/tfa"),
+ import("../pages/PortalSettings/categories/security/access-portal/tfa")
);
const PasswordStrengthPage = loadable(() =>
- import("../pages/PortalSettings/categories/security/access-portal/passwordStrength"),
+ import(
+ "../pages/PortalSettings/categories/security/access-portal/passwordStrength"
+ )
);
const TrustedMailPage = loadable(() =>
- import("../pages/PortalSettings/categories/security/access-portal/trustedMail"),
+ import(
+ "../pages/PortalSettings/categories/security/access-portal/trustedMail"
+ )
);
const IpSecurityPage = loadable(() =>
- import("../pages/PortalSettings/categories/security/access-portal/ipSecurity"),
+ import("../pages/PortalSettings/categories/security/access-portal/ipSecurity")
);
const AdminMessagePage = loadable(() =>
- import("../pages/PortalSettings/categories/security/access-portal/adminMessage"),
+ import(
+ "../pages/PortalSettings/categories/security/access-portal/adminMessage"
+ )
);
const SessionLifetimePage = loadable(() =>
- import("../pages/PortalSettings/categories/security/access-portal/sessionLifetime"),
+ import(
+ "../pages/PortalSettings/categories/security/access-portal/sessionLifetime"
+ )
+);
+const Integration = loadable(() =>
+ import("../pages/PortalSettings/categories/integration")
+);
+const Payments = loadable(() =>
+ import("../pages/PortalSettings/categories/payments")
);
-const Integration = loadable(() => import("../pages/PortalSettings/categories/integration"));
-const Payments = loadable(() => import("../pages/PortalSettings/categories/payments"));
const ThirdParty = loadable(() =>
- import("../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"),
+ import(
+ "../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"
+ )
);
const SingleSignOn = loadable(() =>
- import("../pages/PortalSettings/categories/integration/SingleSignOn"),
+ import("../pages/PortalSettings/categories/integration/SingleSignOn")
);
const DeveloperTools = loadable(() =>
- import("../pages/PortalSettings/categories/developer-tools/index.js"),
+ import("../pages/PortalSettings/categories/developer-tools/index.js")
);
+
+const DataImport = loadable(() =>
+ import("../pages/PortalSettings/categories/data-import/index.js")
+);
+
const WebhookHistory = loadable(() =>
- import("../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookHistory"),
+ import(
+ "../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookHistory"
+ )
);
const WebhookDetails = loadable(() =>
- import("../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookEventDetails"),
+ import(
+ "../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookEventDetails"
+ )
+);
+const Backup = loadable(() =>
+ import("../pages/PortalSettings/categories/data-management/index")
+);
+const DeleteDataPage = loadable(() =>
+ import("../pages/PortalSettings/categories/delete-data")
);
-const Backup = loadable(() => import("../pages/PortalSettings/categories/data-management/index"));
-const DeleteDataPage = loadable(() => import("../pages/PortalSettings/categories/delete-data"));
const RestoreBackup = loadable(() =>
- import("../pages/PortalSettings/categories/data-management/backup/restore-backup/index"),
+ import(
+ "../pages/PortalSettings/categories/data-management/backup/restore-backup/index"
+ )
);
const PortalSettingsRoutes = {
@@ -188,6 +223,10 @@ const PortalSettingsRoutes = {
path: "developer-tools/javascript-sdk",
element: ,
},
+ {
+ path: "migration/data-import",
+ element: ,
+ },
{
path: "developer-tools/webhooks",
element: ,
diff --git a/public/images/catalog.import.react.svg b/public/images/catalog.import.react.svg
new file mode 100644
index 0000000000..e7f1ff5690
--- /dev/null
+++ b/public/images/catalog.import.react.svg
@@ -0,0 +1,3 @@
+