2023-11-13 14:00:45 +01:00
|
|
|
import {ChangeDetectorRef, Component, OnInit} from "@angular/core";
|
2023-11-02 15:39:57 +01:00
|
|
|
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
|
|
|
import {ActivatedRoute, Router} from "@angular/router";
|
2023-11-13 14:00:45 +01:00
|
|
|
import {SidebarBaseComponent} from "../openaireLibrary/dashboard/sharedComponents/sidebar/sidebar-base.component";
|
|
|
|
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
|
|
|
import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder";
|
|
|
|
import {MenuItem} from "../openaireLibrary/sharedComponents/menu";
|
2024-01-09 11:02:07 +01:00
|
|
|
import {Session, User} from "../openaireLibrary/login/utils/helper.class";
|
|
|
|
import {UserManagementService} from "../openaireLibrary/services/user-management.service";
|
|
|
|
import {ConnectHelper} from "../openaireLibrary/connect/connectHelper";
|
|
|
|
import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service";
|
2024-01-09 12:49:25 +01:00
|
|
|
import {Irish} from "../shared/irish";
|
2023-11-02 15:39:57 +01:00
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'admin',
|
|
|
|
template: `
|
2023-11-24 09:55:49 +01:00
|
|
|
<div>
|
2023-11-15 16:40:20 +01:00
|
|
|
<loading *ngIf="loading" class="uk-position-center"></loading>
|
|
|
|
<div *ngIf="!loading" class="sidebar_main_swipe uk-flex uk-background-default"
|
2024-01-09 13:16:35 +01:00
|
|
|
[class.sidebar_main_active]="open && (hasSidebar || hasInternalSidebar || hasAdminMenu)"
|
|
|
|
[class.sidebar_mini]="!open && (hasSidebar || hasInternalSidebar || hasAdminMenu)"
|
2023-11-15 16:40:20 +01:00
|
|
|
[class.sidebar_hover]="hover">
|
2023-11-16 13:38:27 +01:00
|
|
|
<dashboard-sidebar *ngIf="hasSidebar && !hasInternalSidebar && sideBarItems.length > 0" [logoURL]="stakeholder | logoUrl"
|
|
|
|
[items]="sideBarItems" [backItem]="backItem"></dashboard-sidebar>
|
2024-01-09 13:16:35 +01:00
|
|
|
<dashboard-sidebar *ngIf="hasAdminMenu && !hasInternalSidebar" [items]="adminMenuItems" [backItem]="backItem"></dashboard-sidebar>
|
2023-11-15 16:40:20 +01:00
|
|
|
<div class="uk-width-1-1">
|
|
|
|
<router-outlet></router-outlet>
|
|
|
|
</div>
|
2023-11-13 14:00:45 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
2023-11-02 15:39:57 +01:00
|
|
|
`
|
|
|
|
})
|
2023-11-13 14:00:45 +01:00
|
|
|
export class AdminComponent extends SidebarBaseComponent implements OnInit {
|
|
|
|
stakeholder: Stakeholder;
|
2023-11-14 15:13:09 +01:00
|
|
|
loading: boolean = true;
|
2024-01-09 11:02:07 +01:00
|
|
|
user: User;
|
2023-11-02 15:39:57 +01:00
|
|
|
|
2023-11-09 13:34:34 +01:00
|
|
|
constructor(protected _route: ActivatedRoute,
|
2023-11-13 14:00:45 +01:00
|
|
|
protected _router: Router,
|
|
|
|
protected layoutService: LayoutService,
|
|
|
|
protected cdr: ChangeDetectorRef,
|
2024-01-09 11:02:07 +01:00
|
|
|
private stakeholderService: StakeholderService,
|
|
|
|
private userManagementService: UserManagementService,
|
|
|
|
private configurationService: ConfigurationService) {
|
2023-11-13 14:00:45 +01:00
|
|
|
super();
|
2023-11-09 13:34:34 +01:00
|
|
|
this.initRouterParams(this._route);
|
2023-11-02 15:39:57 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
ngOnInit() {
|
2023-11-13 14:00:45 +01:00
|
|
|
super.ngOnInit();
|
2024-01-09 11:02:07 +01:00
|
|
|
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
|
|
|
this.user = user;
|
|
|
|
this.subscriptions.push(this.params.subscribe(params => {
|
|
|
|
this.sideBarItems = [];
|
|
|
|
this.loading = true;
|
|
|
|
if(params['stakeholder']) {
|
|
|
|
this.subscriptions.push(this.stakeholderService.getStakeholder(params['stakeholder']).subscribe(stakeholder => {
|
|
|
|
this.stakeholder = stakeholder;
|
|
|
|
this.setProperties(this.stakeholder.alias, this.stakeholder.type);
|
|
|
|
this.layoutService.setRootClass(this.stakeholder.type);
|
|
|
|
this.sideBarItems.push(new MenuItem("general", "General", "", "/admin/" + this.stakeholder.alias, false, [], [], {}, {name: 'badge'}));
|
|
|
|
this.sideBarItems.push(new MenuItem("indicators", "Indicators", "", "/admin/" + this.stakeholder.alias + '/indicators', false, [], [], {}, {name: 'bar_chart'}, null, "uk-visible@m"));
|
|
|
|
if (this.stakeholder.defaultId) {
|
|
|
|
this.sideBarItems.push(new MenuItem("users", "Users", "", "/admin/" + this.stakeholder.alias + '/users', false, [], [], {}, {name: 'group'}, null, "uk-visible@m", "/admin/" + this.stakeholder.alias + "/users"));
|
|
|
|
}
|
|
|
|
if (this.isAdmin) {
|
|
|
|
this.sideBarItems.push(new MenuItem("admin-tools", "Pages & Entities", "", "/admin/" + this.stakeholder.alias + "/admin-tools/pages", false, [], [], {}, {name: 'description'}, null, "uk-visible@m", "/admin/" + this.stakeholder.alias + "/admin-tools"));
|
|
|
|
}
|
2024-01-09 13:16:35 +01:00
|
|
|
if (this.hasAdminMenu) {
|
|
|
|
this.adminMenuItems = [];
|
|
|
|
this.backItem = null;
|
|
|
|
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
|
|
|
|
if (Session.isPortalAdministrator(this.user)) {
|
|
|
|
this.adminMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/admin-tools'));
|
|
|
|
}
|
|
|
|
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)) {
|
|
|
|
this.adminMenuItems.push(new MenuItem("irishOptions", "Irish options", "", "/admin/irish/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/irish/admin-tools'));
|
|
|
|
}
|
|
|
|
this.hasAdminMenu = this.hasAdminMenu && this.adminMenuItems.length > 1;
|
|
|
|
}
|
|
|
|
|
2024-01-09 11:02:07 +01:00
|
|
|
this.backItem = new MenuItem("back", "Manage profiles", "", "/admin", false, [], null, {}, {name: 'west'});
|
|
|
|
this.loading = false;
|
|
|
|
}));
|
|
|
|
} else {
|
2024-01-09 12:49:25 +01:00
|
|
|
this.setProperties(Irish.irishAdminToolsCommunity, Irish.irishAdminToolsPortalType);
|
2024-01-09 11:02:07 +01:00
|
|
|
this.stakeholderService.setStakeholder(null);
|
|
|
|
this.layoutService.setRootClass(null);
|
|
|
|
this.hasSidebar = false;
|
2023-11-14 15:13:09 +01:00
|
|
|
this.loading = false;
|
2024-01-09 13:16:35 +01:00
|
|
|
if (this.hasAdminMenu) {
|
|
|
|
this.adminMenuItems = [];
|
|
|
|
this.backItem = null;
|
|
|
|
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
|
|
|
|
if (Session.isPortalAdministrator(this.user)) {
|
|
|
|
this.adminMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/admin-tools'));
|
|
|
|
}
|
|
|
|
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)) {
|
|
|
|
this.adminMenuItems.push(new MenuItem("irishOptions", "Irish options", "", "/admin/irish/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/irish/admin-tools'));
|
|
|
|
}
|
|
|
|
this.hasAdminMenu = this.hasAdminMenu && this.adminMenuItems.length > 1;
|
|
|
|
}
|
2024-01-09 11:02:07 +01:00
|
|
|
}
|
|
|
|
}));
|
2023-11-02 15:39:57 +01:00
|
|
|
}));
|
|
|
|
}
|
2023-11-24 09:55:49 +01:00
|
|
|
|
|
|
|
ngOnDestroy() {
|
|
|
|
super.ngOnDestroy();
|
|
|
|
this.layoutService.setRootClass(null);
|
2024-01-09 12:49:25 +01:00
|
|
|
this.setProperties(Irish.irishAdminToolsCommunity, Irish.irishAdminToolsPortalType);
|
2023-11-24 09:55:49 +01:00
|
|
|
}
|
2024-01-09 11:02:07 +01:00
|
|
|
|
|
|
|
setProperties(id, type = null) {
|
|
|
|
this.properties.adminToolsCommunity = id;
|
|
|
|
if (type) {
|
|
|
|
this.properties.adminToolsPortalType = type;
|
|
|
|
} else {
|
|
|
|
ConnectHelper.setPortalTypeFromPid(id);
|
|
|
|
}
|
|
|
|
this.configurationService.initPortal(this.properties, this.properties.adminToolsCommunity);
|
|
|
|
}
|
|
|
|
|
|
|
|
public get isAdmin() {
|
|
|
|
return Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user);
|
|
|
|
}
|
2023-11-02 15:39:57 +01:00
|
|
|
}
|