diff --git a/config/config.example.yml b/config/config.example.yml index 80c8f0c2d02..5267a93c039 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -400,6 +400,10 @@ homePage: pageSize: 5 # Enable or disable the Discover filters on the homepage showDiscoverFilters: false + # Disable if you don't want users to edit the homeNews section on your home-page. + editHomeNews: true + # Disable if you don't want users to edit the home header. + editHomeHeader: true # Item Config item: diff --git a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.ts b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.ts index bdb0c52ac14..95ccfe5502d 100644 --- a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.ts +++ b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.ts @@ -82,6 +82,12 @@ export class AdminEditCmsMetadataComponent implements OnInit { if (md === 'dspace.cms.footer' && !environment.homePage.showTopFooter) { return; } + if (md === 'dspace.cms.home-header' && !environment.homePage.editHomeHeader) { + return; + } + if (md === 'dspace.cms.home-news' && !environment.homePage.editHomeNews) { + return; + } this.metadataList.push(md); }); this.siteService.find().subscribe((site) => { diff --git a/src/app/home-page/home-news/home-news.component.ts b/src/app/home-page/home-news/home-news.component.ts index d6f7eb39995..a6fe0ebb0f9 100644 --- a/src/app/home-page/home-news/home-news.component.ts +++ b/src/app/home-page/home-news/home-news.component.ts @@ -1,9 +1,14 @@ import { AsyncPipe } from '@angular/common'; import { Component, + Inject, OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + APP_CONFIG, + AppConfig, +} from '@dspace/config/app-config.interface'; import { LocaleService } from '@dspace/core/locale/locale.service'; import { Site } from '@dspace/core/shared/site.model'; import { @@ -32,20 +37,23 @@ export class HomeNewsComponent implements OnInit { homeNewsMetadataValue$: Observable; constructor( + @Inject(APP_CONFIG) protected appConfig: AppConfig, protected route: ActivatedRoute, private locale: LocaleService, ) {} ngOnInit() { - this.homeNewsMetadataValue$ = combineLatest({ - site$: this.route.data.pipe( - map((data) => data.site as Site), - ), - language$: this.locale.getCurrentLanguageCode(), - }).pipe( - take(1), - map(({ site$, language$ }) => site$?.firstMetadataValue('dspace.cms.home-news', { language: language$ })), - ); + if (this.appConfig.homePage.editHomeNews) { + this.homeNewsMetadataValue$ = combineLatest({ + site$: this.route.data.pipe( + map((data) => data.site as Site), + ), + language$: this.locale.getCurrentLanguageCode(), + }).pipe( + take(1), + map(({ site$, language$ }) => site$?.firstMetadataValue('dspace.cms.home-news', { language: language$ })), + ); + } } } diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts index cf75770b9e8..dad6888dfb1 100644 --- a/src/app/home-page/home-page.component.ts +++ b/src/app/home-page/home-page.component.ts @@ -71,14 +71,15 @@ export class HomePageComponent implements OnInit { this.site$ = this.route.data.pipe( map((data) => data.site as Site), ); - - this.homeHeaderMetadataValue$ = combineLatest({ - site: this.site$, - language: this.locale.getCurrentLanguageCode(), - }).pipe( - take(1), - map(({ site, language }) => site?.firstMetadataValue('dspace.cms.home-header', { language })), - ); + if (this.appConfig.homePage.editHomeHeader) { + this.homeHeaderMetadataValue$ = combineLatest({ + site: this.site$, + language: this.locale.getCurrentLanguageCode(), + }).pipe( + take(1), + map(({ site, language }) => site?.firstMetadataValue('dspace.cms.home-header', { language })), + ); + } } } diff --git a/src/app/shared/menu/providers/edit-cms-metadata.menu.ts b/src/app/shared/menu/providers/edit-cms-metadata.menu.ts index 0296ecd4b19..83e3ab51c07 100644 --- a/src/app/shared/menu/providers/edit-cms-metadata.menu.ts +++ b/src/app/shared/menu/providers/edit-cms-metadata.menu.ts @@ -6,7 +6,14 @@ * http://www.dspace.org/license/ */ -import { Injectable } from '@angular/core'; +import { + Inject, + Injectable, +} from '@angular/core'; +import { + APP_CONFIG, + AppConfig, +} from '@dspace/config/app-config.interface'; import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; import { FeatureID } from '@dspace/core/data/feature-authorization/feature-id'; import { @@ -28,6 +35,7 @@ import { export class EditCMSMetadataMenuProvider extends AbstractMenuProvider { constructor( protected authorizationService: AuthorizationDataService, + @Inject(APP_CONFIG) protected appConfig: AppConfig, ) { super(); } @@ -39,7 +47,7 @@ export class EditCMSMetadataMenuProvider extends AbstractMenuProvider { map(([isSiteAdmin]) => { return [ { - visible: isSiteAdmin, + visible: isSiteAdmin && (this.appConfig.homePage.editHomeHeader || this.appConfig.homePage.editHomeHeader || this.appConfig.homePage.showTopFooter), model: { type: MenuItemType.LINK, text: 'menu.section.edit-cms-metadata', diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index 90cf3504241..958306c40c2 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -371,6 +371,8 @@ export class DefaultAppConfig implements AppConfig { pageSize: 5, }, showDiscoverFilters: false, + editHomeNews: true, + editHomeHeader: true, }; // Item Config diff --git a/src/config/homepage-config.interface.ts b/src/config/homepage-config.interface.ts index 47d75e60743..2dd56af7351 100644 --- a/src/config/homepage-config.interface.ts +++ b/src/config/homepage-config.interface.ts @@ -28,4 +28,14 @@ export interface HomeConfig extends Config { * Enable or disable the Discover filters on the homepage */ showDiscoverFilters: boolean; + + /** + * Disable if you don't want users to edit the homeNews section on your home-page. + */ + editHomeNews: boolean; + + /** + * Disable if you don't want users to edit the home header. + */ + editHomeHeader: boolean; } diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index 210eab5f8d0..989e676e29c 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -278,6 +278,8 @@ export const environment: BuildConfig = { pageSize: 5, }, showDiscoverFilters: false, + editHomeNews: true, + editHomeHeader: true, }, item: { edit: {