From ea85961d6f04d629b5eb0a36a20e14b750ed292d Mon Sep 17 00:00:00 2001 From: "Maciej Kleban dawnwender@gmail.com" Date: Thu, 12 Feb 2026 15:08:27 +0100 Subject: [PATCH 1/7] [CRIS-Merger] Port CMS metadata edit feature from CRIS --- .../admin-edit-cms-metadata.component.html | 64 +++++++ .../admin-edit-cms-metadata.component.scss | 0 .../admin-edit-cms-metadata.component.spec.ts | 160 +++++++++++++++++ .../admin-edit-cms-metadata.component.ts | 162 ++++++++++++++++++ src/app/admin/admin-routes.ts | 7 + src/app/app.menus.ts | 2 + src/app/core/data/base/base-data.service.ts | 6 + src/app/core/data/site-data.service.spec.ts | 5 +- src/app/core/data/site-data.service.ts | 24 +++ src/app/footer/footer.component.html | 89 +++++----- src/app/footer/footer.component.spec.ts | 26 +++ src/app/footer/footer.component.ts | 20 +++ .../home-news/home-news.component.html | 41 +++-- .../home-news/home-news.component.scss | 4 + .../home-news/home-news.component.ts | 34 +++- src/app/home-page/home-page.component.html | 8 +- src/app/home-page/home-page.component.ts | 20 ++- .../markdown-viewer.component.html | 1 + .../markdown-viewer.component.scss | 0 .../markdown-viewer.component.spec.ts | 43 +++++ .../markdown-viewer.component.ts | 17 ++ .../menu/providers/edit-cms-metadata.menu.ts | 54 ++++++ src/assets/i18n/ar.json5 | 39 +++++ src/assets/i18n/bn.json5 | 39 +++++ src/assets/i18n/ca.json5 | 40 +++++ src/assets/i18n/cs.json5 | 39 +++++ src/assets/i18n/de.json5 | 39 +++++ src/assets/i18n/el.json5 | 39 +++++ src/assets/i18n/en.json5 | 20 +++ src/assets/i18n/es.json5 | 39 +++++ src/assets/i18n/fa.json5 | 39 +++++ src/assets/i18n/fi.json5 | 39 +++++ src/assets/i18n/fr.json5 | 40 +++++ src/assets/i18n/gd.json5 | 39 +++++ src/assets/i18n/gu.json5 | 41 +++++ src/assets/i18n/hi.json5 | 39 +++++ src/assets/i18n/hu.json5 | 39 +++++ src/assets/i18n/it.json5 | 39 +++++ src/assets/i18n/ja.json5 | 39 +++++ src/assets/i18n/kk.json5 | 39 +++++ src/assets/i18n/lv.json5 | 39 +++++ src/assets/i18n/ml.json5 | 40 +++++ src/assets/i18n/mr.json5 | 41 +++++ src/assets/i18n/nl.json5 | 39 +++++ src/assets/i18n/od.json5 | 40 +++++ src/assets/i18n/pl.json5 | 39 +++++ src/assets/i18n/pt-BR.json5 | 41 +++++ src/assets/i18n/pt-PT.json5 | 39 +++++ src/assets/i18n/ru.json5 | 38 ++++ src/assets/i18n/sr-cyr.json5 | 39 +++++ src/assets/i18n/sr-lat.json5 | 39 +++++ src/assets/i18n/sv.json5 | 39 +++++ src/assets/i18n/sw.json5 | 39 +++++ src/assets/i18n/ta.json5 | 41 +++++ src/assets/i18n/te.json5 | 40 +++++ src/assets/i18n/tr.json5 | 39 +++++ src/assets/i18n/uk.json5 | 39 +++++ src/assets/i18n/vi.json5 | 39 +++++ src/config/app-config.interface.ts | 2 + src/config/cms-metadata.ts | 5 + src/config/default-app-config.ts | 9 + src/environments/environment.test.ts | 8 + .../custom/app/footer/footer.component.ts | 2 + .../home-news/home-news.component.ts | 6 + .../app/home-page/home-page.component.ts | 5 +- .../home-news/home-news.component.html | 65 ++++--- .../home-news/home-news.component.ts | 7 +- 67 files changed, 2199 insertions(+), 94 deletions(-) create mode 100644 src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.html create mode 100644 src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.scss create mode 100644 src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts create mode 100644 src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.ts create mode 100644 src/app/shared/markdown-viewer/markdown-viewer.component.html create mode 100644 src/app/shared/markdown-viewer/markdown-viewer.component.scss create mode 100644 src/app/shared/markdown-viewer/markdown-viewer.component.spec.ts create mode 100644 src/app/shared/markdown-viewer/markdown-viewer.component.ts create mode 100644 src/app/shared/menu/providers/edit-cms-metadata.menu.ts create mode 100644 src/config/cms-metadata.ts diff --git a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.html b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.html new file mode 100644 index 00000000000..ff32c6f0b2f --- /dev/null +++ b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.html @@ -0,0 +1,64 @@ +@if (editMode | async) { + +} +@else { + +} + + +
+

{{'menu.section.cms.edit.metadata.head' | translate}}

+
+ + + + +
+
+
+ + + +
+

{{'admin.edit-cms-metadata.title' | translate}} '{{selectedMetadata}}'

+
+
+ @for (lang of languageList; track $index) { +
+ + +
+ } +
+
+ +
+
+ + + +
+
+ + +
+
+
diff --git a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.scss b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts new file mode 100644 index 00000000000..903b8ef9dc9 --- /dev/null +++ b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts @@ -0,0 +1,160 @@ +import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { + ComponentFixture, + TestBed, + waitForAsync, +} from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { By } from '@angular/platform-browser'; +import { + TranslateLoader, + TranslateModule, +} from '@ngx-translate/core'; +import { of } from 'rxjs'; + +import { environment } from '../../../environments/environment.test'; +import { SiteDataService } from '../../core/data/site-data.service'; +import { Site } from '../../core/shared/site.model'; +import { AdminEditCmsMetadataComponent } from './admin-edit-cms-metadata.component'; +import { TranslateLoaderMock } from '@dspace/core/testing/translate-loader.mock'; +import { NotificationsServiceStub } from '@dspace/core/testing/notifications-service.stub'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; + +describe('AdminEditCmsMetadataComponent', () => { + + let component: AdminEditCmsMetadataComponent; + let fixture: ComponentFixture; + const site = Object.assign(new Site(), { + metadata: { }, + }); + + const siteServiceStub = jasmine.createSpyObj('SiteDataService', { + find: jasmine.createSpy('find'), + patch: jasmine.createSpy('patch'), + }); + + const metadataValueMap = new Map([ + ['en', ''], + ['de', ''], + ['cs', ''], + ['nl', ''], + ['pt', ''], + ['fr', ''], + ['lv', ''], + ['bn', ''], + ['el', ''], + ]); + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + FormsModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useClass: TranslateLoaderMock, + }, + }), + AdminEditCmsMetadataComponent, + ], + providers: [ + { provide: NotificationsService, useValue: NotificationsServiceStub }, + { provide: SiteDataService, useValue: siteServiceStub }, + ], + schemas: [NO_ERRORS_SCHEMA], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminEditCmsMetadataComponent); + component = fixture.componentInstance; + siteServiceStub.find.and.returnValue(of(site)); + siteServiceStub.patch.and.returnValue(of(site)); + }); + + describe('', () => { + + beforeEach(() => { + // component.editMode = false; + fixture.detectChanges(); + }); + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should show metadata cms list correctly', () => { + const metadataListLength = environment.cms.metadataList.length; + const selectMetadata = fixture.debugElement.query(By.css('select')); + expect(selectMetadata.children).toHaveSize(metadataListLength + 1); + }); + + }); + + describe('when the edit button is clicked', () => { + beforeEach(() => { + spyOn(component, 'editSelectedMetadata'); + component.selectedMetadata = 'metadata'; + fixture.detectChanges(); + }); + it('should call selectMetadataToEdit', () => { + const editButton = fixture.debugElement.query(By.css('#edit-metadata-btn')); + editButton.nativeElement.click(); + expect(component.editSelectedMetadata).toHaveBeenCalled(); + }); + }); + + describe('after the button edit is clicked', () => { + + beforeEach(() => { + component.selectedMetadata = environment.cms.metadataList[0]; + component.selectedMetadataValues = metadataValueMap; + component.editMode.next(true); + fixture.detectChanges(); + }); + + it('should render textareas of the languages', () => { + const languagesLength = environment.languages.filter((l) => l.active).length; + const textareas = fixture.debugElement.queryAll(By.css('textarea')); + console.log(textareas.length, languagesLength); + expect(textareas).toHaveSize(languagesLength); + }); + + describe('after the button save is clicked', () => { + + it('should call method edit', () => { + spyOn(component, 'saveMetadata'); + const saveButton = fixture.debugElement.query(By.css('#save-metadata-btn')); + saveButton.nativeElement.click(); + expect(component.saveMetadata).toHaveBeenCalled(); + }); + + it('should call method patch of service', () => { + component.selectedMetadata = environment.cms.metadataList[0]; + const saveButton = fixture.debugElement.query(By.css('#save-metadata-btn')); + saveButton.nativeElement.click(); + const operations = []; + operations.push({ + op: 'replace', + path: '/metadata/' + component.selectedMetadata, + value: { + value: component.selectedMetadataValues.get(environment.languages[0].code), + language: environment.languages[0].code, + }, + }); + component.selectedMetadataValues.forEach((value, key) => { + if (key !== environment.languages[0].code) { + operations.push({ + op: 'add', + path: '/metadata/' + component.selectedMetadata, + value: { + value: value, + language: key, + }, + }); + } + }); + expect(siteServiceStub.patch).toHaveBeenCalledWith(site, operations); + }); + + }); + }); +}); 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 new file mode 100644 index 00000000000..a14b136ce6d --- /dev/null +++ b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.ts @@ -0,0 +1,162 @@ +import { + AsyncPipe, + NgForOf, + NgIf, + NgTemplateOutlet, +} from '@angular/common'; +import { + Component, + OnInit, +} from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { + TranslateModule, + TranslateService, +} from '@ngx-translate/core'; +import { Operation } from 'fast-json-patch'; +import { BehaviorSubject } from 'rxjs'; +import { BtnDisabledDirective } from 'src/app/shared/btn-disabled.directive'; + +import { environment } from '../../../environments/environment'; +import { SiteDataService } from '../../core/data/site-data.service'; +import { getFirstCompletedRemoteData } from '../../core/shared/operators'; +import { Site } from '../../core/shared/site.model'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; + +/** + * Component representing the page to edit cms metadata for site. + */ +@Component({ + selector: 'ds-edit-homepage-metadata', + templateUrl: './admin-edit-cms-metadata.component.html', + styleUrls: ['./admin-edit-cms-metadata.component.scss'], + imports: [ + FormsModule, + TranslateModule, + AsyncPipe, + NgTemplateOutlet, + BtnDisabledDirective, + ], + standalone: true, +}) +export class AdminEditCmsMetadataComponent implements OnInit { + /** + * default value of the select options + */ + selectedMetadata: string; + /** + * default true to show the select options + */ + editMode: BehaviorSubject = new BehaviorSubject(false); + /** + * The map between language codes available and their label + */ + languageMap: Map = new Map(); + /** + * The list of languages available + */ + languageList: string[] = []; + /** + * key value pair map with language and value of metadata + */ + selectedMetadataValues: Map = new Map(); + /** + * the owner object of the metadataList + */ + site: Site; + /** + * list of the metadata to be edited by the user + */ + metadataList: string[] = []; + + constructor( + private siteService: SiteDataService, + private notificationsService: NotificationsService, + private translateService: TranslateService, + ) { + } + + ngOnInit(): void { + environment.languages.filter((language) => language.active).forEach((language) => { + this.languageMap.set(language.code, language.label); + this.languageList.push(language.code); + }); + environment.cms.metadataList.forEach((md) => { + this.metadataList.push(md); + }); + this.siteService.find().subscribe((site) => { + this.site = site; + }); + } + + /** + * Save metadata values + */ + saveMetadata() { + const operations = this.getOperationsToEditText(); + + this.siteService.patch(this.site, operations).pipe(getFirstCompletedRemoteData()) + .subscribe((restResponse) => { + if (restResponse.hasSucceeded) { + this.site = restResponse.payload; + this.notificationsService.success(this.translateService.get('admin.edit-cms-metadata.success')); + this.selectedMetadata = undefined; + this.editMode.next(false); + } else { + this.notificationsService.error(this.translateService.get('admin.edit-cms-metadata.error')); + } + this.siteService.setStale(); + this.siteService.find().subscribe((site) => { + this.site = site; + }); + }); + } + + /** + * Reset metadata selection and go back to the select options + */ + back() { + this.selectedMetadata = undefined; + this.editMode.next(false); + } + + /** + * Get the label for a language key using language map + * @param key Key of the language to get the label for + * @returns Label of the language if found, otherwise the key itself + */ + languageLabel(key: string) { + return this.languageMap.get(key) ?? key; + } + + /** + * Start editing selected metadata + */ + editSelectedMetadata() { + if (this.selectedMetadata) { + this.languageList.forEach((languageCode: string) => { + const text = this.site.firstMetadataValue(this.selectedMetadata, { language: languageCode }); + this.selectedMetadataValues.set(languageCode, text); + }); + } + this.editMode.next(true); + } + + /** + * Create a list of operations to send to backend to edit selected metadata + * @returns List of operations to send to backend to edit selected metadata + */ + private getOperationsToEditText(): Operation[] { + const entries = Array.from(this.selectedMetadataValues.entries()); + + // First entry should form a 'replace' operation, then the rest should be an 'add' operation + return entries.map(([language, text], index) => ({ + op: index === 0 ? 'replace' : 'add', + path: `/metadata/${this.selectedMetadata}`, + value: { + value: text ?? '', + language: language, + }, + })); + } +} diff --git a/src/app/admin/admin-routes.ts b/src/app/admin/admin-routes.ts index b2a625951b3..73466147451 100644 --- a/src/app/admin/admin-routes.ts +++ b/src/app/admin/admin-routes.ts @@ -13,6 +13,7 @@ import { } from './admin-routing-paths'; import { ThemedAdminSearchPageComponent } from './admin-search-page/themed-admin-search-page.component'; import { ThemedAdminWorkflowPageComponent } from './admin-workflow-page/themed-admin-workflow-page.component'; +import { AdminEditCmsMetadataComponent } from './admin-edit-cms-metadata/admin-edit-cms-metadata.component'; export const ROUTES: Route[] = [ { @@ -55,6 +56,12 @@ export const ROUTES: Route[] = [ component: BatchImportPageComponent, data: { title: 'admin.batch-import.title', breadcrumbKey: 'admin.batch-import' }, }, + { + path: 'edit-cms-metadata', + resolve: { breadcrumb: i18nBreadcrumbResolver }, + component: AdminEditCmsMetadataComponent, + data: { title: 'admin.edit-cms-metadata.title', breadcrumbKey: 'admin.edit-cms-metadata' }, + }, { path: 'system-wide-alert', resolve: { breadcrumb: i18nBreadcrumbResolver }, diff --git a/src/app/app.menus.ts b/src/app/app.menus.ts index e230b039719..1b37041f722 100644 --- a/src/app/app.menus.ts +++ b/src/app/app.menus.ts @@ -35,6 +35,7 @@ import { StatisticsMenuProvider } from './shared/menu/providers/statistics.menu' import { SystemWideAlertMenuProvider } from './shared/menu/providers/system-wide-alert.menu'; import { WithdrawnReinstateItemMenuProvider } from './shared/menu/providers/withdrawn-reinstate-item.menu'; import { WorkflowMenuProvider } from './shared/menu/providers/workflow.menu'; +import { EditCMSMetadataMenuProvider } from './shared/menu/providers/edit-cms-metadata.menu'; /** * Represents and builds the menu structure for the three available menus (public navbar, admin sidebar and the dso edit @@ -75,6 +76,7 @@ export const MENUS = buildMenuStructure({ SystemWideAlertMenuProvider, CoarNotifyMenuProvider, AuditOverviewMenuProvider, + EditCMSMetadataMenuProvider, ], [MenuID.DSO_EDIT]: [ DsoOptionMenuProvider.withSubs([ diff --git a/src/app/core/data/base/base-data.service.ts b/src/app/core/data/base/base-data.service.ts index 93f85f080da..309ab33898e 100644 --- a/src/app/core/data/base/base-data.service.ts +++ b/src/app/core/data/base/base-data.service.ts @@ -51,6 +51,12 @@ import { RequestService } from '../request.service'; import { HALDataService } from './hal-data-service.interface'; export const EMBED_SEPARATOR = '%2F'; + +/** + * The default method to construct an ID endpoint +*/ +export const constructIdEndpointDefault = (endpoint, resourceID) => `${endpoint}/${resourceID}`; + /** * Common functionality for data services. * Specific functionality that not all services would need diff --git a/src/app/core/data/site-data.service.spec.ts b/src/app/core/data/site-data.service.spec.ts index 596cbc8b02c..79d499894c5 100644 --- a/src/app/core/data/site-data.service.spec.ts +++ b/src/app/core/data/site-data.service.spec.ts @@ -14,6 +14,7 @@ import { testFindAllDataImplementation } from './base/find-all-data.spec'; import { FindListOptions } from './find-list-options.model'; import { RequestService } from './request.service'; import { SiteDataService } from './site-data.service'; +import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; describe('SiteDataService', () => { let scheduler: TestScheduler; @@ -22,6 +23,7 @@ describe('SiteDataService', () => { let requestService: RequestService; let rdbService: RemoteDataBuildService; let objectCache: ObjectCacheService; + let comparator: DefaultChangeAnalyzer; const testObject = Object.assign(new Site(), { uuid: '9b4f22f4-164a-49db-8817-3316b6ee5746', @@ -55,11 +57,12 @@ describe('SiteDataService', () => { rdbService, objectCache, halService, + comparator, ); }); describe('composition', () => { - const initService = () => new SiteDataService(null, null, null, null); + const initService = () => new SiteDataService(null, null, null, null, null); testFindAllDataImplementation(initService); }); diff --git a/src/app/core/data/site-data.service.ts b/src/app/core/data/site-data.service.ts index b1f9581804c..67828e97ec7 100644 --- a/src/app/core/data/site-data.service.ts +++ b/src/app/core/data/site-data.service.ts @@ -17,6 +17,11 @@ import { FindListOptions } from './find-list-options.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; +import { Operation } from 'fast-json-patch/module/core'; +import { PatchData, PatchDataImpl } from './base/patch-data'; +import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; + +import { constructIdEndpointDefault } from './base/identifiable-data.service'; /** * Service responsible for handling requests related to the Site object @@ -24,16 +29,19 @@ import { RequestService } from './request.service'; @Injectable({ providedIn: 'root' }) export class SiteDataService extends BaseDataService implements FindAllData { private findAllData: FindAllData; + private patchData: PatchData; constructor( protected requestService: RequestService, protected rdbService: RemoteDataBuildService, protected objectCache: ObjectCacheService, protected halService: HALEndpointService, + protected comparator: DefaultChangeAnalyzer, ) { super('sites', requestService, rdbService, objectCache, halService); this.findAllData = new FindAllDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, this.responseMsToLive); + this.patchData = new PatchDataImpl(this.linkPath, requestService, rdbService, objectCache, halService, comparator, this.responseMsToLive, constructIdEndpointDefault); } /** @@ -64,4 +72,20 @@ export class SiteDataService extends BaseDataService implements FindAllDat public findAll(options?: FindListOptions, useCachedVersionIfAvailable?: boolean, reRequestOnStale?: boolean, ...linksToFollow: FollowLinkConfig[]): Observable>> { return this.findAllData.findAll(options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow); } + + /** + * Send a patch request for a specified object + * @param {Site} object The object to send a patch request for + * @param {Operation[]} operations The patch operations to be performed + */ + patch(object: Site, operations: Operation[]): Observable> { + return this.patchData.patch(object, operations); + } + + /** + * Set the processes stale + */ + setStale(): Observable { + return this.requestService.setStaleByHrefSubstring(this.linkPath); + } } diff --git a/src/app/footer/footer.component.html b/src/app/footer/footer.component.html index b4461df18a3..f407501d3f8 100644 --- a/src/app/footer/footer.component.html +++ b/src/app/footer/footer.component.html @@ -1,49 +1,54 @@
@if (showTopFooter) {
\ No newline at end of file + diff --git a/src/app/footer/footer.component.spec.ts b/src/app/footer/footer.component.spec.ts index 51165e7e6f7..4339bcbc5c6 100644 --- a/src/app/footer/footer.component.spec.ts +++ b/src/app/footer/footer.component.spec.ts @@ -17,14 +17,30 @@ import { of } from 'rxjs'; import { environment } from '../../environments/environment.test'; import { FooterComponent } from './footer.component'; +import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; +import { ResourceType } from '@dspace/core/shared/resource-type'; +import { LocaleService } from '@dspace/core/locale/locale.service'; let comp: FooterComponent; let fixture: ComponentFixture; +let localeService: any; + +const TEST_MODEL = new ResourceType('testmodel'); +const languageList = ['en;q=1', 'de;q=0.8']; +const mockLocaleService = jasmine.createSpyObj('LocaleService', { + getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), + getLanguageCodeList: of(languageList), +}); let notifyInfoService = { isCoarConfigEnabled: () => of(true), }; +const mockDataServiceMap: any = new Map([ + [TEST_MODEL.value, () => import('../core/testing/test-data-service.mock').then(m => m.TestDataService)], +]); + describe('Footer component', () => { beforeEach(waitForAsync(() => { return TestBed.configureTestingModule({ @@ -33,16 +49,26 @@ describe('Footer component', () => { ], providers: [ FooterComponent, + provideMockStore({ + initialState: { + index: { + } + } + }), + { provide: LocaleService, useValue: mockLocaleService }, { provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub }, { provide: NotifyInfoService, useValue: notifyInfoService }, { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, ], }); })); // synchronous beforeEach beforeEach(() => { + localeService = TestBed.inject(LocaleService); + localeService.getCurrentLanguageCode.and.returnValue(of('en')); fixture = TestBed.createComponent(FooterComponent); comp = fixture.componentInstance; }); diff --git a/src/app/footer/footer.component.ts b/src/app/footer/footer.component.ts index d53f85bde79..1af3e1c3963 100644 --- a/src/app/footer/footer.component.ts +++ b/src/app/footer/footer.component.ts @@ -17,12 +17,18 @@ import { NotifyInfoService } from '@dspace/core/coar-notify/notify-info/notify-i import { OrejimeService } from '@dspace/core/cookies/orejime.service'; import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; import { FeatureID } from '@dspace/core/data/feature-authorization/feature-id'; +import { LocaleService } from '@dspace/core/locale/locale.service'; import { hasValue } from '@dspace/shared/utils/empty.util'; import { TranslateModule } from '@ngx-translate/core'; import { + combineLatest, + map, Observable, of, + take, } from 'rxjs'; +import { MarkdownViewerComponent } from '../shared/markdown-viewer/markdown-viewer.component'; +import { SiteDataService } from '@dspace/core/data/site-data.service'; @Component({ selector: 'ds-base-footer', @@ -33,6 +39,7 @@ import { DatePipe, RouterLink, TranslateModule, + MarkdownViewerComponent ], }) export class FooterComponent implements OnInit { @@ -47,12 +54,15 @@ export class FooterComponent implements OnInit { showEndUserAgreement: boolean; showSendFeedback$: Observable; coarLdnEnabled$: Observable; + footerMetadataValue$: Observable; constructor( @Optional() public cookies: OrejimeService, protected authorizationService: AuthorizationDataService, protected notifyInfoService: NotifyInfoService, @Inject(APP_CONFIG) protected appConfig: AppConfig, + private siteService: SiteDataService, + private locale: LocaleService, ) { } @@ -62,6 +72,16 @@ export class FooterComponent implements OnInit { this.showEndUserAgreement = this.appConfig.info.enableEndUserAgreement; this.coarLdnEnabled$ = this.appConfig.info.enableCOARNotifySupport ? this.notifyInfoService.isCoarConfigEnabled() : of(false); this.showSendFeedback$ = this.authorizationService.isAuthorized(FeatureID.CanSendFeedback); + + this.footerMetadataValue$ = combineLatest({ + site$: this.siteService.find().pipe( + take(1) + ), + language$: this.locale.getCurrentLanguageCode(), + }).pipe( + take(1), + map(({ site$, language$ }) => site$?.firstMetadataValue('cris.cms.footer', { language: language$ })), + ); } openCookieSettings() { diff --git a/src/app/home-page/home-news/home-news.component.html b/src/app/home-page/home-news/home-news.component.html index 007c7354adb..ff0a9112d11 100644 --- a/src/app/home-page/home-news/home-news.component.html +++ b/src/app/home-page/home-news/home-news.component.html @@ -1,20 +1,29 @@
-
-
-
-

DSpace 9

-

DSpace is the world leading open source repository platform that enables organisations to:

+ @if (homeNewsMetadataValue$ | async; as homeNewsMetadataValue) { +
+
+
-
    -
  • easily ingest documents, audio, video, datasets and their corresponding Dublin Core metadata -
  • -
  • open up this content to local and global audiences, thanks to the OAI-PMH interface and Google Scholar optimizations -
  • -
  • issue permanent urls and trustworthy identifiers, including optional integrations with handle.net and DataCite DOI
  • -
-

Join an international community of leading institutions using DSpace. -

-
+ } + @else { +
+
+
+

DSpace 9

+

DSpace is the world leading open source repository platform that enables organisations to:

+
+
+
    +
  • easily ingest documents, audio, video, datasets and their corresponding Dublin Core metadata +
  • +
  • open up this content to local and global audiences, thanks to the OAI-PMH interface and Google Scholar optimizations +
  • +
  • issue permanent urls and trustworthy identifiers, including optional integrations with handle.net and DataCite DOI
  • +
+

Join an international community of leading institutions using DSpace. +

+
+ }
diff --git a/src/app/home-page/home-news/home-news.component.scss b/src/app/home-page/home-news/home-news.component.scss index 5ef2ff60f2c..0a018c9796d 100644 --- a/src/app/home-page/home-news/home-news.component.scss +++ b/src/app/home-page/home-news/home-news.component.scss @@ -10,6 +10,10 @@ background-color: var(--ds-home-news-background-color); } +.jumbotron { + background-color: var(--ds-home-news-background-color); +} + a { color: var(--ds-home-news-link-color); 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 0f00843f9d9..d27bbc60b2a 100644 --- a/src/app/home-page/home-news/home-news.component.ts +++ b/src/app/home-page/home-news/home-news.component.ts @@ -1,13 +1,43 @@ -import { Component } from '@angular/core'; +import { AsyncPipe } from '@angular/common'; +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { LocaleService } from '@dspace/core/locale/locale.service'; +import { Site } from '@dspace/core/shared/site.model'; +import { combineLatest, map, Observable, take, tap } from 'rxjs'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-base-home-news', styleUrls: ['./home-news.component.scss'], templateUrl: './home-news.component.html', + imports: [ + MarkdownViewerComponent, + AsyncPipe, + ] }) /** * Component to render the news section on the home page */ -export class HomeNewsComponent { +export class HomeNewsComponent implements OnInit { + + homeNewsMetadataValue$: Observable; + + constructor( + 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('cris.cms.home-news', { language: language$ })), + ); + } + } diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html index b53672768af..0cbf943148f 100644 --- a/src/app/home-page/home-page.component.html +++ b/src/app/home-page/home-page.component.html @@ -1,5 +1,11 @@ - +@if (homeHeaderMetadataValue$ | async; as homeHeaderMetadataValue) { + +} +@else { + + +} @if (showDiscoverFilters) { ; recentSubmissionspageSize: number; showDiscoverFilters: boolean; + homeHeaderMetadataValue$: Observable; constructor( @Inject(APP_CONFIG) protected appConfig: AppConfig, protected route: ActivatedRoute, + private locale: LocaleService, ) { this.recentSubmissionspageSize = this.appConfig.homePage.recentSubmissions.pageSize; this.showDiscoverFilters = this.appConfig.homePage.showDiscoverFilters; @@ -56,6 +62,14 @@ 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('cris.cms.home-header', { language })), + ); } } diff --git a/src/app/shared/markdown-viewer/markdown-viewer.component.html b/src/app/shared/markdown-viewer/markdown-viewer.component.html new file mode 100644 index 00000000000..d5ca0a636e3 --- /dev/null +++ b/src/app/shared/markdown-viewer/markdown-viewer.component.html @@ -0,0 +1 @@ + diff --git a/src/app/shared/markdown-viewer/markdown-viewer.component.scss b/src/app/shared/markdown-viewer/markdown-viewer.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/app/shared/markdown-viewer/markdown-viewer.component.spec.ts b/src/app/shared/markdown-viewer/markdown-viewer.component.spec.ts new file mode 100644 index 00000000000..437b7c9fa9a --- /dev/null +++ b/src/app/shared/markdown-viewer/markdown-viewer.component.spec.ts @@ -0,0 +1,43 @@ +import { + ComponentFixture, + TestBed, +} from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { of } from 'rxjs'; + +import { MathService } from '../../core/shared/math.service'; +import { MarkdownDirective } from '../utils/markdown.directive'; +import { MarkdownViewerComponent } from './markdown-viewer.component'; + +describe('DsMarkdownViewerComponent', () => { + let component: MarkdownViewerComponent; + let fixture: ComponentFixture; + + const mathServiceMock = jasmine.createSpyObj('mathServiceMock', { + ready: jasmine.createSpy('ready'), + render: jasmine.createSpy('render'), + }); + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MarkdownViewerComponent, MarkdownDirective], + providers: [{ + provide: MathService, + useValue: mathServiceMock, + }], + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MarkdownViewerComponent); + component = fixture.componentInstance; + component.value = 'Test markdown'; + mathServiceMock.ready.and.returnValue(of(false)); + fixture.detectChanges(); + }); + + it('should create', () => { + const span = fixture.debugElement.query(By.css('span')); + expect(span).toBeTruthy(); + }); +}); diff --git a/src/app/shared/markdown-viewer/markdown-viewer.component.ts b/src/app/shared/markdown-viewer/markdown-viewer.component.ts new file mode 100644 index 00000000000..28d845a55b6 --- /dev/null +++ b/src/app/shared/markdown-viewer/markdown-viewer.component.ts @@ -0,0 +1,17 @@ +import { + Component, + Input, +} from '@angular/core'; + +import { MarkdownDirective } from '../utils/markdown.directive'; + +@Component({ + selector: 'ds-markdown-viewer', + templateUrl: './markdown-viewer.component.html', + styleUrls: ['./markdown-viewer.component.scss'], + standalone: true, + imports: [MarkdownDirective], +}) +export class MarkdownViewerComponent { + @Input() value: string; +} diff --git a/src/app/shared/menu/providers/edit-cms-metadata.menu.ts b/src/app/shared/menu/providers/edit-cms-metadata.menu.ts new file mode 100644 index 00000000000..0296ecd4b19 --- /dev/null +++ b/src/app/shared/menu/providers/edit-cms-metadata.menu.ts @@ -0,0 +1,54 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ + +import { Injectable } from '@angular/core'; +import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; +import { FeatureID } from '@dspace/core/data/feature-authorization/feature-id'; +import { + combineLatest, + map, + Observable, +} from 'rxjs'; + +import { MenuItemType } from '../menu-item-type.model'; +import { + AbstractMenuProvider, + PartialMenuSection, +} from '../menu-provider.model'; + +/** + * Menu provider to create the "Edit CMS Metadata" menu in the admin sidebar + */ +@Injectable() +export class EditCMSMetadataMenuProvider extends AbstractMenuProvider { + constructor( + protected authorizationService: AuthorizationDataService, + ) { + super(); + } + + public getSections(): Observable { + return combineLatest([ + this.authorizationService.isAuthorized(FeatureID.AdministratorOf), + ]).pipe( + map(([isSiteAdmin]) => { + return [ + { + visible: isSiteAdmin, + model: { + type: MenuItemType.LINK, + text: 'menu.section.edit-cms-metadata', + link: '/admin/edit-cms-metadata', + }, + icon: 'edit', + }, + ] as PartialMenuSection[]; + }), + ); + } +} diff --git a/src/assets/i18n/ar.json5 b/src/assets/i18n/ar.json5 index 4a4f7589d4c..1e929652f47 100644 --- a/src/assets/i18n/ar.json5 +++ b/src/assets/i18n/ar.json5 @@ -10869,5 +10869,44 @@ // "file-download-link.request-copy": "Request a copy of ", "file-download-link.request-copy": "طلب نسخة من ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/bn.json5 b/src/assets/i18n/bn.json5 index 0e302690b37..224f62ad728 100644 --- a/src/assets/i18n/bn.json5 +++ b/src/assets/i18n/bn.json5 @@ -7208,5 +7208,44 @@ "file-download-link.request-copy": "এর একটি অনুলিপি অনুরোধ করুন", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/ca.json5 b/src/assets/i18n/ca.json5 index a984fb254c7..566c9142c94 100644 --- a/src/assets/i18n/ca.json5 +++ b/src/assets/i18n/ca.json5 @@ -11098,5 +11098,45 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } \ No newline at end of file diff --git a/src/assets/i18n/cs.json5 b/src/assets/i18n/cs.json5 index 544c1a63e29..da3ea8df472 100644 --- a/src/assets/i18n/cs.json5 +++ b/src/assets/i18n/cs.json5 @@ -10871,5 +10871,44 @@ // "file-download-link.request-copy": "Request a copy of ", "file-download-link.request-copy": "Požádat o kopii ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/de.json5 b/src/assets/i18n/de.json5 index 8fa3a3a2017..aed1fe7ed6f 100644 --- a/src/assets/i18n/de.json5 +++ b/src/assets/i18n/de.json5 @@ -11145,5 +11145,44 @@ // TODO New key - Add a translation "item.preview.organization.alternateName": "Alternativer name", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/el.json5 b/src/assets/i18n/el.json5 index 64f67ecec35..3bd23f28b23 100644 --- a/src/assets/i18n/el.json5 +++ b/src/assets/i18n/el.json5 @@ -12402,5 +12402,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 3b5c9304714..1a56406f94a 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -7469,4 +7469,24 @@ "submission.sections.describe.relationship-lookup.external-source.import-modal.isOrgUnitOfDataset.added.local-entity": "Successfully added local organization to the selection", "submission.sections.describe.relationship-lookup.external-source.import-modal.isOrgUnitOfDataset.added.new-entity": "Successfully imported and added external organization to the selection", + + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + "admin.edit-cms-metadata.back-button": "Back", + + "admin.edit-cms-metadata.save-button": "Save", + + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + "admin.edit-cms-metadata.edit-button": "Edit", + + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index 7f1b2f4d6f6..bc0c817f57b 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -10975,5 +10975,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/fa.json5 b/src/assets/i18n/fa.json5 index 9f3ed8e9aeb..ac3543663a9 100644 --- a/src/assets/i18n/fa.json5 +++ b/src/assets/i18n/fa.json5 @@ -13347,5 +13347,44 @@ // TODO New key - Add a translation "embargo.listelement.badge": "Embargo until {{ date }}", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/fi.json5 b/src/assets/i18n/fi.json5 index a86f12487c5..b9b71eaa6b6 100644 --- a/src/assets/i18n/fi.json5 +++ b/src/assets/i18n/fi.json5 @@ -12015,5 +12015,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/fr.json5 b/src/assets/i18n/fr.json5 index 46daedcf7fd..538ade09676 100644 --- a/src/assets/i18n/fr.json5 +++ b/src/assets/i18n/fr.json5 @@ -10944,4 +10944,44 @@ // "file-download-link.request-copy": "Request a copy of ", "file-download-link.request-copy": "Demander une copie de ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } diff --git a/src/assets/i18n/gd.json5 b/src/assets/i18n/gd.json5 index 82d1da5d741..6fadca45d7d 100644 --- a/src/assets/i18n/gd.json5 +++ b/src/assets/i18n/gd.json5 @@ -12795,5 +12795,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/gu.json5 b/src/assets/i18n/gu.json5 index dd6cafa82aa..9a36759227a 100644 --- a/src/assets/i18n/gu.json5 +++ b/src/assets/i18n/gu.json5 @@ -8188,4 +8188,45 @@ "embargo.listelement.badge": "એમ્બાર્ગો સુધી {{ date }}", "metadata-export-search.submit.error.limit-exceeded": "માત્ર પ્રથમ {{limit}} આઇટમ્સ નિકાસ કરવામાં આવશે", + + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } diff --git a/src/assets/i18n/hi.json5 b/src/assets/i18n/hi.json5 index 5fb5f9c4dd0..425bbc6b4a1 100644 --- a/src/assets/i18n/hi.json5 +++ b/src/assets/i18n/hi.json5 @@ -11118,5 +11118,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/hu.json5 b/src/assets/i18n/hu.json5 index 34fe46fbd81..b7a92529564 100644 --- a/src/assets/i18n/hu.json5 +++ b/src/assets/i18n/hu.json5 @@ -10878,5 +10878,44 @@ // "item.preview.organization.alternateName": "Alternative name", "item.preview.organization.alternateName": "Alternatív név", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/it.json5 b/src/assets/i18n/it.json5 index 26d70f3d5e9..d1257c23b40 100644 --- a/src/assets/i18n/it.json5 +++ b/src/assets/i18n/it.json5 @@ -12071,5 +12071,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/ja.json5 b/src/assets/i18n/ja.json5 index 2d969c19464..325b2e98e66 100644 --- a/src/assets/i18n/ja.json5 +++ b/src/assets/i18n/ja.json5 @@ -14530,5 +14530,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/kk.json5 b/src/assets/i18n/kk.json5 index 320cd39037f..9ecc06107d7 100644 --- a/src/assets/i18n/kk.json5 +++ b/src/assets/i18n/kk.json5 @@ -12422,5 +12422,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/lv.json5 b/src/assets/i18n/lv.json5 index 1dce108b87f..561932ff8de 100644 --- a/src/assets/i18n/lv.json5 +++ b/src/assets/i18n/lv.json5 @@ -13485,5 +13485,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/ml.json5 b/src/assets/i18n/ml.json5 index c603e661a04..c59dbe3f769 100644 --- a/src/assets/i18n/ml.json5 +++ b/src/assets/i18n/ml.json5 @@ -5842,4 +5842,44 @@ "metadata-export-search.submit.error.limit-exceeded": "ആദ്യ {{limit}} ഇനങ്ങൾ മാത്രം എക്സ്പോർട്ട് ചെയ്യും", "file-download-link.request-copy": "എന്നതിന്റെ ഒരു പകർപ്പ് അഭ്യർത്ഥിക്കുക ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } \ No newline at end of file diff --git a/src/assets/i18n/mr.json5 b/src/assets/i18n/mr.json5 index 51e23f27d9e..8202793a51c 100644 --- a/src/assets/i18n/mr.json5 +++ b/src/assets/i18n/mr.json5 @@ -7256,4 +7256,45 @@ "embargo.listelement.badge": "{{ date }} पर्यंत प्रतिबंध", "metadata-export-search.submit.error.limit-exceeded": "फक्त पहिली {{limit}} आयटम निर्यात केली जातील", + + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } \ No newline at end of file diff --git a/src/assets/i18n/nl.json5 b/src/assets/i18n/nl.json5 index 6f15cef68f1..a1a9b216da5 100644 --- a/src/assets/i18n/nl.json5 +++ b/src/assets/i18n/nl.json5 @@ -13819,5 +13819,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/od.json5 b/src/assets/i18n/od.json5 index 1a46d28b7ea..2f7b8db8803 100644 --- a/src/assets/i18n/od.json5 +++ b/src/assets/i18n/od.json5 @@ -5656,4 +5656,44 @@ "file-download-link.request-copy": "ଏହାର ଏକ କପି ଅନୁରୋଧ କରନ୍ତୁ ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } diff --git a/src/assets/i18n/pl.json5 b/src/assets/i18n/pl.json5 index 6f5f0f1c518..9dd07f3950b 100644 --- a/src/assets/i18n/pl.json5 +++ b/src/assets/i18n/pl.json5 @@ -10953,5 +10953,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/pt-BR.json5 b/src/assets/i18n/pt-BR.json5 index 57512c5a4ed..5a3c2f8afae 100644 --- a/src/assets/i18n/pt-BR.json5 +++ b/src/assets/i18n/pt-BR.json5 @@ -10876,4 +10876,45 @@ "item.preview.organization.address.addressLocality": "Cidade", "item.preview.organization.alternateName": "Nome alternativo", + + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } diff --git a/src/assets/i18n/pt-PT.json5 b/src/assets/i18n/pt-PT.json5 index 9ad0690d571..5cf8918d422 100644 --- a/src/assets/i18n/pt-PT.json5 +++ b/src/assets/i18n/pt-PT.json5 @@ -11046,5 +11046,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/ru.json5 b/src/assets/i18n/ru.json5 index c56c9f7ffb8..75c2e8b2c52 100644 --- a/src/assets/i18n/ru.json5 +++ b/src/assets/i18n/ru.json5 @@ -10264,6 +10264,44 @@ // "browse.metadata.srsc.tree.descrption": "Select a subject to add as search filter", "browse.metadata.srsc.tree.descrption": "Выберите тему для добавления в качестве фильтра поиска", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/sr-cyr.json5 b/src/assets/i18n/sr-cyr.json5 index efeb74806ac..654697d2eea 100644 --- a/src/assets/i18n/sr-cyr.json5 +++ b/src/assets/i18n/sr-cyr.json5 @@ -12043,5 +12043,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/sr-lat.json5 b/src/assets/i18n/sr-lat.json5 index 8f32d44ecae..3a4a796380f 100644 --- a/src/assets/i18n/sr-lat.json5 +++ b/src/assets/i18n/sr-lat.json5 @@ -12040,5 +12040,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/sv.json5 b/src/assets/i18n/sv.json5 index 8bac53d0503..219cb5ec52a 100644 --- a/src/assets/i18n/sv.json5 +++ b/src/assets/i18n/sv.json5 @@ -12851,5 +12851,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/sw.json5 b/src/assets/i18n/sw.json5 index 2d969c19464..325b2e98e66 100644 --- a/src/assets/i18n/sw.json5 +++ b/src/assets/i18n/sw.json5 @@ -14530,5 +14530,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/assets/i18n/ta.json5 b/src/assets/i18n/ta.json5 index 31be5405ea9..b366eeb99b3 100644 --- a/src/assets/i18n/ta.json5 +++ b/src/assets/i18n/ta.json5 @@ -7038,4 +7038,45 @@ "embargo.listelement.badge": "தடை {{ date }} வரை", "metadata-export-search.submit.error.limit-exceeded": "முதல் {{limit}} உருப்படிகள் மட்டுமே ஏற்றுமதி செய்யப்படும்", + + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } \ No newline at end of file diff --git a/src/assets/i18n/te.json5 b/src/assets/i18n/te.json5 index 6f2fe1986b0..c64e114b05a 100644 --- a/src/assets/i18n/te.json5 +++ b/src/assets/i18n/te.json5 @@ -5488,4 +5488,44 @@ "file-download-link.request-copy": "యొక్క కాపీని అభ్యర్థించండి ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", + } \ No newline at end of file diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5 index 43781f5a5a9..942af40b99b 100644 --- a/src/assets/i18n/tr.json5 +++ b/src/assets/i18n/tr.json5 @@ -13045,5 +13045,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/uk.json5 b/src/assets/i18n/uk.json5 index 58c08a82a43..7242333d749 100644 --- a/src/assets/i18n/uk.json5 +++ b/src/assets/i18n/uk.json5 @@ -13067,5 +13067,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } diff --git a/src/assets/i18n/vi.json5 b/src/assets/i18n/vi.json5 index 6ac69abcb3c..7f1ff9f9f3c 100644 --- a/src/assets/i18n/vi.json5 +++ b/src/assets/i18n/vi.json5 @@ -12266,5 +12266,44 @@ // TODO New key - Add a translation "file-download-link.request-copy": "Request a copy of ", + // "admin.edit-cms-metadata.success": "Metadata successfully updated" + // TODO New key - Add a translation + "admin.edit-cms-metadata.success": "Metadata successfully updated", + + // "admin.edit-cms-metadata.back-button": "Back" + // TODO New key - Add a translation + "admin.edit-cms-metadata.back-button": "Back", + + // "admin.edit-cms-metadata.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-cms-metadata.save-button": "Save", + + // "admin.edit-cms-metadata.select-metadata": "Select metadata to edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.select-metadata": "Select metadata to edit", + + // "admin.edit-cms-metadata.edit-button": "Edit" + // TODO New key - Add a translation + "admin.edit-cms-metadata.edit-button": "Edit", + + // "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.breadcrumbs": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.title": "Edit CMS Metadata", + // TODO New key - Add a translation + "admin.edit-cms-metadata.title": "Edit CMS Metadata", + + // "admin.edit-cms-metadata.error": "An error occurred while updating the metadata" + // TODO New key - Add a translation + "admin.edit-cms-metadata.error": "An error occurred while updating the metadata", + + // "menu.section.edit-cms-metadata": "Edit CMS Metadata" + // TODO New key - Add a translation + "menu.section.edit-cms-metadata": "Edit CMS Metadata", + + // "menu.section.cms.edit.metadata.head": "Edit Metadata" + // TODO New key - Add a translation + "menu.section.cms.edit.metadata.head": "Edit Metadata", } \ No newline at end of file diff --git a/src/config/app-config.interface.ts b/src/config/app-config.interface.ts index dda5abae652..f4615d278b2 100644 --- a/src/config/app-config.interface.ts +++ b/src/config/app-config.interface.ts @@ -37,6 +37,7 @@ import { SubmissionConfig } from './submission-config.interface'; import { SuggestionConfig } from './suggestion-config.interfaces'; import { ThemeConfig } from './theme.config'; import { UIServerConfig } from './ui-server-config.interface'; +import { CmsMetadata } from './cms-metadata'; interface AppConfig extends Config { ui: UIServerConfig; @@ -75,6 +76,7 @@ interface AppConfig extends Config { layout: LayoutConfig; searchResult: SearchResultConfig; addToAnyPlugin: AddToAnyPluginConfig; + cms: CmsMetadata; } /** diff --git a/src/config/cms-metadata.ts b/src/config/cms-metadata.ts new file mode 100644 index 00000000000..2824b3ed5be --- /dev/null +++ b/src/config/cms-metadata.ts @@ -0,0 +1,5 @@ +import { Config } from './config.interface'; + +export interface CmsMetadata extends Config { + metadataList: string[]; +} diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index 9ff1d25cc82..0168b6047c2 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -10,6 +10,7 @@ import { AuthConfig } from './auth-config.interfaces'; import { BrowseByConfig } from './browse-by-config.interface'; import { BundleConfig } from './bundle-config.interface'; import { CacheConfig } from './cache-config.interface'; +import { CmsMetadata } from './cms-metadata'; import { CollectionPageConfig } from './collection-page-config.interface'; import { CommunityListConfig } from './community-list-config.interface'; import { CommunityPageConfig } from './community-page-config.interface'; @@ -799,4 +800,12 @@ export class DefaultAppConfig implements AppConfig { showCounters: true, title: 'DSpace demo', }; + + cms: CmsMetadata = { + metadataList: [ + 'cris.cms.home-header', + 'cris.cms.home-news', + 'cris.cms.footer', + ], + }; } diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index f14f2c6b6b5..73eb6cb3e8e 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -578,4 +578,12 @@ export const environment: BuildConfig = { showCounters: true, title: 'DSpace demo', }, + + cms: { + metadataList: [ + 'cris.cms.home-header', + 'cris.cms.home-news', + 'cris.cms.footer', + ], + } }; diff --git a/src/themes/custom/app/footer/footer.component.ts b/src/themes/custom/app/footer/footer.component.ts index 17702769852..fea084ed3fd 100644 --- a/src/themes/custom/app/footer/footer.component.ts +++ b/src/themes/custom/app/footer/footer.component.ts @@ -7,6 +7,7 @@ import { RouterLink } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { FooterComponent as BaseComponent } from '../../../../app/footer/footer.component'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-themed-footer', @@ -19,6 +20,7 @@ import { FooterComponent as BaseComponent } from '../../../../app/footer/footer. DatePipe, RouterLink, TranslateModule, + MarkdownViewerComponent ], }) export class FooterComponent extends BaseComponent { diff --git a/src/themes/custom/app/home-page/home-news/home-news.component.ts b/src/themes/custom/app/home-page/home-news/home-news.component.ts index 59158c3d6f2..c3e75bcbd9e 100644 --- a/src/themes/custom/app/home-page/home-news/home-news.component.ts +++ b/src/themes/custom/app/home-page/home-news/home-news.component.ts @@ -1,6 +1,8 @@ import { Component } from '@angular/core'; import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; +import { AsyncPipe } from '@angular/common'; @Component({ selector: 'ds-themed-home-news', @@ -8,6 +10,10 @@ import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page styleUrls: ['../../../../../app/home-page/home-news/home-news.component.scss'], // templateUrl: './home-news.component.html' templateUrl: '../../../../../app/home-page/home-news/home-news.component.html', + imports: [ + MarkdownViewerComponent, + AsyncPipe + ] }) export class HomeNewsComponent extends BaseComponent { } diff --git a/src/themes/custom/app/home-page/home-page.component.ts b/src/themes/custom/app/home-page/home-page.component.ts index c717a0d53dd..09983663e24 100644 --- a/src/themes/custom/app/home-page/home-page.component.ts +++ b/src/themes/custom/app/home-page/home-page.component.ts @@ -1,4 +1,4 @@ -import { NgTemplateOutlet } from '@angular/common'; +import { AsyncPipe, NgTemplateOutlet } from '@angular/common'; import { Component } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; @@ -10,6 +10,7 @@ import { ThemedTopLevelCommunityListComponent } from '../../../../app/home-page/ import { SuggestionsPopupComponent } from '../../../../app/notifications/suggestions/popup/suggestions-popup.component'; import { ThemedConfigurationSearchPageComponent } from '../../../../app/search-page/themed-configuration-search-page.component'; import { ThemedSearchFormComponent } from '../../../../app/shared/search-form/themed-search-form.component'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-themed-home-page', @@ -27,6 +28,8 @@ import { ThemedSearchFormComponent } from '../../../../app/shared/search-form/th ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, TranslateModule, + MarkdownViewerComponent, + AsyncPipe ], }) export class HomePageComponent extends BaseComponent { diff --git a/src/themes/dspace/app/home-page/home-news/home-news.component.html b/src/themes/dspace/app/home-page/home-news/home-news.component.html index 4a8c96d3199..c7809cfee79 100644 --- a/src/themes/dspace/app/home-page/home-news/home-news.component.html +++ b/src/themes/dspace/app/home-page/home-news/home-news.component.html @@ -1,34 +1,45 @@
-
-
-

DSpace Sandbox

-

This site is running unreleased code which will eventually become DSpace 10. For more information, see the DSpace 10 Release Status.

-

DSpace is the world leading open source repository platform that enables - organisations to:

+ @if (homeNewsMetadataValue$ | async; as homeNewsMetadataValue) { +
+
+ +
-
-
    -
  • easily ingest documents, audio, video, datasets and their corresponding Dublin Core - metadata -
  • -
  • open up this content to local and global audiences, thanks to the OAI-PMH interface and - Google Scholar optimizations -
  • -
  • issue permanent urls and trustworthy identifiers, including optional integrations with - handle.net and DataCite DOI -
  • -
-

Join an international community of leading institutions using DSpace.

-

The test user accounts below have their password set to the name of this - software in lowercase.

-
    -
  • Demo Site Administrator = dspacedemo+admin@gmail.com
  • -
  • Demo Community Administrator = dspacedemo+commadmin@gmail.com
  • -
  • Demo Collection Administrator = dspacedemo+colladmin@gmail.com
  • -
  • Demo Submitter = dspacedemo+submit@gmail.com
  • -
+ } + @else { +
+
+

DSpace Sandbox

+

This site is running unreleased code which will eventually become DSpace 10. For more information, see the DSpace 10 Release Status.

+

DSpace is the world leading open source repository platform that enables + organisations to:

+
+
+
    +
  • easily ingest documents, audio, video, datasets and their corresponding Dublin Core + metadata +
  • +
  • open up this content to local and global audiences, thanks to the OAI-PMH interface and + Google Scholar optimizations +
  • +
  • issue permanent urls and trustworthy identifiers, including optional integrations with + handle.net and DataCite DOI +
  • +
+

Join an international community of leading institutions using DSpace.

+

The test user accounts below have their password set to the name of this + software in lowercase.

+
    +
  • Demo Site Administrator = dspacedemo+admin@gmail.com
  • +
  • Demo Community Administrator = dspacedemo+commadmin@gmail.com
  • +
  • Demo Collection Administrator = dspacedemo+colladmin@gmail.com
  • +
  • Demo Submitter = dspacedemo+submit@gmail.com
  • +
+
+
+ }
diff --git a/src/themes/dspace/app/home-page/home-news/home-news.component.ts b/src/themes/dspace/app/home-page/home-news/home-news.component.ts index 5a7d52d83ea..39ff46ad5f9 100644 --- a/src/themes/dspace/app/home-page/home-news/home-news.component.ts +++ b/src/themes/dspace/app/home-page/home-news/home-news.component.ts @@ -1,15 +1,20 @@ import { Component } from '@angular/core'; import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; +import { AsyncPipe } from '@angular/common'; @Component({ selector: 'ds-themed-home-news', styleUrls: ['./home-news.component.scss'], templateUrl: './home-news.component.html', + imports: [ + MarkdownViewerComponent, + AsyncPipe + ] }) /** * Component to render the news section on the home page */ export class HomeNewsComponent extends BaseComponent {} - From 32bd535c06b7f9555b127176e4a3d0e32232fdec Mon Sep 17 00:00:00 2001 From: "Maciej Kleban dawnwender@gmail.com" Date: Thu, 12 Feb 2026 15:20:11 +0100 Subject: [PATCH 2/7] [CRIS-Merger] Port User Agreement edit feature from CRIS --- .../admin-edit-user-agreement.component.html | 32 +++ ...dmin-edit-user-agreement.component.spec.ts | 113 ++++++++++ .../admin-edit-user-agreement.component.ts | 153 ++++++++++++++ src/app/admin/admin-routes.ts | 7 + src/app/app.menus.ts | 2 + src/app/home-page/home-page.component.html | 1 - .../end-user-agreement-content.component.html | 193 +++++++++--------- ...d-user-agreement-content.component.spec.ts | 49 ++++- .../end-user-agreement-content.component.ts | 60 +++++- .../providers/edit-user-agreement.menu.ts | 54 +++++ src/assets/i18n/ar.json5 | 52 +++++ src/assets/i18n/bn.json5 | 51 +++++ src/assets/i18n/ca.json5 | 50 +++++ src/assets/i18n/cs.json5 | 51 +++++ src/assets/i18n/de.json5 | 51 +++++ src/assets/i18n/el.json5 | 51 +++++ src/assets/i18n/en.json5 | 26 +++ src/assets/i18n/es.json5 | 51 +++++ src/assets/i18n/fa.json5 | 51 +++++ src/assets/i18n/fi.json5 | 51 +++++ src/assets/i18n/fr.json5 | 51 +++++ src/assets/i18n/gd.json5 | 51 +++++ src/assets/i18n/gu.json5 | 51 +++++ src/assets/i18n/hi.json5 | 51 +++++ src/assets/i18n/hu.json5 | 51 +++++ src/assets/i18n/it.json5 | 51 +++++ src/assets/i18n/ja.json5 | 51 +++++ src/assets/i18n/kk.json5 | 51 +++++ src/assets/i18n/lv.json5 | 51 +++++ src/assets/i18n/ml.json5 | 51 +++++ src/assets/i18n/mr.json5 | 51 +++++ src/assets/i18n/nl.json5 | 51 +++++ src/assets/i18n/od.json5 | 51 +++++ src/assets/i18n/pl.json5 | 51 +++++ src/assets/i18n/pt-BR.json5 | 51 +++++ src/assets/i18n/pt-PT.json5 | 51 +++++ src/assets/i18n/ru.json5 | 51 +++++ src/assets/i18n/sr-cyr.json5 | 51 +++++ src/assets/i18n/sr-lat.json5 | 51 +++++ src/assets/i18n/sv.json5 | 51 +++++ src/assets/i18n/sw.json5 | 51 +++++ src/assets/i18n/ta.json5 | 51 +++++ src/assets/i18n/te.json5 | 51 +++++ src/assets/i18n/tr.json5 | 51 +++++ src/assets/i18n/uk.json5 | 51 +++++ src/assets/i18n/vi.json5 | 51 +++++ 46 files changed, 2371 insertions(+), 104 deletions(-) create mode 100644 src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.html create mode 100644 src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts create mode 100644 src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts create mode 100644 src/app/shared/menu/providers/edit-user-agreement.menu.ts diff --git a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.html b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.html new file mode 100644 index 00000000000..9f5947dc18c --- /dev/null +++ b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.html @@ -0,0 +1,32 @@ +
+

{{'admin.edit-user-agreement.header' | translate}}

+ + @for (userAgreementText of (userAgreementTexts | keyvalue); track userAgreementText.key) { +
+ + +
+ } +
+ +
+
+ + + + + + diff --git a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts new file mode 100644 index 00000000000..57b8b324bcb --- /dev/null +++ b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts @@ -0,0 +1,113 @@ +import { CommonModule } from '@angular/common'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { + waitForAsync, + ComponentFixture, + inject, + TestBed, +} from '@angular/core/testing'; +import { + FormsModule, + ReactiveFormsModule, +} from '@angular/forms'; +import { BrowserModule } from '@angular/platform-browser'; +import { RouterTestingModule } from '@angular/router/testing'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { + TranslateLoader, + TranslateModule, +} from '@ngx-translate/core'; +import { + Observable, + of, +} from 'rxjs'; + +import { ScriptDataService } from '../../core/data/processes/script-data.service'; +import { SiteDataService } from '../../core/data/site-data.service'; +import { Site } from '../../core/shared/site.model'; +import { AlertComponent } from '../../shared/alert/alert.component'; +import { AdminEditUserAgreementComponent } from './admin-edit-user-agreement.component'; +import { NotificationsServiceStub } from '@dspace/core/testing/notifications-service.stub'; +import { TranslateLoaderMock } from '@dspace/core/testing/translate-loader.mock'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; +import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; +import { ResourceType } from '@dspace/core/shared/resource-type'; + +const TEST_MODEL = new ResourceType('testmodel'); + +const mockDataServiceMap: any = new Map([ + [TEST_MODEL.value, () => import('../../core/testing/test-data-service.mock').then(m => m.TestDataService)], +]); + +describe('AdminEditUserAgreementComponent', () => { + + let component: AdminEditUserAgreementComponent; + let fixture: ComponentFixture; + + let notificationService: NotificationsServiceStub; + let siteService: any; + let scriptDataService: any; + + const site: Site = Object.assign(new Site(), { + metadata: { + 'dc.rights' : [{ + value: 'This is the End User Agreement text for this test', + language: 'en', + }, + { + value: 'Dies ist der Text der Endbenutzervereinbarung für diesen Test', + language: 'de', + }], + }, + }); + + beforeEach(waitForAsync(() => { + + scriptDataService = {}; + notificationService = new NotificationsServiceStub(); + siteService = { + find(): Observable { + return of(site); + }, + }; + + TestBed.configureTestingModule({ + imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, RouterTestingModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useClass: TranslateLoaderMock, + }, + }), AdminEditUserAgreementComponent], + providers: [AdminEditUserAgreementComponent, + provideMockStore({ + initialState: { + index: { + } + } + }), + { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, + { provide: NotificationsService, useValue: notificationService }, + { provide: SiteDataService, useValue: siteService }, + { provide: ScriptDataService, useValue: scriptDataService }], + schemas: [NO_ERRORS_SCHEMA], + }).overrideComponent(AdminEditUserAgreementComponent, { remove: { imports: [AlertComponent] } }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminEditUserAgreementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create AdminEditUserAgreementComponent', inject([AdminEditUserAgreementComponent], (comp: AdminEditUserAgreementComponent) => { + expect(comp).toBeDefined(); + })); + + it('should fill the text areas with the dc.rights values', waitForAsync(() => { + expect(component.userAgreementTexts.get('en').text).toEqual('This is the End User Agreement text for this test'); + expect(component.userAgreementTexts.get('de').text).toEqual('Dies ist der Text der Endbenutzervereinbarung für diesen Test'); + })); + +}); diff --git a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts new file mode 100644 index 00000000000..903bcd53569 --- /dev/null +++ b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts @@ -0,0 +1,153 @@ +import { + KeyValuePipe, + NgForOf, +} from '@angular/common'; +import { + Component, + OnDestroy, + OnInit, +} from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { + TranslateModule, + TranslateService, +} from '@ngx-translate/core'; +import { Operation } from 'fast-json-patch'; +import { Subscription } from 'rxjs'; + +import { environment } from '../../../environments/environment'; +import { ScriptDataService } from '../../core/data/processes/script-data.service'; +import { SiteDataService } from '../../core/data/site-data.service'; +import { getFirstCompletedRemoteData } from '../../core/shared/operators'; +import { Site } from '../../core/shared/site.model'; +import { AlertComponent } from '../../shared/alert/alert.component'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; + +/** + * Component that represents the user agreement edit page for administrators. + */ +@Component({ + selector: 'ds-admin-edit-user-agreement', + templateUrl: './admin-edit-user-agreement.component.html', + imports: [ + AlertComponent, + TranslateModule, + KeyValuePipe, + FormsModule, + ], + standalone: true, +}) +export class AdminEditUserAgreementComponent implements OnInit, OnDestroy { + + userAgreementTexts: Map = new Map(); + site: Site; + + subs: Subscription[] = []; + + USER_AGREEMENT_TEXT_METADATA = 'dc.rights'; + + USER_AGREEMENT_METADATA = 'dspace.agreements.end-user'; + + constructor(private siteService: SiteDataService, + private modalService: NgbModal, + private translateService: TranslateService, + private notificationsService: NotificationsService, + private scriptDataService: ScriptDataService ) { + + } + + ngOnInit(): void { + + environment.languages.filter((language) => language.active) + .forEach((language) => { + this.userAgreementTexts.set( language.code, { + languageLabel: language.label, + text: '', + }); + }); + + this.subs.push(this.siteService.find().subscribe((site) => { + this.site = site; + for (const metadata of site.metadataAsList) { + if (metadata.key === this.USER_AGREEMENT_TEXT_METADATA) { + const userAgreementText = this.userAgreementTexts.get(metadata.language); + if (userAgreementText != null) { + userAgreementText.text = metadata.value; + } + } + } + })); + } + + /** + * Show the confirm modal to choose if all users must be forced to accept the new user agreement or not. + * @param content the modal content + */ + confirmEdit(content: any) { + this.modalService.open(content).result.then( (result) => { + if (result === 'cancel') { + return; + } + const operations = this.getOperationsToEditText(); + this.subs.push(this.siteService.patch(this.site, operations).pipe( + getFirstCompletedRemoteData(), + ).subscribe((restResponse) => { + if (restResponse.hasSucceeded) { + this.notificationsService.success(this.translateService.get('admin.edit-user-agreement.success')); + if ( result === 'edit-with-reset' ) { + this.deleteAllUserAgreementMetadataValues(); + } + } else { + this.notificationsService.error(this.translateService.get('admin.edit-user-agreement.error')); + } + })); + }); + } + + /** + * Returns the operations to update the user agreement text metadata. + */ + private getOperationsToEditText(): Operation[] { + const firstLanguage = this.userAgreementTexts.keys().next().value; + const operations = []; + operations.push({ + op: 'replace', + path: '/metadata/' + this.USER_AGREEMENT_TEXT_METADATA, + value: { + value: this.userAgreementTexts.get(firstLanguage).text, + language: firstLanguage, + }, + }); + this.userAgreementTexts.forEach((value, key) => { + if (key !== firstLanguage) { + operations.push({ + op: 'add', + path: '/metadata/' + this.USER_AGREEMENT_TEXT_METADATA, + value: { + value: value.text, + language: key, + }, + }); + } + }); + return operations; + } + + /** + * Invoke the script to delete all the the user agreement text metadata values. + */ + private deleteAllUserAgreementMetadataValues() { + this.subs.push(this.scriptDataService.invoke('metadata-deletion', [{ name: '-metadata', value: this.USER_AGREEMENT_METADATA }], []).subscribe()); + } + + ngOnDestroy(): void { + this.subs.forEach((sub) => sub.unsubscribe()); + } + +} + +interface UserAgreementText { + languageLabel: string; + text: string; +} diff --git a/src/app/admin/admin-routes.ts b/src/app/admin/admin-routes.ts index 73466147451..e88e938d752 100644 --- a/src/app/admin/admin-routes.ts +++ b/src/app/admin/admin-routes.ts @@ -14,6 +14,7 @@ import { import { ThemedAdminSearchPageComponent } from './admin-search-page/themed-admin-search-page.component'; import { ThemedAdminWorkflowPageComponent } from './admin-workflow-page/themed-admin-workflow-page.component'; import { AdminEditCmsMetadataComponent } from './admin-edit-cms-metadata/admin-edit-cms-metadata.component'; +import { AdminEditUserAgreementComponent } from './admin-edit-user-agreement/admin-edit-user-agreement.component'; export const ROUTES: Route[] = [ { @@ -62,6 +63,12 @@ export const ROUTES: Route[] = [ component: AdminEditCmsMetadataComponent, data: { title: 'admin.edit-cms-metadata.title', breadcrumbKey: 'admin.edit-cms-metadata' }, }, + { + path: 'edit-user-agreement', + resolve: { breadcrumb: i18nBreadcrumbResolver }, + component: AdminEditUserAgreementComponent, + data: { title: 'admin.edit-user-agreement.title', breadcrumbKey: 'admin.edit-user-agreement' }, + }, { path: 'system-wide-alert', resolve: { breadcrumb: i18nBreadcrumbResolver }, diff --git a/src/app/app.menus.ts b/src/app/app.menus.ts index 1b37041f722..3117c7fb652 100644 --- a/src/app/app.menus.ts +++ b/src/app/app.menus.ts @@ -36,6 +36,7 @@ import { SystemWideAlertMenuProvider } from './shared/menu/providers/system-wide import { WithdrawnReinstateItemMenuProvider } from './shared/menu/providers/withdrawn-reinstate-item.menu'; import { WorkflowMenuProvider } from './shared/menu/providers/workflow.menu'; import { EditCMSMetadataMenuProvider } from './shared/menu/providers/edit-cms-metadata.menu'; +import { EditUserAgreementMenuProvider } from './shared/menu/providers/edit-user-agreement.menu'; /** * Represents and builds the menu structure for the three available menus (public navbar, admin sidebar and the dso edit @@ -77,6 +78,7 @@ export const MENUS = buildMenuStructure({ CoarNotifyMenuProvider, AuditOverviewMenuProvider, EditCMSMetadataMenuProvider, + EditUserAgreementMenuProvider, ], [MenuID.DSO_EDIT]: [ DsoOptionMenuProvider.withSubs([ diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html index 0cbf943148f..c738499a6d9 100644 --- a/src/app/home-page/home-page.component.html +++ b/src/app/home-page/home-page.component.html @@ -1,4 +1,3 @@ - @if (homeHeaderMetadataValue$ | async; as homeHeaderMetadataValue) { } diff --git a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.html b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.html index 79edebd35af..23c13544a41 100644 --- a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.html +++ b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.html @@ -1,95 +1,100 @@

{{ 'info.end-user-agreement.head' | translate }}

-

Last updated May 4, 2023

- -

Agreement to terms

-

These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity ("you") and {{ 'repository.title' | translate }} ("Company", "we", "us", or "our"), concerning your access to and use of this website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the "Site"). You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use and any future amendments thereof.

-

Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use at any time and for any reason. We will alert you about any changes by updating the "Last updated" date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.

-

The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.

- -

Intellectual property rights

-

Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the "Content") and the trademarks, service marks, and logos contained therein (the "Marks") are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of {{ 'info.end-user-agreement.hosting-country' | translate }}, international copyright laws, and international conventions. The Content and the Marks are provided on the Site "AS IS" for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content[a] or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.

-

Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.

- -

User representations

-

By using the Site, you represent and warrant that: (1) all registration information you submit will be true, accurate, current, and complete; (2) you will maintain the accuracy of such information and promptly update such registration information as necessary; (3) you have the legal capacity and you agree to comply with these Terms of Use; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.

-

If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).

- -

User registration

-

You may be required to register with the Site. You agree to keep your password confidential and will be responsible for all use of your account and password. We reserve the right to remove, reclaim, or change a username you select if we determine, in our sole discretion, that such username is inappropriate, obscene, or otherwise objectionable.

- -

Prohibited activities

-

You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.

-

As a user of the Site, you agree not to:

-
    -
  • Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
  • -
  • Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
  • -
  • Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
  • -
  • Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
  • -
  • Use any information obtained from the Site in order to harass, abuse, or harm another person.
  • -
  • Make improper use of our support services or submit false reports of abuse or misconduct.
  • -
  • Use the Site in a manner inconsistent with any applicable laws or regulations.
  • -
  • Engage in unauthorized framing of or linking to the Site.
  • -
  • Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party's uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
  • -
  • Delete the copyright or other proprietary rights notice from any Content.
  • -
  • Attempt to impersonate another user or person or use the username and password of another user.
  • -
  • Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats ("gifs"), 1x1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as "spyware" or "passive collection mechanisms" or "pcms").
  • -
  • Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
  • -
  • Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
  • -
  • Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
  • -
  • Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email or other forms of electronic communication, or creating user accounts by automated means or under false pretenses.
  • -
  • Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
  • -
- -

User generated contributions

-

The Site may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated as non-confidential and non-proprietary. When you create or make available any Contributions, you thereby represent and warrant that:

-
    -
  • The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
  • -
  • You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
  • -
  • You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
  • -
  • Your Contributions are not false, inaccurate, or misleading.
  • -
  • Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
  • -
  • Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
  • -
  • Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
  • -
  • Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person, do not create and are not used to promote violence against a specific person or class of people.
  • -
  • Your Contributions do not violate any applicable law, regulation, or rule.
  • -
  • Your Contributions do not violate the privacy or publicity rights of any third party.
  • -
  • Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
  • -
  • Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, colour, religion, creed or physical handicap.
  • -
  • Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
  • -
-

Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.

- -

Site management

-

We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.

- -

Privacy policy

-

We care about data privacy and security. Please review our Privacy Policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use.

-

Please be advised the Site is hosted in {{ 'info.end-user-agreement.hosting-country' | translate }}. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in {{ 'info.end-user-agreement.hosting-country' | translate }}, then through your continued use of the Site, you are transferring your data to {{ 'info.end-user-agreement.hosting-country' | translate }}, and you agree to have your data transferred to and processed in {{ 'info.end-user-agreement.hosting-country' | translate }}.

- -

Term and termination

-

These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.

-

If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.

- -

Modifications and interruptions

-

We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, change, suspension, or discontinuance of the Site.

-

We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.

- -

Corrections

-

There may be information on the Site that contains typographical errors, inaccuracies, or omissions. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.

- -

Disclaimer

-

THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE'S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.

- -

Limitations of liability

-

IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

- -

Indemnification

-

You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys' fees and expenses, made by any third party due to or arising out of: (1) your Contributions; (2) use of the Site; (3) breach of these Terms of Use; (4) any breach of your representations and warranties set forth in these Terms of Use; (5) your violation of the rights of a third party, including but not limited to intellectual property rights; or (6) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.

- -

User Data

-

We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.

- -

Miscellaneous

-

These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.

- -

[a] The DSpace software used to run this site is open source. Options for reuse and reproduction of the DSpace software is governed by its open source license: https://github.com/DSpace/DSpace/blob/main/LICENSE

+ +@if (userAgreementText$ | async; as text) { + +} @else { +

Last updated May 4, 2023

+ +

Agreement to terms

+

These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity ("you") and {{ 'repository.title' | translate }} ("Company", "we", "us", or "our"), concerning your access to and use of this website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the "Site"). You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use and any future amendments thereof.

+

Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use at any time and for any reason. We will alert you about any changes by updating the "Last updated" date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.

+

The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.

+ +

Intellectual property rights

+

Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the "Content") and the trademarks, service marks, and logos contained therein (the "Marks") are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of {{ 'info.end-user-agreement.hosting-country' | translate }}, international copyright laws, and international conventions. The Content and the Marks are provided on the Site "AS IS" for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content[a] or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.

+

Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.

+ +

User representations

+

By using the Site, you represent and warrant that: (1) all registration information you submit will be true, accurate, current, and complete; (2) you will maintain the accuracy of such information and promptly update such registration information as necessary; (3) you have the legal capacity and you agree to comply with these Terms of Use; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.

+

If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).

+ +

User registration

+

You may be required to register with the Site. You agree to keep your password confidential and will be responsible for all use of your account and password. We reserve the right to remove, reclaim, or change a username you select if we determine, in our sole discretion, that such username is inappropriate, obscene, or otherwise objectionable.

+ +

Prohibited activities

+

You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.

+

As a user of the Site, you agree not to:

+
    +
  • Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
  • +
  • Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
  • +
  • Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
  • +
  • Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
  • +
  • Use any information obtained from the Site in order to harass, abuse, or harm another person.
  • +
  • Make improper use of our support services or submit false reports of abuse or misconduct.
  • +
  • Use the Site in a manner inconsistent with any applicable laws or regulations.
  • +
  • Engage in unauthorized framing of or linking to the Site.
  • +
  • Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party's uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
  • +
  • Delete the copyright or other proprietary rights notice from any Content.
  • +
  • Attempt to impersonate another user or person or use the username and password of another user.
  • +
  • Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats ("gifs"), 1x1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as "spyware" or "passive collection mechanisms" or "pcms").
  • +
  • Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
  • +
  • Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
  • +
  • Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
  • +
  • Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email or other forms of electronic communication, or creating user accounts by automated means or under false pretenses.
  • +
  • Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
  • +
+ +

User generated contributions

+

The Site may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated as non-confidential and non-proprietary. When you create or make available any Contributions, you thereby represent and warrant that:

+
    +
  • The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
  • +
  • You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
  • +
  • You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
  • +
  • Your Contributions are not false, inaccurate, or misleading.
  • +
  • Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
  • +
  • Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
  • +
  • Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
  • +
  • Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person, do not create and are not used to promote violence against a specific person or class of people.
  • +
  • Your Contributions do not violate any applicable law, regulation, or rule.
  • +
  • Your Contributions do not violate the privacy or publicity rights of any third party.
  • +
  • Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
  • +
  • Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, colour, religion, creed or physical handicap.
  • +
  • Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
  • +
+

Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.

+ +

Site management

+

We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.

+ +

Privacy policy

+

We care about data privacy and security. Please review our Privacy Policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use.

+

Please be advised the Site is hosted in {{ 'info.end-user-agreement.hosting-country' | translate }}. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in {{ 'info.end-user-agreement.hosting-country' | translate }}, then through your continued use of the Site, you are transferring your data to {{ 'info.end-user-agreement.hosting-country' | translate }}, and you agree to have your data transferred to and processed in {{ 'info.end-user-agreement.hosting-country' | translate }}.

+ +

Term and termination

+

These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE YOUR ACCOUNT AND ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.

+

If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.

+ +

Modifications and interruptions

+

We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, change, suspension, or discontinuance of the Site.

+

We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.

+ +

Corrections

+

There may be information on the Site that contains typographical errors, inaccuracies, or omissions. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.

+ +

Disclaimer

+

THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE'S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.

+ +

Limitations of liability

+

IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+ +

Indemnification

+

You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys' fees and expenses, made by any third party due to or arising out of: (1) your Contributions; (2) use of the Site; (3) breach of these Terms of Use; (4) any breach of your representations and warranties set forth in these Terms of Use; (5) your violation of the rights of a third party, including but not limited to intellectual property rights; or (6) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.

+ +

User Data

+

We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.

+ +

Miscellaneous

+

These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.

+ +

[a] The DSpace software used to run this site is open source. Options for reuse and reproduction of the DSpace software is governed by its open source license: https://github.com/DSpace/DSpace/blob/main/LICENSE

+} diff --git a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts index e0bc3da890a..b0f29f111bd 100644 --- a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts +++ b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts @@ -8,6 +8,27 @@ import { RouterLink } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { EndUserAgreementContentComponent } from './end-user-agreement-content.component'; +import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; +import { ResourceType } from '@dspace/core/shared/resource-type'; +import { environment } from '../../../../environments/environment.test'; +import { APP_CONFIG } from '@dspace/config/app-config.interface'; +import { LocaleService } from '@dspace/core/locale/locale.service'; +import { of } from 'rxjs'; + +let localeService: any; + +const TEST_MODEL = new ResourceType('testmodel'); + +const mockDataServiceMap: any = new Map([ + [TEST_MODEL.value, () => import('../../../core/testing/test-data-service.mock').then(m => m.TestDataService)], +]); + +const languageList = ['en;q=1', 'de;q=0.8']; +const mockLocaleService = jasmine.createSpyObj('LocaleService', { + getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), + getLanguageCodeList: of(languageList), +}); describe('EndUserAgreementContentComponent', () => { let component: EndUserAgreementContentComponent; @@ -16,18 +37,32 @@ describe('EndUserAgreementContentComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [TranslateModule.forRoot(), EndUserAgreementContentComponent], + providers: [ + EndUserAgreementContentComponent, + provideMockStore({ + initialState: { + index: { + } + } + }), + { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, + { provide: APP_CONFIG, useValue: environment }, + { provide: LocaleService, useValue: mockLocaleService }, + ], schemas: [NO_ERRORS_SCHEMA], }) - .overrideComponent(EndUserAgreementContentComponent, { - remove: { - imports: [RouterLink], - }, - }) - .compileComponents(); + .overrideComponent(EndUserAgreementContentComponent, { + remove: { + imports: [RouterLink], + }, + }) + .compileComponents(); })); - + beforeEach(() => { fixture = TestBed.createComponent(EndUserAgreementContentComponent); + localeService = TestBed.inject(LocaleService); + localeService.getCurrentLanguageCode.and.returnValue(of('en')); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts index a0e8f5b8613..64a017aa86c 100644 --- a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts +++ b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts @@ -1,6 +1,15 @@ -import { Component } from '@angular/core'; +import { AsyncPipe, NgIf } from '@angular/common'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { SiteDataService } from '@dspace/core/data/site-data.service'; +import { LocaleService } from '@dspace/core/locale/locale.service'; +import { MetadatumViewModel } from '@dspace/core/shared/metadata.models'; +import { isNotEmpty } from '@dspace/shared/utils/empty.util'; import { TranslateModule } from '@ngx-translate/core'; +import { combineLatest } from 'rxjs'; +import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; +import { Subscription } from 'rxjs/internal/Subscription'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-end-user-agreement-content', @@ -9,10 +18,57 @@ import { TranslateModule } from '@ngx-translate/core'; imports: [ RouterLink, TranslateModule, + MarkdownViewerComponent, + AsyncPipe, ], }) /** * Component displaying the contents of the End User Agreement */ -export class EndUserAgreementContentComponent { +export class EndUserAgreementContentComponent implements OnInit, OnDestroy { + + USER_AGREEMENT_TEXT_METADATA = 'dc.rights'; + + subs: Subscription[] = []; + + userAgreementText$: BehaviorSubject = new BehaviorSubject(null); + + fallbackText = 'info.end-user-agreement.content.fallback'; + + constructor(private siteService: SiteDataService, + private localeService: LocaleService, + ) { + } + + /** + * Filtering function used to filter out metadata values that do not match selected language + * @param metadata The metadata to filter + * @param langCode The language code to filter by + * @returns True if the metadata is for the user agreement text and matches the language code, false otherwise + */ + private filterMetadata(metadata: MetadatumViewModel, langCode: string) { + return metadata.key === this.USER_AGREEMENT_TEXT_METADATA && metadata.language === langCode && isNotEmpty(metadata.value); + } + + ngOnInit(): void { + this.subs.push( + combineLatest([this.siteService.find(), this.localeService.getCurrentLanguageCode()]).subscribe(([site, langCode]) => { + const fallbackLangCode = 'en'; + + const textArray = site?.metadataAsList.filter((metadata) => + this.filterMetadata(metadata, langCode), + ); + const fallbackTextArray = site?.metadataAsList.filter((metadata) => + this.filterMetadata(metadata, fallbackLangCode), + ); + + const value = textArray[0]?.value || fallbackTextArray[0]?.value || ''; + this.userAgreementText$.next(value); + }), + ); + } + + ngOnDestroy(): void { + this.subs.forEach((sub) => sub.unsubscribe()); + } } diff --git a/src/app/shared/menu/providers/edit-user-agreement.menu.ts b/src/app/shared/menu/providers/edit-user-agreement.menu.ts new file mode 100644 index 00000000000..a9f49e5bb4f --- /dev/null +++ b/src/app/shared/menu/providers/edit-user-agreement.menu.ts @@ -0,0 +1,54 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ + +import { Injectable } from '@angular/core'; +import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; +import { FeatureID } from '@dspace/core/data/feature-authorization/feature-id'; +import { + combineLatest, + map, + Observable, +} from 'rxjs'; + +import { MenuItemType } from '../menu-item-type.model'; +import { + AbstractMenuProvider, + PartialMenuSection, +} from '../menu-provider.model'; + +/** + * Menu provider to create the "Edit User Agreement" menu in the admin sidebar + */ +@Injectable() +export class EditUserAgreementMenuProvider extends AbstractMenuProvider { + constructor( + protected authorizationService: AuthorizationDataService, + ) { + super(); + } + + public getSections(): Observable { + return combineLatest([ + this.authorizationService.isAuthorized(FeatureID.AdministratorOf), + ]).pipe( + map(([isSiteAdmin]) => { + return [ + { + visible: isSiteAdmin, + model: { + type: MenuItemType.LINK, + text: 'menu.section.edit-user-agreement', + link: '/admin/edit-user-agreement', + }, + icon: 'list-alt', + }, + ] as PartialMenuSection[]; + }), + ); + } +} diff --git a/src/assets/i18n/ar.json5 b/src/assets/i18n/ar.json5 index 1e929652f47..6a71813ae88 100644 --- a/src/assets/i18n/ar.json5 +++ b/src/assets/i18n/ar.json5 @@ -10909,4 +10909,56 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", + } diff --git a/src/assets/i18n/bn.json5 b/src/assets/i18n/bn.json5 index 224f62ad728..1c0ba539c7a 100644 --- a/src/assets/i18n/bn.json5 +++ b/src/assets/i18n/bn.json5 @@ -7248,4 +7248,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/ca.json5 b/src/assets/i18n/ca.json5 index 566c9142c94..4b08b7a0279 100644 --- a/src/assets/i18n/ca.json5 +++ b/src/assets/i18n/ca.json5 @@ -11138,5 +11138,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/cs.json5 b/src/assets/i18n/cs.json5 index da3ea8df472..c6d473d607d 100644 --- a/src/assets/i18n/cs.json5 +++ b/src/assets/i18n/cs.json5 @@ -10911,4 +10911,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/de.json5 b/src/assets/i18n/de.json5 index aed1fe7ed6f..8610c51b8b0 100644 --- a/src/assets/i18n/de.json5 +++ b/src/assets/i18n/de.json5 @@ -11185,4 +11185,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/el.json5 b/src/assets/i18n/el.json5 index 3bd23f28b23..387301adf8e 100644 --- a/src/assets/i18n/el.json5 +++ b/src/assets/i18n/el.json5 @@ -12442,4 +12442,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 1a56406f94a..23982f96d3a 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -7489,4 +7489,30 @@ "menu.section.edit-cms-metadata": "Edit CMS Metadata", "menu.section.cms.edit.metadata.head": "Edit Metadata", + + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + "admin.edit-user-agreement.confirm.no": "No, update only", + + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + "menu.section.edit-user-agreement": "Edit User Agreement", + + "admin.edit-user-agreement.save-button": "Save", + + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + "admin.edit-user-agreement.header": "Edit User Agreement", + + "admin.edit-user-agreement.success": "User agreement successfully updated", + + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/es.json5 b/src/assets/i18n/es.json5 index bc0c817f57b..6e3c30cc658 100644 --- a/src/assets/i18n/es.json5 +++ b/src/assets/i18n/es.json5 @@ -11015,4 +11015,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/fa.json5 b/src/assets/i18n/fa.json5 index ac3543663a9..942e1937e32 100644 --- a/src/assets/i18n/fa.json5 +++ b/src/assets/i18n/fa.json5 @@ -13387,4 +13387,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/fi.json5 b/src/assets/i18n/fi.json5 index b9b71eaa6b6..246713ec6f9 100644 --- a/src/assets/i18n/fi.json5 +++ b/src/assets/i18n/fi.json5 @@ -12055,4 +12055,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/fr.json5 b/src/assets/i18n/fr.json5 index 538ade09676..20563884bba 100644 --- a/src/assets/i18n/fr.json5 +++ b/src/assets/i18n/fr.json5 @@ -10984,4 +10984,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/gd.json5 b/src/assets/i18n/gd.json5 index 6fadca45d7d..41c040381ef 100644 --- a/src/assets/i18n/gd.json5 +++ b/src/assets/i18n/gd.json5 @@ -12835,4 +12835,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/gu.json5 b/src/assets/i18n/gu.json5 index 9a36759227a..17c50002763 100644 --- a/src/assets/i18n/gu.json5 +++ b/src/assets/i18n/gu.json5 @@ -8229,4 +8229,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/hi.json5 b/src/assets/i18n/hi.json5 index 425bbc6b4a1..3da187d008e 100644 --- a/src/assets/i18n/hi.json5 +++ b/src/assets/i18n/hi.json5 @@ -11158,4 +11158,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/hu.json5 b/src/assets/i18n/hu.json5 index b7a92529564..984ccb3de8a 100644 --- a/src/assets/i18n/hu.json5 +++ b/src/assets/i18n/hu.json5 @@ -10918,4 +10918,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/it.json5 b/src/assets/i18n/it.json5 index d1257c23b40..7a0850d552d 100644 --- a/src/assets/i18n/it.json5 +++ b/src/assets/i18n/it.json5 @@ -12111,4 +12111,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/ja.json5 b/src/assets/i18n/ja.json5 index 325b2e98e66..f89961a299a 100644 --- a/src/assets/i18n/ja.json5 +++ b/src/assets/i18n/ja.json5 @@ -14570,4 +14570,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/kk.json5 b/src/assets/i18n/kk.json5 index 9ecc06107d7..4ea12370934 100644 --- a/src/assets/i18n/kk.json5 +++ b/src/assets/i18n/kk.json5 @@ -12462,4 +12462,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/lv.json5 b/src/assets/i18n/lv.json5 index 561932ff8de..aa2c5d2022a 100644 --- a/src/assets/i18n/lv.json5 +++ b/src/assets/i18n/lv.json5 @@ -13525,4 +13525,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/ml.json5 b/src/assets/i18n/ml.json5 index c59dbe3f769..67af3b6663c 100644 --- a/src/assets/i18n/ml.json5 +++ b/src/assets/i18n/ml.json5 @@ -5882,4 +5882,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/mr.json5 b/src/assets/i18n/mr.json5 index 8202793a51c..1d4d87ecc62 100644 --- a/src/assets/i18n/mr.json5 +++ b/src/assets/i18n/mr.json5 @@ -7297,4 +7297,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/nl.json5 b/src/assets/i18n/nl.json5 index a1a9b216da5..f473a1a60ec 100644 --- a/src/assets/i18n/nl.json5 +++ b/src/assets/i18n/nl.json5 @@ -13859,4 +13859,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/od.json5 b/src/assets/i18n/od.json5 index 2f7b8db8803..b43b02d2e94 100644 --- a/src/assets/i18n/od.json5 +++ b/src/assets/i18n/od.json5 @@ -5696,4 +5696,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/pl.json5 b/src/assets/i18n/pl.json5 index 9dd07f3950b..18b89817e75 100644 --- a/src/assets/i18n/pl.json5 +++ b/src/assets/i18n/pl.json5 @@ -10993,4 +10993,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/pt-BR.json5 b/src/assets/i18n/pt-BR.json5 index 5a3c2f8afae..3c05d950306 100644 --- a/src/assets/i18n/pt-BR.json5 +++ b/src/assets/i18n/pt-BR.json5 @@ -10917,4 +10917,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/pt-PT.json5 b/src/assets/i18n/pt-PT.json5 index 5cf8918d422..c28495e3585 100644 --- a/src/assets/i18n/pt-PT.json5 +++ b/src/assets/i18n/pt-PT.json5 @@ -11086,4 +11086,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/ru.json5 b/src/assets/i18n/ru.json5 index 75c2e8b2c52..9da685ed199 100644 --- a/src/assets/i18n/ru.json5 +++ b/src/assets/i18n/ru.json5 @@ -10304,4 +10304,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/sr-cyr.json5 b/src/assets/i18n/sr-cyr.json5 index 654697d2eea..be353468e6a 100644 --- a/src/assets/i18n/sr-cyr.json5 +++ b/src/assets/i18n/sr-cyr.json5 @@ -12083,4 +12083,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/sr-lat.json5 b/src/assets/i18n/sr-lat.json5 index 3a4a796380f..261e4fa6922 100644 --- a/src/assets/i18n/sr-lat.json5 +++ b/src/assets/i18n/sr-lat.json5 @@ -12080,4 +12080,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/sv.json5 b/src/assets/i18n/sv.json5 index 219cb5ec52a..91026a5d560 100644 --- a/src/assets/i18n/sv.json5 +++ b/src/assets/i18n/sv.json5 @@ -12891,4 +12891,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/sw.json5 b/src/assets/i18n/sw.json5 index 325b2e98e66..f89961a299a 100644 --- a/src/assets/i18n/sw.json5 +++ b/src/assets/i18n/sw.json5 @@ -14570,4 +14570,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/ta.json5 b/src/assets/i18n/ta.json5 index b366eeb99b3..0995a8cab9a 100644 --- a/src/assets/i18n/ta.json5 +++ b/src/assets/i18n/ta.json5 @@ -7079,4 +7079,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/te.json5 b/src/assets/i18n/te.json5 index c64e114b05a..44b885f7b37 100644 --- a/src/assets/i18n/te.json5 +++ b/src/assets/i18n/te.json5 @@ -5528,4 +5528,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file diff --git a/src/assets/i18n/tr.json5 b/src/assets/i18n/tr.json5 index 942af40b99b..2dbc100de09 100644 --- a/src/assets/i18n/tr.json5 +++ b/src/assets/i18n/tr.json5 @@ -13085,4 +13085,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/uk.json5 b/src/assets/i18n/uk.json5 index 7242333d749..3912b130157 100644 --- a/src/assets/i18n/uk.json5 +++ b/src/assets/i18n/uk.json5 @@ -13107,4 +13107,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } diff --git a/src/assets/i18n/vi.json5 b/src/assets/i18n/vi.json5 index 7f1ff9f9f3c..5b77d0dcfa9 100644 --- a/src/assets/i18n/vi.json5 +++ b/src/assets/i18n/vi.json5 @@ -12306,4 +12306,55 @@ // TODO New key - Add a translation "menu.section.cms.edit.metadata.head": "Edit Metadata", + // "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.breadcrumbs": "Edit User Agreement", + + // "admin.edit-user-agreement.confirm.title": "Force acceptance" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.title": "Force acceptance", + + // "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.info": "Do you want to force all users to accept the new user agreement?", + + // "admin.edit-user-agreement.confirm.cancel": "Cancel" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.cancel": "Cancel", + + // "admin.edit-user-agreement.confirm.no": "No, update only" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.no": "No, update only", + + // "admin.edit-user-agreement.confirm.yes": "Yes, update and force" + // TODO New key - Add a translation + "admin.edit-user-agreement.confirm.yes": "Yes, update and force", + + // "menu.section.edit-user-agreement": "Edit User Agreement" + // TODO New key - Add a translation + "menu.section.edit-user-agreement": "Edit User Agreement", + + // "admin.edit-user-agreement.save-button": "Save" + // TODO New key - Add a translation + "admin.edit-user-agreement.save-button": "Save", + + // "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language." + // TODO New key - Add a translation + "admin.edit-user-agreement.markdown": "End User Agreement text supports Markdown language.", + + // "admin.edit-user-agreement.header": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.header": "Edit User Agreement", + + // "admin.edit-user-agreement.success": "User agreement successfully updated" + // TODO New key - Add a translation + "admin.edit-user-agreement.success": "User agreement successfully updated", + + // "admin.edit-user-agreement.error": "An error occurred while updating the user agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.error": "An error occurred while updating the user agreement", + + // "admin.edit-user-agreement.title": "Edit User Agreement" + // TODO New key - Add a translation + "admin.edit-user-agreement.title": "Edit User Agreement", } \ No newline at end of file From cdefe3eb5fa1deec1de1bc12fdca57ec227ec39d Mon Sep 17 00:00:00 2001 From: "Maciej Kleban dawnwender@gmail.com" Date: Thu, 12 Feb 2026 16:38:29 +0100 Subject: [PATCH 3/7] Fix lint errors --- .../admin-edit-cms-metadata.component.spec.ts | 6 ++-- .../admin-edit-cms-metadata.component.ts | 11 +++--- ...dmin-edit-user-agreement.component.spec.ts | 18 +++++----- .../admin-edit-user-agreement.component.ts | 12 +++---- src/app/admin/admin-routes.ts | 4 +-- src/app/app.menus.ts | 4 +-- src/app/core/data/site-data.service.spec.ts | 2 +- src/app/core/data/site-data.service.ts | 12 ++++--- src/app/footer/footer.component.spec.ts | 16 ++++----- src/app/footer/footer.component.ts | 7 ++-- .../home-news/home-news.component.ts | 16 ++++++--- src/app/home-page/home-page.component.ts | 23 ++++++++---- ...d-user-agreement-content.component.spec.ts | 36 +++++++++---------- .../end-user-agreement-content.component.ts | 20 +++++++---- .../markdown-viewer.component.ts | 5 +-- src/config/app-config.interface.ts | 2 +- src/environments/environment.test.ts | 2 +- .../custom/app/footer/footer.component.ts | 4 +-- .../home-news/home-news.component.ts | 8 ++--- .../app/home-page/home-page.component.ts | 11 +++--- .../home-news/home-news.component.ts | 8 ++--- 21 files changed, 125 insertions(+), 102 deletions(-) diff --git a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts index 903b8ef9dc9..8eb5a51083b 100644 --- a/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts +++ b/src/app/admin/admin-edit-cms-metadata/admin-edit-cms-metadata.component.spec.ts @@ -6,6 +6,9 @@ import { } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; +import { NotificationsServiceStub } from '@dspace/core/testing/notifications-service.stub'; +import { TranslateLoaderMock } from '@dspace/core/testing/translate-loader.mock'; import { TranslateLoader, TranslateModule, @@ -16,9 +19,6 @@ import { environment } from '../../../environments/environment.test'; import { SiteDataService } from '../../core/data/site-data.service'; import { Site } from '../../core/shared/site.model'; import { AdminEditCmsMetadataComponent } from './admin-edit-cms-metadata.component'; -import { TranslateLoaderMock } from '@dspace/core/testing/translate-loader.mock'; -import { NotificationsServiceStub } from '@dspace/core/testing/notifications-service.stub'; -import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; describe('AdminEditCmsMetadataComponent', () => { 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 a14b136ce6d..c6e0e20cea1 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 @@ -1,7 +1,5 @@ import { AsyncPipe, - NgForOf, - NgIf, NgTemplateOutlet, } from '@angular/common'; import { @@ -9,6 +7,7 @@ import { OnInit, } from '@angular/core'; import { FormsModule } from '@angular/forms'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; import { TranslateModule, TranslateService, @@ -21,7 +20,6 @@ import { environment } from '../../../environments/environment'; import { SiteDataService } from '../../core/data/site-data.service'; import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { Site } from '../../core/shared/site.model'; -import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; /** * Component representing the page to edit cms metadata for site. @@ -31,13 +29,12 @@ import { NotificationsService } from '@dspace/core/notification-system/notificat templateUrl: './admin-edit-cms-metadata.component.html', styleUrls: ['./admin-edit-cms-metadata.component.scss'], imports: [ - FormsModule, - TranslateModule, AsyncPipe, - NgTemplateOutlet, BtnDisabledDirective, + FormsModule, + NgTemplateOutlet, + TranslateModule, ], - standalone: true, }) export class AdminEditCmsMetadataComponent implements OnInit { /** diff --git a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts index 57b8b324bcb..8ef746c5cac 100644 --- a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts +++ b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.spec.ts @@ -1,10 +1,10 @@ import { CommonModule } from '@angular/common'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { - waitForAsync, ComponentFixture, inject, TestBed, + waitForAsync, } from '@angular/core/testing'; import { FormsModule, @@ -12,7 +12,13 @@ import { } from '@angular/forms'; import { BrowserModule } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; +import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; +import { ResourceType } from '@dspace/core/shared/resource-type'; +import { NotificationsServiceStub } from '@dspace/core/testing/notifications-service.stub'; +import { TranslateLoaderMock } from '@dspace/core/testing/translate-loader.mock'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { provideMockStore } from '@ngrx/store/testing'; import { TranslateLoader, TranslateModule, @@ -27,12 +33,6 @@ import { SiteDataService } from '../../core/data/site-data.service'; import { Site } from '../../core/shared/site.model'; import { AlertComponent } from '../../shared/alert/alert.component'; import { AdminEditUserAgreementComponent } from './admin-edit-user-agreement.component'; -import { NotificationsServiceStub } from '@dspace/core/testing/notifications-service.stub'; -import { TranslateLoaderMock } from '@dspace/core/testing/translate-loader.mock'; -import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; -import { provideMockStore } from '@ngrx/store/testing'; -import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; -import { ResourceType } from '@dspace/core/shared/resource-type'; const TEST_MODEL = new ResourceType('testmodel'); @@ -84,8 +84,8 @@ describe('AdminEditUserAgreementComponent', () => { provideMockStore({ initialState: { index: { - } - } + }, + }, }), { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, { provide: NotificationsService, useValue: notificationService }, diff --git a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts index 903bcd53569..2bc6f7ba944 100644 --- a/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts +++ b/src/app/admin/admin-edit-user-agreement/admin-edit-user-agreement.component.ts @@ -1,13 +1,11 @@ -import { - KeyValuePipe, - NgForOf, -} from '@angular/common'; +import { KeyValuePipe } from '@angular/common'; import { Component, OnDestroy, OnInit, } from '@angular/core'; import { FormsModule } from '@angular/forms'; +import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -22,7 +20,6 @@ import { SiteDataService } from '../../core/data/site-data.service'; import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { Site } from '../../core/shared/site.model'; import { AlertComponent } from '../../shared/alert/alert.component'; -import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; /** * Component that represents the user agreement edit page for administrators. @@ -32,11 +29,10 @@ import { NotificationsService } from '@dspace/core/notification-system/notificat templateUrl: './admin-edit-user-agreement.component.html', imports: [ AlertComponent, - TranslateModule, - KeyValuePipe, FormsModule, + KeyValuePipe, + TranslateModule, ], - standalone: true, }) export class AdminEditUserAgreementComponent implements OnInit, OnDestroy { diff --git a/src/app/admin/admin-routes.ts b/src/app/admin/admin-routes.ts index e88e938d752..2caca8b29fb 100644 --- a/src/app/admin/admin-routes.ts +++ b/src/app/admin/admin-routes.ts @@ -2,6 +2,8 @@ import { Route } from '@angular/router'; import { i18nBreadcrumbResolver } from '@dspace/core/breadcrumbs/i18n-breadcrumb.resolver'; import { AdminCurationTasksComponent } from './admin-curation-tasks/admin-curation-tasks.component'; +import { AdminEditCmsMetadataComponent } from './admin-edit-cms-metadata/admin-edit-cms-metadata.component'; +import { AdminEditUserAgreementComponent } from './admin-edit-user-agreement/admin-edit-user-agreement.component'; import { BatchImportPageComponent } from './admin-import-batch-page/batch-import-page.component'; import { ThemedMetadataImportPageComponent } from './admin-import-metadata-page/themed-metadata-import-page.component'; import { @@ -13,8 +15,6 @@ import { } from './admin-routing-paths'; import { ThemedAdminSearchPageComponent } from './admin-search-page/themed-admin-search-page.component'; import { ThemedAdminWorkflowPageComponent } from './admin-workflow-page/themed-admin-workflow-page.component'; -import { AdminEditCmsMetadataComponent } from './admin-edit-cms-metadata/admin-edit-cms-metadata.component'; -import { AdminEditUserAgreementComponent } from './admin-edit-user-agreement/admin-edit-user-agreement.component'; export const ROUTES: Route[] = [ { diff --git a/src/app/app.menus.ts b/src/app/app.menus.ts index 3117c7fb652..34f21f81b65 100644 --- a/src/app/app.menus.ts +++ b/src/app/app.menus.ts @@ -21,6 +21,8 @@ import { CurationMenuProvider } from './shared/menu/providers/curation.menu'; import { DSpaceObjectEditMenuProvider } from './shared/menu/providers/dso-edit.menu'; import { DsoOptionMenuProvider } from './shared/menu/providers/dso-option.menu'; import { EditMenuProvider } from './shared/menu/providers/edit.menu'; +import { EditCMSMetadataMenuProvider } from './shared/menu/providers/edit-cms-metadata.menu'; +import { EditUserAgreementMenuProvider } from './shared/menu/providers/edit-user-agreement.menu'; import { ExportMenuProvider } from './shared/menu/providers/export.menu'; import { HealthMenuProvider } from './shared/menu/providers/health.menu'; import { ImportMenuProvider } from './shared/menu/providers/import.menu'; @@ -35,8 +37,6 @@ import { StatisticsMenuProvider } from './shared/menu/providers/statistics.menu' import { SystemWideAlertMenuProvider } from './shared/menu/providers/system-wide-alert.menu'; import { WithdrawnReinstateItemMenuProvider } from './shared/menu/providers/withdrawn-reinstate-item.menu'; import { WorkflowMenuProvider } from './shared/menu/providers/workflow.menu'; -import { EditCMSMetadataMenuProvider } from './shared/menu/providers/edit-cms-metadata.menu'; -import { EditUserAgreementMenuProvider } from './shared/menu/providers/edit-user-agreement.menu'; /** * Represents and builds the menu structure for the three available menus (public navbar, admin sidebar and the dso edit diff --git a/src/app/core/data/site-data.service.spec.ts b/src/app/core/data/site-data.service.spec.ts index 79d499894c5..56ac1394366 100644 --- a/src/app/core/data/site-data.service.spec.ts +++ b/src/app/core/data/site-data.service.spec.ts @@ -11,10 +11,10 @@ import { Site } from '../shared/site.model'; import { createPaginatedList } from '../testing/utils.test'; import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; +import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; import { RequestService } from './request.service'; import { SiteDataService } from './site-data.service'; -import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; describe('SiteDataService', () => { let scheduler: TestScheduler; diff --git a/src/app/core/data/site-data.service.ts b/src/app/core/data/site-data.service.ts index 67828e97ec7..dd22ce5bf7b 100644 --- a/src/app/core/data/site-data.service.ts +++ b/src/app/core/data/site-data.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@angular/core'; import { FollowLinkConfig } from '@dspace/core/shared/follow-link-config.model'; +import { Operation } from 'fast-json-patch/module/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -13,15 +14,16 @@ import { FindAllData, FindAllDataImpl, } from './base/find-all-data'; +import { constructIdEndpointDefault } from './base/identifiable-data.service'; +import { + PatchData, + PatchDataImpl, +} from './base/patch-data'; +import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; -import { Operation } from 'fast-json-patch/module/core'; -import { PatchData, PatchDataImpl } from './base/patch-data'; -import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; - -import { constructIdEndpointDefault } from './base/identifiable-data.service'; /** * Service responsible for handling requests related to the Site object diff --git a/src/app/footer/footer.component.spec.ts b/src/app/footer/footer.component.spec.ts index 4339bcbc5c6..ee7e7ed96ae 100644 --- a/src/app/footer/footer.component.spec.ts +++ b/src/app/footer/footer.component.spec.ts @@ -10,17 +10,17 @@ import { ActivatedRoute } from '@angular/router'; import { APP_CONFIG } from '@dspace/config/app-config.interface'; import { NotifyInfoService } from '@dspace/core/coar-notify/notify-info/notify-info.service'; import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; +import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; +import { LocaleService } from '@dspace/core/locale/locale.service'; +import { ResourceType } from '@dspace/core/shared/resource-type'; import { ActivatedRouteStub } from '@dspace/core/testing/active-router.stub'; import { AuthorizationDataServiceStub } from '@dspace/core/testing/authorization-service.stub'; +import { provideMockStore } from '@ngrx/store/testing'; import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; import { environment } from '../../environments/environment.test'; import { FooterComponent } from './footer.component'; -import { provideMockStore } from '@ngrx/store/testing'; -import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; -import { ResourceType } from '@dspace/core/shared/resource-type'; -import { LocaleService } from '@dspace/core/locale/locale.service'; let comp: FooterComponent; let fixture: ComponentFixture; @@ -29,8 +29,8 @@ let localeService: any; const TEST_MODEL = new ResourceType('testmodel'); const languageList = ['en;q=1', 'de;q=0.8']; const mockLocaleService = jasmine.createSpyObj('LocaleService', { - getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), - getLanguageCodeList: of(languageList), + getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), + getLanguageCodeList: of(languageList), }); let notifyInfoService = { @@ -52,8 +52,8 @@ describe('Footer component', () => { provideMockStore({ initialState: { index: { - } - } + }, + }, }), { provide: LocaleService, useValue: mockLocaleService }, { provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub }, diff --git a/src/app/footer/footer.component.ts b/src/app/footer/footer.component.ts index 1af3e1c3963..4bd3b2b8a06 100644 --- a/src/app/footer/footer.component.ts +++ b/src/app/footer/footer.component.ts @@ -17,6 +17,7 @@ import { NotifyInfoService } from '@dspace/core/coar-notify/notify-info/notify-i import { OrejimeService } from '@dspace/core/cookies/orejime.service'; import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; import { FeatureID } from '@dspace/core/data/feature-authorization/feature-id'; +import { SiteDataService } from '@dspace/core/data/site-data.service'; import { LocaleService } from '@dspace/core/locale/locale.service'; import { hasValue } from '@dspace/shared/utils/empty.util'; import { TranslateModule } from '@ngx-translate/core'; @@ -27,8 +28,8 @@ import { of, take, } from 'rxjs'; + import { MarkdownViewerComponent } from '../shared/markdown-viewer/markdown-viewer.component'; -import { SiteDataService } from '@dspace/core/data/site-data.service'; @Component({ selector: 'ds-base-footer', @@ -37,9 +38,9 @@ import { SiteDataService } from '@dspace/core/data/site-data.service'; imports: [ AsyncPipe, DatePipe, + MarkdownViewerComponent, RouterLink, TranslateModule, - MarkdownViewerComponent ], }) export class FooterComponent implements OnInit { @@ -75,7 +76,7 @@ export class FooterComponent implements OnInit { this.footerMetadataValue$ = combineLatest({ site$: this.siteService.find().pipe( - take(1) + take(1), ), language$: this.locale.getCurrentLanguageCode(), }).pipe( 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 d27bbc60b2a..2463b3f836b 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,17 @@ import { AsyncPipe } from '@angular/common'; -import { Component, OnInit } from '@angular/core'; +import { + Component, + OnInit, +} from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { LocaleService } from '@dspace/core/locale/locale.service'; import { Site } from '@dspace/core/shared/site.model'; -import { combineLatest, map, Observable, take, tap } from 'rxjs'; +import { + combineLatest, + map, + Observable, + take, +} from 'rxjs'; import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ @@ -11,9 +19,9 @@ import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown styleUrls: ['./home-news.component.scss'], templateUrl: './home-news.component.html', imports: [ - MarkdownViewerComponent, AsyncPipe, - ] + MarkdownViewerComponent, + ], }) /** diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts index cbb8a135148..0d6b8aaa481 100644 --- a/src/app/home-page/home-page.component.ts +++ b/src/app/home-page/home-page.component.ts @@ -1,4 +1,7 @@ -import { AsyncPipe, NgTemplateOutlet } from '@angular/common'; +import { + AsyncPipe, + NgTemplateOutlet, +} from '@angular/common'; import { Component, Inject, @@ -9,27 +12,35 @@ 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 { TranslateModule } from '@ngx-translate/core'; -import { combineLatest, Observable } from 'rxjs'; -import { map, take } from 'rxjs/operators'; +import { + combineLatest, + Observable, +} from 'rxjs'; +import { + map, + take, +} from 'rxjs/operators'; import { SuggestionsPopupComponent } from '../notifications/suggestions/popup/suggestions-popup.component'; import { ThemedConfigurationSearchPageComponent } from '../search-page/themed-configuration-search-page.component'; +import { MarkdownViewerComponent } from '../shared/markdown-viewer/markdown-viewer.component'; import { ThemedSearchFormComponent } from '../shared/search-form/themed-search-form.component'; import { HomeCoarComponent } from './home-coar/home-coar.component'; import { ThemedHomeNewsComponent } from './home-news/themed-home-news.component'; import { RecentItemListComponent } from './recent-item-list/recent-item-list.component'; import { ThemedTopLevelCommunityListComponent } from './top-level-community-list/themed-top-level-community-list.component'; -import { LocaleService } from '@dspace/core/locale/locale.service'; -import { MarkdownViewerComponent } from '../shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-base-home-page', styleUrls: ['./home-page.component.scss'], templateUrl: './home-page.component.html', imports: [ + AsyncPipe, HomeCoarComponent, + MarkdownViewerComponent, NgTemplateOutlet, RecentItemListComponent, SuggestionsPopupComponent, @@ -38,8 +49,6 @@ import { MarkdownViewerComponent } from '../shared/markdown-viewer/markdown-view ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, TranslateModule, - MarkdownViewerComponent, - AsyncPipe, ], }) export class HomePageComponent implements OnInit { diff --git a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts index b0f29f111bd..0f503873e08 100644 --- a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts +++ b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts @@ -5,17 +5,17 @@ import { waitForAsync, } from '@angular/core/testing'; import { RouterLink } from '@angular/router'; -import { TranslateModule } from '@ngx-translate/core'; - -import { EndUserAgreementContentComponent } from './end-user-agreement-content.component'; -import { provideMockStore } from '@ngrx/store/testing'; -import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; -import { ResourceType } from '@dspace/core/shared/resource-type'; -import { environment } from '../../../../environments/environment.test'; import { APP_CONFIG } from '@dspace/config/app-config.interface'; +import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; import { LocaleService } from '@dspace/core/locale/locale.service'; +import { ResourceType } from '@dspace/core/shared/resource-type'; +import { provideMockStore } from '@ngrx/store/testing'; +import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; +import { environment } from '../../../../environments/environment.test'; +import { EndUserAgreementContentComponent } from './end-user-agreement-content.component'; + let localeService: any; const TEST_MODEL = new ResourceType('testmodel'); @@ -26,8 +26,8 @@ const mockDataServiceMap: any = new Map([ const languageList = ['en;q=1', 'de;q=0.8']; const mockLocaleService = jasmine.createSpyObj('LocaleService', { - getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), - getLanguageCodeList: of(languageList), + getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), + getLanguageCodeList: of(languageList), }); describe('EndUserAgreementContentComponent', () => { @@ -42,8 +42,8 @@ describe('EndUserAgreementContentComponent', () => { provideMockStore({ initialState: { index: { - } - } + }, + }, }), { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, { provide: APP_CONFIG, useValue: environment }, @@ -51,14 +51,14 @@ describe('EndUserAgreementContentComponent', () => { ], schemas: [NO_ERRORS_SCHEMA], }) - .overrideComponent(EndUserAgreementContentComponent, { - remove: { - imports: [RouterLink], - }, - }) - .compileComponents(); + .overrideComponent(EndUserAgreementContentComponent, { + remove: { + imports: [RouterLink], + }, + }) + .compileComponents(); })); - + beforeEach(() => { fixture = TestBed.createComponent(EndUserAgreementContentComponent); localeService = TestBed.inject(LocaleService); diff --git a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts index 64a017aa86c..a353afd91ce 100644 --- a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts +++ b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.ts @@ -1,14 +1,20 @@ -import { AsyncPipe, NgIf } from '@angular/common'; -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { AsyncPipe } from '@angular/common'; +import { + Component, + OnDestroy, + OnInit, +} from '@angular/core'; import { RouterLink } from '@angular/router'; import { SiteDataService } from '@dspace/core/data/site-data.service'; import { LocaleService } from '@dspace/core/locale/locale.service'; import { MetadatumViewModel } from '@dspace/core/shared/metadata.models'; import { isNotEmpty } from '@dspace/shared/utils/empty.util'; import { TranslateModule } from '@ngx-translate/core'; -import { combineLatest } from 'rxjs'; -import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; -import { Subscription } from 'rxjs/internal/Subscription'; +import { + BehaviorSubject, + combineLatest, + Subscription, +} from 'rxjs'; import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ @@ -16,10 +22,10 @@ import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown templateUrl: './end-user-agreement-content.component.html', styleUrls: ['./end-user-agreement-content.component.scss'], imports: [ + AsyncPipe, + MarkdownViewerComponent, RouterLink, TranslateModule, - MarkdownViewerComponent, - AsyncPipe, ], }) /** diff --git a/src/app/shared/markdown-viewer/markdown-viewer.component.ts b/src/app/shared/markdown-viewer/markdown-viewer.component.ts index 28d845a55b6..d9cc501068b 100644 --- a/src/app/shared/markdown-viewer/markdown-viewer.component.ts +++ b/src/app/shared/markdown-viewer/markdown-viewer.component.ts @@ -9,8 +9,9 @@ import { MarkdownDirective } from '../utils/markdown.directive'; selector: 'ds-markdown-viewer', templateUrl: './markdown-viewer.component.html', styleUrls: ['./markdown-viewer.component.scss'], - standalone: true, - imports: [MarkdownDirective], + imports: [ + MarkdownDirective, + ], }) export class MarkdownViewerComponent { @Input() value: string; diff --git a/src/config/app-config.interface.ts b/src/config/app-config.interface.ts index f4615d278b2..bd2667e9efe 100644 --- a/src/config/app-config.interface.ts +++ b/src/config/app-config.interface.ts @@ -11,6 +11,7 @@ import { AuthConfig } from './auth-config.interfaces'; import { BrowseByConfig } from './browse-by-config.interface'; import { BundleConfig } from './bundle-config.interface'; import { CacheConfig } from './cache-config.interface'; +import { CmsMetadata } from './cms-metadata'; import { CollectionPageConfig } from './collection-page-config.interface'; import { CommunityListConfig } from './community-list-config.interface'; import { CommunityPageConfig } from './community-page-config.interface'; @@ -37,7 +38,6 @@ import { SubmissionConfig } from './submission-config.interface'; import { SuggestionConfig } from './suggestion-config.interfaces'; import { ThemeConfig } from './theme.config'; import { UIServerConfig } from './ui-server-config.interface'; -import { CmsMetadata } from './cms-metadata'; interface AppConfig extends Config { ui: UIServerConfig; diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index 73eb6cb3e8e..30c2dde8b89 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -585,5 +585,5 @@ export const environment: BuildConfig = { 'cris.cms.home-news', 'cris.cms.footer', ], - } + }, }; diff --git a/src/themes/custom/app/footer/footer.component.ts b/src/themes/custom/app/footer/footer.component.ts index fea084ed3fd..a3cecc4faea 100644 --- a/src/themes/custom/app/footer/footer.component.ts +++ b/src/themes/custom/app/footer/footer.component.ts @@ -5,9 +5,9 @@ import { import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; import { FooterComponent as BaseComponent } from '../../../../app/footer/footer.component'; -import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-themed-footer', @@ -18,9 +18,9 @@ import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown imports: [ AsyncPipe, DatePipe, + MarkdownViewerComponent, RouterLink, TranslateModule, - MarkdownViewerComponent ], }) export class FooterComponent extends BaseComponent { diff --git a/src/themes/custom/app/home-page/home-news/home-news.component.ts b/src/themes/custom/app/home-page/home-news/home-news.component.ts index c3e75bcbd9e..3a21b2773bf 100644 --- a/src/themes/custom/app/home-page/home-news/home-news.component.ts +++ b/src/themes/custom/app/home-page/home-news/home-news.component.ts @@ -1,8 +1,8 @@ +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component'; -import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; -import { AsyncPipe } from '@angular/common'; @Component({ selector: 'ds-themed-home-news', @@ -11,9 +11,9 @@ import { AsyncPipe } from '@angular/common'; // templateUrl: './home-news.component.html' templateUrl: '../../../../../app/home-page/home-news/home-news.component.html', imports: [ + AsyncPipe, MarkdownViewerComponent, - AsyncPipe - ] + ], }) export class HomeNewsComponent extends BaseComponent { } diff --git a/src/themes/custom/app/home-page/home-page.component.ts b/src/themes/custom/app/home-page/home-page.component.ts index 09983663e24..3d8f9f72ae9 100644 --- a/src/themes/custom/app/home-page/home-page.component.ts +++ b/src/themes/custom/app/home-page/home-page.component.ts @@ -1,6 +1,10 @@ -import { AsyncPipe, NgTemplateOutlet } from '@angular/common'; +import { + AsyncPipe, + NgTemplateOutlet, +} from '@angular/common'; import { Component } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; import { HomeCoarComponent } from '../../../../app/home-page/home-coar/home-coar.component'; import { ThemedHomeNewsComponent } from '../../../../app/home-page/home-news/themed-home-news.component'; @@ -10,7 +14,6 @@ import { ThemedTopLevelCommunityListComponent } from '../../../../app/home-page/ import { SuggestionsPopupComponent } from '../../../../app/notifications/suggestions/popup/suggestions-popup.component'; import { ThemedConfigurationSearchPageComponent } from '../../../../app/search-page/themed-configuration-search-page.component'; import { ThemedSearchFormComponent } from '../../../../app/shared/search-form/themed-search-form.component'; -import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; @Component({ selector: 'ds-themed-home-page', @@ -19,7 +22,9 @@ import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown // templateUrl: './home-page.component.html' templateUrl: '../../../../app/home-page/home-page.component.html', imports: [ + AsyncPipe, HomeCoarComponent, + MarkdownViewerComponent, NgTemplateOutlet, RecentItemListComponent, SuggestionsPopupComponent, @@ -28,8 +33,6 @@ import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, TranslateModule, - MarkdownViewerComponent, - AsyncPipe ], }) export class HomePageComponent extends BaseComponent { diff --git a/src/themes/dspace/app/home-page/home-news/home-news.component.ts b/src/themes/dspace/app/home-page/home-news/home-news.component.ts index 39ff46ad5f9..d5a97ceb19c 100644 --- a/src/themes/dspace/app/home-page/home-news/home-news.component.ts +++ b/src/themes/dspace/app/home-page/home-news/home-news.component.ts @@ -1,17 +1,17 @@ +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; +import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component'; -import { MarkdownViewerComponent } from 'src/app/shared/markdown-viewer/markdown-viewer.component'; -import { AsyncPipe } from '@angular/common'; @Component({ selector: 'ds-themed-home-news', styleUrls: ['./home-news.component.scss'], templateUrl: './home-news.component.html', imports: [ + AsyncPipe, MarkdownViewerComponent, - AsyncPipe - ] + ], }) /** From 9bcd044fc04f00709ad4b0c92a03ae9d574be3dd Mon Sep 17 00:00:00 2001 From: "Maciej Kleban dawnwender@gmail.com" Date: Fri, 13 Feb 2026 13:15:58 +0100 Subject: [PATCH 4/7] Fix testing errors Fix errors in testing introduced by PR: https://github.com/DSpace/dspace-angular/pull/5106 by replacing Store mocking with mocking of the SiteService. --- src/app/footer/footer.component.spec.ts | 27 +++++++--- ...d-user-agreement-content.component.spec.ts | 49 +++++++++++-------- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/src/app/footer/footer.component.spec.ts b/src/app/footer/footer.component.spec.ts index ee7e7ed96ae..0cd74e267e9 100644 --- a/src/app/footer/footer.component.spec.ts +++ b/src/app/footer/footer.component.spec.ts @@ -10,6 +10,7 @@ import { ActivatedRoute } from '@angular/router'; import { APP_CONFIG } from '@dspace/config/app-config.interface'; import { NotifyInfoService } from '@dspace/core/coar-notify/notify-info/notify-info.service'; import { AuthorizationDataService } from '@dspace/core/data/feature-authorization/authorization-data.service'; +import { SiteDataService } from '@dspace/core/data/site-data.service'; import { APP_DATA_SERVICES_MAP } from '@dspace/core/data-services-map-type'; import { LocaleService } from '@dspace/core/locale/locale.service'; import { ResourceType } from '@dspace/core/shared/resource-type'; @@ -25,6 +26,7 @@ import { FooterComponent } from './footer.component'; let comp: FooterComponent; let fixture: ComponentFixture; let localeService: any; +let mockSiteDataService: any; const TEST_MODEL = new ResourceType('testmodel'); const languageList = ['en;q=1', 'de;q=0.8']; @@ -32,6 +34,20 @@ const mockLocaleService = jasmine.createSpyObj('LocaleService', { getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), getLanguageCodeList: of(languageList), }); +const mockSite = { + firstMetadataValue: (key: string, options: any) => 'Sample Footer CMS Content', +}; +const initialState = { + core: { + auth: { + authenticated: false, + loaded: false, + blocking: undefined, + loading: false, + authMethods: [], + }, + }, +}; let notifyInfoService = { isCoarConfigEnabled: () => of(true), @@ -43,22 +59,21 @@ const mockDataServiceMap: any = new Map([ describe('Footer component', () => { beforeEach(waitForAsync(() => { + mockSiteDataService = jasmine.createSpyObj('SiteDataService', ['find']); + mockSiteDataService.find.and.returnValue(of(mockSite)); + return TestBed.configureTestingModule({ imports: [ TranslateModule.forRoot(), ], providers: [ FooterComponent, - provideMockStore({ - initialState: { - index: { - }, - }, - }), + provideMockStore({ initialState }), { provide: LocaleService, useValue: mockLocaleService }, { provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub }, { provide: NotifyInfoService, useValue: notifyInfoService }, { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, + { provide: SiteDataService, useValue: mockSiteDataService }, { provide: APP_CONFIG, useValue: environment }, { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, ], diff --git a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts index 0f503873e08..ed48ae497b9 100644 --- a/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts +++ b/src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.spec.ts @@ -16,38 +16,45 @@ import { of } from 'rxjs'; import { environment } from '../../../../environments/environment.test'; import { EndUserAgreementContentComponent } from './end-user-agreement-content.component'; -let localeService: any; - const TEST_MODEL = new ResourceType('testmodel'); - -const mockDataServiceMap: any = new Map([ +const LANGUAGE_LIST = ['en;q=1', 'de;q=0.8']; +const MOCK_DATA_MAP = new Map([ [TEST_MODEL.value, () => import('../../../core/testing/test-data-service.mock').then(m => m.TestDataService)], ]); +const INITIAL_STATE = { + core: { + auth: { + authenticated: false, + loaded: false, + blocking: undefined, + loading: false, + authMethods: [], + }, + }, +}; -const languageList = ['en;q=1', 'de;q=0.8']; -const mockLocaleService = jasmine.createSpyObj('LocaleService', { - getCurrentLanguageCode: jasmine.createSpy('getCurrentLanguageCode'), - getLanguageCodeList: of(languageList), -}); describe('EndUserAgreementContentComponent', () => { let component: EndUserAgreementContentComponent; let fixture: ComponentFixture; + let localeServiceSpy: jasmine.SpyObj; beforeEach(waitForAsync(() => { + localeServiceSpy = jasmine.createSpyObj('LocaleService', [ + 'getCurrentLanguageCode', + 'getLanguageCodeList', + ]); + TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot(), EndUserAgreementContentComponent], - providers: [ + imports: [ + TranslateModule.forRoot(), EndUserAgreementContentComponent, - provideMockStore({ - initialState: { - index: { - }, - }, - }), - { provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap }, + ], + providers: [ + provideMockStore({ initialState: INITIAL_STATE }), + { provide: APP_DATA_SERVICES_MAP, useValue: MOCK_DATA_MAP }, { provide: APP_CONFIG, useValue: environment }, - { provide: LocaleService, useValue: mockLocaleService }, + { provide: LocaleService, useValue: localeServiceSpy }, ], schemas: [NO_ERRORS_SCHEMA], }) @@ -61,9 +68,9 @@ describe('EndUserAgreementContentComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(EndUserAgreementContentComponent); - localeService = TestBed.inject(LocaleService); - localeService.getCurrentLanguageCode.and.returnValue(of('en')); component = fixture.componentInstance; + localeServiceSpy.getCurrentLanguageCode.and.returnValue(of('en')); + localeServiceSpy.getLanguageCodeList.and.returnValue(of(LANGUAGE_LIST)); fixture.detectChanges(); }); From 66576de352bee68ab77ac37f974aaea6eb25fc43 Mon Sep 17 00:00:00 2001 From: Maciej Kleban Date: Tue, 10 Mar 2026 14:03:53 +0000 Subject: [PATCH 5/7] Change CMS metadata schema from cris to dspace --- src/app/footer/footer.component.ts | 2 +- src/app/home-page/home-news/home-news.component.ts | 2 +- src/app/home-page/home-page.component.ts | 2 +- src/config/default-app-config.ts | 6 +++--- src/environments/environment.test.ts | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/app/footer/footer.component.ts b/src/app/footer/footer.component.ts index 4bd3b2b8a06..bc04d79db1f 100644 --- a/src/app/footer/footer.component.ts +++ b/src/app/footer/footer.component.ts @@ -81,7 +81,7 @@ export class FooterComponent implements OnInit { language$: this.locale.getCurrentLanguageCode(), }).pipe( take(1), - map(({ site$, language$ }) => site$?.firstMetadataValue('cris.cms.footer', { language: language$ })), + map(({ site$, language$ }) => site$?.firstMetadataValue('dspace.cms.footer', { language: language$ })), ); } 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 2463b3f836b..d6f7eb39995 100644 --- a/src/app/home-page/home-news/home-news.component.ts +++ b/src/app/home-page/home-news/home-news.component.ts @@ -44,7 +44,7 @@ export class HomeNewsComponent implements OnInit { language$: this.locale.getCurrentLanguageCode(), }).pipe( take(1), - map(({ site$, language$ }) => site$?.firstMetadataValue('cris.cms.home-news', { language: language$ })), + 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 0d6b8aaa481..cf75770b9e8 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('cris.cms.home-header', { language })), + map(({ site, language }) => site?.firstMetadataValue('dspace.cms.home-header', { language })), ); } diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index 0168b6047c2..3b9afd09737 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -803,9 +803,9 @@ export class DefaultAppConfig implements AppConfig { cms: CmsMetadata = { metadataList: [ - 'cris.cms.home-header', - 'cris.cms.home-news', - 'cris.cms.footer', + 'dspace.cms.home-header', + 'dspace.cms.home-news', + 'dspace.cms.footer', ], }; } diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index 30c2dde8b89..74379cbf060 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -581,9 +581,9 @@ export const environment: BuildConfig = { cms: { metadataList: [ - 'cris.cms.home-header', - 'cris.cms.home-news', - 'cris.cms.footer', + 'dspace.cms.home-header', + 'dspace.cms.home-news', + 'dspace.cms.footer', ], }, }; From d0a6d94198f4d2105c1d95859be9c4332ef46643 Mon Sep 17 00:00:00 2001 From: Maciej Kleban Date: Thu, 26 Mar 2026 10:37:09 +0100 Subject: [PATCH 6/7] Apply container styles to homepage CMS component --- src/app/home-page/home-page.component.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html index c738499a6d9..f8fa1f52f74 100644 --- a/src/app/home-page/home-page.component.html +++ b/src/app/home-page/home-page.component.html @@ -1,5 +1,7 @@ @if (homeHeaderMetadataValue$ | async; as homeHeaderMetadataValue) { - +
+ +
} @else { From 8350f506de86ef4531edb28b9750898065c1e924 Mon Sep 17 00:00:00 2001 From: Maciej Kleban Date: Fri, 27 Mar 2026 09:47:27 +0100 Subject: [PATCH 7/7] Convert navigateToUrl to hard redirect on user agreement page --- .../end-user-agreement.component.spec.ts | 24 ++++++++++++++++--- .../end-user-agreement.component.ts | 8 +++++-- src/assets/i18n/en.json5 | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts b/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts index 421789f1b1e..4e5b58e9efa 100644 --- a/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts +++ b/src/app/info/end-user-agreement/end-user-agreement.component.spec.ts @@ -1,7 +1,9 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, + fakeAsync, TestBed, + tick, waitForAsync, } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -13,7 +15,9 @@ import { LogOutAction } from '@dspace/core/auth/auth.actions'; import { AuthService } from '@dspace/core/auth/auth.service'; import { EndUserAgreementService } from '@dspace/core/end-user-agreement/end-user-agreement.service'; import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; +import { HardRedirectService } from '@dspace/core/services/hard-redirect.service'; import { ActivatedRouteStub } from '@dspace/core/testing/active-router.stub'; +import { URLCombiner } from '@dspace/core/url-combiner/url-combiner'; import { Store } from '@ngrx/store'; import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; @@ -32,11 +36,14 @@ describe('EndUserAgreementComponent', () => { let store; let router: Router; let route: ActivatedRoute; + let hardRedirectService: HardRedirectService; let redirectUrl; + let baseUrl; function init() { redirectUrl = 'redirect/url'; + baseUrl = 'https://dspace.test'; endUserAgreementService = jasmine.createSpyObj('endUserAgreementService', { hasCurrentUserOrCookieAcceptedAgreement: of(false), @@ -53,6 +60,15 @@ describe('EndUserAgreementComponent', () => { redirect: redirectUrl, }), }) as any; + hardRedirectService = jasmine.createSpyObj('hardRedirectService', { + redirect: null, + getBaseUrl: baseUrl, + }); + + endUserAgreementService = jasmine.createSpyObj('endUserAgreementService', { + hasCurrentUserOrCookieAcceptedAgreement: of(false), + setUserAcceptedAgreement: of(true), + }); } beforeEach(waitForAsync(() => { @@ -66,6 +82,7 @@ describe('EndUserAgreementComponent', () => { { provide: Store, useValue: store }, { provide: Router, useValue: router }, { provide: ActivatedRoute, useValue: route }, + { provide: HardRedirectService, useValue: hardRedirectService }, ], schemas: [NO_ERRORS_SCHEMA], }) @@ -128,9 +145,10 @@ describe('EndUserAgreementComponent', () => { expect(notificationsService.success).toHaveBeenCalled(); }); - it('should navigate the user to the redirect url', () => { - expect(router.navigateByUrl).toHaveBeenCalledWith(redirectUrl); - }); + it('should navigate the user to the redirect url', fakeAsync(() => { + tick(); + expect(hardRedirectService.redirect).toHaveBeenCalledWith(new URLCombiner(baseUrl, redirectUrl).toString()); + })); }); describe('when accepting the agreement was unsuccessful', () => { diff --git a/src/app/info/end-user-agreement/end-user-agreement.component.ts b/src/app/info/end-user-agreement/end-user-agreement.component.ts index 3e6585a8667..63d0b33067c 100644 --- a/src/app/info/end-user-agreement/end-user-agreement.component.ts +++ b/src/app/info/end-user-agreement/end-user-agreement.component.ts @@ -11,6 +11,8 @@ import { LogOutAction } from '@dspace/core/auth/auth.actions'; import { AuthService } from '@dspace/core/auth/auth.service'; import { EndUserAgreementService } from '@dspace/core/end-user-agreement/end-user-agreement.service'; import { NotificationsService } from '@dspace/core/notification-system/notifications.service'; +import { HardRedirectService } from '@dspace/core/services/hard-redirect.service'; +import { URLCombiner } from '@dspace/core/url-combiner/url-combiner'; import { isNotEmpty } from '@dspace/shared/utils/empty.util'; import { Store } from '@ngrx/store'; import { @@ -55,7 +57,8 @@ export class EndUserAgreementComponent implements OnInit { protected authService: AuthService, protected store: Store, protected router: Router, - protected route: ActivatedRoute) { + protected route: ActivatedRoute, + protected hardRedirectService: HardRedirectService) { } /** @@ -92,7 +95,8 @@ export class EndUserAgreementComponent implements OnInit { take(1), ).subscribe((redirectUrl) => { if (isNotEmpty(redirectUrl)) { - this.router.navigateByUrl(decodeURIComponent(redirectUrl)); + const fullRedirectUrl = new URLCombiner(this.hardRedirectService.getBaseUrl(), decodeURIComponent(redirectUrl)); + this.hardRedirectService.redirect(fullRedirectUrl.toString()); } }); } diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index 23982f96d3a..c8a923f6ee7 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -7469,7 +7469,7 @@ "submission.sections.describe.relationship-lookup.external-source.import-modal.isOrgUnitOfDataset.added.local-entity": "Successfully added local organization to the selection", "submission.sections.describe.relationship-lookup.external-source.import-modal.isOrgUnitOfDataset.added.new-entity": "Successfully imported and added external organization to the selection", - + "admin.edit-cms-metadata.success": "Metadata successfully updated", "admin.edit-cms-metadata.back-button": "Back",