From ebbfbfbb295d4268eba729b0cee0b85679a04e3f Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Mon, 6 Jun 2022 21:12:14 +0200 Subject: [PATCH] word/quiz: dynamic lang(uage) option --- word.plp | 3 +-- word/memory.js | 10 +++++----- word/quiz.js | 13 +++++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/word.plp b/word.plp index 909c6fd..5571299 100644 --- a/word.plp +++ b/word.plp @@ -6,7 +6,6 @@ our $wordlistbase = "data/wordlist"; if ($Request and $Request =~ m{\A([^/]+)}) { my $name = $1; my $page = "word/$name.plp"; - $wordlistbase .= ".$lang"; if (-e $page) { utf8::downgrade($page); # unicode filename breaks contents encoding Include $page; @@ -20,7 +19,7 @@ if ($Request and $Request =~ m{\A([^/]+)}) { }); say '

Words

'; say ''; - say ""; + say ""; } exit; } diff --git a/word/memory.js b/word/memory.js index dfbb8a6..99e76e8 100644 --- a/word/memory.js +++ b/word/memory.js @@ -41,17 +41,17 @@ class WordMemory extends WordQuiz { .forEach(card => put(card, '!.turn!.bad')); } - load(dataurl) { - if (dataurl) { - super.load(dataurl); - } - else { + load() { + if (this.preset.pairs) { this.dataurl = '/data/wordpairs.json'; fetch(this.dataurl).then(res => res.json()).then(pairs => { this.pairs = pairs; this.setup(); }); } + else { + super.load(); + } } setup() { diff --git a/word/quiz.js b/word/quiz.js index f47fde1..68c2ee8 100644 --- a/word/quiz.js +++ b/word/quiz.js @@ -75,11 +75,12 @@ class WordQuiz { this.preset[query] = val; } } + this.preset.dataurl = `/data/wordlist.${this.preset.lang}.json` } - load(dataurl) { + load() { this.configure(window.location.hash.split('#')); - fetch(dataurl).then(res => res.json()).then(json => { + fetch(this.preset.dataurl).then(res => res.json()).then(json => { this.words = this.dataselect(json) this.setup(); }); @@ -95,15 +96,15 @@ class WordQuiz { fetch('/word/report', {method: 'POST', body: JSON.stringify(this.history)}); } - constructor(dataurl) { - this.preset = {images: true}; - this.load(dataurl); + constructor() { + this.preset = {images: true, lang: 'en'}; + this.load(); this.history = []; window.onbeforeunload = e => { this.stop('abort'); }; window.onhashchange = e => { - this.load(dataurl); + this.load(); }; } } -- 2.30.0