/** * /script/quizedit.js * @version 1.9 * @desc Script file for creating and editing tests * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk) * @copy 2017 Fándly Gergő Zoltán * License: sQuiz for creating small jQuery based quizs in an implementable way Copyright (C) 2017 Fándly Gergő Zoltán This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . **/ function appendNewField(type){ $("
"+$("#newPrototypes div[data-type="+type+"]").html()+"
").hide().appendTo($("#questions")).slideDown(); } function removeField(el){ $(el).parent().slideUp(function(){ $(el).parent().remove(); }); } function addNewAnswer(el){ $("
"+$(el).data("append")+"
").hide().appendTo($(el).parent().children("[name=answers]")).slideDown(); } function toggleGoodAnswer(el){ if($(el).hasClass("fa-square")){ $(el).removeClass("fa-square").addClass("fa-check-square"); $(el).next().data("correct", "true"); } else{ $(el).removeClass("fa-check-square").addClass("fa-square"); $(el).next().data("correct", "false"); } } function addNewFillInField(el){ $(el).parent().children("textarea").selection("insert", {text:"[]", mode:"before"}); $(el).parent().children("textarea").selection("insert", {text:"[/]", mode:"after"}); } //map funcs function loadMap(el){ var file=$(el).parent().children("input[type=file]")[0].files[0]; var fr=new FileReader(); fr.onload=function(){ loadMapCallback(el, fr.result); }; fr.readAsDataURL(file); } function loadMapCallback(el, res){ $(el).parent().children("div").children("img").attr("src", res); $(el).parent().children("input[name=map]").val(res); } function addNewMarker(el){ $(el).parent().children("div[name=mapArea]").css("cursor", "crosshair"); $(el).parent().children("div[name=mapArea]").on("click", function(e){ var x=Math.round(e.pageX-$(this).position().left)-7; var y=Math.round(e.pageY-$(this).position().top)-7; $("").hide().appendTo($(el).parent().children("div[name=mapArea]").children("div[name=markers]")).fadeIn(); $(el).parent().children("div[name=mapArea]").css("cursor", "default"); $(el).parent().children("div[name=mapArea]").off(); }); } function removeMarker(el){ $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").css("cursor", "crosshair"); $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").on("click", function(e){ $(this).fadeOut(function(){ $(this).remove(); }); $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").css("cursor", "default"); $(el).parent().children("div[name=mapArea]").children("div[name=markers]").children("i").off(); }); } function toggleGoodMarker(el){ if($(el).hasClass("fa-circle")){ $(el).removeClass("fa-circle").addClass("fa-check-circle"); $(el).data("correct", "true"); } else{ $(el).removeClass("fa-check-circle").addClass("fa-circle"); $(el).data("correct", "false"); } } //export, cancel function resetNewQuizForm(){ if(confirm(lang.sure)){ $("#newquizcontainer").slideUp(function(){ $("#newquiz")[0].reset(); $("#questions").html(""); $("input[name=timeLimitPerTestVal]").css("display", "none"); $("input[name=timeLimitVal]").css("display", "none"); $("input[name=onlineTag]").css("display", "none"); $("#newquizcontainer").slideDown(); }); } } function exportQuiz(){ var exp={}; //general settings exp.name=$("#newquiz #general input[name=name]").val(); exp.description=$("#newquiz #general textarea[name=description]").val(); exp.timeLimitPerTest=$("#newquiz #general input[name=timeLimitPerTest]").is(":checked")?$("#newquiz #general input[name=timeLimitPerTestVal]").val():-1; exp.timeLimit=$("#newquiz #general input[name=timeLimit]").is(":checked")?$("#newquiz #general input[name=timeLimitVal]").val():-1; var publish=$("#newquiz #general input[name=submitOnline]").is(":checked"); exp.questions=[]; //questions $("#newquiz #questions").children("div").each(function(){ var q={}; q.type=$(this).children("input[name=type]").val(); if(q.type=="simpleQuestion"){ q.question=$(this).children("input[name=question]").val(); q.answer=$(this).children("input[name=answer]").val().toLowerCase(); } else if(q.type=="simpleSelect"){ q.question=$(this).children("input[name=question]").val(); q.answers=[]; $(this).children("fieldset[name=answers]").children("div").each(function(){ var a={}; a.answer=$(this).children("input[name=answer]").val(); a.correct=($(this).children("input[name=answer]").data("correct")=="true")?true:false; q.answers.push(a); }); } else if(q.type=="connectGraph"){ q.question=$(this).children("input[name=question]").val(); q.answers=[]; $(this).children("fieldset[name=answers]").children("div").each(function(){ var a={}; a.pair1=$(this).children("input[name=pair1]").val(); a.pair2=$(this).children("input[name=pair2]").val(); q.answers.push(a); }); } else if(q.type=="fillIn"){ q.question=$(this).children("input[name=question]").val(); q.text=$(this).children("textarea[name=text]").val(); } else if(q.type=="markOnMap"){ q.question=$(this).children("input[name=question]").val(); q.map=$(this).children("input[name=map]").val(); q.markers=[]; $(this).children("div[name=mapArea]").children("div[name=markers]").children("i").each(function(){ var m={}; m.posx=$(this).data("posx"); m.posy=$(this).data("posy"); m.correct=($(this).data("correct")=="true")?true:false; q.markers.push(m); }); } exp.questions.push(q); }); var json=JSON.stringify(exp); if(publish){ $.ajax({ url: "./engine/engine.php", type: "POST", data: { "submitQuiz": json, "submitQuiz_tag": $("#newquiz #general input[name=onlineTag]").val(), "submitQuiz_name": $("#newquiz #general input[name=name]").val(), "submitQuiz_description": $("#newquiz #general textarea[name=description]").val() }, success: function(res){ alert(lang.availableAtURL+": "+res); } }); } var send="text/json;charset=utf-8,"+encodeURIComponent(json); $("")[0].click(); }