diff --git a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js index 195eab7582b426d711c6c2cd3c62df358b1bb5c6..a5d18e980ec5c5100af234924793a07d3ddea592 100644 --- a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js +++ b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js @@ -14,7 +14,7 @@ author : 'frentix GmbH', authorurl : 'http://www.frentix.com', infourl : 'http://www.frentix.com', - version : '1.2.8' + version : '1.2.9' }; }, @@ -275,6 +275,7 @@ function createTextEntryPlaceholder(responseIdentifier, content, interaction, gapType) { var placeholder = new tinymce.html.Node('span', 1); placeholder.attr({ + "id": responseIdentifier, "data-qti": interaction, "data-qti-response-identifier": responseIdentifier, "data-qti-solution" : content, @@ -482,7 +483,8 @@ "data-qti-solution-empty": (solution == "" || solution == " " ? "true" : "false") }); - var alone = node.previousSibling == null && (node.nextSibling == null || jQuery(node.nextSibling).attr("type") == "_moz"); + var alone = node.previousSibling == null && (node.nextSibling == null || jQuery(node.nextSibling).attr("type") == "_moz" + || jQuery(node.nextSibling).attr("data-mce-bogus") == "1"); ed.dom.replace(textNode, node, false); if(alone) { jQuery(textNode).after(String.fromCharCode(160)); diff --git a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js index 5c23d121130c262776b96c9f7bd518d148ee0f26..ee73d73d155bcdb39b961b45792e602cf0dcd2b9 100644 --- a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js +++ b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js @@ -1 +1 @@ -(function(){tinymce.create("org.olat.ims.qti21.ui.editor",{getInfo:function(){return{longname:"OpenOLATQTI",author:"frentix GmbH",authorurl:"http://www.frentix.com",infourl:"http://www.frentix.com",version:"1.2.8"}},createControl:function(b,a){return null},init:function(e,d){var c=e.$,u=e.selection;var v,q;var f;var j,k;function p(){if(v){return v}var w=o_getMainWin();if(w){v=jQuery(document).ooTranslator().getTranslator(w.o_info.locale,"org.olat.ims.qti21.ui.editor")}else{v={translate:function(x){return x}}}return v}function b(){if(q){return q}var w=o_getMainWin();if(w){q=jQuery(document).ooTranslator().getTranslator(w.o_info.locale,"org.olat.core")}else{q={translate:function(x){return x}}}return q}function h(w){g(w,"string")}function n(w){g(w,"float")}function g(B,E){var F=e.getParam("ffxhrevent");if(typeof j!="undefined"){var x=jQuery(j).closest("span[data-qti='textentryinteraction']");var G=x.attr("data-qti-response-identifier");var C=jQuery(x).children().html();var y=(C==""||C==" "?"true":"false");o_ffXHREvent(F.formNam,F.dispIdField,F.dispId,F.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",G,"selectedText",C,"emptySolution",y,"newEntry",false)}else{var w=1;var A=e.selection.getContent({format:"text"});tinymce.each(e.dom.select("span[data-qti]"),function(I){var H=jQuery(I).attr("data-qti-response-identifier");if(H.lastIndexOf("RESPONSE_",0)==0){var J=parseInt(H.substring(9,H.length));if(J>w){w=J}}});var G="RESPONSE_"+(w+1);if(typeof A==="undefined"||A.length==0){A="gap"}var D=m(G,A,"textentryinteraction",E);var z=new tinymce.html.Serializer().serialize(D);e.insertContent(z);o_ffXHREvent(F.formNam,F.dispIdField,F.dispId,F.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",G,"newEntry",true,"selectedText",A,"gapType",E)}e.setDirty(true)}function l(){function w(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}return w()+w()+w()+w()+w()+w()+w()}function a(A){var E;if(typeof k!="undefined"){E=jQuery(k).data("data-identifier")}else{var w=1;var x=e.selection.getContent({format:"text"});var D=false;if(x==null||x.length==0){x="text";D=true}var B="ht"+l();var C=t(B,x,false,"hottext");var y=new tinymce.html.Serializer().serialize(C);e.insertContent(y);if(D){var z=e.dom.select("span[data-qti-identifier="+B+"] span[contenteditable=true]");e.selection.select(z[0],true)}jQuery("span.hottext[data-qti-identifier='"+B+"'] a",e.getBody()).each(function(F,G){o(G)})}}e.addButton("olatqtifibtext",{title:p().translate("new.fib"),icon:"gaptext",stateSelector:["span[data-qti-gap-type=string]"],onclick:h});e.addButton("olatqtifibnumerical",{title:p().translate("new.fib")+" Numerical",icon:"gapnumerical",stateSelector:["span[data-qti-gap-type=float]"],onclick:n});e.addButton("olatqtihottext",{title:p().translate("new.hottext"),icon:"hottext",stateSelector:["span[data-qti=hottext]"],onclick:a});e.addButton("editgap",{title:"edit",icon:"edit",onclick:g});e.addMenuItem("olatqtifibtext",{text:p().translate("new.fib"),icon:"gapnumerical",stateSelector:["span[data-qti-gap-type=string]"],onclick:n});e.addMenuItem("olatqtifibnumerical",{text:p().translate("new.fib.numerical")+" Numerical",icon:"gaptext",stateSelector:["span[data-qti-gap-type=float]"],onclick:h});e.addMenuItem("olatqtihottext",{text:p().translate("new.hottext"),icon:"hottext",stateSelector:["span[data-qti=hottext]"],onclick:a});e.on("NodeChange",function(w){if(j&&j.id!=w.element.src){j=undefined}if(k&&k.id!=w.element.src){k=undefined}if(e.dom.is(w.element,"span[data-qti=textentryinteraction]")){j=w.element}else{if(jQuery(w.element).parent("span[data-qti='textentryinteraction']").length>0){j=w.element}}if(jQuery(w.element).parent("span.hottext").length>0){k=w.element}jQuery(w.element).parent("span[data-qti-gap-type=float]").each(function(y,z){if(jQuery(w.element).prop("tagName").toLowerCase()=="span"){var x=jQuery(w.element).text();if(!jQuery.isNumeric(x)){jQuery(z).addClass("error")}else{jQuery(z).removeClass("error")}}});jQuery("span.hottext[data-copy='needlistener']",w.element).each(function(x,y){if(jQuery("a.o_check",y).length==0){var z=jQuery(y).attr("data-qti-checked");jQuery(y).prepend("<a class='o_check "+("true"==z?"checked":"")+"' contenteditable='false'><i contenteditable='false'> </i></a>")}if(jQuery("span[contenteditable='true']",y).text()=="x-y-x"&&jQuery(y).attr("data-qti-empty")=="true"){jQuery("span[contenteditable='true']",y).text("");jQuery(y).attr("data-qti-empty","false")}jQuery("a.o_check",jQuery(y)).each(function(B,D){var E=jQuery._data(D,"events");if(E&&E.click){}else{o(D);if(jQuery(D).hasClass("checked")){var A=e.getParam("ffxhrevent");var C=jQuery(y).data("qti-identifier");o_ffXHRNFEvent(A.formNam,A.dispIdField,A.dispId,A.eventIdField,2,"cmd","hottext","identifier",C,"correct","true")}}})});jQuery("span.textentryinteraction[data-copy='needlistener']",w.element).each(function(x,y){if(jQuery("a.o_ops",y).length==0){jQuery(y).append("<a class='o_ops' contenteditable='false'><i contenteditable='false'> </i></a>")}if(jQuery("span[contenteditable='true']",y).text()=="x-y-x"&&jQuery(y).attr("data-qti-empty")=="true"){jQuery("span[contenteditable='true']",y).text("");jQuery(y).attr("data-qti-empty","false")}s;jQuery("a.o_ops",jQuery(y)).each(function(z,A){var B=jQuery._data(A,"events");if(B&&B.click){}else{r(y)}})})});function m(H,B,E,F){var D=new tinymce.html.Node("span",1);D.attr({"data-qti":E,"data-qti-response-identifier":H,"data-qti-solution":B,"data-qti-gap-type":F,"data-mce-placeholder":"","data-textentryinteraction":"empty","class":E,contenteditable:"false"});var z=e.getParam("readonly");var x=z=="1"?"false":"true";var C=new tinymce.html.Node("span",1);C.attr({contenteditable:x});var y=new tinymce.html.Node("#text",3);y.raw=true;var I=jQuery("<div>").text(B).html();y.value=I;C.append(y);D.append(C);var A=new tinymce.html.Node("a",1);A.attr({contenteditable:"false","class":"o_ops"});var w=new tinymce.html.Node("i",1);w.attr({contenteditable:"false"});var G=new tinymce.html.Node("#text",3);G.raw=true;G.value=" ";w.append(G);A.append(w);D.append(A);return D}function t(E,D,F,J){var I=new tinymce.html.Node("span",1);I.attr({"data-qti":J,"data-qti-identifier":E,"data-qti-checked":(F?"true":"false"),"class":J,contenteditable:"false"});var B=e.getParam("readonly");var x=B=="1"?"false":"true";var H=new tinymce.html.Node("a",1);H.attr({contenteditable:"false","class":"o_check "+(F?"checked":"")});var w=new tinymce.html.Node("i",1);w.attr({contenteditable:"false"});var K=new tinymce.html.Node("#text",3);K.raw=true;K.value=" ";w.append(K);H.append(w);I.append(H);var G=new tinymce.html.Node("span",1);G.attr({contenteditable:x});if(typeof D==="string"){var z=new tinymce.html.Node("#text",3);z.raw=true;z.value=D;G.append(z)}else{var y,C=[];for(y=D.firstChild;y;y=y.walk()){if(y.parent==D){C.push(y)}if(y==D.lastChild){break}}for(var A=0;A<C.length;A++){G.append(C[A])}}I.append(G);return I}function o(w){jQuery(w).click(function(){var x=e.getParam("ffxhrevent");var z=jQuery(w);var y=z.parent("span.hottext").data("qti-identifier");o_ffXHRNFEvent(x.formNam,x.dispIdField,x.dispId,x.eventIdField,2,"cmd","hottext","identifier",y,"correct",z.hasClass("checked")?"false":"true");if(z.hasClass("checked")){z.removeClass("checked");z.parent("span.hottext").attr("data-qti-checked","false")}else{z.addClass("checked");z.parent("span.hottext").attr("data-qti-checked","true")}e.setDirty(true)})}function r(w){jQuery("a.o_ops",w).click(function(){var z=e.getParam("ffxhrevent");var y=jQuery(w).attr("data-qti-response-identifier");var x=jQuery(w).children().html();var A=(x==""||x==" "?"true":"false");o_ffXHREvent(z.formNam,z.dispIdField,z.dispId,z.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",y,"selectedText",x,"emptySolution",A);e.setDirty(true)})}function i(x){var w="";var z=new tinymce.dom.TreeWalker(x);var y;while((y=z.next())){if(y.type==3){if(w.length>0){w+=" "}w+=y.value}else{if(y.nodeType==3){if(w.length>0){w+=" "}w+=y.nodeValue}}}return w}e.addCommand("qtiUpdateTextEntry",function(z,y){var x=y.responseIdentifier;var w=y["data-qti-solution"];jQuery("span[data-qti-response-identifier='"+x+"']>span",e.getBody()).each(function(A,B){jQuery(B).text(w)});jQuery("span[data-qti-response-identifier='"+x+"']",e.getBody()).each(function(A,B){r(jQuery(B))})});e.on("init",function(){if(e.settings.content_css!==false){e.dom.loadCSS(d+"/css/content.css")}jQuery(".textentryinteraction",e.getBody()).each(function(w,x){r(x)});jQuery("span.hottext a.o_check",e.getBody()).each(function(w,x){o(x)})});e.on("preInit",function(){e.parser.addNodeFilter("textentryinteraction,hottext",function(w){var z=w.length,x,F,A;while(z--){x=w[z];if(x.name=="textentryinteraction"){var H=x.attr("responseidentifier");var G=x.attr("openolattype");var E=x.attr("data-qti-solution");if(typeof E==="undefined"){E=" "}if(typeof G==="undefined"){G="string"}var F=m(H,E,"textentryinteraction",G);x.replace(F)}else{if(x.name=="hottext"){var D=x.attr("identifier");var y=e.getParam("correctHottexts");var C=jQuery.inArray(D,y)>=0;var B=x;var F=t(D,B,C,"hottext","hottext");x.replace(F)}}}})});e.on("PreProcess",function(w){tinymce.each(e.dom.select("span[data-qti=textentryinteraction]"),function(z){var y=jQuery(z).attr("data-qti-response-identifier");var x=jQuery(z).children().html();var B=e.dom.create("textEntryInteraction",{responseIdentifier:y,"data-qti-solution":x,"data-qti-solution-empty":(x==""||x==" "?"true":"false")});var A=z.previousSibling==null&&(z.nextSibling==null||jQuery(z.nextSibling).attr("type")=="_moz");e.dom.replace(B,z,false);if(A){jQuery(B).after(String.fromCharCode(160))}});tinymce.each(e.dom.select("span[data-qti=hottext]"),function(A){var y=jQuery(A).data("qti-identifier");var x=e.dom.create("hottext",{identifier:y});var z=jQuery('span[contenteditable="true"]',A);jQuery(x).append(z.contents());e.dom.replace(x,A,false)})});e.on("PastePreProcess",function(z){var x=e.selection.getNode();if(x!=null&&(jQuery(x).parent("span.hottext").length>0||jQuery(x).parent("span.textentryinteraction").length>0)){var y='<div id="'+l()+'">'+z.content+"</div>";var A=jQuery(y);z.content=jQuery(A).text();return}var w=false;var y='<div id="'+l()+'">'+z.content+"</div>";var A=jQuery(y);jQuery(A).find("span[data-qti='hottext']").each(function(B,D){var C="ht"+l();jQuery(D).attr("data-qti-identifier",C);jQuery(D).attr("data-copy","needlistener");jQuery(D).attr("data-copy-empty","false");var E=jQuery("span[contenteditable='true']",D).text();if(E==null||E.length==0){jQuery("span[contenteditable='true']",D).text("x-y-x");jQuery(D).attr("data-copy-empty","true")}w=true});jQuery(A).find("span[data-qti='textentryinteraction']").each(function(E,G){var F="te"+l();jQuery(G).attr("data-qti-response-identifier",F);jQuery(G).attr("data-copy","needlistener");jQuery(G).attr("data-copy-empty","false");var C=jQuery(G).attr("data-qti-gap-type");var B=jQuery(G).attr("data-qti-solution");var D=e.getParam("ffxhrevent");o_ffXHRNFEvent(D.formNam,D.dispIdField,D.dispId,D.eventIdField,2,"cmd","copy-gapentry","responseIdentifier",F,"newEntry",true,"selectedText",B,"gapType",C);jQuery("a.o_ops",G).append(jQuery("<i class='visible'> </i>"));var H=jQuery("span[contenteditable='true']",G).text();if(H==null||H.length==0){jQuery("span[contenteditable='true']",G).text("x-y-x");jQuery(G).attr("data-copy-empty","true")}w=true});if(w){z.content=jQuery(A).html()}})}});tinymce.PluginManager.add("olatqti",org.olat.ims.qti21.ui.editor)})(); \ No newline at end of file +(function(){tinymce.create("org.olat.ims.qti21.ui.editor",{getInfo:function(){return{longname:"OpenOLATQTI",author:"frentix GmbH",authorurl:"http://www.frentix.com",infourl:"http://www.frentix.com",version:"1.2.9"}},createControl:function(b,a){return null},init:function(e,d){var c=e.$,u=e.selection;var v,q;var f;var j,k;function p(){if(v){return v}var w=o_getMainWin();if(w){v=jQuery(document).ooTranslator().getTranslator(w.o_info.locale,"org.olat.ims.qti21.ui.editor")}else{v={translate:function(x){return x}}}return v}function b(){if(q){return q}var w=o_getMainWin();if(w){q=jQuery(document).ooTranslator().getTranslator(w.o_info.locale,"org.olat.core")}else{q={translate:function(x){return x}}}return q}function h(w){g(w,"string")}function n(w){g(w,"float")}function g(B,E){var F=e.getParam("ffxhrevent");if(typeof j!="undefined"){var x=jQuery(j).closest("span[data-qti='textentryinteraction']");var G=x.attr("data-qti-response-identifier");var C=jQuery(x).children().html();var y=(C==""||C==" "?"true":"false");o_ffXHREvent(F.formNam,F.dispIdField,F.dispId,F.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",G,"selectedText",C,"emptySolution",y,"newEntry",false)}else{var w=1;var A=e.selection.getContent({format:"text"});tinymce.each(e.dom.select("span[data-qti]"),function(I){var H=jQuery(I).attr("data-qti-response-identifier");if(H.lastIndexOf("RESPONSE_",0)==0){var J=parseInt(H.substring(9,H.length));if(J>w){w=J}}});var G="RESPONSE_"+(w+1);if(typeof A==="undefined"||A.length==0){A="gap"}var D=m(G,A,"textentryinteraction",E);var z=new tinymce.html.Serializer().serialize(D);e.insertContent(z);o_ffXHREvent(F.formNam,F.dispIdField,F.dispId,F.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",G,"newEntry",true,"selectedText",A,"gapType",E)}e.setDirty(true)}function l(){function w(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}return w()+w()+w()+w()+w()+w()+w()}function a(A){var E;if(typeof k!="undefined"){E=jQuery(k).data("data-identifier")}else{var w=1;var x=e.selection.getContent({format:"text"});var D=false;if(x==null||x.length==0){x="text";D=true}var B="ht"+l();var C=t(B,x,false,"hottext");var y=new tinymce.html.Serializer().serialize(C);e.insertContent(y);if(D){var z=e.dom.select("span[data-qti-identifier="+B+"] span[contenteditable=true]");e.selection.select(z[0],true)}jQuery("span.hottext[data-qti-identifier='"+B+"'] a",e.getBody()).each(function(F,G){o(G)})}}e.addButton("olatqtifibtext",{title:p().translate("new.fib"),icon:"gaptext",stateSelector:["span[data-qti-gap-type=string]"],onclick:h});e.addButton("olatqtifibnumerical",{title:p().translate("new.fib")+" Numerical",icon:"gapnumerical",stateSelector:["span[data-qti-gap-type=float]"],onclick:n});e.addButton("olatqtihottext",{title:p().translate("new.hottext"),icon:"hottext",stateSelector:["span[data-qti=hottext]"],onclick:a});e.addButton("editgap",{title:"edit",icon:"edit",onclick:g});e.addMenuItem("olatqtifibtext",{text:p().translate("new.fib"),icon:"gapnumerical",stateSelector:["span[data-qti-gap-type=string]"],onclick:n});e.addMenuItem("olatqtifibnumerical",{text:p().translate("new.fib.numerical")+" Numerical",icon:"gaptext",stateSelector:["span[data-qti-gap-type=float]"],onclick:h});e.addMenuItem("olatqtihottext",{text:p().translate("new.hottext"),icon:"hottext",stateSelector:["span[data-qti=hottext]"],onclick:a});e.on("NodeChange",function(w){if(j&&j.id!=w.element.src){j=undefined}if(k&&k.id!=w.element.src){k=undefined}if(e.dom.is(w.element,"span[data-qti=textentryinteraction]")){j=w.element}else{if(jQuery(w.element).parent("span[data-qti='textentryinteraction']").length>0){j=w.element}}if(jQuery(w.element).parent("span.hottext").length>0){k=w.element}jQuery(w.element).parent("span[data-qti-gap-type=float]").each(function(y,z){if(jQuery(w.element).prop("tagName").toLowerCase()=="span"){var x=jQuery(w.element).text();if(!jQuery.isNumeric(x)){jQuery(z).addClass("error")}else{jQuery(z).removeClass("error")}}});jQuery("span.hottext[data-copy='needlistener']",w.element).each(function(x,y){if(jQuery("a.o_check",y).length==0){var z=jQuery(y).attr("data-qti-checked");jQuery(y).prepend("<a class='o_check "+("true"==z?"checked":"")+"' contenteditable='false'><i contenteditable='false'> </i></a>")}if(jQuery("span[contenteditable='true']",y).text()=="x-y-x"&&jQuery(y).attr("data-qti-empty")=="true"){jQuery("span[contenteditable='true']",y).text("");jQuery(y).attr("data-qti-empty","false")}jQuery("a.o_check",jQuery(y)).each(function(B,D){var E=jQuery._data(D,"events");if(E&&E.click){}else{o(D);if(jQuery(D).hasClass("checked")){var A=e.getParam("ffxhrevent");var C=jQuery(y).data("qti-identifier");o_ffXHRNFEvent(A.formNam,A.dispIdField,A.dispId,A.eventIdField,2,"cmd","hottext","identifier",C,"correct","true")}}})});jQuery("span.textentryinteraction[data-copy='needlistener']",w.element).each(function(x,y){if(jQuery("a.o_ops",y).length==0){jQuery(y).append("<a class='o_ops' contenteditable='false'><i contenteditable='false'> </i></a>")}if(jQuery("span[contenteditable='true']",y).text()=="x-y-x"&&jQuery(y).attr("data-qti-empty")=="true"){jQuery("span[contenteditable='true']",y).text("");jQuery(y).attr("data-qti-empty","false")}s;jQuery("a.o_ops",jQuery(y)).each(function(z,A){var B=jQuery._data(A,"events");if(B&&B.click){}else{r(y)}})})});function m(H,B,E,F){var D=new tinymce.html.Node("span",1);D.attr({id:H,"data-qti":E,"data-qti-response-identifier":H,"data-qti-solution":B,"data-qti-gap-type":F,"data-mce-placeholder":"","data-textentryinteraction":"empty","class":E,contenteditable:"false"});var z=e.getParam("readonly");var x=z=="1"?"false":"true";var C=new tinymce.html.Node("span",1);C.attr({contenteditable:x});var y=new tinymce.html.Node("#text",3);y.raw=true;var I=jQuery("<div>").text(B).html();y.value=I;C.append(y);D.append(C);var A=new tinymce.html.Node("a",1);A.attr({contenteditable:"false","class":"o_ops"});var w=new tinymce.html.Node("i",1);w.attr({contenteditable:"false"});var G=new tinymce.html.Node("#text",3);G.raw=true;G.value=" ";w.append(G);A.append(w);D.append(A);return D}function t(E,D,F,J){var I=new tinymce.html.Node("span",1);I.attr({"data-qti":J,"data-qti-identifier":E,"data-qti-checked":(F?"true":"false"),"class":J,contenteditable:"false"});var B=e.getParam("readonly");var x=B=="1"?"false":"true";var H=new tinymce.html.Node("a",1);H.attr({contenteditable:"false","class":"o_check "+(F?"checked":"")});var w=new tinymce.html.Node("i",1);w.attr({contenteditable:"false"});var K=new tinymce.html.Node("#text",3);K.raw=true;K.value=" ";w.append(K);H.append(w);I.append(H);var G=new tinymce.html.Node("span",1);G.attr({contenteditable:x});if(typeof D==="string"){var z=new tinymce.html.Node("#text",3);z.raw=true;z.value=D;G.append(z)}else{var y,C=[];for(y=D.firstChild;y;y=y.walk()){if(y.parent==D){C.push(y)}if(y==D.lastChild){break}}for(var A=0;A<C.length;A++){G.append(C[A])}}I.append(G);return I}function o(w){jQuery(w).click(function(){var x=e.getParam("ffxhrevent");var z=jQuery(w);var y=z.parent("span.hottext").data("qti-identifier");o_ffXHRNFEvent(x.formNam,x.dispIdField,x.dispId,x.eventIdField,2,"cmd","hottext","identifier",y,"correct",z.hasClass("checked")?"false":"true");if(z.hasClass("checked")){z.removeClass("checked");z.parent("span.hottext").attr("data-qti-checked","false")}else{z.addClass("checked");z.parent("span.hottext").attr("data-qti-checked","true")}e.setDirty(true)})}function r(w){jQuery("a.o_ops",w).click(function(){var z=e.getParam("ffxhrevent");var y=jQuery(w).attr("data-qti-response-identifier");var x=jQuery(w).children().html();var A=(x==""||x==" "?"true":"false");o_ffXHREvent(z.formNam,z.dispIdField,z.dispId,z.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",y,"selectedText",x,"emptySolution",A);e.setDirty(true)})}function i(x){var w="";var z=new tinymce.dom.TreeWalker(x);var y;while((y=z.next())){if(y.type==3){if(w.length>0){w+=" "}w+=y.value}else{if(y.nodeType==3){if(w.length>0){w+=" "}w+=y.nodeValue}}}return w}e.addCommand("qtiUpdateTextEntry",function(z,y){var x=y.responseIdentifier;var w=y["data-qti-solution"];jQuery("span[data-qti-response-identifier='"+x+"']>span",e.getBody()).each(function(A,B){jQuery(B).text(w)});jQuery("span[data-qti-response-identifier='"+x+"']",e.getBody()).each(function(A,B){r(jQuery(B))})});e.on("init",function(){if(e.settings.content_css!==false){e.dom.loadCSS(d+"/css/content.css")}jQuery(".textentryinteraction",e.getBody()).each(function(w,x){r(x)});jQuery("span.hottext a.o_check",e.getBody()).each(function(w,x){o(x)})});e.on("preInit",function(){e.parser.addNodeFilter("textentryinteraction,hottext",function(w){var z=w.length,x,F,A;while(z--){x=w[z];if(x.name=="textentryinteraction"){var H=x.attr("responseidentifier");var G=x.attr("openolattype");var E=x.attr("data-qti-solution");if(typeof E==="undefined"){E=" "}if(typeof G==="undefined"){G="string"}var F=m(H,E,"textentryinteraction",G);x.replace(F)}else{if(x.name=="hottext"){var D=x.attr("identifier");var y=e.getParam("correctHottexts");var C=jQuery.inArray(D,y)>=0;var B=x;var F=t(D,B,C,"hottext","hottext");x.replace(F)}}}})});e.on("PreProcess",function(w){tinymce.each(e.dom.select("span[data-qti=textentryinteraction]"),function(z){var y=jQuery(z).attr("data-qti-response-identifier");var x=jQuery(z).children().html();var B=e.dom.create("textEntryInteraction",{responseIdentifier:y,"data-qti-solution":x,"data-qti-solution-empty":(x==""||x==" "?"true":"false")});var A=z.previousSibling==null&&(z.nextSibling==null||jQuery(z.nextSibling).attr("type")=="_moz"||jQuery(z.nextSibling).attr("data-mce-bogus")=="1");e.dom.replace(B,z,false);if(A){jQuery(B).after(String.fromCharCode(160))}});tinymce.each(e.dom.select("span[data-qti=hottext]"),function(A){var y=jQuery(A).data("qti-identifier");var x=e.dom.create("hottext",{identifier:y});var z=jQuery('span[contenteditable="true"]',A);jQuery(x).append(z.contents());e.dom.replace(x,A,false)})});e.on("PastePreProcess",function(z){var x=e.selection.getNode();if(x!=null&&(jQuery(x).parent("span.hottext").length>0||jQuery(x).parent("span.textentryinteraction").length>0)){var y='<div id="'+l()+'">'+z.content+"</div>";var A=jQuery(y);z.content=jQuery(A).text();return}var w=false;var y='<div id="'+l()+'">'+z.content+"</div>";var A=jQuery(y);jQuery(A).find("span[data-qti='hottext']").each(function(B,D){var C="ht"+l();jQuery(D).attr("data-qti-identifier",C);jQuery(D).attr("data-copy","needlistener");jQuery(D).attr("data-copy-empty","false");var E=jQuery("span[contenteditable='true']",D).text();if(E==null||E.length==0){jQuery("span[contenteditable='true']",D).text("x-y-x");jQuery(D).attr("data-copy-empty","true")}w=true});jQuery(A).find("span[data-qti='textentryinteraction']").each(function(E,G){var F="te"+l();jQuery(G).attr("data-qti-response-identifier",F);jQuery(G).attr("data-copy","needlistener");jQuery(G).attr("data-copy-empty","false");var C=jQuery(G).attr("data-qti-gap-type");var B=jQuery(G).attr("data-qti-solution");var D=e.getParam("ffxhrevent");o_ffXHRNFEvent(D.formNam,D.dispIdField,D.dispId,D.eventIdField,2,"cmd","copy-gapentry","responseIdentifier",F,"newEntry",true,"selectedText",B,"gapType",C);jQuery("a.o_ops",G).append(jQuery("<i class='visible'> </i>"));var H=jQuery("span[contenteditable='true']",G).text();if(H==null||H.length==0){jQuery("span[contenteditable='true']",G).text("x-y-x");jQuery(G).attr("data-copy-empty","true")}w=true});if(w){z.content=jQuery(A).html()}})}});tinymce.PluginManager.add("olatqti",org.olat.ims.qti21.ui.editor)})(); \ No newline at end of file