diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 93c1b31092..48656b4151 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -104,8 +104,8 @@ import { ThemedPageErrorComponent } from './page-error/themed-page-error.compone }, { path: COLLECTION_MODULE_PATH, - loadChildren: () => import('./collection-page/collection-page.module') - .then((m) => m.CollectionPageModule), + loadChildren: () => import('./collection-page/collection-page-routes') + .then((m) => m.ROUTES), canActivate: [EndUserAgreementCurrentUserGuard] }, { diff --git a/src/app/collection-page/collection-page-routes.ts b/src/app/collection-page/collection-page-routes.ts new file mode 100644 index 0000000000..d97d369f94 --- /dev/null +++ b/src/app/collection-page/collection-page-routes.ts @@ -0,0 +1,100 @@ +import { CollectionPageResolver } from './collection-page.resolver'; +import { CreateCollectionPageComponent } from './create-collection-page/create-collection-page.component'; +import { AuthenticatedGuard } from '../core/auth/authenticated.guard'; +import { CreateCollectionPageGuard } from './create-collection-page/create-collection-page.guard'; +import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component'; +import { + ThemedEditItemTemplatePageComponent +} from './edit-item-template-page/themed-edit-item-template-page.component'; +import { ItemTemplatePageResolver } from './edit-item-template-page/item-template-page.resolver'; +import { CollectionBreadcrumbResolver } from '../core/breadcrumbs/collection-breadcrumb.resolver'; +import { DSOBreadcrumbsService } from '../core/breadcrumbs/dso-breadcrumbs.service'; +import { LinkService } from '../core/cache/builders/link.service'; +import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; +import { COLLECTION_CREATE_PATH, COLLECTION_EDIT_PATH, ITEMTEMPLATE_PATH } from './collection-page-routing-paths'; +import { CollectionPageAdministratorGuard } from './collection-page-administrator.guard'; +import { LinkMenuItemModel } from '../shared/menu/menu-item/models/link.model'; +import { ThemedCollectionPageComponent } from './themed-collection-page.component'; +import { MenuItemType } from '../shared/menu/menu-item-type.model'; +import { DSOEditMenuResolver } from '../shared/dso-page/dso-edit-menu.resolver'; +import { Route } from '@angular/router'; + + +export const ROUTES: Route[] = [ + { + path: COLLECTION_CREATE_PATH, + component: CreateCollectionPageComponent, + canActivate: [AuthenticatedGuard, CreateCollectionPageGuard], + providers: [ + CollectionPageResolver, + ItemTemplatePageResolver, + CollectionBreadcrumbResolver, + DSOBreadcrumbsService, + LinkService, + CreateCollectionPageGuard, + CollectionPageAdministratorGuard, + ] + }, + { + path: ':id', + resolve: { + dso: CollectionPageResolver, + breadcrumb: CollectionBreadcrumbResolver, + menu: DSOEditMenuResolver + }, + providers: [ + CollectionPageResolver, + ItemTemplatePageResolver, + CollectionBreadcrumbResolver, + DSOBreadcrumbsService, + LinkService, + CreateCollectionPageGuard, + CollectionPageAdministratorGuard, + ], + runGuardsAndResolvers: 'always', + children: [ + { + path: COLLECTION_EDIT_PATH, + loadChildren: () => import('./edit-collection-page/edit-collection-page-routes') + .then((m) => m.ROUTES), + canActivate: [CollectionPageAdministratorGuard] + }, + { + path: 'delete', + pathMatch: 'full', + component: DeleteCollectionPageComponent, + canActivate: [AuthenticatedGuard], + }, + { + path: ITEMTEMPLATE_PATH, + component: ThemedEditItemTemplatePageComponent, + canActivate: [AuthenticatedGuard], + resolve: { + item: ItemTemplatePageResolver, + breadcrumb: I18nBreadcrumbResolver + }, + data: { title: 'collection.edit.template.title', breadcrumbKey: 'collection.edit.template' } + }, + { + path: '', + component: ThemedCollectionPageComponent, + pathMatch: 'full', + } + ], + data: { + menu: { + public: [{ + id: 'statistics_collection_:id', + active: true, + visible: true, + index: 2, + model: { + type: MenuItemType.LINK, + text: 'menu.section.statistics', + link: 'statistics/collections/:id/', + } as LinkMenuItemModel, + }], + }, + }, + }, +]; diff --git a/src/app/collection-page/collection-page-routing.module.ts b/src/app/collection-page/collection-page-routing.module.ts deleted file mode 100644 index 9dc25b778e..0000000000 --- a/src/app/collection-page/collection-page-routing.module.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { CollectionPageResolver } from './collection-page.resolver'; -import { CreateCollectionPageComponent } from './create-collection-page/create-collection-page.component'; -import { AuthenticatedGuard } from '../core/auth/authenticated.guard'; -import { CreateCollectionPageGuard } from './create-collection-page/create-collection-page.guard'; -import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component'; -import { ThemedEditItemTemplatePageComponent } from './edit-item-template-page/themed-edit-item-template-page.component'; -import { ItemTemplatePageResolver } from './edit-item-template-page/item-template-page.resolver'; -import { CollectionBreadcrumbResolver } from '../core/breadcrumbs/collection-breadcrumb.resolver'; -import { DSOBreadcrumbsService } from '../core/breadcrumbs/dso-breadcrumbs.service'; -import { LinkService } from '../core/cache/builders/link.service'; -import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { - ITEMTEMPLATE_PATH, - COLLECTION_EDIT_PATH, - COLLECTION_CREATE_PATH -} from './collection-page-routing-paths'; -import { CollectionPageAdministratorGuard } from './collection-page-administrator.guard'; -import { LinkMenuItemModel } from '../shared/menu/menu-item/models/link.model'; -import { ThemedCollectionPageComponent } from './themed-collection-page.component'; -import { MenuItemType } from '../shared/menu/menu-item-type.model'; -import { DSOEditMenuResolver } from '../shared/dso-page/dso-edit-menu.resolver'; - -@NgModule({ - imports: [ - RouterModule.forChild([ - { - path: COLLECTION_CREATE_PATH, - component: CreateCollectionPageComponent, - canActivate: [AuthenticatedGuard, CreateCollectionPageGuard] - }, - { - path: ':id', - resolve: { - dso: CollectionPageResolver, - breadcrumb: CollectionBreadcrumbResolver, - menu: DSOEditMenuResolver - }, - runGuardsAndResolvers: 'always', - children: [ - { - path: COLLECTION_EDIT_PATH, - loadChildren: () => import('./edit-collection-page/edit-collection-page.module') - .then((m) => m.EditCollectionPageModule), - canActivate: [CollectionPageAdministratorGuard] - }, - { - path: 'delete', - pathMatch: 'full', - component: DeleteCollectionPageComponent, - canActivate: [AuthenticatedGuard], - }, - { - path: ITEMTEMPLATE_PATH, - component: ThemedEditItemTemplatePageComponent, - canActivate: [AuthenticatedGuard], - resolve: { - item: ItemTemplatePageResolver, - breadcrumb: I18nBreadcrumbResolver - }, - data: { title: 'collection.edit.template.title', breadcrumbKey: 'collection.edit.template' } - }, - { - path: '', - component: ThemedCollectionPageComponent, - pathMatch: 'full', - } - ], - data: { - menu: { - public: [{ - id: 'statistics_collection_:id', - active: true, - visible: true, - index: 2, - model: { - type: MenuItemType.LINK, - text: 'menu.section.statistics', - link: 'statistics/collections/:id/', - } as LinkMenuItemModel, - }], - }, - }, - }, - ]) - ], - providers: [ - CollectionPageResolver, - ItemTemplatePageResolver, - CollectionBreadcrumbResolver, - DSOBreadcrumbsService, - LinkService, - CreateCollectionPageGuard, - CollectionPageAdministratorGuard, - ] -}) -export class CollectionPageRoutingModule { - -} diff --git a/src/app/collection-page/collection-page.module.ts b/src/app/collection-page/collection-page.module.ts index 220008774a..15f5f88e84 100644 --- a/src/app/collection-page/collection-page.module.ts +++ b/src/app/collection-page/collection-page.module.ts @@ -3,11 +3,12 @@ import { CommonModule } from '@angular/common'; import { CollectionPageComponent } from './collection-page.component'; -import { CollectionPageRoutingModule } from './collection-page-routing.module'; import { CreateCollectionPageComponent } from './create-collection-page/create-collection-page.component'; import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component'; import { EditItemTemplatePageComponent } from './edit-item-template-page/edit-item-template-page.component'; -import { ThemedEditItemTemplatePageComponent } from './edit-item-template-page/themed-edit-item-template-page.component'; +import { + ThemedEditItemTemplatePageComponent +} from './edit-item-template-page/themed-edit-item-template-page.component'; import { EditItemPageModule } from '../item-page/edit-item-page/edit-item-page.module'; import { CollectionItemMapperComponent } from './collection-item-mapper/collection-item-mapper.component'; import { SearchService } from '../core/shared/search/search.service'; @@ -21,7 +22,6 @@ import { DsoPageModule } from '../shared/dso-page/dso-page.module'; @NgModule({ imports: [ CommonModule, - CollectionPageRoutingModule, StatisticsModule.forRoot(), EditItemPageModule, CollectionFormModule, diff --git a/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts b/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts new file mode 100644 index 0000000000..d17ea9fac1 --- /dev/null +++ b/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts @@ -0,0 +1,106 @@ +import { Route, RouterModule } from '@angular/router'; +import { NgModule } from '@angular/core'; +import { CollectionItemMapperComponent } from '../collection-item-mapper/collection-item-mapper.component'; +import { EditCollectionPageComponent } from './edit-collection-page.component'; +import { CollectionMetadataComponent } from './collection-metadata/collection-metadata.component'; +import { CollectionRolesComponent } from './collection-roles/collection-roles.component'; +import { CollectionSourceComponent } from './collection-source/collection-source.component'; +import { CollectionCurateComponent } from './collection-curate/collection-curate.component'; +import { CollectionAuthorizationsComponent } from './collection-authorizations/collection-authorizations.component'; +import { I18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; +import { ResourcePolicyTargetResolver } from '../../shared/resource-policies/resolvers/resource-policy-target.resolver'; +import { ResourcePolicyCreateComponent } from '../../shared/resource-policies/create/resource-policy-create.component'; +import { ResourcePolicyResolver } from '../../shared/resource-policies/resolvers/resource-policy.resolver'; +import { ResourcePolicyEditComponent } from '../../shared/resource-policies/edit/resource-policy-edit.component'; +import { + CollectionAdministratorGuard +} from '../../core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard'; +import { CollectionAccessControlComponent } from './collection-access-control/collection-access-control.component'; + +/** + * Routing module that handles the routing for the Edit Collection page administrator functionality + */ + +export const ROUTES: Route[] = [ + { + path: '', + resolve: { + breadcrumb: I18nBreadcrumbResolver + }, + providers: [ + ResourcePolicyResolver, + ResourcePolicyTargetResolver + ], + data: { breadcrumbKey: 'collection.edit' }, + component: EditCollectionPageComponent, + canActivate: [CollectionAdministratorGuard], + children: [ + { + path: '', + redirectTo: 'metadata', + pathMatch: 'full' + }, + { + path: 'metadata', + component: CollectionMetadataComponent, + data: { + title: 'collection.edit.tabs.metadata.title', + hideReturnButton: true, + showBreadcrumbs: true + } + }, + { + path: 'roles', + component: CollectionRolesComponent, + data: { title: 'collection.edit.tabs.roles.title', showBreadcrumbs: true } + }, + { + path: 'source', + component: CollectionSourceComponent, + data: { title: 'collection.edit.tabs.source.title', showBreadcrumbs: true } + }, + { + path: 'curate', + component: CollectionCurateComponent, + data: { title: 'collection.edit.tabs.curate.title', showBreadcrumbs: true } + }, + { + path: 'access-control', + component: CollectionAccessControlComponent, + data: { title: 'collection.edit.tabs.access-control.title', showBreadcrumbs: true } + }, + { + path: 'authorizations', + data: { showBreadcrumbs: true }, + children: [ + { + path: 'create', + resolve: { + resourcePolicyTarget: ResourcePolicyTargetResolver + }, + component: ResourcePolicyCreateComponent, + data: { title: 'resource-policies.create.page.title' } + }, + { + path: 'edit', + resolve: { + resourcePolicy: ResourcePolicyResolver + }, + component: ResourcePolicyEditComponent, + data: { title: 'resource-policies.edit.page.title' } + }, + { + path: '', + component: CollectionAuthorizationsComponent, + data: { title: 'collection.edit.tabs.authorizations.title', showBreadcrumbs: true } + } + ] + }, + { + path: 'mapper', + component: CollectionItemMapperComponent, + data: { title: 'collection.edit.tabs.item-mapper.title', hideReturnButton: true, showBreadcrumbs: true } + }, + ] + } +]; diff --git a/src/app/collection-page/edit-collection-page/edit-collection-page.module.ts b/src/app/collection-page/edit-collection-page/edit-collection-page.module.ts deleted file mode 100644 index 0648b7d604..0000000000 --- a/src/app/collection-page/edit-collection-page/edit-collection-page.module.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { NgModule } from '@angular/core'; -import { EditCollectionPageComponent } from './edit-collection-page.component'; -import { CommonModule } from '@angular/common'; -import { EditCollectionPageRoutingModule } from './edit-collection-page.routing.module'; -import { CollectionMetadataComponent } from './collection-metadata/collection-metadata.component'; -import { CollectionRolesComponent } from './collection-roles/collection-roles.component'; -import { CollectionCurateComponent } from './collection-curate/collection-curate.component'; -import { CollectionSourceComponent } from './collection-source/collection-source.component'; -import { CollectionAuthorizationsComponent } from './collection-authorizations/collection-authorizations.component'; -import { CollectionFormModule } from '../collection-form/collection-form.module'; -import { - CollectionSourceControlsComponent -} from './collection-source/collection-source-controls/collection-source-controls.component'; -import { ResourcePoliciesModule } from '../../shared/resource-policies/resource-policies.module'; -import { FormModule } from '../../shared/form/form.module'; -import { ComcolModule } from '../../shared/comcol/comcol.module'; -import { CollectionAccessControlComponent } from './collection-access-control/collection-access-control.component'; -import { AccessControlFormModule } from '../../shared/access-control-form-container/access-control-form.module'; - -/** - * Module that contains all components related to the Edit Collection page administrator functionality - */ -@NgModule({ - imports: [ - CommonModule, - EditCollectionPageRoutingModule, - CollectionFormModule, - ResourcePoliciesModule, - FormModule, - ComcolModule, - AccessControlFormModule, - EditCollectionPageComponent, - CollectionMetadataComponent, - CollectionRolesComponent, - CollectionCurateComponent, - CollectionSourceComponent, - CollectionAccessControlComponent, - CollectionSourceControlsComponent, - CollectionAuthorizationsComponent - ] -}) -export class EditCollectionPageModule { - -} diff --git a/src/app/collection-page/edit-collection-page/edit-collection-page.routing.module.ts b/src/app/collection-page/edit-collection-page/edit-collection-page.routing.module.ts deleted file mode 100644 index c4481985c0..0000000000 --- a/src/app/collection-page/edit-collection-page/edit-collection-page.routing.module.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { RouterModule } from '@angular/router'; -import { NgModule } from '@angular/core'; -import { CollectionItemMapperComponent } from '../collection-item-mapper/collection-item-mapper.component'; -import { EditCollectionPageComponent } from './edit-collection-page.component'; -import { CollectionMetadataComponent } from './collection-metadata/collection-metadata.component'; -import { CollectionRolesComponent } from './collection-roles/collection-roles.component'; -import { CollectionSourceComponent } from './collection-source/collection-source.component'; -import { CollectionCurateComponent } from './collection-curate/collection-curate.component'; -import { CollectionAuthorizationsComponent } from './collection-authorizations/collection-authorizations.component'; -import { I18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { ResourcePolicyTargetResolver } from '../../shared/resource-policies/resolvers/resource-policy-target.resolver'; -import { ResourcePolicyCreateComponent } from '../../shared/resource-policies/create/resource-policy-create.component'; -import { ResourcePolicyResolver } from '../../shared/resource-policies/resolvers/resource-policy.resolver'; -import { ResourcePolicyEditComponent } from '../../shared/resource-policies/edit/resource-policy-edit.component'; -import { CollectionAdministratorGuard } from '../../core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard'; -import { CollectionAccessControlComponent } from './collection-access-control/collection-access-control.component'; - -/** - * Routing module that handles the routing for the Edit Collection page administrator functionality - */ -@NgModule({ - imports: [ - RouterModule.forChild([ - { - path: '', - resolve: { - breadcrumb: I18nBreadcrumbResolver - }, - data: { breadcrumbKey: 'collection.edit' }, - component: EditCollectionPageComponent, - canActivate: [CollectionAdministratorGuard], - children: [ - { - path: '', - redirectTo: 'metadata', - pathMatch: 'full' - }, - { - path: 'metadata', - component: CollectionMetadataComponent, - data: { - title: 'collection.edit.tabs.metadata.title', - hideReturnButton: true, - showBreadcrumbs: true - } - }, - { - path: 'roles', - component: CollectionRolesComponent, - data: { title: 'collection.edit.tabs.roles.title', showBreadcrumbs: true } - }, - { - path: 'source', - component: CollectionSourceComponent, - data: { title: 'collection.edit.tabs.source.title', showBreadcrumbs: true } - }, - { - path: 'curate', - component: CollectionCurateComponent, - data: { title: 'collection.edit.tabs.curate.title', showBreadcrumbs: true } - }, - { - path: 'access-control', - component: CollectionAccessControlComponent, - data: { title: 'collection.edit.tabs.access-control.title', showBreadcrumbs: true } - }, -/* { - path: 'authorizations', - component: CollectionAuthorizationsComponent, - data: { title: 'collection.edit.tabs.authorizations.title', showBreadcrumbs: true } - },*/ - { - path: 'authorizations', - data: { showBreadcrumbs: true }, - children: [ - { - path: 'create', - resolve: { - resourcePolicyTarget: ResourcePolicyTargetResolver - }, - component: ResourcePolicyCreateComponent, - data: { title: 'resource-policies.create.page.title' } - }, - { - path: 'edit', - resolve: { - resourcePolicy: ResourcePolicyResolver - }, - component: ResourcePolicyEditComponent, - data: { title: 'resource-policies.edit.page.title' } - }, - { - path: '', - component: CollectionAuthorizationsComponent, - data: { title: 'collection.edit.tabs.authorizations.title', showBreadcrumbs: true } - } - ] - }, - { - path: 'mapper', - component: CollectionItemMapperComponent, - data: { title: 'collection.edit.tabs.item-mapper.title', hideReturnButton: true, showBreadcrumbs: true } - }, - ] - } - ]) - ], - providers: [ - ResourcePolicyResolver, - ResourcePolicyTargetResolver - ] -}) -export class EditCollectionPageRoutingModule { - -}