navbar.ts
3.27 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
77
78
79
80
81
82
83
84
85
import {Component, Inject, EventEmitter, Input} from "ng-forward";
import {LanguageSelectorComponent} from "../language-selector/language-selector.component";
import {SessionService, AuthService, AuthController, AuthEvents} from "./../../login";
import {EnvironmentService} from "./../../../lib/ng-noosfero-api/http/environment.service";
import {SidebarNotificationService} from "../sidebar/sidebar.notification.service";
import {BodyStateClassesService} from '../services/body-state-classes.service';
import {DesignModeTogglerComponent} from './../../admin/layout-edit/designModeToggler.component';
import {BootstrapSwitcherComponent, BootstrapSwitcherItem} from './../../shared/components/bootstrap-switcher/bootstrap-switcher.component';
@Component({
selector: "acme-navbar",
templateUrl: "app/layout/navbar/navbar.html",
directives: [LanguageSelectorComponent, DesignModeTogglerComponent, BootstrapSwitcherComponent],
providers: [AuthService, SessionService, SidebarNotificationService, EnvironmentService]
})
@Inject("$uibModal", AuthService, "SessionService", "$state", SidebarNotificationService, BodyStateClassesService, EnvironmentService)
export class Navbar {
private currentUser: noosfero.User;
private modalInstance: any = null;
public showHamburger: boolean = false;
public currentEnvironment: noosfero.Environment = <any>{ name: '' };
/**
*
*/
constructor(
private $uibModal: any,
public authService: AuthService,
private session: SessionService,
private $state: ng.ui.IStateService,
private sidebarNotificationService: SidebarNotificationService,
private bodyStateService: BodyStateClassesService,
private environmentService: EnvironmentService
) {
this.currentUser = this.session.currentUser();
this.currentEnvironment = environmentService.getCurrentEnvironment();
this.showHamburger = this.authService.isAuthenticated();
this.bodyStateService.addContentClass(!this.sidebarNotificationService.sidebarVisible);
this.authService.subscribe(AuthEvents[AuthEvents.loginSuccess], () => {
if (this.modalInstance) {
this.modalInstance.close();
this.modalInstance = null;
}
this.currentUser = this.session.currentUser();
this.showHamburger = true;
this.$state.go(this.$state.current, {}, { reload: true }); // TODO move to auth
});
this.authService.subscribe(AuthEvents[AuthEvents.logoutSuccess], () => {
this.currentUser = this.session.currentUser();
});
}
public toggleCollapse() {
this.sidebarNotificationService.alternateVisibility();
this.bodyStateService.addContentClass(!this.sidebarNotificationService.sidebarVisible);
}
openLogin() {
this.modalInstance = this.$uibModal.open({
templateUrl: 'app/login/login.html',
controller: AuthController,
controllerAs: 'vm',
bindToController: true
});
};
logout() {
this.authService.logout();
this.$state.go(this.$state.current, {}, { reload: true }); // TODO move to auth
};
activate() {
if (!this.currentUser) {
this.openLogin();
}
}
}