feat(admin): sprint 19 admin dashboard, routing, i18n
- Add admin dashboard feature (models/gateway/facade/components/page) - Wire admin/products routes and backoffice coming-soon placeholders - Add lastPublishedAt to ProjectEditorFacade/state - Add dashboard i18n keys (en/ru/hy) and docs/ADMIN.md Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { Routes } from '@angular/router';
|
||||
import { languageGuard } from './guards/language.guard';
|
||||
import { projectEditorDirtyGuard } from './features/project-editor/guards/project-editor-dirty.guard';
|
||||
import { adminAuthGuard } from './core/admin-auth/admin-auth.guard';
|
||||
import { environment } from '../environments/environment';
|
||||
|
||||
// Core routes (same across all brands)
|
||||
@@ -45,6 +46,59 @@ const coreRoutes: Routes = [
|
||||
loadComponent: () => import('./features/project-editor/pages/project-editor-page.component').then(m => m.ProjectEditorPageComponent),
|
||||
canDeactivate: [projectEditorDirtyGuard]
|
||||
},
|
||||
{
|
||||
path: 'backoffice',
|
||||
canActivate: [adminAuthGuard],
|
||||
children: [
|
||||
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
|
||||
{
|
||||
path: 'dashboard',
|
||||
loadComponent: () => import('./features/admin/dashboard/pages/admin-dashboard-page.component').then(m => m.AdminDashboardPageComponent)
|
||||
},
|
||||
{
|
||||
path: 'products',
|
||||
loadComponent: () => import('./features/admin/products/pages/admin-products-list-page.component').then(m => m.AdminProductsListPageComponent)
|
||||
},
|
||||
{
|
||||
path: 'products/create',
|
||||
loadComponent: () => import('./features/admin/products/pages/admin-product-editor-page.component').then(m => m.AdminProductEditorPageComponent)
|
||||
},
|
||||
{
|
||||
path: 'products/:id/edit',
|
||||
loadComponent: () => import('./features/admin/products/pages/admin-product-editor-page.component').then(m => m.AdminProductEditorPageComponent)
|
||||
},
|
||||
{
|
||||
path: 'products/:id/duplicate',
|
||||
loadComponent: () => import('./features/admin/products/pages/admin-product-editor-page.component').then(m => m.AdminProductEditorPageComponent)
|
||||
},
|
||||
{
|
||||
path: 'categories',
|
||||
loadComponent: () => import('./features/backoffice/shared/backoffice-coming-soon-page.component').then(m => m.BackofficeComingSoonPageComponent),
|
||||
data: { titleKey: 'dashboard.actionCategories' }
|
||||
},
|
||||
{
|
||||
path: 'static-pages',
|
||||
loadComponent: () => import('./features/backoffice/shared/backoffice-coming-soon-page.component').then(m => m.BackofficeComingSoonPageComponent),
|
||||
data: { titleKey: 'dashboard.actionStaticPages' }
|
||||
},
|
||||
{
|
||||
path: 'transactions',
|
||||
loadComponent: () => import('./features/backoffice/shared/backoffice-coming-soon-page.component').then(m => m.BackofficeComingSoonPageComponent),
|
||||
data: { titleKey: 'dashboard.actionTransactions' }
|
||||
},
|
||||
{
|
||||
path: 'orders',
|
||||
loadComponent: () => import('./features/backoffice/shared/backoffice-coming-soon-page.component').then(m => m.BackofficeComingSoonPageComponent),
|
||||
data: { titleKey: 'dashboard.actionOrders' }
|
||||
},
|
||||
{
|
||||
path: 'media',
|
||||
loadComponent: () => import('./features/backoffice/shared/backoffice-coming-soon-page.component').then(m => m.BackofficeComingSoonPageComponent),
|
||||
data: { titleKey: 'dashboard.actionMediaLibrary' }
|
||||
},
|
||||
{ path: '**', redirectTo: 'dashboard' }
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'edit',
|
||||
redirectTo: 'edit/general',
|
||||
|
||||
Reference in New Issue
Block a user