Compare commits
2 Commits
ac3e6b62b9
...
8c115ab59a
Author | SHA1 | Date | |
---|---|---|---|
|
8c115ab59a | ||
|
433873d5c9 |
@ -5,7 +5,7 @@ import os
|
|||||||
capitula = [
|
capitula = [
|
||||||
{'title': '01 Imperium Romanum',
|
{'title': '01 Imperium Romanum',
|
||||||
'pensa': ['A', 'B'],
|
'pensa': ['A', 'B'],
|
||||||
'exercitia': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]},
|
'exercitia': [1, 2, 4, 5, 6, 8, 10, 11]},
|
||||||
{'title': '02 Familia Romana'},
|
{'title': '02 Familia Romana'},
|
||||||
{'title': '03 Puer Improbus'},
|
{'title': '03 Puer Improbus'},
|
||||||
{'title': '04 Dominus et Servi'},
|
{'title': '04 Dominus et Servi'},
|
||||||
|
83
app/static/js/cloze.js
Normal file
83
app/static/js/cloze.js
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
function adjust_size(divclass) {
|
||||||
|
const cloze = document.querySelector(divclass);
|
||||||
|
const inputs = cloze.querySelectorAll('input');
|
||||||
|
inputs.forEach((input) => {
|
||||||
|
if (input.type=="text") {
|
||||||
|
input.setAttribute("value", "");
|
||||||
|
input.setAttribute("style", "width: " + input.dataset.expected.length + "em");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function nomacron_to_macron(char) {
|
||||||
|
var mapper = { 'A': 'Ā',
|
||||||
|
'a': 'ā',
|
||||||
|
'E': 'Ē',
|
||||||
|
'e': 'ē',
|
||||||
|
'I': 'Ī',
|
||||||
|
'i': 'ī',
|
||||||
|
'O': 'Ō',
|
||||||
|
'o': 'ō',
|
||||||
|
'U': 'Ū',
|
||||||
|
'u': 'ū'};
|
||||||
|
return mapper[char[0]];
|
||||||
|
}
|
||||||
|
|
||||||
|
function macron_to_nomacron(char) {
|
||||||
|
var mapper = { 'Ā': 'A',
|
||||||
|
'ā': 'a',
|
||||||
|
'Ē': 'E',
|
||||||
|
'ē': 'e',
|
||||||
|
'Ī': 'I',
|
||||||
|
'ī': 'i',
|
||||||
|
'Ō': 'O',
|
||||||
|
'ō': 'o',
|
||||||
|
'Ū': 'U',
|
||||||
|
'ū': 'u'};
|
||||||
|
return mapper[char];
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_nonmacron(input) {
|
||||||
|
return input.replace(/Ā|ā|Ē|ē|Ī|ī/, macron_to_nomacron);
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_macron(input) {
|
||||||
|
return input.replace(/(\w)\1/, nomacron_to_macron);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function validate(divclass) {
|
||||||
|
const pensum = document.querySelector(divclass);
|
||||||
|
const inputs = pensum.querySelectorAll('input');
|
||||||
|
|
||||||
|
inputs.forEach((input) => {
|
||||||
|
if (input.type == "text") {
|
||||||
|
is_nonmacron_ok = false;
|
||||||
|
is_macron_ok = false;
|
||||||
|
if (document.getElementById('vowel_length').checked == false) {
|
||||||
|
is_nonmacron_ok = (to_nonmacron(input.value) == to_nonmacron(input.dataset.expected));
|
||||||
|
} else {
|
||||||
|
is_macron_ok = (input.value == input.dataset.expected);
|
||||||
|
}
|
||||||
|
if (is_nonmacron_ok || is_macron_ok) {
|
||||||
|
input.setAttribute("class", "correct");
|
||||||
|
} else {
|
||||||
|
input.setAttribute("class", "incorrect");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function show_answers(divclass) {
|
||||||
|
const cloze = document.querySelector(divclass);
|
||||||
|
const inputs = cloze.querySelectorAll('input');
|
||||||
|
|
||||||
|
inputs.forEach((input) => {
|
||||||
|
if (input.type=="text") {
|
||||||
|
input.value = input.dataset.expected;
|
||||||
|
input.removeAttribute("class");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
-a|in -ā|-um|in -ō
|
||||||
|
Itali_a_ in Eurōpā est.
|
||||||
|
Rōma in Itali_ā_ est.
|
||||||
|
Itali_a_ et Graeci_a_ in Eurōp_ā_ sunt.
|
||||||
|
Rōma nōn in Graeci_ā_, sed in Itali_ā_ est.
|
||||||
|
Imperi_um_ Rōmān_um_ magnum est.
|
||||||
|
Gallia est prōvinci_a_ Rōmāna.
|
||||||
|
In prōvinci_ā_ Rōmān_a_ multae prōvinciae sunt.
|
||||||
|
<i>Ubi</i> est vocābul_um_ Latīnum.
|
||||||
|
In vocābul_ō_ <i>ubi</i> sunt trēs litterae.
|
||||||
|
Capitul_um_ prīmum: IMPERIVM ROMANVM.
|
||||||
|
In capitul_ō_ prīm_ō_ multa vocāluba sunt.
|
@ -0,0 +1,14 @@
|
|||||||
|
volabula: -a, in -ā, -um, in -ō
|
||||||
|
<br><ol>
|
||||||
|
<li><span>Itali<input type="text" data-expected="a"/></span> in Eurōpā est.</li>
|
||||||
|
<li>Rōma in <span>Itali<input type="text" data-expected="ā"/></span> est.</li>
|
||||||
|
<li><span>Itali<input type="text" data-expected="a"/></span> et <span>Graeci<input type="text" data-expected="a"/></span> in Eurō<span>p<input type="text" data-expected="ā"/></span> sunt.</li>
|
||||||
|
<li>Rōma nōn in <span>Graeci<input type="text" data-expected="ā"/>,</span> sed in <span>Itali<input type="text" data-expected="ā"/></span> est.</li>
|
||||||
|
<li><span>Imperi<input type="text" data-expected="um"/></span> Rōmā<span>n<input type="text" data-expected="um"/></span> magnum est.</li>
|
||||||
|
<li>Gallia est prō<span>vinci<input type="text" data-expected="a"/></span> Rōmāna.</li>
|
||||||
|
<li>In prō<span>vinci<input type="text" data-expected="ā"/></span> Rōmā<span>n<input type="text" data-expected="a"/></span> multae prōvinciae sunt.</li>
|
||||||
|
<li><i>Ubi</i> est vocā<span>bul<input type="text" data-expected="um"/></span> Latīnum.</li>
|
||||||
|
<li>In vocā<span>bul<input type="text" data-expected="ō"/></span> <i>ubi</i> sunt trēs litterae.</li>
|
||||||
|
<li><span>Capitul<input type="text" data-expected="um"/></span> prīmum: IMPERIVM ROMANVM.</li>
|
||||||
|
<li>In <span>capitul<input type="text" data-expected="ō"/></span> prī<span>m<input type="text" data-expected="ō"/></span> multa vocāluba sunt.</li>
|
||||||
|
</ol>
|
@ -0,0 +1,16 @@
|
|||||||
|
singulāris (sing.)|plūrālis (plūr.)
|
||||||
|
Fluvius singulāris est. Fluviī _plūrālis_ est.
|
||||||
|
Īnsulae plūrālis est. Īnsula _singulāris_ est.
|
||||||
|
Oppidum _singulāris_ est. Oppida _plūrālis_ est.
|
||||||
|
Singulāris: fluvius; plūrālis: fluviī.
|
||||||
|
Plūrālis: īnsulae; singulāris: _īnsula_.
|
||||||
|
Singulāris: oppidum; plūrālis: _oppida_.
|
||||||
|
Plūrālis: numerī; singulāris: _numerus_.
|
||||||
|
Singulāris: littera; plūrālis: _litterae_.
|
||||||
|
Plūrālis: vocābula; singulāris: _vocābulum_.
|
||||||
|
Singulāris: īnsula magna; plūrālis: _īnsulae_ _magnae_.
|
||||||
|
Plūrālis: oppida magna. singulāris: _oppidum_ _magnum_.
|
||||||
|
Singulāris: numerus Rōmānus; plūrālis: _numerī_ _Rōmānī_.
|
||||||
|
Plūrālis: litterae Graecae; singulāris _littera_ _Graeca_.
|
||||||
|
Singulāris: vocabulum Latīnum; plūrālis _vocābula_ _Latīna_.
|
||||||
|
Plūrālis: exempla; singulāris _exemplum_.
|
@ -0,0 +1,18 @@
|
|||||||
|
volabula: singulāris (sing.), plūrālis (plūr.)
|
||||||
|
<br><ol>
|
||||||
|
<li>Fluvius singulāris est. Fluviī <span><input type="text" data-expected="plūrālis"/></span> est.</li>
|
||||||
|
<li>Īnsulae plūrālis est. Īnsula <span><input type="text" data-expected="singulāris"/></span> est.</li>
|
||||||
|
<li>Oppidum <span><input type="text" data-expected="singulāris"/></span> est. Oppida <span><input type="text" data-expected="plūrālis"/></span> est.</li>
|
||||||
|
<li>Singulāris: fluvius; plūrālis: fluviī.</li>
|
||||||
|
<li>Plūrālis: īnsulae; singulāris: <span><input type="text" data-expected="īnsula"/>.</span></li>
|
||||||
|
<li>Singulāris: oppidum; plūrālis: <span><input type="text" data-expected="oppida"/>.</span></li>
|
||||||
|
<li>Plūrālis: numerī; singulāris: <span><input type="text" data-expected="numerus"/>.</span></li>
|
||||||
|
<li>Singulāris: littera; plūrālis: <span><input type="text" data-expected="litterae"/>.</span></li>
|
||||||
|
<li>Plūrālis: vocābula; singulāris: <span><input type="text" data-expected="vocābulum"/>.</span></li>
|
||||||
|
<li>Singulāris: īnsula magna; plūrālis: <span><input type="text" data-expected="īnsulae"/></span> <span><input type="text" data-expected="magnae"/>.</span></li>
|
||||||
|
<li>Plūrālis: oppida magna. singulāris: <span><input type="text" data-expected="oppidum"/></span> <span><input type="text" data-expected="magnum"/>.</span></li>
|
||||||
|
<li>Singulāris: numerus Rōmānus; plūrālis: <span><input type="text" data-expected="numerī"/></span> <span><input type="text" data-expected="Rōmānī"/>.</span></li>
|
||||||
|
<li>Plūrālis: litterae Graecae; singulāris <span><input type="text" data-expected="littera"/></span> <span><input type="text" data-expected="Graeca"/>.</span></li>
|
||||||
|
<li>Singulāris: vocabulum Latīnum; plūrālis <span><input type="text" data-expected="vocābula"/></span> <span><input type="text" data-expected="Latīna"/>.</span></li>
|
||||||
|
<li>Plūrālis: exempla; singulāris <span><input type="text" data-expected="exemplum"/>.</span></li>
|
||||||
|
</ol>
|
@ -1,2 +0,0 @@
|
|||||||
Under
|
|
||||||
Construction
|
|
@ -1,2 +1,13 @@
|
|||||||
-us|-ī|-a|-ae|-um|-a
|
-us|-ī|-a|-ae|-um|-a
|
||||||
Corsica īnsul_a_ est. Corsica et Sardinia īnsul_ae_ sunt.
|
Corsica īnsul_a_ est. Corsica et Sardinia īnsul_ae_ sunt.
|
||||||
|
Rhēnus fluvi_us_ est. Rhēnus et Dānivius fluvi_ī_ sunt.
|
||||||
|
Brundisium oppid_um_ est. Brundisium et Tūsculum oppid_a_ sunt.
|
||||||
|
Sicilia īnsula magn_a_ est.
|
||||||
|
Nīlus est fluvius magn_us_.
|
||||||
|
Brundisium oppidum magn_um_ est.
|
||||||
|
Tūsculum nōn oppid_um_ magn_um_, sed oppid_um_ parv_um_ est.
|
||||||
|
Malita nōn est īnsul_a_ magn_a_, sed īnsul_a_ parv_a_.
|
||||||
|
Tiberis nōn fluvi_us_ magn_us_, sed fluvi_us_ parv_us_ est.
|
||||||
|
Rhēnus et Nīlus fluviī magn_ī_ sunt.
|
||||||
|
Sicilia et Sardinia īnsulae magn_ae_ sunt.
|
||||||
|
Brundisium et Sparta oppida magn_a_ sunt.
|
@ -1,4 +1,15 @@
|
|||||||
volabula: -us, -ī, -a, -ae, -um, -a
|
volabula: -us, -ī, -a, -ae, -um, -a
|
||||||
<br><ol>
|
<br><ol>
|
||||||
<li>Corsica ī<span>nsul<input type="text" data-expected="a"/></span> est. Corsica et Sardinia ī<span>nsul<input type="text" data-expected="ae"/></span> sunt.</li>
|
<li>Corsica ī<span>nsul<input type="text" data-expected="a"/></span> est. Corsica et Sardinia ī<span>nsul<input type="text" data-expected="ae"/></span> sunt.</li>
|
||||||
|
<li>Rhēnus <span>fluvi<input type="text" data-expected="us"/></span> est. Rhēnus et Dānivius <span>fluvi<input type="text" data-expected="ī"/></span> sunt.</li>
|
||||||
|
<li>Brundisium <span>oppid<input type="text" data-expected="um"/></span> est. Brundisium et Tūsculum <span>oppid<input type="text" data-expected="a"/></span> sunt.</li>
|
||||||
|
<li>Sicilia īnsula <span>magn<input type="text" data-expected="a"/></span> est.</li>
|
||||||
|
<li>Nīlus est fluvius <span>magn<input type="text" data-expected="us"/>.</span></li>
|
||||||
|
<li>Brundisium oppidum <span>magn<input type="text" data-expected="um"/></span> est.</li>
|
||||||
|
<li>Tūsculum nōn <span>oppid<input type="text" data-expected="um"/></span> <span>magn<input type="text" data-expected="um"/>,</span> sed <span>oppid<input type="text" data-expected="um"/></span> <span>parv<input type="text" data-expected="um"/></span> est.</li>
|
||||||
|
<li>Malita nōn est ī<span>nsul<input type="text" data-expected="a"/></span> <span>magn<input type="text" data-expected="a"/>,</span> sed ī<span>nsul<input type="text" data-expected="a"/></span> <span>parv<input type="text" data-expected="a"/>.</span></li>
|
||||||
|
<li>Tiberis nōn <span>fluvi<input type="text" data-expected="us"/></span> <span>magn<input type="text" data-expected="us"/>,</span> sed <span>fluvi<input type="text" data-expected="us"/></span> <span>parv<input type="text" data-expected="us"/></span> est.</li>
|
||||||
|
<li>Rhēnus et Nīlus fluviī <span>magn<input type="text" data-expected="ī"/></span> sunt.</li>
|
||||||
|
<li>Sicilia et Sardinia īnsulae <span>magn<input type="text" data-expected="ae"/></span> sunt.</li>
|
||||||
|
<li>Brundisium et Sparta oppida <span>magn<input type="text" data-expected="a"/></span> sunt.</li>
|
||||||
</ol>
|
</ol>
|
@ -0,0 +1,7 @@
|
|||||||
|
fluvius est|fluviī sunt|īnsula est|īnsulae sunt|oppidum est|oppida sunt
|
||||||
|
Sicilia īnsula est. Sicilia et Sardinia _īnsulae_ sunt.
|
||||||
|
Rhēnus fluvius est. Rhēnus et Dānuvius _fluviī_ _sunt_.
|
||||||
|
Tūsculum oppidum est. Tūsculum et Brundisium _oppida_ _sunt_.
|
||||||
|
Corsica et Sardinia īnsulae sunt. Sicilia quoque _īnsula_ _est_.
|
||||||
|
Nīlus et Tiberis fluviī sunt. Dānuvius quoque _fluvius_ _est_.
|
||||||
|
Sparta et Delphī oppida sunt. Brundisium quoque _oppidum_ _est_.
|
@ -0,0 +1,9 @@
|
|||||||
|
volabula: fluvius est, fluviī sunt, īnsula est, īnsulae sunt, oppidum est, oppida sunt
|
||||||
|
<br><ol>
|
||||||
|
<li>Sicilia īnsula est. Sicilia et Sardinia <span><input type="text" data-expected="īnsulae"/></span> sunt.</li>
|
||||||
|
<li>Rhēnus fluvius est. Rhēnus et Dānuvius <span><input type="text" data-expected="fluviī"/></span> <span><input type="text" data-expected="sunt"/>.</span></li>
|
||||||
|
<li>Tūsculum oppidum est. Tūsculum et Brundisium <span><input type="text" data-expected="oppida"/></span> <span><input type="text" data-expected="sunt"/>.</span></li>
|
||||||
|
<li>Corsica et Sardinia īnsulae sunt. Sicilia quoque <span><input type="text" data-expected="īnsula"/></span> <span><input type="text" data-expected="est"/>.</span></li>
|
||||||
|
<li>Nīlus et Tiberis fluviī sunt. Dānuvius quoque <span><input type="text" data-expected="fluvius"/></span> <span><input type="text" data-expected="est"/>.</span></li>
|
||||||
|
<li>Sparta et Delphī oppida sunt. Brundisium quoque <span><input type="text" data-expected="oppidum"/></span> <span><input type="text" data-expected="est"/>.</span></li>
|
||||||
|
</ol>
|
@ -0,0 +1,9 @@
|
|||||||
|
Graecus|imperium|multī|num|paucī|prōvincia|quid|Rōmānus
|
||||||
|
Tūsculum nōn oppidum Graecum, sed oppidum _Rōmānum_ est.
|
||||||
|
Sparta est oppidum _Graecum_.
|
||||||
|
_Num_ Nīlus oppidum est? Nīlus nōn est oppidum.
|
||||||
|
_Quid_ est Nīlus? Nīlus fluvius est.
|
||||||
|
In Arabiā nōn multī, sed _paucī_ fluviī sunt.
|
||||||
|
Quid est Gallia? Gallia est _prōvincia_ Rōmāna.
|
||||||
|
In imperiō Rōmānō nōn paucae, sed _multae_ prōvinciae sunt.
|
||||||
|
Magnum est _imperium_ Rōmānum.
|
@ -0,0 +1,11 @@
|
|||||||
|
volabula: Graecus, imperium, multī, num, paucī, prōvincia, quid, Rōmānus
|
||||||
|
<br><ol>
|
||||||
|
<li>Tūsculum nōn oppidum Graecum, sed oppidum <span><input type="text" data-expected="Rōmānum"/></span> est.</li>
|
||||||
|
<li>Sparta est oppidum <span><input type="text" data-expected="Graecum"/>.</span></li>
|
||||||
|
<li><span><input type="text" data-expected="Num"/></span> Nīlus oppidum est? Nīlus nōn est oppidum.</li>
|
||||||
|
<li><span><input type="text" data-expected="Quid"/></span> est Nīlus? Nīlus fluvius est.</li>
|
||||||
|
<li>In Arabiā nōn multī, sed <span><input type="text" data-expected="paucī"/></span> fluviī sunt.</li>
|
||||||
|
<li>Quid est Gallia? Gallia est <span><input type="text" data-expected="prōvincia"/></span> Rōmāna.</li>
|
||||||
|
<li>In imperiō Rōmānō nōn paucae, sed <span><input type="text" data-expected="multae"/></span> prōvinciae sunt.</li>
|
||||||
|
<li>Magnum est <span><input type="text" data-expected="imperium"/></span> Rōmānum.</li>
|
||||||
|
</ol>
|
@ -0,0 +1,9 @@
|
|||||||
|
Latīnus|Graecus|littera|mīlle|numerus|prīmus|secundus|sex|syllaba|tertius|trēs|vocābulum-a|in -ā|-um|in -ō
|
||||||
|
III _numerus_ Rōmānus est. I et II _numerī_ _Rōmānī_ sunt.
|
||||||
|
<i>Nōn</i> _vocābulum_ Lātinum est. <i>Nōn</i> et <i>sed</i> _vocābula_ _Lātina_ sunt.
|
||||||
|
Γ _littera_ Graeca est. Γ et Δ _litterae_ _Graecae_ sunt.
|
||||||
|
A et B litterae _Latīnae_ sunt. C quoque _littera_ _Latīna_ est.
|
||||||
|
<i>In</i> et <i>num</i> _vocābula_ Latīna sunt. <i>Et</i> quoque _vocābulum_ _Latīnum_ est.
|
||||||
|
I et II _numerī_ sunt. III quoque _numerus_ est.
|
||||||
|
In vocābulo <i>Latīna</i> sunt _sex_ [VI] litterae et _trēs_ [III] _syllabae_: syllaba _prīma_ <i>La-</i>, _secunda_ <i>-tī-</i>, _tertia_ <i>-na</i>.
|
||||||
|
In _capitulō_ prīmō _mīlle_ [M] vocābula sunt.
|
@ -0,0 +1,11 @@
|
|||||||
|
volabula: Latīnus, Graecus, littera, mīlle, numerus, prīmus, secundus, sex, syllaba, tertius, trēs, vocābulum-a, in -ā, -um, in -ō
|
||||||
|
<br><ol>
|
||||||
|
<li>III <span><input type="text" data-expected="numerus"/></span> Rōmānus est. I et II <span><input type="text" data-expected="numerī"/></span> <span><input type="text" data-expected="Rōmānī"/></span> sunt.</li>
|
||||||
|
<li><i>Nōn</i> <span><input type="text" data-expected="vocābulum"/></span> Lātinum est. <i>Nōn</i> et <i>sed</i> <span><input type="text" data-expected="vocābula"/></span> <span><input type="text" data-expected="Lātina"/></span> sunt.</li>
|
||||||
|
<li>Γ <span><input type="text" data-expected="littera"/></span> Graeca est. Γ et Δ <span><input type="text" data-expected="litterae"/></span> <span><input type="text" data-expected="Graecae"/></span> sunt.</li>
|
||||||
|
<li>A et B litterae <span><input type="text" data-expected="Latīnae"/></span> sunt. C quoque <span><input type="text" data-expected="littera"/></span> <span><input type="text" data-expected="Latīna"/></span> est.</li>
|
||||||
|
<li><i>In</i> et <i>num</i> <span><input type="text" data-expected="vocābula"/></span> Latīna sunt. <i>Et</i> quoque <span><input type="text" data-expected="vocābulum"/></span> <span><input type="text" data-expected="Latīnum"/></span> est.</li>
|
||||||
|
<li>I et II <span><input type="text" data-expected="numerī"/></span> sunt. III quoque <span><input type="text" data-expected="numerus"/></span> est.</li>
|
||||||
|
<li>In vocābulo <i>Latīna</i> sunt <span><input type="text" data-expected="sex"/></span> [VI] litterae et <span><input type="text" data-expected="trēs"/></span> [III] <span><input type="text" data-expected="syllabae"/></span>: syllaba <span><input type="text" data-expected="prīma"/></span> <i>La-</i>, <span><input type="text" data-expected="secunda"/></span> <i>-tī-</i>, <span><input type="text" data-expected="tertia"/></span> <i>-na</i>.</li>
|
||||||
|
<li>In <span><input type="text" data-expected="capitulō"/></span> prīmō <span><input type="text" data-expected="mīlle"/></span> [M] vocābula sunt.</li>
|
||||||
|
</ol>
|
@ -5,91 +5,7 @@
|
|||||||
<title>{{pensum_title}}</title>
|
<title>{{pensum_title}}</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/LLPSI.css') }}">
|
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/LLPSI.css') }}">
|
||||||
<script type="text/javascript">
|
<script src="{{ url_for('static', filename='js/cloze.js') }}"></script>
|
||||||
function adjust_size() {
|
|
||||||
const exercitium = document.querySelector('.exercitium_content');
|
|
||||||
const inputs = exercitium.querySelectorAll('input');
|
|
||||||
inputs.forEach((input) => {
|
|
||||||
if (input.type=="text") {
|
|
||||||
input.setAttribute("value", "");
|
|
||||||
input.setAttribute("style", "width: " + input.dataset.expected.length + "em");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function nomacron_to_macron(char) {
|
|
||||||
var mapper = { 'A': 'Ā',
|
|
||||||
'a': 'ā',
|
|
||||||
'E': 'Ē',
|
|
||||||
'e': 'ē',
|
|
||||||
'I': 'Ī',
|
|
||||||
'i': 'ī',
|
|
||||||
'O': 'Ō',
|
|
||||||
'o': 'ō',
|
|
||||||
'U': 'Ū',
|
|
||||||
'u': 'ū'};
|
|
||||||
return mapper[char[0]];
|
|
||||||
}
|
|
||||||
|
|
||||||
function macron_to_nomacron(char) {
|
|
||||||
var mapper = { 'Ā': 'A',
|
|
||||||
'ā': 'a',
|
|
||||||
'Ē': 'E',
|
|
||||||
'ē': 'e',
|
|
||||||
'Ī': 'I',
|
|
||||||
'ī': 'i',
|
|
||||||
'Ō': 'O',
|
|
||||||
'ō': 'o',
|
|
||||||
'Ū': 'U',
|
|
||||||
'ū': 'u'};
|
|
||||||
return mapper[char];
|
|
||||||
}
|
|
||||||
|
|
||||||
function to_nonmacron(input) {
|
|
||||||
return input.replace(/Ā|ā|Ē|ē|Ī|ī/, macron_to_nomacron);
|
|
||||||
}
|
|
||||||
|
|
||||||
function to_macron(input) {
|
|
||||||
return input.replace(/(\w)\1/, nomacron_to_macron);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function validate() {
|
|
||||||
const exercitium = document.querySelector('.exercitium_content');
|
|
||||||
const inputs = exercitium.querySelectorAll('input');
|
|
||||||
|
|
||||||
inputs.forEach((input) => {
|
|
||||||
if (input.type == "text") {
|
|
||||||
is_nonmacron_ok = false;
|
|
||||||
is_macron_ok = false;
|
|
||||||
if (document.getElementById('vowel_length').checked == false) {
|
|
||||||
is_nonmacron_ok = (to_nonmacron(input.value) == to_nonmacron(input.dataset.expected));
|
|
||||||
} else {
|
|
||||||
is_macron_ok = (input.value == input.dataset.expected);
|
|
||||||
}
|
|
||||||
if (is_nonmacron_ok || is_macron_ok) {
|
|
||||||
input.setAttribute("class", "correct");
|
|
||||||
} else {
|
|
||||||
input.setAttribute("class", "incorrect");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function show_answers() {
|
|
||||||
const pensum = document.querySelector('.exercitium_content');
|
|
||||||
const inputs = pensum.querySelectorAll('input');
|
|
||||||
|
|
||||||
inputs.forEach((input) => {
|
|
||||||
if (input.type=="text") {
|
|
||||||
input.value = input.dataset.expected;
|
|
||||||
input.removeAttribute("class");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
@ -102,8 +18,8 @@
|
|||||||
<div class="exercitium_content">
|
<div class="exercitium_content">
|
||||||
<p>{{exercitium_content|safe}}</p>
|
<p>{{exercitium_content|safe}}</p>
|
||||||
<br>
|
<br>
|
||||||
<button title="Check answers" onclick="return validate();">Mitte</button><button title="Show correct answers" onclick="return show_answers();">Responsa</button>
|
<button title="Check answers" onclick="return validate('.exercitium_content');">Mitte</button><button title="Show correct answers" onclick="return show_answers('.exercitium_content');">Responsa</button>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">adjust_size();</script>
|
<script type="text/javascript">adjust_size('.exercitium_content');</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -5,91 +5,7 @@
|
|||||||
<title>{{pensum_title}}</title>
|
<title>{{pensum_title}}</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/LLPSI.css') }}">
|
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/LLPSI.css') }}">
|
||||||
<script type="text/javascript">
|
<script src="{{ url_for('static', filename='js/cloze.js') }}"></script>
|
||||||
function adjust_size() {
|
|
||||||
const pensum = document.querySelector('.pensum_content');
|
|
||||||
const inputs = pensum.querySelectorAll('input');
|
|
||||||
inputs.forEach((input) => {
|
|
||||||
if (input.type=="text") {
|
|
||||||
input.setAttribute("value", "");
|
|
||||||
input.setAttribute("style", "width: " + input.dataset.expected.length + "em");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function nomacron_to_macron(char) {
|
|
||||||
var mapper = { 'A': 'Ā',
|
|
||||||
'a': 'ā',
|
|
||||||
'E': 'Ē',
|
|
||||||
'e': 'ē',
|
|
||||||
'I': 'Ī',
|
|
||||||
'i': 'ī',
|
|
||||||
'O': 'Ō',
|
|
||||||
'o': 'ō',
|
|
||||||
'U': 'Ū',
|
|
||||||
'u': 'ū'};
|
|
||||||
return mapper[char[0]];
|
|
||||||
}
|
|
||||||
|
|
||||||
function macron_to_nomacron(char) {
|
|
||||||
var mapper = { 'Ā': 'A',
|
|
||||||
'ā': 'a',
|
|
||||||
'Ē': 'E',
|
|
||||||
'ē': 'e',
|
|
||||||
'Ī': 'I',
|
|
||||||
'ī': 'i',
|
|
||||||
'Ō': 'O',
|
|
||||||
'ō': 'o',
|
|
||||||
'Ū': 'U',
|
|
||||||
'ū': 'u'};
|
|
||||||
return mapper[char];
|
|
||||||
}
|
|
||||||
|
|
||||||
function to_nonmacron(input) {
|
|
||||||
return input.replace(/Ā|ā|Ē|ē|Ī|ī/, macron_to_nomacron);
|
|
||||||
}
|
|
||||||
|
|
||||||
function to_macron(input) {
|
|
||||||
return input.replace(/(\w)\1/, nomacron_to_macron);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function validate() {
|
|
||||||
const pensum = document.querySelector('.pensum_content');
|
|
||||||
const inputs = pensum.querySelectorAll('input');
|
|
||||||
|
|
||||||
inputs.forEach((input) => {
|
|
||||||
if (input.type == "text") {
|
|
||||||
is_nonmacron_ok = false;
|
|
||||||
is_macron_ok = false;
|
|
||||||
if (document.getElementById('vowel_length').checked == false) {
|
|
||||||
is_nonmacron_ok = (to_nonmacron(input.value) == to_nonmacron(input.dataset.expected));
|
|
||||||
} else {
|
|
||||||
is_macron_ok = (input.value == input.dataset.expected);
|
|
||||||
}
|
|
||||||
if (is_nonmacron_ok || is_macron_ok) {
|
|
||||||
input.setAttribute("class", "correct");
|
|
||||||
} else {
|
|
||||||
input.setAttribute("class", "incorrect");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function show_answers() {
|
|
||||||
const pensum = document.querySelector('.pensum_content');
|
|
||||||
const inputs = pensum.querySelectorAll('input');
|
|
||||||
|
|
||||||
inputs.forEach((input) => {
|
|
||||||
if (input.type=="text") {
|
|
||||||
input.value = input.dataset.expected;
|
|
||||||
input.removeAttribute("class");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
@ -102,8 +18,8 @@
|
|||||||
<div class="pensum_content">
|
<div class="pensum_content">
|
||||||
<p>{{pensum_content|safe}}</p>
|
<p>{{pensum_content|safe}}</p>
|
||||||
<br>
|
<br>
|
||||||
<button title="Check answers" onclick="return validate();">Mitte</button><button title="Show correct answers" onclick="return show_answers();">Responsa</button>
|
<button title="Check answers" onclick="return validate('.pensum_content');">Mitte</button><button title="Show correct answers" onclick="return show_answers('.pensum_content');">Responsa</button>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">adjust_size();</script>
|
<script type="text/javascript">adjust_size('.pensum_content');</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue
Block a user