Skip to content

Commit 685e3c3

Browse files
committed
[DSC-2017] Fix problem with link in the item page navbar
1 parent f9b04ef commit 685e3c3

5 files changed

Lines changed: 30 additions & 11 deletions

File tree

src/app/cris-layout/cris-layout-loader/cris-layout-horizontal/cris-layout-navbar/cris-layout-navbar.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
<div id="collapsingNav">
1212
<ul class="navbar-nav mr-auto shadow-none">
1313
<ng-container *ngIf="!!(activeTab$ |async)">
14-
<ds-cris-layout-sidebar-item *ngFor="let tab of tabs;" [tab]="tab" [layout]="'horizontal'" [activeTab]="(activeTab$ |async)"
14+
<ds-cris-layout-sidebar-item *ngFor="let tab of tabs;" [itemBaseUrl]="itemBaseUrl" [tab]="tab" [layout]="'horizontal'" [activeTab]="(activeTab$ |async)"
1515
(tabSelectedChange)="setActiveTab($event)"></ds-cris-layout-sidebar-item>
1616
</ng-container>
1717
</ul>
1818
</div>
1919
</div>
2020
</div>
21-
</nav>
21+
</nav>

src/app/cris-layout/cris-layout-loader/cris-layout-vertical/cris-layout-sidebar/cris-layout-sidebar.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div>
55
<ul class="list-unstyled components mb-5">
66
<ng-container *ngIf="!!(activeTab$ |async)">
7-
<ds-cris-layout-sidebar-item *ngFor="let tab of tabs;" [tab]="tab" [layout]="'vertical'" [activeTab]="(activeTab$ |async)"
7+
<ds-cris-layout-sidebar-item *ngFor="let tab of tabs;" [itemBaseUrl]="itemBaseUrl" [tab]="tab" [layout]="'vertical'" [activeTab]="(activeTab$ |async)"
88
(tabSelectedChange)="setActiveTab($event)"></ds-cris-layout-sidebar-item>
99
</ng-container>
1010
</ul>

src/app/cris-layout/cris-layout-loader/shared/cris-layout-tabs/cris-layout-tabs.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,16 @@ export abstract class CrisLayoutTabsComponent {
4747
*/
4848
@Output() selectedTab = new EventEmitter<CrisLayoutTab>();
4949

50+
/**
51+
* The item base url
52+
*/
53+
itemBaseUrl: string;
5054

5155
constructor(public location: Location, public router: Router, public route: ActivatedRoute) {
5256
}
5357

5458
init(): void {
59+
this.itemBaseUrl = getItemPageRoute(this.item) + '/';
5560
if (this.tabs && this.tabs.length > 0) {
5661
if (isNotNull(this.route.snapshot.paramMap.get('tab'))) {
5762
this.parseTabs(this.route.snapshot.paramMap.get('tab'));

src/app/cris-layout/cris-layout-loader/shared/sidebar-item/cris-layout-sidebar-item.component.html

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
<li class="sidebar-section h-100" [ngClass]="{ 'active' : !!tab && !!activeTab && (tab.isActive || tab.id == activeTab.id), 'expanded': expanded, 'vertical': layout == 'vertical', 'horizontal': layout == 'horizontal' }">
22
<div class="icon-wrapper" *ngIf="!tab.children || tab.children.length == 0 ">
3-
<a class="nav-item shortcut-icon" href="javascript:;" [ngClass]="{ 'px-4 justify-content-between' : layout == 'vertical' }"
4-
[title]="getTabHeader(tab)" (click)="$event.preventDefault();selectTab(tab)" [innerHTML]="getTabHeader(tab)">
5-
6-
</a>
3+
<a class="nav-item shortcut-icon"
4+
href="javascript:void(0);"
5+
[ngClass]="{ 'px-4 justify-content-between' : layout == 'vertical' }"
6+
[title]="getTabHeader(tab)"
7+
[routerLink]="itemBaseUrl + tab.shortname"
8+
(click)="$event.stopPropagation();$event.preventDefault();selectTab(tab)"
9+
[innerHTML]="getTabHeader(tab)"></a>
710
</div>
811
<div *ngIf="!!tab.children && tab.children.length > 0 " class="sidebar-collapsible h-100">
912
<a class="nav-item shortcut-icon" href="javascript:;" [ngClass]="{ 'px-4 justify-content-between' : layout == 'vertical' }"
@@ -19,10 +22,14 @@
1922
</a>
2023
<ul class="sidebar-sub-level-items list-unstyled" @slide *ngIf="expanded">
2124
<li *ngFor="let subTab of tab.children" [ngClass]="{'active' : !!subTab && !!activeTab && subTab.id == activeTab.id}">
22-
<a class="nav-item shortcut-icon" href="javascript:;" [ngClass]="{ 'px-4 justify-content-between' : layout == 'vertical' }"
23-
(click)="$event.preventDefault();selectTab(subTab)">
24-
<span id="sidebarName-{{subTab.id}}" class="pl-3 section-header-text" [innerHTML]="getTabHeader(subTab)">
25-
</span>
25+
<a class="nav-item shortcut-icon"
26+
href="javascript:void(0);"
27+
[ngClass]="{ 'px-4 justify-content-between' : layout == 'vertical' }"
28+
[routerLink]="itemBaseUrl + subTab.shortname"
29+
(click)="$event.stopPropagation();$event.preventDefault();selectTab(subTab)">
30+
<span id="sidebarName-{{subTab.id}}"
31+
class="pl-3 section-header-text"
32+
[innerHTML]="getTabHeader(subTab)"></span>
2633
</a>
2734
</li>
2835
</ul>

src/app/cris-layout/cris-layout-loader/shared/sidebar-item/cris-layout-sidebar-item.component.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { CrisLayoutTab } from '../../../../core/layout/models/tab.model';
44
import { rotate, rotateNavbar } from '../../../../shared/animations/rotate';
55
import { slide } from '../../../../shared/animations/slide';
66
import { TranslateService } from '@ngx-translate/core';
7+
import { Item } from '../../../../core/shared/item.model';
8+
import { getItemPageRoute } from '../../../../item-page/item-page-routing-paths';
79

810
/**
911
* This component defines the default layout for all tabs of DSpace Items.
@@ -17,6 +19,11 @@ import { TranslateService } from '@ngx-translate/core';
1719
animations: [rotate, slide, rotateNavbar]
1820
})
1921
export class CrisLayoutSidebarItemComponent {
22+
/**
23+
* Contains the items base url
24+
*/
25+
@Input() itemBaseUrl: string;
26+
2027
/**
2128
* The tab that will be shown
2229
*/

0 commit comments

Comments
 (0)