diff --git a/server.ts b/server.ts index 3e10677a8b..5a3660e4de 100644 --- a/server.ts +++ b/server.ts @@ -180,6 +180,15 @@ export function app() { changeOrigin: true })); + /** + * Proxy the linksets + */ + router.use('/linksets**', createProxyMiddleware({ + target: `${environment.rest.baseUrl}/linksets`, + pathRewrite: path => path.replace(environment.ui.nameSpace, '/'), + changeOrigin: true + })); + /** * Checks if the rateLimiter property is present * When it is present, the rateLimiter will be enabled. When it is undefined, the rateLimiter will be disabled. diff --git a/src/app/core/metadata-item/metadata-item.service.spec.ts b/src/app/core/metadata-item/metadata-item.service.spec.ts new file mode 100644 index 0000000000..89ca15658d --- /dev/null +++ b/src/app/core/metadata-item/metadata-item.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { MetadataItemService } from './metadata-item.service'; + +describe('MetadataItemService', () => { + let service: MetadataItemService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(MetadataItemService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/core/metadata-item/metadata-item.service.ts b/src/app/core/metadata-item/metadata-item.service.ts new file mode 100644 index 0000000000..a4fbcf587b --- /dev/null +++ b/src/app/core/metadata-item/metadata-item.service.ts @@ -0,0 +1,70 @@ +import { Inject, Injectable } from '@angular/core'; +import { MetadataService } from '../metadata/metadata.service'; +import { ActivatedRoute, NavigationEnd, Event as NavigationEvent, NavigationStart, Router } from '@angular/router'; +import { TranslateService } from '@ngx-translate/core'; +import { Meta, Title } from '@angular/platform-browser'; +import { DSONameService } from '../breadcrumbs/dso-name.service'; +import { BundleDataService } from '../data/bundle-data.service'; +import { BitstreamDataService } from '../data/bitstream-data.service'; +import { BitstreamFormatDataService } from '../data/bitstream-format-data.service'; +import { RootDataService } from '../data/root-data.service'; +import { CoreState } from '../core-state.model'; +import { Store } from '@ngrx/store'; +import { HardRedirectService } from '../services/hard-redirect.service'; +import { APP_CONFIG, AppConfig } from 'src/config/app-config.interface'; +import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; +import { filter, map, switchMap, take, mergeMap } from 'rxjs/operators'; +import { DOCUMENT } from '@angular/common'; + +@Injectable({ + providedIn: 'root' +}) +export class MetadataItemService extends MetadataService { + + constructor( + private router1: ActivatedRoute, + router: Router, + translate: TranslateService, + meta: Meta, + title: Title, + dsoNameService: DSONameService, + bundleDataService: BundleDataService, + bitstreamDataService: BitstreamDataService, + bitstreamFormatDataService: BitstreamFormatDataService, + rootService: RootDataService, + store: Store, + hardRedirectService: HardRedirectService, + @Inject(APP_CONFIG) appConfig: AppConfig, + authorizationService: AuthorizationDataService, + @Inject(DOCUMENT) private document: Document + ) { + super(router, translate, meta, title, dsoNameService, bundleDataService, bitstreamDataService, bitstreamFormatDataService, rootService, store, hardRedirectService, appConfig, authorizationService); + } + + public checkCurrentRoute(){ + + console.log(this.router); + + this.router1.url.subscribe(url => { + console.log(url); + console.log(url[0].path); + }); + + // this.router.events.subscribe((event: NavigationEvent) => { + // if(event instanceof NavigationStart) { + // if(event.url.startsWith('/entities')){ + // console.log('We are on ENTITIES!'); + // } + // } + // }); + } + + setLinkTag(){ + this.clearMetaTags(); + + let link: HTMLLinkElement = this.document.createElement('link'); + link.setAttribute('rel', ''); + link.setAttribute('href', ''); + this.document.head.appendChild(link); + } +} diff --git a/src/app/core/metadata/metadata.service.ts b/src/app/core/metadata/metadata.service.ts index 204c925e6b..c46f8b1d6e 100644 --- a/src/app/core/metadata/metadata.service.ts +++ b/src/app/core/metadata/metadata.service.ts @@ -84,7 +84,7 @@ export class MetadataService { ]; constructor( - private router: Router, + protected router: Router, private translate: TranslateService, private meta: Meta, private title: Title, @@ -363,6 +363,15 @@ export class MetadataService { } } + /** + * Add to the + */ + // private setLinkTag(): void { + // const value = this.getMetaTagValue('dc.link'); + // this.meta.addTag({ name: 'Link', content: value }); + // this.addMetaTag('Link', value); + // } + getBitLinkIfDownloadable(bitstream: Bitstream, bitstreamRd: RemoteData>): Observable { return observableOf(bitstream).pipe( getDownloadableBitstream(this.authorizationService), diff --git a/src/app/init.service.ts b/src/app/init.service.ts index 9fef2ca4ed..d5978d782d 100644 --- a/src/app/init.service.ts +++ b/src/app/init.service.ts @@ -24,6 +24,7 @@ import { isAuthenticationBlocking } from './core/auth/selectors'; import { distinctUntilChanged, find } from 'rxjs/operators'; import { Observable } from 'rxjs'; import { MenuService } from './shared/menu/menu.service'; +import { MetadataItemService } from './core/metadata-item/metadata-item.service'; /** * Performs the initialization of the app. @@ -50,6 +51,7 @@ export abstract class InitService { protected localeService: LocaleService, protected angulartics2DSpace: Angulartics2DSpace, protected metadata: MetadataService, + protected metadataItem: MetadataItemService, protected breadcrumbsService: BreadcrumbsService, protected themeService: ThemeService, protected menuService: MenuService, @@ -188,6 +190,7 @@ export abstract class InitService { this.breadcrumbsService.listenForRouteChanges(); this.themeService.listenForRouteChanges(); this.menuService.listenForRouteChanges(); + this.metadataItem.checkCurrentRoute(); } /** diff --git a/src/modules/app/browser-init.service.ts b/src/modules/app/browser-init.service.ts index 61d57f10f9..f38883be1e 100644 --- a/src/modules/app/browser-init.service.ts +++ b/src/modules/app/browser-init.service.ts @@ -32,6 +32,7 @@ import { logStartupMessage } from '../../../startup-message'; import { MenuService } from '../../app/shared/menu/menu.service'; import { RootDataService } from '../../app/core/data/root-data.service'; import { firstValueFrom, Subscription } from 'rxjs'; +import { MetadataItemService } from 'src/app/core/metadata-item/metadata-item.service'; /** * Performs client-side initialization. @@ -51,6 +52,7 @@ export class BrowserInitService extends InitService { protected angulartics2DSpace: Angulartics2DSpace, protected googleAnalyticsService: GoogleAnalyticsService, protected metadata: MetadataService, + protected metadataItem: MetadataItemService, protected breadcrumbsService: BreadcrumbsService, protected klaroService: KlaroService, protected authService: AuthService, @@ -66,6 +68,7 @@ export class BrowserInitService extends InitService { localeService, angulartics2DSpace, metadata, + metadataItem, breadcrumbsService, themeService, menuService, diff --git a/src/modules/app/server-init.service.ts b/src/modules/app/server-init.service.ts index d909bb0e8d..074efc31e7 100644 --- a/src/modules/app/server-init.service.ts +++ b/src/modules/app/server-init.service.ts @@ -21,6 +21,7 @@ import { BreadcrumbsService } from '../../app/breadcrumbs/breadcrumbs.service'; import { ThemeService } from '../../app/shared/theme-support/theme.service'; import { take } from 'rxjs/operators'; import { MenuService } from '../../app/shared/menu/menu.service'; +import { MetadataItemService } from 'src/app/core/metadata-item/metadata-item.service'; /** * Performs server-side initialization. @@ -36,9 +37,10 @@ export class ServerInitService extends InitService { protected localeService: LocaleService, protected angulartics2DSpace: Angulartics2DSpace, protected metadata: MetadataService, + protected metadataItem: MetadataItemService, protected breadcrumbsService: BreadcrumbsService, protected themeService: ThemeService, - protected menuService: MenuService, + protected menuService: MenuService ) { super( store, @@ -48,6 +50,7 @@ export class ServerInitService extends InitService { localeService, angulartics2DSpace, metadata, + metadataItem, breadcrumbsService, themeService, menuService,