Commit b018ebba authored by Konstantin Schulz's avatar Konstantin Schulz
Browse files

fixed config.xml loading in production environments

parent ca14ec8a
......@@ -14,8 +14,7 @@ To build the application for production environments, use: `ionic cordova build
----------------------------------------------------------------
##### Development
To add new pages to the application, use: `ionic generate page PAGE_NAME`.
To spin up a local web server, run: `ng serve`
To spin up a local web server, run: `ng serve`.
----------------------------------------------------------------
##### Access to the Docker container
Use `docker-compose down` to stop and remove the currently running containers.
......
......@@ -34,6 +34,8 @@ http {
location / {
root /home/mc/mc_frontend/www;
index index.html index.htm;
# enable CORS so the cordova files (config.xml) can be accessed from other domains
add_header Access-Control-Allow-Origin *;
rewrite ^(.*)mc-service(.*)^ http://localhost:5000$2 last;
try_files $uri $uri/ /index.html =404;
}
......
{
"name": "mc_frontend",
"version": "0.7.5",
"version": "0.7.9",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......@@ -1277,6 +1277,7 @@
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"dev": true,
"optional": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
......@@ -2515,7 +2516,8 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true
"dev": true,
"optional": true
},
"constants-browserify": {
"version": "1.0.0",
......@@ -3806,7 +3808,8 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true
"dev": true,
"optional": true
},
"depd": {
"version": "1.1.2",
......@@ -5304,10 +5307,11 @@
}
},
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
......@@ -5320,6 +5324,7 @@
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
......@@ -5357,7 +5362,8 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true
"dev": true,
"optional": true
},
"get-stream": {
"version": "3.0.0",
......@@ -5537,7 +5543,8 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true
"dev": true,
"optional": true
},
"has-value": {
"version": "1.0.0",
......@@ -6262,7 +6269,8 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
"dev": true,
"optional": true
},
"is-windows": {
"version": "1.0.2",
......@@ -6942,6 +6950,7 @@
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
......@@ -6954,7 +6963,8 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
"dev": true,
"optional": true
}
}
},
......@@ -7229,7 +7239,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true
"dev": true,
"optional": true
},
"map-visit": {
"version": "1.0.0",
......@@ -7870,6 +7881,7 @@
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
......@@ -8886,6 +8898,7 @@
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"optional": true,
"requires": {
"load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
......@@ -8897,6 +8910,7 @@
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
......@@ -8907,7 +8921,8 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
"dev": true,
"optional": true
}
}
},
......@@ -8916,6 +8931,7 @@
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"optional": true,
"requires": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
......@@ -8926,6 +8942,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"optional": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
......@@ -8936,6 +8953,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"optional": true,
"requires": {
"pinkie-promise": "^2.0.0"
}
......@@ -10209,6 +10227,7 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"optional": true,
"requires": {
"is-utf8": "^0.2.0"
}
......@@ -10311,14 +10330,14 @@
"dev": true
},
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
"integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
"dev": true,
"optional": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"fstream": "^1.0.12",
"inherits": "2"
}
},
......@@ -11581,6 +11600,7 @@
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
......
{
"name": "mc_frontend",
"version": "0.7.9",
"version": "0.8.1",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
......
......@@ -36,8 +36,8 @@
<!-- This is preferable compared to a button click event, because the browser knows from the
beginning that it is going to be a download (instead of an ordinary link or click). -->
<ion-col>
<a href="{{urlBase + FileType[FileType.pdf] + solutionIndicesString}}" download>{{ 'FILE_TYPE_PDF' |
translate }}</a>
<a href="{{urlBase + FileType[FileType.pdf] + solutionIndicesString}}"
download>{{ 'FILE_TYPE_PDF' | translate }}</a>
</ion-col>
<ion-col>
<a href="{{urlBase + FileType[FileType.xml] + solutionIndicesString}}" download>{{ 'FILE_TYPE_XML' |
......
......@@ -50,7 +50,7 @@ export class PreviewPage implements OnDestroy {
this.initH5P();
}
public initH5P() {
initH5P() {
if ([ExerciseType.cloze, ExerciseType.matching].includes(this.corpusService.exercise.type)) {
const solutionIndicesString: string = this.exerciseService.excludeOOV ? '&solution_indices=' +
JSON.stringify(this.currentSolutions.map(x => this.corpusService.annisResponse.solutions.indexOf(x))) : '';
......@@ -80,7 +80,7 @@ export class PreviewPage implements OnDestroy {
H5P.externalDispatcher.off('xAPI');
}
public processAnnisResponse(ar: AnnisResponse) {
processAnnisResponse(ar: AnnisResponse) {
this.corpusService.annisResponse.solutions = ar.solutions;
this.processSolutions(ar.solutions);
this.corpusService.annisResponse.uri = ar.uri;
......@@ -88,10 +88,11 @@ export class PreviewPage implements OnDestroy {
this.corpusService.annisResponse.graph : ar.graph;
}
public processSolutions(solutions: Solution[]) {
processSolutions(solutions: Solution[]) {
const isCloze: boolean = this.corpusService.exercise.type === ExerciseType.cloze;
if (this.exerciseService.excludeOOV) {
const nodeIdSet: Set<string> = new Set(this.corpusService.annisResponse.graph.nodes.filter(x => !x.is_oov).map(x => x.id));
const nodeIdSet: Set<string> = new Set(this.corpusService.annisResponse.graph.nodes.filter(
x => !x.is_oov).map(x => x.id));
solutions = this.corpusService.annisResponse.solutions.filter(
x => nodeIdSet.has(x.target.salt_id) && (isCloze || nodeIdSet.has(x.value.salt_id)));
}
......@@ -115,7 +116,7 @@ export class PreviewPage implements OnDestroy {
this.initH5P();
}
private updateFileUrl() {
updateFileUrl() {
const uriParts: string[] = this.corpusService.annisResponse.uri.split('/');
const fileId: string = uriParts[uriParts.length - 1];
const fileTypeBase = '?type=';
......
<ion-header>
<ion-toolbar>
<div class="toolbar-left">
<ion-back-button icon="arrow-round-back" defaultHref="home"></ion-back-button>
<ion-title>{{ 'SOURCES' | translate }}</ion-title>
</div>
<div class="toolbar-right">
<button (click)="HelperService.goToHomePage(navCtrl)">
<ion-icon name="home"></ion-icon>
</button>
</div>
</ion-toolbar>
<ion-toolbar>
<div class="toolbar-left">
<ion-back-button icon="arrow-round-back" defaultHref="home"></ion-back-button>
<ion-title>{{ 'SOURCES' | translate }}</ion-title>
</div>
<div class="toolbar-right">
<button (click)="HelperService.goToHomePage(navCtrl)">
<ion-icon name="home"></ion-icon>
</button>
</div>
</ion-toolbar>
</ion-header>
<ion-content padding>
<h4>Software-Entwicklung</h4>
<h6>Machina Callida - Backend</h6>
<p>Die im Rahmen des Callidus-Projektes entwickelte Software - Machina Callida - ist ein
Open Source-Projekt. Der Code ist bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_backend" target="_blank">Backend</a>
</p>
<h6>Machina Callida - Frontend</h6>
<p>
Das Frontend ist ebenfalls bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_frontend" target="_blank">Frontend</a>
</p>
<br>
<h4>Software-Abhängigkeiten</h4>
<h6>Ancient Greek and Latin Dependency Treebank</h6>
<p>
The Ancient Greek and Latin Dependency Treebank (AGLDT) is the earliest treebank
for Ancient Greek and Latin.<br>
<a href="https://perseusdl.github.io/treebank_data/" target="_blank">Perseus</a>
</p>
<h6>Bamberger Wortschatz</h6>
<p>
Das zugrunde liegende Lektürecorpus wurde durch eine genaue Analyse der geltenden Lehrpläne
sowie durch einen Abgleich der wichtigsten Textausgaben ermittelt. Es enthält die gesamte Palette
der in der Mittelstufe gelesenen Texte und Autoren. Sie sind im Nachwort mitsamt den erfassten
Textstellen angegeben. Der Gesamtumfang des untersuchten Corpus ist mit über 140.000 Wortformen
beträchtlich: nach Abzug der Belegstellen von Namen immerhin 7.154 Lemmata, d.h. potenzielle
Lernwörter. Umso überraschender und erfreulicher ist das Ergebnis: Mit 1248 Vokabeln sind
gut 83% dieses Textcorpus erfassbar.<br>
Die eingehenden Untersuchungen und Vorarbeiten für die neue Wortkunde-Generation fanden im
Rahmen eines vom Verlag geförderten didaktischen Projekts unter dem Titel Bamberger Wortschatz
statt.<br>
<a href="https://www.ccbuchner.de/reihe-0-0/adeo-53/" target="_blank">ADEO-Basiswortschatz</a>
</p>
<h6>PROIEL Treebank</h6>
<p>
The PROIEL Treebank is a treebank of ancient Indo-European languages, including Latin and
Ancient Greek. It uses a refined version of dependency grammar and is available under
a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.<br>
<a href="https://proiel.github.io/" target="_blank">PROIEL Treebank</a>
</p>
<h4>Software-Entwicklung</h4>
<h6>Machina Callida - Backend</h6>
<p>Die im Rahmen des Callidus-Projektes entwickelte Software - Machina Callida - ist ein
Open Source-Projekt. Der Code ist bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_backend" target="_blank">Backend</a>
</p>
<h6>Machina Callida - Frontend</h6>
<p>
Das Frontend ist ebenfalls bei GitLab zu finden.<br>
<a href="https://scm.cms.hu-berlin.de/callidus/mc_frontend" target="_blank">Frontend</a>
</p>
<br>
<h4>Software-Abhängigkeiten</h4>
<h6>Ancient Greek and Latin Dependency Treebank</h6>
<p>
The Ancient Greek and Latin Dependency Treebank (AGLDT) is the earliest treebank
for Ancient Greek and Latin.<br>
<a href="https://perseusdl.github.io/treebank_data/" target="_blank">Perseus</a>
</p>
<h6>Bamberger Wortschatz</h6>
<p>
Das zugrunde liegende Lektürecorpus wurde durch eine genaue Analyse der geltenden Lehrpläne
sowie durch einen Abgleich der wichtigsten Textausgaben ermittelt. Es enthält die gesamte Palette
der in der Mittelstufe gelesenen Texte und Autoren. Sie sind im Nachwort mitsamt den erfassten
Textstellen angegeben. Der Gesamtumfang des untersuchten Corpus ist mit über 140.000 Wortformen
beträchtlich: nach Abzug der Belegstellen von Namen immerhin 7.154 Lemmata, d.h. potenzielle
Lernwörter. Umso überraschender und erfreulicher ist das Ergebnis: Mit 1248 Vokabeln sind
gut 83% dieses Textcorpus erfassbar.<br>
Die eingehenden Untersuchungen und Vorarbeiten für die neue Wortkunde-Generation fanden im
Rahmen eines vom Verlag geförderten didaktischen Projekts unter dem Titel Bamberger Wortschatz
statt.<br>
<a href="https://www.ccbuchner.de/reihe-0-0/adeo-53/" target="_blank">ADEO-Basiswortschatz</a>
</p>
<h6>PROIEL Treebank</h6>
<p>
The PROIEL Treebank is a treebank of ancient Indo-European languages, including Latin and
Ancient Greek. It uses a refined version of dependency grammar and is available under
a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.<br>
<a href="https://proiel.github.io/" target="_blank">PROIEL Treebank</a>
</p>
<h6>ANNIS</h6>
<p><a href="https://korpling.org/annis3/" target="_blank">ANNIS</a> ist ein brow­ser­ba­sier­tes, Open-Source Such-
und Vi­su­a­li­sie­rungs­werk­zeug für
kom­ple­xe lin­gu­is­ti­sche Mehr­ebe­nen­kor­po­ra. ANNIS steht für An­no­ta­ti­on der
In­for­ma­ti­ons­struk­tur und wur­de im Rah­men des SFB 632 "In­for­ma­ti­ons­struk­tur:
Die sprach­li­chen Mit­tel der Glie­de­rung von Äu­ße­rung, Satz und Text" ent­wi­ckelt.<br>
ANNIS ba­siert nicht auf ei­ner be­stimm­ten lin­gu­is­ti­schen The­o­rie und kann so­mit
un­ter­schied­lichs­te Kor­po­ra durch­su­chen und dar­stel­len. So kön­nen sprach­li­che
Phä­no­me­ne un­ter­schied­li­cher Ebe­nen ge­mein­sam dar­ge­stellt und durch­sucht wer­den
wie bei­spiels­wei­se Syn­tax, Se­man­tik, Mor­pho­lo­gie, Pro­so­die, Re­fe­ren­ti­a­li­tät und Le­xik.
Mit ANNIS ist es eben­falls mög­lich, mul­ti­me­di­a­le Da­ten wie Au­dio- und Vi­deo­da­tei­en
ein­zu­bin­den.
</p>
<br>
<h4>Copyright Bilder</h4>
<img src="../../assets/imgs/logo.png" width="64px" height="64px">
<div style="font-size:0.8em">Icon made by <a href="https://www.freepik.com/" title="Freepik">Freepik</a> <br>
from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a>
is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0"
target="_blank">CC 3.0 BY</a><br>
</div>
<br>
<h6>ANNIS</h6>
<p><a href="https://korpling.org/annis3/" target="_blank">ANNIS</a> ist ein brow­ser­ba­sier­tes, Open-Source Such-
und Vi­su­a­li­sie­rungs­werk­zeug für
kom­ple­xe lin­gu­is­ti­sche Mehr­ebe­nen­kor­po­ra. ANNIS steht für An­no­ta­ti­on der
In­for­ma­ti­ons­struk­tur und wur­de im Rah­men des SFB 632 "In­for­ma­ti­ons­struk­tur:
Die sprach­li­chen Mit­tel der Glie­de­rung von Äu­ße­rung, Satz und Text" ent­wi­ckelt.<br>
ANNIS ba­siert nicht auf ei­ner be­stimm­ten lin­gu­is­ti­schen The­o­rie und kann so­mit
un­ter­schied­lichs­te Kor­po­ra durch­su­chen und dar­stel­len. So kön­nen sprach­li­che
Phä­no­me­ne un­ter­schied­li­cher Ebe­nen ge­mein­sam dar­ge­stellt und durch­sucht wer­den
wie bei­spiels­wei­se Syn­tax, Se­man­tik, Mor­pho­lo­gie, Pro­so­die, Re­fe­ren­ti­a­li­tät und Le­xik.
Mit ANNIS ist es eben­falls mög­lich, mul­ti­me­di­a­le Da­ten wie Au­dio- und Vi­deo­da­tei­en
ein­zu­bin­den.
</p>
<br>
<h4>Copyright Bilder</h4>
<img src="assets/imgs/logo.png" width="64px" height="64px">
<div style="font-size:0.8em">Icon made by <a href="https://www.freepik.com/" title="Freepik">Freepik</a> <br>
from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a>
is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0"
target="_blank">CC 3.0 BY</a><br>
</div>
<br>
</ion-content>
<ion-footer>
<ion-toolbar>
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button (click)="goToAuthorPage()">
<ion-icon name="walk"></ion-icon>
<ion-label>Übung erstellen</ion-label>
</ion-tab-button>
<ion-tab-button (click)="HelperService.goToTestPage(navCtrl)">
<ion-icon name="school"></ion-icon>
<ion-label>Test beginnen</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
</ion-toolbar>
</ion-footer>
\ No newline at end of file
<ion-toolbar>
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button (click)="goToAuthorPage()">
<ion-icon name="walk"></ion-icon>
<ion-label>Übung erstellen</ion-label>
</ion-tab-button>
<ion-tab-button (click)="HelperService.goToTestPage(navCtrl)">
<ion-icon name="school"></ion-icon>
<ion-label>Test beginnen</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
</ion-toolbar>
</ion-footer>
......@@ -2,28 +2,41 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Machina Callida</title>
<meta charset="utf-8"/>
<title>Machina Callida</title>
<base href="./" />
<base href="./"/>
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport"
content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="msapplication-tap-highlight" content="no"/>
<link rel="icon" type="image/png" href="assets/icon/favicon.jpg" />
<link rel="icon" type="image/png" href="assets/icon/favicon.jpg"/>
<!-- add to homescreen for ios -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<!-- add to homescreen for ios -->
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
<!-- H5P integration, can be called using the global H5P variable -->
<script type="text/javascript" src="assets/dist/js/h5p-standalone-main.min.js"></script>
<!-- very, very dirty hack to correct the URL for calls to "/config.xml" from the confighelper.js/cordova.js in the cordova-browser package -->
<script type="text/javascript">
const open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function (method, url, ...rest) {
if (url === "/config.xml") {
const base = location.protocol.concat('//').concat(window.location.host) + window.location.pathname.split("/").slice(0, -1).join("/");
url = base + url;
}
return open.call(this, method, url, ...rest);
};
</script>
<!-- H5P integration, can be called using the global H5P variable -->
<script type="text/javascript" src="assets/dist/js/h5p-standalone-main.min.js"></script>
</head>
<body>
<app-root></app-root>
<app-root></app-root>
</body>
</html>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment