From 149bb7c34351467c5d95c9b273fae0c5d50de3c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eike=20Martin=20L=C3=B6hden?= Date: Thu, 9 Apr 2026 13:40:08 +0200 Subject: [PATCH 1/5] Added new config settings. --- config/config.example.yml | 4 ++++ src/config/default-app-config.ts | 2 ++ src/config/homepage-config.interface.ts | 10 ++++++++++ 3 files changed, 16 insertions(+) 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/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; } From 13e17ccd8e407b2f980046464bcfd6721553dcef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eike=20Martin=20L=C3=B6hden?= Date: Thu, 9 Apr 2026 14:00:09 +0200 Subject: [PATCH 2/5] Added config based conditions to home-news and home-header --- .../home-news/home-news.component.ts | 26 ++++++++++++------- src/app/home-page/home-page.component.ts | 17 ++++++------ 2 files changed, 26 insertions(+), 17 deletions(-) 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..3b1e4e40065 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})), + ); + } } } From dbe2dabc4ad0426a78ce134dd9aa15b1493c1bc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eike=20Martin=20L=C3=B6hden?= Date: Thu, 9 Apr 2026 14:22:32 +0200 Subject: [PATCH 3/5] Added missing test-environment defaults. --- src/environments/environment.test.ts | 2 ++ 1 file changed, 2 insertions(+) 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: { From f47bda4513619dfaf153afb1bab3cf79d6ad391d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eike=20Martin=20L=C3=B6hden?= Date: Thu, 9 Apr 2026 14:23:57 +0200 Subject: [PATCH 4/5] Removing not-displayed cms metadata from dropdown and hide edit-cms-metadata section if none can be displayed. --- .../admin-edit-cms-metadata.component.ts | 6 ++++++ .../shared/menu/providers/edit-cms-metadata.menu.ts | 12 ++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) 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/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', From be385a78fa82dee2e9c563f460ccf4d221149438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eike=20Martin=20L=C3=B6hden?= Date: Thu, 9 Apr 2026 14:53:02 +0200 Subject: [PATCH 5/5] Fixed linter in home-page.component.ts --- src/app/home-page/home-page.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts index 3b1e4e40065..dad6888dfb1 100644 --- a/src/app/home-page/home-page.component.ts +++ b/src/app/home-page/home-page.component.ts @@ -77,7 +77,7 @@ export class HomePageComponent implements OnInit { language: this.locale.getCurrentLanguageCode(), }).pipe( take(1), - map(({site, language}) => site?.firstMetadataValue('dspace.cms.home-header', {language})), + map(({ site, language }) => site?.firstMetadataValue('dspace.cms.home-header', { language })), ); } }