From 4addf55d60f0e7ede77e82c5fe3aa6870ba6de44 Mon Sep 17 00:00:00 2001 From: Oliver Tacke Date: Thu, 8 Oct 2020 19:26:18 +0200 Subject: [PATCH 1/4] KL-1066 Add option for audio on picking up/dropping elements --- css/dragquestion.css | 4 ++ language/.en.json | 24 +++++++++- language/af.json | 24 +++++++++- language/ar.json | 24 +++++++++- language/bg.json | 24 +++++++++- language/bs.json | 24 +++++++++- language/ca.json | 24 +++++++++- language/cs.json | 24 +++++++++- language/da.json | 24 +++++++++- language/de.json | 22 +++++++++ language/el.json | 24 +++++++++- language/es-mx.json | 22 +++++++++ language/es.json | 22 +++++++++ language/et.json | 24 +++++++++- language/eu.json | 22 +++++++++ language/fi.json | 24 +++++++++- language/fr.json | 24 +++++++++- language/he.json | 22 +++++++++ language/hu.json | 24 +++++++++- language/it.json | 22 +++++++++ language/ja.json | 24 +++++++++- language/km.json | 24 +++++++++- language/ko.json | 22 +++++++++ language/nb.json | 24 +++++++++- language/nl.json | 22 +++++++++ language/nn.json | 24 +++++++++- language/pl.json | 24 +++++++++- language/pt-br.json | 24 +++++++++- language/pt.json | 24 +++++++++- language/ro.json | 24 +++++++++- language/ru.json | 24 +++++++++- language/sl.json | 24 +++++++++- language/sma.json | 24 +++++++++- language/sme.json | 24 +++++++++- language/smj.json | 24 +++++++++- language/sr.json | 24 +++++++++- language/sv.json | 24 +++++++++- language/tr.json | 24 +++++++++- language/uk.json | 24 +++++++++- language/vi.json | 24 +++++++++- language/zh-hans.json | 24 +++++++++- language/zh-tw.json | 24 +++++++++- semantics.json | 40 +++++++++++++++- src/drag-question.js | 103 ++++++++++++++++++++++++++++++++++++++++++ src/draggable.js | 9 ++++ src/dropzone.js | 9 +++- 46 files changed, 1098 insertions(+), 35 deletions(-) diff --git a/css/dragquestion.css b/css/dragquestion.css index c6ca0e24..157a2d38 100644 --- a/css/dragquestion.css +++ b/css/dragquestion.css @@ -287,3 +287,7 @@ html.h5p-iframe .h5p-container.h5p-dragquestion.h5p-semi-fullscreen { top: -0.15em; right: -0.15em; } + +.h5p-dragquestion .h5p-dragquestion-no-display { + display: none; +} diff --git a/language/.en.json b/language/.en.json index 122f4cd0..b087a355 100644 --- a/language/.en.json +++ b/language/.en.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/af.json b/language/af.json index 122f4cd0..b087a355 100644 --- a/language/af.json +++ b/language/af.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/ar.json b/language/ar.json index 7e612bd0..3b9b14cb 100644 --- a/language/ar.json +++ b/language/ar.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "الاعدادات السلوكية", "description": "ستتيح لك هذه الخيارات التحكم في كيفية تصرف المهمة.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/bg.json b/language/bg.json index 91dd85db..53fac5ac 100644 --- a/language/bg.json +++ b/language/bg.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Настройки на поведението", "description": "Тези опции ще ви позволят да контролирате поведението на задачата.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/bs.json b/language/bs.json index 53094e97..7d2df9fc 100644 --- a/language/bs.json +++ b/language/bs.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Podešavanje interakcije", "description": "Ova opcija kontrolira kako se zadatak ponaša.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/ca.json b/language/ca.json index 78f3293d..41a9746c 100644 --- a/language/ca.json +++ b/language/ca.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Opcions de comportament", "description": "Aquestes opcions et permetran controlar com es comporta la tasca.", @@ -264,4 +286,4 @@ "default": "Intenta de nou la tasca. Reajusta totes les respostes i comença la tasca de nou." } ] -} \ No newline at end of file +} diff --git a/language/cs.json b/language/cs.json index ace056b9..b63a0d5d 100644 --- a/language/cs.json +++ b/language/cs.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Nastavení chování", "description": "Tyto možnosti vám umožní řídit, jak se bude úloha chovat.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/da.json b/language/da.json index 0d5c7d4e..3c76fc79 100644 --- a/language/da.json +++ b/language/da.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Indstillinger for opgave-opførsel", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/de.json b/language/de.json index 037bb8af..471a8543 100644 --- a/language/de.json +++ b/language/de.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Verhaltenseinstellungen", "description": "Diese Optionen legen fest, wie die Aufgabe im Detail funktioniert.", diff --git a/language/el.json b/language/el.json index ab246ed2..bcd996f9 100644 --- a/language/el.json +++ b/language/el.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Ρυθμίσεις άσκησης", "description": "Αυτές οι ρυθμίσεις σας επιτρέπουν να καθορίσετε τον τρόπο λειτουργίας της άσκησης.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/es-mx.json b/language/es-mx.json index 69fa0fd9..fba6290e 100644 --- a/language/es-mx.json +++ b/language/es-mx.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Ajustes de comportamiento", "description": "Estas opciones le permitirán controlar como se comporta el trabajo.", diff --git a/language/es.json b/language/es.json index 79a71039..29cf91b5 100644 --- a/language/es.json +++ b/language/es.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Ajustes de comportamiento", "description": "Estas opciones le permitirán controlar como se comporta el trabajo.", diff --git a/language/et.json b/language/et.json index 1b603e07..e940bac0 100644 --- a/language/et.json +++ b/language/et.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Käitumisseaded", "description": "Need valikud võimaldavad sul määrata, kuidas ülesanne käitub.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/eu.json b/language/eu.json index 917f2e5e..50e365f6 100644 --- a/language/eu.json +++ b/language/eu.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Jokabideko ezarpenak", "description": "Aukera hauen bidez kontrolatu dezakezu zereginaren jokabidea.", diff --git a/language/fi.json b/language/fi.json index 9d2e2777..276343bb 100644 --- a/language/fi.json +++ b/language/fi.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Yleisasetukset", "description": "Näillä valinnoilla voit ohjailla tehtävän toimintoja.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/fr.json b/language/fr.json index 474430bb..84431a3c 100644 --- a/language/fr.json +++ b/language/fr.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Options générales.", "description": "Ces options vous permettent de contrôler le déroulement de vos activités.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/he.json b/language/he.json index 4b57bd55..961527f3 100644 --- a/language/he.json +++ b/language/he.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "הגדרות התנהגות", "description": "אפשרויות אלה יתנו לך לשלוט בהתנהגות המשימה.", diff --git a/language/hu.json b/language/hu.json index 122f4cd0..b087a355 100644 --- a/language/hu.json +++ b/language/hu.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/it.json b/language/it.json index 66cce1c3..7155eaed 100644 --- a/language/it.json +++ b/language/it.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Impostazioni di esecuzione", "description": "Queste opzioni permettono di controllare l'andamento del compito", diff --git a/language/ja.json b/language/ja.json index fa6eafd9..445c5bf1 100644 --- a/language/ja.json +++ b/language/ja.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "動作設定", "description": "これらのオプションでタスクがどのように動作するかを制御できます。", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/km.json b/language/km.json index c66832b5..54bd67c5 100644 --- a/language/km.json +++ b/language/km.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/ko.json b/language/ko.json index 23e0cfc3..64512689 100644 --- a/language/ko.json +++ b/language/ko.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "행동 설정", "description": "이 설정은 과제를 해결하는 과정을 통제.", diff --git a/language/nb.json b/language/nb.json index ad363bc4..7496e36a 100644 --- a/language/nb.json +++ b/language/nb.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Innstillinger for oppgaveoppførsel", "description": "Disse instillingene lar deg bestemme hvordan oppgavetypen skal oppføre seg.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/nl.json b/language/nl.json index d42a4909..a2328460 100644 --- a/language/nl.json +++ b/language/nl.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Gedragsinstellingen", "description": "Deze opties bepalen hoe de taak op de input reageert.", diff --git a/language/nn.json b/language/nn.json index 1f3aff3f..708089e4 100644 --- a/language/nn.json +++ b/language/nn.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Innstillinger for oppgave-oppførsel", "description": "Disse instillingene lar deg bestemme hvordan oppgavetypen skal oppføre seg.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/pl.json b/language/pl.json index 091b2133..268e45b5 100644 --- a/language/pl.json +++ b/language/pl.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Ustawienia zachowania", "description": "Te opcje pozwalają kontrolować zachowanie zadania.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/pt-br.json b/language/pt-br.json index f9b9e716..4a808e53 100644 --- a/language/pt-br.json +++ b/language/pt-br.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Configurações comportamentais", "description": "Estas opções permitirão que você controle como a tarefa se comporta.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/pt.json b/language/pt.json index 1a63f12c..8333c235 100644 --- a/language/pt.json +++ b/language/pt.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Definições de funcionamento", "description": "Estas opções permitem-lhe controlar o funcionamento desta atividade.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/ro.json b/language/ro.json index 122f4cd0..b087a355 100644 --- a/language/ro.json +++ b/language/ro.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/ru.json b/language/ru.json index cfa12b4c..cb07f260 100644 --- a/language/ru.json +++ b/language/ru.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Настройки поведения", "description": "Эти параметры позволят вам контролировать поведение задачи.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/sl.json b/language/sl.json index 17eb31ca..cdb86a61 100644 --- a/language/sl.json +++ b/language/sl.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Nastavitve interakcije", "description": "Nastavitve omogočajo nadzor nad interakcijo aktivnosti za udeležence.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/sma.json b/language/sma.json index 122f4cd0..b087a355 100644 --- a/language/sma.json +++ b/language/sma.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/sme.json b/language/sme.json index 122f4cd0..b087a355 100644 --- a/language/sme.json +++ b/language/sme.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/smj.json b/language/smj.json index 122f4cd0..b087a355 100644 --- a/language/smj.json +++ b/language/smj.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/sr.json b/language/sr.json index 122f4cd0..b087a355 100644 --- a/language/sr.json +++ b/language/sr.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/sv.json b/language/sv.json index 4766fd27..6bcd0fa0 100644 --- a/language/sv.json +++ b/language/sv.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/tr.json b/language/tr.json index 6433e4dc..cab0aa11 100644 --- a/language/tr.json +++ b/language/tr.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Davranış ayarları", "description": "Bu seçenekler aktivitenin çalışma şeklini denetlemenize izin verir.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/uk.json b/language/uk.json index cd9773f4..2c59d2f3 100644 --- a/language/uk.json +++ b/language/uk.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Настройки поведінки", "description": "Ці параметри дозволять вам контролювати поведінку завдання.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/vi.json b/language/vi.json index 122f4cd0..b087a355 100644 --- a/language/vi.json +++ b/language/vi.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "Behavioural settings", "description": "These options will let you control how the task behaves.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/zh-hans.json b/language/zh-hans.json index 4dabf88c..d6c118e2 100644 --- a/language/zh-hans.json +++ b/language/zh-hans.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "行为设定", "description": "这些选项将可让您控制任务的行为.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/language/zh-tw.json b/language/zh-tw.json index 9bda6053..b04dd709 100644 --- a/language/zh-tw.json +++ b/language/zh-tw.json @@ -137,6 +137,28 @@ } ] }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Pick up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped." + }, + { + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone." + }, + { + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone." + } + ] + }, { "label": "行為設定", "description": "這些選項將可讓您控制任務的行為.", @@ -264,4 +286,4 @@ "default": "Retry the task. Reset all responses and start the task over again." } ] -} \ No newline at end of file +} diff --git a/semantics.json b/semantics.json index f598ca9e..81f0f9f9 100644 --- a/semantics.json +++ b/semantics.json @@ -339,6 +339,44 @@ } ] }, + { + "name": "audio", + "type": "group", + "label": "Audio", + "importance": "low", + "description": "Audio samples", + "optional": true, + "fields": [ + { + "name": "pickedUp", + "type": "audio", + "label": "Pick up", + "description": "Audio to play when draggable is picked up.", + "importance": "low" + }, + { + "name": "dropped", + "type": "audio", + "label": "Dropped", + "description": "Audio to generally play when draggable is dropped.", + "importance": "low" + }, + { + "name": "droppedCorrect", + "type": "audio", + "label": "Dropped correctly", + "description": "Audio to play when draggable is dropped on correct dropzone.", + "importance": "low" + }, + { + "name": "droppedWrong", + "type": "audio", + "label": "Dropped wrong", + "description": "Audio to play when draggable is dropped on wrong dropzone.", + "importance": "low" + } + ] + }, { "name": "behaviour", "type": "group", @@ -592,4 +630,4 @@ "importance": "low", "common": true } -] \ No newline at end of file +] diff --git a/src/drag-question.js b/src/drag-question.js index b54a2c29..84c62058 100644 --- a/src/drag-question.js +++ b/src/drag-question.js @@ -55,6 +55,7 @@ function C(options, contentId, contentData) { } }, overallFeedback: [], + audio: {}, behaviour: { enableRetry: true, enableCheckButton: true, @@ -84,6 +85,8 @@ function C(options, contentId, contentData) { this.answered = (contentData && contentData.previousState !== undefined && contentData.previousState.answers !== undefined && contentData.previousState.answers.length); this.blankIsCorrect = true; + this.audios = {}; + this.backgroundOpacity = (this.options.behaviour.backgroundOpacity === undefined || this.options.behaviour.backgroundOpacity.trim() === '') ? undefined : this.options.behaviour.backgroundOpacity; self.$noDropZone = $(''); @@ -161,6 +164,10 @@ function C(options, contentId, contentData) { event.data.removeAttribute('aria-grabbed'); } }); + draggable.on('pickedUp', () => { + this.resetAudios(); + this.playAudio('pickedUp'); + }); draggable.on('focus', function (event) { controls.drag.setTabbable(event.data); event.data.focus(); @@ -172,6 +179,12 @@ function C(options, contentId, contentData) { setDropEffect(event.data); }); draggable.on('dragend', function () { + // The special dropped sounds are more important and should not be stopped + if (!self.isAudioPlaying(['droppedWrong', 'droppedCorrect'])) { + self.resetAudios(); + self.playAudio('dropped'); + } + if (highlightDropZones) { self.$container.removeClass('h5p-dq-highlight-dz'); } @@ -243,6 +256,18 @@ function C(options, contentId, contentData) { } } }); + + // React on dropping draggable on dropzone + this.dropZones[i].on('dropped', event => { + const correctElements = this.options.question.task.dropZones[event.data.dropzoneId].correctElements; + this.resetAudios(); + if (correctElements.indexOf(`${event.data.draggableId}`) !== -1) { + this.playAudio('droppedCorrect'); + } + else { + this.playAudio('droppedWrong'); + } + }) } this.on('resize', self.resize, self); @@ -555,6 +580,32 @@ C.prototype.createQuestionContent = function () { for (i = 0; i < this.dropZones.length; i++) { this.dropZones[i].appendTo(this.$container, this.draggables); } + + // Create audio + for (let type in this.options.audio) { + const audio = this.options.audio; + + // Semantics might get other audio options, filter for audio content + if ( + !Array.isArray(audio[type]) || + audio[type].length < 1 || + !audio[type][0].path || + !audio[type][0].mime || + audio[type][0].mime.split('/')[0] !== 'audio' + ) { + return; + } + + // Attach audio elements + const player = document.createElement('audio'); + player.classList.add('h5p-dragquestion-no-display'); + player.src = H5P.getPath(audio[type][0].path, this.contentId); + this.$container.append(player); + + // Track audio elements + this.audios[type] = player; + } + return this.$container; }; @@ -1001,6 +1052,58 @@ C.prototype.getTitle = function() { return H5P.createTitle((this.contentData && this.contentData.metadata && this.contentData.metadata.title) ? this.contentData.metadata.title : 'Drag and drop'); }; +/** + * Play audio sample. + * @param {string} identifier Identifier for audio. + */ +C.prototype.playAudio = function(identifier) { + if (!this.$container.closest('.h5p-content').hasClass('using-mouse')) { + return; // Don't disturb ARIA + } + + if (typeof identifier !== 'string') { + return; + } + + if (this.audios[identifier]) { + this.audios[identifier].play(); + } +}; + +/** + * Reset audios. + */ +C.prototype.resetAudios = function() { + for (let type in this.audios) { + this.audios[type].pause(); + this.audios[type].load(); + } +}; + +/** + * Detect whether audio is playing. + * @param {string|string[]} checkAudios Limit check to audios with these identifiers. + * @return {boolean} True, if audio is playing. + */ +C.prototype.isAudioPlaying = function(checkAudios) { + if (!Array.isArray(checkAudios)) { + checkAudios = [checkAudios]; + } + + let audioPlaying = false; + for (let type in this.audios) { + if (checkAudios.length > 0 && checkAudios.indexOf(type) === -1) { + continue; // Skip, not interested in that type + } + + if (!this.audios[type].paused) { + audioPlaying = true; + break; + } + } + return audioPlaying +}; + /** * Initialize controls to improve a11Y. * diff --git a/src/draggable.js b/src/draggable.js index 9b331107..1e9d0f6e 100644 --- a/src/draggable.js +++ b/src/draggable.js @@ -127,6 +127,15 @@ export default class Draggable extends H5P.EventDispatcher { appendTo: $container, title: self.type.params.title }) + .on('mousedown', () => { + self.trigger('pickedUp'); + }) + .on('keydown', (event) => { + if (event.key !== 'Enter' && event.key !== ' ') { + return; + } + self.trigger('pickedUp'); + }) .on('click', function () { self.trigger('focus', this); }) diff --git a/src/dropzone.js b/src/dropzone.js index a44d9b01..c2913cec 100644 --- a/src/dropzone.js +++ b/src/dropzone.js @@ -94,6 +94,13 @@ export default class DropZone { return self.accepts(result.draggable, draggables); }, drop: function (event, ui) { + // Report dropped element + const draggable = DragUtils.elementToDraggable(draggables, ui.draggable); + self.trigger('dropped', { + draggableId: draggable.draggable.id, + dropzoneId: self.id + }); + var $this = $(this); DragUtils.setOpacity($this.removeClass('h5p-over'), 'background', self.backgroundOpacity); ui.draggable.data('addToZone', self.id); @@ -351,7 +358,7 @@ export default class DropZone { } /** - * Invoked when reset task is run. Cleanup any internal states. + * Invoked when reset task is run. Cleanup any internal states. */ reset() { // Remove alignables From e3ac7b5a95873adc3c9290f58064873e5459ea72 Mon Sep 17 00:00:00 2001 From: Oliver Tacke Date: Mon, 12 Oct 2020 09:29:46 +0200 Subject: [PATCH 2/4] KL-1066 Add option for custom audios for each draggable --- language/.en.json | 16 +++++++++- language/af.json | 16 +++++++++- language/ar.json | 16 +++++++++- language/bg.json | 16 +++++++++- language/bs.json | 16 +++++++++- language/ca.json | 16 +++++++++- language/cs.json | 16 +++++++++- language/da.json | 16 +++++++++- language/de.json | 16 +++++++++- language/el.json | 16 +++++++++- language/es-mx.json | 16 +++++++++- language/es.json | 16 +++++++++- language/et.json | 16 +++++++++- language/eu.json | 16 +++++++++- language/fi.json | 16 +++++++++- language/fr.json | 16 +++++++++- language/he.json | 16 +++++++++- language/hu.json | 16 +++++++++- language/it.json | 16 +++++++++- language/ja.json | 16 +++++++++- language/km.json | 16 +++++++++- language/ko.json | 16 +++++++++- language/nb.json | 16 +++++++++- language/nl.json | 16 +++++++++- language/nn.json | 16 +++++++++- language/pl.json | 16 +++++++++- language/pt-br.json | 16 +++++++++- language/pt.json | 16 +++++++++- language/ro.json | 16 +++++++++- language/ru.json | 16 +++++++++- language/sl.json | 16 +++++++++- language/sma.json | 16 +++++++++- language/sme.json | 16 +++++++++- language/smj.json | 16 +++++++++- language/sr.json | 16 +++++++++- language/sv.json | 16 +++++++++- language/tr.json | 16 +++++++++- language/uk.json | 16 +++++++++- language/vi.json | 16 +++++++++- language/zh-hans.json | 16 +++++++++- language/zh-tw.json | 16 +++++++++- semantics.json | 26 +++++++++++++++- src/drag-question.js | 69 +++++++++++++++++++++++++++++++++---------- src/draggable.js | 27 +++++++++++++++-- 44 files changed, 719 insertions(+), 59 deletions(-) diff --git a/language/.en.json b/language/.en.json index b087a355..83e25f21 100644 --- a/language/.en.json +++ b/language/.en.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/af.json b/language/af.json index b087a355..83e25f21 100644 --- a/language/af.json +++ b/language/af.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/ar.json b/language/ar.json index 3b9b14cb..06774313 100644 --- a/language/ar.json +++ b/language/ar.json @@ -53,6 +53,20 @@ { "label": "عدد لانهائي من حالات العنصر", "description": "استنساخ هذا العنصر بحيث يمكن سحبه إلى مناطق إفلات متعددة." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/bg.json b/language/bg.json index 53fac5ac..2bb072d1 100644 --- a/language/bg.json +++ b/language/bg.json @@ -53,6 +53,20 @@ { "label": "Безкраен брой инстанции на елементи", "description": "Копира този елемент, така че да може да се плъзга в няколко зони на пускане." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/bs.json b/language/bs.json index 7d2df9fc..b99b1d24 100644 --- a/language/bs.json +++ b/language/bs.json @@ -53,6 +53,20 @@ { "label": "Neograničen broj elemenata", "description": "Klonira ovaj element kako bi mogao biti spušten na višestruke zone." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/ca.json b/language/ca.json index 41a9746c..0a2c69b9 100644 --- a/language/ca.json +++ b/language/ca.json @@ -53,6 +53,20 @@ { "label": "Nombre infinit d’instàncies d’elements", "description": "Clona aquest element perquè es pugui arrossegar a diferents zones per deixar anar." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/cs.json b/language/cs.json index b63a0d5d..13603c6d 100644 --- a/language/cs.json +++ b/language/cs.json @@ -53,6 +53,20 @@ { "label": "Nekonečný počet instancí prvků", "description": "Klonuje tento prvek, takže jej lze přetáhnout do více zón přetažení." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/da.json b/language/da.json index 3c76fc79..ee217d54 100644 --- a/language/da.json +++ b/language/da.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/de.json b/language/de.json index 471a8543..cec2f206 100644 --- a/language/de.json +++ b/language/de.json @@ -53,6 +53,20 @@ { "label": "Element kann mehrfach in Ablagezonen gezogen werden", "description": "Wenn dieses Element verschoben wird, werden Kopien davon erstellt, so dass es beliebig oft in verschiedene Ablagezonen gezogen werden kann." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/el.json b/language/el.json index bcd996f9..649cf915 100644 --- a/language/el.json +++ b/language/el.json @@ -53,6 +53,20 @@ { "label": "Απεριόριστος αριθμός επαναλήψεων στοιχείου", "description": "Δημιουργεί αντίγραφα του στοιχείου έτσι ώστε να μπορεί να συρθεί σε πολλαπλές περιοχές απόθεσης." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/es-mx.json b/language/es-mx.json index fba6290e..8fc637be 100644 --- a/language/es-mx.json +++ b/language/es-mx.json @@ -53,6 +53,20 @@ { "label": "Número infinito de instancias de elementos", "description": "Clona este elemento para que pueda ser arrastrado a múltiples zonas de caída." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/es.json b/language/es.json index 29cf91b5..a1c836b4 100644 --- a/language/es.json +++ b/language/es.json @@ -53,6 +53,20 @@ { "label": "Número infinito de instancias de elementos", "description": "Clona este elemento para que pueda ser arrastrado a múltiples zonas de caída." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/et.json b/language/et.json index e940bac0..b9177f2d 100644 --- a/language/et.json +++ b/language/et.json @@ -53,6 +53,20 @@ { "label": "Lõpmatu arv elemendi kloone", "description": "Paljundab elementi, et seda saaks lohistada mitmetesse sihtkohtadesse." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/eu.json b/language/eu.json index 50e365f6..c02af96c 100644 --- a/language/eu.json +++ b/language/eu.json @@ -53,6 +53,20 @@ { "label": "Elementu sekuentzia kopuru infinitua", "description": "Elementu hau klonatzen du, hartara elementua hainbat jaregiteko zonatara jaregin daiteke." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/fi.json b/language/fi.json index 276343bb..e782603c 100644 --- a/language/fi.json +++ b/language/fi.json @@ -53,6 +53,20 @@ { "label": "Loputon määrä elementin kopioita", "description": "Kloonaa elementin, jotta sen voi raahata useisiin kohteisiin." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/fr.json b/language/fr.json index 84431a3c..fa22dd95 100644 --- a/language/fr.json +++ b/language/fr.json @@ -53,6 +53,20 @@ { "label": "Nombre illimité d'instances pour cet élément", "description": "Cloner cet élément de sorte qu'il puisse être déposé dans plusieurs zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/he.json b/language/he.json index 961527f3..cb485f21 100644 --- a/language/he.json +++ b/language/he.json @@ -53,6 +53,20 @@ { "label": "מספר אינסופי של רכיבים", "description": "בחרו ברכיב זה כך שיהיה אפשר לגרור אותו למספר אזורי יעד." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/hu.json b/language/hu.json index b087a355..83e25f21 100644 --- a/language/hu.json +++ b/language/hu.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/it.json b/language/it.json index 7155eaed..f4c7f23a 100644 --- a/language/it.json +++ b/language/it.json @@ -53,6 +53,20 @@ { "label": "Numero infinito di istanze di elementi", "description": "Clonare questo elemento in modo che possa essere trascinato su più zone di trascinamento." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/ja.json b/language/ja.json index 445c5bf1..54704c31 100644 --- a/language/ja.json +++ b/language/ja.json @@ -53,6 +53,20 @@ { "label": "要素数無制限", "description": "この要素を複製して、複数のドロップゾーンにドラッグできるようにします。" + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Audio to play when draggable is picked up." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/km.json b/language/km.json index 54bd67c5..1ff97514 100644 --- a/language/km.json +++ b/language/km.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/ko.json b/language/ko.json index 64512689..11d65236 100644 --- a/language/ko.json +++ b/language/ko.json @@ -53,6 +53,20 @@ { "label": "무제한의 인스턴스 항목 수", "description": "이 항목을 여러 드롭 영역으로 끌 수 있도록 복제하세요." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/nb.json b/language/nb.json index 7496e36a..115e07b0 100644 --- a/language/nb.json +++ b/language/nb.json @@ -53,6 +53,20 @@ { "label": "Uendelig antall instanser av elementet", "description": "Klon dette elementet slik at det kan dras til flere målområder." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/nl.json b/language/nl.json index a2328460..3bb59ebb 100644 --- a/language/nl.json +++ b/language/nl.json @@ -53,6 +53,20 @@ { "label": "Oneindig aantal elementen", "description": "Kloon dit element zodat het naar meerdere neerzetgebieden kan worden gesleept." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/nn.json b/language/nn.json index 708089e4..5f1dc5b0 100644 --- a/language/nn.json +++ b/language/nn.json @@ -53,6 +53,20 @@ { "label": "Uendelig antall instanser av elementet", "description": "Klon dette elementet slik at det kan dras til flere målområder." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/pl.json b/language/pl.json index 268e45b5..a6b7e5b8 100644 --- a/language/pl.json +++ b/language/pl.json @@ -53,6 +53,20 @@ { "label": "Nieskończona liczba instancji elementu", "description": "Powiela ten element, aby można go było przeciągnąć do wielu obszarów przeciągania." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/pt-br.json b/language/pt-br.json index 4a808e53..be8e92e1 100644 --- a/language/pt-br.json +++ b/language/pt-br.json @@ -53,6 +53,20 @@ { "label": "Número infinito de instâncias do elemento", "description": "Clona este elemento para que ele possa ser arrastado para múltiplas zonas de largada." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/pt.json b/language/pt.json index 8333c235..11ecec28 100644 --- a/language/pt.json +++ b/language/pt.json @@ -53,6 +53,20 @@ { "label": "Número infinito de instâncias de elementos", "description": "Duplicar este elemento para que possa ser arrastado para múltiplas zonas." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/ro.json b/language/ro.json index b087a355..83e25f21 100644 --- a/language/ro.json +++ b/language/ro.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/ru.json b/language/ru.json index cb07f260..b3e161da 100644 --- a/language/ru.json +++ b/language/ru.json @@ -53,6 +53,20 @@ { "label": "Бесконечное количество экземпляров элемента", "description": "Клонирует этот элемент, чтобы его можно было перетащить в несколько областей размещения." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/sl.json b/language/sl.json index cdb86a61..b8bcc2f6 100644 --- a/language/sl.json +++ b/language/sl.json @@ -53,6 +53,20 @@ { "label": "Omogoči neskončno možnost izbire elementa (kloniranje)", "description": "Klone tega elementa bo možno povleči v več spustnih polj." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/sma.json b/language/sma.json index b087a355..83e25f21 100644 --- a/language/sma.json +++ b/language/sma.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/sme.json b/language/sme.json index b087a355..83e25f21 100644 --- a/language/sme.json +++ b/language/sme.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/smj.json b/language/smj.json index b087a355..83e25f21 100644 --- a/language/smj.json +++ b/language/smj.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/sr.json b/language/sr.json index b087a355..83e25f21 100644 --- a/language/sr.json +++ b/language/sr.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/sv.json b/language/sv.json index 6bcd0fa0..bcff7475 100644 --- a/language/sv.json +++ b/language/sv.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/tr.json b/language/tr.json index cab0aa11..0709ef99 100644 --- a/language/tr.json +++ b/language/tr.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/uk.json b/language/uk.json index 2c59d2f3..78b2eafa 100644 --- a/language/uk.json +++ b/language/uk.json @@ -53,6 +53,20 @@ { "label": "Нескінченна кількість екземплярів елемента", "description": "Клонує цей елемент, щоб його можна було перетягнути в декілька областей розміщення." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/vi.json b/language/vi.json index b087a355..83e25f21 100644 --- a/language/vi.json +++ b/language/vi.json @@ -53,6 +53,20 @@ { "label": "Infinite number of element instances", "description": "Clones this element so that it can be dragged to multiple drop zones." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/zh-hans.json b/language/zh-hans.json index d6c118e2..457db8b7 100644 --- a/language/zh-hans.json +++ b/language/zh-hans.json @@ -53,6 +53,20 @@ { "label": "元素无限化", "description": "勾选后可使元素能拖曳至多个任务区域." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/language/zh-tw.json b/language/zh-tw.json index b04dd709..b31b55d3 100644 --- a/language/zh-tw.json +++ b/language/zh-tw.json @@ -53,6 +53,20 @@ { "label": "元素無限化", "description": "勾選後可使元素能拖曳至多個任務區域." + }, + { + "label": "Audio", + "description": "Audio samples", + "fields": [ + { + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting." + }, + { + "label": "Dropped", + "description": "Custom audio to play when draggable is dropped. Will override general audio setting." + } + ] } ] } @@ -142,7 +156,7 @@ "description": "Audio samples", "fields": [ { - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up." }, { diff --git a/semantics.json b/semantics.json index 81f0f9f9..72de04c5 100644 --- a/semantics.json +++ b/semantics.json @@ -145,6 +145,30 @@ "importance": "low", "description": "Clones this element so that it can be dragged to multiple drop zones.", "default": false + }, + { + "name": "audio", + "type": "group", + "label": "Audio", + "importance": "low", + "description": "Audio samples", + "optional": true, + "fields": [ + { + "name": "pickedUp", + "type": "audio", + "label": "Picked up", + "description": "Custom audio to play when draggable is picked up. Will override general audio setting.", + "importance": "low" + }, + { + "name": "dropped", + "type": "audio", + "label": "Dropped", + "description": "Custom Custom audio to play when draggable is dropped. Will override general audio setting.", + "importance": "low" + } + ] } ] } @@ -350,7 +374,7 @@ { "name": "pickedUp", "type": "audio", - "label": "Pick up", + "label": "Picked up", "description": "Audio to play when draggable is picked up.", "importance": "low" }, diff --git a/src/drag-question.js b/src/drag-question.js index 84c62058..214103e5 100644 --- a/src/drag-question.js +++ b/src/drag-question.js @@ -85,7 +85,8 @@ function C(options, contentId, contentData) { this.answered = (contentData && contentData.previousState !== undefined && contentData.previousState.answers !== undefined && contentData.previousState.answers.length); this.blankIsCorrect = true; - this.audios = {}; + this.players = {}; + this.audios = []; this.backgroundOpacity = (this.options.behaviour.backgroundOpacity === undefined || this.options.behaviour.backgroundOpacity.trim() === '') ? undefined : this.options.behaviour.backgroundOpacity; @@ -156,6 +157,12 @@ function C(options, contentId, contentData) { var highlightDropZones = (self.options.behaviour.dropZoneHighlighting === 'dragging'); draggable.on('elementadd', function (event) { controls.drag.addElement(event.data); + + // Track custom audios + const customAudios = event.data.querySelectorAll('audio'); + for (let i = 0; i < customAudios.length; i++) { + self.audios.push(customAudios[i]); + } }); draggable.on('elementremove', function (event) { controls.drag.removeElement(event.data); @@ -164,9 +171,17 @@ function C(options, contentId, contentData) { event.data.removeAttribute('aria-grabbed'); } }); - draggable.on('pickedUp', () => { + draggable.on('pickedUp', (event) => { + const currentDraggable = self.draggables[event.data]; + this.resetAudios(); - this.playAudio('pickedUp'); + + if (currentDraggable.audios.pickedUp) { + currentDraggable.audios.pickedUp.play(); + } + else { + this.playAudio(this.players['pickedUp']); + } }); draggable.on('focus', function (event) { controls.drag.setTabbable(event.data); @@ -178,11 +193,18 @@ function C(options, contentId, contentData) { } setDropEffect(event.data); }); - draggable.on('dragend', function () { + draggable.on('dragend', function (event) { // The special dropped sounds are more important and should not be stopped if (!self.isAudioPlaying(['droppedWrong', 'droppedCorrect'])) { self.resetAudios(); - self.playAudio('dropped'); + + const currentDraggable = self.draggables[event.data]; + if (currentDraggable.audios.dropped) { + currentDraggable.audios.dropped.play(); + } + else { + self.playAudio(self.players['dropped']); + } } if (highlightDropZones) { @@ -262,10 +284,10 @@ function C(options, contentId, contentData) { const correctElements = this.options.question.task.dropZones[event.data.dropzoneId].correctElements; this.resetAudios(); if (correctElements.indexOf(`${event.data.draggableId}`) !== -1) { - this.playAudio('droppedCorrect'); + this.playAudio(this.players['droppedCorrect']); } else { - this.playAudio('droppedWrong'); + this.playAudio(this.players['droppedWrong']); } }) } @@ -603,7 +625,8 @@ C.prototype.createQuestionContent = function () { this.$container.append(player); // Track audio elements - this.audios[type] = player; + this.players[type] = player; + this.audios.push(player); } return this.$container; @@ -1056,7 +1079,7 @@ C.prototype.getTitle = function() { * Play audio sample. * @param {string} identifier Identifier for audio. */ -C.prototype.playAudio = function(identifier) { +C.prototype.playAudio2 = function(identifier) { if (!this.$container.closest('.h5p-content').hasClass('using-mouse')) { return; // Don't disturb ARIA } @@ -1070,14 +1093,30 @@ C.prototype.playAudio = function(identifier) { } }; +/** + * Play audio sample. + * @param {HTMLElement} audioElement Audio element to be played. + */ +C.prototype.playAudio = function (audioElement) { + if (!this.$container.closest('.h5p-content').hasClass('using-mouse')) { + return; // Don't disturb ARIA + } + + if (!audioElement) { + return; + } + + audioElement.play(); +}; + /** * Reset audios. */ C.prototype.resetAudios = function() { - for (let type in this.audios) { - this.audios[type].pause(); - this.audios[type].load(); - } + this.audios.forEach(audio => { + audio.pause(); + audio.load(); + }); }; /** @@ -1091,12 +1130,12 @@ C.prototype.isAudioPlaying = function(checkAudios) { } let audioPlaying = false; - for (let type in this.audios) { + for (let type in this.players) { if (checkAudios.length > 0 && checkAudios.indexOf(type) === -1) { continue; // Skip, not interested in that type } - if (!this.audios[type].paused) { + if (!this.players[type].paused) { audioPlaying = true; break; } diff --git a/src/draggable.js b/src/draggable.js index 1e9d0f6e..d220e7c1 100644 --- a/src/draggable.js +++ b/src/draggable.js @@ -29,6 +29,7 @@ export default class Draggable extends H5P.EventDispatcher { self.type = element.type; self.multiple = element.multiple; self.l10n = l10n; + self.audios = element.audio; if (answers) { if (self.multiple) { @@ -128,7 +129,7 @@ export default class Draggable extends H5P.EventDispatcher { title: self.type.params.title }) .on('mousedown', () => { - self.trigger('pickedUp'); + self.trigger('pickedUp', self.id); }) .on('keydown', (event) => { if (event.key !== 'Enter' && event.key !== ' ') { @@ -151,7 +152,7 @@ export default class Draggable extends H5P.EventDispatcher { self.updatePlacement(element); $this[0].setAttribute('aria-grabbed', 'false'); - self.trigger('dragend'); + self.trigger('dragend', self.id); return !dropZone; }, @@ -210,6 +211,28 @@ export default class Draggable extends H5P.EventDispatcher { // Add suffix for good a11y $('').appendTo(element.$); + if (self.audios) { + ['pickedUp', 'dropped'].forEach(type => { + if ( + !self.audios[type] || + !Array.isArray(self.audios[type]) || + self.audios[type].length < 1 || + !self.audios[type][0].path || + self.audios[type][0].mime.split('/')[0] !== 'audio' + ) { + return; + } + + // Attach audio element + const player = document.createElement('audio'); + player.classList.add('h5p-dragquestion-no-display'); + player.src = H5P.getPath(self.audios[type][0].path, contentId); + + self.audios[type] = player; + element.$.append(self.audios[type]); + }); + } + // Update opacity when element is attached. setTimeout(function () { DragUtils.setElementOpacity(element.$, self.backgroundOpacity); From e1037d327bd5f1c644af0bbfeff379be5f146a23 Mon Sep 17 00:00:00 2001 From: Oliver Tacke Date: Mon, 12 Oct 2020 09:34:13 +0200 Subject: [PATCH 3/4] KL-1066 Fix empty custom audios --- src/drag-question.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drag-question.js b/src/drag-question.js index 214103e5..a590c6ca 100644 --- a/src/drag-question.js +++ b/src/drag-question.js @@ -176,7 +176,7 @@ function C(options, contentId, contentData) { this.resetAudios(); - if (currentDraggable.audios.pickedUp) { + if (currentDraggable.audios && currentDraggable.audios.pickedUp) { currentDraggable.audios.pickedUp.play(); } else { @@ -199,7 +199,7 @@ function C(options, contentId, contentData) { self.resetAudios(); const currentDraggable = self.draggables[event.data]; - if (currentDraggable.audios.dropped) { + if (currentDraggable.audios && currentDraggable.audios.dropped) { currentDraggable.audios.dropped.play(); } else { From d3ff69f63c89243a6f74c09deb6e4a0ee0eaf6e2 Mon Sep 17 00:00:00 2001 From: Oliver Tacke Date: Sat, 21 Nov 2020 21:45:54 +0100 Subject: [PATCH 4/4] Fix audio playing after task completed --- src/drag-question.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/drag-question.js b/src/drag-question.js index a590c6ca..82000d78 100644 --- a/src/drag-question.js +++ b/src/drag-question.js @@ -174,6 +174,10 @@ function C(options, contentId, contentData) { draggable.on('pickedUp', (event) => { const currentDraggable = self.draggables[event.data]; + if (this.taskCompleted) { + return; + } + this.resetAudios(); if (currentDraggable.audios && currentDraggable.audios.pickedUp) { @@ -195,7 +199,7 @@ function C(options, contentId, contentData) { }); draggable.on('dragend', function (event) { // The special dropped sounds are more important and should not be stopped - if (!self.isAudioPlaying(['droppedWrong', 'droppedCorrect'])) { + if (!self.isAudioPlaying(['droppedWrong', 'droppedCorrect']) && !this.taskCompleted) { self.resetAudios(); const currentDraggable = self.draggables[event.data]; @@ -648,6 +652,7 @@ C.prototype.addSolutionButton = function () { var that = this; this.addButton('check-answer', this.options.scoreShow, function () { + that.taskCompleted = true; that.answered = true; that.showAllSolutions(); that.showScore(); @@ -935,6 +940,7 @@ C.prototype.resetTask = function () { this.points = 0; this.rawPoints = 0; this.answered = false; + this.taskCompleted = false; this.dropZones.forEach(function (dropzone) { dropzone.reset();