-
Notifications
You must be signed in to change notification settings - Fork 529
Expand file tree
/
Copy pathregistries.menu.ts
More file actions
76 lines (71 loc) · 2.28 KB
/
registries.menu.ts
File metadata and controls
76 lines (71 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* 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 { ScriptDataService } from '@dspace/core/data/processes/script-data.service';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import {
combineLatest,
map,
Observable,
} from 'rxjs';
import { MenuItemType } from '../menu-item-type.model';
import { PartialMenuSection } from '../menu-provider.model';
import { AbstractExpandableMenuProvider } from './helper-providers/expandable-menu-provider';
/**
* Menu provider to create the "Registries" menu (and subsections) in the admin sidebar
*/
@Injectable()
export class RegistriesMenuProvider extends AbstractExpandableMenuProvider {
constructor(
protected authorizationService: AuthorizationDataService,
protected scriptDataService: ScriptDataService,
protected modalService: NgbModal,
) {
super();
}
public getTopSection(): Observable<PartialMenuSection> {
return this.authorizationService.isAuthorized(FeatureID.AdministratorOf).pipe(
map((isSiteAdmin) => ({
model: {
type: MenuItemType.TEXT,
text: 'menu.section.registries',
},
icon: 'list',
visible: isSiteAdmin,
})),
);
}
public getSubSections(): Observable<PartialMenuSection[]> {
return combineLatest([
this.authorizationService.isAuthorized(FeatureID.AdministratorOf),
]).pipe(
map(([authorized]) => {
return [
{
visible: authorized,
model: {
type: MenuItemType.LINK,
text: 'menu.section.registries_metadata',
link: 'admin/registries/metadata',
},
},
{
visible: authorized,
model: {
type: MenuItemType.LINK,
text: 'menu.section.registries_format',
link: 'admin/registries/bitstream-formats',
},
},
];
}),
);
}
}