Skip to content

Commit 6f760e9

Browse files
Andrea BarbassoFrancescoMolinaro
authored andcommitted
Merged in task/dspace-cris-2025_02_x/DSC-2716 (pull request DSpace#4232)
[DSC-2716] show markdown info panel in cms metadata edit Approved-by: Francesco Molinaro
2 parents 6297173 + 5480aad commit 6f760e9

12 files changed

+118
-9
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<div class="container">
22
<h2>{{'admin.edit-user-agreement.header' | translate}}</h2>
3-
<ds-alert [type]="'alert-info'" [dismissible]="true" [content]="'admin.edit-user-agreement.markdown' | translate"></ds-alert>
3+
@if (showMarkdownInfo) {
4+
<ds-alert [type]="'alert-info'" [dismissible]="true" [content]="'admin.edit-user-agreement.markdown' | translate"></ds-alert>
5+
}
46
@for (userAgreementText of (userAgreementTexts | keyvalue); track userAgreementText) {
57
<div class="form-group">
68
<label>{{userAgreementText.value.languageLabel}}</label>

src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
of,
2323
} from 'rxjs';
2424

25+
import { APP_CONFIG } from '../../../config/app-config.interface';
2526
import { ScriptDataService } from '../../core/data/processes/script-data.service';
2627
import { SiteDataService } from '../../core/data/site-data.service';
2728
import { Site } from '../../core/shared/site.model';
@@ -39,6 +40,7 @@ describe('AdminEditUserAgreementComponent', () => {
3940
let notificationService: NotificationsServiceStub;
4041
let siteService: any;
4142
let scriptDataService: any;
43+
let mockAppConfig: any;
4244

4345
const site: Site = Object.assign(new Site(), {
4446
metadata: {
@@ -62,6 +64,11 @@ describe('AdminEditUserAgreementComponent', () => {
6264
return of(site);
6365
},
6466
};
67+
mockAppConfig = {
68+
markdown: {
69+
showInfoOnCMSMetadataEditPages: true,
70+
},
71+
};
6572

6673
TestBed.configureTestingModule({
6774
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, RouterTestingModule,
@@ -74,7 +81,8 @@ describe('AdminEditUserAgreementComponent', () => {
7481
providers: [AdminEditUserAgreementComponent,
7582
{ provide: NotificationsService, useValue: notificationService },
7683
{ provide: SiteDataService, useValue: siteService },
77-
{ provide: ScriptDataService, useValue: scriptDataService }],
84+
{ provide: ScriptDataService, useValue: scriptDataService },
85+
{ provide: APP_CONFIG, useValue: mockAppConfig }],
7886
schemas: [NO_ERRORS_SCHEMA],
7987
}).overrideComponent(AdminEditUserAgreementComponent, { remove: { imports: [AlertComponent] } }).compileComponents();
8088
}));
@@ -94,4 +102,25 @@ describe('AdminEditUserAgreementComponent', () => {
94102
expect(component.userAgreementTexts.get('de').text).toEqual('Dies ist der Text der Endbenutzervereinbarung für diesen Test');
95103
}));
96104

105+
describe('showMarkdownInfo property', () => {
106+
it('should initialize showMarkdownInfo from appConfig.markdown.showInfoOnCMSMetadataEditPages', () => {
107+
expect(component.showMarkdownInfo).toBe(true);
108+
});
109+
110+
it('should show markdown info alert box when showMarkdownInfo is true', () => {
111+
component.showMarkdownInfo = true;
112+
fixture.detectChanges();
113+
const alertElement = fixture.debugElement.query((el) => el.name === 'ds-alert');
114+
expect(alertElement).toBeTruthy();
115+
});
116+
117+
it('should hide markdown info alert box when showMarkdownInfo is false', () => {
118+
mockAppConfig.markdown.showInfoOnCMSMetadataEditPages = false;
119+
component.showMarkdownInfo = false;
120+
fixture.detectChanges();
121+
const alertElement = fixture.debugElement.query((el) => el.name === 'ds-alert');
122+
expect(alertElement).toBeFalsy();
123+
});
124+
});
125+
97126
});

src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { KeyValuePipe } from '@angular/common';
22
import {
33
Component,
4+
Inject,
45
OnDestroy,
56
OnInit,
67
} from '@angular/core';
@@ -13,6 +14,10 @@ import {
1314
import { Operation } from 'fast-json-patch';
1415
import { Subscription } from 'rxjs';
1516

17+
import {
18+
APP_CONFIG,
19+
AppConfig,
20+
} from '../../../config/app-config.interface';
1621
import { environment } from '../../../environments/environment';
1722
import { ScriptDataService } from '../../core/data/processes/script-data.service';
1823
import { SiteDataService } from '../../core/data/site-data.service';
@@ -45,12 +50,18 @@ export class AdminEditUserAgreementComponent implements OnInit, OnDestroy {
4550

4651
USER_AGREEMENT_METADATA = 'dspace.agreements.end-user';
4752

53+
/**
54+
* show markdown info alert box
55+
*/
56+
showMarkdownInfo = this.appConfig.markdown.showInfoOnCMSMetadataEditPages;
57+
4858
constructor(private siteService: SiteDataService,
4959
private modalService: NgbModal,
5060
private translateService: TranslateService,
5161
private notificationsService: NotificationsService,
52-
private scriptDataService: ScriptDataService ) {
53-
62+
private scriptDataService: ScriptDataService,
63+
@Inject(APP_CONFIG) protected appConfig: AppConfig,
64+
) {
5465
}
5566

5667
ngOnInit(): void {

src/app/admin/edit-cms-metadata/edit-cms-metadata.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
@if ((editMode | async)) {
22
<div class="container">
33
<h2 class=" mb-5">{{'admin.edit-cms-metadata.title' | translate}} '{{selectedMetadata}}'</h2>
4+
@if (showMarkdownInfo) {
5+
<ds-alert [type]="'alert-info'" [dismissible]="true" [content]="'admin.edit-cms-metadata.markdown' | translate"></ds-alert>
6+
}
47
<div class="row">
58
<div class="col-md">
69
@for (lang of languageList; track lang) {

src/app/admin/edit-cms-metadata/edit-cms-metadata.component.spec.ts

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
import { NO_ERRORS_SCHEMA } from '@angular/core';
21
import {
32
ComponentFixture,
43
TestBed,
54
waitForAsync,
65
} from '@angular/core/testing';
76
import { FormsModule } from '@angular/forms';
87
import { By } from '@angular/platform-browser';
8+
import { provideNoopAnimations } from '@angular/platform-browser/animations';
99
import {
1010
TranslateLoader,
1111
TranslateModule,
1212
} from '@ngx-translate/core';
1313
import { of } from 'rxjs';
1414

15+
import { APP_CONFIG } from '../../../config/app-config.interface';
1516
import { environment } from '../../../environments/environment.test';
1617
import { SiteDataService } from '../../core/data/site-data.service';
1718
import { Site } from '../../core/shared/site.model';
19+
import { AlertComponent } from '../../shared/alert/alert.component';
1820
import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock';
1921
import { NotificationsService } from '../../shared/notifications/notifications.service';
2022
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
@@ -33,6 +35,12 @@ describe('EditCmsMetadataComponent', () => {
3335
patch: jasmine.createSpy('patch'),
3436
});
3537

38+
let mockAppConfig = {
39+
markdown: {
40+
showInfoOnCMSMetadataEditPages: true,
41+
},
42+
};
43+
3644
const metadataValueMap = new Map([
3745
['en', ''],
3846
['de', ''],
@@ -45,6 +53,11 @@ describe('EditCmsMetadataComponent', () => {
4553
['el', ''],
4654
]);
4755
beforeEach(waitForAsync(() => {
56+
mockAppConfig = {
57+
markdown: {
58+
showInfoOnCMSMetadataEditPages: true,
59+
},
60+
};
4861
TestBed.configureTestingModule({
4962
imports: [
5063
FormsModule,
@@ -55,12 +68,14 @@ describe('EditCmsMetadataComponent', () => {
5568
},
5669
}),
5770
EditCmsMetadataComponent,
71+
AlertComponent,
5872
],
5973
providers: [
74+
provideNoopAnimations(),
6075
{ provide: NotificationsService, useValue: NotificationsServiceStub },
6176
{ provide: SiteDataService, useValue: siteServiceStub },
77+
{ provide: APP_CONFIG, useValue: mockAppConfig },
6278
],
63-
schemas: [NO_ERRORS_SCHEMA],
6479
}).compileComponents();
6580
}));
6681

@@ -157,4 +172,30 @@ describe('EditCmsMetadataComponent', () => {
157172

158173
});
159174
});
175+
176+
describe('showMarkdownInfo property', () => {
177+
beforeEach(() => {
178+
fixture.detectChanges();
179+
});
180+
181+
it('should initialize showMarkdownInfo from appConfig.markdown.showInfoOnCMSMetadataEditPages', () => {
182+
expect(component.showMarkdownInfo).toBe(true);
183+
});
184+
185+
it('should show markdown info alert box when showMarkdownInfo is true', () => {
186+
component.editMode.next(true);
187+
component.showMarkdownInfo = true;
188+
fixture.detectChanges();
189+
const alertElement = fixture.debugElement.query(By.directive(AlertComponent));
190+
expect(alertElement).toBeTruthy();
191+
});
192+
193+
it('should hide markdown info alert box when showMarkdownInfo is false', () => {
194+
component.editMode.next(true);
195+
component.showMarkdownInfo = false;
196+
fixture.detectChanges();
197+
const alertElement = fixture.debugElement.query(By.directive(AlertComponent));
198+
expect(alertElement).toBeFalsy();
199+
});
200+
});
160201
});

src/app/admin/edit-cms-metadata/edit-cms-metadata.component.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
} from '@angular/common';
55
import {
66
Component,
7+
Inject,
78
OnInit,
89
} from '@angular/core';
910
import { FormsModule } from '@angular/forms';
@@ -15,10 +16,15 @@ import { Operation } from 'fast-json-patch';
1516
import { BehaviorSubject } from 'rxjs';
1617
import { BtnDisabledDirective } from 'src/app/shared/btn-disabled.directive';
1718

19+
import {
20+
APP_CONFIG,
21+
AppConfig,
22+
} from '../../../config/app-config.interface';
1823
import { environment } from '../../../environments/environment';
1924
import { SiteDataService } from '../../core/data/site-data.service';
2025
import { getFirstCompletedRemoteData } from '../../core/shared/operators';
2126
import { Site } from '../../core/shared/site.model';
27+
import { AlertComponent } from '../../shared/alert/alert.component';
2228
import { NotificationsService } from '../../shared/notifications/notifications.service';
2329

2430
/**
@@ -29,6 +35,7 @@ import { NotificationsService } from '../../shared/notifications/notifications.s
2935
templateUrl: './edit-cms-metadata.component.html',
3036
styleUrls: ['./edit-cms-metadata.component.scss'],
3137
imports: [
38+
AlertComponent,
3239
AsyncPipe,
3340
BtnDisabledDirective,
3441
FormsModule,
@@ -65,11 +72,16 @@ export class EditCmsMetadataComponent implements OnInit {
6572
* list of the metadata to be edited by the user
6673
*/
6774
metadataList: string[] = [];
75+
/**
76+
* show markdown info alert box
77+
*/
78+
showMarkdownInfo = this.appConfig.markdown.showInfoOnCMSMetadataEditPages;
6879

6980
constructor(
7081
private siteService: SiteDataService,
7182
private notificationsService: NotificationsService,
7283
private translateService: TranslateService,
84+
@Inject(APP_CONFIG) protected appConfig: AppConfig,
7385
) {
7486
}
7587

src/app/shared/search/search.component.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ describe('SearchComponent', () => {
317317
});
318318

319319
it('should set the "configuration" and "fixedFilterQuery" parameters in the route service', () => {
320-
spyOn(routeServiceStub, 'setParameter');
320+
routeServiceStub.setParameter.calls.reset();
321321
comp.configuration = 'test-configuration';
322322
comp.fixedFilterQuery = 'test-fixed-filter-query';
323323

src/assets/i18n/en.json5

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@
9393

9494
"admin.edit-cms-metadata.back-button": "Back",
9595

96+
"admin.edit-cms-metadata.markdown": "CMS Metadata values support <a href=\"https://www.markdownguide.org/basic-syntax/\" target=\"_blank\">Markdown</a> language.",
97+
9698
"admin.edit-cms-metadata.success": "Metadata successfully updated",
9799

98100
"admin.edit-cms-metadata.error": "An error occurred while updating the metadata",

src/assets/i18n/it.json5

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@
152152
// "admin.edit-cms-metadata.back-button": "Back",
153153
"admin.edit-cms-metadata.back-button": "Indietro",
154154

155+
// "admin.edit-cms-metadata.markdown": "CMS Metadata values support <a href=\"https://www.markdownguide.org/basic-syntax/\" target=\"_blank\">Markdown</a> language.",
156+
"admin.edit-cms-metadata.markdown": "I valori dei metadati CMS supportano il formato <a href=\"https://www.markdownguide.org/basic-syntax/\" target=\"_blank\">Markdown</a>.",
157+
155158
// "admin.edit-cms-metadata.success": "Metadata successfully updated",
156159
"admin.edit-cms-metadata.success": "Metadati aggiornati correttamente",
157160

0 commit comments

Comments
 (0)