Commit 5d4d1034 authored by Konstantin Schulz's avatar Konstantin Schulz
Browse files

introducing H5P and KWIC

parent 6e312f62
This diff is collapsed.
{
"name": "mcClient",
"version": "0.5.1",
"version": "0.5.2",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
......@@ -29,7 +29,7 @@
"@ngx-translate/http-loader": "^2.0.1",
"@types/xml2js": "^0.4.3",
"ajv": "^5.0.0",
"cordova-android": "7.0.0",
"cordova-android": "^7.1.4",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-ionic-webview": "^2.2.5",
......@@ -37,13 +37,14 @@
"ionic": "^4.5.0",
"ionic-angular": "3.9.2",
"ionicons": "^4.4.7",
"node-sass": "^4.11.0",
"rxjs": "^5.5.11",
"socks": "^2.2.2",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.26"
},
"devDependencies": {
"@ionic/app-scripts": "^3.2.0",
"@ionic/app-scripts": "^3.2.1",
"typescript": "^2.6.2"
},
"description": "An Ionic project",
......@@ -58,4 +59,4 @@
"android"
]
}
}
\ No newline at end of file
}
......@@ -21,6 +21,7 @@ import {VocabularyCheckPageModule} from "../pages/vocabulary-check/vocabulary-ch
import {VocabularyProvider} from '../providers/vocabulary/vocabulary';
import {ExerciseParametersPageModule} from "../pages/exercise-parameters/exercise-parameters.module";
import {RankingPageModule} from "../pages/ranking/ranking.module";
import {KwicPageModule} from "../pages/kwic/kwic.module";
// The translate loader needs to know where to load i18n files
// in Ionic's static asset pipeline.
......@@ -56,6 +57,7 @@ class CustomErrorHandler extends IonicErrorHandler {
AuthorPageModule,
ExerciseParametersPageModule,
FeedbackPageModule,
KwicPageModule,
PreviewPageModule,
RankingPageModule,
ShowTextPageModule,
......
......@@ -3,6 +3,8 @@
"backendApiCorporaPath": "corpora",
"backendApiExercisePath": "exercise",
"backendApiFilePath": "file",
"backendApiH5pPath": "h5p",
"backendApiKwicPath": "kwic",
"backendApiRawtextPath": "rawtext",
"backendApiValidReffPath": "validReff",
"backendApiVocabularyPath": "vocabulary",
......@@ -13,6 +15,7 @@
"developerMailTo": "mailto:sulzkons@hu-berlin.de",
"intervalCorporaUpdate": 1209600000,
"localStorageKeyCorpora": "mc/corpora",
"localStorageKeyH5P": "mc/h5p",
"localStorageKeyUpdateInfo": "mc/updateInfo",
"machinaCallidaBackendUrl": "https://scm.cms.hu-berlin.de/callidus/mc-backend",
"machinaCallidaFrontendUrl": "https://scm.cms.hu-berlin.de/callidus/mc-frontend",
......
......@@ -65,6 +65,7 @@
"EXERCISE_SET_PARAMETERS": "Übungsparameter festlegen",
"EXERCISE_TYPE": "Aufgabentyp",
"EXERCISE_TYPE_CLOZE": "Lückentext",
"EXERCISE_TYPE_KWIC": "Beispielkontext",
"EXERCISE_TYPE_MATCHING": "Zuordnung",
"FEEDBACK": "Feedback",
"FILE_TYPE_DOCX": "DOCX",
......@@ -79,10 +80,12 @@
"INSTRUCTION_LOGIN_MOODLE": "Lade die Übung mit einem Klick auf 'XML' herunter. Nun logge dich in Moodle ein und betrete den Kurs, der die Übung enthalten soll.",
"INSTRUCTIONS": "Anweisungen",
"INSTRUCTIONS_CLOZE": "Ordne die Wörter aus dem Pool den richtigen Lücken zu!",
"INSTRUCTIONS_KWIC": "",
"INSTRUCTIONS_MATCHING": "Ordne die zusammengehörigen Elemente einander zu!",
"INVALID_QUERY_CORPUS": "Ungültiges Korpus für die Suchanfrage",
"INVALID_SENTENCE_COUNT": "Ungültige Anzahl der Sätze",
"INVALID_TEXT_RANGE": "Ungültige Textauswahl",
"KWIC": "Beispielkontexte",
"MACHINA_CALLIDA": "Machina Callida",
"MACHINA_CALLIDA_BACKEND": "Machina Callida Backend",
"MACHINA_CALLIDA_FRONTEND": "Machina Callida Frontend",
......
......@@ -65,6 +65,7 @@
"EXERCISE_SET_PARAMETERS": "Set exercise parameters",
"EXERCISE_TYPE": "Exercise type",
"EXERCISE_TYPE_CLOZE": "Cloze",
"EXERCISE_TYPE_KWIC": "Keyword In Context",
"EXERCISE_TYPE_MATCHING": "Matching",
"FEEDBACK": "Feedback",
"FILE_TYPE_DOCX": "DOCX",
......@@ -79,10 +80,12 @@
"INSTRUCTION_LOGIN_MOODLE": "Download the exercise by clicking on 'XML'. Now log into Moodle and enter the course that is going to contain the exercise.",
"INSTRUCTIONS": "Instructions",
"INSTRUCTIONS_CLOZE": "Assign the words from the pool to the correct gaps!",
"INSTRUCTIONS_KWIC": "",
"INSTRUCTIONS_MATCHING": "Assign the matching elements to each other!",
"INVALID_QUERY_CORPUS": "Invalid corpus for the query",
"INVALID_SENTENCE_COUNT": "Invalid number of sentences",
"INVALID_TEXT_RANGE": "Invalid text range",
"KWIC": "Keyword in context",
"MACHINA_CALLIDA": "Machina Callida",
"MACHINA_CALLIDA_BACKEND": "Machina Callida Backend",
"MACHINA_CALLIDA_FRONTEND": "Machina Callida Frontend",
......
.drop-element,.drop-element *,.drop-element :after,.drop-element :before,.drop-element:after,.drop-element:before{box-sizing:border-box}.drop-element{position:absolute;display:none}.drop-element.drop-open{display:block}.drop-element.drop-theme-arrows-bounce .drop-content{border-radius:5px;position:relative;font-family:inherit;background:#fff;color:#444;padding:1em;font-size:1.1em;line-height:1.5em;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .2));filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .2))}.drop-element.drop-theme-arrows-bounce .drop-content:before{content:"";display:block;position:absolute;width:0;height:0;border-color:transparent;border-width:12px;border-style:solid}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-center .drop-content:before{top:100%;left:50%;margin-left:-12px;border-top-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-center .drop-content{margin-top:12px}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-center .drop-content:before{bottom:100%;left:50%;margin-left:-12px;border-bottom-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-right.drop-element-attached-middle .drop-content:before{left:100%;top:50%;margin-top:-12px;border-left-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-left.drop-element-attached-middle .drop-content:before{right:100%;top:50%;margin-top:-12px;border-right-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-left.drop-target-attached-bottom .drop-content:before{bottom:100%;left:12px;border-bottom-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-right.drop-target-attached-bottom .drop-content:before{bottom:100%;right:12px;border-bottom-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-left.drop-target-attached-top .drop-content:before{top:100%;left:12px;border-top-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-right.drop-target-attached-top .drop-content:before{top:100%;right:12px;border-top-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-right.drop-target-attached-left .drop-content:before{top:12px;left:100%;border-left-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-left.drop-target-attached-right .drop-content:before{top:12px;right:100%;border-right-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-right.drop-target-attached-left .drop-content:before{bottom:12px;left:100%;border-left-color:#fff}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-left.drop-target-attached-right .drop-content:before{bottom:12px;right:100%;border-right-color:#fff}.drop-element.drop-theme-arrows-bounce{max-width:100%;max-height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:opacity .1s;transition:opacity .1s;opacity:0}.drop-element.drop-theme-arrows-bounce .drop-content{-webkit-transition:-webkit-transform .3s cubic-bezier(0,0,.265,1.55);transition:transform .3s cubic-bezier(0,0,.265,1.55);-webkit-transform:scale(0) translateZ(0);transform:scale(0) translateZ(0)}.drop-element.drop-theme-arrows-bounce.drop-open{display:none}.drop-element.drop-theme-arrows-bounce.drop-open-transitionend{display:block}.drop-element.drop-theme-arrows-bounce.drop-after-open{-webkit-transition:none;transition:none;opacity:1}.drop-element.drop-theme-arrows-bounce.drop-after-open .drop-content{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0)}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-center .drop-content{margin-bottom:12px;-webkit-transform-origin:50%,calc(100% + 12px);-ms-transform-origin:50%,calc(100% + 12px);transform-origin:50%,calc(100% + 12px)}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-center .drop-content{-webkit-transform-origin:50%,-12px;-ms-transform-origin:50%,-12px;transform-origin:50%,-12px}.drop-element.drop-theme-arrows-bounce.drop-element-attached-right.drop-element-attached-middle .drop-content{margin-right:12px;-webkit-transform-origin:calc(100% + 12px),50%;-ms-transform-origin:calc(100% + 12px),50%;transform-origin:calc(100% + 12px),50%}.drop-element.drop-theme-arrows-bounce.drop-element-attached-left.drop-element-attached-middle .drop-content{margin-left:12px;-webkit-transform-origin:-12px,50%;-ms-transform-origin:-12px,50%;transform-origin:-12px,50%}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-left.drop-target-attached-bottom .drop-content{margin-top:12px;-webkit-transform-origin:0,-12px;-ms-transform-origin:0,-12px;transform-origin:0,-12px}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-right.drop-target-attached-bottom .drop-content{margin-top:12px;-webkit-transform-origin:100%,-12px;-ms-transform-origin:100%,-12px;transform-origin:100%,-12px}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-left.drop-target-attached-top .drop-content{margin-bottom:12px;-webkit-transform-origin:0,calc(100% + 12px);-ms-transform-origin:0,calc(100% + 12px);transform-origin:0,calc(100% + 12px)}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-right.drop-target-attached-top .drop-content{margin-bottom:12px;-webkit-transform-origin:100%,calc(100% + 12px);-ms-transform-origin:100%,calc(100% + 12px);transform-origin:100%,calc(100% + 12px)}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-right.drop-target-attached-left .drop-content{margin-right:12px;-webkit-transform-origin:calc(100% + 12px),0;-ms-transform-origin:calc(100% + 12px),0;transform-origin:calc(100% + 12px),0}.drop-element.drop-theme-arrows-bounce.drop-element-attached-top.drop-element-attached-left.drop-target-attached-right .drop-content{margin-left:12px;-webkit-transform-origin:-12px,0;-ms-transform-origin:-12px,0;transform-origin:-12px,0}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-right.drop-target-attached-left .drop-content{margin-right:12px;-webkit-transform-origin:calc(100% + 12px),100%;-ms-transform-origin:calc(100% + 12px),100%;transform-origin:calc(100% + 12px),100%}.drop-element.drop-theme-arrows-bounce.drop-element-attached-bottom.drop-element-attached-left.drop-target-attached-right .drop-content{margin-left:12px;-webkit-transform-origin:-12px,100%;-ms-transform-origin:-12px,100%;transform-origin:-12px,100%}
\ No newline at end of file
var oldDrop = window.Drop;
var oldTether = window.Tether;
Tether = H5P.Tether;
!function(t,e){"function"==typeof define&&define.amd?define(["tether"],e):"object"==typeof exports?module.exports=e(require("tether")):t.Drop=e(t.Tether)}(this,function(t){"use strict";function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function o(t){var e=t.split(" "),n=a(e,2),o=n[0],i=n[1];if(["left","right"].indexOf(o)>=0){var s=[i,o];o=s[0],i=s[1]}return[o,i].join(" ")}function i(t,e){for(var n=void 0,o=[];-1!==(n=t.indexOf(e));)o.push(t.splice(n,1));return o}function s(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],u=function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return new(r.apply(b,[null].concat(e)))};p(u,{createContext:s,drops:[],defaults:{}});var g={classPrefix:"drop",defaults:{position:"bottom left",openOn:"click",beforeClose:null,constrainToScrollParent:!0,constrainToWindow:!0,classes:"",remove:!1,tetherOptions:{}}};p(u,g,a),p(u.defaults,g.defaults,a.defaults),"undefined"==typeof x[u.classPrefix]&&(x[u.classPrefix]=[]),u.updateBodyClasses=function(){for(var t=!1,e=x[u.classPrefix],n=e.length,o=0;n>o;++o)if(e[o].isOpened()){t=!0;break}t?d(document.body,u.classPrefix+"-open"):c(document.body,u.classPrefix+"-open")};var b=function(s){function r(t){if(e(this,r),l(Object.getPrototypeOf(r.prototype),"constructor",this).call(this),this.options=p({},u.defaults,t),this.target=this.options.target,"undefined"==typeof this.target)throw new Error("Drop Error: You must provide a target.");var n="data-"+u.classPrefix,o=this.target.getAttribute(n);o&&(this.options.content=o);for(var i=["position","openOn"],s=0;s<i.length;++s){var a=this.target.getAttribute(n+"-"+i[s]);a&&(this.options[i[s]]=a)}this.options.classes&&this.options.addTargetClasses!==!1&&d(this.target,this.options.classes),u.drops.push(this),x[u.classPrefix].push(this),this._boundEvents=[],this.bindMethods(),this.setupElements(),this.setupEvents(),this.setupTether()}return n(r,s),h(r,[{key:"_on",value:function(t,e,n){this._boundEvents.push({element:t,event:e,handler:n}),t.addEventListener(e,n)}},{key:"bindMethods",value:function(){this.transitionEndHandler=this._transitionEndHandler.bind(this)}},{key:"setupElements",value:function(){var t=this;if(this.drop=document.createElement("div"),d(this.drop,u.classPrefix),this.options.classes&&d(this.drop,this.options.classes),this.content=document.createElement("div"),d(this.content,u.classPrefix+"-content"),"function"==typeof this.options.content){var e=function(){var e=t.options.content.call(t,t);if("string"==typeof e)t.content.innerHTML=e;else{if("object"!=typeof e)throw new Error("Drop Error: Content function should return a string or HTMLElement.");t.content.innerHTML="",t.content.appendChild(e)}};e(),this.on("open",e.bind(this))}else"object"==typeof this.options.content?this.content.appendChild(this.options.content):this.content.innerHTML=this.options.content;this.drop.appendChild(this.content)}},{key:"setupTether",value:function(){var e=this.options.position.split(" ");e[0]=E[e[0]],e=e.join(" ");var n=[];this.options.constrainToScrollParent?n.push({to:"scrollParent",pin:"top, bottom",attachment:"together none"}):n.push({to:"scrollParent"}),this.options.constrainToWindow!==!1?n.push({to:"window",attachment:"together"}):n.push({to:"window"});var i={element:this.drop,target:this.target,attachment:o(e),targetAttachment:o(this.options.position),classPrefix:u.classPrefix,offset:"0 0",targetOffset:"0 0",enabled:!1,constraints:n,addTargetClasses:this.options.addTargetClasses};this.options.tetherOptions!==!1&&(this.tether=new t(p({},i,this.options.tetherOptions)))}},{key:"setupEvents",value:function(){var t=this;if(this.options.openOn){if("always"===this.options.openOn)return void setTimeout(this.open.bind(this));var e=this.options.openOn.split(" ");if(e.indexOf("click")>=0)for(var n=function(e){t.toggle(e),e.preventDefault()},o=function(e){t.isOpened()&&(e.target===t.drop||t.drop.contains(e.target)||e.target===t.target||t.target.contains(e.target)||t.close(e))},i=0;i<y.length;++i){var s=y[i];this._on(this.target,s,n),this._on(document,s,o)}var r=!1,a=null,h=function(e){r=!0,t.open(e)},l=function(e){r=!1,"undefined"!=typeof a&&clearTimeout(a),a=setTimeout(function(){r||t.close(e),a=null},50)};e.indexOf("hover")>=0&&(this._on(this.target,"mouseover",h),this._on(this.drop,"mouseover",h),this._on(this.target,"mouseout",l),this._on(this.drop,"mouseout",l)),e.indexOf("focus")>=0&&(this._on(this.target,"focus",h),this._on(this.drop,"focus",h),this._on(this.target,"blur",l),this._on(this.drop,"blur",l))}}},{key:"isOpened",value:function(){return this.drop?f(this.drop,u.classPrefix+"-open"):void 0}},{key:"toggle",value:function(t){this.isOpened()?this.close(t):this.open(t)}},{key:"open",value:function(t){var e=this;this.isOpened()||(this.drop.parentNode||document.body.appendChild(this.drop),"undefined"!=typeof this.tether&&this.tether.enable(),d(this.drop,u.classPrefix+"-open"),d(this.drop,u.classPrefix+"-open-transitionend"),setTimeout(function(){e.drop&&d(e.drop,u.classPrefix+"-after-open")}),"undefined"!=typeof this.tether&&this.tether.position(),this.trigger("open"),u.updateBodyClasses())}},{key:"_transitionEndHandler",value:function(t){t.target===t.currentTarget&&(f(this.drop,u.classPrefix+"-open")||c(this.drop,u.classPrefix+"-open-transitionend"),this.drop.removeEventListener(m,this.transitionEndHandler))}},{key:"beforeCloseHandler",value:function(t){var e=!0;return this.isClosing||"function"!=typeof this.options.beforeClose||(this.isClosing=!0,e=this.options.beforeClose(t,this)!==!1),this.isClosing=!1,e}},{key:"close",value:function(t){this.isOpened()&&this.beforeCloseHandler(t)&&(c(this.drop,u.classPrefix+"-open"),c(this.drop,u.classPrefix+"-after-open"),this.drop.addEventListener(m,this.transitionEndHandler),this.trigger("close"),"undefined"!=typeof this.tether&&this.tether.disable(),u.updateBodyClasses(),this.options.remove&&this.remove(t))}},{key:"remove",value:function(t){this.close(t),this.drop.parentNode&&this.drop.parentNode.removeChild(this.drop)}},{key:"position",value:function(){this.isOpened()&&"undefined"!=typeof this.tether&&this.tether.position()}},{key:"destroy",value:function(){this.remove(),"undefined"!=typeof this.tether&&this.tether.destroy();for(var t=0;t<this._boundEvents.length;++t){var e=this._boundEvents[t],n=e.element,o=e.event,s=e.handler;n.removeEventListener(o,s)}this._boundEvents=[],this.tether=null,this.drop=null,this.content=null,this.target=null,i(x[u.classPrefix],this),i(u.drops,this)}}]),r}(v);return u}var r=Function.prototype.bind,a=function(){function t(t,e){var n=[],o=!0,i=!1,s=void 0;try{for(var r,a=t[Symbol.iterator]();!(o=(r=a.next()).done)&&(n.push(r.value),!e||n.length!==e);o=!0);}catch(h){i=!0,s=h}finally{try{!o&&a["return"]&&a["return"]()}finally{if(i)throw s}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),l=function(t,e,n){for(var o=!0;o;){var i=t,s=e,r=n;a=l=h=void 0,o=!1,null===i&&(i=Function.prototype);var a=Object.getOwnPropertyDescriptor(i,s);if(void 0!==a){if("value"in a)return a.value;var h=a.get;return void 0===h?void 0:h.call(r)}var l=Object.getPrototypeOf(i);if(null===l)return void 0;t=l,e=s,n=r,o=!0}},u=t.Utils,p=u.extend,d=u.addClass,c=u.removeClass,f=u.hasClass,v=u.Evented,y=["click"];"ontouchstart"in document.documentElement&&y.push("touchstart");var g={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"},m="";for(var b in g)if({}.hasOwnProperty.call(g,b)){var O=document.createElement("p");"undefined"!=typeof O.style[b]&&(m=g[b])}var E={left:"right",right:"left",top:"bottom",bottom:"top",middle:"middle",center:"center"},x={},P=s();return document.addEventListener("DOMContentLoaded",function(){P.updateBodyClasses()}),P});
H5P.Drop = Drop;
window.Drop = oldDrop;
window.Tether = oldTether;
{
"title": "Drop",
"description": "Drop.js is a powerful Javascript and CSS library for creating dropdowns and other floating displays.",
"majorVersion": 1,
"minorVersion": 0,
"patchVersion": 2,
"runnable": 0,
"author": "Hubspot. Wrapped as H5P by Joubel (fnoks)",
"license": "MIT",
"machineName": "Drop",
"preloadedJs": [
{
"path": "js/drop.min.js"
}
],
"preloadedCss": [
{
"path": "css/drop-theme-arrows-bounce.min.css"
}
],
"preloadedDependencies": [
{
"machineName": "Tether",
"majorVersion": 1,
"minorVersion": 0
}
]
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
{
"title": "Font Awesome",
"contentType": "Font",
"majorVersion": 4,
"minorVersion": 5,
"patchVersion": 4,
"runnable": 0,
"machineName": "FontAwesome",
"license": "MIT",
"author": "Dave Gandy",
"preloadedCss": [
{
"path": "h5p-font-awesome.min.css"
}
]
}
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 225">
<defs>
<style>
.cls-1 {
isolation: isolate;
}
.cls-2 {
fill: #66b27f;
}
.cls-3, .cls-9 {
opacity: 0.15;
}
.cls-4 {
fill: #231f20;
}
.cls-5 {
fill: #fff;
}
.cls-6 {
opacity: 0.5;
}
.cls-7 {
opacity: 0.2;
}
.cls-7, .cls-9 {
mix-blend-mode: multiply;
}
.cls-8 {
fill: #8db7e2;
}
.cls-10 {
fill: #79aad3;
}
.cls-11 {
fill: #b0afad;
}
.cls-12 {
fill: none;
}
</style>
</defs>
<title>drag the words</title>
<g class="cls-1">
<g id="Layer_2" data-name="Layer 2">
<g id="drag_the_words" data-name="drag the words">
<g>
<rect class="cls-2" x="134.51" y="26.81" width="138.97" height="173.38"/>
<g>
<g class="cls-3">
<rect class="cls-4" x="150.5" y="43.46" width="112.82" height="145.91"/>
</g>
<rect class="cls-5" x="147.59" y="40.55" width="112.82" height="145.91"/>
</g>
<g class="cls-6">
<g class="cls-7">
<rect x="161.52" y="166.4" width="33.32" height="9.71" rx="2.62" ry="2.62"/>
</g>
<rect class="cls-8" x="160.74" y="164.84" width="33.32" height="9.71" rx="2.62" ry="2.62"/>
</g>
<g class="cls-6">
<g class="cls-7">
<rect x="199.93" y="166.4" width="22.43" height="9.71" rx="2.62" ry="2.62"/>
</g>
<rect class="cls-8" x="199.15" y="164.84" width="22.43" height="9.71" rx="2.62" ry="2.62"/>
</g>
<g>
<g class="cls-9">
<rect x="180.29" y="137.86" width="60.17" height="14.49" rx="2.62" ry="2.62"/>
</g>
<rect class="cls-10" x="172.52" y="130.09" width="60.17" height="14.49" rx="2.62" ry="2.62"/>
</g>
<g class="cls-6">
<path class="cls-8" d="M200.14,75.15H174.61A1.17,1.17,0,0,1,173.45,74V69.33A1.35,1.35,0,0,1,174.61,68h25.53a1.35,1.35,0,0,1,1.16,1.36V74A1.17,1.17,0,0,1,200.14,75.15Z"/>
</g>
<path class="cls-11" d="M168.48,75.15H161.9A1.17,1.17,0,0,1,160.74,74V69.33A1.35,1.35,0,0,1,161.9,68h6.58a1.35,1.35,0,0,1,1.16,1.36V74A1.17,1.17,0,0,1,168.48,75.15Z"/>
<path class="cls-11" d="M220.12,75.15H206.41A1.17,1.17,0,0,1,205.24,74V69.33A1.35,1.35,0,0,1,206.41,68h13.71a1.35,1.35,0,0,1,1.16,1.36V74A1.17,1.17,0,0,1,220.12,75.15Z"/>
<path class="cls-11" d="M248.51,75.15H226.85A1.17,1.17,0,0,1,225.69,74V69.33A1.35,1.35,0,0,1,226.85,68h21.66a1.35,1.35,0,0,1,1.16,1.36V74A1.17,1.17,0,0,1,248.51,75.15Z"/>
<rect class="cls-11" x="160.74" y="89.49" width="12.7" height="7.18" rx="1.16" ry="1.16"/>
<rect class="cls-11" x="176.9" y="89.49" width="9.93" height="7.18" rx="1.16" ry="1.16"/>
<rect class="cls-11" x="211.35" y="89.49" width="19.66" height="7.18" rx="1.16" ry="1.16"/>
<rect class="cls-11" x="234.57" y="89.49" width="7.55" height="7.18" rx="1.16" ry="1.16"/>
<g class="cls-6">
<rect class="cls-8" x="190.33" y="89.49" width="16.88" height="7.18" rx="1.16" ry="1.16"/>
</g>
<rect class="cls-11" x="223.3" y="111" width="9.93" height="7.18" rx="1.16" ry="1.16"/>
<rect class="cls-11" x="160.74" y="111" width="15.1" height="7.18" rx="1.16" ry="1.16"/>
<rect class="cls-10" x="179.61" y="111" width="39.64" height="7.18" rx="1.16" ry="1.16"/>
</g>
<rect class="cls-12" width="400" height="225"/>
</g>
</g>
</g>
</svg>
{
"semantics": [
{
"label": "Task description",
"description": "Describe how the user should solve the task.",
"default": "Drag the words into the correct boxes"
},
{
"label": "Text",
"placeholder": "*Oslo* is the capital of Norway, *Stockholm* is the capital of Sweden and *Copenhagen* is the capital of Denmark. All cities are located in the *Scandinavian:Northern Part of Europe* peninsula.",
"description": "",
"important": {
"description": "<ul><li>Droppable words are added with an asterisk (*) in front and behind the correct word/phrase.</li><li>You may add a textual tip, using a colon (:) in front of the tip.</li><li>For every empty spot there is only one correct word.</li><li>You may add feedback to be displayed when a task is completed. Use '\\+' for correct and '\\-' for incorrect feedback.</li></ul>",
"example": "H5P content may be edited using a *browser:What type of program is Chrome?*. </br> H5P content is *interactive\\+Correct! \\-Incorrect, try again!*"
}
},
{
"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": "Numbered Drop zone label",
"default": "Drop Zone @index.",
"description": "Label used for accessibility, where the Read speaker will read the index of a drop zone. Variable available: @index"
},
{
"label": "Empty Drop Zone label",
"default": "Drop Zone @index is empty.",
"description": "Label used for accessibility, where the Read speaker will read that the drop zone is empty"
},
{
"label": "Contains Drop Zone label",
"default": "Drop Zone @index contains draggable @draggable.",
"description": "Label used for accessibility, where the Read speaker will read that the drop zone contains a draggable"
},
{
"label": "Draggable elements label",
"default": "Draggable @text. @index of @count draggables.",
"description": "Label used for accessibility, where the Read speaker reads that this is a draggable element. Variable available: @index, @count"
},
{
"label": "Label for show tip button",
"default": "Show tip",
"description": "Label used for accessibility, where the Read speaker reads it before the tip is read out"
},
{
"label": "Readspeaker text for correct answer",
"default": "Correct!"
},
{
"label": "Readspeaker text for incorrect answer",
"default": "Incorrect!"
},
{
"label": "Confirmation dialog title that user wants to reset a droppable",
"default": "Reset drop"
},
{
"label": "Confirmation dialog description that user wants to reset a droppable",
"default": "Are you sure you want to reset this drop zone?"
},
{
"label": "Label used for accessibility, where the read speaker indicates that dragging is initiated",
"default": "Draggable is grabbed."
},
{
"label": "Label used for accessibility, where the read speaker indicates that dragging is canceled",
"default": "Cancelled dragging."
},
{
"label": "Label used for accessibility, where the read speaker indicates that a text is the correct answer",
"default": "Correct answer:"
},
{
"label": "Header for panel containing feedback for correct/incorrect answers",
"default": "Feedback"
},
{
"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": "Instant feedback"
}
]
},
{
"label": "Textual representation of the score bar for those using a readspeaker",
"default": "You got :num out of :total points"
}
]
}
{
"semantics": [
{
"label": "وصف النشاط",
"description": "وصف الكيفية التي ينبغي للمستخدم حل النشاط",
"default": "Drag the words into the correct boxes"
},
{
"label": "نص",
"placeholder": "*Oslo* is the capital of Norway, *Stockholm* is the capital of Sweden and *Copenhagen* is the capital of Denmark. All cities are located in the *Scandinavian:Northern Part of Europe* peninsula.",
"description": "",
"important": {
"description": "<ul><li>Droppable words are added with an asterisk (*) in front and behind the correct word/phrase.</li><li>You may add a textual tip, using a colon (:) in front of the tip.</li><li>For every empty spot there is only one correct word.</li><li>You may add feedback to be displayed when a task is completed. Use '\\+' for correct and '\\-' for incorrect feedback.</li></ul>",
"example": "H5P content may be edited using a *browser:What type of program is Chrome?*. </br> H5P content is *interactive\\+Correct! \\-Incorrect, try again!*"
}
},
{
"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": "Numbered Drop zone label",
"default": "Drop Zone @index.",
"description": "Label used for accessibility, where the Read speaker will read the index of a drop zone. Variable available: @index"
},
{
"label": "Empty Drop Zone label",
"default": "Drop Zone @index is empty.",
"description": "Label used for accessibility, where the Read speaker will read that the drop zone is empty"
},
{
"label": "Contains Drop Zone label",
"default": "Drop Zone @index contains draggable @draggable.",
"description": "Label used for accessibility, where the Read speaker will read that the drop zone contains a draggable"
},
{
"label": "Draggable elements label",
"default": "Draggable @text. @index of @count draggables.",
"description": "Label used for accessibility, where the Read speaker reads that this is a draggable element. Variable available: @index, @count"
},
{
"label": "Label for show tip button",
"default": "Show tip",
"description": "Label used for accessibility, where the Read speaker reads it before the tip is read out"
},
{
"label": "النص Readspeaker عن الإجابة الصحيحة",
"default": "صحيح!"
},
{
"label": "النص Readspeaker للإجابة غير صحيحة",
"default": "غير صحيح!"
},
{
"label": "Confirmation dialog title that user wants to reset a droppable",
"default": "Reset drop"
},
{
"label": "Confirmation dialog description that user wants to reset a droppable",
"default": "Are you sure you want to reset this drop?"
},