Actualización

This commit is contained in:
Xes
2025-04-10 12:36:07 +02:00
parent 1da7c3f3b9
commit 4aff98e77b
3147 changed files with 320647 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 225">
<defs>
<style>
.cls-1 {
fill: #9a5bb4;
}
.cls-2 {
opacity: 0.15;
}
.cls-3 {
fill: #231f20;
}
.cls-4 {
fill: #fff;
}
.cls-5 {
fill: #79aad3;
}
.cls-6 {
fill: #b0afad;
}
.cls-7 {
fill: none;
}
</style>
</defs>
<title>mark the words</title>
<g id="Layer_2" data-name="Layer 2">
<g id="mark_the_words" data-name="mark the words">
<g>
<rect class="cls-1" x="134.44" y="26.71" width="139.13" height="173.57"/>
<g>
<g class="cls-2">
<rect class="cls-3" x="150.44" y="43.38" width="112.94" height="146.07"/>
</g>
<rect class="cls-4" x="147.53" y="40.46" width="112.94" height="146.07"/>
</g>
<path class="cls-5" d="M200.13,75.11H174.58a1.17,1.17,0,0,1-1.17-1.17V69.28a1.35,1.35,0,0,1,1.17-1.36h25.56a1.35,1.35,0,0,1,1.17,1.36v4.66A1.17,1.17,0,0,1,200.13,75.11Z"/>
<path class="cls-6" d="M168.44,75.11h-6.58a1.17,1.17,0,0,1-1.17-1.17V69.28a1.35,1.35,0,0,1,1.17-1.36h6.58a1.35,1.35,0,0,1,1.17,1.36v4.66A1.17,1.17,0,0,1,168.44,75.11Z"/>
<path class="cls-6" d="M220.13,75.11H206.41a1.17,1.17,0,0,1-1.17-1.17V69.28a1.35,1.35,0,0,1,1.17-1.36h13.73a1.35,1.35,0,0,1,1.17,1.36v4.66A1.17,1.17,0,0,1,220.13,75.11Z"/>
<path class="cls-6" d="M248.56,75.11H226.88a1.17,1.17,0,0,1-1.17-1.17V69.28a1.35,1.35,0,0,1,1.17-1.36h21.68a1.35,1.35,0,0,1,1.17,1.36v4.66A1.17,1.17,0,0,1,248.56,75.11Z"/>
<rect class="cls-6" x="160.69" y="89.46" width="12.72" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="176.87" y="89.46" width="9.94" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="211.36" y="89.46" width="19.68" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="234.61" y="89.46" width="7.56" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-5" x="190.31" y="89.46" width="16.9" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="223.33" y="111" width="9.94" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="160.69" y="111" width="15.12" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="179.58" y="111" width="39.68" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="160.69" y="132.53" width="8.92" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="187.92" y="132.53" width="13.94" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="205.79" y="132.53" width="24.19" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="233.55" y="132.53" width="14.02" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-5" x="173.41" y="132.53" width="10.99" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="160.69" y="154.07" width="23.71" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-6" x="187.76" y="154.07" width="5.07" height="7.19" rx="1.17" ry="1.17"/>
<rect class="cls-5" x="195.92" y="154.07" width="29.79" height="7.19" rx="1.17" ry="1.17"/>
</g>
<rect class="cls-7" width="400" height="225"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "وصف النشاط",
"description": "وصف الكيفية التي ينبغي للمستخدم حل النشاط",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "الحقل النصي",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "شفافية خلفية العناصر",
"fields": [
{
"widgets": [
{
"label": "الافتراضي"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "النص ل \"تحقق \" الزر",
"default": "Check"
},
{
"label": "النص ل \"إعادة المحاولة \" الزر",
"default": "إعادة المحاولة"
},
{
"label": "النص \"مشاهدة الحل \" لزر",
"default": "مشاهدة الحل"
},
{
"label": "إعدادت النشاط",
"description": "وهذه الخيارات تمكنك من التحكم في كيفية سلوك هذا النشاط",
"fields": [
{
"label": "تمكين \"إعادة المحاولة \""
},
{
"label": "تمكين زر \"مشاهدة الحل\""
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "نص الجواب الصحيح",
"default": "صحيح!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "نص الجواب غير صحيح",
"default": "غير صحيح!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "غاب نص الجواب",
"default": "افتقد!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "وصف لعرض الحل",
"default": "يتم تحديث مهمة لاحتواء الحل.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Описание на задачата",
"description": "Опишете как потребителя трябва да реши задачата.",
"placeholder": "Щракнете с мишката върху всички глаголи в текста, който следва."
},
{
"label": "Текстово поле",
"placeholder": "Това е отговора: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Маркираните думи са добавени със звездичка (*).</li><li>Звездички могат да бъдат добавени в маркираните думи, като се добави друга звездичка, *correctword*** => correctword*.</li></ul>",
"example": "Правилните думи са маркирани така: *correctword*, звездичката е отбелязана така: *correctword***."
}
},
{
"label": "Обща обратна връзка",
"fields": [
{
"widgets": [
{
"label": "По подразбиране"
}
],
"label": "Персонална обратна връзка за всеки диапазон от точки",
"description": "Натиснете бутон \"Добави диапазон\", за да добавите необходимите полета за диапазони. Пример: 0-20% Слаб резултат, 21-91% Среден резултат, 91-100% Отличен резултат!",
"entity": "диапазон",
"field": {
"fields": [
{
"label": "Диапазон на резултата"
},
{},
{
"label": "Обратна връзка за дефиниран диапазон на резултата",
"placeholder": "Въведете обратна връзка"
}
]
}
}
]
},
{
"label": "Текст за бутон \"Провери\" ",
"default": "Провери"
},
{
"label": "Текст за бутон \"Опитай пак\" ",
"default": "Опитай пак"
},
{
"label": "Текст за бутон\"Покажи решение\" ",
"default": "Покажи решение"
},
{
"label": "Настройки за поведение",
"description": "Тези настройки позволяват да контролирате поведението на задачата.",
"fields": [
{
"label": "Разреши бутон \"Опитай пак\" "
},
{
"label": "Разреши бутон \"Покажи решение\" "
},
{
"label": "Разреши бутон \"Провери\" "
},
{
"label": "Показване на точките",
"description": "Показва получените точки за всеки отговор."
}
]
},
{
"label": "Текст за верен отговор",
"default": "Вярно!",
"description": "Текстът ще показва, че отговорът е верен"
},
{
"label": "Текст за грешен отговор",
"default": "Грешно!",
"description": "Текстът ще показва, че отговорът е грешен"
},
{
"label": "Текст за липсващ отговор",
"default": "Липсва отговор!",
"description": "Текстът ще показва, че отговорът липсва"
},
{
"label": "Описание за Покажи решение",
"default": "Задачата е обновена, за да съдържа решението.",
"description": "Този текст казва на ученика, че задачите са обновени, за да се види решението."
},
{
"label": "Текстово представяне на лентата с резултати за тези, които използват readspeaker",
"default": "Вие имате :num от общо :total точки"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Opis zadatka",
"description": "Describe how the user should solve the task.",
"placeholder": "Klikni na sve glagole u tekstu koji slijedi."
},
{
"label": "Textfield",
"placeholder": "Ovo je odgovor: *answer*.",
"description": "",
"important": {
"description": "<ul><li> Označene riječi su dadate sa znakom (*).</li><li>Znakovi mogu biti dodati unutar označenih riječi dodavanjem novog znaka, *tačnariječ*** => tačnariječ*.</li></ul>",
"example": "Tačne riječi su označene ovako: *tačnariječ*, znak je napisan ovako: *tačnariječ***."
}
},
{
"label": "Pozadinska zamućenost za elemente za uzimanje",
"fields": [
{
"widgets": [
{
"label": "Standard"
}
],
"label": "Define custom feedback for any score range",
"description": "Kliknite na dugme \"Dodaj raspon\" da dodate onoliko raspona koliko vam je potrebno.Primjer: 0-20% loš rezultat, 21-91% srednji rezultat, 91-100% Sjajan rezultat!",
"entity": "raspon",
"field": {
"fields": [
{
"label": "Raspon rezultata"
},
{},
{
"label": "Feedback za definirani raspon rezultata",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Oznaka za dugme \"Provjeri\"",
"default": "Provjeri"
},
{
"label": "Oznaka za dugme \"Ponovi\"",
"default": "Ponovi"
},
{
"label": "Text for \"Show solution\" button",
"default": "Prikaži rješenje"
},
{
"label": "Podešavanje ponašanja.",
"description": "Diese Optionen kontrollieren, wie sich die Aufgabe verhält.",
"fields": [
{
"label": "Omogući \"Ponovi\" dugme"
},
{
"label": "Omogući \"Prikaži rješenje\" dugme"
},
{
"label": "Omogući \"Provjeri\" dugme"
},
{
"label": "Prikaži poene",
"description": "Prikaži zarađene poene za svaki odgovor."
}
]
},
{
"label": "Tekst za tačan odgovor",
"default": "Tačno!!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Netačno!!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Odgovor nije pronađen!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Zadatak je ažuriran kako bi imao rješenje.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "Osvojili ste :num od :total poena"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Cijeli čitljiv tekst"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Cijeli teskt gdje se mogu riječi označiti."
},
{
"label": "Solution mode header for assistive technologies",
"default": "Mod za rješenje"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Mod provjere"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Per defecte"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text pel botó \"Verificar\"",
"default": "Verificar"
},
{
"label": "Text pel botó \"Tornar-ho a provar\"",
"default": "Tornar-ho a provar"
},
{
"label": "Text pel botó \"Mostrar solució\"",
"default": "Mostrar solució"
},
{
"label": "Behavioural settings.",
"description": "Aquestes opcions et permetran controlar com es comporta la tasca.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Popis úlohy",
"description": "Popište, jak by měl uživatel úlohu vyřešit.",
"placeholder": "Klikněte na všechna slovesa v následujícím textu."
},
{
"label": "Textové pole",
"placeholder": "To je odpověď: *odpověď*.",
"description": "",
"important": {
"description": "<ul><li>Označená slova jsou přidána s hvězdičkou (*).</li><li>Hvězdičky lze přidat do označených slov přidáním další hvězdičky, *správnéslovo*** => správnéslovo*.</li></ul>",
"example": "Správná slova jsou takto označena: *správnéslovo*, takto je napsána hvězdička: *správnéslovo***."
}
},
{
"label": "Celková zpětná vazba",
"fields": [
{
"widgets": [
{
"label": "Výchozí"
}
],
"label": "Definujte vlastní zpětnou vazbu pro libovolný rozsah skóre",
"description": "Klikněte na tlačítko \"Přidat rozsah\" pro přidání tolika rozsahů, kolik potřebujete. Například: 0-20% špatný výsledek, 21-91% průměrný výsledek, 91-100% výborný výsledek!",
"entity": "rozsah",
"field": {
"fields": [
{
"label": "Rozsah skóre"
},
{},
{
"label": "Zpětná vazba pro definovaný rozsah skóre",
"placeholder": "Vyplňte ve zpětné vazbě"
}
]
}
}
]
},
{
"label": "Text tlačítka \"Zkontrolovat\" ",
"default": "Zkontrolovat"
},
{
"label": "Text tlačítka \"Opakovat\" ",
"default": "Opakovat"
},
{
"label": "Text tlačítka \"Zobrazit řešení\" ",
"default": "Zobrazit řešení"
},
{
"label": "Nastavení chování.",
"description": "Tyto možnosti vám umožní řídit, jak se bude úloha chovat.",
"fields": [
{
"label": "Povolit tlačítko \"Opakovat\""
},
{
"label": "Povolit tlačítko \"Zobrazit řešení\" "
},
{
"label": "Povolit tlačítko \"Zkontrolovat\" "
},
{
"label": "Zobrazit body",
"description": "Zobrazit body získané za každou odpověď."
}
]
},
{
"label": "Text správné odpovědi",
"default": "Správně!",
"description": "Text používaný k označení správnosti odpovědi"
},
{
"label": "Text nesprávné odpovědi",
"default": "Nesprávně!",
"description": "Text používaný k označení nesprávnosti odpovědi"
},
{
"label": "Chybějící text odpovědi",
"default": "Odpověď nebyla nalezena!",
"description": "Text používaný k označení, že chybí odpověď"
},
{
"label": "Popis pro zobrazení řešení",
"default": "Úloha je aktualizována tak, aby obsahovala řešení.",
"description": "Tento text říká uživateli, že úkoly byly řešením aktualizovány."
},
{
"label": "Textové znázornění výsledkové lišty pro ty, kteří používají čtecí zařízení",
"default": "Získal jste :num z :total bodů"
},
{
"label": "Popisek pro plně čitelný text pro pomocné technologie",
"default": "Plně čitelný text"
},
{
"label": "Popisek pro text, kde lze označit slova pro pomocné technologie",
"default": "Celý text, kde slova lze označit"
},
{
"label": "Záhlaví režimu řešení pro pomocné technologie",
"default": "Režim řešení"
},
{
"label": "Záhlaví kontrolního režimu pro pomocné technologie",
"default": "Kontrolní režim"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Aufgabenbeschreibung",
"description": "Beschreibung, wie die Lernenden die Aufgabe lösen sollten. Wird über dem Medium angezeigt.",
"placeholder": "Klicke auf alle Verben im folgenden Text."
},
{
"label": "Textfeld",
"placeholder": "Das ist eine Antwort: *Antwort*.",
"description": "",
"important": {
"description": "<ul><li>Die zu findenden Wörter werden mit einem Sternchen (*) markiert.</li><li>Soll in einem zu findenden Wort ein Sternchen verwendet werden, gibt man ** ein.</li></ul>",
"example": "Richtige Wörter werden wie folgt markiert: *richtigeswort*. Ein Sternchen in einem richtigen Wort auf diese Weise: *richtiges**Wort*."
}
},
{
"label": "Gesamtrückmeldung",
"fields": [
{
"widgets": [
{
"label": "Eingabemaske"
}
],
"label": "Lege Rückmeldungen für einzelne Punktebereiche fest",
"description": "Klicke auf den \"Bereich hinzufügen\"-Button, um so viele Bereiche hinzuzufügen, wie du brauchst. Beispiel: 0-20% Schlechte Punktzahl, 21-91% Durchschnittliche Punktzahl, 91-100% Großartige Punktzahl!",
"entity": "Bereich",
"field": {
"fields": [
{
"label": "Punktebereich"
},
{},
{
"label": "Rückmeldung für jeweiligen Punktebereich",
"placeholder": "Trage die Rückmeldung ein"
}
]
}
}
]
},
{
"label": "Beschriftung des \"Überprüfen\"-Buttons",
"default": "Überprüfen"
},
{
"label": "Beschriftung des \"Wiederholen\"-Buttons",
"default": "Wiederholen"
},
{
"label": "Beschriftung des \"Lösung anzeigen\"-Buttons",
"default": "Lösung anzeigen"
},
{
"label": "Verhaltenseinstellungen",
"description": "Diese Optionen legen fest, wie die Aufgabe im Detail funktioniert.",
"fields": [
{
"label": "\"Wiederholen\" zulassen"
},
{
"label": "\"Lösung anzeigen\" ermöglichen"
},
{
"label": "\"Überprüfen\"-Button anzeigen"
},
{
"label": "Bepunktungsdetails anzeigen",
"description": "Zeigt die für jede Antwort vergebenen Punkte an."
}
]
},
{
"label": "Text für richtige Antworten",
"default": "Richtig!",
"description": "Mit diesem Text wird angezeigt, dass die Antwort richtig war."
},
{
"label": "Text für falsche Antworten",
"default": "Falsch!",
"description": "Mit diesem Text wird angezeigt, dass die Antwort falsch war."
},
{
"label": "Text für übergangene Antworten",
"default": "Nicht gefunden!",
"description": "Mit diesem Text wird angezeigt, dass das Wort hätte ausgewählt werden sollen."
},
{
"label": "Nachricht, wenn die Lösung angezeigt wird",
"default": "Die Lösungen sind nun im Text markiert.",
"description": "Mit diesem Text wird angezeigt, dass nun die richtigen Lösungen angezeigt werden."
},
{
"label": "Anzeigetext für Vorlesewerkzeuge (Barrierefreiheit). :num wird durch die erreichten Punkte ersetzt. :total wird durch die maximal mögliche Punktzahl ersetzt.",
"default": "Du hast :num von :total Punkten erreicht."
},
{
"label": "Hinweis für den gesamten lesbaren Text für Vorlesewerkzeuge",
"default": "Gesamter lesbarer Text"
},
{
"label": "Hinweis auf den gesamten Text, wo Wörter markiert werden können für Vorlesewerkzeuge",
"default": "Gesamter Text, wo Wörter markiert werden können"
},
{
"label": "Überschrift des Lösungsmodus (Barrierefreiheit)",
"default": "Lösungsmodus"
},
{
"label": "Überschrift des Antworten-Überprüfen-Modus (Barrierefreiheit)",
"default": "Antworten überprüfen-Modus"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Περιγραφή άσκησης",
"description": "Περιγράψτε πώς θα λύσει ο χρήστης την άσκηση.",
"placeholder": "Κάνε κλικ σε όλα τα ρήματα στο κείμενο που ακολουθεί."
},
{
"label": "Πεδίο κειμένου",
"placeholder": "Αυτή είναι μια απάντηση: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Οι σημειωμένες λέξεις προστίθενται με έναν αστερίσκο. (*).</li><li>Αν χρειάζεται να χρησιμοποιήσετε τον αστερίσκο για άλλο λόγο, ορίστε δύο αστερίσκους στη σειρά, δηλαδή ** = *.</li></ul>",
"example": "Οι σωστές λέξεις σημειώνονται έτσι: *σωστηλέξη*, ένα αστερίσκος προστίθεται ως εξής: *σωστηλέξη***."
}
},
{
"label": "Συνολική ανατροφοδότηση",
"fields": [
{
"widgets": [
{
"label": "Βασικό"
}
],
"label": "Χαρακτηρισμός κάθε κλίμακας βαθμολογίας",
"description": "Κάντε κλικ στο κουμπί \"Προσθήκη κλίμακας\" για να προσθέσετε όσες κλίμακες ή διαβαθμίσεις επιθυμείτε. Παράδειγμα: 0-20% Χαμηλή βαθμολογία, 21-91% Μέτρια βαθμολογία, 91-100% Εξαιρετική βαθμολογία!",
"entity": "κλιμακας",
"field": {
"fields": [
{
"label": "Βαθμολογία"
},
{},
{
"label": "Χαρακτηρισμός",
"placeholder": "Συμπληρώστε τον χαρακτηρισμό"
}
]
}
}
]
},
{
"label": "Ετικέτα κουμπιού \"Έλεγχος\"",
"default": "Έλεγχος"
},
{
"label": "Ετικέτα κουμπιού \"Επανάληψη\"",
"default": "Επανάληψη"
},
{
"label": "Ετικέτα κουμπιού \"Λύση\"",
"default": "Λύση"
},
{
"label": "Ρυθμίσεις άσκησης",
"description": "Αυτές οι ρυθμίσεις σας επιτρέπουν να καθορίσετε τον τρόπο λειτουργίας της άσκησης.",
"fields": [
{
"label": "Ενεργοποίηση κουμπιού \"Επανάληψη\""
},
{
"label": "Ενεργοποίηση κουμπιού \"Λύση\""
},
{
"label": "Ενεργοποίηση κουμπιού \"Έλεγχος\""
},
{
"label": "Εμφάνιση βαθμολογίας",
"description": "Εμφάνιση βαθμών που κερδίζει ο χρήστης για κάθε απάντηση."
}
]
},
{
"label": "Κείμενο για σωστή απάντηση",
"default": "Σωστό!",
"description": "Κείμενο που χρησιμοποιείται για να δηλώσει ότι μια απάντηση είναι σωστή"
},
{
"label": "Κείμενο για λάθος απάντηση",
"default": "Λάθος!",
"description": "Κείμενο που χρησιμοποιείται για να δηλώσει ότι μια απάντηση είναι λάθος"
},
{
"label": "Κείμενο για απάντηση που λείπει",
"default": "Δεν απαντήθηκε!",
"description": "Κείμενο που χρησιμοποιείται για να δηλώσει ότι μια απάντηση λείπει"
},
{
"label": "Περιγραφή για \"Εμφάνιση Λύσης\"",
"default": "Η άσκηση ενημερώνεται ώστε να περιέχει τη λύση.",
"description": "Αυτό το κείμενο ενημερώνει τον χρήστη ότι οι ασκήσεις εμφανίζουν πλέον και τη λύση."
},
{
"label": "Κειμενική απόδοση της μπάρας βαθμολογίας για όσους χρησιμοποιούν ακουστική υποβοήθηση",
"default": "Έχεις :num από :total βαθμούς"
},
{
"label": "Ετικέτα πλήρως αναγνώσιμου κειμένου για υποστηρικτικές τεχνολογίες",
"default": "Πλήρως αναγνώσιμο κείμενο"
},
{
"label": "Ετικέτα κειμένου με λέξεις που μπορούν να σημειωθούν για υποστηρικτικές τεχνολογίες",
"default": "Πλήρες κείμενο με λέξεις που μπορούν να σημειωθούν"
},
{
"label": "Ετικέτα \"κατάστασης λύσης\" για υποστηρικτικές τεχνολογίες",
"default": "Κατάσταση λύσης"
},
{
"label": "Ετικέτα \"κατάστασης ελέγχου\" για υποστηρικτικές τεχνολογίες",
"default": "Κατάσταση ελέγχου"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Descripción de la tarea",
"description": "Describe cómo el usuario debería resolver la tarea.",
"placeholder": "Haga clic en todos los verbos en el texto que sigue."
},
{
"label": "Campo de texto",
"placeholder": "Esta es una respuesta: *respuesta*.",
"description": "",
"important": {
"description": "<ul><li>Las palabras marcadas se agregan con un asterisco (*).</li><li>Los asteriscos úeden añadirse dentro de las palabras marcadas al añadir otro asterisco, lo que resulta en *palabracorreecta*** =>palabracorrecta*.</li></ul>",
"example": "Las palabras correctas están marcadas así: *palabracorrecta*, un asterisco está escrito así: *palabracorrecta***."
}
},
{
"label": "Comentarios generales",
"fields": [
{
"widgets": [
{
"label": "Predeterminado"
}
],
"label": "Definir comentarios personalizados para cualquier rango de puntuación",
"description": "Haga clic en el \"Añadir rango\" para agregar tantos rangos como necesite. Ejemplo: 0-20% puntaje malo, 21-91% puntaje promedio, 91-100% puntaje excelente!",
"entity": "rango",
"field": {
"fields": [
{
"label": "Rango de puntuación"
},
{},
{
"label": "Retroalimentación para el rango de puntuación definido",
"placeholder": "Complete los comentarios"
}
]
}
}
]
},
{
"label": "Texto para el botón \"Comprobar\"",
"default": "Comprobar"
},
{
"label": "Texto para el botón \"Reintentar\"",
"default": "Reintentar"
},
{
"label": "Texto para el botón \"Mostrar Solución\"",
"default": "Mostrar Solución"
},
{
"label": "Configuraciones de comportamiento.",
"description": "Estas opciones te permitirán controlar cómo se comporta la tarea.",
"fields": [
{
"label": "Habilitar \"Reintentar\""
},
{
"label": "Habilitar el botón \"Mostrar Solución\""
},
{
"label": "Habilitar el botón \"Comprobar\""
},
{
"label": "Mostrar el puntaje",
"description": "Mostrar los puntos obtenidos por cada respuesta."
}
]
},
{
"label": "Corregir el texto de respuesta",
"default": "¡Correcto!",
"description": "Texto utilizado para indicar que una respuesta es correcta"
},
{
"label": "Texto de respuesta incorrecta",
"default": "¡Incorrecto!",
"description": "Texto utilizado para indicar que una respuesta es incorrecta"
},
{
"label": "Texto de respuesta faltante",
"default": "¡Falta!",
"description": "Texto utilizado para indicar que falta una respuesta"
},
{
"label": "Descripción para la pantalla de solución",
"default": "La tarea se ha actualizado con la solución.",
"description": "Este texto le dice al usuario que las tareas se han actualizado con la solución."
},
{
"label": "Representación textual de la barra de puntaje para aquellos que usan un revisor",
"default": "Tienes :num :puntos"
},
{
"label": "Etiqueta para el texto completo legible para tecnologías asistidas",
"default": "Texto completo legible"
},
{
"label": "Etiqueta para el texto donde las palabras pueden ser marcadas para tecnologías asitivas",
"default": "Texto completo donde las palabras pueden ser marcadas"
},
{
"label": "Encabezado de modo solución para tecnologías asistivas",
"default": "Modo Solución"
},
{
"label": "Encabezado de modo revisión para tecnologías asistivas",
"default": "Modo Revisión"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Descripción de la tarea",
"description": "Describe cómo el usuario debería resolver la tarea.",
"placeholder": "Haga clic en todos los verbos en el texto que sigue."
},
{
"label": "Campo de texto",
"placeholder": "Esta es una respuesta: *respuesta*.",
"description": "",
"important": {
"description": "<ul><li>Las palabras marcadas se agregan con un asterisco (*).</li><li>Los asteriscos úeden añadirse dentro de las palabras marcadas al añadir otro asterisco, lo que resulta en *palabracorreecta*** =>palabracorrecta*.</li></ul>",
"example": "Las palabras correctas están marcadas así: *palabracorrecta*, un asterisco está escrito así: *palabracorrecta***."
}
},
{
"label": "Comentarios generales",
"fields": [
{
"widgets": [
{
"label": "Predeterminado"
}
],
"label": "Definir comentarios personalizados para cualquier rango de puntuación",
"description": "Haga clic en el \"Adherir rango\" para agregar tantos rangos como necesites. Ejemplo: 0-20% puntaje malo, 21-91% puntaje promedio, 91-100% puntaje excelente!",
"entity": "rango",
"field": {
"fields": [
{
"label": "Rango de puntuación"
},
{},
{
"label": "Comentarios para el rango de puntuación definido",
"placeholder": "Complete los comentarios"
}
]
}
}
]
},
{
"label": "Texto para el botón \"Comprobar\"",
"default": "Comprobar"
},
{
"label": "Texto para el botón \"Reintentar\"",
"default": "Reintentar"
},
{
"label": "Texto para el botón \"Mostrar Solución\"",
"default": "Mostrar Solución"
},
{
"label": "Configuraciones de comportamiento.",
"description": "Estas opciones te permitirán controlar cómo se comporta la tarea.",
"fields": [
{
"label": "Habilitar \"Reintentar\""
},
{
"label": "Habilitar el botón \"Mostrar Solución\""
},
{
"label": "Habilitar el botón \"Comprobar\""
},
{
"label": "Mostrar el puntaje",
"description": "Mostrar los puntos obtenidos por cada respuesta."
}
]
},
{
"label": "Corregir el texto de respuesta",
"default": "¡Correcto!",
"description": "Texto utilizado para indicar que una respuesta es correcta"
},
{
"label": "Texto de respuesta incorrecta",
"default": "¡Incorrecto!",
"description": "Texto utilizado para indicar que una respuesta es incorrecta"
},
{
"label": "Texto de respuesta faltante",
"default": "¡Falta!",
"description": "Texto utilizado para indicar que falta una respuesta"
},
{
"label": "Descripción para la pantalla de solución",
"default": "La tarea se ha actualizado con la solución.",
"description": "Este texto le dice al usuario que las tareas se han actualizado con la solución."
},
{
"label": "Representación textual de la barra de puntaje para aquellos que usan un revisor",
"default": "Tienes :num :puntos"
},
{
"label": "Etiqueta para el texto completo legible para tecnologías asistidas",
"default": "Texto completo legible"
},
{
"label": "Etiqueta para el texto donde las palabras pueden ser marcadas para tecnologías asitivas",
"default": "Texto completo donde las palabras pueden ser marcadas"
},
{
"label": "Encabezado de modo solución para tecnologías asistivas",
"default": "Modo Solución"
},
{
"label": "Encabezado de modo revisión para tecnologías asistivas",
"default": "Modo Revisión"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Ülesande kirjeldus",
"description": "Kirjelda, kuidas kasutaja peaks ülesande lahendama.",
"placeholder": "Kliki järgnevas tekstis kõigile tegusõnadele."
},
{
"label": "Tekstiväli",
"placeholder": "See on vastus: *vastus*.",
"description": "",
"important": {
"description": "<ul><li>Märgitud sõnad lisatakse tärni (*) kasutades.</li><li>Tärni lisamiseks kasuta topelt-tärni ** = *.</li></ul>",
"example": "Õiged sõnad märgitakse nii: *õigesõna*, tärn lisataksenii: *õigesõna***."
}
},
{
"label": "Üldine tagasiside",
"fields": [
{
"widgets": [
{
"label": "Vaikimisi"
}
],
"label": "Määratle kohandatud tagasiside igale punktisumma vahemikule",
"description": "Kliki \"Lisa vahemik\" nupule vajalike vahemike lisamiseks. Näiteks: 0-20% halb tulemus, 21-91% keskmine tulemus, 91-100% suurepärane tulemus!",
"entity": "vahemik",
"field": {
"fields": [
{
"label": "Punktisumma vahemik"
},
{},
{
"label": "Tagasiside määratletud punktisumma vahemikule",
"placeholder": "Sisesta tagasiside"
}
]
}
}
]
},
{
"label": "\"Kontrolli\" nupu tekst",
"default": "Kontrolli"
},
{
"label": "\"Proovi uuesti\" nupu tekst",
"default": "Proovi uuesti"
},
{
"label": "\"Näita lahendust\" nupu tekst",
"default": "Näita lahendust"
},
{
"label": "Käitumisseaded.",
"description": "Nende valikutega saad määrata ülesande käitumise.",
"fields": [
{
"label": "Luba \"Proovi uuesti\" nupp"
},
{
"label": "Luba \"Näita lahendust\" nupp"
},
{
"label": "Luba \"Kontrolli\" nupp"
},
{
"label": "Näita punktisumma tulemus",
"description": "Iga vastusega teenitud punktid."
}
]
},
{
"label": "Õige vastuse tekst",
"default": "Õige!",
"description": "Õigele vastusele osutav tekst"
},
{
"label": "Vale vastuse tekst",
"default": "Vale!",
"description": "Valele vastusele osutav tekst"
},
{
"label": "Täitmata vastuse tekst",
"default": "Puudu!",
"description": "Puuduvale vastusele osutav tekst"
},
{
"label": "Näita lahendust kirjeldus",
"default": "Ülesanne on uuendatud ja sisaldab nüüd lahendust.",
"description": "See tekst teatab kasutajale, et ülesandele on lisatud lahendus."
},
{
"label": "Punktisumma riba tekstiline esitus tekstilugeri kasutajaile",
"default": "Sa said :num punkti :total punktist"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Zereginaren deskribapena",
"description": "Deskribatu zereginaren irtenbidea aurkitzeko modua.",
"placeholder": "Klik egin ondoko testuaren aditz guztietan."
},
{
"label": "Testu eremua",
"placeholder": "Hau erantzun bat da: *erantzuna*.",
"description": "",
"important": {
"description": "<ul><li>Markatutako hitzak izartxo batekin (*) eransten dira.</li><li>Markatutako hitzetan izartxo bat erantsi nahi bada bigarren izartxo bat erantsi behar da, *correctword*** => correctword*.</li></ul>",
"example": "Hitz zuzenak honela markatu behar dira: *hitz-zuzena*, izartxo bat honela \" behar da: *hitz-zuzena***."
}
},
{
"label": "Feedback orokorra",
"fields": [
{
"widgets": [
{
"label": "Lehenetsia"
}
],
"label": "Definitu puntuaketa tarte jakin baterako feedbacka",
"description": "Klik egin \"Erantsi tartea\" botoian behar dituzun tarteak eransteko. Adibidez: %0-20 Puntuazio kaskarra, %21-91 Puntuazio normala, %91-100 Puntuazio bikaina!",
"entity": "tartea",
"field": {
"fields": [
{
"label": "Puntuazio tartea"
},
{},
{
"label": "Definitutako puntuazio tarterako feedbacka",
"placeholder": "Bete feedbacka"
}
]
}
}
]
},
{
"label": "\"Egiaztatu\" botoiarentzako testua",
"default": "Egiaztatu"
},
{
"label": "\"Saiatu berriro\" botoiarentzako testua",
"default": "Saiatu berriro"
},
{
"label": "\"Erakutsi soluzioa\" botoiarentzako testua",
"default": "Erakutsi soluzioa"
},
{
"label": "Portaera-ezarpenak.",
"description": "Aukera hauen bidez kontrolatu ahal izango duzu zereginaren portaera.",
"fields": [
{
"label": "Gaitu \"Saiatu berriro\""
},
{
"label": "Gaitu \"Erakutsi soluzioa\" botoia"
},
{
"label": "Gaitu \"Egiaztatu\" botoia"
},
{
"label": "Erakutsi puntuazioa",
"description": "Erakutsi erantzun bakoitzean lortutako puntuazioa."
}
]
},
{
"label": "Erantzun zuzenaren testua",
"default": "Zuzena!",
"description": "Erantzuna zuzena dela adierazteko testua"
},
{
"label": "Erantzun okerraren testua",
"default": "Erantzun okerra!",
"description": "Erantzuna okerra dela adierazteko testua"
},
{
"label": "Falta diren erantzunentzako testua",
"default": "Falta da!",
"description": "Erantzuna falta dela adierazteko testua"
},
{
"label": "Erakutsi soluzioarentzako deskribapena",
"default": "Zeregina eguneratzen da soluzioa adierazteko.",
"description": "Testu honek erabiltzaileari informatzen dio zeregina eguneratu dela soluzioa adierazteko."
},
{
"label": "Puntuazio barraren testu adierazpena irakurgailua erabiltzen dutenentzat",
"default": ":total puntutik :num puntu lortu dituzu"
},
{
"label": "Testu irakurgarri osorako etiketa laguntzarako teknologietan",
"default": "Testu irakurgarri osoa"
},
{
"label": "Markatu daitezkeen hitzentzako testurako etiketa laguntzarako teknologietan",
"default": "Hitzak markatu daitezkeen testu osoa"
},
{
"label": "Ebazpen-modurako goiburua laguntzarako teknologietan",
"default": "Ebazpen-modua"
},
{
"label": "Egiaztapen-modurako goiburua laguntzarako teknologietan",
"default": "Egiaztapen-modua"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Tehtävän kuvaus",
"description": "Kuvaile, mitä käyttäjän pitää tehdä.",
"placeholder": "Valitse klikkaamalla verbit seuraavasta tekstistä."
},
{
"label": "Tekstikenttä",
"placeholder": "Tämä on vastaus: *vastaus*.",
"description": "",
"important": {
"description": "<ul><li>Merkitse valittavat sanat tähtien (*) väliin, esimerkiksi *syön*.</li><li>Jos tarkoituksena on valita sanan sijaan pelkkä *-merkki, niin merkitse se muodossa **.</li></ul>",
"example": "Oikeat sanat merkitään seuraavasti: *oikeasana*, asteriskit kirjoitetaan näin: *oikeasana***."
}
},
{
"label": "Yleinen palaute",
"fields": [
{
"widgets": [
{
"label": "Oletus"
}
],
"label": "Määritä muokattu palaute pisterajojen mukaan.",
"description": "Klikkaa \"Lisää alue\" painiketta lisätäksesi niin monta pisterajaa kuin tarvit. Esimerkiksi: 0-20% Huono tulos, 21-91% Kelpo tulos, 91-100% Mahtava tulos!",
"entity": "alue",
"field": {
"fields": [
{
"label": "Pisteraja"
},
{},
{
"label": "Palaute määritellylle pisterajalle",
"placeholder": "Kirjoita palaute"
}
]
}
}
]
},
{
"label": "Painikkeen \"Tarkista\" nimi",
"default": "Tarkista"
},
{
"label": "Painikkeen \"Yritä uudelleen\" nimi",
"default": "Yritä uudelleen"
},
{
"label": "Painikkeen \"Katso vastaus\" nimi",
"default": "Katso vastaus"
},
{
"label": "Yleisasetukset",
"description": "Näillä valinnoilla voit ohjailla tehtävän toimintoja.",
"fields": [
{
"label": "Salli painike \"Yritä uudelleen\""
},
{
"label": "Salli painike \"Katso vastaus\""
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Näytä pisteet",
"description": "Näytä ansaitut pisteet joka vastaukselle."
}
]
},
{
"label": "Oikean vastauksen teksti",
"default": "Oikein!",
"description": "Teksti oikealle vastaukselle"
},
{
"label": "Väärän vastauksen teksti",
"default": "Väärin!",
"description": "Teksti väärälle vastaukselle"
},
{
"label": "Ohitetun vastauksen teksti",
"default": "Ohi!",
"description": "Teksti ohitetulle/puuttuvalle vastaukselle"
},
{
"label": "Painikkeen Näytä vastaukset kuvaus",
"default": "Tehtävä on päivitetty vastausten näyttämiseksi",
"description": "Tämä teksti kertoo tekijälle, että tehtävä on päivitetty ratkaisulla."
},
{
"label": "Tekstimuotoinen esitys pistepalkista niille jotka käyttävät ruudunlukijasovellusta",
"default": "Sait :num pistettä :total pisteestä"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Consigne",
"description": "Expliquez ce que doit faire l'utilisateur.",
"placeholder": "Cliquer sur tous les verbes dans le texte ci-dessous."
},
{
"label": "Champ de texte",
"placeholder": "Voici une réponse exacte : *réponse*.",
"description": "",
"important": {
"description": "<ul><li>Les mots corrects sont marqués avec un astérisque (*) avant et après le mot.</li><li>Les astérisques peuvent être ajoutés dans les mots marqués en ajoutant un autre astérisque, * mot correct *** => mot correct *.</li><li>Seuls les mots peuvent être marqués comme corrects. Pas les phrases.</li></ul>",
"example": "Les mots corrects sont marqués comme ceci: *motcorrect *, un astérisque est écrit comme ceci: *motcorrect***."
}
},
{
"label": "Feedback général",
"fields": [
{
"widgets": [
{
"label": "Par défaut"
}
],
"label": "Définissez le feedback pour chaque intervalle de score",
"description": "Cliquez sur le bouton \"Ajoutez Intervalle\" pour ajouter autant d'intervalles que vous le souhaitez. Exemple: 0-20% Mauvais score, 21-91% Score moyen, 91-100% Score excellent !",
"entity": "intervalle",
"field": {
"fields": [
{
"label": "Intervalle de score"
},
{},
{
"label": "Feedback pour l'intervalle de score défini",
"placeholder": "Remplir le feedback"
}
]
}
}
]
},
{
"label": "Texte du bouton \"Vérifier\"",
"default": "Vérifier"
},
{
"label": "Texte du bouton \"Recommencer\"",
"default": "Recommencer"
},
{
"label": "Texte du bouton \"Voir la solution\"",
"default": "Voir la correction"
},
{
"label": "Options générales",
"description": "Ces options vous permettent de contrôler le déroulement de vos activités.",
"fields": [
{
"label": "Activer le bouton \"Recommencer\""
},
{
"label": "Activer le bouton \"Voir la solution\""
},
{
"label": "Activer le bouton \"Vérifier\""
},
{
"label": "Montrer le score en points",
"description": "Afficher les points obtenus pour chaque réponse."
}
]
},
{
"label": "Texte de réponse correcte",
"default": "Réponse correcte !",
"description": "Texte pour indiquer qu'une réponse est bonne"
},
{
"label": "Texte de réponse incorrecte",
"default": "Réponse incorrecte !",
"description": "Texte pour indiquer qu'une réponse est mauvaise"
},
{
"label": "Texte de réponse manquée",
"default": "Absence de réponse !",
"description": "Texte pour indiquer qu'une réponse manque"
},
{
"label": "Description pour la solution d'affichage",
"default": "L'activité a été mise à jour pour afficher la solution.",
"description": "Ce texte indique à l'utilisateur que l'activité a été mise à jour avec la solution."
},
{
"label": "Représentation textuelle du panneau du score pour les utilisateurs de la sythèse vocale",
"default": "Vous avez :num points sur un total de :total"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "תיאור משימה",
"description": "יש לתאר כיצד על המשתמש לפתור את המשימה",
"placeholder": "יש ללחוץ על כל הפעלים בקטע התוכן הבא."
},
{
"label": "אזור תוכן",
"placeholder": "זו תשובה: *תשובה*",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "משוב כולל",
"fields": [
{
"widgets": [
{
"label": "ברירת מחדל"
}
],
"label": "יש להגדיר משוב מותאם אישית לכל טווח ניקוד",
"description": "יש להקיש על כפתור \"הוספת טווח\" כדי להוסיף טווחים רבים ככל הנדרש.לדוגמה: 0-20% ציון רע, 21-91% ציון ממוצע, 91-100% ציון נהדר! ",
"entity": "טווח",
"field": {
"fields": [
{
"label": "טווח נקודות"
},
{},
{
"label": "משוב עבור טווח ניקוד מוגדר",
"placeholder": "יש למלא את המשוב"
}
]
}
}
]
},
{
"label": "תיאור עבור כפתור \"סמן\"",
"default": "סמנו"
},
{
"label": "תיאור עבור כפתור \"נסו שנית\"",
"default": "נסו שנית"
},
{
"label": "תיאור עבור כפתור \"הציגו פתרון\"",
"default": "הציגו פתרון"
},
{
"label": "הגדרות אופן פעולת הרכיב",
"description": "אפשרויות אלה יאפשרו לך לשלוט באופן הפעולה של המשימה.",
"fields": [
{
"label": "הפעלת כפתור \"נסו בשנית\""
},
{
"label": "הפעלת כפתור \"הציגו פתרון\""
},
{
"label": "הפעלת כפתור \"סמן\""
},
{
"label": "הציגו נקודות ניקוד",
"description": "הציגו נקודות שהתקבלו עבור כל תשובה"
}
]
},
{
"label": "תוכן תשובה נכונה",
"default": "נכון!",
"description": "תיאור המשמש לציון תשובה נכונה"
},
{
"label": "תוכן תשובה שאינה נכונה",
"default": "אינו נכון!",
"description": "תיאור המשמש לציון תשובה שאינה נכונה"
},
{
"label": "תוכן תשובה חסרה",
"default": "חסר!",
"description": "תיאור המשמש לציון תשובה שאינה נענתה"
},
{
"label": "תיאור עבור תצוגת פתרון",
"default": "המשימה מתעדכנת כדי להכיל את הפתרון.",
"description": "תוכן זה אומר למשתמש שהמשימות עודכנו עם הפתרון."
},
{
"label": "תצוגה מילולית של סרגל הניקוד עבור אלה המשתמשים ב- readspeaker",
"default": "קיבלתם: נקודות מתוך סהכ: הנקודות "
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Descrizione del compito",
"description": "Descrivi come l'apprendente deve risolvere il compito",
"placeholder": "Clicca su tutti i verbi nel testo che segue"
},
{
"label": "Campo di testo",
"placeholder": "Questa è una risposta: *answer*",
"description": "",
"important": {
"description": "<ul><li>Le parole marcate vengono aggiunte mediante un asterisco (*).</li><li>Gli asterischi possono essere aggiunti all'interno di parole marcate attraverso un ulteriore asterisco. Es. *parola-corretta*** => parola-corretta*.</li></ul>",
"example": "Le parole corrette sono marcate in questo modo: *parola-corretta*. Un asterisco è scritto così: *parola-corretta***"
}
},
{
"label": "Feedback generale",
"fields": [
{
"widgets": [
{
"label": "Predefinito"
}
],
"label": "Specifica un feedback per ogni intervallo di punteggio",
"description": "Clicca sul pulsante \"Aggiungi intervallo\" per aggiungere gli intervalli che ti servono. Per esempio: 0-20%, Punteggio scarso; 21-90%, Punteggio medio; 91-100% Punteggio ottimo!",
"entity": "intervallo",
"field": {
"fields": [
{
"label": "Intervallo di punteggio"
},
{},
{
"label": "Feedback per un intervallo definito",
"placeholder": "Compila il feedback"
}
]
}
}
]
},
{
"label": "Testo per il pulsante \"Verifica\"",
"default": "Verifica"
},
{
"label": "Testo per il pulsante \"Riprova\"",
"default": "Riprova"
},
{
"label": "Testo per il pulsante \"Mostra Soluzione\"",
"default": "Mostra soluzione"
},
{
"label": "Impostazioni di esecuzione",
"description": "Queste opzioni permettono di controllare il comportamento del compito",
"fields": [
{
"label": "Attiva \"Riprova\""
},
{
"label": "Attiva il pulsante \"Mostra soluzioni\""
},
{
"label": "Attiva pulsante \"Verifica\""
},
{
"label": "Visualizza punteggio",
"description": "Visualizza i punti guadagnati per ogni risposta"
}
]
},
{
"label": "Testo della risposta corretta",
"default": "Giusto!",
"description": "Testo usato per indicare che una risposta è giusta"
},
{
"label": "Testo della risposta non corretta",
"default": "Sbagliato!",
"description": "Testo usato per indicare che una risposta è sbagliata"
},
{
"label": "Testo per risposta mancante",
"default": "Risposta non trovata!",
"description": "Testo usato per indicare che manca la risposta"
},
{
"label": "Descrizione della schermata delle soluzioni",
"default": "L'attività viene aggiornata per contenere la soluzione",
"description": "Questo messaggio dice all'apprendente che l'attività è stata aggiornata con la soluzione"
},
{
"label": "Rappresentazione testuale sulla barra del punteggio per chi usa un lettore vocale",
"default": "Il tuo punteggio è :num su :total"
},
{
"label": "Etichetta per il testo completo leggibile per le tecnologie assistive",
"default": "Testo completo leggibile"
},
{
"label": "Etichetta per il testo in cui le parole possono essere marcate per le tecnologie assistive",
"default": "Testo completo in cui le parole possono essere marcate"
},
{
"label": "Intestazione della modalità di soluzione per tecnologie assistive",
"default": "Modalità di soluzione"
},
{
"label": "Intestazione della modalità di verifica per tecnologie assistive",
"default": "Modalità di verifica"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "タスクの説明",
"description": "ユーザーがタスクを解決する方法について説明してください。",
"placeholder": "後に続くテキストのすべての動詞をクリックします。"
},
{
"label": "テキストフィールド",
"placeholder": "これが解答です。: *answer*",
"description": "",
"important": {
"description": "<ul><li>マークする単語にはアスタリスク (*) を加えます。</li><li>アスタリスクは別のアスタリスクでエスケープ処理されるので、** は * となります。</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "全体のフィードバック",
"fields": [
{
"widgets": [
{
"label": "デフォルト"
}
],
"label": "ある得点範囲に対して、カスタムフィードバックを定義します。",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "範囲",
"field": {
"fields": [
{
"label": "得点範囲"
},
{},
{
"label": "定義した得点範囲に対するフィードバック",
"placeholder": "フィードバックを記入"
}
]
}
}
]
},
{
"label": "「チェック」ボタンのテキスト",
"default": "チェック"
},
{
"label": "「リトライ」ボタンのテキスト",
"default": "リトライ"
},
{
"label": "「解を表示」ボタンのテキスト",
"default": "解を表示"
},
{
"label": "動作設定",
"description": "これらのオプションでタスクがどのように動作するかを制御できます。",
"fields": [
{
"label": "「リトライ」を有効化"
},
{
"label": "「解を表示」ボタンを有効化"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "得点ポイントを表示",
"description": "それぞれの解答で得られたポイントを表示"
}
]
},
{
"label": "正解のテキスト",
"default": "正解 !",
"description": "正解であることを示すために使用するテキスト"
},
{
"label": "不正解のテキスト",
"default": "不正解 !",
"description": "不正解であることを示すために使用するテキスト"
},
{
"label": "未回答テキスト",
"default": "未回答 !",
"description": "未回答であることを示すために使用するテキスト"
},
{
"label": "解を表示の説明",
"default": "解が含まれるようにタスクが更新されます。",
"description": "このテキストは、タスクが解で更新されたことをユーザーに伝えます。"
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Oppgavebeskrivelse",
"description": "Forklar hvordan brukeren skal løse oppgaven.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Tekstlinjer",
"placeholder": "Oslo er hovedstaden i *Norge*",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Samlet tilbakemelding",
"fields": [
{
"widgets": [
{
"label": "Standard"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Etikett for \"Sjekk\"-knapp",
"default": "Sjekk"
},
{
"label": "Etikett for \"Prøv igjen\"-knappen.",
"default": "Prøv igjen"
},
{
"label": "Etikett for \"Fasit\"-knapp",
"default": "Fasit"
},
{
"label": "Innstillinger for oppgave-oppførsel",
"description": "Disse instillingene lar deg bestemme hvordan oppgavetypen skal oppføre seg.",
"fields": [
{
"label": "Aktiver \"Prøv igjen\"-knapp"
},
{
"label": "Aktiver \"Fasit\" knapp"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Riktig svar tekst",
"default": "Riktig!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Feil svar tekst",
"default": "Feil!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Mangler svar tekst",
"default": "Mangler!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Beskrivelse for Vis Løsning",
"default": "Oppgaven er oppdatert til å inneholde fasiten.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Beschrijving taak",
"description": "Beschrijf hoe de gebruiker de taak moet uitvoeren.",
"placeholder": "Klik in de tekst op alle werkwoorden die volgen."
},
{
"label": "Tekstveld",
"placeholder": "Dit is een antwoord: *antwoord*.",
"description": "",
"important": {
"description": "<ul><li>Gemarkeerde woorden worden voorzien van een asterix (*).</li><li>Een asterix mag worden ingesloten door een andere asterix, dit resulteert in ** = *.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Algehele feedback",
"fields": [
{
"widgets": [
{
"label": "Standaard"
}
],
"label": "Defineer aangepaste feedback voor elke score reeks",
"description": "Druk op de \"Voeg scorereeks toe\" knop om zoveel reeksen toe te voegen als nodig is. Voorbeeld: 0-20% Onvoldoende score, 21-91% Gemiddelde score, 91-100% Uitstekende score!",
"entity": "reeks",
"field": {
"fields": [
{
"label": "Score reeks"
},
{},
{
"label": "Feedback voor de gedefinieerde score reeks",
"placeholder": "Vul de aangepaste feedback in"
}
]
}
}
]
},
{
"label": "Tekst voor de \"Controleer\"-knop",
"default": "Controleer"
},
{
"label": "Tekst voor de \"Opnieuw proberen\"-knop",
"default": "Opnieuw proberen"
},
{
"label": "Tekst voor de \"Toon oplossing\"-knop",
"default": "Toon oplossing"
},
{
"label": "Gedragsinstellingen",
"description": "Deze opties bepalen hoe de taak op de input reageert.",
"fields": [
{
"label": "Schakel de knop \"Opnieuw\" in"
},
{
"label": "Activeer \"Toon oplossing\" -knop"
},
{
"label": "Activeer \"Controleer\" -knop"
},
{
"label": "Toon scorepunten",
"description": "Toon het aantal verdiende punten voor elk antwoord."
}
]
},
{
"label": "Tekst voor een juist antwoord",
"default": "Juist!",
"description": "Deze tekst wordt gebruikt om aan te geven dat een antwoord juist is"
},
{
"label": "Tekst voor een onjuist antwoord",
"default": "Onjuist!",
"description": "Deze tekst wordt gebruikt om aan te geven dat een antwoord onjuist is"
},
{
"label": "Tekst voor een ontbrekend antwoord",
"default": "Ontbreekt!",
"description": "Deze tekst wordt gebruikt om aan te geven dat een antwoord ontbreekt"
},
{
"label": "Beschrijving voor de weergave van de oplossing",
"default": "De taak is bijgewerkt en bevat nu ook de oplossing.",
"description": "Deze tekst vertelt de gebruiker dat de taken zijn bijgewerkt en nu ook de oplossing bevatten."
},
{
"label": "Tekstuele weergave van de scorebalk voor gebruikers van een readspeaker",
"default": "Je hebt :num van de :total punten"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Oppgave beskriving",
"description": "Forklar hvordan brukeren skal løyse oppgåva.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Tekstliner",
"placeholder": "Oslo er hovudstaden i *Noreg*",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Bakgrunnsopasitet på flyttbare elementer",
"fields": [
{
"widgets": [
{
"label": "Standard"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Tekst for \"Sjekk\"-knapp",
"default": "Sjekk"
},
{
"label": "Tekst for \"Prøv igjen\"-knapp",
"default": "Prøv igjen"
},
{
"label": "Tekst for \"Fasit\" knapp",
"default": "Fasit"
},
{
"label": "Innstillinger for oppgave-åtferd",
"description": "Disse instillingene lar deg bestemme hvordan oppgavetypen skal oppføre seg.",
"fields": [
{
"label": "Aktiver \"Prøv igjen\"-knapp"
},
{
"label": "Aktiver \"Fasit\" knapp"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Riktig svar tekst",
"default": "Riktig!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Feil svar tekst",
"default": "Feil!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Mangler svar tekst",
"default": "Mangler!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Beskrivelse for Vis Løsning",
"default": "Oppgaven er oppdatert til å inneholde fasiten.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Descrição da tarefa",
"description": "Descreve como o usuário deve resolver a tarefa.",
"placeholder": "Clique em todos os verbos no texto a seguir."
},
{
"label": "Campo de texto",
"placeholder": "Esta é uma resposta: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Palavras marcadas são adicionadas com um asterisco(*).</li><li>Asteriscos podem ser adicionados junto às palavras marcadas adicionando outro asterisco, *palavracorreta*** => palavracorreta*.</li></ul>",
"example": "As palavras corretas são marcadas desta maneira: *palavra correta*, e um asterisco pode ser escrito da seguinte maneira: *palavracorreta***."
}
},
{
"label": "Feedback geral",
"fields": [
{
"widgets": [
{
"label": "Padrão"
}
],
"label": "Defina feedback customizado para qualquer faixa de pontuação",
"description": "Clique no botão \"Adicionar faixa\" para adicionar quantas faixas de pontuação forem necessárias. Exemplo: 0-20% Pontuação ruim, 21-91% Pontuação média, 91-100% Ótima pontuação!",
"entity": "range",
"field": {
"fields": [
{
"label": "Faixa de pontuação"
},
{},
{
"label": "Feedback para uma faixa de pontuação determinada",
"placeholder": "Preencha o feedback"
}
]
}
}
]
},
{
"label": "Texto para botão \"Verificar resposta\"",
"default": "Verificar resposta"
},
{
"label": "Texto para botão \"Tentar novamente\"",
"default": "Tentar novamente"
},
{
"label": "Texto para botão \"Mostrar solução\"",
"default": "Mostrar solução"
},
{
"label": "Configurações comportamentais.",
"description": "Estas opções permitirão que você controle como a tarefa se comporta.",
"fields": [
{
"label": "Habilitar o botão \"Tentar novamente\""
},
{
"label": "Habilitar o botão \"Mostrar solução\" "
},
{
"label": "Habilitar o botão \"Verificar resposta\" "
},
{
"label": "Mostrar pontuação",
"description": "Mostra pontos ganhos para cada questão.."
}
]
},
{
"label": "Texto para resposta correta",
"default": "Correto!",
"description": "Texto usado para indicar que a resposta está correta"
},
{
"label": "Texto para resposta incorreta",
"default": "Incorreto!",
"description": "Texto usado para indicar que a resposta está incorreta"
},
{
"label": "Texto para questão não respondida",
"default": "Questão não respondida!",
"description": "Texto usado para indicar que a questão não foi respondida"
},
{
"label": "Descrição para solução exibida",
"default": "A tarefa foi atualizada com a solução.",
"description": "Este texto diz ao usuário que a tarefa foi atualizada com a solução."
},
{
"label": "Representação textual da barra de pontuação para aqueles que usam leitores de telas",
"default": "Você marcou :num de :total pontos"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Описание задачи",
"description": "Опишите, как пользователь должен решить задачу.",
"placeholder": "Нажмите на все глаголы в следующем тексте."
},
{
"label": "Область ввода",
"placeholder": "Ответом является: *ответ*.",
"description": "",
"important": {
"description": "<ul><li>Выделенные слова необходимо обозначить звёздочкой (*).</li><li>Звёздочка должна быть добавлена с двух сторон, *правильноеслово*** => правильноеслово*.</li></ul>",
"example": "Правильные слова определены таким образом: *правильноеслово*, звёздочка обозначена так: *правильноеслово***."
}
},
{
"label": "Общая обратная связь",
"fields": [
{
"widgets": [
{
"label": "По умолчанию"
}
],
"label": "Установить обратную связь для любого диапазона баллов",
"description": "Нажмите кнопку \"Добавить диапазон\" для добавления необходимого количества диапазонов. Пример: 0-20% Низкий результат, 21-91% Средний результат, 91-100% Отличный результат!",
"entity": "диапазон",
"field": {
"fields": [
{
"label": "Диапазон баллов"
},
{},
{
"label": "Обратная связь для определённого диапазона баллов",
"placeholder": "Заполните обратную связь"
}
]
}
}
]
},
{
"label": "Текст для кнопки \"Проверить\" ",
"default": "Проверить"
},
{
"label": "Текст для кнопки \"Повторить\" ",
"default": "Повторить"
},
{
"label": "Текст для кнопки \"Показать решение\" ",
"default": "Показать решение"
},
{
"label": "Настройки обратной связи.",
"description": "Эти настройки помогут вам управлять поведением задания.",
"fields": [
{
"label": "Включить \"Повторить\""
},
{
"label": "Включить кнопку \"Показать решение\" "
},
{
"label": "Включить кнопку \"Проверить\" "
},
{
"label": "Показать результат",
"description": "Показать баллы за ответы."
}
]
},
{
"label": "Текст правильного ответа",
"default": "Верно!",
"description": "Текст, определяющий, что ответ правильный"
},
{
"label": "Текст для неправильного ответа",
"default": "Неверно!",
"description": "Текст, определяющий, что ответ неправильный"
},
{
"label": "Текст для отсутствующего ответа",
"default": "Отсутствует!",
"description": "Текст, определяющий, что ответ отсутствует"
},
{
"label": "Описание для представления решения",
"default": "Задача обновлена на содержание решения.",
"description": "Текст, объясняющий пользователю, что задача обновлена с решением."
},
{
"label": "Текстовое представление результатов для использующих ассистирующие технологии",
"default": "У тебя :num из :total баллов"
},
{
"label": "Ярлык для полного читаемого текста для ассистирующих технологии",
"default": "Полный читаемый текст"
},
{
"label": "Ярлык текста для выделенных слов для ассистирующих технологии",
"default": "Полный текст для выделенных слов"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Navodilo udeležencem",
"description": "Opis reševanja zadane naloge.",
"placeholder": "S klikom označi posamezne besede v besedilu."
},
{
"label": "Polje za besedilo",
"placeholder": "Pravilni odgovor: *odgovor*.",
"description": "",
"important": {
"description": "<ul><li>Pravilni odgovor se označi z zvezdico (*) pred in za besedo.</li><li>V primeru odgovora z zvezdico, je potrebno tudi zvezdico obdati po enakem principu (npr. *pravilnabeseda*** se na zaslonu izpiše kot pravilnabeseda*).</li><li>Kot pravilne se lahko označijo le besede in ne besedne zveze</li></ul>",
"example": "Pravilni odgovori so označeni kot: *pravilnabeseda*. Zvezdica se lahko zapiše na naslednji način: *pravilnabeseda***."
}
},
{
"label": "Splošna povratna informacija",
"fields": [
{
"widgets": [
{
"label": "Privzeto"
}
],
"label": "Določi ločeno povratno informacijo za vsak razpon rezultatov",
"description": "Kliknite gumb \"Dodaj razpon\" za dodajanje dodatnih razponov. Primer: 0-20 % Slab rezultat, 21-91 % Povprečen rezultat, 91-100 % Odličen rezultat!",
"entity": "razpon",
"field": {
"fields": [
{
"label": "Razpon rezultatov"
},
{},
{
"label": "Povratna informacija za definiran razpon rezultatov",
"placeholder": "Vnesite povratno informacijo"
}
]
}
}
]
},
{
"label": "Besedilo za gumb \"Preveri\"",
"default": "Preveri"
},
{
"label": "Besedilo za gumb \"Poskusi ponovno\"",
"default": "Poskusi ponovno"
},
{
"label": "Besedilo za gumb \"Prikaži rešitev\"",
"default": "Prikaži rešitev"
},
{
"label": "Nastavitve interakcije",
"description": "Nastavitve omogočajo nadzor nad interakcijo aktivnosti za udeležence.",
"fields": [
{
"label": "Omogoči gumb \"Poskusi ponovno\""
},
{
"label": "Omogoči gumb \"Prikaži rešitev\""
},
{
"label": "Omogoči gumb \"Preveri\""
},
{
"label": "Prikaži dosežene točke",
"description": "Prikaže dosežene točke pri vsakem oddanem odgovoru."
}
]
},
{
"label": "Besedilo za pravilni odgovor",
"default": "Pravilno!",
"description": "Besedilo označuje pravilni odgovor"
},
{
"label": "Besedilo za nepravilni odgovor",
"default": "Nepravilno!",
"description": "Besedilo označuje nepravilni odgovor"
},
{
"label": "Besedilo za manjkajoč odgovor",
"default": "Odgovor manjka!",
"description": "Besedilo označuje manjkajoč odgovor"
},
{
"label": "Besedilo za opis prikaza rešitve",
"default": "Rešitev naloge je objavljena.",
"description": "Besedilo obvesti uporabnika o objavi rešitve naloge."
},
{
"label": "Besedilo, ki ga bralnik zaslona uporabi za izražanje napredka",
"default": "Napredek :num od :total"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Uppgiftsbeskrivning",
"description": "Beskriv hur användaren ska utföra uppgiften.",
"placeholder": "Klicka på alla verb i följande text."
},
{
"label": "Textfält",
"placeholder": "Det här är ett svar: *svar*.",
"description": "",
"important": {
"description": "<ul><li>Markerade ord lägg till med asterisk (*).</li><li>Asterisker kan skrivas inne i markerade ord genom att man lägger till en extra asterisk, *rättord*** => rättord*.</li></ul>",
"example": "De rätta orden markeras så här: *rättord*, en asterisk skrivs så här: *rättord***."
}
},
{
"label": "Allmän Feedback",
"fields": [
{
"widgets": [
{
"label": "Standard"
}
],
"label": "Definiera anpassad feedback för varje poängnivå",
"description": "Klicka på \"Lägg till nivå\" knappen för att lägga till så många nivåer du behöver. Exampel: 0-20% Låg nivå, 21-91% Mellannivå, 91-100% Hög nivå!",
"entity": "nivå",
"field": {
"fields": [
{
"label": "Poängnivå"
},
{},
{
"label": "Feedback för definierad poängnivå",
"placeholder": "Fyll i feedback"
}
]
}
}
]
},
{
"label": "Text för \"Kontroll\" knapp",
"default": "Kontroll"
},
{
"label": "Text for \"Försök igen\" knapp",
"default": "Försök igen"
},
{
"label": "Text för \"Visa lösning\" knapp",
"default": "Visa lösning"
},
{
"label": "Funktionsinställningar.",
"description": "De här alternativen låter dig styra hur uppgiften fungerar.",
"fields": [
{
"label": "Tillåt \"Försök igen\""
},
{
"label": "Tillåt \"Visa lösning\" knapp"
},
{
"label": "Tillåt \"Kontroll\" knapp"
},
{
"label": "Visa poäng",
"description": "Visa poäng per svar."
}
]
},
{
"label": "Text för rätt svar",
"default": "Rätt!",
"description": "Text som visar att ett svar är rätt"
},
{
"label": "Text för fel svar",
"default": "Fel",
"description": "Text som visar att ett svar är fel"
},
{
"label": "Text för missat svar",
"default": "Svar saknas",
"description": "Text som visar att ett svar saknas"
},
{
"label": "Beskrivning för Visa lösning",
"default": "Uppgiften har uppdaterats så att lösningen ingår.",
"description": "Den här texten berättar för användaren att uppgiften har uppdaterats med lösningen."
},
{
"label": "Poängfältet i textform för dem som använder textuppläsning",
"default": "Du fick :num av :total poäng"
},
{
"label": "Etikett för den fullständiga läsbara texten för tillgänglighetshjälpmedel",
"default": "Fullständigt läsbar text"
},
{
"label": "Etikett för texten där ord kan markeras, för tillgänglighetshjälpmedel",
"default": "Fullständig text där ord kan markeras"
},
{
"label": "Rubrik för lösningsläge, för tillgänglighetshjälpmedel",
"default": "Lösningsläge"
},
{
"label": "Rubrik för kontrolläge for assistive technologies",
"default": "Kontrolläge"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Varsayılan"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "\"Kontrol et\" butonu için metin",
"default": "Kontrol et"
},
{
"label": "\"Yeniden dene\" butonu için metin",
"default": "Yeniden dene"
},
{
"label": "\"Çözümü göster\" butonunu için metin",
"default": "Çözümü göster"
},
{
"label": "Behavioural settings.",
"description": "Bu seçenekler aktivitenin çalışma şeklini denetlemenize izin verir.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Опис завдання",
"description": "Опишіть, як користувач повинен вирішити завдання.",
"placeholder": "Клацніть всі дієслова у тексті, що випливає."
},
{
"label": "Текстове поле",
"placeholder": "Це відповідь: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Позначені слова додаються з зірочкою (*).</li><li>Зірочка може вийти з іншої зірочки, в результаті чого ** = *.</li></ul>",
"example": "Правильні слова позначені так: *correctword*, зірочка написана так: *correctword***."
}
},
{
"label": "Зворотній зв'язок",
"fields": [
{
"widgets": [
{
"label": "По умовчанню"
}
],
"label": "Визначте власні відгуки для будь-якого діапазону оцінок",
"description": "Натисніть кнопку \"Додати діапазон\" щоб додати стільки діапазонів, скільки вам потрібно. Наприклад: 0-20% Погана оцінка, 21-91% Середня оцінка, 91-100% Відмінна оцінка!",
"entity": "діапазон",
"field": {
"fields": [
{
"label": "Діапазон оцінок"
},
{},
{
"label": "Зворотній зв'язок на визначений діапазон оцінок",
"placeholder": "Заповніть відгук"
}
]
}
}
]
},
{
"label": "Тектс кнопки \"Перевірити\"",
"default": "Перевірити"
},
{
"label": "Текст кнопки \"Повторити\"",
"default": "Повторити"
},
{
"label": "Текст кнопки \"Показати відповіді\"",
"default": "Показати відповіді"
},
{
"label": "Налаштування поведінки.",
"description": "Ці параметри дозволять вам контролювати, як поводиться завдання.",
"fields": [
{
"label": "Включити кнопку \"Повторити\""
},
{
"label": "Включити кнопку \"Показати відповіді\""
},
{
"label": "Включити кнопку \"Перевірити\""
},
{
"label": "Показати бали",
"description": "Показати зароблені бали за кожну відповідь."
}
]
},
{
"label": "Текст правильної відповіді",
"default": "Правильно!",
"description": "Текст використовується для вказівки правильності відповіді"
},
{
"label": "Текст неправильної відповіді",
"default": "Неправильно!",
"description": "Текст використовується для вказівки на те, що відповідь неправильна"
},
{
"label": "Текст відповіді пропущений",
"default": "Пропущено!",
"description": "Текст вказує на відсутність відповіді"
},
{
"label": "Опис для відображення відповідей",
"default": "Завдання оновлюється, щоб містити відповіді.",
"description": "Цей текст повідомляє користувачеві, що завдання було оновлено відповідями."
},
{
"label": "Текстове представлення шкали оцінок для тих, хто використовує озвучування",
"default": "Ти маєш :num з :total балів"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows."
},
{
"label": "Textfield",
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Marked words are added with an asterisk (*).</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "Overall Feedback",
"fields": [
{
"widgets": [
{
"label": "Default"
}
],
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"field": {
"fields": [
{
"label": "Score Range"
},
{},
{
"label": "Feedback for defined score range",
"placeholder": "Fill in the feedback"
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"default": "Check"
},
{
"label": "Text for \"Retry\" button",
"default": "Retry"
},
{
"label": "Text for \"Show solution\" button",
"default": "Show solution"
},
{
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"fields": [
{
"label": "Enable \"Retry\""
},
{
"label": "Enable \"Show solution\" button"
},
{
"label": "Enable \"Check\" button"
},
{
"label": "Show score points",
"description": "Show points earned for each answer."
}
]
},
{
"label": "Correct answer text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct"
},
{
"label": "Incorrect answer text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect"
},
{
"label": "Missed answer text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing"
},
{
"label": "Description for Display Solution",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution."
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,116 @@
{
"semantics": [
{
"label": "任務說明",
"description": "說明用戶任務中要做些什麼。",
"placeholder": "在句子中找到動詞然後圈出來。"
},
{
"label": "文字",
"placeholder": "我 常常 在 夜深人靜 的時候 *翻譯* 一些 軟體 。",
"description": "",
"important": {
"description": "<ul><li>在需要被標記的字詞(答案)兩側添加星號 (*)。</li><li>如果字詞中包含星號,那麼可以再加一個就會被包含,例如 *correctword*** => correctword*。</li><li>詞與詞之間要以空白符號分隔。只有字詞能使用,英語片語不行。</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"label": "結果回饋",
"fields": [
{
"widgets": [
{
"label": "預設"
}
],
"label": "為不同分數區間的用戶分別回饋訊息",
"description": "點擊「添加範圍」按鈕,加入你想要的範圍,例如 0%-59% 請加油、60%-79% 再努力、80%-100% 太棒了。",
"entity": "範圍",
"field": {
"fields": [
{
"label": "分數區間"
},
{},
{
"label": "自訂區間回饋訊息",
"placeholder": "填入回饋訊息"
}
]
}
}
]
},
{
"label": "核對答案按鈕文字",
"default": "核對答案"
},
{
"label": "再試一次按鈕文字",
"default": "再試一次"
},
{
"label": "顯示正解按鈕文字",
"default": "顯示正解"
},
{
"label": "行為設置",
"description": "這些設定可以讓你控制任務的行為。",
"fields": [
{
"label": "啟用「再試一次」按鈕"
},
{
"label": "啟用「顯示正解」按鈕"
},
{
"label": "啟用「核對答案」按鈕"
},
{
"label": "顯示計分狀態",
"description": "在每個項目旁顯示加分或減分情形。"
}
]
},
{
"label": "答對的顯示文字",
"default": "答對!",
"description": "用於表示答案正確的文字。"
},
{
"label": "答錯的顯示文字",
"default": "答錯!",
"description": "用於表示答案錯誤的文字。"
},
{
"label": "少答的顯示文字",
"default": "缺少!",
"description": "用於表示沒有作答的文字。"
},
{
"label": "顯示正解的說明文字",
"default": "這是正確的解答。",
"description": "用來告訴用戶任務已更新成正確解答。"
},
{
"label": "報讀器得分條文本",
"default": "你得到 :num 分,總分 :total 分。"
},
{
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text"
},
{
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked"
},
{
"label": "Solution mode header for assistive technologies",
"default": "Solution mode"
},
{
"label": "Checking mode header for assistive technologies",
"default": "Checking mode"
}
]
}

View File

@@ -0,0 +1,61 @@
{
"title": "Mark the Words",
"description": "Test your users by making them select the correct words from a text.",
"majorVersion": 1,
"minorVersion": 9,
"patchVersion": 9,
"coreApi": {
"majorVersion": 1,
"minorVersion": 19
},
"runnable": 1,
"embedTypes": [
"iframe"
],
"author": "Joubel",
"license": "MIT",
"machineName": "H5P.MarkTheWords",
"preloadedCss": [
{
"path": "styles/mark-the-words.css"
}
],
"preloadedJs": [
{
"path": "scripts/keyboard-nav.js"
},
{
"path": "scripts/xAPI-generator.js"
},
{
"path": "scripts/word.js"
},
{
"path": "scripts/mark-the-words.js"
}
],
"preloadedDependencies": [
{
"machineName": "FontAwesome",
"majorVersion": 4,
"minorVersion": 5
},
{
"machineName": "H5P.JoubelUI",
"majorVersion": 1,
"minorVersion": 3
},
{
"machineName": "H5P.Question",
"majorVersion": 1,
"minorVersion": 4
}
],
"editorDependencies": [
{
"machineName": "H5PEditor.RangeList",
"majorVersion": 1,
"minorVersion": 0
}
]
}

View File

@@ -0,0 +1,31 @@
var H5PPresave = H5PPresave || {};
/**
* Resolve the presave logic for the content type Mark the Words
*
* @param {object} content
* @param finished
* @constructor
*/
H5PPresave['H5P.MarkTheWords'] = function (content, finished) {
var presave = H5PEditor.Presave;
if (isContentInvalid()) {
throw new presave.exceptions.InvalidContentSemanticsException('Invalid Mark The Words Error');
}
var answers = content.textField.replace("**", "").match(/\*[^\*]+\*/g);
var score = Array.isArray(answers) ? answers.length : 1;
presave.validateScore(score);
finished({maxScore: score});
/**
* Check if required parameters is present
* @return {boolean}
*/
function isContentInvalid() {
return !presave.checkNestedRequirements(content, 'content.textField');
}
};

View File

@@ -0,0 +1,268 @@
/**
* @class
* @classdesc Keyboard navigation for accessibility support
* @extends H5P.EventDispatcher
*/
H5P.KeyboardNav = (function (EventDispatcher) {
/**
* Construct a new KeyboardNav
* @constructor
*/
function KeyboardNav() {
EventDispatcher.call(this);
/** @member {boolean} */
this.selectability = true;
/** @member {HTMLElement[]|EventTarget[]} */
this.elements = [];
}
KeyboardNav.prototype = Object.create(EventDispatcher.prototype);
KeyboardNav.prototype.constructor = KeyboardNav;
/**
* Adds a new element to navigation
*
* @param {HTMLElement} el The element
* @public
*/
KeyboardNav.prototype.addElement = function(el){
const keyDown = this.handleKeyDown.bind(this);
const onClick = this.onClick.bind(this);
el.addEventListener('keydown', keyDown);
el.addEventListener('click', onClick);
// add to array to navigate over
this.elements.push({
el: el,
keyDown: keyDown,
onClick: onClick,
});
if(this.elements.length === 1){ // if first
this.setTabbableAt(0);
}
};
/**
* Select the previous element in the list. Select the last element,
* if the current element is the first element in the list.
*
* @param {Number} index The index of currently selected element
* @public
* @fires KeyboardNav#previousOption
*/
KeyboardNav.prototype.previousOption = function (index) {
var isFirstElement = index === 0;
this.focusOnElementAt(isFirstElement ? (this.elements.length - 1) : (index - 1));
/**
* Previous option event
*
* @event KeyboardNav#previousOption
* @type KeyboardNavigationEventData
*/
this.trigger('previousOption', this.createEventPayload(index));
};
/**
* Select the next element in the list. Select the first element,
* if the current element is the first element in the list.
*
* @param {Number} index The index of the currently selected element
* @public
* @fires KeyboardNav#previousOption
*/
KeyboardNav.prototype.nextOption = function (index) {
var isLastElement = index === this.elements.length - 1;
this.focusOnElementAt(isLastElement ? 0 : (index + 1));
/**
* Previous option event
*
* @event KeyboardNav#nextOption
* @type KeyboardNavigationEventData
*/
this.trigger('nextOption', this.createEventPayload(index));
};
/**
* Focus on an element by index
*
* @param {Number} index The index of the element to focus on
* @public
*/
KeyboardNav.prototype.focusOnElementAt = function (index) {
this.setTabbableAt(index);
this.getElements()[index].focus();
};
/**
* Disable possibility to select a word trough click and space or enter
*
* @public
*/
KeyboardNav.prototype.disableSelectability = function () {
this.elements.forEach(function (el) {
el.el.removeEventListener('keydown', el.keyDown);
el.el.removeEventListener('click', el.onClick);
}.bind(this));
this.selectability = false;
};
/**
* Enable possibility to select a word trough click and space or enter
*
* @public
*/
KeyboardNav.prototype.enableSelectability = function () {
this.elements.forEach(function (el) {
el.el.addEventListener('keydown', el.keyDown);
el.el.addEventListener('click', el.onClick);
}.bind(this));
this.selectability = true;
};
/**
* Sets tabbable on a single element in the list, by index
* Also removes tabbable from all other elements in the list
*
* @param {Number} index The index of the element to set tabbale on
* @public
*/
KeyboardNav.prototype.setTabbableAt = function (index) {
this.removeAllTabbable();
this.getElements()[index].setAttribute('tabindex', '0');
};
/**
* Remove tabbable from all entries
*
* @public
*/
KeyboardNav.prototype.removeAllTabbable = function () {
this.elements.forEach(function(el){
el.el.removeAttribute('tabindex');
});
};
/**
* Toggles 'aria-selected' on an element, if selectability == true
*
* @param {EventTarget|HTMLElement} el The element to select/unselect
* @private
* @fires KeyboardNav#select
*/
KeyboardNav.prototype.toggleSelect = function(el){
if(this.selectability) {
// toggle selection
el.setAttribute('aria-selected', !isElementSelected(el));
// focus current
el.setAttribute('tabindex', '0');
el.focus();
var index = this.getElements().indexOf(el);
/**
* Previous option event
*
* @event KeyboardNav#select
* @type KeyboardNavigationEventData
*/
this.trigger('select', this.createEventPayload(index));
}
};
/**
* Handles key down
*
* @param {KeyboardEvent} event Keyboard event
* @private
*/
KeyboardNav.prototype.handleKeyDown = function(event){
var index;
switch (event.which) {
case 13: // Enter
case 32: // Space
// Select
this.toggleSelect(event.target);
event.preventDefault();
break;
case 37: // Left Arrow
case 38: // Up Arrow
// Go to previous Option
index = this.getElements().indexOf(event.currentTarget);
this.previousOption(index);
event.preventDefault();
break;
case 39: // Right Arrow
case 40: // Down Arrow
// Go to next Option
index = this.getElements().indexOf(event.currentTarget);
this.nextOption(index);
event.preventDefault();
break;
}
};
/**
* Get only elements from elements array
* @returns {Array}
*/
KeyboardNav.prototype.getElements = function () {
return this.elements.map(function (el) {
return el.el;
});
};
/**
* Handles element click. Toggles 'aria-selected' on element
*
* @param {MouseEvent} event Mouse click event
* @private
*/
KeyboardNav.prototype.onClick = function(event){
this.toggleSelect(event.currentTarget);
};
/**
* Creates a paylod for event that is fired
*
* @param {Number} index
* @return {KeyboardNavigationEventData}
*/
KeyboardNav.prototype.createEventPayload = function(index){
/**
* Data that is passed along as the event parameter
*
* @typedef {Object} KeyboardNavigationEventData
* @property {HTMLElement} element
* @property {number} index
* @property {boolean} selected
*/
return {
element: this.getElements()[index],
index: index,
selected: isElementSelected(this.getElements()[index])
};
};
/**
* Sets aria-selected="true" on an element
*
* @param {HTMLElement} el The element to set selected
* @return {boolean}
*/
var isElementSelected = function(el){
return el.getAttribute('aria-selected') === 'true';
};
return KeyboardNav;
})(H5P.EventDispatcher);

View File

@@ -0,0 +1,653 @@
/*global H5P*/
/**
* Mark The Words module
* @external {jQuery} $ H5P.jQuery
*/
H5P.MarkTheWords = (function ($, Question, Word, KeyboardNav, XapiGenerator) {
/**
* Initialize module.
*
* @class H5P.MarkTheWords
* @extends H5P.Question
* @param {Object} params Behavior settings
* @param {Number} contentId Content identification
* @param {Object} contentData Object containing task specific content data
*
* @returns {Object} MarkTheWords Mark the words instance
*/
function MarkTheWords(params, contentId, contentData) {
var self = this;
this.contentId = contentId;
this.contentData = contentData;
this.introductionId = 'mark-the-words-introduction-' + contentId;
Question.call(this, 'mark-the-words');
// Set default behavior.
this.params = $.extend(true, {
taskDescription: "",
textField: "This is a *nice*, *flexible* content type.",
overallFeedback: [],
behaviour: {
enableRetry: true,
enableSolutionsButton: true,
enableCheckButton: true,
showScorePoints: true
},
checkAnswerButton: "Check",
tryAgainButton: "Retry",
showSolutionButton: "Show solution",
correctAnswer: "Correct!",
incorrectAnswer: "Incorrect!",
missedAnswer: "Answer not found!",
displaySolutionDescription: "Task is updated to contain the solution.",
scoreBarLabel: 'You got :num out of :total points',
a11yFullTextLabel: 'Full readable text',
a11yClickableTextLabel: 'Full text where words can be marked',
a11ySolutionModeHeader: 'Solution mode',
a11yCheckingHeader: 'Checking mode',
}, params);
this.contentData = contentData;
if (this.contentData !== undefined && this.contentData.previousState !== undefined) {
this.previousState = this.contentData.previousState;
}
this.keyboardNavigators = [];
this.initMarkTheWords();
this.XapiGenerator = new XapiGenerator(this);
}
MarkTheWords.prototype = Object.create(H5P.EventDispatcher.prototype);
MarkTheWords.prototype.constructor = MarkTheWords;
/**
* Initialize Mark The Words task
*/
MarkTheWords.prototype.initMarkTheWords = function () {
this.$inner = $('<div class="h5p-word-inner"></div>');
this.addTaskTo(this.$inner);
// Set user state
this.setH5PUserState();
};
/**
* Recursive function that creates html for the words
* @method createHtmlForWords
* @param {Array} nodes Array of dom nodes
* @return {string}
*/
MarkTheWords.prototype.createHtmlForWords = function (nodes) {
var self = this;
var html = '';
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (node instanceof Text) {
var text = $(node).text();
var selectableStrings = text.replace(/(&nbsp;|\r\n|\n|\r)/g, ' ')
.match(/ \*[^\*]+\* |[^\s]+/g);
if (selectableStrings) {
selectableStrings.forEach(function (entry) {
entry = entry.trim();
// Words
if (html) {
// Add space before
html += ' ';
}
// Remove prefix punctuations from word
var prefix = entry.match(/^[\[\({⟨¿¡“"«„]+/);
var start = 0;
if (prefix !== null) {
start = prefix[0].length;
html += prefix;
}
// Remove suffix punctuations from word
var suffix = entry.match(/[",….:;?!\]\)}⟩»”]+$/);
var end = entry.length - start;
if (suffix !== null) {
end -= suffix[0].length;
}
// Word
entry = entry.substr(start, end);
if (entry.length) {
html += '<span role="option" aria-selected="false">' + self.escapeHTML(entry) + '</span>';
}
if (suffix !== null) {
html += suffix;
}
});
}
else if ((selectableStrings !== null) && text.length) {
html += '<span role="option" aria-selected="false">' + this.escapeHTML(text) + '</span>';
}
}
else {
if (node.nodeName === 'BR') {
html += '<br/>';
}
else {
var attributes = ' ';
for (var j = 0; j < node.attributes.length; j++) {
attributes +=node.attributes[j].name + '="' + node.attributes[j].nodeValue + '" ';
}
html += '<' + node.nodeName + attributes + '>';
html += self.createHtmlForWords(node.childNodes);
html += '</' + node.nodeName + '>';
}
}
}
return html;
};
/**
* Escapes HTML
*
* @param html
* @returns {jQuery}
*/
MarkTheWords.prototype.escapeHTML = function (html) {
return $('<div>').text(html).html();
};
/**
* Search for the last children in every paragraph and
* return their indexes in an array
*
* @returns {Array}
*/
MarkTheWords.prototype.getIndexesOfLineBreaks = function () {
var indexes = [];
var selectables = this.$wordContainer.find('span.h5p-word-selectable');
selectables.each(function(index, selectable) {
if ($(selectable).next().is('br')){
indexes.push(index);
}
if ($(selectable).parent('p') && !$(selectable).parent().is(':last-child') && $(selectable).is(':last-child')){
indexes.push(index);
}
});
return indexes;
};
/**
* Handle task and add it to container.
* @param {jQuery} $container The object which our task will attach to.
*/
MarkTheWords.prototype.addTaskTo = function ($container) {
var self = this;
self.selectableWords = [];
self.answers = 0;
// Wrapper
var $wordContainer = $('<div/>', {
'class': 'h5p-word-selectable-words',
'aria-labelledby': self.introductionId,
'aria-multiselectable': 'true',
'role': 'listbox',
html: self.createHtmlForWords($.parseHTML(self.params.textField))
});
let isNewParagraph = true;
$wordContainer.find('[role="option"], br').each(function () {
if ($(this).is('br')) {
isNewParagraph = true;
return;
}
if (isNewParagraph) {
// Add keyboard navigation helper
self.currentKeyboardNavigator = new KeyboardNav();
// on word clicked
self.currentKeyboardNavigator.on('select', function () {
self.isAnswered = true;
self.triggerXAPI('interacted');
});
self.keyboardNavigators.push(self.currentKeyboardNavigator);
isNewParagraph = false;
}
self.currentKeyboardNavigator.addElement(this);
// Add keyboard navigation to this element
var selectableWord = new Word($(this), self.params);
if (selectableWord.isAnswer()) {
self.answers += 1;
}
self.selectableWords.push(selectableWord);
});
self.blankIsCorrect = (self.answers === 0);
if (self.blankIsCorrect) {
self.answers = 1;
}
// A11y full readable text
const $ariaTextWrapper = $('<div>', {
'class': 'hidden-but-read',
}).appendTo($container);
$('<div>', {
html: self.params.a11yFullTextLabel,
}).appendTo($ariaTextWrapper);
// Add space after each paragraph to read the sentences better
const ariaText = $('<div>', {
'html': $wordContainer.html().replace('</p>', ' </p>'),
}).text();
$('<div>', {
text: ariaText,
}).appendTo($ariaTextWrapper);
// A11y clickable list label
this.$a11yClickableTextLabel = $('<div>', {
'class': 'hidden-but-read',
html: self.params.a11yClickableTextLabel,
tabIndex: '-1',
}).appendTo($container);
$wordContainer.appendTo($container);
self.$wordContainer = $wordContainer;
};
/**
* Add check solution and retry buttons.
*/
MarkTheWords.prototype.addButtons = function () {
var self = this;
self.$buttonContainer = $('<div/>', {
'class': 'h5p-button-bar'
});
if (this.params.behaviour.enableCheckButton) {
this.addButton('check-answer', this.params.checkAnswerButton, function () {
self.isAnswered = true;
var answers = self.calculateScore();
self.feedbackSelectedWords();
if (!self.showEvaluation(answers)) {
// Only show if a correct answer was not found.
if (self.params.behaviour.enableSolutionsButton && (answers.correct < self.answers)) {
self.showButton('show-solution');
}
if (self.params.behaviour.enableRetry) {
self.showButton('try-again');
}
}
// Set focus to start of text
self.$a11yClickableTextLabel.html(self.params.a11yCheckingHeader + ' - ' + self.params.a11yClickableTextLabel);
self.$a11yClickableTextLabel.focus();
self.hideButton('check-answer');
self.trigger(self.XapiGenerator.generateAnsweredEvent());
self.toggleSelectable(true);
});
}
this.addButton('try-again', this.params.tryAgainButton, this.resetTask.bind(this), false);
this.addButton('show-solution', this.params.showSolutionButton, function () {
self.setAllMarks();
self.$a11yClickableTextLabel.html(self.params.a11ySolutionModeHeader + ' - ' + self.params.a11yClickableTextLabel);
self.$a11yClickableTextLabel.focus();
if (self.params.behaviour.enableRetry) {
self.showButton('try-again');
}
self.hideButton('check-answer');
self.hideButton('show-solution');
self.read(self.params.displaySolutionDescription);
self.toggleSelectable(true);
}, false);
};
/**
* Toggle whether words can be selected
* @param {Boolean} disable
*/
MarkTheWords.prototype.toggleSelectable = function (disable) {
this.keyboardNavigators.forEach(function (navigator) {
if (disable) {
navigator.disableSelectability();
navigator.removeAllTabbable();
}
else {
navigator.enableSelectability();
navigator.setTabbableAt((0));
}
});
if (disable) {
this.$wordContainer.removeAttr('aria-multiselectable').removeAttr('role');
}
else {
this.$wordContainer.attr('aria-multiselectable', 'true')
.attr('role', 'listbox');
}
};
/**
* Get Xapi Data.
*
* @see used in contracts {@link https://h5p.org/documentation/developers/contracts#guides-header-6}
* @return {Object}
*/
MarkTheWords.prototype.getXAPIData = function () {
return {
statement: this.XapiGenerator.generateAnsweredEvent().data.statement
};
};
/**
* Mark the words as correct, wrong or missed.
*
* @fires MarkTheWords#resize
*/
MarkTheWords.prototype.setAllMarks = function () {
this.selectableWords.forEach(function (entry) {
entry.markCheck();
entry.clearScorePoint();
});
/**
* Resize event
*
* @event MarkTheWords#resize
*/
this.trigger('resize');
};
/**
* Mark the selected words as correct or wrong.
*
* @fires MarkTheWords#resize
*/
MarkTheWords.prototype.feedbackSelectedWords = function () {
var self = this;
var scorePoints;
if (self.params.behaviour.showScorePoints) {
scorePoints = new H5P.Question.ScorePoints();
}
this.selectableWords.forEach(function (entry) {
if (entry.isSelected()) {
entry.markCheck(scorePoints);
}
});
this.$wordContainer.addClass('h5p-disable-hover');
this.trigger('resize');
};
/**
* Evaluate task and display score text for word markings.
*
* @fires MarkTheWords#resize
* @return {Boolean} Returns true if maxScore was achieved.
*/
MarkTheWords.prototype.showEvaluation = function (answers) {
this.hideEvaluation();
var score = answers.score;
//replace editor variables with values, uses regexp to replace all instances.
var scoreText = H5P.Question.determineOverallFeedback(this.params.overallFeedback, score / this.answers).replace(/@score/g, score.toString())
.replace(/@total/g, this.answers.toString())
.replace(/@correct/g, answers.correct.toString())
.replace(/@wrong/g, answers.wrong.toString())
.replace(/@missed/g, answers.missed.toString());
this.setFeedback(scoreText, score, this.answers, this.params.scoreBarLabel);
this.trigger('resize');
return score === this.answers;
};
/**
* Clear the evaluation text.
*
* @fires MarkTheWords#resize
*/
MarkTheWords.prototype.hideEvaluation = function () {
this.removeFeedback();
this.trigger('resize');
};
/**
* Calculate the score.
*
* @return {Answers}
*/
MarkTheWords.prototype.calculateScore = function () {
var self = this;
/**
* @typedef {Object} Answers
* @property {number} correct The number of correct answers
* @property {number} wrong The number of wrong answers
* @property {number} missed The number of answers the user missed
* @property {number} score The calculated score
*/
var initial = {
correct: 0,
wrong: 0,
missed: 0,
score: 0
};
// iterate over words, and calculate score
var answers = self.selectableWords.reduce(function (result, word) {
if (word.isCorrect()) {
result.correct++;
}
else if (word.isWrong()) {
result.wrong++;
}
else if (word.isMissed()) {
result.missed++;
}
return result;
}, initial);
// if no wrong answers, and black is correct
if (answers.wrong === 0 && self.blankIsCorrect) {
answers.correct = 1;
}
// no negative score
answers.score = Math.max(answers.correct - answers.wrong, 0);
return answers;
};
/**
* Clear styling on marked words.
*
* @fires MarkTheWords#resize
*/
MarkTheWords.prototype.clearAllMarks = function () {
this.selectableWords.forEach(function (entry) {
entry.markClear();
});
this.$wordContainer.removeClass('h5p-disable-hover');
this.trigger('resize');
};
/**
* Returns true if task is checked or a word has been clicked
*
* @see {@link https://h5p.org/documentation/developers/contracts|Needed for contracts.}
* @returns {Boolean} Always returns true.
*/
MarkTheWords.prototype.getAnswerGiven = function () {
return this.blankIsCorrect ? true : this.isAnswered;
};
/**
* Counts the score, which is correct answers subtracted by wrong answers.
*
* @see {@link https://h5p.org/documentation/developers/contracts|Needed for contracts.}
* @returns {Number} score The amount of points achieved.
*/
MarkTheWords.prototype.getScore = function () {
return this.calculateScore().score;
};
/**
* Gets max score for this task.
*
* @see {@link https://h5p.org/documentation/developers/contracts|Needed for contracts.}
* @returns {Number} maxScore The maximum amount of points achievable.
*/
MarkTheWords.prototype.getMaxScore = function () {
return this.answers;
};
/**
* Get title
* @returns {string}
*/
MarkTheWords.prototype.getTitle = function () {
return H5P.createTitle((this.contentData && this.contentData.metadata && this.contentData.metadata.title) ? this.contentData.metadata.title : 'Mark the Words');
};
/**
* Display the evaluation of the task, with proper markings.
*
* @fires MarkTheWords#resize
* @see {@link https://h5p.org/documentation/developers/contracts|Needed for contracts.}
*/
MarkTheWords.prototype.showSolutions = function () {
var answers = this.calculateScore();
this.showEvaluation(answers);
this.setAllMarks();
this.read(this.params.displaySolutionDescription);
this.hideButton('try-again');
this.hideButton('show-solution');
this.hideButton('check-answer');
this.$a11yClickableTextLabel.html(this.params.a11ySolutionModeHeader + ' - ' + this.params.a11yClickableTextLabel);
this.toggleSelectable(true);
this.trigger('resize');
};
/**
* Resets the task back to its' initial state.
*
* @fires MarkTheWords#resize
* @see {@link https://h5p.org/documentation/developers/contracts|Needed for contracts.}
*/
MarkTheWords.prototype.resetTask = function () {
this.isAnswered = false;
this.clearAllMarks();
this.hideEvaluation();
this.hideButton('try-again');
this.hideButton('show-solution');
this.showButton('check-answer');
this.$a11yClickableTextLabel.html(this.params.a11yClickableTextLabel);
this.toggleSelectable(false);
this.trigger('resize');
};
/**
* Returns an object containing the selected words
*
* @public
* @returns {object} containing indexes of selected words
*/
MarkTheWords.prototype.getCurrentState = function () {
var selectedWordsIndexes = [];
if (this.selectableWords === undefined) {
return undefined;
}
this.selectableWords.forEach(function (selectableWord, swIndex) {
if (selectableWord.isSelected()) {
selectedWordsIndexes.push(swIndex);
}
});
return selectedWordsIndexes;
};
/**
* Sets answers to current user state
*/
MarkTheWords.prototype.setH5PUserState = function () {
var self = this;
// Do nothing if user state is undefined
if (this.previousState === undefined || this.previousState.length === undefined) {
return;
}
// Select words from user state
this.previousState.forEach(function (answeredWordIndex) {
if (isNaN(answeredWordIndex) || answeredWordIndex >= self.selectableWords.length || answeredWordIndex < 0) {
throw new Error('Stored user state is invalid');
}
self.selectableWords[answeredWordIndex].setSelected();
});
};
/**
* Register dom elements
*
* @see {@link https://github.com/h5p/h5p-question/blob/1558b6144333a431dd71e61c7021d0126b18e252/scripts/question.js#L1236|Called from H5P.Question}
*/
MarkTheWords.prototype.registerDomElements = function () {
// wrap introduction in div with id
var introduction = '<div id="' + this.introductionId + '">' + this.params.taskDescription + '</div>';
// Register description
this.setIntroduction(introduction);
// creates aria descriptions for correct/incorrect/missed
this.createDescriptionsDom().appendTo(this.$inner);
// Register content
this.setContent(this.$inner, {
'class': 'h5p-word'
});
// Register buttons
this.addButtons();
};
/**
* Creates dom with description to be used with aria-describedby
* @return {jQuery}
*/
MarkTheWords.prototype.createDescriptionsDom = function () {
var self = this;
var $el = $('<div class="h5p-mark-the-words-descriptions"></div>');
$('<div id="' + Word.ID_MARK_CORRECT + '">' + self.params.correctAnswer + '</div>').appendTo($el);
$('<div id="' + Word.ID_MARK_INCORRECT + '">' + self.params.incorrectAnswer + '</div>').appendTo($el);
$('<div id="' + Word.ID_MARK_MISSED + '">' + self.params.missedAnswer + '</div>').appendTo($el);
return $el;
};
return MarkTheWords;
}(H5P.jQuery, H5P.Question, H5P.MarkTheWords.Word, H5P.KeyboardNav, H5P.MarkTheWords.XapiGenerator));

View File

@@ -0,0 +1,229 @@
H5P.MarkTheWords = H5P.MarkTheWords || {};
H5P.MarkTheWords.Word = (function () {
/**
* @constant
*
* @type {string}
*/
Word.ID_MARK_MISSED = "h5p-description-missed";
/**
* @constant
*
* @type {string}
*/
Word.ID_MARK_CORRECT = "h5p-description-correct";
/**
* @constant
*
* @type {string}
*/
Word.ID_MARK_INCORRECT = "h5p-description-incorrect";
/**
* Class for keeping track of selectable words.
*
* @class
* @param {jQuery} $word
*/
function Word($word, params) {
var self = this;
self.params = params;
H5P.EventDispatcher.call(self);
var input = $word.text();
var handledInput = input;
// Check if word is an answer
var isAnswer = checkForAnswer();
// Remove single asterisk and escape double asterisks.
handleAsterisks();
if (isAnswer) {
$word.text(handledInput);
}
const ariaText = document.createElement('span');
ariaText.classList.add('hidden-but-read');
$word[0].appendChild(ariaText);
/**
* Checks if the word is an answer by checking the first, second to last and last character of the word.
*
* @private
* @return {Boolean} Returns true if the word is an answer.
*/
function checkForAnswer() {
// Check last and next to last character, in case of punctuations.
var wordString = removeDoubleAsterisks(input);
if (wordString.charAt(0) === ('*') && wordString.length > 2) {
if (wordString.charAt(wordString.length - 1) === ('*')) {
handledInput = input.slice(1, input.length - 1);
return true;
}
// If punctuation, add the punctuation to the end of the word.
else if(wordString.charAt(wordString.length - 2) === ('*')) {
handledInput = input.slice(1, input.length - 2);
return true;
}
return false;
}
return false;
}
/**
* Removes double asterisks from string, used to handle input.
*
* @private
* @param {String} wordString The string which will be handled.
* @return {String} Returns a string without double asterisks.
*/
function removeDoubleAsterisks(wordString) {
var asteriskIndex = wordString.indexOf('*');
var slicedWord = wordString;
while (asteriskIndex !== -1) {
if (wordString.indexOf('*', asteriskIndex + 1) === asteriskIndex + 1) {
slicedWord = wordString.slice(0, asteriskIndex) + wordString.slice(asteriskIndex + 2, input.length);
}
asteriskIndex = wordString.indexOf('*', asteriskIndex + 1);
}
return slicedWord;
}
/**
* Escape double asterisks ** = *, and remove single asterisk.
*
* @private
*/
function handleAsterisks() {
var asteriskIndex = handledInput.indexOf('*');
while (asteriskIndex !== -1) {
handledInput = handledInput.slice(0, asteriskIndex) + handledInput.slice(asteriskIndex + 1, handledInput.length);
asteriskIndex = handledInput.indexOf('*', asteriskIndex + 1);
}
}
/**
* Removes any score points added to the marked word.
*/
self.clearScorePoint = function () {
const scorePoint = $word[0].querySelector('div');
if (scorePoint) {
scorePoint.parentNode.removeChild(scorePoint);
}
};
/**
* Get Word as a string
*
* @return {string} Word as text
*/
this.getText = function () {
return input;
};
/**
* Clears all marks from the word.
*
* @public
*/
this.markClear = function () {
$word
.attr('aria-selected', false)
.removeAttr('aria-describedby');
ariaText.innerHTML = '';
this.clearScorePoint();
};
/**
* Check if the word is correctly marked and style it accordingly.
* Reveal result
*
* @public
* @param {H5P.Question.ScorePoints} scorePoints
*/
this.markCheck = function (scorePoints) {
if (this.isSelected()) {
$word.attr('aria-describedby', isAnswer ? Word.ID_MARK_CORRECT : Word.ID_MARK_INCORRECT);
ariaText.innerHTML = isAnswer
? self.params.correctAnswer
: self.params.incorrectAnswer;
if (scorePoints) {
$word[0].appendChild(scorePoints.getElement(isAnswer));
}
}
else if (isAnswer) {
$word.attr('aria-describedby', Word.ID_MARK_MISSED);
ariaText.innerHTML = self.params.missedAnswer;
}
};
/**
* Checks if the word is marked correctly.
*
* @public
* @returns {Boolean} True if the marking is correct.
*/
this.isCorrect = function () {
return (isAnswer && this.isSelected());
};
/**
* Checks if the word is marked wrong.
*
* @public
* @returns {Boolean} True if the marking is wrong.
*/
this.isWrong = function () {
return (!isAnswer && this.isSelected());
};
/**
* Checks if the word is correct, but has not been marked.
*
* @public
* @returns {Boolean} True if the marking is missed.
*/
this.isMissed = function () {
return (isAnswer && !this.isSelected());
};
/**
* Checks if the word is an answer.
*
* @public
* @returns {Boolean} True if the word is an answer.
*/
this.isAnswer = function () {
return isAnswer;
};
/**
* Checks if the word is selected.
*
* @public
* @returns {Boolean} True if the word is selected.
*/
this.isSelected = function () {
return $word.attr('aria-selected') === 'true';
};
/**
* Sets that the Word is selected
*
* @public
*/
this.setSelected = function () {
$word.attr('aria-selected', 'true');
};
}
Word.prototype = Object.create(H5P.EventDispatcher.prototype);
Word.prototype.constructor = Word;
return Word;
})();

View File

@@ -0,0 +1,132 @@
H5P.MarkTheWords = H5P.MarkTheWords || {};
/**
* Mark the words XapiGenerator
*/
H5P.MarkTheWords.XapiGenerator = (function ($) {
/**
* Xapi statements Generator
* @param {H5P.MarkTheWords} markTheWords
* @constructor
*/
function XapiGenerator(markTheWords) {
/**
* Generate answered event
* @return {H5P.XAPIEvent}
*/
this.generateAnsweredEvent = function () {
var xAPIEvent = markTheWords.createXAPIEventTemplate('answered');
// Extend definition
var objectDefinition = createDefinition(markTheWords);
$.extend(true, xAPIEvent.getVerifiedStatementValue(['object', 'definition']), objectDefinition);
// Set score
xAPIEvent.setScoredResult(markTheWords.getScore(),
markTheWords.getMaxScore(),
markTheWords,
true,
markTheWords.getScore() === markTheWords.getMaxScore()
);
// Extend user result
var userResult = {
response: getUserSelections(markTheWords)
};
$.extend(xAPIEvent.getVerifiedStatementValue(['result']), userResult);
return xAPIEvent;
};
}
/**
* Create object definition for question
*
* @param {H5P.MarkTheWords} markTheWords
* @return {Object} Object definition
*/
function createDefinition(markTheWords) {
var definition = {};
definition.description = {
'en-US': replaceLineBreaks(markTheWords.params.taskDescription)
};
definition.type = 'http://adlnet.gov/expapi/activities/cmi.interaction';
definition.interactionType = 'choice';
definition.correctResponsesPattern = [getCorrectResponsesPattern(markTheWords)];
definition.choices = getChoices(markTheWords);
definition.extensions = {
'https://h5p.org/x-api/line-breaks': markTheWords.getIndexesOfLineBreaks()
};
return definition;
}
/**
* Replace line breaks
*
* @param {string} description
* @return {string}
*/
function replaceLineBreaks(description) {
var sanitized = $('<div>' + description + '</div>').text();
return sanitized.replace(/(\n)+/g, '<br/>');
}
/**
* Get all choices that it is possible to choose between
*
* @param {H5P.MarkTheWords} markTheWords
* @return {Array}
*/
function getChoices(markTheWords) {
return markTheWords.selectableWords.map(function (word, index) {
var text = word.getText();
if (text.charAt(0) === '*' && text.charAt(text.length - 1) === '*') {
text = text.substr(1, text.length - 2);
}
return {
id: index.toString(),
description: {
'en-US': $('<div>' + text + '</div>').text()
}
};
});
}
/**
* Get selected words as a user response pattern
*
* @param {H5P.MarkTheWords} markTheWords
* @return {string}
*/
function getUserSelections(markTheWords) {
return markTheWords.selectableWords
.reduce(function (prev, word, index) {
if (word.isSelected()) {
prev.push(index);
}
return prev;
}, []).join('[,]');
}
/**
* Get correct response pattern from correct words
*
* @param {H5P.MarkTheWords} markTheWords
* @return {string}
*/
function getCorrectResponsesPattern(markTheWords) {
return markTheWords.selectableWords
.reduce(function (prev, word, index) {
if (word.isAnswer()) {
prev.push(index);
}
return prev;
}, []).join('[,]');
}
return XapiGenerator;
})(H5P.jQuery);

View File

@@ -0,0 +1,244 @@
[
{
"label": "Task description",
"importance": "high",
"name": "taskDescription",
"type": "text",
"widget": "html",
"description": "Describe how the user should solve the task.",
"placeholder": "Click on all the verbs in the text that follows.",
"enterMode": "p",
"tags": [
"strong",
"em",
"u",
"a",
"ul",
"ol",
"h2",
"h3",
"hr",
"pre",
"code"
]
},
{
"label": "Textfield",
"importance": "high",
"name": "textField",
"type": "text",
"widget": "html",
"tags": [
"p",
"br",
"strong",
"em",
"code"
],
"placeholder": "This is an answer: *answer*.",
"description": "",
"important": {
"description": "<ul><li>Correct words are marked with asterisks (*) before and after the word.</li><li>Asterisks can be added within marked words by adding another asterisk, *correctword*** => correctword*.</li><li>Only words may be marked as correct. Not phrases.</li></ul>",
"example": "The correct words are marked like this: *correctword*, an asterisk is written like this: *correctword***."
}
},
{
"name": "overallFeedback",
"type": "group",
"label": "Overall Feedback",
"importance": "low",
"expanded": true,
"fields": [
{
"name": "overallFeedback",
"type": "list",
"widgets": [
{
"name": "RangeList",
"label": "Default"
}
],
"importance": "high",
"label": "Define custom feedback for any score range",
"description": "Click the \"Add range\" button to add as many ranges as you need. Example: 0-20% Bad score, 21-91% Average Score, 91-100% Great Score!",
"entity": "range",
"min": 1,
"defaultNum": 1,
"optional": true,
"field": {
"name": "overallFeedback",
"type": "group",
"importance": "low",
"fields": [
{
"name": "from",
"type": "number",
"label": "Score Range",
"min": 0,
"max": 100,
"default": 0,
"unit": "%"
},
{
"name": "to",
"type": "number",
"min": 0,
"max": 100,
"default": 100,
"unit": "%"
},
{
"name": "feedback",
"type": "text",
"label": "Feedback for defined score range",
"importance": "low",
"placeholder": "Fill in the feedback",
"optional": true
}
]
}
}
]
},
{
"label": "Text for \"Check\" button",
"importance": "low",
"name": "checkAnswerButton",
"type": "text",
"default": "Check",
"common": true
},
{
"label": "Text for \"Retry\" button",
"importance": "low",
"name": "tryAgainButton",
"type": "text",
"default": "Retry",
"common": true
},
{
"label": "Text for \"Show solution\" button",
"importance": "low",
"name": "showSolutionButton",
"type": "text",
"default": "Show solution",
"common": true
},
{
"name": "behaviour",
"importance": "low",
"type": "group",
"label": "Behavioural settings.",
"description": "These options will let you control how the task behaves.",
"optional": true,
"fields": [
{
"name": "enableRetry",
"type": "boolean",
"label": "Enable \"Retry\"",
"importance": "low",
"default": true
},
{
"name": "enableSolutionsButton",
"type": "boolean",
"label": "Enable \"Show solution\" button",
"importance": "low",
"default": true
},
{
"name": "enableCheckButton",
"type": "boolean",
"label": "Enable \"Check\" button",
"widget": "none",
"importance": "low",
"default": true,
"optional": true
},
{
"name": "showScorePoints",
"type": "boolean",
"label": "Show score points",
"description": "Show points earned for each answer.",
"importance": "low",
"default": true
}
]
},
{
"label": "Correct answer text",
"importance": "low",
"name": "correctAnswer",
"type": "text",
"default": "Correct!",
"description": "Text used to indicate that an answer is correct",
"common": true
},
{
"label": "Incorrect answer text",
"importance": "low",
"name": "incorrectAnswer",
"type": "text",
"default": "Incorrect!",
"description": "Text used to indicate that an answer is incorrect",
"common": true
},
{
"label": "Missed answer text",
"importance": "low",
"name": "missedAnswer",
"type": "text",
"default": "Answer not found!",
"description": "Text used to indicate that an answer is missing",
"common": true
},
{
"label": "Description for Display Solution",
"importance": "low",
"name": "displaySolutionDescription",
"type": "text",
"default": "Task is updated to contain the solution.",
"description": "This text tells the user that the tasks has been updated with the solution.",
"common": true
},
{
"name": "scoreBarLabel",
"type": "text",
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points",
"importance": "low",
"common": true
},
{
"name": "a11yFullTextLabel",
"type": "text",
"label": "Label for the full readable text for assistive technologies",
"default": "Full readable text",
"importance": "low",
"common": true
},
{
"name": "a11yClickableTextLabel",
"type": "text",
"label": "Label for the text where words can be marked for assistive technologies",
"default": "Full text where words can be marked",
"importance": "low",
"common": true
},
{
"name": "a11ySolutionModeHeader",
"type": "text",
"label": "Solution mode header for assistive technologies",
"default": "Solution mode",
"importance": "low",
"common": true
},
{
"name": "a11yCheckingHeader",
"type": "text",
"label": "Checking mode header for assistive technologies",
"default": "Checking mode",
"importance": "low",
"common": true
}
]

View File

@@ -0,0 +1,112 @@
/* The main containers for the module, specific to this module. */
.h5p-mark-the-words {
position: relative;
background: rgba(255, 255, 255, 0.9);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#e6FFFFFF,endColorstr=#e6FFFFFF);
overflow: hidden;
}
.h5p-mark-the-words-descriptions {
display: none;
}
/* Actual text paragraphs */
.h5p-mark-the-words .h5p-word-inner p {
font-size: 1em;
font-weight: normal;
padding: 0;
margin: 0 0 1em;
line-height: inherit;
}
.h5p-mark-the-words button.h5p-button:before {
font-family: 'H5PFontAwesome4';
content: "\f06e";
padding-right: 0.5em;
}
/* Selectable words container */
.h5p-mark-the-words .h5p-word-selectable-words {
line-height: 1.75em;
outline: none;
}
/* Selectable words*/
.h5p-mark-the-words [role="option"] {
white-space: nowrap;
padding: 0.15em;
border-radius: 0.25em;
cursor: pointer;
position: relative;
}
.h5p-mark-the-words .h5p-word-selectable-words:not(.h5p-disable-hover) [role="option"]:hover {
box-shadow: inset 0px 0px 0px 2px #cee0f4;
}
/* Colors and styling for word selections */
.h5p-mark-the-words [aria-selected="true"] {
background: #cee0f4;
}
/* Missed word*/
.h5p-mark-the-words [aria-describedby="h5p-description-missed"] {
color: #255c41;
font-weight: bold;
border: 1px #255c41 dashed;
background-color: #d4f6e6;
}
/* Correctly answered marking */
.h5p-mark-the-words [aria-describedby="h5p-description-correct"] {
background: #9dd8bb;
color: #255c41;
display: inline-block;
line-height: 1;
}
/* Wrongly answered marking */
.h5p-mark-the-words [aria-describedby="h5p-description-incorrect"] {
background-color: #f7d0d0;
color: #b71c1c;
text-decoration: line-through;
display: inline-block;
line-height: 1;
}
/* Feedback icons */
.h5p-mark-the-words [aria-describedby="h5p-description-correct"]:after {
position: relative;
right: 0.1em;
text-decoration: none;
content: "\f00c";
font-family: 'H5PFontAwesome4';
color: #255c41;
padding-left: 0.75em;
}
.h5p-mark-the-words [aria-describedby="h5p-description-incorrect"]:after {
position: relative;
right: 0.1em;
display: inline-block;
font-family: 'H5PFontAwesome4';
text-decoration: none;
content: "\f00d";
color: #b71c1c;
padding-left: 0.75em;
}
/* SPECIFIC CSS CLASSES FOR MARK THE WORDS MODULE: */
/* Start state for button: */
.h5p-mark-the-words button.h5p-button.h5p-check-button:before {
content: "\f058";
}
.h5p-mark-the-words button.h5p-button.h5p-retry-button:before {
content: "\f021";
}
.h5p-mark-the-words button.h5p-button.h5p-check-button {
display: inline-block;
}
button.h5p-retry-button.h5p-retry-button {
display: none;
}
.h5p-mark-the-words .hidden-but-read {
position: absolute;
height: 0;
width: 0;
overflow: hidden;
}

View File

@@ -0,0 +1,67 @@
var H5PUpgrades = H5PUpgrades || {};
H5PUpgrades['H5P.MarkTheWords'] = (function () {
return {
1: {
1: {
contentUpgrade: function (parameters, finished) {
// Moved all behavioural settings into "behaviour" group.
parameters.behaviour = {
enableRetry: parameters.enableRetry === undefined ? true: parameters.enableRetry,
enableSolutionsButton: parameters.enableShowSolution === undefined ? true : parameters.enableShowSolution
};
delete parameters.enableRetry;
delete parameters.enableShowSolution;
finished(null, parameters);
}
},
5: {
contentUpgrade: function (parameters, finished) {
if (parameters.textField !== undefined) {
parameters.textField = parameters.textField.replace(/\n/g, "<br />");
}
finished(null, parameters);
}
},
/**
* Asynchronous content upgrade hook.
* Upgrades content parameters to support Mark the Words 1.7
*
* Move old feedback message to the new overall feedback system.
* Do not show the new score points for old content being upgraded.
*
* @param {object} parameters
* @param {function} finished
*/
7: function (parameters, finished) {
if (parameters && parameters.score) {
parameters.overallFeedback = [
{
'from': 0,
'to': 100,
'feedback': parameters.score
}
];
delete parameters.score;
}
finished(null, parameters);
},
9: function (parameters, finished, extras) {
var title;
if (parameters) {
title = parameters.taskDescription;
}
extras = extras || {};
extras.metadata = extras.metadata || {};
extras.metadata.title = (title) ? title.replace(/<[^>]*>?/g, '') : ((extras.metadata.title) ? extras.metadata.title : 'Mark the Words');
finished(null, parameters, extras);
}
}
};
})();