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
@@ -4773,6 +4773,55 @@
|
||||
"title": "Hotel",
|
||||
"description": "Rooms, radio, and asset tools",
|
||||
"routes": {
|
||||
"themeManager": {
|
||||
"title": "Theme manager",
|
||||
"description": "Save, switch, import, export, and publish custom hotel themes (survive updates)",
|
||||
"currentThemeTitle": "Current theme",
|
||||
"currentThemeHint": "The palette and background being served to your visitors right now.",
|
||||
"saveLabel": "Save theme",
|
||||
"savePlaceholder": "Theme name (e.g. Summer Gold)",
|
||||
"exportCurrent": "Export",
|
||||
"savedThemesTitle": "Saved themes",
|
||||
"savedThemesHint": "Apply any saved theme anytime. Saved themes are stored in the database, so they keep working after CMS updates.",
|
||||
"noThemes": "No saved themes yet — save one above.",
|
||||
"active": "Active",
|
||||
"apply": "Apply",
|
||||
"export": "Export",
|
||||
"rename": "Rename",
|
||||
"renameSave": "OK",
|
||||
"delete": "Delete",
|
||||
"deleteConfirm": "Delete theme \"{name}\"?",
|
||||
"importTitle": "Import a theme",
|
||||
"importHint": "Upload a `.atom-theme.json` file exported here, or a theme exported from the Theme Builder.",
|
||||
"importNameLabel": "Name",
|
||||
"importNamePlaceholder": "Optional override",
|
||||
"importFileLabel": "Theme file",
|
||||
"importApplyLabel": "Apply after import",
|
||||
"importButton": "Import",
|
||||
"invalidFile": "That file isn't a valid JSON theme.",
|
||||
"presetsTitle": "Quick start presets",
|
||||
"backgroundTitle": "Background",
|
||||
"backgroundHint": "Set a custom background image for the public site using any image URL, or upload one.",
|
||||
"backgroundPreviewLabel": "Preview",
|
||||
"backgroundUrlLabel": "Image URL",
|
||||
"backgroundPositionLabel": "Position",
|
||||
"backgroundSizeLabel": "Size",
|
||||
"backgroundRepeatLabel": "Repeat",
|
||||
"applyBackground": "Apply background",
|
||||
"uploadButton": "Upload image…",
|
||||
"clearBackground": "Remove background",
|
||||
"notice": {
|
||||
"saved": "Theme saved.",
|
||||
"applied": "Theme applied.",
|
||||
"renamed": "Theme renamed.",
|
||||
"deleted": "Theme deleted.",
|
||||
"imported": "Theme imported.",
|
||||
"preset": "Preset applied.",
|
||||
"background": "Background updated.",
|
||||
"importError": "That file couldn't be imported. It may be too large or not a theme export.",
|
||||
"backgroundError": "The image couldn't be uploaded. Use a PNG, JPEG, GIF, or WebP up to 10MB."
|
||||
}
|
||||
},
|
||||
"nitroCleanup": {
|
||||
"title": "Nitro cleanup",
|
||||
"description": "Scan and remove fake, broken, and orphaned furni asset files"
|
||||
|
||||
@@ -4772,6 +4772,55 @@
|
||||
"title": "Hotel",
|
||||
"description": "Stanze, radio e strumenti per gli asset",
|
||||
"routes": {
|
||||
"themeManager": {
|
||||
"title": "Gestione temi",
|
||||
"description": "Salva, attiva, importa, esporta e pubblica temi personalizzati per l'hotel (sopravvivono agli aggiornamenti)",
|
||||
"currentThemeTitle": "Tema corrente",
|
||||
"currentThemeHint": "La palette e lo sfondo attualmente mostrati ai tuoi visitatori.",
|
||||
"saveLabel": "Salva tema",
|
||||
"savePlaceholder": "Nome del tema (es. Oro estivo)",
|
||||
"exportCurrent": "Esporta",
|
||||
"savedThemesTitle": "Temi salvati",
|
||||
"savedThemesHint": "Attiva un tema salvato in qualsiasi momento. I temi sono salvati nel database e restano attivi dopo gli aggiornamenti CMS.",
|
||||
"noThemes": "Nessun tema salvato — salvane uno qui sopra.",
|
||||
"active": "Attivo",
|
||||
"apply": "Applica",
|
||||
"export": "Esporta",
|
||||
"rename": "Rinomina",
|
||||
"renameSave": "OK",
|
||||
"delete": "Elimina",
|
||||
"deleteConfirm": "Eliminare il tema \"{name}\"?",
|
||||
"importTitle": "Importa un tema",
|
||||
"importHint": "Carica un file `.atom-theme.json` esportato qui, oppure un tema esportato dal Theme Builder.",
|
||||
"importNameLabel": "Nome",
|
||||
"importNamePlaceholder": "Sostituzione opzionale",
|
||||
"importFileLabel": "File del tema",
|
||||
"importApplyLabel": "Applica dopo l'importazione",
|
||||
"importButton": "Importa",
|
||||
"invalidFile": "Il file non è un tema JSON valido.",
|
||||
"presetsTitle": "Preset di partenza",
|
||||
"backgroundTitle": "Sfondo",
|
||||
"backgroundHint": "Imposta un'immagine di sfondo personalizzata per il sito pubblico usando un URL o caricando un file.",
|
||||
"backgroundPreviewLabel": "Anteprima",
|
||||
"backgroundUrlLabel": "URL immagine",
|
||||
"backgroundPositionLabel": "Posizione",
|
||||
"backgroundSizeLabel": "Dimensione",
|
||||
"backgroundRepeatLabel": "Ripetizione",
|
||||
"applyBackground": "Applica sfondo",
|
||||
"uploadButton": "Carica immagine…",
|
||||
"clearBackground": "Rimuovi sfondo",
|
||||
"notice": {
|
||||
"saved": "Tema salvato.",
|
||||
"applied": "Tema applicato.",
|
||||
"renamed": "Tema rinominato.",
|
||||
"deleted": "Tema eliminato.",
|
||||
"imported": "Tema importato.",
|
||||
"preset": "Preset applicato.",
|
||||
"background": "Sfondo aggiornato.",
|
||||
"importError": "Impossibile importare il file. Potrebbe essere troppo grande o non essere un'esportazione di un tema.",
|
||||
"backgroundError": "Immagine non caricata. Usa PNG, JPEG, GIF o WebP fino a 10MB."
|
||||
}
|
||||
},
|
||||
"nitroCleanup": {
|
||||
"title": "Pulizia nitro",
|
||||
"description": "Scansiona e rimuovi i file asset furni falsi, danneggiati o orfani"
|
||||
|
||||
Reference in new issue
Block a user