From f9ff17c9b3dad00cf48a50e89ba71f341af7bcab Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Fri, 26 Oct 2018 18:09:19 +0200
Subject: [PATCH] FEAT #8731 header infos

---
 src/frontend/app/about-us.component.ts        |  7 +--
 .../basket/basket-administration.component.ts | 13 +++--
 .../baskets-administration.component.ts       | 14 ++---
 .../entities-administration.component.ts      | 11 ++--
 .../notification-administration.component.ts  | 20 ++++---
 .../notifications-administration.component.ts | 16 +++---
 .../securities-administration.component.ts    | 10 ++--
 .../status/status-administration.component.ts | 57 +++++++++----------
 .../statuses-administration.component.ts      | 12 ++--
 .../update-status-administration.component.ts | 12 ++--
 ...ersions-update-administration.component.ts |  9 ++-
 .../app/password-modification.component.ts    |  2 +-
 src/frontend/app/profile.component.ts         |  5 +-
 13 files changed, 94 insertions(+), 94 deletions(-)

diff --git a/src/frontend/app/about-us.component.ts b/src/frontend/app/about-us.component.ts
index cb8fff48485..5de7435dcd3 100755
--- a/src/frontend/app/about-us.component.ts
+++ b/src/frontend/app/about-us.component.ts
@@ -3,6 +3,7 @@ import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from './translate.component';
 import { NotificationService } from './notification.service';
+import { HeaderService }        from '../service/header.service';
 import { MatDialog, MatSidenav } from '@angular/material';
 
 declare function $j(selector: any): any;
@@ -16,8 +17,6 @@ declare var angularGlobals: any;
 })
 export class AboutUsComponent implements OnInit {
 
-    /*HEADER*/
-    titleHeader                              : string;
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
 
@@ -31,7 +30,7 @@ export class AboutUsComponent implements OnInit {
     loading: boolean = false;
 
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, public dialog: MatDialog) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, public dialog: MatDialog, private headerService: HeaderService) {
         this.mobileMode = angularGlobals.mobileMode;        
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
@@ -40,7 +39,7 @@ export class AboutUsComponent implements OnInit {
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.aboutUs);
+        this.headerService.headerMessage = this.lang.aboutUs;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
diff --git a/src/frontend/app/administration/basket/basket-administration.component.ts b/src/frontend/app/administration/basket/basket-administration.component.ts
index 86bb2b2043f..9cdab07f69e 100644
--- a/src/frontend/app/administration/basket/basket-administration.component.ts
+++ b/src/frontend/app/administration/basket/basket-administration.component.ts
@@ -5,6 +5,7 @@ import { Router, ActivatedRoute } from '@angular/router';
 import { MatPaginator, MatTableDataSource, MatSort, MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatSidenav } from '@angular/material';
 import { LANG } from '../../translate.component';
 import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 import { AutoCompletePlugin } from '../../../plugins/autocomplete.plugin';
 import { FormControl } from '@angular/forms';
 
@@ -17,8 +18,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class BasketAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
     
@@ -60,7 +60,7 @@ export class BasketAdministrationComponent implements OnInit {
         this.dataSource.filter = filterValue;
     }
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService, public dialog: MatDialog) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService, public dialog: MatDialog, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -76,9 +76,9 @@ export class BasketAdministrationComponent implements OnInit {
 
         this.loading = true;
 
-        this.route.params.subscribe((params) => {
+        this.route.params.subscribe((params: any) => {
             if (typeof params['id'] == "undefined") {
-                window['MainHeaderComponent'].refreshTitle(this.lang.basketCreation);
+                this.headerService.headerMessage = this.lang.basketCreation;
                 window['MainHeaderComponent'].setSnav(this.sidenavLeft);
                 window['MainHeaderComponent'].setSnavRight(null);
 
@@ -87,7 +87,6 @@ export class BasketAdministrationComponent implements OnInit {
                 this.loading = false;
             } else {
                 this.orderColumnsSelected = [];
-                window['MainHeaderComponent'].refreshTitle(this.lang.basketModification);
                 window['MainHeaderComponent'].setSnav(this.sidenavLeft);
                 window['MainHeaderComponent'].setSnavRight(null);
                 
@@ -96,6 +95,8 @@ export class BasketAdministrationComponent implements OnInit {
                 this.id = params['id'];
                 this.http.get(this.coreUrl + "rest/baskets/" + this.id)
                     .subscribe((data: any) => {
+                        this.headerService.headerMessage = this.lang.basketModification + " <small>" + data.basket.basket_name + "</small>";
+
                         this.basket = data.basket;
                         this.basket.id = data.basket.basket_id;
                         this.basket.name = data.basket.basket_name;
diff --git a/src/frontend/app/administration/basket/baskets-administration.component.ts b/src/frontend/app/administration/basket/baskets-administration.component.ts
index 11be6a21c0d..6a275c96112 100644
--- a/src/frontend/app/administration/basket/baskets-administration.component.ts
+++ b/src/frontend/app/administration/basket/baskets-administration.component.ts
@@ -2,8 +2,9 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
-import { NotificationService } from '../../notification.service';
 import { MatSidenav, MatPaginator, MatTableDataSource, MatSort } from '@angular/material';
+import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 
 
 declare function $j(selector: any): any;
@@ -16,8 +17,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class BasketsAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
 
@@ -42,7 +42,7 @@ export class BasketsAdministrationComponent implements OnInit {
         this.dataSource.filter = filterValue;
     }
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -54,7 +54,7 @@ export class BasketsAdministrationComponent implements OnInit {
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.administration + ' ' + this.lang.baskets);
+        this.headerService.headerMessage = this.lang.administration + ' ' + this.lang.baskets;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
@@ -98,7 +98,7 @@ export class BasketsAdministrationComponent implements OnInit {
                         }, () => {
                             location.href = "index.php";
                         });
-                }, (err) => {
+                }, (err: any) => {
                     this.notify.error(err.error.errors);
                 });
         }
@@ -109,7 +109,7 @@ export class BasketsAdministrationComponent implements OnInit {
             .subscribe((data: any) => {
                 this.baskets = data['baskets'];
                 this.notify.success(this.lang.modificationSaved);
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
     }
diff --git a/src/frontend/app/administration/entity/entities-administration.component.ts b/src/frontend/app/administration/entity/entities-administration.component.ts
index f7d0241f12f..cf6903c8a83 100644
--- a/src/frontend/app/administration/entity/entities-administration.component.ts
+++ b/src/frontend/app/administration/entity/entities-administration.component.ts
@@ -2,9 +2,10 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild, Inject } from '@angula
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
+import { MatSidenav, MatPaginator, MatTableDataSource, MatSort, MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
 import { ConfirmModalComponent } from '../../confirmModal.component';
 import { NotificationService } from '../../notification.service';
-import { MatSidenav, MatPaginator, MatTableDataSource, MatSort, MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
+import { HeaderService }        from '../../../service/header.service';
 
 import { AutoCompletePlugin } from '../../../plugins/autocomplete.plugin';
 
@@ -54,7 +55,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
         this.dataSource.filter = filterValue;
     }
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, public dialog: MatDialog) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, public dialog: MatDialog, private headerService: HeaderService) {
         super(http, ['adminUsers', 'usersAndEntities', 'visaUsers']);
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
@@ -67,7 +68,7 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.administration + ' ' + this.lang.entities);
+        this.headerService.headerMessage = this.lang.administration + ' ' + this.lang.entities;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
@@ -77,13 +78,13 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
         this.http.get(this.coreUrl + "rest/entityTypes")
             .subscribe((data: any) => {
                 this.entityTypeList = data['types'];
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
         this.http.get(this.coreUrl + "rest/listTemplates/types/entity_id/roles")
             .subscribe((data: any) => {
                 this.listTemplateRoles = data['roles'];
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
 
diff --git a/src/frontend/app/administration/notification/notification-administration.component.ts b/src/frontend/app/administration/notification/notification-administration.component.ts
index 4c42c986613..b274e615932 100644
--- a/src/frontend/app/administration/notification/notification-administration.component.ts
+++ b/src/frontend/app/administration/notification/notification-administration.component.ts
@@ -2,9 +2,11 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { Router, ActivatedRoute } from '@angular/router';
+import { MatSidenav } from '@angular/material';
 import { LANG } from '../../translate.component';
 import { NotificationService } from '../../notification.service';
-import { MatSidenav } from '@angular/material';
+import { HeaderService }        from '../../../service/header.service';
+
 
 declare function $j(selector: any): any;
 
@@ -16,8 +18,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class NotificationAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
     
@@ -32,7 +33,7 @@ export class NotificationAdministrationComponent implements OnInit {
     loading: boolean = false;
     lang: any = LANG;
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -47,9 +48,9 @@ export class NotificationAdministrationComponent implements OnInit {
         this.loading = true;
         this.coreUrl = angularGlobals.coreUrl;
 
-        this.route.params.subscribe(params => {
+        this.route.params.subscribe((params: any) => {
             if (typeof params['identifier'] == "undefined") {
-                window['MainHeaderComponent'].refreshTitle(this.lang.notificationCreation);
+                this.headerService.headerMessage = this.lang.notificationCreation;
                 window['MainHeaderComponent'].setSnav(this.sidenavLeft);
                 window['MainHeaderComponent'].setSnavRight(null);
 
@@ -59,21 +60,22 @@ export class NotificationAdministrationComponent implements OnInit {
                         this.notification = data.notification;
                         this.notification.attachfor_properties = [];
                         this.loading = false;
-                    }, (err) => {
+                    }, (err: any) => {
                         this.notify.error(err.error.errors);
                     });
             } else {
-                window['MainHeaderComponent'].refreshTitle(this.lang.notificationModification);
                 window['MainHeaderComponent'].setSnav(this.sidenavLeft);
                 window['MainHeaderComponent'].setSnavRight(null);
 
                 this.creationMode = false;
                 this.http.get(this.coreUrl + 'rest/notifications/' + params['identifier'])
                     .subscribe((data: any) => {
+                        this.headerService.headerMessage = this.lang.notificationModification + " <small>" + data.notification.description + "</small>";
+
                         this.notification = data.notification;
                         this.notification.attachfor_properties = [];
                         this.loading = false;
-                    }, (err) => {
+                    }, (err: any) => {
                         this.notify.error(err.error.errors);
                     });
             }
diff --git a/src/frontend/app/administration/notification/notifications-administration.component.ts b/src/frontend/app/administration/notification/notifications-administration.component.ts
index 4a75373318e..a980e221f71 100644
--- a/src/frontend/app/administration/notification/notifications-administration.component.ts
+++ b/src/frontend/app/administration/notification/notifications-administration.component.ts
@@ -2,8 +2,9 @@ import { ChangeDetectorRef, Component, ViewChild, OnInit } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
-import { NotificationService } from '../../notification.service';
 import { MatSidenav, MatPaginator, MatTableDataSource, MatSort } from '@angular/material';
+import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 
 
 declare function $j(selector: any): any;
@@ -16,8 +17,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class NotificationsAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
 
@@ -36,7 +36,7 @@ export class NotificationsAdministrationComponent implements OnInit {
 
     dom : any = [];
 
-    dow : any = []
+    dow : any = [];
 
     newCron: any = {
         "m" : "",
@@ -45,7 +45,7 @@ export class NotificationsAdministrationComponent implements OnInit {
         "mon" : "",
         "cmd" : "",
         "state": "normal"
-    }
+    };
 
     authorizedNotification :any;
     crontab:any;
@@ -60,7 +60,7 @@ export class NotificationsAdministrationComponent implements OnInit {
         this.dataSource.filter = filterValue;
     }
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, , private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -72,7 +72,7 @@ export class NotificationsAdministrationComponent implements OnInit {
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.administration + ' ' + this.lang.notifications);
+        this.headerService.headerMessage = this.lang.administration + ' ' + this.lang.notifications;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
@@ -88,7 +88,7 @@ export class NotificationsAdministrationComponent implements OnInit {
                     this.dataSource.paginator = this.paginator;
                     this.dataSource.sort = this.sort;
                 }, 0);
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
     }
diff --git a/src/frontend/app/administration/security/securities-administration.component.ts b/src/frontend/app/administration/security/securities-administration.component.ts
index 7184f5fa412..eb0bd9f29f0 100644
--- a/src/frontend/app/administration/security/securities-administration.component.ts
+++ b/src/frontend/app/administration/security/securities-administration.component.ts
@@ -2,8 +2,9 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
-import { NotificationService } from '../../notification.service';
 import { MatSidenav } from '@angular/material';
+import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 
 declare function $j(selector: any): any;
 
@@ -15,8 +16,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class SecuritiesAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
     
@@ -42,7 +42,7 @@ export class SecuritiesAdministrationComponent implements OnInit {
     passwordRulesList : any[] = [];
 
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -54,7 +54,7 @@ export class SecuritiesAdministrationComponent implements OnInit {
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.securitiesAdministration);
+        this.headerService.headerMessage = this.lang.securitiesAdministration;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
diff --git a/src/frontend/app/administration/status/status-administration.component.ts b/src/frontend/app/administration/status/status-administration.component.ts
index 9bf6b215c4d..a551ea27b3f 100644
--- a/src/frontend/app/administration/status/status-administration.component.ts
+++ b/src/frontend/app/administration/status/status-administration.component.ts
@@ -4,6 +4,7 @@ import { HttpClient } from '@angular/common/http';
 import { Router, ActivatedRoute } from '@angular/router';
 import { LANG } from '../../translate.component';
 import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 import { FormControl, Validators} from '@angular/forms';
 import { MatSidenav } from '@angular/material';
 
@@ -15,8 +16,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class StatusAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
     
@@ -47,7 +47,7 @@ export class StatusAdministrationComponent implements OnInit {
             this.statusId.hasError('pattern') ? this.lang.patternId : '';
     }
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private route: ActivatedRoute, private router: Router, private notify: NotificationService, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -62,14 +62,14 @@ export class StatusAdministrationComponent implements OnInit {
         this.coreUrl = angularGlobals.coreUrl;
         this.loading = true;
 
-        this.route.params.subscribe((params) => {
+        this.route.params.subscribe((params: any) => {
             if (typeof params['identifier'] == "undefined") {
-                window['MainHeaderComponent'].refreshTitle(this.lang.statusCreation);
+                this.headerService.headerMessage = this.lang.statusCreation;
                 window['MainHeaderComponent'].setSnav(this.sidenavLeft);
                 window['MainHeaderComponent'].setSnavRight(null);
 
                 this.http.get(this.coreUrl + 'rest/administration/statuses/new')
-                    .subscribe((data) => {
+                    .subscribe((data: any) => {
                         this.status.img_filename = "fm-letter";
                         this.status.can_be_searched = true;
                         this.status.can_be_modified = true;
@@ -79,39 +79,36 @@ export class StatusAdministrationComponent implements OnInit {
                     });
                 this.statusIdAvailable = false;
             } else {
-                window['MainHeaderComponent'].refreshTitle(this.lang.statusModification);
                 window['MainHeaderComponent'].setSnav(this.sidenavLeft);
                 window['MainHeaderComponent'].setSnavRight(null);
 
                 this.creationMode = false;
                 this.statusIdentifier = params['identifier'];
-                this.getStatusInfos(this.statusIdentifier);
-                this.statusIdAvailable = true;
-                this.loading = false;
+                this.http.get(this.coreUrl + 'rest/statuses/' + params['identifier'])
+                    .subscribe((data: any) => {
+                        this.status = data['status'][0];
+                        this.headerService.headerMessage = this.lang.statusModification + " <small>" + this.status['label_status'] + "</small>";
+
+                        if (this.status.can_be_searched == 'Y') {
+                            this.status.can_be_searched = true;
+                        } else {
+                            this.status.can_be_searched = false;
+                        }
+                        if (this.status.can_be_modified == 'Y') {
+                            this.status.can_be_modified = true;
+                        } else {
+                            this.status.can_be_modified = false;
+                        }
+                        this.statusImages = data['statusImages'];
+                        this.statusIdAvailable = true;
+                        this.loading = false;
+                    }, (err: any) => {
+                        this.notify.error(err.error.errors);
+                    });
             }
         });
     }
 
-    getStatusInfos(statusIdentifier: string) {
-        this.http.get(this.coreUrl + 'rest/statuses/' + statusIdentifier)
-            .subscribe((data) => {
-                this.status = data['status'][0];
-                if (this.status.can_be_searched == 'Y') {
-                    this.status.can_be_searched = true;
-                } else {
-                    this.status.can_be_searched = false;
-                }
-                if (this.status.can_be_modified == 'Y') {
-                    this.status.can_be_modified = true;
-                } else {
-                    this.status.can_be_modified = false;
-                }
-                this.statusImages = data['statusImages'];
-            }, (err) => {
-                this.notify.error(err.error.errors);
-            });
-    }
-
     isAvailable() {
         if (this.status.id) {
             this.http.get(this.coreUrl + "rest/status/" + this.status.id)
diff --git a/src/frontend/app/administration/status/statuses-administration.component.ts b/src/frontend/app/administration/status/statuses-administration.component.ts
index eaccee11e3d..cdac8952345 100644
--- a/src/frontend/app/administration/status/statuses-administration.component.ts
+++ b/src/frontend/app/administration/status/statuses-administration.component.ts
@@ -2,8 +2,9 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
-import { NotificationService } from '../../notification.service';
 import { MatPaginator, MatTableDataSource, MatSort, MatSidenav } from '@angular/material';
+import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 
 declare function $j(selector: any): any;
 
@@ -14,8 +15,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class StatusesAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
 
@@ -39,7 +39,7 @@ export class StatusesAdministrationComponent implements OnInit {
         this.dataSource.filter = filterValue;
     }
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -51,7 +51,7 @@ export class StatusesAdministrationComponent implements OnInit {
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.administration + ' ' + this.lang.statuses);
+        this.headerService.headerMessage = this.lang.administration + ' ' + this.lang.statuses;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
@@ -68,7 +68,7 @@ export class StatusesAdministrationComponent implements OnInit {
                     this.dataSource.sort = this.sort;
                 }, 0);
 
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
     }
diff --git a/src/frontend/app/administration/updateStatus/update-status-administration.component.ts b/src/frontend/app/administration/updateStatus/update-status-administration.component.ts
index 137b30f706d..72b71270952 100644
--- a/src/frontend/app/administration/updateStatus/update-status-administration.component.ts
+++ b/src/frontend/app/administration/updateStatus/update-status-administration.component.ts
@@ -2,10 +2,11 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
+import { MatSidenav } from '@angular/material';
 import { NotificationService } from '../../notification.service';
+import { HeaderService }        from '../../../service/header.service';
 
 import { AutoCompletePlugin } from '../../../plugins/autocomplete.plugin';
-import { MatSidenav } from '@angular/material';
 
 declare function $j(selector: any): any;
 declare var angularGlobals: any;
@@ -17,8 +18,7 @@ declare var angularGlobals: any;
     providers: [NotificationService]
 })
 export class UpdateStatusAdministrationComponent extends AutoCompletePlugin implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
 
@@ -36,7 +36,7 @@ export class UpdateStatusAdministrationComponent extends AutoCompletePlugin impl
     resIdList                       : string[]  = [];
     chronoList                      : string[]  = [];
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService, private headerService: HeaderService) {
         super(http, ['statuses']);
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
@@ -49,7 +49,7 @@ export class UpdateStatusAdministrationComponent extends AutoCompletePlugin impl
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.updateStatus);
+        this.headerService.headerMessage = this.lang.updateStatus;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
@@ -76,7 +76,7 @@ export class UpdateStatusAdministrationComponent extends AutoCompletePlugin impl
                 this.resIdList = [];
                 this.chronoList = [];
                 this.notify.success(this.lang.modificationSaved);
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
     }
diff --git a/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts b/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts
index 08c9f469c7f..f5a7ca7e524 100644
--- a/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts
+++ b/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts
@@ -3,6 +3,7 @@ import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../../translate.component';
 import { MatSidenav } from '@angular/material';
+import { HeaderService }        from '../../../service/header.service';
 
 declare function $j(selector: any): any;
 
@@ -13,8 +14,7 @@ declare var angularGlobals: any;
     templateUrl: "versions-update-administration.component.html"
 })
 export class VersionsUpdateAdministrationComponent implements OnInit {
-    /*HEADER*/
-    titleHeader                              : string;
+
     @ViewChild('snav') public  sidenavLeft   : MatSidenav;
     @ViewChild('snav2') public sidenavRight  : MatSidenav;
 
@@ -28,7 +28,7 @@ export class VersionsUpdateAdministrationComponent implements OnInit {
     versions    : any = {};
 
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private headerService: HeaderService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -40,8 +40,7 @@ export class VersionsUpdateAdministrationComponent implements OnInit {
     }
 
     ngOnInit(): void {
-
-        window['MainHeaderComponent'].refreshTitle(this.lang.updateVersionControl);
+        this.headerService.headerMessage = this.lang.updateVersionControl;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(null);
 
diff --git a/src/frontend/app/password-modification.component.ts b/src/frontend/app/password-modification.component.ts
index 267dafa9d5e..e51cb1dc811 100644
--- a/src/frontend/app/password-modification.component.ts
+++ b/src/frontend/app/password-modification.component.ts
@@ -140,7 +140,7 @@ export class PasswordModificationComponent implements OnInit {
                 this.ruleText = ruleTextArr.join(', ');
                 this.otherRuleText = otherRuleTextArr.join('<br/>');
                 this.firstFormGroup.controls["newPasswordCtrl"].setValidators(valArr);
-            }, (err) => {
+            }, (err: any) => {
                 this.notify.error(err.error.errors);
             });
 
diff --git a/src/frontend/app/profile.component.ts b/src/frontend/app/profile.component.ts
index a20c786335b..4adbf83e8b4 100755
--- a/src/frontend/app/profile.component.ts
+++ b/src/frontend/app/profile.component.ts
@@ -3,6 +3,7 @@ import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from './translate.component';
 import { NotificationService } from './notification.service';
+import { HeaderService }        from '../service/header.service';
 import { debounceTime, switchMap, distinctUntilChanged, filter } from 'rxjs/operators';
 import { MatPaginator, MatTableDataSource, MatSort, MatDialog, MatDialogRef, MatSidenav, MatExpansionPanel } from '@angular/material';
 
@@ -160,7 +161,7 @@ export class ProfileComponent extends AutoCompletePlugin implements OnInit {
     }
 
 
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private zone: NgZone, private notify: NotificationService, public dialog: MatDialog, private _formBuilder: FormBuilder) {
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private zone: NgZone, private notify: NotificationService, public dialog: MatDialog, private _formBuilder: FormBuilder, private headerService: HeaderService) {
         super(http, ['users']);
         this.mobileMode = angularGlobals.mobileMode;
         $j("link[href='merged_css.php']").remove();
@@ -396,7 +397,7 @@ export class ProfileComponent extends AutoCompletePlugin implements OnInit {
     }
 
     ngOnInit(): void {
-        window['MainHeaderComponent'].refreshTitle(this.lang.myProfile);
+        this.headerService.headerMessage = this.lang.myProfile;
         window['MainHeaderComponent'].setSnav(this.sidenavLeft);
         window['MainHeaderComponent'].setSnavRight(this.sidenavRight);
         this.coreUrl = angularGlobals.coreUrl;
-- 
GitLab