File "tib-quizzes-utils.min.js"

Path: /ThinkIB/englisha/js/tib-quizzes-utilsminjs
File size: 42.89 KB
MIME-type: text/plain
Charset: utf-8

 
Open Back
let editorInstances=[],scoreAnswersMode=0;function tibQuiz(){$(".tib-quiz").each((function(){var radioCounter=0;$(this).find(".exercise").each((function(){$(this).find('input[type="radio"]').length>0&&$(this).find('input[type="radio"]').attr("name","e-"+radioCounter),radioCounter++}));var dragContainers=[];$(this).find("p").each((function(){var $this=$(this);0==$this.html().replace(/\s|&nbsp;/g,"").length&&$this.remove()})),$(this).find(".modal-answer-showhide").each((function(){$(this).click((function(e){e.preventDefault(),$(this).closest("div").next(".short-modal-answer, .uploader-modal-answer").toggle("fast")}))})),$(this).find(".written-question").each((function(){$(this).find('.manual-q-answer input[type="text"].short-answer-1-line').each((function(){$(this).attr("placeholder","1 line"),$(this).attr("maxlength",limitPerLine),$(this).after('<div class="char-limit" data-limit="'+limitPerLine+'"><span></span></div>')})),$(this).find(".manual-q-answer textarea.short-answer-multiple-lines").each((function(){var lines=$(this).attr("class").split(" ")[1].replace("l","");$(this).attr("placeholder",`${lines} lines`);var limit=limitPerLine*parseInt(lines);$(this).attr("maxlength",limit),$(this).after('<div class="char-limit" data-limit="'+limit+'"><span></span></div>')})),$(this).find(".manual-q-answer textarea.short-answer-essay-words").each((function(){var lines=$(this).attr("class").split(" ")[1].replace("w-",""),minWords=lines.split("-")[0],maxWords=lines.split("-")[1];$(this).attr("placeholder",`Min words: ${minWords}, max words: ${maxWords}`),$(this).attr("data-min-words",minWords),$(this).attr("data-max-words",maxWords);var wordLimit=$(this).closest(".manual-q-answer").find(".word-limit");wordLimit.attr("data-min-words",minWords),wordLimit.attr("data-max-words",maxWords)})),$(this).find(".manual-q-answer .std-manual-answer").each((function(){$(this).hasClass("well")||($(this).addClass("well"),$(this).css("overflow","auto"))})),$(this).find(".uploader-modal-answer").each((function(){""==$.trim($(this).html())&&$(this).prev(".answer-toggler").remove()})),$(this).find(".answer-toggler").each((function(){"undefined"!=typeof sendLogs&&sendLogs&&$(this).css("padding","0")})),$(this).find(".short-modal-answer.accordion-inner, .uploader-modal-answer.accordion-inner").each((function(){"undefined"!=typeof sendLogs&&sendLogs&&$(this).remove()})),$(this).find(".manual-q-explanation").each((function(){"undefined"!=typeof sendLogs&&sendLogs&&$(this).remove()})),isStudent||$(this).find(".manual-q-explanation").each((function(){$(this).text().trim().length&&$(this).fadeIn("fast")}))}))}))}function initInlineCKEditor(ids){$.each(ids,(function(i,value){var wt=$("#"+value),placeholder="",lines="";wt.data("lines")?(lines="1"==wt.data("lines")?" line":" lines",placeholder=wt.data("lines")+lines):wt.data("words")&&(placeholder=wt.data("words")+" words"),CKEDITOR.InlineEditor.create(document.querySelector("#"+value),{removePlugins:["Title"],placeholder:placeholder,wordCount:{displayCharacters:!1,onUpdate:function(){}},simpleFileUpload:{url:"/pages/std/std-file-upload.php",fileTypes:[".pdf",".doc",".docx",".pages",".xls",".xlsx",".gif",".png",".jpeg",".jpg",".bmp",".webp"],allowUploads:isStudent},toolbar:{viewportTopOffset:50,items:["bold","italic","underline","strikethrough","subscript","superscript","|","alignment:left","alignment:right","alignment:center","bulletedList","numberedList","|","imageUpload","fileUpload","mathliveBox"]},image:{styles:["alignLeft","alignCenter","alignRight","full","side"],toolbar:["imageStyle:alignLeft","imageStyle:alignCenter","imageStyle:alignRight","|","imageStyle:full","imageStyle:side"],upload:{types:["jpg","jpeg","png","webp","gif","bmp"]}}}).then((function(editor){contentEditor=editor,editorInstances.push(contentEditor),cancelDropEvents(contentEditor),checkTypeUpload(contentEditor),checkS3Files(contentEditor),checkFocusTracking(contentEditor),initEssayWordsCounter(contentEditor),enableCKLinkFiles(contentEditor,"written-task")})).catch(error=>{console.error(error)})}))}function checkFocusTracking(editor){editor.editing.view.document.on("change:isFocused",(evt,data,isFocused)=>{if(isFocused){var container=document.getElementById(editor.sourceElement.id);$(container).closest(".manual-q-answer").find("div.wt").each((function(){var wt=$(this);wt.attr("id")==container.id&&(wt.css("background-color","#fff"),wt.hasClass("short-answer-multiple-lines")?wt.next().find("small.wt-limit-error").hide():wt.hasClass("short-answer-essay-words")&&wt.nextAll().each((function(){$(this).hasClass("word-limit")&&$(this).find("small.wt-limit-error").hide()})))}))}})}function initEssayWordsCounter(editor){var container=document.getElementById(editor.sourceElement.id);if($(container).is(".short-answer-essay-words, .short-answer-multiple-lines")){var wordCount=editor.plugins.get("WordCount");$(wordCount.wordCountContainer).insertAfter($(container)),$(container).addClass("wt-essay")}}function checkMaxLinesReached(editor,container,maxLines){var currentLines;$(container).getLines()>maxLines?$(container).next().html('<p style="margin-bottom: 0px; color: red;">Max lines reached</p>'):$(container).next().html("")}function saveWrittenTaskAsDraft(element,ids){var dedicatedUploader=$("#tib-written-task").find(".dedicated-uploader").length;ids.length>0||dedicatedUploader?element.on("click",(function(e){e.preventDefault(),saveAsDraft()})):$(".draft-task").remove(),"undefined"!=typeof isExamMode&&isExamMode&&$(".draft-task").remove()}function numberQuizQuestions(){$(".tib-quiz").each((function(){let qBankIds=void 0!==$(this).attr("data-question-ids")&&1===$(this).attr("data-question-ids").split(",").length;0===$(this).find(".label.q-number").length&&$(this).find(".exercise, .written-question").each((function(i){qBankIds||($(this).css({"margin-top":"0","border-top-left-radius":"0"}),i++,$('<div class="label q-number">'+i+"</div>").insertBefore($(this)))}))}))}function dragOver(){$('input[type="text"], td.drag, div.q-question').on("dragover",(function(e){return e.preventDefault(),$(this).focus(),!1}))}function dragLeave(){$('input[type="text"]').on("dragleave",(function(e){return e.preventDefault(),$(this).blur(),!1}))}function drop(){$('input[type="text"]').on("drop",(function(e){var event=e.originalEvent,dropId=null,mTable,qContainer;$(this)[0].hasAttribute("data-draggable-id")&&(dropId=$(this).data("draggable-id"),$(e.target).closest("table.match-table").length?$(e.target).closest("table.match-table").find("span.draggable").each((function(){var dragId;$(this).attr("id")==dropId&&$.inArray("elementid",event.dataTransfer.types)>=0&&$(this).removeClass("dragged")})):$(e.target).closest(".exercise").find(".q-question").find("span.draggable").each((function(){var dragId;$(this).attr("id")==dropId&&$.inArray("elementid",event.dataTransfer.types)>=0&&$(this).removeClass("dragged-1 dragged-7")})));if(event.dataTransfer.getData("elementId").length>1){event.preventDefault();var id=event.dataTransfer.getData("elementId"),content,length=(content=$("#"+id).text()).length<2?"2ch":content.length+2+"ch";$(this).get(0).focus(),$(this).width(length),$(this).val(content);var mInputWidth=$(this);if($(e.target).closest("table.match-table").length){$(this).attr("draggable",!0),$(this).attr("data-draggable-id",id).data("draggable-id",id);var qAnswerWidth=$(e.target).closest("div.q-answer").width();mInputWidth.width()>.7*qAnswerWidth&&($(this).closest("td.drop").css("width",.7*qAnswerWidth),mInputWidth.width("100%")),$(e.target).closest("table.match-table").find('span.draggable[id="'+id+'"]').addClass("dragged")}else $(this).attr("draggable",!0),$(this).attr("data-draggable-id",id).data("draggable-id",id),$(e.target).closest(".exercise").find('span.draggable[id="'+id+'"]').addClass("dragged-1");bindDraggables(),fixGapDropDraggables($(e.target))}if(event.dataTransfer.getData("gapId").length>1){event.preventDefault();var gid=event.dataTransfer.getData("gapId");if(dropId==gid)return!1;var content,length=(content=$("#"+gid).text()).length<2?"2ch":content.length+2+"ch";$(this).get(0).focus(),$(this).width(length),$(this).val(content);var mInput=$(this);if($(e.target).closest("table.match-table").length){$(this).attr("draggable",!0),$(this).attr("data-draggable-id",gid).data("draggable-id",gid);var qAnswerWidth=$(e.target).closest("div.q-answer").width(),originalGap;mInput.width()>.7*qAnswerWidth&&($(this).closest("td.drop").css("width",.7*qAnswerWidth),mInput.width("100%")),mInput[0].hasAttribute("data-draggable-id")&&$(e.target).closest("table.match-table").find("span#"+dropId).removeClass("dragged"),(originalGap=$(e.target).closest("table.match-table").find('input[data-draggable-id="'+gid+'"]').not(this)).val(""),originalGap.css("width","auto"),originalGap.removeAttr("draggable"),originalGap.removeAttr("data-draggable-id")}else{var originalGap;$(this).attr("draggable",!0),$(this).attr("data-draggable-id",gid).data("draggable-id",gid),mInput[0].hasAttribute("data-draggable-id")&&$(e.target).closest(".exercise").find("span#"+dropId).removeClass("dragged-1 dragged-7"),(originalGap=$(e.target).closest(".q-answer").find('input[data-draggable-id="'+gid+'"]').not(this)).val(""),originalGap.css("width","100px"),originalGap.removeAttr("draggable"),originalGap.removeAttr("data-draggable-id")}bindDraggables()}})),$("td.drag").on("drop",(function(e){if($(e.target).closest("table.match-table").length){var gapId=e.originalEvent.dataTransfer.getData("gapId");""!=gapId&&($(e.target).closest("table.match-table").find("td.drop").each((function(){var dropCell;if($(this).find('input[data-draggable-id="'+gapId+'"]').length){var mGap=$(this).find('input[data-draggable-id="'+gapId+'"]');mGap.val(""),mGap.css("width","auto"),mGap.removeAttr("draggable"),mGap.removeAttr("data-draggable-id")}})),$(e.target).closest("table.match-table").find('span.q-text-draggable[id="'+gapId+'"]').removeClass("dragged"))}})),$("div.q-question p").on("drop",(function(e){var gapId=e.originalEvent.dataTransfer.getData("gapId");if(""!=gapId){var aContainer=$(e.target).closest(".exercise").find(".q-answer");if(aContainer.find('input[type="text"][data-draggable-id="'+gapId+'"]').length){var gap=aContainer.find('input[type="text"][data-draggable-id="'+gapId+'"]');gap.val(""),gap.css("width","auto"),gap.removeAttr("draggable"),gap.removeAttr("data-draggable-id")}$(e.target).closest(".exercise").find('span.q-text-draggable[id="'+gapId+'"]').removeClass("dragged-1 dragged-7")}}))}function fixGapDropDraggables(element){var qContainer=element.closest("div.exercise").find(".q-question"),aContainer=element.closest("div.exercise").find(".q-answer");qContainer.find("span.draggable").each((function(){var dragBox=$(this),hasCounterpart=!1;aContainer.find('input[type="text"][data-draggable-id]').each((function(){$(this).data("draggable-id")==dragBox.attr("id")&&(hasCounterpart=!0)})),hasCounterpart||dragBox.removeClass("dragged-1 dragged-7")}))}function adjustMatchExerciseHeight(){var maxHeight=null;$(".tib-quiz").find("table.match-table").length&&$("table.match-table tr").each((function(){var thisHeight=$(this).height();(null==maxHeight||thisHeight>maxHeight)&&(maxHeight=thisHeight)})).height(maxHeight)}function getLengthTextInputs(){$('.tib-quiz .exercise .q-answer p input[type="text"]').each((function(){if(!$(this).hasClass("fixed-width")){var c=$(this).val(),l=c.length+3;void 0!==c&&c.length>0&&$(this).width(l+"ch")}})),$('.tib-quiz .exercise .q-answer p input[type="text"]').keydown((function(e){if(!$(e.target).closest("table.match-table").length){var c,l=$(this).val().length+6;$(this).width(l+"ch")}}))}function countAnswerEssayWords(){$("textarea.short-answer-essay-words").each((function(){var textarea;$(this).on("keyup",(function(){var wordLimit=$(this).closest(".manual-q-answer").find(".word-limit"),text=$(this).val(),textArray=answerArray=[];textArray=(text=(text=(text=text.replace(/[\r\n\.\?\!]/gm," ")).replace(/\s+/gm," ")).trim()).split(" ");for(let i=0;i<textArray.length;i++){const element=textArray[i];element.length>0&&answerArray.push(element)}autoresizeTextarea(this),getEssayWordStatus(answerArray.length,wordLimit)}))}))}function autoresizeTextarea(textarea){$(textarea).height("2em"),$(textarea).height($(textarea)[0].scrollHeight+10+"px")}function getEssayWordStatus(words,wordLimit){var minWords=parseInt(wordLimit.data("min-words")),maxWords=parseInt(wordLimit.data("max-words"));words>0?(wordLimit.show(),wordLimit.find("span").text(1==words?words+" word":words+" words"),words<minWords||words>maxWords?wordLimit.find("span").css("color","#b33"):wordLimit.find("span").css("color","green")):wordLimit.hide()}function submitManualTask(){$("a.submit-manual-task").on("click",(function(e){e.preventDefault();var quizIdsArray=[],emptyInputs=!1,noAnswerSubmitted=!0,isExam="undefined"!=typeof examTime,quiz=$("#main-content").find("#tib-written-task"),dedicatedUploader=$("#main-content").find(".dedicated-uploader");quiz.each((function(){if(quizIdsArray.push($(this).attr("data-id")),dedicatedUploader.length&&dedicatedUploader.find("ul li.dedicated-upload-file").length)return noAnswerSubmitted=!1,!1;$(this).find(".manual-q-answer .wt").length>0?$(this).find(".manual-q-answer .wt").each((function(){var content=$(this).text().trim();emptyInputs=""==content;var hasImage=$(this).find("figure.image > img").length,hasLink=$(this).find("a.ck-link-file").length;(content.length>0||hasImage||hasLink)&&(noAnswerSubmitted=!1)})):$(this).find(".manual-q-answer :input").each((function(){var content=$(this);content.val().length>0&&(noAnswerSubmitted=!1),emptyInputs=content.val().length<1&&!isExam}))})),$(this).html('<i class="fa fa-spin fa-circle-o-notch"></i> Submitting...'),quiz.find("div.char-limit, div.word-limit, div.ck-word-count").remove(),quiz.find(".ck-widget__type-around__button, .ck-widget__type-around, .ck-widget__resizer").remove(),quiz.find(".ck-word-count").remove();var writtenQuestionsBlocks="";quiz.each((function(i){if(void 0===$(this).data("structure")){var auxQuestionBlock="";$(this).find(".manual-q-answer .wt").length>0?$(this).find(".manual-q-answer .wt").each((function(){var inputAnswer=$(this),content=inputAnswer.html();inputAnswer.replaceWith('<div class="std-manual-answer">'+content+"</div>")})):$(this).find(".manual-q-answer :input").each((function(){var inputAnswer=$(this);inputAnswer.attr("value",inputAnswer.val()),inputAnswer.after('<p class="std-manual-answer">'+inputAnswer.val()+"</p>"),inputAnswer.remove()})),$(this).hasClass("tib-quiz")?writtenQuestionsBlocks=$(this):(auxQuestionBlock=$(this),writtenQuestionsBlocks.append(auxQuestionBlock.html()))}}));var completedButton=writtenQuestionsBlocks.find("#manual-task-checker");writtenQuestionsBlocks.find("#manual-task-checker").remove();var taskID="";void 0!==$(this).attr("data-task-id")&&(taskID=$(this).attr("data-task-id")),$(".dedicated-uploader").find(".header").text("Your answer(s)"),$("#dedicated-upload-form").find('input[type="hidden"]').remove();var contents=$("#dedicated-upload-form").contents(),writtenTaskContent;$("#dedicated-upload-form").replaceWith(contents),$('label[for="upload-dedicated-attachment"], span.total-files, #upload-dedicated-attachment').remove(),$("#dedicated-upload-list").css("padding","10px"),$("#dedicated-upload-list").find("li.dedicated-upload-file").each((function(){$(this).find("i.remove-attachment").remove()})),saveAsWritingTask(conversionForMathlive(writtenQuestionsBlocks[0].outerHTML),quizIdsArray,taskID,noAnswerSubmitted),writtenQuestionsBlocks.append(completedButton)}))}function conversionForMathlive(content){var convert=content.replace(/<math-field[^>]*>/g,'<math-field class="math-tex">');return convert=(convert=convert.replace(/math-field/g,"span")).replace(/contenteditable="[^"]*"/g,"")}var bindDraggables=function(){$(".draggable").off("dragstart").on("dragstart",(function(e){if(e.target.id||(e.target.id=(new Date).getTime()),e.originalEvent.dataTransfer.setData("elementId",e.target.id),$(e.target).closest("table.match-table").length){var draggableId=$(this).attr("id");if($(e.target).closest("table.match-table").find('input[data-draggable-id="'+draggableId+'"]').length)return e.preventDefault(),!1}})),$(".draggable").off("dragend").on("dragend",(function(e){if($(e.target).closest("table.match-table").length)$(e.target).closest("td").removeClass("dragged");else{var draggableId=$(this).attr("id"),qAnswerContainer;$(this).closest(".exercise").find(".q-answer").find('input[data-draggable-id="'+draggableId+'"]').length||$(this).removeClass("dragged-1 dragged-7")}})),$('input[type="text"][data-draggable-id]').off("dragstart").on("dragstart",(function(e){e.originalEvent.dataTransfer.setData("gapId",e.target.getAttribute("data-draggable-id"))}))},preventMatchKeyInput=function(){$('input[type="text"]').on("keypress",(function(e){$(e.target).closest("table.match-table").length&&e.preventDefault()})),$('input[type="text"]').on("input",(function(e){if($(e.target).closest("table.match-table").length){$(this).val(""),$(this).css("width","auto");var draggableId=$(this).data("draggable-id");$(e.target).closest("table.match-table").find('span.q-text-draggable[id="'+draggableId+'"]').removeClass("dragged"),$(this).removeAttr("draggable"),$(this).removeAttr("data-draggable-id")}}))},countCharsLeft=function(){$('.manual-q-answer input[type="text"].short-answer-1-line').each((function(){var maxLength;keyUp($(this).next("div.char-limit").attr("data-limit"),$(this))})),$(".manual-q-answer textarea.short-answer-multiple-lines").each((function(){var maxLength;keyUp($(this).next("div.char-limit").attr("data-limit"),$(this))}))};function removeEmptyModelAnswers(){$(".manual-q-answer ").find(".short-modal-answer.accordion-inner").each((function(){0===$(this).text().trim().length&&0===$(this).find("img, iframe").length&&$(this).prev("div").remove()}))}function addShowModelAnswerExplanation(){$(".tib-quiz").find(".written-question").each((function(){var showModelAnswer=$(this).find("a.modal-answer-showhide");showModelAnswer.length&&showModelAnswer.html('\n                <i class="fa fa-eye"></i> Show model answer\n                <br>\n                <small style="color: #333;">(Students can only see the model answer after they have submitted the task)</small>\n            ')}))}function logQuiz(button,quiz,response,notRequired=!1){checkAndCalcQuiz(button,quiz,response,!1,notRequired)}function checkAndCalcQuiz(button,quiz,response,isPageViewer,notRequired){var seeScore=!0,seeAnswers=!0;if(null!=response&&(seeScore=response.ss,seeAnswers=response.sa),!($("#quiz-scored").length&&$("#quiz-marked").length||seeScore&&seeAnswers))return alert("You cannot do this task again until after the deadline"),!1;button.html('<i class="fa fa-spin fa-circle-o-notch"></i> Checking...');var mScoreMarks=[],logger={},s=0,nom=0,den=0,m=new Array([]);$.when(isPageViewer?checkAllExercisesPageViewer(button.closest(".tib-quiz")):checkAllExercises(quiz,response)).then((function(scoreMarks){mScoreMarks=scoreMarks,$.each(scoreMarks,(function(i,sm){s+=parseFloat(sm.score),m=sm.mark.split("/"),nom+=parseInt(m[0]),den+=parseInt(m[1])}))}));var calcScore=parseFloat(s/den*100),totalScore=Math.round(calcScore),totalMark=nom+"/"+den;scoreContainer=button.closest(".totals").find("span.score"),seeScore&&(100==totalScore?scoreContainer.addClass("A"):totalScore>70?scoreContainer.addClass("B"):totalScore>50?scoreContainer.addClass("C"):totalScore>30?scoreContainer.addClass("D"):scoreContainer.addClass("E"),scoreContainer.append("<strong>"+totalMark+'</strong>&nbsp;<small style="opacity: .8">('+totalScore+"%)</small>")),button.remove(),$("#save-quiz-progress").remove(),notRequired||($("#quiz-scored").length&&(seeScore&&seeAnswers&&$("#quiz-scored").val(totalScore),$("#quiz-scored").trigger("change")),$("#quiz-marked").length&&(seeScore&&seeAnswers&&$("#quiz-marked").val(totalMark),logger=quizLogger(quiz,mScoreMarks),saveQuizLog(logger,totalScore)))}function saveAsDraft(showMsg=!0,type="written-task"){if(("undefined"==typeof isExamMode||!isExamMode)&&"undefined"!=typeof sendLogs){var quiz=null,taskId=null;switch(type){case"written-task":quiz=$("#tib-written-task"),taskId=$("a.save-as-draft").data("task-id");break;case"written-answer":case"model-answer":quiz=$(".dedicated-uploader"),taskId=$("#submit-upload-answer").data("task-id")}if(null!=quiz&&quiz.length){quiz.find(".manual-q-answer").each((function(){$(this).find(".wt").css("background-color","#fff"),$(this).find(".wt-limit-error").each((function(){$(this).remove()})),$(this).find(".ck-fake-selection-container").each((function(){$(this).remove()}))}));var draftData=quiz[0].outerHTML,url="pages/std/std-task-write.php?action=save-written-draft",data={ticket:$("#ticket").val(),task_id:taskId,student_id:studentID,content:draftData,type:type,manual:!0};$.post(url,data,(function(response){if("1"==response.success){if("written-task"==type&&deleteS3Files(quiz),showMsg){var successMsg=$(['<div class="alert alert-success" style="margin-bottom: 0; margin-top: 10px;">','<i class="fa fa-check-circle-o"></i> ',"<strong>Task successfully saved as draft</strong>","</div>"].join(""));quiz.find("#manual-task-checker").before(successMsg),successMsg.show("fast").delay(5e3).hide("slow",(function(){$(this).remove()}))}}else alert(response.msg)}),"json")}}}function saveAsWritingTask(quizAnswer,quizIdsArray,taskID="",emptyTask){var isExam="undefined"!=typeof examTime,url="pages/std/std-task-write.php?action=send-written-task",data={ticket:$("#ticket").val(),std_task_id:$("#std-task-id").val(),student_ID:studentID,"task-ID":taskID,content:quizAnswer,isExam:isExam,quiz_ids:JSON.stringify(quizIdsArray),empty_task:emptyTask};$.post(url,data,(function(response){"1"==response.success?(sendLogs=!1,controlExamInCombinedTask(),deleteS3Files($(quizAnswer)),$("div.alert").replaceWith('                <div class="alert alert-success" style="margin-bottom: 10px; margin-top: 10px;">                     <i class="fa fa-check-circle-o"></i>                     <strong>Task successfully submitted</strong>                 </div>            '),$("div.alert").show("fast").delay(3e3).hide("slow"),$("#main-content").find("#tib-written-task").each((function(){$(this).find(".manual-q-answer .std-manual-answer").each((function(){var responseParagraph=$(this);responseParagraph.addClass("well"),responseParagraph.css("margin-bottom","10px"),responseParagraph.find("p").last().css("margin-bottom","0")}))})),$("#main-content").find("#tib-written-task").each((function(){var tibQuiz=$(this);null!=response.tib_quizzes&&$.when(getEditorAnswers(response.tib_quizzes)).then((function(answers){appendEditorAnswers(tibQuiz,answers,"right")})),showEssayWordLimit()})),$(".submit-manual-task, .draft-task, .return-to-all-tasks").hide(),$("#return-my-tasks-q").show(),$("#task-completed-badge-written-task").show()):($("a.submit-manual-task").html('<i class="fa fa-fw fa-check-square-o"></i> Submit task'),alert(response.msg))}),"json")}function getEditorAnswers(response){var tibQuizzes=JSON.parse(response),editorAnswers={};return $.each(tibQuizzes,(function(id,content){var domContent=$($.parseHTML(content)),stdAnswersArray=[];domContent.find(".manual-q-answer").each((function(i){var manualAnswer=$(this);if(manualAnswer.hasClass("uploader")){var input=manualAnswer;stdAnswersArray.push(input.html())}else manualAnswer.find(".short-answer-input-1, .multiple-lines-answer, .essay-words-answer").each((function(){var input=$(this);stdAnswersArray.push(input.html())}));editorAnswers[i]=stdAnswersArray}))})),editorAnswers}function getEditorNotes(response){var tibQuizzes=JSON.parse(response),editorNotes=[];return $.each(tibQuizzes,(function(id,content){var domContent;$($.parseHTML(content)).siblings(".manual-q-field").find(".manual-q-explanation").each((function(i){editorNotes.push($(this).html().trim())}))})),editorNotes}function appendEditorAnswers(tibQuiz,editorAnswers,align){if(!$.isEmptyObject(editorAnswers)){var answerIndex=-1;tibQuiz.find(".written-question .manual-q-answer").each((function(pos){if(null!=editorAnswers[pos]){var answersArray=editorAnswers[pos];$(this).find(".std-manual-answer").each((function(i){var element=$(this),editorAnswer=answersArray[answerIndex+=1];(editorAnswer=editorAnswer.replace(/&nbsp;/g,"")).trim().length>0?element.after('<div style="text-align: '+align+'; cursor: pointer;">                         <a class="modal-answer-showhide href="#" style="margin-'+align+': 5px;">                         <i class="fa fa-eye"></i> Show model answer</a>                     </div>                     <div class="short-modal-answer accordion-inner" style="display: none;">'+editorAnswer+"</div>"):element.css("margin-bottom","10px")})),$(this).on("click",".modal-answer-showhide",(function(e){e.preventDefault(),$(this).closest("div").next(".short-modal-answer").toggle("fast")}))}})),tibQuiz.find(".written-question .uploader-answer").each((function(pos){var editorAnswer=editorAnswers[0][pos],element=$(this);editorAnswer.trim().length>0&&element.html('<div style="text-align: '+align+'; cursor: pointer; padding: 12px; background: #fffef0; border-color: #fff4ba;">                     <a class="modal-answer-showhide href="#" style="margin-'+align+': 5px;">                     <i class="fa fa-eye"></i> Show model answer</a>                 </div>                 <div class="short-modal-answer accordion-inner" style="display: none;">'+editorAnswer+"</div>"),$(this).next("div").remove(),$(this).on("click",".modal-answer-showhide",(function(e){e.preventDefault(),$(this).closest("div").next(".short-modal-answer").toggle("fast")}))}))}}function appendEditorNotes(tibQuiz,editorNotes){(editorNotes=editorNotes.filter((function(entry){return""!=entry}))).length>0&&tibQuiz.find(".written-question .manual-q-answer, .written-question .uploader-answer").each((function(pos){if(null!=editorNotes[pos]){var answerBlock=$(this),notes=editorNotes[pos];void 0!==(notes=notes.replace(/&nbsp;/g,""))&&notes.trim().length>0&&answerBlock.after('<div class="manual-q-explanation" style="display: block;">                         <p style="color: rgba(0, 98, 102, 0.5);">'+notes+"</p>                     </div>")}}))}function checkEmptyNotes(){$(".manual-q-explanation").each((function(){var notesBox=$(this);notesBox.find("p:empty").remove(),$.trim(notesBox.html())||notesBox.hide()}))}function keyUp(maxLength,element){element.keyup((function(){var length=element.val().length,length;0==(length=maxLength-length)?(element.css("margin-bottom","0"),element.next("div.char-limit").find("span").text("Word limit reached!")):(element.next("div.char-limit").find("span").text(""),element.css("margin-bottom",""))}))}function checkAllExercises(quiz,response){var nQuestion=0,scoreMarks=[];return quiz.find(".exercise").each((function(){if(null!=response){var scoreMark=checkExercise($(this),response,nQuestion);scoreMarks.push(scoreMark),nQuestion++}else{var scoreMark=checkExerciseAnswers($(this),nQuestion);scoreMarks.push(scoreMark),nQuestion++}})),scoreMarks}function checkExerciseAnswers(exercise,nQuestion){var exerciseAnswer={},hashedAnswers=[],stdOrderAnswered=[],exerciseType="";return exercise.find(".q-answer").each((function(){var qAnswer=$(this);$(this).find("input").each((function(index){var input=$(this);if(exerciseType=input.attr("type"),"text"===input.attr("type")){var gapAnswer=$.trim(input.val());gapAnswer=gapAnswer.replace(/["]/g,"''"),hashedAnswers.push(gapAnswer),input.closest("p").css("pointer-events","none")}if("radio"===input.attr("type")||"checkbox"===input.attr("type")){if(qAnswer.find("table.table-true-false").length&&(exerciseType="true-false"),input.is(":checked")){var label,answerHashed=input.parent("label").attr("data-answer");hashedAnswers.push(answerHashed),stdOrderAnswered.push(index)}input.attr("disabled",!0)}}))})),exerciseAnswer.type=exerciseType,exerciseAnswer.answers=hashedAnswers,exerciseAnswer.order=stdOrderAnswered,exerciseAnswer}function checkExercise(exercise,response,nQuestion){cAnswers=response.structure;var seeScore=response.ss,seeAnswers=response.sa;nCorrect=0,nAnswers=0,isRadio=!1;var score=0,mark="";exercise.find(".btn.check").remove(),seeAnswers||exercise.find(".q-explanation, .explanation").remove();var explanation="";$.trim(exercise.find(".q-explanation, .explanation").html())&&(exercise.find(".q-explanation").attr("class","explanation"),explanation=exercise.find(".explanation").detach());var answers=exercise.find(".q-answer");exercise.find(".q-answer").each((function(){var c=cAnswers["question"+nQuestion].answers;if(isTrueFalseExercise($(this))){var nTr=0;$(this).find("tr").each((function(){var correct=c[nTr],tr;$(this).find("input").each((function(){let label=$(this).closest("label"),cleaningVal=void 0!==label.attr("data-answer")?label.attr("data-answer"):label.text().trim();correctCheckboxesOrRadios($(this),!0,cleaningVal,correct,seeAnswers)})),nTr++}))}else $(this).find("input").each((function(){var nCorrectAnswers=c.length,questionAnswer=$(this).closest("div.q-answer");if("text"===$(this).attr("type")){var a=$.trim($(this).val());if(a=a.replace(/["]/g,"''"),nAnswers++,c[0].toLowerCase()==a.toLowerCase())$(this).addClass("correct"),nCorrect++;else{var add='&nbsp;[<strong style="color: #444;">'+c[0]+"</strong>]&nbsp;";$(this).addClass("fail"),$(this).next(".review").append(add)}c.shift()}if("radio"===$(this).attr("type")||"checkbox"===$(this).attr("type")){var label=$(this).parent("label");if(void 0!==label.attr("data-answer")){var answerHashed=label.attr("data-answer");correctCheckboxesOrRadios($(this),_isTrueFalseExercise=!1,answerHashed,c,seeAnswers)}else{var optionLetter=label.find(".option-letter");label.find(".option-letter").remove();var cleaningVal=label.text().trim();if(label.prepend(optionLetter),cleaningVal=cleaningVal.replace(/&nbsp;|\s+/g," "),$(this).parent("label").find("img").length>0){for(var img=$(this).parent("label").find("img"),htmlImg="",i=0;i<img.length;i++)htmlImg+=img[i].outerHTML;cleaningVal+=htmlImg}var mathJaxId=$(this).parent("label").find("script").attr("id"),mathJaxAnswer,nTotalAnswered;if(void 0!==mathJaxId&&null!==mathJaxId.match(/MathJax-Element-[0-9]*/i)&&$("#"+mathJaxId).length)cleaningVal=$("#"+mathJaxId).text(),c=c.map((function(answer){return answer.replace(/^\\\(|\\\)$/gm,"")}));if("checkbox"===$(this).attr("type"))if(questionAnswer.find('input[type="checkbox"]').filter(":checked").length>nCorrectAnswers)return;correctCheckboxesOrRadios($(this),_isTrueFalseExercise=!1,cleaningVal,c,seeAnswers)}}}))})),nCorrect<0&&(nCorrect=0),score=nCorrect,mark=nCorrect+"/"+nAnswers;var scoreContainer=exercise.find(".actions .score");seeScore&&seeAnswers&&(scoreContainer.attr("data-score",score),scoreContainer.attr("data-mark",mark)),seeAnswers&&(100==score?scoreContainer.addClass("A"):score>70?scoreContainer.addClass("B"):score>50?scoreContainer.addClass("C"):score>30?scoreContainer.addClass("D"):scoreContainer.addClass("E"),answers.append(explanation));var quiz=$(this).closest(".tib-quiz");return 0==quiz.find(".btn.check").length&&quiz.find(".check-total").trigger("click"),{score:score,mark:mark}}function correctCheckboxesOrRadios(input,_isTrueFalseExercise,cleaningVal,corrects,seeAnswers){var isCorrect=_isTrueFalseExercise?corrects==cleaningVal:corrects.includes(cleaningVal);input.is(":checked")?isCorrect?(seeAnswers&&(input.parent().addClass("correct"),input.parent().append('&nbsp<i class="fa fa-check colored"></i>')),nCorrect++,"radio"!==input.attr("type")||isRadio||(nAnswers++,isRadio=!0),"checkbox"===input.attr("type")&&nAnswers++):seeAnswers&&(input.parent().addClass("fail"),input.parent().append('&nbsp<i class="fa fa-remove colored"></i>')):isCorrect&&("radio"!==input.attr("type")||isRadio||(nAnswers++,isRadio=!0),"checkbox"===input.attr("type")&&nAnswers++,seeAnswers&&input.parent().addClass("correct")),input.attr("disabled",!0)}function isTrueFalseExercise(answerZone){return answerZone.find(".table-true-false").length>0}function buttonRulesWrittenAnswers(){$(".show-solution").click((function(e){e.preventDefault(),$(this).closest(".exercise").find(".q-solution").show(),$(this).fadeOut("fast",(function(){$(this).remove()}))})),$(".show-answer").click((function(e){e.preventDefault(),$(this).closest(".exercise").find(".q-answer").show(),$(this).fadeOut("fast",(function(){$(this).remove()}))}))}function buttonRulesModelAnswers(){$(".show-explanation").click((function(e){e.preventDefault(),$(this).closest(".exercise").find(".q-explanation").show(),$(this).fadeOut("fast",(function(){$(this).remove()}))}))}function hideUploader(){if("undefined"==typeof isStudent||isStudent){var uploader;if("undefined"==typeof sendLogs)(uploader=$("#main-column .tib-quiz").find(".dedicated-uploader")).length&&uploader.remove()}else{var uploader=$("#main-column .tib-quiz").find(".dedicated-uploader"),preview;($("#main-column").find("section.quiz-preview").length||uploader.length)&&uploader.find('label[for="upload-dedicated-attachment"]').attr("disabled",!0)}}function uploadDedicatedAttachments(){$("#upload-dedicated-attachment").on("change",(function(e){e.preventDefault();var form=$("form#dedicated-upload-form"),totalStatus=$("span.total-files"),maxFiles=$(this).data("max"),files=$(this).get(0).files;if(files.length>0){var total;if($("form#dedicated-upload-form").find($("ul#dedicated-upload-list")).length||$("form#dedicated-upload-form").append('<ul id="dedicated-upload-list"></ul>'),$("#dedicated-upload-list").find("li.dedicated-upload-file").length+files.length>maxFiles||files.length>maxFiles)return alert("You can only upload a maximum of "+maxFiles+(maxFiles>1?" files":" file")),!1;if(!isStudent||"undefined"==typeof sendLogs)return $(files).each((function(i,file){appendUploadedFile(file)})),getTotalUploadedFiles(totalStatus),!1;$(files).each((function(i,file){var fileName,extension=encodeURIComponent(file.name).split(".").pop(),data=new FormData;data.append("ticket",$("#ticket").val()),data.append("filename",file.name+"-"+Date.now()+"."+extension),data.append("typeUpload","fileUpload"),data.append("upload",file),$.ajax({type:form.attr("method"),url:form.attr("action"),dataType:"JSON",data:data,processData:!1,contentType:!1,beforeSend:function(){totalStatus.html('Uploading...<i class="fa fa-spin fa-circle-o-notch"></i>')},success:function(response){if(response.uploaded){var url=response.url;appendUploadedFile(file,url),enableDisableUploadBtn(!0),enableDisableSubmitBtn(!1)}else response.error.message&&alert(response.error.message)},error:function(xhr){console.error(xhr.statusText+xhr.responseText)},complete:function(){var type;getTotalUploadedFiles(totalStatus),saveAsDraft(!1,$("#submit-upload-answer").data("type"))}})}))}})),$(".dedicated-uploader").on("click","i.remove-attachment",(function(e){e.preventDefault();var attachment=$(this).closest("li"),totalStatus=$("span.total-files");if(!isStudent)return attachment.fadeOut(500,(function(){$(this).remove(),getTotalUploadedFiles(totalStatus)})),!1;let toDeleteFiles=[],url="/pages/std/std-file-delete.php";toDeleteFiles.push(attachment.data("source"));var data={ticket:$("#ticket").val(),delete:toDeleteFiles};totalStatus.html('Deleting...<i class="fa fa-spin fa-circle-o-notch"></i>'),$.post(url,data,(function(response){response.deleted&&attachment.fadeOut(500,(function(){$(this).remove(),total=getTotalUploadedFiles(totalStatus),saveAsDraft(!1),enableDisableUploadBtn(!1),0==total&&enableDisableSubmitBtn(!0)}))}),"json")}))}function appendUploadedFile(file,url=null){var dataSource="",fileLink='<a href="#" target="_blank">'+file.name+"</a>",source;isStudent&&null!=url&&(dataSource=' data-source="'+url.substr(url.indexOf(".net/")+5)+'"',fileLink='<a href="'+url+'" target="_blank">'+file.name+"</a>");$("#dedicated-upload-list").append(`<li class="dedicated-upload-file"${dataSource}>\n            <span>${fileLink}</span>\n            <i class="fa fa-trash-o colored remove-attachment" title="Remove attachment"></i>\n        </li>`)}function getTotalUploadedFiles(totalStatus){var total=$("#dedicated-upload-list").find("li.dedicated-upload-file").length;return totalStatus.text(total>0?total+" file(s)":""),total}function removeUploader(){$(".tib-quiz").length&&$(".tib-quiz").find(".dedicated-uploader").length&&$(".tib-quiz").find(".dedicated-uploader").remove()}function enableDisableUploadBtn(disable){$("#dedicated-upload-form").find("label.form-label").attr("disabled",disable)}function enableDisableSubmitBtn(disable){$("#submit-upload-answer").toggleClass("disabled",disable)}function checkIndividualQuestionPageViewer(){$("section").on("click",".exercise .btn.check",(function(e){var exercise;e.preventDefault(),checkExercisePageViewer($(this).closest("div.exercise")),$(this).remove()}))}function checkQuizPageViewer(){$("section").on("click",".tib-quiz .check-total",(function(e){e.preventDefault();var button=$(this),quiz=button.closest(".tib-quiz");checkAndCalcQuiz(button,quiz,void 0,!0)}))}function checkAllExercisesPageViewer(quiz){var scoreMarks=[];return quiz.find(".exercise").each((function(){var scoreMark=checkExercisePageViewer($(this));scoreMarks.push(scoreMark)})),scoreMarks}function checkExercisePageViewer(exercise){var answers=exercise.find(".q-answer"),explanation=null;$.trim(exercise.find(".q-explanation").html())&&(explanation=exercise.find(".q-explanation").attr("class","explanation").detach());var nCorrect=0,nAnswers=0,score=0,mark="",isRadio=!1;exercise.find("label").length>0&&(exercise.find("label").each((function(){$(this).find("input").hasClass("c")&&$(this).addClass("correct"),$(this).find("input").hasClass("c")&&!isRadio&&(isRadio=$(this).hasClass("radio"),nAnswers+=1),$(this).find("input").is(":checked")&&$(this).find("input").hasClass("c")&&($(this).append('&nbsp;<i class="fa fa-check colored"></i>'),nCorrect+=1),$(this).find("input").is(":checked")&&!$(this).find("input").hasClass("c")&&($(this).addClass("fail"),$(this).append('&nbsp;<i class="fa fa-remove colored"></i>'))})),nCorrect<0&&(nCorrect=0)),exercise.find('input[type="text"]').length>0&&(nAnswers=exercise.find('input[type="text"]').length,exercise.find('input[type="text"]').each((function(){var c=$.trim($(this).attr("data-c")),a=$.trim($(this).val());if(a=a.replace(/["]/g,"''"),c.toLowerCase()==a.toLowerCase())$(this).addClass("correct"),$(this).val(c),nCorrect+=1;else{var add='&nbsp;[<strong style="color: #444;">'+c+"</strong>]&nbsp;";$(this).addClass("fail"),$(this).next(".review").append(add)}})),nCorrect<0&&(nCorrect=0)),score=nCorrect,mark=nCorrect+"/"+nAnswers;var scoreContainer=exercise.find(".actions .score");scoreContainer.attr("data-score",score),scoreContainer.attr("data-mark",mark),100==score?scoreContainer.addClass("A"):score>70?scoreContainer.addClass("B"):score>50?scoreContainer.addClass("C"):score>30?scoreContainer.addClass("D"):scoreContainer.addClass("E"),explanation&&answers.append(explanation);var quiz=$(this).closest(".tib-quiz");return 0==quiz.find(".btn.check").length&&quiz.find(".check-total").trigger("click"),{score:score,mark:mark}}function addMaxCheckboxesToAnswers(){$(".tib-quiz").each((function(){$(this).find(".exercise .q-answer").each((function(){var answerField=$(this);if($(this).find('input[type="checkbox"]').length>0){var nCorrect=$(this).find('input.c[type="checkbox"]').length;answerField.attr("data-mcb",nCorrect)}}))}))}function limitMultipleChoiceAnswers(){$(".exercise").find(".q-answer").on("click",'input[type="checkbox"]',(function(){if($(this).closest(".exercise").find(".table-true-false").length)$(this).closest("tr").find("input:checked").length>1&&$.when($(this).closest("tr").find('input[type="checkbox"]').prop("checked",!1)).then($(this).prop("checked",!0));else{var maxAnswers=$(this).closest("div.q-answer").data("mcb"),currentlyChecked;$(this).closest("div.q-answer").find('input[type="checkbox"]').filter(":checked").length>maxAnswers&&$(this).prop("checked",!1)}}))}function showMaxCorrectAnswers(){if("undefined"!=typeof siteName&&"frenchorals"==siteName)return!1;$(".tib-quiz").each((function(){$(this).find(".exercise .q-question").each((function(){if(0==$(this).closest(".exercise").find(".table-true-false").length){var mcb=$(this).next().data("mcb");mcb>0&&$(this).find("p:last-child").after(['<span class="badge badge-info pull-right" style="cursor: default;" ','title="Select the '+mcb+' correct answers">',mcb,"</span>"].join(""))}}))}))}function alertMaxCorrectAnswers(){$(".tib-quiz").each((function(){$(this).find(".exercise .q-question").each((function(){var question=$(this);if(!question.closest(".exercise").find(".table-true-false").length){var answer=$(this).next(),mcb=answer.data("mcb");answer.find('input[type="checkbox"]').on("click",(function(e){var totalChecked;answer.find('input[type="checkbox"]:checked').length>mcb&&(this.checked=!1,e.preventDefault(),question.append(['<div class="alert alert-error alert-mcb" style="margin-bottom: 0;">','<button type="button" class="close" data-dismiss="alert">&times;</button>',"You can only select "+mcb+" options","</div>"].join("")),setTimeout(()=>{$(".alert-mcb").hide("fast",(function(){$(this).remove()}))},3e3))}))}}))}))}function showEssayWordLimit(){$(".word-limit").each((function(){var wordLimit=$(this),minWords=wordLimit.data("min-words"),maxWords=wordLimit.data("max-words");wordLimit.append(`&nbsp;<small><em>(Limit: ${minWords}-${maxWords})</em></small>`)}))}function addLettersBeforeOptions(questionDetail=!1){var lettersArray=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],quizExercise;(questionDetail?$(".modal-body .exercise"):$(".tib-quiz .exercise")).each((function(){$(this).find(".q-answer").each((function(){if(!$(this).find(".table-true-false").length){var inputs=$(this).find('input[type="radio"], input[type="checkbox"]'),putLetters=checkIfPutLetters(inputs);$(inputs).each((function(i,el){if(questionDetail&&$(el).css("margin-right","1em"),putLetters){var letterSpan=$(`<strong class="option-letter">${lettersArray[i]}.</strong>`);$(el).closest("p, label").prepend(letterSpan)}}))}}))}))}function checkIfPutLetters(inputs){var check=!1;return $(inputs).each((function(i,el){var answerContent;if(null===$(el).closest("p, label").text().match(/^\s+[A-Z][).-]?\s*?$/g))return check=!0,!1})),check}function countLines(element){var lines=0,greatestOffset=void 0;return element.find("character").each((function(){(!greatestOffset||this.offsetTop>greatestOffset)&&(greatestOffset=this.offsetTop,++lines)})),lines}function controlExamInCombinedTask(){if("undefined"!=typeof isExamCombinedTask&&"true"===isExamCombinedTask){sendLogs=!0;var numberTasks=2;setNumExamCombTaskDone();var nCombTaskCompleted=getNumExamCombTaskDone();!1!==nCombTaskCompleted&&(nCombTaskCompleted++,localStorage.setItem(combTaskID,nCombTaskCompleted)),2==nCombTaskCompleted&&(sendLogs=!1,removeExamCountdownTimer(),showReturnMyTasksBtn(),localStorage.removeItem(combTaskID))}else removeExamCountdownTimer(),showReturnMyTasksBtn()}function showReturnMyTasksBtn(){$(".return-to-all-tasks").length||($("#return-my-tasks-q").length&&$("#return-my-tasks-q").show(),$("#return-my-tasks-w").length&&$("#return-my-tasks-w").show())}function removeExamCountdownTimer(){$("#std-countdown-timer").length&&($("#std-countdown-timer").remove(),onTimesUp())}$.fn.getLines=function(){var lines=0,clean=this,dirty=this.clone();return function wrapCharacters(fragment){var parent=fragment;$(fragment).contents().each((function(){this.nodeType===Node.ELEMENT_NODE?wrapCharacters(this):this.nodeType===Node.TEXT_NODE&&function replaceNode(text){var characters=document.createDocumentFragment();text.nodeValue.trim().replace(/[\s\S]/gm,(function wrapCharacter(character){characters.appendChild($("<character>"+character+"</>")[0])})),parent.replaceChild(characters,text)}(this)}))}(dirty[0]),this.replaceWith(dirty),lines=countLines(dirty),dirty.replaceWith(this),lines};