From c3f5193b1da3b76116426cce7f8da3ccae3faf36 Mon Sep 17 00:00:00 2001
From: mechtelm <mechtel@iqb.hu-berlin.de>
Date: Fri, 11 Sep 2020 13:16:51 +0200
Subject: [PATCH] added some custom texts and removed unused

---
 docs/custom-texts.md                          | 47 +++++++++----------
 src/app/config/custom-texts.json              | 36 +++++---------
 .../sys-check/report/report.component.html    |  9 +---
 src/app/sys-check/report/report.component.ts  |  2 +
 .../unit-check/unit-check.component.html      |  2 +-
 .../unit-check/unit-check.component.ts        |  2 +
 .../sys-check/welcome/welcome.component.html  |  4 +-
 .../sys-check/welcome/welcome.component.ts    |  2 +
 src/scripts/findCustomTexts.js                |  4 +-
 9 files changed, 47 insertions(+), 61 deletions(-)

diff --git a/docs/custom-texts.md b/docs/custom-texts.md
index 2d289d1b..6b0b0af7 100644
--- a/docs/custom-texts.md
+++ b/docs/custom-texts.md
@@ -58,37 +58,36 @@ replacements:
 </Config>
 ```
 
+
+
 ### List of possible replacements
 | Key       | Used for     | Default     |
 | :------------- | :---------- | :----------- |
-|`app_title`|Titel der Hauptanwendung|IQB-Testcenter|
 |`app_intro1`|Begrüßungstext auf der Startseite (Text nach IQB-Link)|betreibt auf diesen Seiten eine Anwendung für das computerbasierte Leistungstesten von Schülerinnen und Schülern. Der Zugang zu einem Test ist nur möglich, wenn Sie von Testverantwortlichen Zugangsdaten erhalten haben. Es sind keine weiteren Seiten öffentlich verfügbar.|
-|`login_testRunningText`|Kurznachricht, dass ein Test (Booklet) gestartet ist|Ein Testheft ist gestartet|
-|`login_testRunningTextAndClick`|Nachricht, dass ein Test (Booklet) gestartet ist, mit Aufforderung zum Klicken|Es wird gerade ein Test ausgeführt. Bitte durch Klicken auf eine der beiden Schaltflächen links wählen, ob der Test fortgesetzt oder beendet werden soll!|
-|`login_testEndButtonLabel`|Schalterbeschriftung für 'Test beenden'|Test beenden|
-|`booklet_warningLeaveTimerBlockTextPrompt`|Schalterbeschriftung für 'Zurück zum Test'|Du verlässt einen zeitbeschränkten Bereich und kannst nicht zurückkehren. Trotzdem weiterblättern?|
-|`login_testReturnButtonLabel`|Schalterbeschriftung für 'Zurück zum Test'|Zum Test zurückkehren|
-|`login_bookletSelectPromptNull`|Nachricht für den Fall, dass Booklet(s) beendet wurden und keine weiteren zur Verfügung stehen|Beendet. Es können keine weiteren Testhefte gestartet werden.|
-|`login_bookletSelectPromptOne`|Aufforderung, den einen gefundenen Test anzuklicken (auf Schalter klicken)|Bitte klicke auf die Schaltfläche auf der linken Seite, um den Test zu starten!|
-|`login_bookletSelectPromptMany`|Aufforderung, aus der Liste der gefundenen Tests einen auszusuchen (auf Schalter klicken)|Bitte klicke auf eine der Schaltflächen auf der linken Seite, um einen Test zu starten!|
-|`login_codeInputPrompt`|Aufforderung, Code einzugeben (bei einem zweistufigen Login-Prozess)|Bitte Log-in eingeben, der auf dem Zettel steht!|
-|`login_codeInputTitle`|Titel des Eingabeformulares für den Code|Log-in eingeben|
-|`booklet_msgPresentationNotCompleteTitleNext`|Titel der Nachricht (Dialogbox), dass nicht weitergeblättert werden kann, solange die Präsentation des Aufgabeninhaltes nicht abgeschlossen ist|Weiterblättern nicht möglich!|
+|`app_title`|Titel der Hauptanwendung|IQB-Testcenter|
+|`booklet_codeToEnterPrompt`|Aufforderung für die Eingabe eines Freigabewortes (Dialog-Box)|Bitte gib das Freigabewort ein, das angesagt wurde!|
+|`booklet_codeToEnterTitle`|Titel der Dialogbox für die Eingabe eines Freigabewortes|Freigabewort|
+|`booklet_errormessage`|Nachricht an die Testperson, wenn ein schwerer Fehler aufgetreten ist|Es ist ein schwerer Fehler aufgetreten. Bitte rufe die Aufsichtsperson und beschreibe das Problem!|
 |`booklet_msgPresentationNotCompleteTextNext`|Nachrichttext, dass nicht weitergeblättert werden kann, solange die Präsentation des Aufgabeninhaltes nicht abgeschlossen ist|Du kannst erst weiterblättern, wenn Audio-Dateien vollständig abgespielt wurden und wenn du in allen Fenstern bis ganz nach unten gescrollt hast.|
-|`booklet_msgPresentationNotCompleteTitlePrev`|Titel der Nachricht (Dialogbox), dass nicht zurückgeblättert werden kann, solange die Präsentation des Aufgabeninhaltes nicht abgeschlossen ist|Zurückblättern - Warnung|
 |`booklet_msgPresentationNotCompleteTextPrev`|Nachrichttext, dass nicht zurückgeblättert werden kann, solange die Präsentation des Aufgabeninhaltes nicht abgeschlossen ist|Eine Audio-Datei ist noch nicht bis zu Ende abgespielt oder Seiten wurden noch nicht vollständig gezeigt. Wenn du jetzt zurückblätterst, kannst Du später Audio-Dateien nicht nocheinmal starten.|
-|`booklet_codeToEnterTitle`|Titel der Dialogbox für die Eingabe eines Freigabewortes|Freigabewort|
-|`booklet_codeToEnterPrompt`|Aufforderung für die Eingabe eines Freigabewortes (Dialog-Box)|Bitte gib das Freigabewort ein, das angesagt wurde!|
-|`booklet_msgSoonTimeOver5Minutes`|Nachricht, dass für die Bearbeitung eines Abschnittes noch 5 min Zeit sind|Du hast noch 5 Minuten Zeit für die Bearbeitung der Aufgaben in diesem Abschnitt.|
+|`booklet_msgPresentationNotCompleteTitleNext`|Titel der Nachricht (Dialogbox), dass nicht weitergeblättert werden kann, solange die Präsentation des Aufgabeninhaltes nicht abgeschlossen ist|Weiterblättern nicht möglich!|
+|`booklet_msgPresentationNotCompleteTitlePrev`|Titel der Nachricht (Dialogbox), dass nicht zurückgeblättert werden kann, solange die Präsentation des Aufgabeninhaltes nicht abgeschlossen ist|Zurückblättern - Warnung|
 |`booklet_msgSoonTimeOver1Minute`|Nachricht, dass für die Bearbeitung eines Abschnittes noch 1 min Zeit ist|Du hast noch 1 Minute Zeit für die Bearbeitung der Aufgaben in diesem Abschnitt.|
-|`booklet_msgTimerStarted`|Nachricht, dass der Timer für die Bearbeitung eines Abschnittes gestartet wurde|Die Bearbeitungszeit für diesen Abschnitt hat begonnen: |
-|`booklet_msgTimerCancelled`|Nachricht, dass die Bearbeitung eines Abschnittes mit Timer abgebrochen wurde|Die Bearbeitung des Abschnittes wurde abgebrochen.|
+|`booklet_msgSoonTimeOver5Minutes`|Nachricht, dass für die Bearbeitung eines Abschnittes noch 5 min Zeit sind|Du hast noch 5 Minuten Zeit für die Bearbeitung der Aufgaben in diesem Abschnitt.|
 |`booklet_msgTimeOver`|Nachricht, dass die Bearbeitungszeit für einen Abschnitt abgelaufen ist.|Die Bearbeitung des Abschnittes ist beendet.|
-|`booklet_warningLeaveTimerBlockTitle`|Titel für Warnung (Dialogbox) vor dem vorzeitigen Verlassen eines Abschnittes mit Timer|Aufgabenabschnitt verlassen?|
-|`booklet_warningLeaveTimerBlockPrompt`|Warnung vor dem vorzeitigen Verlassen eines Abschnittes mit Timer|Wenn du jetzt weiterblätterst, beendest du vorzeitig die Bearbeitung dieses Aufgabenabschnitts und du kannst nicht mehr zurück.|
+|`booklet_msgTimerCancelled`|Nachricht, dass die Bearbeitung eines Abschnittes mit Timer abgebrochen wurde|Die Bearbeitung des Abschnittes wurde abgebrochen.|
+|`booklet_msgTimerStarted`|Nachricht, dass der Timer für die Bearbeitung eines Abschnittes gestartet wurde|Die Bearbeitungszeit für diesen Abschnitt hat begonnen: |
+|`booklet_pausedmessage`|Nachricht an die Testperson, wenn der Test vom System unterbrochen wurde|Der Test wurde kurz angehalten.|
 |`booklet_tasklisttitle`|Titel für die Auflistung der Aufgaben (Schalter)|Aufgaben|
-|`booklet_warningLeaveTestTitle`|Titel für Warnung (Dialogbox) vor dem vorzeitigen Verlassen des Tests|Test verlassen?|
-|`booklet_warningLeaveTestPrompt`|Warnung vor dem vorzeitigen Verlassen des Tests|Der Test ist noch nicht beendet. Möchtest Du den Test trotzdem verlassen?|
+|`booklet_warningLeaveTimerBlockTextPrompt`|Schalterbeschriftung für 'Zurück zum Test'|Du verlässt einen zeitbeschränkten Bereich und kannst nicht zurückkehren. Trotzdem weiterblättern?|
+|`booklet_warningLeaveTimerBlockTitle`|Titel für Warnung (Dialogbox) vor dem vorzeitigen Verlassen eines Abschnittes mit Timer|Aufgabenabschnitt verlassen?|
+|`login_bookletSelectPromptMany`|Aufforderung, aus der Liste der gefundenen Tests einen auszusuchen (auf Schalter klicken)|Bitte klicke auf eine der Schaltflächen auf der linken Seite, um einen Test zu starten!|
+|`login_bookletSelectPromptNull`|Nachricht für den Fall, dass Booklet(s) beendet wurden und keine weiteren zur Verfügung stehen|Beendet. Es können keine weiteren Testhefte gestartet werden.|
+|`login_bookletSelectPromptOne`|Aufforderung, den einen gefundenen Test anzuklicken (auf Schalter klicken)|Bitte klicke auf die Schaltfläche auf der linken Seite, um den Test zu starten!|
+|`login_codeInputPrompt`|Aufforderung, Code einzugeben (bei einem zweistufigen Login-Prozess)|Bitte Log-in eingeben, der auf dem Zettel steht!|
+|`login_codeInputTitle`|Titel des Eingabeformulares für den Code|Log-in eingeben|
+|`login_testEndButtonLabel`|Schalterbeschriftung für 'Test beenden'|Test beenden|
+|`syscheck_intro`|Text auf der ersten Seite des System-Checks|Dieser Systemcheck soll gewährleisten, dass der von Ihnen verwendete Computer für eine bestimmte Befragung oder Testung geeignet ist.|
+|`syscheck_questionsRequiredMessage`|Nachricht an die Testperson, wenn einige Fragen, die als 'required' markiert sind, nicht beantwortet wurden|Bitte prüfen Sie die Eingaben (unvollständig):|
 |`syscheck_questionsintro`|Aufforderung, die Fragen (Questionnaire) zu beantworten|Bitte bearbeiten Sie die nachfolgenden Fragen.|
-|`booklet_errormessage`|Nachricht an die Testperson, wenn ein schwerer Fehler aufgetreten ist|Es ist ein schwerer Fehler aufgetreten. Bitte rufe die Aufsichtsperson und beschreibe das Problem!|
-|`booklet_pausedmessage`|Nachricht an die Testperson, wenn der Test vom System unterbrochen wurde|Der Test wurde kurz angehalten.|
+|`syscheck_unitPrompt`|Titelzeile über der Aufgabe|Bitte prüfen Sie die folgenden Aufgaben-Elemente|
diff --git a/src/app/config/custom-texts.json b/src/app/config/custom-texts.json
index bb523bab..430e7823 100644
--- a/src/app/config/custom-texts.json
+++ b/src/app/config/custom-texts.json
@@ -7,14 +7,6 @@
     "label": "Begrüßungstext auf der Startseite (Text nach IQB-Link)",
     "defaultvalue": "betreibt auf diesen Seiten eine Anwendung für das computerbasierte Leistungstesten von Schülerinnen und Schülern. Der Zugang zu einem Test ist nur möglich, wenn Sie von Testverantwortlichen Zugangsdaten erhalten haben. Es sind keine weiteren Seiten öffentlich verfügbar."
   },
-  "login_testRunningText": {
-    "label": "Kurznachricht, dass ein Test (Booklet) gestartet ist",
-    "defaultvalue": "Ein Testheft ist gestartet"
-  },
-  "login_testRunningTextAndClick": {
-    "label": "Nachricht, dass ein Test (Booklet) gestartet ist, mit Aufforderung zum Klicken",
-    "defaultvalue": "Es wird gerade ein Test ausgeführt. Bitte durch Klicken auf eine der beiden Schaltflächen links wählen, ob der Test fortgesetzt oder beendet werden soll!"
-  },
   "login_testEndButtonLabel": {
     "label": "Schalterbeschriftung für 'Test beenden'",
     "defaultvalue": "Test beenden"
@@ -23,10 +15,6 @@
     "label": "Schalterbeschriftung für 'Zurück zum Test'",
     "defaultvalue": "Du verlässt einen zeitbeschränkten Bereich und kannst nicht zurückkehren. Trotzdem weiterblättern?"
   },
-  "login_testReturnButtonLabel": {
-    "label": "Schalterbeschriftung für 'Zurück zum Test'",
-    "defaultvalue": "Zum Test zurückkehren"
-  },
   "login_bookletSelectPromptNull": {
     "label": "Nachricht für den Fall, dass Booklet(s) beendet wurden und keine weiteren zur Verfügung stehen",
     "defaultvalue": "Beendet. Es können keine weiteren Testhefte gestartet werden."
@@ -95,22 +83,10 @@
     "label": "Titel für Warnung (Dialogbox) vor dem vorzeitigen Verlassen eines Abschnittes mit Timer",
     "defaultvalue": "Aufgabenabschnitt verlassen?"
   },
-  "booklet_warningLeaveTimerBlockPrompt": {
-    "label": "Warnung vor dem vorzeitigen Verlassen eines Abschnittes mit Timer",
-    "defaultvalue": "Wenn du jetzt weiterblätterst, beendest du vorzeitig die Bearbeitung dieses Aufgabenabschnitts und du kannst nicht mehr zurück."
-  },
   "booklet_tasklisttitle": {
     "label": "Titel für die Auflistung der Aufgaben (Schalter)",
     "defaultvalue": "Aufgaben"
   },
-  "booklet_warningLeaveTestTitle": {
-    "label": "Titel für Warnung (Dialogbox) vor dem vorzeitigen Verlassen des Tests",
-    "defaultvalue": "Test verlassen?"
-  },
-  "booklet_warningLeaveTestPrompt": {
-    "label": "Warnung vor dem vorzeitigen Verlassen des Tests",
-    "defaultvalue": "Der Test ist noch nicht beendet. Möchtest Du den Test trotzdem verlassen?"
-  },
   "syscheck_questionsintro": {
     "label": "Aufforderung, die Fragen (Questionnaire) zu beantworten",
     "defaultvalue": "Bitte bearbeiten Sie die nachfolgenden Fragen."
@@ -122,5 +98,17 @@
   "booklet_pausedmessage": {
     "label": "Nachricht an die Testperson, wenn der Test vom System unterbrochen wurde",
     "defaultvalue": "Der Test wurde kurz angehalten."
+  },
+  "syscheck_questionsRequiredMessage": {
+    "label": "Nachricht an die Testperson, wenn einige Fragen, die als 'required' markiert sind, nicht beantwortet wurden",
+    "defaultvalue": "Bitte prüfen Sie die Eingaben (unvollständig):"
+  },
+  "syscheck_unitPrompt": {
+    "label": "Titelzeile über der Aufgabe",
+    "defaultvalue": "Bitte prüfen Sie die folgenden Aufgaben-Elemente"
+  },
+  "syscheck_intro": {
+    "label": "Text auf der ersten Seite des System-Checks",
+    "defaultvalue": "Dieser Systemcheck soll gewährleisten, dass der von Ihnen verwendete Computer für eine bestimmte Befragung oder Testung geeignet ist."
   }
 }
diff --git a/src/app/sys-check/report/report.component.html b/src/app/sys-check/report/report.component.html
index b08a3817..33dd2892 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):</p>
+        <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>
         <ul>
             <li *ngFor="let qd of questionnaireDataWarnings">
               {{qd.label}}
@@ -32,14 +32,9 @@
         </ul>
       </mat-card-content>
 
-      <label *ngIf="csvReport">Export als CSV für Copy&Paste
-        <textarea style="width:100%; height: 8em">{{csvReport}}</textarea>
-      </label>
-
       <mat-card-actions>
         <button mat-raised-button color="primary" [disabled]="saved" (click)="saveReport()" class="save_button">Bericht senden</button>
-        <button mat-raised-button [routerLink]="['/r/check-starter']" class="save_button">{{saved ? 'Zurück' : 'Abbrechen'}}</button>
-      <!--    <button *ngIf="isReady()" mat-raised-button (click)="exportReport()" class="save_button">Als CSV zum kopieren</button>-->
+        <button mat-raised-button [routerLink]="['/r/check-starter']" class="save_button">{{saved ? 'Zurück' : 'System-Check Abbrechen'}}</button>
       </mat-card-actions>
     </mat-card>
   </div>
diff --git a/src/app/sys-check/report/report.component.ts b/src/app/sys-check/report/report.component.ts
index 946d2774..259d73da 100644
--- a/src/app/sys-check/report/report.component.ts
+++ b/src/app/sys-check/report/report.component.ts
@@ -5,6 +5,7 @@ import { SaveReportComponent } from './save-report/save-report.component';
 import { ReportEntry } from '../sys-check.interfaces';
 import {MatDialog} from '@angular/material/dialog';
 import {MatSnackBar} from '@angular/material/snack-bar';
+import {CustomtextService} from "iqb-components";
 
 @Component({
   templateUrl: './report.component.html',
@@ -18,6 +19,7 @@ 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 a80b903e..d8e987f6 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</p>
+    <p>{{'Bitte prüfen Sie die folgenden Aufgaben-Elemente'| customtext:'syscheck_unitPrompt':cts.updateCount}}</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 2775e2ba..9a6c6d69 100644
--- a/src/app/sys-check/unit-check/unit-check.component.ts
+++ b/src/app/sys-check/unit-check/unit-check.component.ts
@@ -4,6 +4,7 @@ import { SysCheckDataService } from '../sys-check-data.service';
 import {Component, OnInit, HostListener} from '@angular/core';
 import { OnDestroy } from '@angular/core';
 import { Subscription} from 'rxjs';
+import {CustomtextService} from "iqb-components";
 
 declare var srcDoc: any;
 
@@ -25,6 +26,7 @@ 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 12883878..754b2f5d 100644
--- a/src/app/sys-check/welcome/welcome.component.html
+++ b/src/app/sys-check/welcome/welcome.component.html
@@ -4,9 +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.
+        <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>
         <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 2bbb6b53..d5fa8160 100644
--- a/src/app/sys-check/welcome/welcome.component.ts
+++ b/src/app/sys-check/welcome/welcome.component.ts
@@ -1,6 +1,7 @@
 import { Component, OnInit } from '@angular/core';
 import { SysCheckDataService } from '../sys-check-data.service';
 import { ReportEntry } from '../sys-check.interfaces';
+import {CustomtextService} from "iqb-components";
 
 @Component({
   styleUrls: ['../sys-check.component.css'],
@@ -26,6 +27,7 @@ export class WelcomeComponent implements OnInit {
   };
 
   constructor(
+    public cts: CustomtextService,
     public ds: SysCheckDataService
   ) { }
 
diff --git a/src/scripts/findCustomTexts.js b/src/scripts/findCustomTexts.js
index b6010f86..81814974 100644
--- a/src/scripts/findCustomTexts.js
+++ b/src/scripts/findCustomTexts.js
@@ -75,7 +75,7 @@ for (const f of foundSourceFiles) {
 
 console.log();
 console.log('\x1b[33m%s\x1b[0m', 'not used:');
-for (const k of Object.keys(defaults)) {
+for (const k of Object.keys(defaults).sort()) {
   if (!foundKeys[k]) {
     console.log(`  ${k}`);
   }
@@ -85,7 +85,7 @@ if (!foundError) {
   console.log('');
   console.log('writing markdown');
   let mdContent = fs.readFileSync(mdSourceFilename, 'utf8').toString();
-  for (const k of Object.keys(defaults)) {
+  for (const k of Object.keys(defaults).sort()) {
     mdContent += '|`' + k + '`|' + defaults[k].label + '|' + defaults[k].defaultvalue + '|' + '\n';
   }
   fs.writeFileSync(mdTargetFilename, mdContent, "utf8");
-- 
GitLab