From 2f6c67d9485245d286feecacf75fdf28d3d7491a Mon Sep 17 00:00:00 2001
From: paf <paf@titelfrei.de>
Date: Mon, 15 Mar 2021 09:45:14 +0100
Subject: [PATCH] includes new version of iqb-components and implements new
 version of customtexts-pipe

---
 package-lock.json                                     |  8 ++++----
 package.json                                          |  2 +-
 .../admin-starter/admin-starter.component.html        |  2 +-
 .../app-root/admin-starter/admin-starter.component.ts |  1 -
 src/app/app-root/code-input/code-input.component.html |  6 +++---
 src/app/app-root/code-input/code-input.component.ts   |  2 --
 src/app/app-root/login/login.component.html           |  4 ++--
 src/app/app-root/login/login.component.ts             |  1 -
 .../monitor-starter/monitor-starter.component.html    |  2 +-
 .../monitor-starter/monitor-starter.component.ts      |  1 -
 src/app/app-root/privacy/privacy.component.html       |  4 ++--
 src/app/app-root/privacy/privacy.component.ts         |  3 ---
 .../route-dispatcher/route-dispatcher.component.ts    |  1 -
 .../sys-check-starter.component.html                  |  2 +-
 .../sys-check-starter/sys-check-starter.component.ts  |  1 -
 .../app-root/test-starter/test-starter.component.html |  8 ++++----
 .../app-root/test-starter/test-starter.component.ts   |  1 -
 src/app/group-monitor/group-monitor.component.html    | 11 +++++++----
 src/app/group-monitor/group-monitor.component.ts      |  3 +--
 .../questionnaire/questionnaire.component.html        |  2 +-
 .../questionnaire/questionnaire.component.ts          |  3 +--
 src/app/sys-check/report/report.component.html        |  2 +-
 src/app/sys-check/report/report.component.ts          |  1 -
 .../sys-check/unit-check/unit-check.component.html    |  2 +-
 src/app/sys-check/unit-check/unit-check.component.ts  |  1 -
 src/app/sys-check/welcome/welcome.component.html      |  2 +-
 src/app/sys-check/welcome/welcome.component.ts        |  1 -
 src/app/test-controller/test-controller.interfaces.ts |  3 ++-
 .../test-status/test-status.component.html            |  6 +++---
 .../test-status/test-status.component.ts              |  3 +--
 .../unit-menu/unit-menu.component.html                | 10 +++++-----
 .../test-controller/unit-menu/unit-menu.component.ts  |  1 -
 .../test-controller/unithost/unithost.component.html  |  2 +-
 .../test-controller/unithost/unithost.component.ts    |  1 -
 .../unlock-input/unlock-input.component.html          |  4 ++--
 35 files changed, 46 insertions(+), 61 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 5d903b0b..c1088b57 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "itc-ng",
-  "version": "6.4.0",
+  "version": "6.5.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -7684,9 +7684,9 @@
       "dev": true
     },
     "iqb-components": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/iqb-components/-/iqb-components-1.8.0.tgz",
-      "integrity": "sha512-XwSWHVVg1tOSUci0lbCxVh0uknXMom5vVqaV8ndMqcc/vucuHbLLtzRCXzpz5GNmJ5Fx7BJR024h+g47bOLciA=="
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/iqb-components/-/iqb-components-3.1.0.tgz",
+      "integrity": "sha512-PgjvEpDx43mLo3oTnRSBNe9cbZpzhfvNFyw2zjze8XHThX0jcxdVrL8/uf/COlsS8dxKB2EBqlgQfSwFLlIsrQ=="
     },
     "is-absolute-url": {
       "version": "2.1.0",
diff --git a/package.json b/package.json
index 1e7be35b..44bd9bd0 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
     "fibers": "^4.0.3",
     "file-saver": "^2.0.5",
     "html-webpack-plugin": "^3.2.0",
-    "iqb-components": "^1.8.0",
+    "iqb-components": "^3.1.0",
     "material-design-icons": "~3.0.1",
     "node-sass": "^4.14.1",
     "rxjs": "^6.5.5",
diff --git a/src/app/app-root/admin-starter/admin-starter.component.html b/src/app/app-root/admin-starter/admin-starter.component.html
index cfc808f8..f7a4e9bf 100644
--- a/src/app/app-root/admin-starter/admin-starter.component.html
+++ b/src/app/app-root/admin-starter/admin-starter.component.html
@@ -19,7 +19,7 @@
   </mat-card>
 
   <mat-card fxFlex="0 0 400px" class="mat-card-gray">
-    <mat-card-title>{{ 'app_title' | customtext:'app_title':cts.updateCount }}</mat-card-title>
+    <mat-card-title>{{ 'app_title' | customtext:'app_title' | async }}</mat-card-title>
 
     <mat-card-content>
 
diff --git a/src/app/app-root/admin-starter/admin-starter.component.ts b/src/app/app-root/admin-starter/admin-starter.component.ts
index 61707d00..f5163d1c 100644
--- a/src/app/app-root/admin-starter/admin-starter.component.ts
+++ b/src/app/app-root/admin-starter/admin-starter.component.ts
@@ -24,7 +24,6 @@ export class AdminStarterComponent implements OnInit, OnDestroy {
   constructor(
     private router: Router,
     private bs: BackendService,
-    public cts: CustomtextService,
     private mds: MainDataService
   ) { }
 
diff --git a/src/app/app-root/code-input/code-input.component.html b/src/app/app-root/code-input/code-input.component.html
index b0a54d8f..d1f68c75 100644
--- a/src/app/app-root/code-input/code-input.component.html
+++ b/src/app/app-root/code-input/code-input.component.html
@@ -1,8 +1,8 @@
 <div fxLayout="row wrap" fxLayoutAlign="center stretch">
   <mat-card fxFlex="0 0 400px">
     <form [formGroup]="codeinputform" (ngSubmit)="codeinput()">
-      <mat-card-title>{{ 'login_codeInputTitle' | customtext:'login_codeInputTitle':cts.updateCount }}</mat-card-title>
-      <mat-card-subtitle>{{ 'login_codeInputPrompt' | customtext:'login_codeInputPrompt':cts.updateCount }}</mat-card-subtitle>
+      <mat-card-title>{{ 'login_codeInputTitle' | customtext:'login_codeInputTitle' | async }}</mat-card-title>
+      <mat-card-subtitle>{{ 'login_codeInputPrompt' | customtext:'login_codeInputPrompt' | async }}</mat-card-subtitle>
       <mat-card-content>
         <mat-form-field>
           <input matInput formControlName="code"> <!-- no placeholder! -->
@@ -17,7 +17,7 @@
   </mat-card>
 
   <mat-card fxFlex="0 0 400px" class="mat-card-gray">
-    <mat-card-title>{{ 'app_title' | customtext:'app_title':cts.updateCount }}</mat-card-title>
+    <mat-card-title>{{ 'app_title' | customtext:'app_title' | async }}</mat-card-title>
 
     <mat-card-content>
 
diff --git a/src/app/app-root/code-input/code-input.component.ts b/src/app/app-root/code-input/code-input.component.ts
index aa377989..ac2826ab 100644
--- a/src/app/app-root/code-input/code-input.component.ts
+++ b/src/app/app-root/code-input/code-input.component.ts
@@ -45,9 +45,7 @@ export class CodeInputComponent implements OnInit {
       this.messageDialog.open(MessageDialogComponent, {
         width: '400px',
         data: <MessageDialogData>{
-          // @ts-ignore
           title: this.cts.getCustomText('login_codeInputTitle') + ': Leer',
-          // @ts-ignore
           content: this.cts.getCustomText('login_codeInputPrompt'),
           type: MessageType.error
         }
diff --git a/src/app/app-root/login/login.component.html b/src/app/app-root/login/login.component.html
index 66aac64f..82b1e810 100644
--- a/src/app/app-root/login/login.component.html
+++ b/src/app/app-root/login/login.component.html
@@ -26,11 +26,11 @@
   </mat-card>
 
   <mat-card fxFlex="0 0 400px" class="mat-card-gray">
-    <mat-card-title>{{ 'IQB-Testcenter' | customtext:'app_title':cts.updateCount }}</mat-card-title>
+    <mat-card-title>{{ 'IQB-Testcenterli' | customtext:'app_title' | async }}</mat-card-title>
 
     <mat-card-content>
       <p>Das <a href="http://www.iqb.hu-berlin.de" target="_blank">Institut zur Qualitätsentwicklung im Bildungswesen</a>
-        {{ '' | customtext:'app_intro1':cts.updateCount }}</p>
+        {{ '' | customtext:'app_intro1' | async }}</p>
 
       <status-card></status-card>
     </mat-card-content>
diff --git a/src/app/app-root/login/login.component.ts b/src/app/app-root/login/login.component.ts
index de5a45c9..0e41cf16 100644
--- a/src/app/app-root/login/login.component.ts
+++ b/src/app/app-root/login/login.component.ts
@@ -30,7 +30,6 @@ export class LoginComponent implements OnInit, OnDestroy {
 
   constructor(
     public mds: MainDataService,
-    public cts: CustomtextService,
     private bs: BackendService,
     private router: Router,
     private route: ActivatedRoute
diff --git a/src/app/app-root/monitor-starter/monitor-starter.component.html b/src/app/app-root/monitor-starter/monitor-starter.component.html
index 404b3a5f..fd26c5d1 100644
--- a/src/app/app-root/monitor-starter/monitor-starter.component.html
+++ b/src/app/app-root/monitor-starter/monitor-starter.component.html
@@ -31,7 +31,7 @@
   </mat-card>
 
   <mat-card fxFlex="0 0 400px" class="mat-card-gray">
-    <mat-card-title>{{ 'app_title' | customtext:'app_title':cts.updateCount }}</mat-card-title>
+    <mat-card-title>{{ 'app_title' | customtext:'app_title' | async }}</mat-card-title>
 
     <mat-card-content>
 
diff --git a/src/app/app-root/monitor-starter/monitor-starter.component.ts b/src/app/app-root/monitor-starter/monitor-starter.component.ts
index c71844bd..db1aad64 100644
--- a/src/app/app-root/monitor-starter/monitor-starter.component.ts
+++ b/src/app/app-root/monitor-starter/monitor-starter.component.ts
@@ -22,7 +22,6 @@ export class MonitorStarterComponent implements OnInit, OnDestroy {
   constructor(
     private router: Router,
     private bs: BackendService,
-    public cts: CustomtextService,
     private mds: MainDataService
   ) { }
 
diff --git a/src/app/app-root/privacy/privacy.component.html b/src/app/app-root/privacy/privacy.component.html
index cadc4760..e884d49a 100644
--- a/src/app/app-root/privacy/privacy.component.html
+++ b/src/app/app-root/privacy/privacy.component.html
@@ -2,12 +2,12 @@
 <div class="root-body">
   <div fxLayout="row" fxLayoutAlign="center start">
     <mat-card fxFlex="0 0 500px">
-      <mat-card-title>{{ 'app_title' | customtext:'app_title':cts.updateCount }} - Impressum/Datenschutz</mat-card-title>
+      <mat-card-title>{{ 'app_title' | customtext:'app_title' | async }} - Impressum/Datenschutz</mat-card-title>
 
       <!-- - - - - - - - - - - - - - - - - -->
       <mat-card-content>
         <p>Das <a href="http://www.iqb.hu-berlin.de" target="_blank">Institut zur Qualitätsentwicklung im Bildungswesen</a>
-          {{ 'app_intro1' | customtext:'app_intro1':cts.updateCount }}</p>
+          {{ 'app_intro1' | customtext:'app_intro1' | async }}</p>
 
         <p>Die mit diesem System erhobenen Daten enthalten grundsätzlich keinen direkten
           Personenbezug. Es werden z. B. nie Namen gespeichert. Um Auskünfte zu einer bestimmten Befragung bzw. Studie
diff --git a/src/app/app-root/privacy/privacy.component.ts b/src/app/app-root/privacy/privacy.component.ts
index 509d5326..14b97c9e 100644
--- a/src/app/app-root/privacy/privacy.component.ts
+++ b/src/app/app-root/privacy/privacy.component.ts
@@ -8,7 +8,4 @@ import {CustomtextService} from 'iqb-components';
   ]
 })
 export class PrivacyComponent {
-  constructor(
-    public cts: CustomtextService
-  ) { }
 }
diff --git a/src/app/app-root/route-dispatcher/route-dispatcher.component.ts b/src/app/app-root/route-dispatcher/route-dispatcher.component.ts
index 0d5b39af..0977c474 100644
--- a/src/app/app-root/route-dispatcher/route-dispatcher.component.ts
+++ b/src/app/app-root/route-dispatcher/route-dispatcher.component.ts
@@ -14,7 +14,6 @@ export class RouteDispatcherComponent {
   url = '';
 
   constructor(
-    public cts: CustomtextService,
     private router: Router) {
 
     const state: RouterState = router.routerState;
diff --git a/src/app/app-root/sys-check-starter/sys-check-starter.component.html b/src/app/app-root/sys-check-starter/sys-check-starter.component.html
index 79b7ab27..5c3adfa3 100644
--- a/src/app/app-root/sys-check-starter/sys-check-starter.component.html
+++ b/src/app/app-root/sys-check-starter/sys-check-starter.component.html
@@ -1,6 +1,6 @@
 <div fxLayout="row wrap" fxLayoutAlign="center stretch">
   <mat-card fxFlex="0 2 500px">
-    <mat-card-title>{{ 'app_title' | customtext:'app_title':cts.updateCount }}: System-Check</mat-card-title>
+    <mat-card-title>{{ 'app_title' | customtext:'app_title' | async }}: System-Check</mat-card-title>
     <mat-card-content>
       <p>Hier können Sie ermitteln, ob das Computersystem, das Sie gerade benutzen, für
         die hier vorgesehenen Testungen geeignet ist.</p>
diff --git a/src/app/app-root/sys-check-starter/sys-check-starter.component.ts b/src/app/app-root/sys-check-starter/sys-check-starter.component.ts
index 5807a944..b96f8f11 100644
--- a/src/app/app-root/sys-check-starter/sys-check-starter.component.ts
+++ b/src/app/app-root/sys-check-starter/sys-check-starter.component.ts
@@ -16,7 +16,6 @@ export class SysCheckStarterComponent implements OnInit {
   constructor(
     public mds: MainDataService,
     private bs: BackendService,
-    public cts: CustomtextService,
     private router: Router
   ) { }
 
diff --git a/src/app/app-root/test-starter/test-starter.component.html b/src/app/app-root/test-starter/test-starter.component.html
index 1bcdf30b..6409ec52 100644
--- a/src/app/app-root/test-starter/test-starter.component.html
+++ b/src/app/app-root/test-starter/test-starter.component.html
@@ -17,12 +17,12 @@
   </mat-card>
 
   <mat-card fxFlex="0 0 400px" class="mat-card-gray">
-    <mat-card-title>{{ 'app_title' | customtext:'app_title':cts.updateCount }}</mat-card-title>
+    <mat-card-title>{{ 'app_title' | customtext:'app_title' | async }}</mat-card-title>
 
     <mat-card-content>
-      <p *ngIf="openTestletsCount === 0">{{ 'login_bookletSelectPromptNull' | customtext: 'login_bookletSelectPromptNull':cts.updateCount}}</p>
-      <p *ngIf="openTestletsCount === 1">{{ 'login_bookletSelectPromptOne' | customtext: 'login_bookletSelectPromptOne':cts.updateCount}}</p>
-      <p *ngIf="openTestletsCount > 1">{{ 'login_bookletSelectPromptMany' | customtext: 'login_bookletSelectPromptMany':cts.updateCount}}</p>
+      <p *ngIf="openTestletsCount === 0">{{ 'login_bookletSelectPromptNull' | customtext: 'login_bookletSelectPromptNull' | async}}</p>
+      <p *ngIf="openTestletsCount === 1">{{ 'login_bookletSelectPromptOne' | customtext: 'login_bookletSelectPromptOne' | async}}</p>
+      <p *ngIf="openTestletsCount > 1">{{ 'login_bookletSelectPromptMany' | customtext: 'login_bookletSelectPromptMany' | async}}</p>
 
       <status-card></status-card>
 
diff --git a/src/app/app-root/test-starter/test-starter.component.ts b/src/app/app-root/test-starter/test-starter.component.ts
index f6adf3eb..edd8b582 100644
--- a/src/app/app-root/test-starter/test-starter.component.ts
+++ b/src/app/app-root/test-starter/test-starter.component.ts
@@ -21,7 +21,6 @@ export class TestStarterComponent implements OnInit, OnDestroy {
   constructor(
     private router: Router,
     private bs: BackendService,
-    public cts: CustomtextService,
     private mds: MainDataService
   ) { }
 
diff --git a/src/app/group-monitor/group-monitor.component.html b/src/app/group-monitor/group-monitor.component.html
index 20253915..e47240fd 100644
--- a/src/app/group-monitor/group-monitor.component.html
+++ b/src/app/group-monitor/group-monitor.component.html
@@ -1,5 +1,8 @@
 <div class="page-header">
-  <p>IQB-Testcenter Gruppenüberwachung: <span *ngIf="ownGroup$ | async as ownGroup">{{ownGroup.label}}</span></p>
+  <p>
+      {{'IQB-Testcenter Gruppenüberwachung' | customtext:'gm_headline' | async}}
+      <span *ngIf="ownGroup$ | async as ownGroup">{{ownGroup.label}}</span>
+  </p>
   <span class="fill-remaining-space"></span>
   <p>
     <mat-chip-list *ngIf="connectionStatus$ | async as connectionStatus">
@@ -24,13 +27,13 @@
 
 <mat-menu #rootMenu="matMenu">
     <button mat-menu-item [matMenuTriggerFor]="filters">
-        {{'Sitzungen ausblenden' | customtext:'gm_menu_filter':cts.updateCount}}
+        {{'Sitzungen ausblenden' | customtext:'gm_menu_filter' | async}}
     </button>
     <button mat-menu-item [matMenuTriggerFor]="group">
-        {{'Spalten' | customtext:'gm_menu_cols':cts.updateCount}}
+        {{'Spalten' | customtext:'gm_menu_cols' | async}}
     </button>
     <button mat-menu-item [matMenuTriggerFor]="activity">
-        {{'Aktivität' | customtext:'gm_menu_view':cts.updateCount}}
+        {{'Aktivität' | customtext:'gm_menu_activity' | async}}
     </button>
 </mat-menu>
 
diff --git a/src/app/group-monitor/group-monitor.component.ts b/src/app/group-monitor/group-monitor.component.ts
index 18095249..9a85bb14 100644
--- a/src/app/group-monitor/group-monitor.component.ts
+++ b/src/app/group-monitor/group-monitor.component.ts
@@ -33,8 +33,7 @@ export class GroupMonitorComponent implements OnInit, OnDestroy {
     private route: ActivatedRoute,
     private bs: BackendService,
     private bookletService: BookletService,
-    private router: Router,
-    public cts: CustomtextService
+    private router: Router
   ) {}
 
   ownGroup$: Observable<GroupData>;
diff --git a/src/app/sys-check/questionnaire/questionnaire.component.html b/src/app/sys-check/questionnaire/questionnaire.component.html
index 3deae551..b94a8d2b 100644
--- a/src/app/sys-check/questionnaire/questionnaire.component.html
+++ b/src/app/sys-check/questionnaire/questionnaire.component.html
@@ -3,7 +3,7 @@
     <mat-card fxFlex="0 0 700px">
       <mat-card-header>
         <mat-card-title>Fragen</mat-card-title>
-        <mat-card-subtitle>{{'Bitte bearbeiten Sie die nachfolgenden Fragen.'| customtext:'syscheck_questionsintro':cts.updateCount}}</mat-card-subtitle>
+        <mat-card-subtitle>{{'Bitte bearbeiten Sie die nachfolgenden Fragen.'| customtext:'syscheck_questionsintro' | async}}</mat-card-subtitle>
       </mat-card-header>
 
       <mat-card-content>
diff --git a/src/app/sys-check/questionnaire/questionnaire.component.ts b/src/app/sys-check/questionnaire/questionnaire.component.ts
index 76eacc4c..9f2046b4 100644
--- a/src/app/sys-check/questionnaire/questionnaire.component.ts
+++ b/src/app/sys-check/questionnaire/questionnaire.component.ts
@@ -13,8 +13,7 @@ export class QuestionnaireComponent implements OnInit, OnDestroy {
   private valueChangesSubscription: Subscription = null;
 
   constructor(
-    public ds: SysCheckDataService,
-    public cts: CustomtextService
+    public ds: SysCheckDataService
   ) {
   }
 
diff --git a/src/app/sys-check/report/report.component.html b/src/app/sys-check/report/report.component.html
index 33dd2892..d745b479 100644
--- a/src/app/sys-check/report/report.component.html
+++ b/src/app/sys-check/report/report.component.html
@@ -6,7 +6,7 @@
       </mat-card-header>
 
       <mat-card-content>
-        <p *ngIf="questionnaireDataWarnings.length > 0" style="color: goldenrod; font-weight: bold">{{'Bitte prüfen Sie die Eingaben (unvollständig):'| customtext:'syscheck_questionsRequiredMessage':cts.updateCount}}</p>
+        <p *ngIf="questionnaireDataWarnings.length > 0" style="color: goldenrod; font-weight: bold">{{'Bitte prüfen Sie die Eingaben (unvollständig):'| customtext:'syscheck_questionsRequiredMessage' | async}}</p>
         <ul>
             <li *ngFor="let qd of questionnaireDataWarnings">
               {{qd.label}}
diff --git a/src/app/sys-check/report/report.component.ts b/src/app/sys-check/report/report.component.ts
index 259d73da..b0b6744f 100644
--- a/src/app/sys-check/report/report.component.ts
+++ b/src/app/sys-check/report/report.component.ts
@@ -19,7 +19,6 @@ export class ReportComponent implements OnInit {
   constructor(
     private bs: BackendService,
     public ds: SysCheckDataService,
-    public cts: CustomtextService,
     private saveDialog: MatDialog,
     private snackBar: MatSnackBar
   ) {
diff --git a/src/app/sys-check/unit-check/unit-check.component.html b/src/app/sys-check/unit-check/unit-check.component.html
index d8e987f6..6d058978 100644
--- a/src/app/sys-check/unit-check/unit-check.component.html
+++ b/src/app/sys-check/unit-check/unit-check.component.html
@@ -1,6 +1,6 @@
 <div class="unit-check-body" fxLayout="row" fxLayoutAlign="start stretch">
   <div id="unit-title" fxLayout="column" fxLayoutAlign="center center">
-    <p>{{'Bitte prüfen Sie die folgenden Aufgaben-Elemente'| customtext:'syscheck_unitPrompt':cts.updateCount}}</p>
+    <p>{{'Bitte prüfen Sie die folgenden Aufgaben-Elemente'| customtext:'syscheck_unitPrompt' | async}}</p>
   </div>
 
   <div id="iFrameHost">
diff --git a/src/app/sys-check/unit-check/unit-check.component.ts b/src/app/sys-check/unit-check/unit-check.component.ts
index 9a6c6d69..b2b3385f 100644
--- a/src/app/sys-check/unit-check/unit-check.component.ts
+++ b/src/app/sys-check/unit-check/unit-check.component.ts
@@ -26,7 +26,6 @@ export class UnitCheckComponent implements OnInit, OnDestroy {
   constructor(
     private ds: SysCheckDataService,
     private bs: BackendService,
-    public cts: CustomtextService,
     private mds: MainDataService
   ) {
   }
diff --git a/src/app/sys-check/welcome/welcome.component.html b/src/app/sys-check/welcome/welcome.component.html
index 754b2f5d..217d1bc3 100644
--- a/src/app/sys-check/welcome/welcome.component.html
+++ b/src/app/sys-check/welcome/welcome.component.html
@@ -4,7 +4,7 @@
     <mat-card fxFlex="0 0 400px">
       <mat-card-title>{{ ds.loadConfigComplete ? ds.checkConfig?.label : 'Bitte warten' }}</mat-card-title>
       <mat-card-content *ngIf="ds.loadConfigComplete">
-        <p>{{'Dieser Systemcheck soll gewährleisten, dass der von Ihnen verwendete Computer für eine bestimmte Befragung oder Testung geeignet ist.'| customtext:'syscheck_intro':cts.updateCount}}
+        <p>{{'Dieser Systemcheck soll gewährleisten, dass der von Ihnen verwendete Computer für eine bestimmte Befragung oder Testung geeignet ist.'| customtext:'syscheck_intro' | async}}
         </p>
         <h3>Schritte</h3>
         <ol>
diff --git a/src/app/sys-check/welcome/welcome.component.ts b/src/app/sys-check/welcome/welcome.component.ts
index d1119962..7f80909f 100644
--- a/src/app/sys-check/welcome/welcome.component.ts
+++ b/src/app/sys-check/welcome/welcome.component.ts
@@ -27,7 +27,6 @@ export class WelcomeComponent implements OnInit {
   };
 
   constructor(
-    public cts: CustomtextService,
     public ds: SysCheckDataService
   ) { }
 
diff --git a/src/app/test-controller/test-controller.interfaces.ts b/src/app/test-controller/test-controller.interfaces.ts
index 72d50bf6..574c6b89 100644
--- a/src/app/test-controller/test-controller.interfaces.ts
+++ b/src/app/test-controller/test-controller.interfaces.ts
@@ -74,7 +74,8 @@ export enum TestControllerState {
  */
 export enum AppFocusState {
   HAS = 'HAS',
-  HAS_NOT = 'HAS_NOT'
+  HAS_NOT = 'HAS_NOT',
+  DEAD = 'DEAD'
 }
 
 /**
diff --git a/src/app/test-controller/test-status/test-status.component.html b/src/app/test-controller/test-status/test-status.component.html
index 5948c9e8..9eaebd81 100644
--- a/src/app/test-controller/test-status/test-status.component.html
+++ b/src/app/test-controller/test-status/test-status.component.html
@@ -8,10 +8,10 @@
         <p><b>Angemeldet als "{{loginName}}"</b></p>
         <p><b>{{tcs.testMode.modeLabel}}</b></p>
         <p *ngIf="(tcs.testStatus$ | async) === tcs.testStatusEnum.ERROR" style="color: chocolate">
-          <b>{{ 'Es ist ein Fehler aufgetreten.' | customtext:'booklet_errormessage':cts.updateCount }} </b>
+          <b>{{ 'Es ist ein Fehler aufgetreten.' | customtext:'booklet_errormessage' | async }} </b>
         </p>
         <p *ngIf="(tcs.testStatus$ | async) === tcs.testStatusEnum.PAUSED" style="color: chocolate">
-          <b>{{ 'Testpause' | customtext:'booklet_pausedmessage':cts.updateCount }} </b>
+          <b>{{ 'Testpause' | customtext:'booklet_pausedmessage' | async }} </b>
         </p>
         <p *ngIf="(tcs.testStatus$ | async) === tcs.testStatusEnum.RUNNING" style="color: chocolate">
           <b>Der Test ist aktiv.</b>
@@ -19,7 +19,7 @@
       </mat-card-content>
       <mat-card-actions *ngIf="(tcs.testStatus$ | async) !== tcs.testStatusEnum.PAUSED">
         <button mat-raised-button color="primary" (click)="terminateTest()">
-          {{ 'Test beenden'  | customtext:'login_testEndButtonLabel':cts.updateCount}}
+          {{ 'Test beenden'  | customtext:'login_testEndButtonLabel' | async}}
         </button>
       </mat-card-actions>
     </mat-card>
diff --git a/src/app/test-controller/test-status/test-status.component.ts b/src/app/test-controller/test-status/test-status.component.ts
index 31a5d83e..dfbb18b7 100644
--- a/src/app/test-controller/test-status/test-status.component.ts
+++ b/src/app/test-controller/test-status/test-status.component.ts
@@ -12,8 +12,7 @@ export class TestStatusComponent implements OnInit {
   loginName = '??';
 
   constructor(
-    public tcs: TestControllerService,
-    public cts: CustomtextService
+    public tcs: TestControllerService
   ) { }
 
   ngOnInit(): void {
diff --git a/src/app/test-controller/unit-menu/unit-menu.component.html b/src/app/test-controller/unit-menu/unit-menu.component.html
index 2674c6d1..e551bb7b 100644
--- a/src/app/test-controller/unit-menu/unit-menu.component.html
+++ b/src/app/test-controller/unit-menu/unit-menu.component.html
@@ -1,7 +1,7 @@
 <div class="menu-body">
   <div fxLayout="row wrap" fxLayoutAlign="center stretch">
     <mat-card fxFlex="0 0 400px" fxLayout="column" *ngIf="unitMenuButtonList.length > 0">
-      <mat-card-title>{{ 'Aufgaben' | customtext:'booklet_tasklisttitle':cts.updateCount }}</mat-card-title>
+      <mat-card-title>{{ 'Aufgaben' | customtext:'booklet_tasklisttitle' | async }}</mat-card-title>
       <mat-card-content>
         <div fxLayout="column" fxLayoutAlign="center stretch">
           <div *ngFor="let u of unitMenuButtonList" fxLayout="column" fxLayoutAlign="center stretch">
@@ -18,7 +18,7 @@
       </mat-card-content>
       <mat-card-actions>
         <button mat-raised-button color="primary" (click)="terminateTest()">
-          {{ 'Test beenden'  | customtext:'login_testEndButtonLabel':cts.updateCount}}
+          {{ 'Test beenden'  | customtext:'login_testEndButtonLabel' | async}}
         </button>
       </mat-card-actions>
     </mat-card>
@@ -29,10 +29,10 @@
         <p><b>Angemeldet als "{{loginName}}"</b></p>
         <p><b>{{tcs.testMode.modeLabel}}</b></p>
         <p *ngIf="(tcs.testStatus$ | async) === tcs.testStatusEnum.ERROR" style="color: chocolate">
-          <b>{{ 'Es ist ein Fehler aufgetreten.' | customtext:'booklet_errormessage':cts.updateCount }} </b>
+          <b>{{ 'Es ist ein Fehler aufgetreten.' | customtext:'booklet_errormessage' | async }} </b>
         </p>
         <p *ngIf="(tcs.testStatus$ | async) === tcs.testStatusEnum.PAUSED" style="color: chocolate">
-          <b>{{ 'Testpause' | customtext:'booklet_pausedmessage':cts.updateCount }} </b>
+          <b>{{ 'Testpause' | customtext:'booklet_pausedmessage' | async }} </b>
         </p>
         <p *ngIf="(tcs.testStatus$ | async) === tcs.testStatusEnum.RUNNING" style="color: chocolate">
           <b>Der Test ist aktiv.</b>
@@ -40,7 +40,7 @@
       </mat-card-content>
       <mat-card-actions>
         <button mat-raised-button color="primary" (click)="terminateTest()">
-          {{ 'Test beenden'  | customtext:'login_testEndButtonLabel':cts.updateCount}}
+          {{ 'Test beenden'  | customtext:'login_testEndButtonLabel' | async}}
         </button>
       </mat-card-actions>
     </mat-card>
diff --git a/src/app/test-controller/unit-menu/unit-menu.component.ts b/src/app/test-controller/unit-menu/unit-menu.component.ts
index 42b81647..7c617e74 100644
--- a/src/app/test-controller/unit-menu/unit-menu.component.ts
+++ b/src/app/test-controller/unit-menu/unit-menu.component.ts
@@ -13,7 +13,6 @@ export class UnitMenuComponent implements OnInit {
   loginName = '??';
 
   constructor(
-    public cts: CustomtextService,
     public tcs: TestControllerService
   ) { }
 
diff --git a/src/app/test-controller/unithost/unithost.component.html b/src/app/test-controller/unithost/unithost.component.html
index 118a2c48..6443af7a 100644
--- a/src/app/test-controller/unithost/unithost.component.html
+++ b/src/app/test-controller/unithost/unithost.component.html
@@ -8,7 +8,7 @@
   <div id="pageNav" fxLayout="row" fxLayoutAlign="end center" fxLayoutGap="10px" *ngIf="tcs.bookletConfig.page_navibuttons === 'SEPARATE_BOTTOM'">
     <div fxLayout="row" fxLayoutAlign="space-between center" *ngIf="showPageNav">
         <div id="pageNavPrompt">
-          {{ ''  | customtext:'login_pagesNaviPrompt':cts.updateCount}}
+          {{ ''  | customtext:'login_pagesNaviPrompt' | async}}
         </div>
 
         <div *ngFor="let p of pageList">
diff --git a/src/app/test-controller/unithost/unithost.component.ts b/src/app/test-controller/unithost/unithost.component.ts
index 25de84b7..6d1f3668 100644
--- a/src/app/test-controller/unithost/unithost.component.ts
+++ b/src/app/test-controller/unithost/unithost.component.ts
@@ -45,7 +45,6 @@ export class UnithostComponent implements OnInit, OnDestroy {
   constructor(
     public tcs: TestControllerService,
     private mds: MainDataService,
-    public cts: CustomtextService,
     private bs: BackendService,
     private route: ActivatedRoute
   ) { }
diff --git a/src/app/test-controller/unlock-input/unlock-input.component.html b/src/app/test-controller/unlock-input/unlock-input.component.html
index a56ff525..b227c938 100644
--- a/src/app/test-controller/unlock-input/unlock-input.component.html
+++ b/src/app/test-controller/unlock-input/unlock-input.component.html
@@ -2,9 +2,9 @@
   <div fxLayout="row wrap" fxLayoutAlign="center stretch">
     <mat-card>
       <form [formGroup]="startkeyform" fxLayout="column" (ngSubmit)="continue()">
-        <mat-card-header>{{ 'Freigabewort' | customtext:'booklet_codeToEnterTitle':cts.updateCount }}</mat-card-header>
+        <mat-card-header>{{ 'Freigabewort' | customtext:'booklet_codeToEnterTitle' | async }}</mat-card-header>
         <mat-card-content>
-          <div class="prompt">{{ 'Bitte Freigabewort eingeben!' | customtext:'booklet_codeToEnterPrompt':cts.updateCount }}</div>
+          <div class="prompt">{{ 'Bitte Freigabewort eingeben!' | customtext:'booklet_codeToEnterPrompt' | async }}</div>
           <mat-form-field *ngFor="let c of codes" fxLayout="column">
             <label>{{ c.prompt }}
               <input matInput [formControlName]="c.testletId">
-- 
GitLab