From ae075c0aa56a8552c7061d3bc36defcb2a5d595f Mon Sep 17 00:00:00 2001
From: Konstantin Schulz <schulzkx@hu-berlin.de>
Date: Tue, 14 Jul 2020 17:09:40 +0200
Subject: [PATCH] simplified navigation in the helper service

---
 mc_frontend/src/app/app.component.html        | 14 ++--
 .../author-detail/author-detail.page.spec.ts  |  2 +-
 .../app/author-detail/author-detail.page.ts   |  3 +-
 .../src/app/author/author.page.spec.ts        |  4 +-
 mc_frontend/src/app/author/author.page.ts     |  5 +-
 .../app/doc-exercises/doc-exercises.page.html |  8 +--
 .../app/doc-exercises/doc-exercises.page.ts   |  2 +
 .../app/doc-software/doc-software.page.html   |  8 +--
 .../app/doc-voc-unit/doc-voc-unit.page.html   |  8 +--
 .../src/app/doc-voc-unit/doc-voc-unit.page.ts |  2 +
 .../exercise-list/exercise-list.page.spec.ts  |  2 +-
 .../app/exercise-list/exercise-list.page.ts   |  2 +-
 .../exercise-parameters.page.spec.ts          | 13 ++--
 .../exercise-parameters.page.ts               | 41 +++++++-----
 mc_frontend/src/app/helper.service.spec.ts    | 22 +++----
 mc_frontend/src/app/helper.service.ts         | 66 ++-----------------
 mc_frontend/src/app/home/home.page.html       |  8 ++-
 mc_frontend/src/app/home/home.page.ts         |  2 +
 mc_frontend/src/app/imprint/imprint.page.html |  8 +--
 mc_frontend/src/app/imprint/imprint.page.ts   |  2 +
 mc_frontend/src/app/info/info.page.html       |  8 +--
 mc_frontend/src/app/info/info.page.ts         |  2 +
 mc_frontend/src/app/preview/preview.page.html |  2 +-
 .../src/app/show-text/show-text.page.html     |  4 +-
 .../src/app/show-text/show-text.page.ts       |  1 +
 .../app/text-range/text-range.page.spec.ts    |  8 +--
 .../src/app/text-range/text-range.page.ts     |  5 +-
 .../vocabulary-check.page.spec.ts             |  2 +-
 .../vocabulary-check/vocabulary-check.page.ts |  3 +-
 29 files changed, 110 insertions(+), 147 deletions(-)

diff --git a/mc_frontend/src/app/app.component.html b/mc_frontend/src/app/app.component.html
index 006ac6e..ebd47e8 100644
--- a/mc_frontend/src/app/app.component.html
+++ b/mc_frontend/src/app/app.component.html
@@ -28,7 +28,7 @@
                 </ion-row>
                 <ion-row>
                     <ion-col>
-                        <a (click)="helperService.goToExerciseListPage(navCtrl).then(closeMenu.bind(this))">
+                        <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlExerciseList).then(closeMenu.bind(this))">
                             {{ 'EXERCISE_LIST' | translate }}
                         </a>
                     </ion-col>
@@ -42,7 +42,7 @@
                 </ion-row>
                 <ion-row>
                     <ion-col>
-                        <a (click)="helperService.goToSemanticsPage(navCtrl).then(closeMenu.bind(this))">
+                        <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlSemantics).then(closeMenu.bind(this))">
                             {{ 'SEMANTICS' | translate }}
                         </a>
                     </ion-col>
@@ -54,35 +54,35 @@
                         </ion-title>
                         <ion-row>
                             <ion-col>
-                                <a (click)="helperService.goToInfoPage(navCtrl).then(closeMenu.bind(this))">
+                                <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlInfo).then(closeMenu.bind(this))">
                                     {{ 'ABOUT' | translate }}
                                 </a>
                             </ion-col>
                         </ion-row>
                         <ion-row>
                             <ion-col>
-                                <a (click)="helperService.goToDocSoftwarePage(navCtrl).then(closeMenu.bind(this))">
+                                <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocSoftware).then(closeMenu.bind(this))">
                                     {{ 'DOC_SOFTWARE' | translate }}
                                 </a>
                             </ion-col>
                         </ion-row>
                         <ion-row>
                             <ion-col>
-                                <a (click)="helperService.goToDocExercisesPage(navCtrl).then(closeMenu.bind(this))">
+                                <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocExercises).then(closeMenu.bind(this))">
                                     {{ 'DOC_EXERCISES' | translate }}
                                 </a>
                             </ion-col>
                         </ion-row>
                         <ion-row>
                             <ion-col>
-                                <a (click)="helperService.goToDocVocUnitPage(navCtrl).then(closeMenu.bind(this))">
+                                <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocVocUnit).then(closeMenu.bind(this))">
                                     {{ 'DOC_VOC_UNIT' | translate }}
                                 </a>
                             </ion-col>
                         </ion-row>
                         <ion-row>
                             <ion-col>
-                                <a (click)="helperService.goToSourcesPage(navCtrl).then(closeMenu.bind(this))">
+                                <a (click)="helperService.goToPage(navCtrl, configMC.pageUrlSources).then(closeMenu.bind(this))">
                                     {{ 'SOURCES' | translate }}
                                 </a>
                             </ion-col>
diff --git a/mc_frontend/src/app/author-detail/author-detail.page.spec.ts b/mc_frontend/src/app/author-detail/author-detail.page.spec.ts
index 0f0762e..b4962e7 100644
--- a/mc_frontend/src/app/author-detail/author-detail.page.spec.ts
+++ b/mc_frontend/src/app/author-detail/author-detail.page.spec.ts
@@ -41,7 +41,7 @@ describe('AuthorDetailPage', () => {
 
     it('should show possible references', () => {
         const currentCorpusSpy: Spy = spyOn(authorDetailPage.corpusService, 'setCurrentCorpus');
-        const textRangeSpy: Spy = spyOn(authorDetailPage.helperService, 'goToTextRangePage').and.returnValue(Promise.resolve(true));
+        const textRangeSpy: Spy = spyOn(authorDetailPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         authorDetailPage.showPossibleReferences({source_urn: ''});
         expect(currentCorpusSpy).toHaveBeenCalledTimes(1);
         expect(textRangeSpy).toHaveBeenCalledTimes(1);
diff --git a/mc_frontend/src/app/author-detail/author-detail.page.ts b/mc_frontend/src/app/author-detail/author-detail.page.ts
index 901610c..034b001 100644
--- a/mc_frontend/src/app/author-detail/author-detail.page.ts
+++ b/mc_frontend/src/app/author-detail/author-detail.page.ts
@@ -5,6 +5,7 @@ import {TranslateService} from '@ngx-translate/core';
 import {HelperService} from '../helper.service';
 import {CorpusService} from 'src/app/corpus.service';
 import {HttpClient} from '@angular/common/http';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-author-detail',
@@ -22,6 +23,6 @@ export class AuthorDetailPage {
 
     showPossibleReferences(corpus: CorpusMC) {
         this.corpusService.setCurrentCorpus(corpus);
-        this.helperService.goToTextRangePage(this.navCtrl).then();
+        this.helperService.goToPage(this.navCtrl, configMC.pageUrlTextRange).then();
     }
 }
diff --git a/mc_frontend/src/app/author/author.page.spec.ts b/mc_frontend/src/app/author/author.page.spec.ts
index 06ececf..9e50c20 100644
--- a/mc_frontend/src/app/author/author.page.spec.ts
+++ b/mc_frontend/src/app/author/author.page.spec.ts
@@ -75,7 +75,7 @@ describe('AuthorPage', () => {
     it('should restore the last setup', (done) => {
         const restoreSpy: Spy = spyOn(authorPage.corpusService, 'restoreLastCorpus').and.callFake(() => Promise.reject());
         const showTextSpy: Spy = spyOn(authorPage.helperService, 'goToShowTextPage').and.returnValue(Promise.resolve(true));
-        const vocCheckSpy: Spy = spyOn(authorPage.helperService, 'goToVocabularyCheckPage').and.returnValue(Promise.resolve(true));
+        const vocCheckSpy: Spy = spyOn(authorPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         authorPage.helperService.isVocabularyCheck = false;
         authorPage.restoreLastSetup().then(() => {
         }, () => {
@@ -95,7 +95,7 @@ describe('AuthorPage', () => {
 
     it('should show corpora', () => {
         authorPage.helperService.applicationState.next(authorPage.helperService.deepCopy(MockMC.applicationState));
-        spyOn(authorPage.helperService, 'goToAuthorDetailPage').and.returnValue(Promise.resolve(true));
+        spyOn(authorPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         const author: Author = new Author({name: '', corpora: []});
         authorPage.showCorpora(author);
         expect(authorPage.corpusService.currentAuthor).toBe(author);
diff --git a/mc_frontend/src/app/author/author.page.ts b/mc_frontend/src/app/author/author.page.ts
index 704739e..46def0c 100644
--- a/mc_frontend/src/app/author/author.page.ts
+++ b/mc_frontend/src/app/author/author.page.ts
@@ -8,6 +8,7 @@ import {HelperService} from '../helper.service';
 import {ExerciseService} from '../exercise.service';
 import {ApplicationState} from '../models/applicationState';
 import {take} from 'rxjs/operators';
+import configMC from '../../configMC';
 
 /**
  * Generated class for the AuthorPage page.
@@ -68,7 +69,7 @@ export class AuthorPage implements OnInit {
         return new Promise<void>((resolve, reject) => {
             this.corpusService.restoreLastCorpus().then(() => {
                 if (this.helperService.isVocabularyCheck) {
-                    this.helperService.goToVocabularyCheckPage(this.navCtrl).then();
+                    this.helperService.goToPage(this.navCtrl, configMC.pageUrlVocabularyCheck).then();
                     return resolve();
                 } else {
                     this.helperService.goToShowTextPage(this.navCtrl).then();
@@ -85,7 +86,7 @@ export class AuthorPage implements OnInit {
         this.helperService.applicationState.pipe(take(1)).subscribe((as: ApplicationState) => {
             as.currentSetup.currentAuthor = author;
             this.helperService.saveApplicationState(as).then();
-            this.helperService.goToAuthorDetailPage(this.navCtrl).then();
+            this.helperService.goToPage(this.navCtrl, configMC.pageUrlAuthorDetail).then();
         });
     }
 
diff --git a/mc_frontend/src/app/doc-exercises/doc-exercises.page.html b/mc_frontend/src/app/doc-exercises/doc-exercises.page.html
index 553dad3..18d57f5 100644
--- a/mc_frontend/src/app/doc-exercises/doc-exercises.page.html
+++ b/mc_frontend/src/app/doc-exercises/doc-exercises.page.html
@@ -118,19 +118,19 @@
     <ion-toolbar>
         <ion-tabs>
             <ion-tab-bar slot="bottom">
-                <ion-tab-button (click)="helperService.goToInfoPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlInfo)">
                     <ion-icon name="information-circle"></ion-icon>
                     <ion-label>{{ 'ABOUT' | translate }}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocSoftwarePage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocSoftware)">
                     <ion-icon name="code"></ion-icon>
                     <ion-label>{{ 'DOC_SOFTWARE' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocVocUnitPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocVocUnit)">
                     <ion-icon name="school"></ion-icon>
                     <ion-label>{{'DOC_VOC_UNIT' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToImprintPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlImprint)">
                     <ion-icon name="today"></ion-icon>
                     <ion-label>{{ 'IMPRINT' | translate }}</ion-label>
                 </ion-tab-button>
diff --git a/mc_frontend/src/app/doc-exercises/doc-exercises.page.ts b/mc_frontend/src/app/doc-exercises/doc-exercises.page.ts
index 466d85c..1fb6e56 100644
--- a/mc_frontend/src/app/doc-exercises/doc-exercises.page.ts
+++ b/mc_frontend/src/app/doc-exercises/doc-exercises.page.ts
@@ -4,6 +4,7 @@ import {NavController} from '@ionic/angular';
 import {HttpClient} from '@angular/common/http';
 import {TranslateService} from '@ngx-translate/core';
 import {ExerciseDocumentation} from 'src/app/models/exerciseDocumentation';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-doc-exercises',
@@ -12,6 +13,7 @@ import {ExerciseDocumentation} from 'src/app/models/exerciseDocumentation';
 })
 
 export class DocExercisesPage implements OnInit {
+    public configMC = configMC;
     exerciseGenDocs: ExerciseDocumentation[] = [];
     vocUnitDocs: ExerciseDocumentation[] = [];
 
diff --git a/mc_frontend/src/app/doc-software/doc-software.page.html b/mc_frontend/src/app/doc-software/doc-software.page.html
index 5d3b02d..8e2efda 100644
--- a/mc_frontend/src/app/doc-software/doc-software.page.html
+++ b/mc_frontend/src/app/doc-software/doc-software.page.html
@@ -98,19 +98,19 @@
     <ion-toolbar>
         <ion-tabs>
             <ion-tab-bar slot="bottom">
-                <ion-tab-button (click)="helperService.goToInfoPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlInfo)">
                     <ion-icon name="information-circle"></ion-icon>
                     <ion-label>{{ 'ABOUT' | translate }}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocExercisesPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocExercises)">
                     <ion-icon name="tablet-landscape"></ion-icon>
                     <ion-label>{{'DOC_EXERCISES' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocVocUnitPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocVocUnit)">
                     <ion-icon name="school"></ion-icon>
                     <ion-label>{{'DOC_VOC_UNIT' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToImprintPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlImprint)">
                     <ion-icon name="today"></ion-icon>
                     <ion-label>{{ 'IMPRINT' | translate }}</ion-label>
                 </ion-tab-button>
diff --git a/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.html b/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.html
index ee70a65..90fc0b3 100644
--- a/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.html
+++ b/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.html
@@ -95,19 +95,19 @@
     <ion-toolbar>
         <ion-tabs>
             <ion-tab-bar slot="bottom">
-                <ion-tab-button (click)="helperService.goToInfoPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlInfo)">
                     <ion-icon name="information-circle"></ion-icon>
                     <ion-label>{{ 'ABOUT' | translate }}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocSoftwarePage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocSoftware)">
                     <ion-icon name="code"></ion-icon>
                     <ion-label>{{ 'DOC_SOFTWARE' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocExercisesPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocExercises)">
                     <ion-icon name="tablet-landscape"></ion-icon>
                     <ion-label>{{'DOC_EXERCISES' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToImprintPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlImprint)">
                     <ion-icon name="today"></ion-icon>
                     <ion-label>{{ 'IMPRINT' | translate }}</ion-label>
                 </ion-tab-button>
diff --git a/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.ts b/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.ts
index 2c3678e..532e2b4 100644
--- a/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.ts
+++ b/mc_frontend/src/app/doc-voc-unit/doc-voc-unit.page.ts
@@ -3,6 +3,7 @@ import {HelperService} from 'src/app/helper.service';
 import {NavController} from '@ionic/angular';
 import {HttpClient} from '@angular/common/http';
 import {TranslateService} from '@ngx-translate/core';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-doc-voc-unit',
@@ -11,6 +12,7 @@ import {TranslateService} from '@ngx-translate/core';
 })
 
 export class DocVocUnitPage {
+    public configMC = configMC;
     hypothesisIndices: number[] = [...Array(5).keys()];
     questionsIndices: number[] = [...Array(10).keys()];
     sequenceIndices: number[] = [...Array(6).keys()];
diff --git a/mc_frontend/src/app/exercise-list/exercise-list.page.spec.ts b/mc_frontend/src/app/exercise-list/exercise-list.page.spec.ts
index b051e87..327bc1e 100644
--- a/mc_frontend/src/app/exercise-list/exercise-list.page.spec.ts
+++ b/mc_frontend/src/app/exercise-list/exercise-list.page.spec.ts
@@ -103,7 +103,7 @@ describe('ExerciseListPage', () => {
 
     it('should show an exercise', (done) => {
         const requestSpy: Spy = spyOn(exerciseListPage.helperService, 'makeGetRequest').and.callFake(() => Promise.reject());
-        spyOn(exerciseListPage.helperService, 'goToPreviewPage').and.returnValue(Promise.resolve(true));
+        spyOn(exerciseListPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         exerciseListPage.showExercise(new ExerciseMC()).then(() => {
             requestSpy.and.returnValue(Promise.resolve({}));
             exerciseListPage.showExercise(new ExerciseMC({exercise_type: MoodleExerciseType.markWords.toString()})).then(() => {
diff --git a/mc_frontend/src/app/exercise-list/exercise-list.page.ts b/mc_frontend/src/app/exercise-list/exercise-list.page.ts
index 609e8fb..822c705 100644
--- a/mc_frontend/src/app/exercise-list/exercise-list.page.ts
+++ b/mc_frontend/src/app/exercise-list/exercise-list.page.ts
@@ -151,7 +151,7 @@ export class ExerciseListPage implements OnInit {
                 this.corpusService.annisResponse = ar;
                 const met: MoodleExerciseType = MoodleExerciseType[exercise.exercise_type];
                 this.corpusService.exercise.type = ExerciseType[met.toString()];
-                this.helperService.goToPreviewPage(this.navCtrl).then();
+                this.helperService.goToPage(this.navCtrl, configMC.pageUrlPreview).then();
                 return resolve();
             }, () => {
                 return resolve();
diff --git a/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.spec.ts b/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.spec.ts
index cb0d0de..77108fa 100644
--- a/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.spec.ts
+++ b/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.spec.ts
@@ -17,7 +17,7 @@ import {QueryMC} from '../models/queryMC';
 import {PhenomenonMapContent} from '../models/phenomenonMap';
 import Spy = jasmine.Spy;
 import MockMC from '../models/mockMC';
-import {Phenomenon} from '../../../openapi';
+import {ExerciseForm, Phenomenon} from '../../../openapi';
 
 describe('ExerciseParametersPage', () => {
     let exerciseParametersPage: ExerciseParametersPage;
@@ -54,6 +54,7 @@ describe('ExerciseParametersPage', () => {
 
     it('should generate an exercise', (done) => {
         exerciseParametersPage.corpusService.annisResponse = {solutions: []};
+        exerciseParametersPage.helperService.applicationState.next(exerciseParametersPage.helperService.deepCopy(MockMC.applicationState));
         exerciseParametersPage.corpusService.initCurrentCorpus().then(async () => {
             exerciseParametersPage.corpusService.currentTextRange = new ReplaySubject<TextRange>(1);
             exerciseParametersPage.corpusService.currentTextRange.next(new TextRange({start: [], end: []}));
@@ -104,6 +105,7 @@ describe('ExerciseParametersPage', () => {
     });
 
     it('should get exercise data', (done) => {
+        exerciseParametersPage.helperService.applicationState.next(exerciseParametersPage.helperService.deepCopy(MockMC.applicationState));
         exerciseParametersPage.corpusService.initCurrentCorpus().then(async () => {
             exerciseParametersPage.corpusService.currentTextRange = new ReplaySubject<TextRange>(1);
             exerciseParametersPage.corpusService.currentTextRange.next(new TextRange({start: ['', ''], end: ['', '']}));
@@ -124,13 +126,14 @@ describe('ExerciseParametersPage', () => {
 
     it('should get a H5P exercise', (done) => {
         const requestSpy: Spy = spyOn(exerciseParametersPage.helperService, 'makePostRequest').and.returnValue(Promise.resolve({}));
-        const navSpy: Spy = spyOn(exerciseParametersPage.helperService, 'goToPreviewPage').and.returnValue(Promise.resolve(true));
+        const navSpy: Spy = spyOn(exerciseParametersPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         exerciseParametersPage.corpusService.annisResponse = {};
         exerciseParametersPage.helperService.applicationState.next(exerciseParametersPage.helperService.deepCopy(MockMC.applicationState));
-        exerciseParametersPage.getH5Pexercise(new FormData()).then(() => {
+        const ef: ExerciseForm = {instructions: '', search_values: '', type: '', urn: ''};
+        exerciseParametersPage.getH5Pexercise(ef).then(() => {
             expect(navSpy).toHaveBeenCalledTimes(1);
             requestSpy.and.callFake(() => Promise.reject());
-            exerciseParametersPage.getH5Pexercise(new FormData()).then(() => {
+            exerciseParametersPage.getH5Pexercise(ef).then(() => {
             }, () => {
                 expect(navSpy).toHaveBeenCalledTimes(1);
                 done();
@@ -139,7 +142,7 @@ describe('ExerciseParametersPage', () => {
     });
 
     it('should get a KWIC exercise', (done) => {
-        const navSpy: Spy = spyOn(exerciseParametersPage.helperService, 'goToKwicPage').and.returnValue(Promise.resolve(true));
+        const navSpy: Spy = spyOn(exerciseParametersPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         const requestSpy: Spy = spyOn(exerciseParametersPage.helperService, 'makePostRequest').and.returnValue(Promise.resolve('svg'));
         exerciseParametersPage.getKwicExercise('').then(() => {
             expect(exerciseParametersPage.exerciseService.kwicGraphs.length).toBe(3);
diff --git a/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.ts b/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.ts
index 577fc3a..a582912 100644
--- a/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.ts
+++ b/mc_frontend/src/app/exercise-parameters/exercise-parameters.page.ts
@@ -19,7 +19,7 @@ import {ApplicationState} from '../models/applicationState';
 import {take} from 'rxjs/operators';
 import {TextRange} from '../models/textRange';
 import configMC from '../../configMC';
-import {AnnisResponse, FrequencyItem, Phenomenon} from '../../../openapi';
+import {AnnisResponse, ExerciseForm, FrequencyItem, Phenomenon} from '../../../openapi';
 import {KwicForm} from '../../../openapi';
 
 @Component({
@@ -105,20 +105,21 @@ export class ExerciseParametersPage implements OnInit {
                 this.corpusService.currentTextRange.pipe(take(1)).subscribe((tr: TextRange) => {
                     // TODO: change the corpus title to something meaningful, e.g. concatenate user ID and wanted exercise title
                     const workTitle: string = cc.title + ', ' + tr.start.filter(x => x).join('.') + '-' + tr.end.filter(x => x).join('.');
-                    const formData = new FormData();
-                    formData.append('urn', this.corpusService.currentUrn);
-                    formData.append('search_values', JSON.stringify(searchValues));
-                    formData.append('correct_feedback', this.corpusService.exercise.feedback.correct);
-                    formData.append('instructions', instructions);
-                    formData.append('general_feedback', this.corpusService.exercise.feedback.general);
-                    formData.append('incorrect_feedback', this.corpusService.exercise.feedback.incorrect);
-                    formData.append('language', this.translateService.currentLang);
-                    formData.append('partially_correct_feedback', this.corpusService.exercise.feedback.partiallyCorrect);
-                    formData.append('type', MoodleExerciseType[this.corpusService.exercise.type]);
-                    formData.append('type_translation', this.corpusService.exercise.typeTranslation);
-                    formData.append('work_author', cc.author);
-                    formData.append('work_title', workTitle);
-                    this.getH5Pexercise(formData).then(() => {
+                    const ef: ExerciseForm = {
+                        correct_feedback: this.corpusService.exercise.feedback.correct,
+                        instructions,
+                        general_feedback: this.corpusService.exercise.feedback.general,
+                        incorrect_feedback: this.corpusService.exercise.feedback.incorrect,
+                        language: this.translateService.currentLang,
+                        partially_correct_feedback: this.corpusService.exercise.feedback.partiallyCorrect,
+                        search_values: JSON.stringify(searchValues),
+                        type: MoodleExerciseType[this.corpusService.exercise.type],
+                        type_translation: this.corpusService.exercise.typeTranslation,
+                        urn: this.corpusService.currentUrn,
+                        work_author: cc.author,
+                        work_title: workTitle,
+                    };
+                    this.getH5Pexercise(ef).then(() => {
                         return resolve();
                     });
                 });
@@ -126,9 +127,13 @@ export class ExerciseParametersPage implements OnInit {
         });
     }
 
-    getH5Pexercise(formData: FormData): Promise<void> {
+    getH5Pexercise(ef: ExerciseForm): Promise<void> {
         return new Promise<void>((resolve, reject) => {
             const url: string = configMC.backendBaseUrl + configMC.backendApiExercisePath;
+            const formData = new FormData();
+            Object.keys(ef).forEach((key: string) => {
+                formData.append(key, ef[key]);
+            });
             this.helperService.makePostRequest(this.http, this.toastCtrl, url, formData).then((ar: AnnisResponse) => {
                 // save the old frequency analysis in case we want to change the exercise parameters at a later time
                 ar.frequency_analysis = this.corpusService.annisResponse.frequency_analysis;
@@ -138,7 +143,7 @@ export class ExerciseParametersPage implements OnInit {
                     this.corpusService.annisResponse.exercise_id = ar.exercise_id;
                     this.corpusService.annisResponse.uri = ar.uri;
                     this.corpusService.annisResponse.solutions = ar.solutions;
-                    this.helperService.goToPreviewPage(this.navCtrl).then();
+                    this.helperService.goToPage(this.navCtrl, configMC.pageUrlPreview).then();
                     return resolve();
                 });
             }, () => {
@@ -162,7 +167,7 @@ export class ExerciseParametersPage implements OnInit {
             const kwicUrl: string = configMC.backendBaseUrl + configMC.backendApiKwicPath;
             this.helperService.makePostRequest(this.http, this.toastCtrl, kwicUrl, formData).then((svgString: string) => {
                 this.exerciseService.kwicGraphs = svgString;
-                this.helperService.goToKwicPage(this.navCtrl).then();
+                this.helperService.goToPage(this.navCtrl, configMC.pageUrlKwic).then();
                 return resolve();
             }, () => {
                 return reject();
diff --git a/mc_frontend/src/app/helper.service.spec.ts b/mc_frontend/src/app/helper.service.spec.ts
index f5edab8..6ff054b 100644
--- a/mc_frontend/src/app/helper.service.spec.ts
+++ b/mc_frontend/src/app/helper.service.spec.ts
@@ -99,10 +99,10 @@ describe('HelperService', () => {
     });
 
     it('should go to a specific page', (done) => {
-        function checkNavigation(navFunctions: any[], pageUrls: string[], navController: NavController, navSpy: Spy): Promise<void> {
+        function checkNavigation(pageUrls: string[], navController: NavController, navSpy: Spy): Promise<void> {
             return new Promise<void>(resolve => {
-                range(0, navFunctions.length).forEach(async (idx: number) => {
-                    await navFunctions[idx](navController);
+                range(0, pageUrls.length).forEach(async (idx: number) => {
+                    await helperService.goToPage(navController, pageUrls[idx]);
                     expect(navSpy).toHaveBeenCalledWith(pageUrls[idx]);
                 });
                 return resolve();
@@ -111,16 +111,12 @@ describe('HelperService', () => {
 
         const navCtrl: NavController = TestBed.inject(NavController);
         const forwardSpy: Spy = spyOn(navCtrl, 'navigateForward').and.returnValue(Promise.resolve(true));
-        const navFnArr: any[] = [helperService.goToAuthorDetailPage, helperService.goToDocExercisesPage, helperService.goToDocSoftwarePage,
-            helperService.goToDocVocUnitPage, helperService.goToExerciseListPage, helperService.goToExerciseParametersPage,
-            helperService.goToImprintPage, helperService.goToInfoPage, helperService.goToPreviewPage, helperService.goToSourcesPage,
-            helperService.goToTextRangePage, helperService.goToVocabularyCheckPage, helperService.goToKwicPage,
-            helperService.goToRankingPage, helperService.goToSemanticsPage];
-        const pageUrlArr: string[] = [configMC.pageUrlAuthorDetail, configMC.pageUrlDocExercises, configMC.pageUrlDocSoftware,
-            configMC.pageUrlDocVocUnit, configMC.pageUrlExerciseList, configMC.pageUrlExerciseParameters, configMC.pageUrlImprint,
-            configMC.pageUrlInfo, configMC.pageUrlPreview, configMC.pageUrlSources, configMC.pageUrlTextRange,
-            configMC.pageUrlVocabularyCheck, configMC.pageUrlKwic, configMC.pageUrlRanking, configMC.pageUrlSemantics];
-        checkNavigation(navFnArr, pageUrlArr, navCtrl, forwardSpy).then(async () => {
+        const pageUrlArr: string[] = [configMC.pageUrlSemantics, configMC.pageUrlVocabularyCheck, configMC.pageUrlTextRange,
+            configMC.pageUrlSources, configMC.pageUrlRanking, configMC.pageUrlPreview, configMC.pageUrlKwic,
+            configMC.pageUrlInfo, configMC.pageUrlImprint, configMC.pageUrlExerciseParameters,
+            configMC.pageUrlExerciseList, configMC.pageUrlDocVocUnit, configMC.pageUrlDocSoftware,
+            configMC.pageUrlDocExercises, configMC.pageUrlAuthorDetail];
+        checkNavigation(pageUrlArr, navCtrl, forwardSpy).then(async () => {
             await helperService.goToAuthorPage(navCtrl);
             expect(helperService.isVocabularyCheck).toBeFalsy();
             await helperService.goToShowTextPage(navCtrl, true);
diff --git a/mc_frontend/src/app/helper.service.ts b/mc_frontend/src/app/helper.service.ts
index 63ac2b4..b5cfab6 100644
--- a/mc_frontend/src/app/helper.service.ts
+++ b/mc_frontend/src/app/helper.service.ts
@@ -200,88 +200,32 @@ export class HelperService {
         return H5P;
     }
 
-    goToAuthorDetailPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlAuthorDetail);
-    }
-
     goToAuthorPage(navCtrl: NavController): Promise<boolean> {
         this.isVocabularyCheck = false;
-        return navCtrl.navigateForward(configMC.pageUrlAuthor);
-    }
-
-    goToDocExercisesPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlDocExercises);
-    }
-
-    goToDocSoftwarePage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlDocSoftware);
-    }
-
-    goToDocVocUnitPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlDocVocUnit);
-    }
-
-    goToExerciseListPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlExerciseList);
-    }
-
-    goToExerciseParametersPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlExerciseParameters);
+        return this.goToPage(navCtrl, configMC.pageUrlAuthor);
     }
 
     goToHomePage(navCtrl: NavController): Promise<boolean> {
         return navCtrl.navigateRoot(configMC.pageUrlHome);
     }
 
-    goToImprintPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlImprint);
-    }
-
-    goToInfoPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlInfo);
-    }
-
-    goToKwicPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlKwic);
-    }
-
-    goToPreviewPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlPreview);
-    }
-
-    goToRankingPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlRanking);
-    }
-
-    goToSemanticsPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlSemantics);
+    goToPage(navCtrl: NavController, pageUrl: string): Promise<boolean> {
+        return navCtrl.navigateForward(pageUrl);
     }
 
     goToShowTextPage(navCtrl: NavController, isVocabularyCheck: boolean = false): Promise<boolean> {
         return new Promise<boolean>((resolve) => {
-            navCtrl.navigateForward(configMC.pageUrlShowText).then((result: boolean) => {
+            this.goToPage(navCtrl, configMC.pageUrlShowText).then((result: boolean) => {
                 this.isVocabularyCheck = isVocabularyCheck;
                 return resolve(result);
             });
         });
     }
 
-    goToSourcesPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlSources);
-    }
-
     goToTestPage(navCtrl: NavController): Promise<boolean> {
         return navCtrl.navigateRoot(configMC.pageUrlTest);
     }
 
-    goToTextRangePage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlTextRange);
-    }
-
-    goToVocabularyCheckPage(navCtrl: NavController): Promise<boolean> {
-        return navCtrl.navigateForward(configMC.pageUrlVocabularyCheck);
-    }
-
     handleRequestError(toastCtrl: ToastController, error: HttpErrorResponse, errorMessage: string, url: string): void {
         this.openRequests.splice(this.openRequests.indexOf(url), 1);
         this.currentError = error;
@@ -315,7 +259,7 @@ export class HelperService {
             configMC.backendBaseUrl = part1.concat(configMC.backendBaseApiPath).concat('/');
         }
         if (!configMC.frontendBaseUrl) {
-            configMC.frontendBaseUrl = location.href.slice(0, -configMC.pageUrlHome.length);
+            configMC.frontendBaseUrl = location.href.substring(0, location.href.lastIndexOf('/') + 1);
         }
     }
 
diff --git a/mc_frontend/src/app/home/home.page.html b/mc_frontend/src/app/home/home.page.html
index 95cf133..98c7ec6 100644
--- a/mc_frontend/src/app/home/home.page.html
+++ b/mc_frontend/src/app/home/home.page.html
@@ -62,7 +62,8 @@
                         {{'EXERCISE_TYPE_MATCHING' | translate }}<br>
                     </p>
                     <p>
-                        <ion-button (click)="helperService.goToExerciseListPage(navCtrl)">{{ 'CONTINUE' | translate }}
+                        <ion-button
+                                (click)="helperService.goToPage(navCtrl, configMC.pageUrlExerciseList)">{{ 'CONTINUE' | translate }}
                         </ion-button>
                     </p>
                 </div>
@@ -96,7 +97,8 @@
                         {{'DOC_VOC_UNIT' | translate }}<br>
                     </p>
                     <p>
-                        <ion-button (click)="helperService.goToInfoPage(navCtrl)">{{ 'CONTINUE' | translate }}
+                        <ion-button
+                                (click)="helperService.goToPage(navCtrl, configMC.pageUrlInfo)">{{ 'CONTINUE' | translate }}
                         </ion-button>
                     </p>
                 </div>
@@ -113,7 +115,7 @@
     <ion-toolbar>
         <ion-tabs id="tabs">
             <ion-tab-bar slot="bottom">
-                <ion-tab-button (click)="helperService.goToImprintPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlImprint)">
                     <ion-icon name="today"></ion-icon>
                     <ion-label>{{ 'IMPRINT' | translate }}</ion-label>
                 </ion-tab-button>
diff --git a/mc_frontend/src/app/home/home.page.ts b/mc_frontend/src/app/home/home.page.ts
index 5b3e386..a11abd5 100644
--- a/mc_frontend/src/app/home/home.page.ts
+++ b/mc_frontend/src/app/home/home.page.ts
@@ -8,6 +8,7 @@ import {ExerciseService} from 'src/app/exercise.service';
 import {CorpusService} from 'src/app/corpus.service';
 import {take} from 'rxjs/operators';
 import { version } from 'src/version';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-home',
@@ -15,6 +16,7 @@ import { version } from 'src/version';
     styleUrls: ['home.page.scss'],
 })
 export class HomePage implements OnInit {
+    public configMC = configMC;
     public isCorpusUpdateInProgress = false;
     public version: string;
 
diff --git a/mc_frontend/src/app/imprint/imprint.page.html b/mc_frontend/src/app/imprint/imprint.page.html
index f036ec5..6a1d5a9 100644
--- a/mc_frontend/src/app/imprint/imprint.page.html
+++ b/mc_frontend/src/app/imprint/imprint.page.html
@@ -114,19 +114,19 @@
     <ion-toolbar>
         <ion-tabs>
             <ion-tab-bar slot="bottom">
-                <ion-tab-button (click)="helperService.goToInfoPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlInfo)">
                     <ion-icon name="information-circle"></ion-icon>
                     <ion-label>{{ 'ABOUT' | translate }}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocSoftwarePage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocSoftware)">
                     <ion-icon name="code"></ion-icon>
                     <ion-label>{{ 'DOC_SOFTWARE' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocExercisesPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocExercises)">
                     <ion-icon name="tablet-landscape"></ion-icon>
                     <ion-label>{{'DOC_EXERCISES' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocVocUnitPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocVocUnit)">
                     <ion-icon name="school"></ion-icon>
                     <ion-label>{{'DOC_VOC_UNIT' | translate}}</ion-label>
                 </ion-tab-button>
diff --git a/mc_frontend/src/app/imprint/imprint.page.ts b/mc_frontend/src/app/imprint/imprint.page.ts
index 25a7257..ca0de2e 100644
--- a/mc_frontend/src/app/imprint/imprint.page.ts
+++ b/mc_frontend/src/app/imprint/imprint.page.ts
@@ -3,6 +3,7 @@ import {HelperService} from 'src/app/helper.service';
 import {NavController} from '@ionic/angular';
 import {HttpClient} from '@angular/common/http';
 import {TranslateService} from '@ngx-translate/core';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-imprint',
@@ -11,6 +12,7 @@ import {TranslateService} from '@ngx-translate/core';
 })
 
 export class ImprintPage {
+    public configMC = configMC;
 
     constructor(public navCtrl: NavController,
                 public http: HttpClient,
diff --git a/mc_frontend/src/app/info/info.page.html b/mc_frontend/src/app/info/info.page.html
index fb4bfae..c1b72a2 100644
--- a/mc_frontend/src/app/info/info.page.html
+++ b/mc_frontend/src/app/info/info.page.html
@@ -77,19 +77,19 @@
     <ion-toolbar>
         <ion-tabs>
             <ion-tab-bar slot="bottom">
-                <ion-tab-button (click)="helperService.goToDocSoftwarePage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocSoftware)">
                     <ion-icon name="code"></ion-icon>
                     <ion-label>{{ 'DOC_SOFTWARE' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocExercisesPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocExercises)">
                     <ion-icon name="tablet-landscape"></ion-icon>
                     <ion-label>{{'DOC_EXERCISES' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToDocVocUnitPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlDocVocUnit)">
                     <ion-icon name="school"></ion-icon>
                     <ion-label>{{'DOC_VOC_UNIT' | translate}}</ion-label>
                 </ion-tab-button>
-                <ion-tab-button (click)="helperService.goToImprintPage(navCtrl)">
+                <ion-tab-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlImprint)">
                     <ion-icon name="today"></ion-icon>
                     <ion-label>{{ 'IMPRINT' | translate }}</ion-label>
                 </ion-tab-button>
diff --git a/mc_frontend/src/app/info/info.page.ts b/mc_frontend/src/app/info/info.page.ts
index b65ef50..b252ece 100644
--- a/mc_frontend/src/app/info/info.page.ts
+++ b/mc_frontend/src/app/info/info.page.ts
@@ -3,6 +3,7 @@ import {HelperService} from 'src/app/helper.service';
 import {NavController} from '@ionic/angular';
 import {HttpClient} from '@angular/common/http';
 import {TranslateService} from '@ngx-translate/core';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-info',
@@ -11,6 +12,7 @@ import {TranslateService} from '@ngx-translate/core';
 })
 
 export class InfoPage {
+    public configMC = configMC;
     studiesIndices: number[] = [...Array(4).keys()];
 
     constructor(public navCtrl: NavController,
diff --git a/mc_frontend/src/app/preview/preview.page.html b/mc_frontend/src/app/preview/preview.page.html
index 86e34f2..6b464ab 100644
--- a/mc_frontend/src/app/preview/preview.page.html
+++ b/mc_frontend/src/app/preview/preview.page.html
@@ -66,7 +66,7 @@ beginning that it is going to be a download (instead of an ordinary link or clic
                     </ion-button>
                 </ion-col>
                 <ion-col>
-                    <ion-button (click)="helperService.goToTextRangePage(navCtrl)">
+                    <ion-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlTextRange)">
                         {{ "CHANGE_TEXT_RANGE" | translate}}
                     </ion-button>
                 </ion-col>
diff --git a/mc_frontend/src/app/show-text/show-text.page.html b/mc_frontend/src/app/show-text/show-text.page.html
index 40d52a9..b8f8504 100644
--- a/mc_frontend/src/app/show-text/show-text.page.html
+++ b/mc_frontend/src/app/show-text/show-text.page.html
@@ -110,11 +110,11 @@
                 <ion-button (click)="navCtrl.pop()">{{ 'BACK' | translate }}</ion-button>
             </ion-col>
             <ion-col>
-                <ion-button (click)="helperService.goToVocabularyCheckPage(navCtrl)">
+                <ion-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlVocabularyCheck)">
                     {{ 'VOCABULARY_CHECK' | translate }}</ion-button>
             </ion-col>
             <ion-col>
-                <ion-button (click)="helperService.goToExerciseParametersPage(navCtrl).then()">
+                <ion-button (click)="helperService.goToPage(navCtrl, configMC.pageUrlExerciseParameters).then()">
                     {{ "EXERCISE_SET_PARAMETERS" | translate}}</ion-button>
             </ion-col>
         </ion-row>
diff --git a/mc_frontend/src/app/show-text/show-text.page.ts b/mc_frontend/src/app/show-text/show-text.page.ts
index ca06ed8..4e0a7d0 100644
--- a/mc_frontend/src/app/show-text/show-text.page.ts
+++ b/mc_frontend/src/app/show-text/show-text.page.ts
@@ -20,6 +20,7 @@ import {FileType, VocabularyMC} from 'openapi';
 export class ShowTextPage implements OnInit {
     FileType = FileType;
     ObjectKeys = Object.keys;
+    public configMC = configMC;
     public downloadLinkSelector = '#download';
     public highlightOOV = false;
     public isDownloading = false;
diff --git a/mc_frontend/src/app/text-range/text-range.page.spec.ts b/mc_frontend/src/app/text-range/text-range.page.spec.ts
index b6aed1d..422af11 100644
--- a/mc_frontend/src/app/text-range/text-range.page.spec.ts
+++ b/mc_frontend/src/app/text-range/text-range.page.spec.ts
@@ -264,13 +264,11 @@ describe('TextRangePage', () => {
             getTextSpy.and.returnValue(Promise.resolve());
             await expectNavigationCalled(showTextSpy);
             textRangePage.helperService.isVocabularyCheck = true;
-            const vocCheckSpy: Spy = spyOn(textRangePage.helperService, 'goToVocabularyCheckPage')
+            const goToSpy: Spy = spyOn(textRangePage.helperService, 'goToPage')
                 .and.returnValue(Promise.resolve(true));
-            await expectNavigationCalled(vocCheckSpy);
+            await expectNavigationCalled(goToSpy);
             textRangePage.citationValuesStart = [];
-            const exParamSpy: Spy = spyOn(textRangePage.helperService, 'goToExerciseParametersPage')
-                .and.returnValue(Promise.resolve(true));
-            await expectNavigationCalled(exParamSpy, 1, true);
+            await expectNavigationCalled(goToSpy, 2, true);
             done();
         });
     });
diff --git a/mc_frontend/src/app/text-range/text-range.page.ts b/mc_frontend/src/app/text-range/text-range.page.ts
index c2a7cd2..30196cd 100644
--- a/mc_frontend/src/app/text-range/text-range.page.ts
+++ b/mc_frontend/src/app/text-range/text-range.page.ts
@@ -12,6 +12,7 @@ import {CorpusMC} from '../models/corpusMC';
 import {BehaviorSubject} from 'rxjs';
 import {take} from 'rxjs/operators';
 import {TextRange} from '../models/textRange';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-text-range',
@@ -270,9 +271,9 @@ export class TextRangePage implements OnInit {
                             this.corpusService.isTextRangeCorrect = true;
                             this.corpusService.getText().then(() => {
                                 if (skipText) {
-                                    this.helperService.goToExerciseParametersPage(this.navCtrl).then();
+                                    this.helperService.goToPage(this.navCtrl, configMC.pageUrlExerciseParameters).then();
                                 } else if (this.helperService.isVocabularyCheck) {
-                                    this.helperService.goToVocabularyCheckPage(this.navCtrl).then();
+                                    this.helperService.goToPage(this.navCtrl, configMC.pageUrlVocabularyCheck).then();
                                 } else {
                                     this.helperService.goToShowTextPage(this.navCtrl).then();
                                 }
diff --git a/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.spec.ts b/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.spec.ts
index aa63b07..3b49109 100644
--- a/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.spec.ts
+++ b/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.spec.ts
@@ -57,7 +57,7 @@ describe('VocabularyCheckPage', () => {
         vocabularyCheckPage.vocService.frequencyUpperBound = -1;
         const getVocSpy: Spy = spyOn(vocabularyCheckPage.vocService, 'getMatchingSentences')
             .and.returnValue(Promise.resolve([]));
-        const navSpy: Spy = spyOn(vocabularyCheckPage.helperService, 'goToRankingPage').and.returnValue(Promise.resolve(true));
+        const navSpy: Spy = spyOn(vocabularyCheckPage.helperService, 'goToPage').and.returnValue(Promise.resolve(true));
         vocabularyCheckPage.checkVocabulary().then(async () => {
             expect(getVocSpy).toHaveBeenCalledTimes(0);
             vocabularyCheckPage.vocService.frequencyUpperBound = 500;
diff --git a/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.ts b/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.ts
index 9c0cd14..6f17aa2 100644
--- a/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.ts
+++ b/mc_frontend/src/app/vocabulary-check/vocabulary-check.page.ts
@@ -11,6 +11,7 @@ import {CorpusMC} from '../models/corpusMC';
 import {take} from 'rxjs/operators';
 import {TextRange} from '../models/textRange';
 import {Sentence} from '../../../openapi';
+import configMC from '../../configMC';
 
 @Component({
     selector: 'app-vocabulary-check',
@@ -51,7 +52,7 @@ export class VocabularyCheckPage {
                     this.corpusService.currentUrn = this.corpusService.currentUrn.split('@')[0];
                     this.vocService.getMatchingSentences(this.corpusService.currentUrn).then((sentences: Sentence[]) => {
                         this.processSentences(sentences);
-                        this.helperService.goToRankingPage(this.navCtrl).then();
+                        this.helperService.goToPage(this.navCtrl, configMC.pageUrlRanking).then();
                         return resolve();
                     }, async (error: HttpErrorResponse) => {
                         return resolve();
-- 
GitLab