feat(housekeeping): add per-hotel theme manager with import/export and background
Theme Manager under /admin-next/hotel/theme-manager lets the owner save, apply, rename, delete, import, and export custom themes, plus set a custom site background by URL or upload. Themes are stored in WebsiteSetting/custom_themes JSON so they survive CMS updates.
This commit is contained in:
1 parent
55c13b533c
commit
5b4b275b2a
13 files changed
+1376
-1
No files matched your search
@@ -21,6 +21,12 @@ export const hotelManifest = {
|
||||
PERMS.CATALOG_EDIT,
|
||||
),
|
||||
routes: [
|
||||
{
|
||||
id: "theme-manager",
|
||||
labelKey: "pages.housekeeping.domains.hotel.routes.themeManager",
|
||||
href: "/admin-next/hotel/theme-manager",
|
||||
capability: anyCapability(PERMS.SETTINGS_VIEW, PERMS.SETTINGS_EDIT),
|
||||
},
|
||||
{
|
||||
id: "nitro-cleanup",
|
||||
labelKey: "pages.housekeeping.domains.hotel.routes.nitroCleanup",
|
||||
|
||||
@@ -580,6 +580,11 @@ describe("housekeeping foundation completion contracts", () => {
|
||||
expect(
|
||||
registry.domains.find((domain) => domain.id === "hotel")?.routes,
|
||||
).toEqual([
|
||||
expect.objectContaining({
|
||||
id: "theme-manager",
|
||||
href: "/admin-next/hotel/theme-manager",
|
||||
labelKey: "pages.housekeeping.domains.hotel.routes.themeManager",
|
||||
}),
|
||||
expect.objectContaining({
|
||||
id: "nitro-cleanup",
|
||||
href: "/admin-next/hotel/nitro-cleanup",
|
||||
|
||||
@@ -166,6 +166,15 @@ const expectedManifests = [
|
||||
PERMS.CATALOG_EDIT,
|
||||
],
|
||||
routes: [
|
||||
{
|
||||
id: "theme-manager",
|
||||
labelKey: "pages.housekeeping.domains.hotel.routes.themeManager",
|
||||
href: "/admin-next/hotel/theme-manager",
|
||||
capability: {
|
||||
mode: "any",
|
||||
slugs: [PERMS.SETTINGS_VIEW, PERMS.SETTINGS_EDIT],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "nitro-cleanup",
|
||||
labelKey: "pages.housekeeping.domains.hotel.routes.nitroCleanup",
|
||||
|
||||
Reference in new issue
Block a user