Changeset 1717342
- Timestamp:
- 08/22/2017 03:07:02 AM (9 years ago)
- Location:
- quizmaster
- Files:
-
- 166 added
- 35 edited
-
tags/0.7.0 (added)
-
tags/0.7.0/.gitignore (added)
-
tags/0.7.0/css (added)
-
tags/0.7.0/css/quizmaster-admin.css (added)
-
tags/0.7.0/css/quizmaster.css (added)
-
tags/0.7.0/css/quizmaster.min.css (added)
-
tags/0.7.0/fields (added)
-
tags/0.7.0/fields/exports (added)
-
tags/0.7.0/fields/exports/acf-export-2017-04-27-v2.json (added)
-
tags/0.7.0/fields/exports/acf-export-2017-04-27-with-graduations.json (added)
-
tags/0.7.0/fields/exports/acf-export-2017-05-07.json (added)
-
tags/0.7.0/fields/fieldgroups (added)
-
tags/0.7.0/fields/fieldgroups/email.php (added)
-
tags/0.7.0/fields/fieldgroups/question.php (added)
-
tags/0.7.0/fields/fieldgroups/quiz.php (added)
-
tags/0.7.0/fields/fieldgroups/score.php (added)
-
tags/0.7.0/fields/fieldgroups/settings.php (added)
-
tags/0.7.0/img (added)
-
tags/0.7.0/js (added)
-
tags/0.7.0/js/datatables (added)
-
tags/0.7.0/js/datatables/images (added)
-
tags/0.7.0/js/datatables/images/Sorting icons.psd (added)
-
tags/0.7.0/js/datatables/images/favicon.ico (added)
-
tags/0.7.0/js/datatables/images/sort_asc.png (added)
-
tags/0.7.0/js/datatables/images/sort_asc_disabled.png (added)
-
tags/0.7.0/js/datatables/images/sort_both.png (added)
-
tags/0.7.0/js/datatables/images/sort_desc.png (added)
-
tags/0.7.0/js/datatables/images/sort_desc_disabled.png (added)
-
tags/0.7.0/js/datatables/jquery.dataTables.min.css (added)
-
tags/0.7.0/js/datatables/jquery.dataTables.min.js (added)
-
tags/0.7.0/js/jquery.easypiechart.min.js (added)
-
tags/0.7.0/js/jquery.ui.touch-punch.min.js (added)
-
tags/0.7.0/js/quizMaster_admin.js (added)
-
tags/0.7.0/js/quizMaster_admin.min.js (added)
-
tags/0.7.0/js/quizmaster.js (added)
-
tags/0.7.0/js/quizmaster.min.js (added)
-
tags/0.7.0/languages (added)
-
tags/0.7.0/languages/quizmaster.pot (added)
-
tags/0.7.0/lib (added)
-
tags/0.7.0/lib/controller (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Admin.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Ajax.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Controller.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Email.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Fields.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Front.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Question.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Quiz.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Score.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_StudentReport.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Support.php (added)
-
tags/0.7.0/lib/controller/QuizMaster_Controller_Taxonomies.php (added)
-
tags/0.7.0/lib/helper (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Captcha.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_CheckAnswers.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_CopyPost.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_DbUpgrade.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Extension.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Fields.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Log.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Submenu.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Until.php (added)
-
tags/0.7.0/lib/helper/QuizMaster_Helper_Upgrade.php (added)
-
tags/0.7.0/lib/model (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Answer.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_AnswerTypes.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Email.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Lock.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_LockMapper.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Mapper.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Model.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Question.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_QuestionMapper.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Quiz.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_QuizMapper.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_QuizQuestion.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_Score.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_ScoreMapper.php (added)
-
tags/0.7.0/lib/model/QuizMaster_Model_ScoreQuestion.php (added)
-
tags/0.7.0/lib/model/answer_types (added)
-
tags/0.7.0/lib/model/answer_types/QuizMaster_Answer_Fill_Blank.php (added)
-
tags/0.7.0/lib/model/answer_types/QuizMaster_Answer_Free.php (added)
-
tags/0.7.0/lib/model/answer_types/QuizMaster_Answer_MultipleChoice.php (added)
-
tags/0.7.0/lib/model/answer_types/QuizMaster_Answer_SingleChoice.php (added)
-
tags/0.7.0/lib/model/answer_types/QuizMaster_Answer_Sorting.php (added)
-
tags/0.7.0/lib/model/question_types (added)
-
tags/0.7.0/lib/model/question_types/QuizMaster_Question_FillBlank.php (added)
-
tags/0.7.0/lib/model/question_types/QuizMaster_Question_Free.php (added)
-
tags/0.7.0/lib/model/question_types/QuizMaster_Question_MultipleChoice.php (added)
-
tags/0.7.0/lib/model/question_types/QuizMaster_Question_SingleChoice.php (added)
-
tags/0.7.0/lib/model/question_types/QuizMaster_Question_Sorting.php (added)
-
tags/0.7.0/lib/model/quiz_types (added)
-
tags/0.7.0/lib/view (added)
-
tags/0.7.0/lib/view/QuizMaster_View_FrontQuiz.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_GlobalHelperTabs.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_InfoAdaptation.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_QuestionOverall.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_QuestionOverallTable.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_QuizOverall.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_QuizOverallTable.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_Score.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_StyleManager.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_Support.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_Taxonomies.php (added)
-
tags/0.7.0/lib/view/QuizMaster_View_View.php (added)
-
tags/0.7.0/quizmaster.php (added)
-
tags/0.7.0/quizmaster.png (added)
-
tags/0.7.0/readme.txt (added)
-
tags/0.7.0/templates (added)
-
tags/0.7.0/templates/emails (added)
-
tags/0.7.0/templates/emails/email-footer.php (added)
-
tags/0.7.0/templates/emails/email-header.php (added)
-
tags/0.7.0/templates/emails/plain (added)
-
tags/0.7.0/templates/emails/plain/email-footer.php (added)
-
tags/0.7.0/templates/emails/plain/email-header.php (added)
-
tags/0.7.0/templates/emails/plain/student-completion.php (added)
-
tags/0.7.0/templates/emails/plain/teacher-completion.php (added)
-
tags/0.7.0/templates/emails/student-completion.php (added)
-
tags/0.7.0/templates/emails/teacher-completion.php (added)
-
tags/0.7.0/templates/question (added)
-
tags/0.7.0/templates/question.php (added)
-
tags/0.7.0/templates/question/fill_blank.php (added)
-
tags/0.7.0/templates/question/free.php (added)
-
tags/0.7.0/templates/question/multiple.php (added)
-
tags/0.7.0/templates/question/single.php (added)
-
tags/0.7.0/templates/question/sorting.php (added)
-
tags/0.7.0/templates/quiz (added)
-
tags/0.7.0/templates/quiz.php (added)
-
tags/0.7.0/templates/quiz/body.php (added)
-
tags/0.7.0/templates/quiz/button-back.php (added)
-
tags/0.7.0/templates/quiz/button-check.php (added)
-
tags/0.7.0/templates/quiz/button-finish.php (added)
-
tags/0.7.0/templates/quiz/button-hint.php (added)
-
tags/0.7.0/templates/quiz/button-next.php (added)
-
tags/0.7.0/templates/quiz/button-skip.php (added)
-
tags/0.7.0/templates/quiz/category.php (added)
-
tags/0.7.0/templates/quiz/check.php (added)
-
tags/0.7.0/templates/quiz/footer.php (added)
-
tags/0.7.0/templates/quiz/header.php (added)
-
tags/0.7.0/templates/quiz/info.php (added)
-
tags/0.7.0/templates/quiz/load-box.php (added)
-
tags/0.7.0/templates/quiz/loader.php (added)
-
tags/0.7.0/templates/quiz/locked.php (added)
-
tags/0.7.0/templates/quiz/question-buttons.php (added)
-
tags/0.7.0/templates/quiz/question-item.php (added)
-
tags/0.7.0/templates/quiz/question-points.php (added)
-
tags/0.7.0/templates/quiz/question-response.php (added)
-
tags/0.7.0/templates/quiz/registered.php (added)
-
tags/0.7.0/templates/quiz/results-box.php (added)
-
tags/0.7.0/templates/quiz/review.php (added)
-
tags/0.7.0/templates/quiz/start.php (added)
-
tags/0.7.0/templates/quiz/time.php (added)
-
tags/0.7.0/templates/reports (added)
-
tags/0.7.0/templates/reports/score-filter.php (added)
-
tags/0.7.0/templates/reports/score-history.php (added)
-
tags/0.7.0/templates/reports/score-modal.php (added)
-
tags/0.7.0/templates/reports/score-question-table.php (added)
-
tags/0.7.0/templates/reports/score-tab.php (added)
-
tags/0.7.0/templates/reports/score-table.php (added)
-
tags/0.7.0/templates/reports/scores.php (added)
-
tags/0.7.0/templates/reports/student-login.php (added)
-
tags/0.7.0/templates/score.php (added)
-
tags/0.7.0/uninstall.php (added)
-
trunk/css/quizmaster-admin.css (added)
-
trunk/css/quizmaster.css (modified) (3 diffs)
-
trunk/fields/exports/acf-export-2017-05-07.json (modified) (3 diffs)
-
trunk/fields/fieldgroups/question.php (modified) (4 diffs)
-
trunk/fields/fieldgroups/quiz.php (modified) (2 diffs)
-
trunk/js/quizMaster_admin.js (modified) (6 diffs)
-
trunk/js/quizMaster_admin.min.js (modified) (1 diff)
-
trunk/js/quizmaster.js (modified) (1 diff)
-
trunk/js/quizmaster.min.js (modified) (1 diff)
-
trunk/lib/controller/QuizMaster_Controller_Admin.php (modified) (2 diffs)
-
trunk/lib/controller/QuizMaster_Controller_Ajax.php (modified) (2 diffs)
-
trunk/lib/helper/QuizMaster_Helper_CheckAnswers.php (added)
-
trunk/lib/helper/QuizMaster_Helper_DbUpgrade.php (modified) (1 diff)
-
trunk/lib/helper/QuizMaster_Helper_Upgrade.php (modified) (2 diffs)
-
trunk/lib/model/QuizMaster_Model_Question.php (modified) (4 diffs)
-
trunk/lib/model/QuizMaster_Model_QuestionMapper.php (modified) (1 diff)
-
trunk/lib/model/QuizMaster_Model_Quiz.php (modified) (2 diffs)
-
trunk/lib/model/answer_types/QuizMaster_Answer_Sorting.php (modified) (2 diffs)
-
trunk/lib/view/QuizMaster_View_FrontQuiz.php (modified) (2 diffs)
-
trunk/quizmaster.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/templates/question/fill_blank.php (modified) (1 diff)
-
trunk/templates/question/free.php (modified) (2 diffs)
-
trunk/templates/question/multiple.php (modified) (1 diff)
-
trunk/templates/question/single.php (modified) (2 diffs)
-
trunk/templates/question/sorting.php (modified) (2 diffs)
-
trunk/templates/quiz/body.php (modified) (1 diff)
-
trunk/templates/quiz/button-back.php (modified) (1 diff)
-
trunk/templates/quiz/button-finish.php (added)
-
trunk/templates/quiz/button-hint.php (modified) (1 diff)
-
trunk/templates/quiz/button-next.php (modified) (1 diff)
-
trunk/templates/quiz/button-skip.php (modified) (1 diff)
-
trunk/templates/quiz/check.php (modified) (1 diff)
-
trunk/templates/quiz/footer.php (modified) (2 diffs)
-
trunk/templates/quiz/loader.php (modified) (1 diff)
-
trunk/templates/quiz/question-buttons.php (modified) (1 diff)
-
trunk/templates/quiz/question-item.php (modified) (1 diff)
-
trunk/templates/quiz/review.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
quizmaster/trunk/css/quizmaster.css
r1712912 r1717342 6 6 /* Start Quiz Box */ 7 7 .qm-quiz-start-box { 8 display: none; 9 } 10 11 .qm-button.qm-back-button, 12 .qm-button.qm-skip-button { 8 13 display: none; 9 14 } … … 79 84 } 80 85 81 .quizMaster_list, .q uizMaster_listItem, .quizMaster_questionList, .quizMaster_sortStringList, .quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion, .qm-results-boxList, .quizMaster_catOverview ol {86 .quizMaster_list, .qm-question-list-item, .quizMaster_listItem, .quizMaster_questionList, .quizMaster_sortStringList, .quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion, .qm-results-boxList, .quizMaster_catOverview ol { 82 87 list-style: none; 83 88 padding: 0; … … 128 133 } 129 134 130 .q uizMaster_sortable, .quizMaster_sortStringItem {135 .qm-sortable, .quizMaster_sortStringItem { 131 136 padding: 5px; 132 137 border: 1px solid lightGrey; -
quizmaster/trunk/fields/exports/acf-export-2017-05-07.json
r1671450 r1717342 349 349 "free_answer": "Free Choice", 350 350 "sort_answer": "Sorting", 351 " cloze_answer": "Fill in the Blank"351 "fill_blank": "Fill in the Blank" 352 352 }, 353 353 "default_value": "", … … 646 646 "key": "field_588a8e01fbde9", 647 647 "label": "Fill in the Blank Answer", 648 "name": "qmqe_ cloze_answers",648 "name": "qmqe_fill_blanks", 649 649 "type": "textarea", 650 650 "instructions": "Enclose the searched words with { } e.g. \"I {play} soccer\". Capital and small letters will be ignored.\r\nYou can specify multiple options for a search word. Enclose the word with [ ] e.g. \"I {[play][love][hate]} soccer\" . In this case answers play, love OR hate are correct.\r\nIf mode \"Different points for every answer\" is activated, you can assign points with |POINTS. Otherwise 1 point will be awarded for every answer.\r\ne.g. \"I {play} soccer, with a {ball|3}\" - \"play\" gives 1 point and \"ball\" 3 points.", … … 655 655 "field": "field_5885e9f669c6f", 656 656 "operator": "==", 657 "value": " cloze_answer"657 "value": "fill_blank" 658 658 } 659 659 ] -
quizmaster/trunk/fields/fieldgroups/question.php
r1671450 r1717342 28 28 'free_answer' => 'Free Choice', 29 29 'sort_answer' => 'Sorting', 30 ' cloze_answer' => 'Fill in the Blank',30 'fill_blank' => 'Fill in the Blank', 31 31 ), 32 32 'default_value' => '', … … 261 261 array ( 262 262 'sub_fields' => array ( 263 array( 264 'key' => 'field_590eafc31392k', 265 'label' => 'Answer ID', 266 'name' => 'qmqe_sorting_choice_answer_id', 267 'type' => 'text', 268 ), 263 269 array ( 264 270 'tabs' => 'all', … … 342 348 'key' => 'field_588a8e01fbde9', 343 349 'label' => 'Fill in the Blank Answer', 344 'name' => 'qmqe_ cloze_answers',350 'name' => 'qmqe_fill_blanks', 345 351 'type' => 'textarea', 346 352 'instructions' => 'Enclose the searched words with { } e.g. "I {play} soccer". Capital and small letters will be ignored. … … 354 360 'field' => 'field_5885e9f669c6f', 355 361 'operator' => '==', 356 'value' => ' cloze_answer',362 'value' => 'fill_blank', 357 363 ), 358 364 ), -
quizmaster/trunk/fields/fieldgroups/quiz.php
r1671450 r1717342 16 16 'choices' => array ( 17 17 0 => 'Standard Flow', 18 1 => 'Standard Flow with Back Button', 19 2 => 'Check & Continue', 20 3 => 'Questions Stacked', 18 1 => 'Check & Continue', 19 2 => 'Questions Stacked', 21 20 ), 22 21 'return_format' => 'value', … … 471 470 'type' => 'true_false', 472 471 'instructions' => 'Show skip button to allow quiz takers to skip the question.', 472 ), 473 array ( 474 'default_value' => 0, 475 'key' => 'field_588c5e56c59p7', 476 'label' => 'Show Back Button', 477 'name' => 'qmqu_show_back_button', 478 'type' => 'true_false', 479 'instructions' => 'Show back button to allow quiz takers to review previous questions.', 473 480 ), 474 481 array ( -
quizmaster/trunk/js/quizMaster_admin.js
r1671450 r1717342 262 262 // formListener.displayMatrixSortAnswer(); 263 263 // break; 264 // case ' cloze_answer':264 // case 'fill_blank': 265 265 // formListener.displayClozeAnswer(); 266 266 // break; … … 352 352 // 353 353 // displayClozeAnswer: function() { 354 // $('. cloze_answer').show();354 // $('.fill_blank').show(); 355 355 // }, 356 356 // … … 525 525 // return false; 526 526 // } 527 // } else if(type.val() == ' cloze_answer') {527 // } else if(type.val() == 'fill_blank') { 528 528 // var clozeText = ''; 529 529 // … … 1020 1020 }); 1021 1021 1022 $('input[name="showMaxQuestion"]').change(function () {1023 if (this.checked) {1024 // $('input[name="statisticsOn"]').removeAttr('checked').attr('disabled', 'disabled').change();1025 $('#quizMaster_showMaxBox').show();1026 } else {1027 // $('input[name="statisticsOn"]').removeAttr('disabled');1028 $('#quizMaster_showMaxBox').hide();1029 }1030 });1031 1032 1022 $('#btnPrerequisiteAdd').click(function () { 1033 1023 $('select[name="quizList"] option:selected').removeAttr('selected').appendTo('select[name="prerequisiteList[]"]'); … … 1074 1064 $('input[name="quizRunOnce"]').change(); 1075 1065 $('input[name="quizRunOnceType"]:checked').change(); 1076 $('input[name="showMaxQuestion"]').change();1077 1066 1078 1067 $('#form_add').click(function () { … … 2256 2245 }, 2257 2246 2258 cloze_answer: function () {2247 fill_blank: function () { 2259 2248 if (global.isEmpty(global.getMceContent('cloze'))) { 2260 2249 alert(quizMasterLocalize.no_answer_msg); -
quizmaster/trunk/js/quizMaster_admin.min.js
r1671450 r1717342 1 jQuery(document).ready(function(e){function t(){var t=this;t={displayChecked:function(e,t,i,a){var n=i?!e.checked:e.checked;a?n?t.attr("disabled","disabled"):t.removeAttr("disabled"):n?t.show():t.hide()},isEmpty:function(t){return t=e.trim(t),!t||0===t.length},isNumber:function(i){return i=e.trim(i),!t.isEmpty(i)&&!isNaN(i)},getMceContent:function(t){var i=tinymce.editors[t];return void 0==i||i.isHidden()?e("#"+t).val():i.getContent()},ajaxPost:function(t,i,a){var n={action:"quizmaster_admin_ajax",func:t,data:i};e.post(ajaxurl,n,a,"json")}};var a=function(){e(".quizMaster_tab_wrapper a").click(function(){var t=e(this),i=t.data("tab"),a=t.siblings(".button-primary").removeClass("button-primary").addClass("button-secondary");return t.removeClass("button-secondary").addClass("button-primary"),e(a.data("tab")).hide("fast"),e(i).show("fast"),e(document).trigger({type:"changeTab",tabId:i}),!1})},n={gobalSettings:function(){var i={categoryDelete:function(i,a){var n={categoryId:i};t.ajaxPost("categoryDelete",n,function(t){t.err||(e('select[name="category'+a+'"] option[value="'+i+'"]').remove(),e('select[name="category'+a+'"]').change())})},categoryEdit:function(i,a,n){var o={categoryId:i,categoryName:e.trim(a)};return t.isEmpty(a)?void alert(quizMasterLocalize.category_no_name):void t.ajaxPost("categoryEdit",o,function(t){t.err||(e('select[name="category'+n+'"] option[value="'+i+'"]').text(o.categoryName),e('select[name="category'+n+'"]').change())})},changeTimeFormat:function(t,i){"0"!=i.val()&&e('input[name="'+t+'"]').val(i.val())},templateDelete:function(i,a){var n={templateId:i,type:a};t.ajaxPost("templateDelete",n,function(t){t.err||(a?(e('select[name="templateQuestion"] option[value="'+i+'"]').remove(),e('select[name="templateQuestion"]').change()):(e('select[name="templateQuiz"] option[value="'+i+'"]').remove(),e('select[name="templateQuiz"]').change()))})},templateEdit:function(i,a,n){if(t.isEmpty(a))return void alert(quizMasterLocalize.category_no_name);var o={templateId:i,name:e.trim(a),type:n};t.ajaxPost("templateEdit",o,function(t){t.err||(n?(e('select[name="templateQuestion"] option[value="'+i+'"]').text(o.name),e('select[name="templateQuestion"]').change()):(e('select[name="templateQuiz"] option[value="'+i+'"]').text(o.name),e('select[name="templateQuiz"]').change()))})}},a=function(){e('select[name="category"]').change(function(){e('input[name="categoryEditText"]').val(e(this).find(":selected").text())}).change(),e('input[name="categoryDelete"]').click(function(){var t=e('select[name="category"] option:selected').val();i.categoryDelete(t,"")}),e('input[name="categoryEdit"]').click(function(){var t=e('select[name="category"] option:selected').val(),a=e('input[name="categoryEditText"]').val();i.categoryEdit(t,a,"")}),e('select[name="categoryQuiz"]').change(function(){e('input[name="categoryQuizEditText"]').val(e(this).find(":selected").text())}).change(),e('input[name="categoryQuizDelete"]').click(function(){var t=e('select[name="categoryQuiz"] option:selected').val();i.categoryDelete(t,"Quiz")}),e('input[name="categoryQuizEdit"]').click(function(){var t=e('select[name="categoryQuiz"] option:selected').val(),a=e('input[name="categoryQuizEditText"]').val();i.categoryEdit(t,a,"Quiz")}),e("#statistic_time_format_select").change(function(){i.changeTimeFormat("statisticTimeFormat",e(this))}),e(document).bind("changeTab",function(t){switch(e("#problemInfo").hide("fast"),t.tabId){case"#problemContent":e("#problemInfo").show("fast");break;case"#emailSettingsTab":}}),e('input[name="email[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("adminEmailEditor","tmce"):switchEditors.go("adminEmailEditor","html"))}).change(),e('input[name="userEmail[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("userEmailEditor","tmce"):switchEditors.go("userEmailEditor","html"))}).change(),e('select[name="templateQuiz"]').change(function(){e('input[name="templateQuizEditText"]').val(e(this).find(":selected").text())}).change(),e('select[name="templateQuestion"]').change(function(){e('input[name="templateQuestionEditText"]').val(e(this).find(":selected").text())}).change(),e('input[name="templateQuizDelete"]').click(function(){var t=e('select[name="templateQuiz"] option:selected').val();i.templateDelete(t,0)}),e('input[name="templateQuestionDelete"]').click(function(){var t=e('select[name="templateQuestion"] option:selected').val();i.templateDelete(t,1)}),e('input[name="templateQuizEdit"]').click(function(){var t=e('select[name="templateQuiz"] option:selected').val(),a=e('input[name="templateQuizEditText"]').val();i.templateEdit(t,a,0)}),e('input[name="templateQuestionEdit"]').click(function(){var t=e('select[name="templateQuestion"] option:selected').val(),a=e('input[name="templateQuestionEditText"]').val();i.templateEdit(t,a,1)})};a()},questionEdit:function(){var i=this,a=e.noop(),n={answerChildren:e(".answer_felder > div"),pointsModus:e('input[name="answerPointsActivated"]'),gPoints:e('input[name="points"]')};i={generateArrayIndex:function(){var t=e('input[name="answerType"]:checked').val();t="single"==t||"multiple"==t?"classic_answer":t,e(".answerList").each(function(){var i=e(this).parent().attr("class");e(this).children().each(function(a,n){e(this).find('[name^="answerData"]').each(function(){var e=this.name,n=e.search(/\](\[\w+\])+$/),o=t==i?a:"none";n>0&&(this.name="answerData["+o+e.substring(n,e.length))})})})},globalValidate:function(){if(t.isEmpty(t.getMceContent("question")))return alert(quizMasterLocalize.no_question_msg),!1;if(n.pointsModus.is(":checked")){if("free_answer"==e('input[name="answerType"]:checked').val())return alert(quizMasterLocalize.dif_points),!1}else{var i=n.gPoints.val();if(!t.isNumber(i)||1>i)return alert(quizMasterLocalize.no_nummber_points),!1}return a()===!1?!1:!0},answerRemove:function(){var t=e(this).parent();return t.parent().children().length<2?!1:(t.remove(),!1)},addCategory:function(){var i=e.trim(e('input[name="categoryAdd"]').val());if(!t.isEmpty(i)){var a={categoryName:i};t.ajaxPost("categoryAdd",a,function(t){if(t.err)return void e("#categoryMsgBox").text(t.err).show("fast").delay(2e3).hide("fast");var i=e(document.createElement("option")).val(t.categoryId).text(t.categoryName).attr("selected","selected");e('select[name="category"]').append(i).change()})}},addMediaClick:function(){if("function"!=typeof tb_show)return!1;var t=e(this).closest("li"),i=t.find('input[name="answerData[][html]"]:eq(0)'),a=t.find(".qm-start-box:eq(0)");window.org_send_to_editor=window.send_to_editor;var n=tb_remove;window.send_to_editor=function(t){var n=e("img",t)[0].outerHTML;a.val(a.val()+n),i.attr("checked",!0),tb_remove(),window.send_to_editor=window.org_send_to_editor},window.tb_remove=function(){window.send_to_editor=window.org_send_to_editor,tb_remove=n,tb_remove()},tb_show("","media-upload.php?type=image&TB_iframe=true")}};var o={classic_answer:function(){var i=0,a=0,o=0;return e(".classic_answer .answerList").children().each(function(){var n=e(this);if(!t.isEmpty(n.find('textarea[name="answerData[][answer]"]').val())){i++,n.find('input[name="answerData[][correct]"]:checked').length&&a++;var r=n.find('input[name="answerData[][points]"]').val();t.isNumber(r)&&r>=0&&o++}}),i?a||e('input[name="disableCorrect"]').is(":checked")&&e('input[name="answerPointsDiffModusActivated"]').is(":checked")&&e('input[name="answerPointsActivated"]').is(":checked")&&"single"==e('input[name="answerType"]:checked').val()?o!=i&&n.pointsModus.is(":checked")?(alert(quizMasterLocalize.no_nummber_points_new),!1):!0:(alert(quizMasterLocalize.no_correct_msg),!1):(alert(quizMasterLocalize.no_answer_msg),!1)},free_answer:function(){return t.isEmpty(e('.free_answer textarea[name="answerData[][answer]"]').val())?(alert(quizMasterLocalize.no_answer_msg),!1):!0}, cloze_answer:function(){return t.isEmpty(t.getMceContent("cloze"))?(alert(quizMasterLocalize.no_answer_msg),!1):!0},sort_answer:function(){var i=0,a=0;return e(".sort_answer .answerList").children().each(function(){var n=e(this);if(!t.isEmpty(n.find('textarea[name="answerData[][answer]"]').val())){i++;var o=n.find('input[name="answerData[][points]"]').val();t.isNumber(o)&&o>=0&&a++}}),i?a!=i&&n.pointsModus.is(":checked")?(alert(quizMasterLocalize.no_nummber_points_new),!1):!0:(alert(quizMasterLocalize.no_answer_msg),!1)},matrix_sort_answer:function(){var i=0,a=0,o=!0,r=0;return e(".matrix_sort_answer .answerList").children().each(function(){var n=e(this),c=n.find('input[name="answerData[][points]"]').val();t.isEmpty(n.find('textarea[name="answerData[][answer]"]').val())?t.isEmpty(n.find('textarea[name="answerData[][sort_string]"]').val())||(r++,t.isNumber(c)&&c>=0&&a++):(i++,r++,t.isEmpty(n.find('textarea[name="answerData[][sort_string]"]').val())&&(o=!1),t.isNumber(c)&&c>=0&&a++)}),i?o?a!=r&&n.pointsModus.is(":checked")?(alert(quizMasterLocalize.no_nummber_points_new),!1):!0:(alert(quizMasterLocalize.no_sort_element_criterion),!1):(alert(quizMasterLocalize.no_answer_msg),!1)},assessment_answer:function(){return t.isEmpty(t.getMceContent("assessment"))?(alert(quizMasterLocalize.no_answer_msg),!1):!0}},r=function(){e("#quizMaster_tip").change(function(){t.displayChecked(this,e("#quizMaster_tipBox"))}).change(),e("#quizMaster_correctSameText").change(function(){t.displayChecked(this,e("#quizMaster_incorrectMassageBox"),!0)}).change(),e('input[name="answerType"]').click(function(){n.answerChildren.hide();var t=this.value;if("single"==t?(e("#singleChoiceOptions").show(),e('input[name="disableCorrect"]').change()):(e("#singleChoiceOptions").hide(),e(".classic_answer .quizMaster_classCorrect").parent().parent().show()),"single"==t||"multiple"==t){var i="single"==t?"radio":"checkbox";t="classic_answer",e(".quizMaster_classCorrect").each(function(){e("<input type="+i+" />").attr({name:this.name,value:this.value,checked:this.checked}).addClass("quizMaster_classCorrect quizMaster_checkbox").insertBefore(this)}).remove()}a=void 0!=o[t]?o[t]:e.noop(),e("."+t).show()}),e('input[name="answerType"]:checked').click(),e(".deleteAnswer").click(i.answerRemove),e(".addAnswer").click(function(){var t=e(this).siblings("ul"),a=t.find("li:eq(0)").clone();return a.find(".quizMaster_checkbox").removeAttr("checked"),a.find(".qm-start-box").val(""),a.find(".quizMaster_points").val(1),a.find(".deleteAnswer").click(i.answerRemove),a.find(".addMedia").click(i.addMediaClick),a.appendTo(t),!1}),e(".sort_answer ul, .classic_answer ul, .matrix_sort_answer ul").sortable({handle:".quizMaster_move"}),e("#saveQuestion").click(function(){return i.globalValidate()?(i.generateArrayIndex(),!0):!1}),e(n.pointsModus).change(function(){t.displayChecked(this,e(".quizMaster_answerPoints")),t.displayChecked(this,e("#quizMaster_showPointsBox")),t.displayChecked(this,n.gPoints,!1,!0),t.displayChecked(this,e('input[name="answerPointsDiffModusActivated"]'),!0,!0),this.checked?(e('input[name="answerPointsDiffModusActivated"]').change(),e('input[name="disableCorrect"]').change()):(e(".classic_answer .quizMaster_classCorrect").parent().parent().show(),e('input[name="disableCorrect"]').attr("disabled","disabled"))}).change(),e('select[name="category"]').change(function(){var t=e(this),i=e("#categoryAddBox").hide();"-1"==t.val()&&i.show()}).change(),e("#categoryAddBtn").click(function(){i.addCategory()}),e(".addMedia").click(i.addMediaClick),e('input[name="answerPointsDiffModusActivated"]').change(function(){t.displayChecked(this,e('input[name="disableCorrect"]'),!0,!0),this.checked?e('input[name="disableCorrect"]').change():e(".classic_answer .quizMaster_classCorrect").parent().parent().show()}).change(),e('input[name="disableCorrect"]').change(function(){t.displayChecked(this,e(".classic_answer .quizMaster_classCorrect").parent().parent(),!0)}).change(),e("#clickPointDia").click(function(){return e(".pointDia").toggle("fast"),!1}),e('input[name="template"]').click(function(a){return"0"==e('select[name="templateSaveList"]').val()&&t.isEmpty(e('input[name="templateName"]').val())?(alert(quizMasterLocalize.temploate_no_name),a.preventDefault(),!1):void i.generateArrayIndex()}),e('select[name="templateSaveList"]').change(function(){var t=e('input[name="templateName"]');"0"==e(this).val()?t.show():t.hide()}).change()},c=function(){n.answerChildren.hide(),r()};c()},statistic:function(){var i=this,a=e("#quizId").val(),n="users",o={currentPage:e("#quizMaster_currentPage"),pageLeft:e("#quizMaster_pageLeft"),pageRight:e("#quizMaster_pageRight"),testSelect:e("#testSelect")};i={loadStatistic:function(e,i){var a={userId:e};t.ajaxPost("statisticLoad",a,function(e){})},loadUsersStatistic:function(){},loadUsersStatistic_:function(n,o){var r={userId:n,quizId:a,testId:o};i.toggleLoadBox(!1),t.ajaxPost("statisticLoad",r,function(t){e.each(t.question,function(){var t=e("#quizMaster_tr_"+this.questionId);i.setStatisticData(t,this)}),e.each(t.category,function(t,a){var n=e("#quizMaster_ctr_"+t);i.setStatisticData(n,a)}),e("#testSelect option:gt(0)").remove();var a=e("#testSelect");e.each(t.tests,function(){var i=e(document.createElement("option"));i.val(this.id),i.text(this.date),t.testId==this.id&&i.attr("selected",!0),a.append(i)}),i.parseFormData(t.formData),e("#userSelect").val(n),e("#testSelect").val(o),i.toggleLoadBox(!0)})},parseFormData:function(t){var i=e("#quizMaster_form_box");return null==t?void i.hide():(e.each(t,function(t,i){e("#form_id_"+t).text(i)}),void i.show())},setStatisticData:function(e,t){e.find(".quizMaster_cCorrect").text(t.correct),e.find(".quizMaster_cIncorrect").text(t.incorrect),e.find(".quizMaster_cTip").text(t.hint),e.find(".quizMaster_cPoints").text(t.points),e.find(".quizMaster_cResult").text(t.result),e.find(".quizMaster_cTime").text(t.questionTime),e.find(".quizMaster_cCreateTime").text(t.date)},toggleLoadBox:function(t){var i=e("#quizMaster_loadData"),a=e("#qm-quiz-content");t?(i.hide(),a.show()):(a.hide(),i.show())},reset:function(n){var r=e("#userSelect").val();if(confirm(quizMasterLocalize.reset_statistics_msg)){var c={quizId:a,userId:r,testId:o.testSelect.val(),type:n};i.toggleLoadBox(!1),t.ajaxPost("statisticReset",c,function(){i.loadUsersStatistic()})}},loadStatisticOverview:function(n){var r={quizId:a,pageLimit:e("#quizMaster_pageLimit").val(),onlyCompleted:Number(e("#quizMaster_onlyCompleted").is(":checked")),page:o.currentPage.val(),nav:Number(n)};i.toggleLoadBox(!1),t.ajaxPost("statisticLoadOverview",r,function(t){var a=e("#quizMaster_statistics_overview_data"),n=a.children(),o=n.first().clone();n.slice(1).remove(),e.each(t.items,function(){var t=o.clone();i.setStatisticData(t,this),t.find("a").text(this.userName).data("userId",this.userId).click(function(){return e("#userSelect").val(e(this).data("userId")),e("#quizMaster_typeUser").click(),!1}),t.show().appendTo(a)}),o.remove(),i.toggleLoadBox(!0),void 0!=t.page&&i.handleNav(t.page)})},handleNav:function(t){for(var a=e("#quizMaster_currentPage").empty(),n=1;t>=n;n++)e(document.createElement("option")).val(n).text(n).appendTo(a);i.checkNavBar()},checkNavBar:function(){var e=o.currentPage.val();1==e?o.pageLeft.hide():o.pageLeft.show(),e==o.currentPage.children().length?o.pageRight.hide():o.pageRight.show()},refresh:function(){"users"==n?i.loadUsersStatistic():"formOverview"==n?i.loadFormsOverview(!0):i.loadStatisticOverview(!0)},loadFormsOverview:function(n){var o={quizId:a,pageLimit:e("#quizMaster_fromPageLimit").val(),onlyUser:e("#quizMaster_formUser").val(),page:e("#quizMaster_formCurrentPage").val(),nav:Number(n)};i.toggleLoadBox(!1),t.ajaxPost("statisticLoadFormOverview",o,function(t){var a=e("#quizMaster_statistics_form_data"),n=a.children(),o=n.first().clone();n.slice(1).remove(),e.each(t.items,function(){var t=o.clone();i.setStatisticData(t,this),t.find("a").text(this.userName).data("userId",this.userId).data("testId",this.testId).click(function(){return i.switchTabOnLoad("users"),i.loadUsersStatistic_(e(this).data("userId"),e(this).data("testId")),!1}),t.show().appendTo(a)}),o.remove(),i.toggleLoadBox(!0),void 0!=t.page&&i.handleFormNav(t.page)})},handleFormNav:function(t){for(var a=e("#quizMaster_formCurrentPage").empty(),n=1;t>=n;n++)e(document.createElement("option")).val(n).text(n).appendTo(a);i.checkFormNavBar()},checkFormNavBar:function(){var t=e("#quizMaster_formCurrentPage").val();1==t?e("#quizMaster_formPageLeft").hide():e("#quizMaster_formPageLeft").show(),t==e("#quizMaster_formCurrentPage").children().length?e("#quizMaster_formPageRight").hide():e("#quizMaster_formPageRight").show()},switchTabOnLoad:function(t){e(".quizMaster_tab").removeClass("button-primary").addClass("button-secondary"),e(".quizMaster_tabContent").hide();var i=e("#quizMaster_typeOverview");"users"==t?(n="users",e("#quizMaster_tabUsers").show(),i=e("#quizMaster_typeUser")):"formOverview"==t?(n="formOverview",e("#quizMaster_tabFormOverview").show(),i=e("#quizMaster_typeForm")):(n="overview",e("#quizMaster_tabOverview").show()),i.removeClass("button-secondary").addClass("button-primary")}};var r=function(){e("#userSelect, #testSelect").change(function(){i.loadUsersStatistic()}),e(".quizMaster_update").click(function(){i.refresh()}),e("#quizMaster_reset").click(function(){i.reset(0)}),e("#quizMaster_resetUser").click(function(){i.reset(1)}),e(".quizMaster_resetComplete").click(function(){i.reset(2)}),e(".quizMaster_tab").click(function(){var t=e(this);return e(".quizMaster_tab").removeClass("button-primary").addClass("button-secondary"),t.removeClass("button-secondary").addClass("button-primary"),e(".quizMaster_tabContent").hide(),"quizMaster_typeUser"==t.attr("id")?(n="users",e("#quizMaster_tabUsers").show(),i.loadUsersStatistic()):"quizMaster_typeForm"==t.attr("id")?(n="formOverview",e("#quizMaster_tabFormOverview").show(),i.loadFormsOverview(!0)):(n="overview",e("#quizMaster_tabOverview").show(),i.loadStatisticOverview(!0)),!1}),e("#quizMaster_onlyCompleted").change(function(){o.currentPage.val(1),i.loadStatisticOverview(!0)}),e("#quizMaster_pageLimit").change(function(){o.currentPage.val(1),i.loadStatisticOverview(!0)}),o.pageLeft.click(function(){o.currentPage.val(Number(o.currentPage.val())-1),i.loadStatisticOverview(!1),i.checkNavBar()}),o.pageRight.click(function(){o.currentPage.val(Number(o.currentPage.val())+1),i.loadStatisticOverview(!1),i.checkNavBar()}),o.currentPage.change(function(){i.loadStatisticOverview(!1),i.checkNavBar()}),e("#quizMaster_formUser, #quizMaster_fromPageLimit").change(function(){e("#quizMaster_formCurrentPage").val(1),i.loadFormsOverview(!0)}),e("#quizMaster_formPageLeft").click(function(){e("#quizMaster_formCurrentPage").val(Number(o.currentPage.val())-1),i.loadFormsOverview(!1),i.checkFormNavBar()}),e("#quizMaster_formPageRight").click(function(){e("#quizMaster_formCurrentPage").val(Number(o.currentPage.val())+1),i.loadFormsOverview(!1),i.checkFormNavBar()}),e("#quizMaster_formCurrentPage").change(function(){i.loadFormsOverview(!1),i.checkFormNavBar()}),i.loadUsersStatistic()};r()},statisticNew:function(){var a=e("#quizId").val(),n=null,o=null,r={data:{quizId:a,users:-1,pageLimit:100,dateFrom:0,dateTo:0,generateNav:0},changeFilter:function(){var t=function(e){var t=e.datepicker("getDate");return null===t?0:t.getTime()/1e3};return e.extend(this.data,{users:e("#quizMaster_historyUser").val(),pageLimit:e("#quizMaster_historyPageLimit").val(),dateFrom:t(e("#datepickerFrom")),dateTo:t(e("#datepickerTo")),generateNav:1}),this.data}},c={data:{pageLimit:100,onlyCompleted:0,generateNav:0,quizId:a},changeFilter:function(){e.extend(this.data,{pageLimit:e("#quizMaster_overviewPageLimit").val(),onlyCompleted:Number(e("#quizMaster_overviewOnlyCompleted").is(":checked")),generateNav:1})}},s={deleteUserStatistic:function(i,n){if(!confirm(quizMasterLocalize.reset_statistics_msg))return!1;var o={refId:i,userId:n,quizId:a,type:0};t.ajaxPost("statisticResetNew",o,function(){e("#quizMaster_user_overlay").hide(),r.changeFilter(),u.loadHistoryAjax(),c.changeFilter(),u.loadOverviewAjax()})},deleteAll:function(){if(!confirm(quizMasterLocalize.reset_statistics_msg))return!1;var e={quizId:a,type:1};t.ajaxPost("statisticResetNew",e,function(){r.changeFilter(),u.loadHistoryAjax(),c.changeFilter(),u.loadOverviewAjax()})}},u={loadHistoryAjax:function(){var i=e.extend({page:r.data.generateNav?1:n.getCurrentPage()},r.data);u.loadBox(!0);var a=e("#quizMaster_historyLoadContext").hide();t.ajaxPost("statisticLoadHistory",i,function(t){a.html(t.html).show(),t.navi&&n.setNumPage(t.navi),r.data.generateNav=0,a.find(".user_statistic").click(function(){return u.loadUserAjax(0,e(this).data("ref_id"),!1),!1}),a.find(".quizMaster_delete").click(function(){return s.deleteUserStatistic(e(this).parents("tr").find(".user_statistic").data("ref_id"),0),!1}),u.loadBox(!1)})},loadUserAjax:function(i,n,o){e("#quizMaster_user_overlay, #quizMaster_loadUserData").show();var r=e("#quizMaster_user_content").hide(),c={quizId:a,userId:i,refId:n,avg:Number(o)};t.ajaxPost("statisticLoadUser",c,function(t){r.html(t.html),r.find(".quizMaster_update").click(function(){return u.loadUserAjax(i,n,o),!1}),r.find("#quizMaster_resetUserStatistic").click(function(){s.deleteUserStatistic(n,i)}),r.find(".statistic_data").click(function(){return e(this).parents("tr").next().toggle("fast"),!1}),e("#quizMaster_loadUserData").hide(),r.show()})},loadBox:function(t,i){t?e("#quizMaster_loadDataHistory").show():e("#quizMaster_loadDataHistory").hide()},loadOverviewAjax:function(){var i=e.extend({page:c.data.generateNav?1:o.getCurrentPage()},c.data);e("#quizMaster_loadDataOverview").show();var a=e("#quizMaster_overviewLoadContext").hide();t.ajaxPost("statisticLoadOverviewNew",i,function(t){a.html(t.html).show(),t.navi&&o.setNumPage(t.navi),c.data.generateNav=0,a.find(".user_statistic").click(function(){return u.loadUserAjax(e(this).data("user_id"),0,!0),!1}),a.find(".quizMaster_delete").click(function(){return s.deleteUserStatistic(0,e(this).parents("tr").find(".user_statistic").data("user_id")),!1}),e("#quizMaster_loadDataOverview").hide()})}},l=function(){n=new i(e("#historyNavigation"),{onChange:function(){u.loadHistoryAjax()}}),o=new i(e("#overviewNavigation"),{onChange:function(){u.loadOverviewAjax()}}),e("#datepickerFrom").datepicker({closeText:quizMasterLocalize.closeText,currentText:quizMasterLocalize.currentText,monthNames:quizMasterLocalize.monthNames,monthNamesShort:quizMasterLocalize.monthNamesShort,dayNames:quizMasterLocalize.dayNames,dayNamesShort:quizMasterLocalize.dayNamesShort,dayNamesMin:quizMasterLocalize.dayNamesMin,dateFormat:quizMasterLocalize.dateFormat,firstDay:quizMasterLocalize.firstDay,changeMonth:!0,onClose:function(t){e("#datepickerTo").datepicker("option","minDate",t)}}),e("#datepickerTo").datepicker({closeText:quizMasterLocalize.closeText,currentText:quizMasterLocalize.currentText,monthNames:quizMasterLocalize.monthNames,monthNamesShort:quizMasterLocalize.monthNamesShort,dayNames:quizMasterLocalize.dayNames,dayNamesShort:quizMasterLocalize.dayNamesShort,dayNamesMin:quizMasterLocalize.dayNamesMin,dateFormat:quizMasterLocalize.dateFormat,firstDay:quizMasterLocalize.firstDay,changeMonth:!0,onClose:function(t){e("#datepickerFrom").datepicker("option","maxDate",t)}}),e("#filter").click(function(){r.changeFilter(),u.loadHistoryAjax()}),e("#quizMaster_overlay_close").click(function(){e("#quizMaster_user_overlay").hide()}),e("#quizMaster_tabHistory .quizMaster_update").click(function(){return r.changeFilter(),u.loadHistoryAjax(),!1}),e("#quizMaster_tabOverview .quizMaster_update").click(function(){return c.changeFilter(),u.loadOverviewAjax(),!1}),e(".quizMaster_resetComplete").click(function(){return s.deleteAll(),!1}),e("#overviewFilter").click(function(){c.changeFilter(),u.loadOverviewAjax()}),r.changeFilter(),u.loadHistoryAjax(),c.changeFilter(),u.loadOverviewAjax()};l()}},o=function(){a();var t=e.noop;e(".quizMaster_questionEdit").length?t=n.questionEdit:e(".quizMaster_globalSettings").length?t=n.gobalSettings:e(".quizMaster_statistics").length?t=n.statistic:e(".quizMaster_statisticsNew").length&&(t=n.statisticNew),t(),e(".quizMaster_demoImgBox a").mouseover(function(t){var i=e(this),a=e(document).width(),n=i.siblings().outerWidth(!0);if(t.pageX+n>a){var o=a-(t.pageX+n+30);e(this).next().css("left",o+"px")}e(this).next().show()}).mouseout(function(){e(this).next().hide()}).click(function(){return!1})};o()}function i(t,i){var a={onChange:null},n={contain:null,pageLeft:null,pageRight:null,currentPage:null},o=function(){var e=n.currentPage.children().length,t=Number(n.currentPage.val());n.pageLeft.hide(),n.pageRight.hide(),t>1&&n.pageLeft.show(),e>=t+1&&n.pageRight.show()},r=function(){e.extend(n,{contain:t,pageLeft:t.find(".navigationLeft"),pageRight:t.find(".navigationRight"),currentPage:t.find(".navigationCurrentPage")}),e.extend(a,i),n.pageLeft.click(function(){n.currentPage.val(Number(n.currentPage.val())-1),o(),a.onChange&&a.onChange(n.currentPage.val())}),n.pageRight.click(function(){n.currentPage.val(Number(n.currentPage.val())+1),o(),a.onChange&&a.onChange(n.currentPage.val())}),n.currentPage.change(function(){o(),a.onChange&&a.onChange(n.currentPage.val())})};this.getCurrentPage=function(){return n.currentPage.val()},this.setNumPage=function(t){n.currentPage.empty();for(var i=1;t>=i;i++)e(document.createElement("option")).val(i).text(i).appendTo(n.currentPage);o()},r()}e.fn.quizMaster_preview=function(){var t={openPreview:function(t){window.open(e(t).attr("href"),"quizMasterPreview","width=900,height=900")}},i=function(){e(".quizMaster_prview").click(function(e){t.openPreview(this),e.preventDefault()})};i()},e.fn.quizMaster_quizOverall=function(){},e.fn.quizMaster_quizEdit=function(){function t(t,i,a){var n={action:"quizmaster_admin_ajax",func:t,data:i};e.post(ajaxurl,n,a,"json")}var i={addCategory:function(){var i=e.trim(e('input[name="categoryAdd"]').val());if(!a(i)){var n={categoryName:i,type:"quiz"};t("categoryAdd",n,function(t){if(t.err)return void e("#categoryMsgBox").text(t.err).show("fast").delay(2e3).hide("fast");var i=e(document.createElement("option")).val(t.categoryId).text(t.categoryName).attr("selected","selected");e('select[name="category"]').append(i).change()})}},addResult:function(){e("#resultList").children().each(function(){if("none"==e(this).css("display")){var t=e(this),i=t.find('textarea[name="resultTextGrade[text][]"]'),a=i.attr("id"),n=!0;return t.find('input[name="resultTextGrade[prozent][]"]').val("0"),t.find('input[name="resultTextGrade[activ][]"]').val("1").keyup(),void 0==tinymce.editors[a]||tinymce.editors[a].isHidden()||(n=!1),void 0==switchEditors||n||(switchEditors.go(a,"toggle"),switchEditors.go(a,"toggle")),void 0!=tinymce.editors[a]?tinymce.editors[a].setContent(""):i.val(""),void 0==tinymce.editors[a]||n||tinyMCE.execCommand("mceRemoveControl",!1,a),t.parent().children(":visible").last().after(t),void 0==tinymce.editors[a]||n||tinyMCE.execCommand("mceAddControl",!1,a),e(this).show(),void 0==switchEditors||n||switchEditors.go(a,"toggle"),!1}})},deleteResult:function(t){e(t).parent().parent().hide(),e(t).siblings('input[name="resultTextGrade[activ][]"]').val("0")},changeResult:function(t){var a=e(t);return i.validResultInput(a.val())?(a.siblings(".resultProzent").text(a.val()),a.removeAttr("style"),!0):(a.css("background-color","#FF9696"),!1)},validResultInput:function(e){return a(e)?!1:(e=e.replace(/\,/,"."),!isNaN(e)&&Number(e)<=100&&Number(e)>=0?null!=e.match(/\./)?e.split(".")[1].length<3:!0:!1)},validInput:function(){if(a(e("#quizMaster_title").val()))return alert(quizMasterLocalize.no_title_msg),!1;var t="";if(t=void 0==tinymce.editors.text||tinymce.editors.text.isHidden()?e('textarea[name="text"]').val():tinymce.editors.text.getContent(),a(t))return alert(quizMasterLocalize.no_quiz_start_msg),!1;if(e("#quizMaster_resultGradeEnabled:checked").length){var n=!0;if(e("#resultList").children().each(function(){return e(this).is(":visible")&&!i.validResultInput(e(this).find('input[name="resultTextGrade[prozent][]"]').val())?(n=!1,!1):void 0}),!n)return alert(quizMasterLocalize.fail_grade_result),!1}return!0},resetLock:function(){t("resetLock",{quizId:e('input[name="ajax_quiz_id"]').val()},function(){e("#resetLockMsg").show("fast").delay(2e3).hide("fast")})},generateFormIds:function(){var t=0;e("#form_table tbody > tr").each(function(){e(this).find('[name^="form[]"]').each(function(){var i=e(this).attr("name").substr(6);e(this).attr("name","form["+t+"]"+i)}),++t})},updateFormIds:function(){var t=-1,i=e(".emailFormVariables option:selected").val(),n=e(".formVariables").empty(),o=e(".emailFormVariables").empty().append('<option value="-1"></option>');e(".emailFormVariables").data("default")>-1&&(i=e(".emailFormVariables").data("default"),e(".emailFormVariables").data("default",-1)),e("#form_table tbody > tr").each(function(){e(this).children().first().text(t);var i=e(this).find(".formFieldName").val(),r=e(this).find('[name="form[][type]"] option:selected'),c=e(this).find('[name="form[][fieldname]"]').val();1!=e(this).find('input[name="form[][form_delete]"]').val()&&(t>=0&&!a(i)&&n.append(e("<li><span>$form{"+t+"}</span> - "+i+"</li>")),4==r.val()&&o.append(e('<option value="'+t+'">'+c+"</option>")),t++)}),e('.emailFormVariables option[value="'+i+'"]').prop("selected",!0)}},a=function(t){return t=e.trim(t),!t||0===t.length},n=function(){e("#statistics_on").change(function(){this.checked?e("#statistics_ip_lock_tr").show():e("#statistics_ip_lock_tr").hide()}),e(".addResult").click(function(){i.addResult()}),e(".deleteResult").click(function(e){i.deleteResult(this)}),e('input[name="resultTextGrade[prozent][]"]').keyup(function(e){i.changeResult(this)}).keydown(function(e){13==e.which&&e.preventDefault()}),e("#quizMaster_resultGradeEnabled").change(function(){this.checked?(e("#resultGrade").show(),e("#resultNormal").hide()):(e("#resultGrade").hide(),e("#resultNormal").show())}),e("#quizMaster_save").click(function(t){i.validInput()?i.generateFormIds():t.preventDefault(),e('select[name="prerequisiteList[]"] option').attr("selected","selected")}),e('input[name="template"]').click(function(t){return"0"==e('select[name="templateSaveList"]').val()&&a(e('input[name="templateName"]').val())?(alert(quizMasterLocalize.temploate_no_name),t.preventDefault(),!1):(i.generateFormIds(),void e('select[name="prerequisiteList[]"] option').attr("selected","selected"))}),e('select[name="templateSaveList"]').change(function(){var t=e('input[name="templateName"]');"0"==e(this).val()?t.show():t.hide()}).change(),e('input[name="quizRunOnce"]').change(function(t){this.checked?(e("#quizMaster_quiz_run_once_type").show(),e('input[name="quizRunOnceType"]:checked').change()):e("#quizMaster_quiz_run_once_type").hide()}),e('input[name="quizRunOnceType"]').change(function(t){!this.checked||"1"!=this.value&&"3"!=this.value?e("#quizMaster_quiz_run_once_cookie").hide():e("#quizMaster_quiz_run_once_cookie").show()}),e('input[name="resetQuizLock"]').click(function(e){return i.resetLock(),!1}),e(".quizMaster_demoBox a").mouseover(function(t){var i=e(this),a=e("#poststuff").width(),n=i.siblings().outerWidth(!0);if(t.pageX+n>a){var o=jQuery(document).width()-i.parent().offset().left-n-30;e(this).next().css("left",o+"px")}e(this).next().show()}).mouseout(function(){e(this).next().hide()}).click(function(){return!1}),e('input[name="showMaxQuestion"]').change(function(){this.checked?e("#quizMaster_showMaxBox").show():e("#quizMaster_showMaxBox").hide()}),e("#btnPrerequisiteAdd").click(function(){e('select[name="quizList"] option:selected').removeAttr("selected").appendTo('select[name="prerequisiteList[]"]')}),e("#btnPrerequisiteDelete").click(function(){e('select[name="prerequisiteList[]"] option:selected').removeAttr("selected").appendTo('select[name="quizList"]')}),e('input[name="prerequisite"]').change(function(){this.checked?e("#prerequisiteBox").show():e("#prerequisiteBox").hide()}).change(),e('input[name="toplistDataAddMultiple"]').change(function(){this.checked?e("#toplistDataAddBlockBox").show():e("#toplistDataAddBlockBox").hide()}).change(),e('input[name="toplistActivated"]').change(function(){this.checked?e("#toplistBox > tr:gt(0)").show():e("#toplistBox > tr:gt(0)").hide();1 jQuery(document).ready(function(e){function t(){var t=this;t={displayChecked:function(e,t,i,a){var n=i?!e.checked:e.checked;a?n?t.attr("disabled","disabled"):t.removeAttr("disabled"):n?t.show():t.hide()},isEmpty:function(t){return t=e.trim(t),!t||0===t.length},isNumber:function(i){return i=e.trim(i),!t.isEmpty(i)&&!isNaN(i)},getMceContent:function(t){var i=tinymce.editors[t];return void 0==i||i.isHidden()?e("#"+t).val():i.getContent()},ajaxPost:function(t,i,a){var n={action:"quizmaster_admin_ajax",func:t,data:i};e.post(ajaxurl,n,a,"json")}};var a=function(){e(".quizMaster_tab_wrapper a").click(function(){var t=e(this),i=t.data("tab"),a=t.siblings(".button-primary").removeClass("button-primary").addClass("button-secondary");return t.removeClass("button-secondary").addClass("button-primary"),e(a.data("tab")).hide("fast"),e(i).show("fast"),e(document).trigger({type:"changeTab",tabId:i}),!1})},n={gobalSettings:function(){var i={categoryDelete:function(i,a){var n={categoryId:i};t.ajaxPost("categoryDelete",n,function(t){t.err||(e('select[name="category'+a+'"] option[value="'+i+'"]').remove(),e('select[name="category'+a+'"]').change())})},categoryEdit:function(i,a,n){var o={categoryId:i,categoryName:e.trim(a)};return t.isEmpty(a)?void alert(quizMasterLocalize.category_no_name):void t.ajaxPost("categoryEdit",o,function(t){t.err||(e('select[name="category'+n+'"] option[value="'+i+'"]').text(o.categoryName),e('select[name="category'+n+'"]').change())})},changeTimeFormat:function(t,i){"0"!=i.val()&&e('input[name="'+t+'"]').val(i.val())},templateDelete:function(i,a){var n={templateId:i,type:a};t.ajaxPost("templateDelete",n,function(t){t.err||(a?(e('select[name="templateQuestion"] option[value="'+i+'"]').remove(),e('select[name="templateQuestion"]').change()):(e('select[name="templateQuiz"] option[value="'+i+'"]').remove(),e('select[name="templateQuiz"]').change()))})},templateEdit:function(i,a,n){if(t.isEmpty(a))return void alert(quizMasterLocalize.category_no_name);var o={templateId:i,name:e.trim(a),type:n};t.ajaxPost("templateEdit",o,function(t){t.err||(n?(e('select[name="templateQuestion"] option[value="'+i+'"]').text(o.name),e('select[name="templateQuestion"]').change()):(e('select[name="templateQuiz"] option[value="'+i+'"]').text(o.name),e('select[name="templateQuiz"]').change()))})}},a=function(){e('select[name="category"]').change(function(){e('input[name="categoryEditText"]').val(e(this).find(":selected").text())}).change(),e('input[name="categoryDelete"]').click(function(){var t=e('select[name="category"] option:selected').val();i.categoryDelete(t,"")}),e('input[name="categoryEdit"]').click(function(){var t=e('select[name="category"] option:selected').val(),a=e('input[name="categoryEditText"]').val();i.categoryEdit(t,a,"")}),e('select[name="categoryQuiz"]').change(function(){e('input[name="categoryQuizEditText"]').val(e(this).find(":selected").text())}).change(),e('input[name="categoryQuizDelete"]').click(function(){var t=e('select[name="categoryQuiz"] option:selected').val();i.categoryDelete(t,"Quiz")}),e('input[name="categoryQuizEdit"]').click(function(){var t=e('select[name="categoryQuiz"] option:selected').val(),a=e('input[name="categoryQuizEditText"]').val();i.categoryEdit(t,a,"Quiz")}),e("#statistic_time_format_select").change(function(){i.changeTimeFormat("statisticTimeFormat",e(this))}),e(document).bind("changeTab",function(t){switch(e("#problemInfo").hide("fast"),t.tabId){case"#problemContent":e("#problemInfo").show("fast");break;case"#emailSettingsTab":}}),e('input[name="email[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("adminEmailEditor","tmce"):switchEditors.go("adminEmailEditor","html"))}).change(),e('input[name="userEmail[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("userEmailEditor","tmce"):switchEditors.go("userEmailEditor","html"))}).change(),e('select[name="templateQuiz"]').change(function(){e('input[name="templateQuizEditText"]').val(e(this).find(":selected").text())}).change(),e('select[name="templateQuestion"]').change(function(){e('input[name="templateQuestionEditText"]').val(e(this).find(":selected").text())}).change(),e('input[name="templateQuizDelete"]').click(function(){var t=e('select[name="templateQuiz"] option:selected').val();i.templateDelete(t,0)}),e('input[name="templateQuestionDelete"]').click(function(){var t=e('select[name="templateQuestion"] option:selected').val();i.templateDelete(t,1)}),e('input[name="templateQuizEdit"]').click(function(){var t=e('select[name="templateQuiz"] option:selected').val(),a=e('input[name="templateQuizEditText"]').val();i.templateEdit(t,a,0)}),e('input[name="templateQuestionEdit"]').click(function(){var t=e('select[name="templateQuestion"] option:selected').val(),a=e('input[name="templateQuestionEditText"]').val();i.templateEdit(t,a,1)})};a()},questionEdit:function(){var i=this,a=e.noop(),n={answerChildren:e(".answer_felder > div"),pointsModus:e('input[name="answerPointsActivated"]'),gPoints:e('input[name="points"]')};i={generateArrayIndex:function(){var t=e('input[name="answerType"]:checked').val();t="single"==t||"multiple"==t?"classic_answer":t,e(".answerList").each(function(){var i=e(this).parent().attr("class");e(this).children().each(function(a,n){e(this).find('[name^="answerData"]').each(function(){var e=this.name,n=e.search(/\](\[\w+\])+$/),o=t==i?a:"none";n>0&&(this.name="answerData["+o+e.substring(n,e.length))})})})},globalValidate:function(){if(t.isEmpty(t.getMceContent("question")))return alert(quizMasterLocalize.no_question_msg),!1;if(n.pointsModus.is(":checked")){if("free_answer"==e('input[name="answerType"]:checked').val())return alert(quizMasterLocalize.dif_points),!1}else{var i=n.gPoints.val();if(!t.isNumber(i)||1>i)return alert(quizMasterLocalize.no_nummber_points),!1}return a()===!1?!1:!0},answerRemove:function(){var t=e(this).parent();return t.parent().children().length<2?!1:(t.remove(),!1)},addCategory:function(){var i=e.trim(e('input[name="categoryAdd"]').val());if(!t.isEmpty(i)){var a={categoryName:i};t.ajaxPost("categoryAdd",a,function(t){if(t.err)return void e("#categoryMsgBox").text(t.err).show("fast").delay(2e3).hide("fast");var i=e(document.createElement("option")).val(t.categoryId).text(t.categoryName).attr("selected","selected");e('select[name="category"]').append(i).change()})}},addMediaClick:function(){if("function"!=typeof tb_show)return!1;var t=e(this).closest("li"),i=t.find('input[name="answerData[][html]"]:eq(0)'),a=t.find(".qm-start-box:eq(0)");window.org_send_to_editor=window.send_to_editor;var n=tb_remove;window.send_to_editor=function(t){var n=e("img",t)[0].outerHTML;a.val(a.val()+n),i.attr("checked",!0),tb_remove(),window.send_to_editor=window.org_send_to_editor},window.tb_remove=function(){window.send_to_editor=window.org_send_to_editor,tb_remove=n,tb_remove()},tb_show("","media-upload.php?type=image&TB_iframe=true")}};var o={classic_answer:function(){var i=0,a=0,o=0;return e(".classic_answer .answerList").children().each(function(){var n=e(this);if(!t.isEmpty(n.find('textarea[name="answerData[][answer]"]').val())){i++,n.find('input[name="answerData[][correct]"]:checked').length&&a++;var r=n.find('input[name="answerData[][points]"]').val();t.isNumber(r)&&r>=0&&o++}}),i?a||e('input[name="disableCorrect"]').is(":checked")&&e('input[name="answerPointsDiffModusActivated"]').is(":checked")&&e('input[name="answerPointsActivated"]').is(":checked")&&"single"==e('input[name="answerType"]:checked').val()?o!=i&&n.pointsModus.is(":checked")?(alert(quizMasterLocalize.no_nummber_points_new),!1):!0:(alert(quizMasterLocalize.no_correct_msg),!1):(alert(quizMasterLocalize.no_answer_msg),!1)},free_answer:function(){return t.isEmpty(e('.free_answer textarea[name="answerData[][answer]"]').val())?(alert(quizMasterLocalize.no_answer_msg),!1):!0},fill_blank:function(){return t.isEmpty(t.getMceContent("cloze"))?(alert(quizMasterLocalize.no_answer_msg),!1):!0},sort_answer:function(){var i=0,a=0;return e(".sort_answer .answerList").children().each(function(){var n=e(this);if(!t.isEmpty(n.find('textarea[name="answerData[][answer]"]').val())){i++;var o=n.find('input[name="answerData[][points]"]').val();t.isNumber(o)&&o>=0&&a++}}),i?a!=i&&n.pointsModus.is(":checked")?(alert(quizMasterLocalize.no_nummber_points_new),!1):!0:(alert(quizMasterLocalize.no_answer_msg),!1)},matrix_sort_answer:function(){var i=0,a=0,o=!0,r=0;return e(".matrix_sort_answer .answerList").children().each(function(){var n=e(this),c=n.find('input[name="answerData[][points]"]').val();t.isEmpty(n.find('textarea[name="answerData[][answer]"]').val())?t.isEmpty(n.find('textarea[name="answerData[][sort_string]"]').val())||(r++,t.isNumber(c)&&c>=0&&a++):(i++,r++,t.isEmpty(n.find('textarea[name="answerData[][sort_string]"]').val())&&(o=!1),t.isNumber(c)&&c>=0&&a++)}),i?o?a!=r&&n.pointsModus.is(":checked")?(alert(quizMasterLocalize.no_nummber_points_new),!1):!0:(alert(quizMasterLocalize.no_sort_element_criterion),!1):(alert(quizMasterLocalize.no_answer_msg),!1)},assessment_answer:function(){return t.isEmpty(t.getMceContent("assessment"))?(alert(quizMasterLocalize.no_answer_msg),!1):!0}},r=function(){e("#quizMaster_tip").change(function(){t.displayChecked(this,e("#quizMaster_tipBox"))}).change(),e("#quizMaster_correctSameText").change(function(){t.displayChecked(this,e("#quizMaster_incorrectMassageBox"),!0)}).change(),e('input[name="answerType"]').click(function(){n.answerChildren.hide();var t=this.value;if("single"==t?(e("#singleChoiceOptions").show(),e('input[name="disableCorrect"]').change()):(e("#singleChoiceOptions").hide(),e(".classic_answer .quizMaster_classCorrect").parent().parent().show()),"single"==t||"multiple"==t){var i="single"==t?"radio":"checkbox";t="classic_answer",e(".quizMaster_classCorrect").each(function(){e("<input type="+i+" />").attr({name:this.name,value:this.value,checked:this.checked}).addClass("quizMaster_classCorrect quizMaster_checkbox").insertBefore(this)}).remove()}a=void 0!=o[t]?o[t]:e.noop(),e("."+t).show()}),e('input[name="answerType"]:checked').click(),e(".deleteAnswer").click(i.answerRemove),e(".addAnswer").click(function(){var t=e(this).siblings("ul"),a=t.find("li:eq(0)").clone();return a.find(".quizMaster_checkbox").removeAttr("checked"),a.find(".qm-start-box").val(""),a.find(".quizMaster_points").val(1),a.find(".deleteAnswer").click(i.answerRemove),a.find(".addMedia").click(i.addMediaClick),a.appendTo(t),!1}),e(".sort_answer ul, .classic_answer ul, .matrix_sort_answer ul").sortable({handle:".quizMaster_move"}),e("#saveQuestion").click(function(){return i.globalValidate()?(i.generateArrayIndex(),!0):!1}),e(n.pointsModus).change(function(){t.displayChecked(this,e(".quizMaster_answerPoints")),t.displayChecked(this,e("#quizMaster_showPointsBox")),t.displayChecked(this,n.gPoints,!1,!0),t.displayChecked(this,e('input[name="answerPointsDiffModusActivated"]'),!0,!0),this.checked?(e('input[name="answerPointsDiffModusActivated"]').change(),e('input[name="disableCorrect"]').change()):(e(".classic_answer .quizMaster_classCorrect").parent().parent().show(),e('input[name="disableCorrect"]').attr("disabled","disabled"))}).change(),e('select[name="category"]').change(function(){var t=e(this),i=e("#categoryAddBox").hide();"-1"==t.val()&&i.show()}).change(),e("#categoryAddBtn").click(function(){i.addCategory()}),e(".addMedia").click(i.addMediaClick),e('input[name="answerPointsDiffModusActivated"]').change(function(){t.displayChecked(this,e('input[name="disableCorrect"]'),!0,!0),this.checked?e('input[name="disableCorrect"]').change():e(".classic_answer .quizMaster_classCorrect").parent().parent().show()}).change(),e('input[name="disableCorrect"]').change(function(){t.displayChecked(this,e(".classic_answer .quizMaster_classCorrect").parent().parent(),!0)}).change(),e("#clickPointDia").click(function(){return e(".pointDia").toggle("fast"),!1}),e('input[name="template"]').click(function(a){return"0"==e('select[name="templateSaveList"]').val()&&t.isEmpty(e('input[name="templateName"]').val())?(alert(quizMasterLocalize.temploate_no_name),a.preventDefault(),!1):void i.generateArrayIndex()}),e('select[name="templateSaveList"]').change(function(){var t=e('input[name="templateName"]');"0"==e(this).val()?t.show():t.hide()}).change()},c=function(){n.answerChildren.hide(),r()};c()},statistic:function(){var i=this,a=e("#quizId").val(),n="users",o={currentPage:e("#quizMaster_currentPage"),pageLeft:e("#quizMaster_pageLeft"),pageRight:e("#quizMaster_pageRight"),testSelect:e("#testSelect")};i={loadStatistic:function(e,i){var a={userId:e};t.ajaxPost("statisticLoad",a,function(e){})},loadUsersStatistic:function(){},loadUsersStatistic_:function(n,o){var r={userId:n,quizId:a,testId:o};i.toggleLoadBox(!1),t.ajaxPost("statisticLoad",r,function(t){e.each(t.question,function(){var t=e("#quizMaster_tr_"+this.questionId);i.setStatisticData(t,this)}),e.each(t.category,function(t,a){var n=e("#quizMaster_ctr_"+t);i.setStatisticData(n,a)}),e("#testSelect option:gt(0)").remove();var a=e("#testSelect");e.each(t.tests,function(){var i=e(document.createElement("option"));i.val(this.id),i.text(this.date),t.testId==this.id&&i.attr("selected",!0),a.append(i)}),i.parseFormData(t.formData),e("#userSelect").val(n),e("#testSelect").val(o),i.toggleLoadBox(!0)})},parseFormData:function(t){var i=e("#quizMaster_form_box");return null==t?void i.hide():(e.each(t,function(t,i){e("#form_id_"+t).text(i)}),void i.show())},setStatisticData:function(e,t){e.find(".quizMaster_cCorrect").text(t.correct),e.find(".quizMaster_cIncorrect").text(t.incorrect),e.find(".quizMaster_cTip").text(t.hint),e.find(".quizMaster_cPoints").text(t.points),e.find(".quizMaster_cResult").text(t.result),e.find(".quizMaster_cTime").text(t.questionTime),e.find(".quizMaster_cCreateTime").text(t.date)},toggleLoadBox:function(t){var i=e("#quizMaster_loadData"),a=e("#qm-quiz-content");t?(i.hide(),a.show()):(a.hide(),i.show())},reset:function(n){var r=e("#userSelect").val();if(confirm(quizMasterLocalize.reset_statistics_msg)){var c={quizId:a,userId:r,testId:o.testSelect.val(),type:n};i.toggleLoadBox(!1),t.ajaxPost("statisticReset",c,function(){i.loadUsersStatistic()})}},loadStatisticOverview:function(n){var r={quizId:a,pageLimit:e("#quizMaster_pageLimit").val(),onlyCompleted:Number(e("#quizMaster_onlyCompleted").is(":checked")),page:o.currentPage.val(),nav:Number(n)};i.toggleLoadBox(!1),t.ajaxPost("statisticLoadOverview",r,function(t){var a=e("#quizMaster_statistics_overview_data"),n=a.children(),o=n.first().clone();n.slice(1).remove(),e.each(t.items,function(){var t=o.clone();i.setStatisticData(t,this),t.find("a").text(this.userName).data("userId",this.userId).click(function(){return e("#userSelect").val(e(this).data("userId")),e("#quizMaster_typeUser").click(),!1}),t.show().appendTo(a)}),o.remove(),i.toggleLoadBox(!0),void 0!=t.page&&i.handleNav(t.page)})},handleNav:function(t){for(var a=e("#quizMaster_currentPage").empty(),n=1;t>=n;n++)e(document.createElement("option")).val(n).text(n).appendTo(a);i.checkNavBar()},checkNavBar:function(){var e=o.currentPage.val();1==e?o.pageLeft.hide():o.pageLeft.show(),e==o.currentPage.children().length?o.pageRight.hide():o.pageRight.show()},refresh:function(){"users"==n?i.loadUsersStatistic():"formOverview"==n?i.loadFormsOverview(!0):i.loadStatisticOverview(!0)},loadFormsOverview:function(n){var o={quizId:a,pageLimit:e("#quizMaster_fromPageLimit").val(),onlyUser:e("#quizMaster_formUser").val(),page:e("#quizMaster_formCurrentPage").val(),nav:Number(n)};i.toggleLoadBox(!1),t.ajaxPost("statisticLoadFormOverview",o,function(t){var a=e("#quizMaster_statistics_form_data"),n=a.children(),o=n.first().clone();n.slice(1).remove(),e.each(t.items,function(){var t=o.clone();i.setStatisticData(t,this),t.find("a").text(this.userName).data("userId",this.userId).data("testId",this.testId).click(function(){return i.switchTabOnLoad("users"),i.loadUsersStatistic_(e(this).data("userId"),e(this).data("testId")),!1}),t.show().appendTo(a)}),o.remove(),i.toggleLoadBox(!0),void 0!=t.page&&i.handleFormNav(t.page)})},handleFormNav:function(t){for(var a=e("#quizMaster_formCurrentPage").empty(),n=1;t>=n;n++)e(document.createElement("option")).val(n).text(n).appendTo(a);i.checkFormNavBar()},checkFormNavBar:function(){var t=e("#quizMaster_formCurrentPage").val();1==t?e("#quizMaster_formPageLeft").hide():e("#quizMaster_formPageLeft").show(),t==e("#quizMaster_formCurrentPage").children().length?e("#quizMaster_formPageRight").hide():e("#quizMaster_formPageRight").show()},switchTabOnLoad:function(t){e(".quizMaster_tab").removeClass("button-primary").addClass("button-secondary"),e(".quizMaster_tabContent").hide();var i=e("#quizMaster_typeOverview");"users"==t?(n="users",e("#quizMaster_tabUsers").show(),i=e("#quizMaster_typeUser")):"formOverview"==t?(n="formOverview",e("#quizMaster_tabFormOverview").show(),i=e("#quizMaster_typeForm")):(n="overview",e("#quizMaster_tabOverview").show()),i.removeClass("button-secondary").addClass("button-primary")}};var r=function(){e("#userSelect, #testSelect").change(function(){i.loadUsersStatistic()}),e(".quizMaster_update").click(function(){i.refresh()}),e("#quizMaster_reset").click(function(){i.reset(0)}),e("#quizMaster_resetUser").click(function(){i.reset(1)}),e(".quizMaster_resetComplete").click(function(){i.reset(2)}),e(".quizMaster_tab").click(function(){var t=e(this);return e(".quizMaster_tab").removeClass("button-primary").addClass("button-secondary"),t.removeClass("button-secondary").addClass("button-primary"),e(".quizMaster_tabContent").hide(),"quizMaster_typeUser"==t.attr("id")?(n="users",e("#quizMaster_tabUsers").show(),i.loadUsersStatistic()):"quizMaster_typeForm"==t.attr("id")?(n="formOverview",e("#quizMaster_tabFormOverview").show(),i.loadFormsOverview(!0)):(n="overview",e("#quizMaster_tabOverview").show(),i.loadStatisticOverview(!0)),!1}),e("#quizMaster_onlyCompleted").change(function(){o.currentPage.val(1),i.loadStatisticOverview(!0)}),e("#quizMaster_pageLimit").change(function(){o.currentPage.val(1),i.loadStatisticOverview(!0)}),o.pageLeft.click(function(){o.currentPage.val(Number(o.currentPage.val())-1),i.loadStatisticOverview(!1),i.checkNavBar()}),o.pageRight.click(function(){o.currentPage.val(Number(o.currentPage.val())+1),i.loadStatisticOverview(!1),i.checkNavBar()}),o.currentPage.change(function(){i.loadStatisticOverview(!1),i.checkNavBar()}),e("#quizMaster_formUser, #quizMaster_fromPageLimit").change(function(){e("#quizMaster_formCurrentPage").val(1),i.loadFormsOverview(!0)}),e("#quizMaster_formPageLeft").click(function(){e("#quizMaster_formCurrentPage").val(Number(o.currentPage.val())-1),i.loadFormsOverview(!1),i.checkFormNavBar()}),e("#quizMaster_formPageRight").click(function(){e("#quizMaster_formCurrentPage").val(Number(o.currentPage.val())+1),i.loadFormsOverview(!1),i.checkFormNavBar()}),e("#quizMaster_formCurrentPage").change(function(){i.loadFormsOverview(!1),i.checkFormNavBar()}),i.loadUsersStatistic()};r()},statisticNew:function(){var a=e("#quizId").val(),n=null,o=null,r={data:{quizId:a,users:-1,pageLimit:100,dateFrom:0,dateTo:0,generateNav:0},changeFilter:function(){var t=function(e){var t=e.datepicker("getDate");return null===t?0:t.getTime()/1e3};return e.extend(this.data,{users:e("#quizMaster_historyUser").val(),pageLimit:e("#quizMaster_historyPageLimit").val(),dateFrom:t(e("#datepickerFrom")),dateTo:t(e("#datepickerTo")),generateNav:1}),this.data}},c={data:{pageLimit:100,onlyCompleted:0,generateNav:0,quizId:a},changeFilter:function(){e.extend(this.data,{pageLimit:e("#quizMaster_overviewPageLimit").val(),onlyCompleted:Number(e("#quizMaster_overviewOnlyCompleted").is(":checked")),generateNav:1})}},s={deleteUserStatistic:function(i,n){if(!confirm(quizMasterLocalize.reset_statistics_msg))return!1;var o={refId:i,userId:n,quizId:a,type:0};t.ajaxPost("statisticResetNew",o,function(){e("#quizMaster_user_overlay").hide(),r.changeFilter(),u.loadHistoryAjax(),c.changeFilter(),u.loadOverviewAjax()})},deleteAll:function(){if(!confirm(quizMasterLocalize.reset_statistics_msg))return!1;var e={quizId:a,type:1};t.ajaxPost("statisticResetNew",e,function(){r.changeFilter(),u.loadHistoryAjax(),c.changeFilter(),u.loadOverviewAjax()})}},u={loadHistoryAjax:function(){var i=e.extend({page:r.data.generateNav?1:n.getCurrentPage()},r.data);u.loadBox(!0);var a=e("#quizMaster_historyLoadContext").hide();t.ajaxPost("statisticLoadHistory",i,function(t){a.html(t.html).show(),t.navi&&n.setNumPage(t.navi),r.data.generateNav=0,a.find(".user_statistic").click(function(){return u.loadUserAjax(0,e(this).data("ref_id"),!1),!1}),a.find(".quizMaster_delete").click(function(){return s.deleteUserStatistic(e(this).parents("tr").find(".user_statistic").data("ref_id"),0),!1}),u.loadBox(!1)})},loadUserAjax:function(i,n,o){e("#quizMaster_user_overlay, #quizMaster_loadUserData").show();var r=e("#quizMaster_user_content").hide(),c={quizId:a,userId:i,refId:n,avg:Number(o)};t.ajaxPost("statisticLoadUser",c,function(t){r.html(t.html),r.find(".quizMaster_update").click(function(){return u.loadUserAjax(i,n,o),!1}),r.find("#quizMaster_resetUserStatistic").click(function(){s.deleteUserStatistic(n,i)}),r.find(".statistic_data").click(function(){return e(this).parents("tr").next().toggle("fast"),!1}),e("#quizMaster_loadUserData").hide(),r.show()})},loadBox:function(t,i){t?e("#quizMaster_loadDataHistory").show():e("#quizMaster_loadDataHistory").hide()},loadOverviewAjax:function(){var i=e.extend({page:c.data.generateNav?1:o.getCurrentPage()},c.data);e("#quizMaster_loadDataOverview").show();var a=e("#quizMaster_overviewLoadContext").hide();t.ajaxPost("statisticLoadOverviewNew",i,function(t){a.html(t.html).show(),t.navi&&o.setNumPage(t.navi),c.data.generateNav=0,a.find(".user_statistic").click(function(){return u.loadUserAjax(e(this).data("user_id"),0,!0),!1}),a.find(".quizMaster_delete").click(function(){return s.deleteUserStatistic(0,e(this).parents("tr").find(".user_statistic").data("user_id")),!1}),e("#quizMaster_loadDataOverview").hide()})}},l=function(){n=new i(e("#historyNavigation"),{onChange:function(){u.loadHistoryAjax()}}),o=new i(e("#overviewNavigation"),{onChange:function(){u.loadOverviewAjax()}}),e("#datepickerFrom").datepicker({closeText:quizMasterLocalize.closeText,currentText:quizMasterLocalize.currentText,monthNames:quizMasterLocalize.monthNames,monthNamesShort:quizMasterLocalize.monthNamesShort,dayNames:quizMasterLocalize.dayNames,dayNamesShort:quizMasterLocalize.dayNamesShort,dayNamesMin:quizMasterLocalize.dayNamesMin,dateFormat:quizMasterLocalize.dateFormat,firstDay:quizMasterLocalize.firstDay,changeMonth:!0,onClose:function(t){e("#datepickerTo").datepicker("option","minDate",t)}}),e("#datepickerTo").datepicker({closeText:quizMasterLocalize.closeText,currentText:quizMasterLocalize.currentText,monthNames:quizMasterLocalize.monthNames,monthNamesShort:quizMasterLocalize.monthNamesShort,dayNames:quizMasterLocalize.dayNames,dayNamesShort:quizMasterLocalize.dayNamesShort,dayNamesMin:quizMasterLocalize.dayNamesMin,dateFormat:quizMasterLocalize.dateFormat,firstDay:quizMasterLocalize.firstDay,changeMonth:!0,onClose:function(t){e("#datepickerFrom").datepicker("option","maxDate",t)}}),e("#filter").click(function(){r.changeFilter(),u.loadHistoryAjax()}),e("#quizMaster_overlay_close").click(function(){e("#quizMaster_user_overlay").hide()}),e("#quizMaster_tabHistory .quizMaster_update").click(function(){return r.changeFilter(),u.loadHistoryAjax(),!1}),e("#quizMaster_tabOverview .quizMaster_update").click(function(){return c.changeFilter(),u.loadOverviewAjax(),!1}),e(".quizMaster_resetComplete").click(function(){return s.deleteAll(),!1}),e("#overviewFilter").click(function(){c.changeFilter(),u.loadOverviewAjax()}),r.changeFilter(),u.loadHistoryAjax(),c.changeFilter(),u.loadOverviewAjax()};l()}},o=function(){a();var t=e.noop;e(".quizMaster_questionEdit").length?t=n.questionEdit:e(".quizMaster_globalSettings").length?t=n.gobalSettings:e(".quizMaster_statistics").length?t=n.statistic:e(".quizMaster_statisticsNew").length&&(t=n.statisticNew),t(),e(".quizMaster_demoImgBox a").mouseover(function(t){var i=e(this),a=e(document).width(),n=i.siblings().outerWidth(!0);if(t.pageX+n>a){var o=a-(t.pageX+n+30);e(this).next().css("left",o+"px")}e(this).next().show()}).mouseout(function(){e(this).next().hide()}).click(function(){return!1})};o()}function i(t,i){var a={onChange:null},n={contain:null,pageLeft:null,pageRight:null,currentPage:null},o=function(){var e=n.currentPage.children().length,t=Number(n.currentPage.val());n.pageLeft.hide(),n.pageRight.hide(),t>1&&n.pageLeft.show(),e>=t+1&&n.pageRight.show()},r=function(){e.extend(n,{contain:t,pageLeft:t.find(".navigationLeft"),pageRight:t.find(".navigationRight"),currentPage:t.find(".navigationCurrentPage")}),e.extend(a,i),n.pageLeft.click(function(){n.currentPage.val(Number(n.currentPage.val())-1),o(),a.onChange&&a.onChange(n.currentPage.val())}),n.pageRight.click(function(){n.currentPage.val(Number(n.currentPage.val())+1),o(),a.onChange&&a.onChange(n.currentPage.val())}),n.currentPage.change(function(){o(),a.onChange&&a.onChange(n.currentPage.val())})};this.getCurrentPage=function(){return n.currentPage.val()},this.setNumPage=function(t){n.currentPage.empty();for(var i=1;t>=i;i++)e(document.createElement("option")).val(i).text(i).appendTo(n.currentPage);o()},r()}e.fn.quizMaster_preview=function(){var t={openPreview:function(t){window.open(e(t).attr("href"),"quizMasterPreview","width=900,height=900")}},i=function(){e(".quizMaster_prview").click(function(e){t.openPreview(this),e.preventDefault()})};i()},e.fn.quizMaster_quizOverall=function(){},e.fn.quizMaster_quizEdit=function(){function t(t,i,a){var n={action:"quizmaster_admin_ajax",func:t,data:i};e.post(ajaxurl,n,a,"json")}var i={addCategory:function(){var i=e.trim(e('input[name="categoryAdd"]').val());if(!a(i)){var n={categoryName:i,type:"quiz"};t("categoryAdd",n,function(t){if(t.err)return void e("#categoryMsgBox").text(t.err).show("fast").delay(2e3).hide("fast");var i=e(document.createElement("option")).val(t.categoryId).text(t.categoryName).attr("selected","selected");e('select[name="category"]').append(i).change()})}},addResult:function(){e("#resultList").children().each(function(){if("none"==e(this).css("display")){var t=e(this),i=t.find('textarea[name="resultTextGrade[text][]"]'),a=i.attr("id"),n=!0;return t.find('input[name="resultTextGrade[prozent][]"]').val("0"),t.find('input[name="resultTextGrade[activ][]"]').val("1").keyup(),void 0==tinymce.editors[a]||tinymce.editors[a].isHidden()||(n=!1),void 0==switchEditors||n||(switchEditors.go(a,"toggle"),switchEditors.go(a,"toggle")),void 0!=tinymce.editors[a]?tinymce.editors[a].setContent(""):i.val(""),void 0==tinymce.editors[a]||n||tinyMCE.execCommand("mceRemoveControl",!1,a),t.parent().children(":visible").last().after(t),void 0==tinymce.editors[a]||n||tinyMCE.execCommand("mceAddControl",!1,a),e(this).show(),void 0==switchEditors||n||switchEditors.go(a,"toggle"),!1}})},deleteResult:function(t){e(t).parent().parent().hide(),e(t).siblings('input[name="resultTextGrade[activ][]"]').val("0")},changeResult:function(t){var a=e(t);return i.validResultInput(a.val())?(a.siblings(".resultProzent").text(a.val()),a.removeAttr("style"),!0):(a.css("background-color","#FF9696"),!1)},validResultInput:function(e){return a(e)?!1:(e=e.replace(/\,/,"."),!isNaN(e)&&Number(e)<=100&&Number(e)>=0?null!=e.match(/\./)?e.split(".")[1].length<3:!0:!1)},validInput:function(){if(a(e("#quizMaster_title").val()))return alert(quizMasterLocalize.no_title_msg),!1;var t="";if(t=void 0==tinymce.editors.text||tinymce.editors.text.isHidden()?e('textarea[name="text"]').val():tinymce.editors.text.getContent(),a(t))return alert(quizMasterLocalize.no_quiz_start_msg),!1;if(e("#quizMaster_resultGradeEnabled:checked").length){var n=!0;if(e("#resultList").children().each(function(){return e(this).is(":visible")&&!i.validResultInput(e(this).find('input[name="resultTextGrade[prozent][]"]').val())?(n=!1,!1):void 0}),!n)return alert(quizMasterLocalize.fail_grade_result),!1}return!0},resetLock:function(){t("resetLock",{quizId:e('input[name="ajax_quiz_id"]').val()},function(){e("#resetLockMsg").show("fast").delay(2e3).hide("fast")})},generateFormIds:function(){var t=0;e("#form_table tbody > tr").each(function(){e(this).find('[name^="form[]"]').each(function(){var i=e(this).attr("name").substr(6);e(this).attr("name","form["+t+"]"+i)}),++t})},updateFormIds:function(){var t=-1,i=e(".emailFormVariables option:selected").val(),n=e(".formVariables").empty(),o=e(".emailFormVariables").empty().append('<option value="-1"></option>');e(".emailFormVariables").data("default")>-1&&(i=e(".emailFormVariables").data("default"),e(".emailFormVariables").data("default",-1)),e("#form_table tbody > tr").each(function(){e(this).children().first().text(t);var i=e(this).find(".formFieldName").val(),r=e(this).find('[name="form[][type]"] option:selected'),c=e(this).find('[name="form[][fieldname]"]').val();1!=e(this).find('input[name="form[][form_delete]"]').val()&&(t>=0&&!a(i)&&n.append(e("<li><span>$form{"+t+"}</span> - "+i+"</li>")),4==r.val()&&o.append(e('<option value="'+t+'">'+c+"</option>")),t++)}),e('.emailFormVariables option[value="'+i+'"]').prop("selected",!0)}},a=function(t){return t=e.trim(t),!t||0===t.length},n=function(){e("#statistics_on").change(function(){this.checked?e("#statistics_ip_lock_tr").show():e("#statistics_ip_lock_tr").hide()}),e(".addResult").click(function(){i.addResult()}),e(".deleteResult").click(function(e){i.deleteResult(this)}),e('input[name="resultTextGrade[prozent][]"]').keyup(function(e){i.changeResult(this)}).keydown(function(e){13==e.which&&e.preventDefault()}),e("#quizMaster_resultGradeEnabled").change(function(){this.checked?(e("#resultGrade").show(),e("#resultNormal").hide()):(e("#resultGrade").hide(),e("#resultNormal").show())}),e("#quizMaster_save").click(function(t){i.validInput()?i.generateFormIds():t.preventDefault(),e('select[name="prerequisiteList[]"] option').attr("selected","selected")}),e('input[name="template"]').click(function(t){return"0"==e('select[name="templateSaveList"]').val()&&a(e('input[name="templateName"]').val())?(alert(quizMasterLocalize.temploate_no_name),t.preventDefault(),!1):(i.generateFormIds(),void e('select[name="prerequisiteList[]"] option').attr("selected","selected"))}),e('select[name="templateSaveList"]').change(function(){var t=e('input[name="templateName"]');"0"==e(this).val()?t.show():t.hide()}).change(),e('input[name="quizRunOnce"]').change(function(t){this.checked?(e("#quizMaster_quiz_run_once_type").show(),e('input[name="quizRunOnceType"]:checked').change()):e("#quizMaster_quiz_run_once_type").hide()}),e('input[name="quizRunOnceType"]').change(function(t){!this.checked||"1"!=this.value&&"3"!=this.value?e("#quizMaster_quiz_run_once_cookie").hide():e("#quizMaster_quiz_run_once_cookie").show()}),e('input[name="resetQuizLock"]').click(function(e){return i.resetLock(),!1}),e(".quizMaster_demoBox a").mouseover(function(t){var i=e(this),a=e("#poststuff").width(),n=i.siblings().outerWidth(!0);if(t.pageX+n>a){var o=jQuery(document).width()-i.parent().offset().left-n-30;e(this).next().css("left",o+"px")}e(this).next().show()}).mouseout(function(){e(this).next().hide()}).click(function(){return!1}),e('input[name="showMaxQuestion"]').change(function(){this.checked?e("#quizMaster_showMaxBox").show():e("#quizMaster_showMaxBox").hide()}),e("#btnPrerequisiteAdd").click(function(){e('select[name="quizList"] option:selected').removeAttr("selected").appendTo('select[name="prerequisiteList[]"]')}),e("#btnPrerequisiteDelete").click(function(){e('select[name="prerequisiteList[]"] option:selected').removeAttr("selected").appendTo('select[name="quizList"]')}),e('input[name="prerequisite"]').change(function(){this.checked?e("#prerequisiteBox").show():e("#prerequisiteBox").hide()}).change(),e('input[name="toplistDataAddMultiple"]').change(function(){this.checked?e("#toplistDataAddBlockBox").show():e("#toplistDataAddBlockBox").hide()}).change(),e('input[name="toplistActivated"]').change(function(){this.checked?e("#toplistBox > tr:gt(0)").show():e("#toplistBox > tr:gt(0)").hide(); 2 2 }).change(),e('input[name="showReviewQuestion"]').change(function(){this.checked?e(".quizMaster_reviewQuestionOptions").show():e(".quizMaster_reviewQuestionOptions").hide()}).change(),e("#statistics_on").change(),e("#quizMaster_resultGradeEnabled").change(),e('input[name="quizRunOnce"]').change(),e('input[name="quizRunOnceType"]:checked').change(),e('input[name="showMaxQuestion"]').change(),e("#form_add").click(function(){e("#form_table tbody > tr:eq(0)").clone(!0).appendTo("#form_table tbody").show(),i.updateFormIds()}),e('input[name="form_delete"]').click(function(){var t=e(this).parents("tr");"0"!=t.find('input[name="form[][form_id]"]').val()?(t.find('input[name="form[][form_delete]"]').val(1),t.hide()):t.remove(),i.updateFormIds()}),e("#form_table tbody").sortable({handle:".form_move",update:i.updateFormIds}),e(".form_move").click(function(){return!1}),e('select[name="form[][type]"]').change(function(){switch(Number(e(this).val())){case 7:case 8:e(this).siblings(".editDropDown").show();break;default:e(this).siblings(".editDropDown, .dropDownEditBox").hide()}}).change(),e(".editDropDown").click(function(){return e(".dropDownEditBox").not(e(this).siblings(".dropDownEditBox").toggle()).hide(),!1}),e(".dropDownEditBox input").click(function(){e(this).parent().hide()}),e('.formFieldName, select[name="form[][type]"]').change(function(){i.updateFormIds()}),e('select[name="category"]').change(function(){var t=e(this),i=e("#categoryAddBox").hide();"-1"==t.val()&&i.show()}).change(),e("#categoryAddBtn").click(function(){i.addCategory()}),e('input[name="emailNotification"]').change(function(){var t=e("#adminEmailSettings tr:gt(0)");e('input[name="emailNotification"]:checked').val()>0?t.show():t.hide()}).change(),e('input[name="userEmailNotification"]').change(function(){var t=e("#userEmailSettings tr:gt(0)");e('input[name="userEmailNotification"]:checked').val()>0?t.show():t.hide()}).change(),i.updateFormIds(),e('input[name="email[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("adminEmailEditor","tmce"):switchEditors.go("adminEmailEditor","html"))}),e('input[name="adminEmail[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("adminEmailEditor","tmce"):switchEditors.go("adminEmailEditor","html"))}),e('input[name="userEmail[html]"]').change(function(){return void 0==switchEditors?!1:void(this.checked?switchEditors.go("userEmailEditor","tmce"):switchEditors.go("userEmailEditor","html"))}),setTimeout(function(){e('input[name="userEmail[html]"]').change(),e('input[name="email[html]"]').change()},1e3)};n()},e.fn.quizMaster_statistics=function(){var t="quizMaster_typeAnonymeUser",i=!0,a={loadStatistics:function(t){var i=window.location.pathname+window.location.search,n=i.replace("admin.php","admin-ajax.php")+"&action=load_statistics",o={action:"quizmaster_load_statistics",userId:t};e("#quizMaster_loadData").show(),e("#quizMaster_statistics_content, #quizMaster_statistics_overview").hide(),e.post(n,o,a.setStatistics,"json")},setStatistics:function(i){var a=e(".quizMaster_statistics_table"),n=a.find("tbody");if("quizMaster_typeOverview"!=t){var o=function(e,t,i){e.find(".quizMaster_cCorrect").text(t.cCorrect+" ("+t.pCorrect+"%)"),e.find(".quizMaster_cIncorrect").text(t.cIncorrect+" ("+t.pIncorrect+"%)"),e.find(".quizMaster_cTip").text(t.cTip),e.find(".quizMaster_cPoints").text(t.cPoints),1==i&&a.find(".quizMaster_cResult").text(t.result+"%")};o(a,i.clear,!1),e.each(i.items,function(e,t){o(n.find("#quizMaster_tr_"+t.id),t,!1)}),o(a.find("tfoot"),i.global,!0),e("#quizMaster_loadData").hide(),e("#quizMaster_statistics_content, .quizMaster_statistics_table").show()}},loadOverview:function(){e(".quizMaster_statistics_table, #quizMaster_statistics_content, #quizMaster_statistics_overview").hide(),e("#quizMaster_loadData").show();var n=window.location.pathname+window.location.search,o=n.replace("admin.php","admin-ajax.php")+"&action=load_statistics",r={action:"quizmaster_load_statistics",overview:!0,pageLimit:e("#quizMaster_pageLimit").val(),onlyCompleted:Number(e("#quizMaster_onlyCompleted").is(":checked")),page:e("#quizMaster_currentPage").val(),generatePageNav:Number(i)};e.post(o,r,function(n){if(e("#quizMaster_statistics_overview_data").empty(),"quizMaster_typeOverview"==t){var o=e('<tr><th><a href="#">---</a></th><th class="quizMaster_points">---</th><th class="quizMaster_cCorrect" style="color: green;">---</th><th class="quizMaster_cIncorrect" style="color: red;">---</th><th class="quizMaster_cTip">---</th><th class="quizMaster_cResult" style="font-weight: bold;">---</th></tr>');e.each(n.items,function(t,i){var a=o.clone();a.find("a").text(i.userName).data("userId",i.userId).click(function(){return e("#userSelect").val(e(this).data("userId")),e("#quizMaster_typeRegisteredUser").click(),!1}),i.completed?(a.find(".quizMaster_points").text(i.cPoints),a.find(".quizMaster_cCorrect").text(i.cCorrect+" ("+i.pCorrect+"%)"),a.find(".quizMaster_cIncorrect").text(i.cIncorrect+" ("+i.pIncorrect+"%)"),a.find(".quizMaster_cTip").text(i.cTip),a.find(".quizMaster_cResult").text(i.result+"%")):a.find("th").removeAttr("style"),e("#quizMaster_statistics_overview_data").append(a)}),void 0!=n.page&&(a.setPageNav(n.page),i=!1),e("#quizMaster_loadData").hide(),e("#quizMaster_statistics_overview").show()}},"json")},loadFormOverview:function(){e("#quizMaster_tabFormOverview").show()},changeTab:function(i){t=i,"quizMaster_typeRegisteredUser"==i?a.loadStatistics(e("#userSelect").val()):"quizMaster_typeAnonymeUser"==i?a.loadStatistics(0):"quizMaster_typeForm"==i?a.loadFormOverview():a.loadOverview()},resetStatistic:function(i){var n="quizMaster_typeRegisteredUser"==t?e("#userSelect").val():0,o=window.location.pathname+window.location.search,r=o.replace("admin.php","admin-ajax.php")+"&action=reset",c={action:"quizmaster_statistics",userId:n,complete:i};e.post(r,c,function(e){a.changeTab(t)})},setPageNav:function(t){t=Math.ceil(t/e("#quizMaster_pageLimit").val()),e("#quizMaster_currentPage").empty();for(var i=1;t>=i;i++)e(document.createElement("option")).val(i).text(i).appendTo(e("#quizMaster_currentPage"));e("#quizMaster_pageLeft, #quizMaster_pageRight").hide(),e("#quizMaster_currentPage option").length>1&&e("#quizMaster_pageRight").show()}},n=function(){e(".quizMaster_tab").click(function(t){var i=e(this);return i.hasClass("button-primary")?!1:("quizMaster_typeRegisteredUser"==i.attr("id")?e("#quizMaster_userBox").show():e("#quizMaster_userBox").hide(),e(".quizMaster_tab").removeClass("button-primary").addClass("button-secondary"),i.removeClass("button-secondary").addClass("button-primary"),a.changeTab(i.attr("id")),!1)}),e("#userSelect").change(function(){a.changeTab("quizMaster_typeRegisteredUser")}),e(".quizMaster_update").click(function(){return a.changeTab(t),!1}),e("#quizMaster_reset").click(function(){var e=confirm(quizMasterLocalize.reset_statistics_msg);return e&&a.resetStatistic(!1),!1}),e(".quizMaster_resetComplete").click(function(){var e=confirm(quizMasterLocalize.reset_statistics_msg);return e&&a.resetStatistic(!0),!1}),e("#quizMaster_pageLimit, #quizMaster_onlyCompleted").change(function(){return e("#quizMaster_currentPage").val(0),i=!0,a.changeTab(t),!1}),e("#quizMaster_currentPage").change(function(){e("#quizMaster_pageLeft, #quizMaster_pageRight").hide(),1==e("#quizMaster_currentPage option").length||(e("#quizMaster_currentPage option:first-child:selected").length?e("#quizMaster_pageRight").show():e("#quizMaster_currentPage option:last-child:selected").length?e("#quizMaster_pageLeft").show():e("#quizMaster_pageLeft, #quizMaster_pageRight").show()),a.changeTab(t)}),e("#quizMaster_pageRight").click(function(){return e("#quizMaster_currentPage option:selected").next().attr("selected","selected"),e("#quizMaster_currentPage").change(),!1}),e("#quizMaster_pageLeft").click(function(){return e("#quizMaster_currentPage option:selected").prev().attr("selected","selected"),e("#quizMaster_currentPage").change(),!1}),a.changeTab("quizMaster_typeAnonymeUser")};n()},e.fn.quizMaster_toplist=function(){function t(t,i,a){var n={action:"quizmaster_admin_ajax",func:t,data:i};e.post(ajaxurl,n,a,"json")}var i={sort:e("#quizMaster_sorting"),pageLimit:e("#quizMaster_pageLimit"),currentPage:e("#quizMaster_currentPage"),loadDataBox:e("#quizMaster_loadData"),pageLeft:e("#quizMaster_pageLeft"),pageRight:e("#quizMaster_pageRight"),dataBody:e("#quizMaster_toplistTable tbody"),rowClone:e("#quizMaster_toplistTable tbody tr:eq(0)").clone(),content:e("#qm-quiz-content")},a={loadData:function(a){var n=this,o={sort:i.sort.val(),limit:i.pageLimit.val(),page:i.currentPage.val(),quizId:e('input[name="ajax_quiz_id"]').val()};void 0!=a&&e.extend(o,a),i.loadDataBox.show(),i.content.hide(),t("adminToplist",o,function(e){n.handleDataRequest(e.data),void 0!=e.nav&&n.handleNav(e.nav),i.loadDataBox.hide(),i.content.show()})},handleNav:function(t){i.currentPage.empty();for(var a=1;a<=t.pages;a++)e(document.createElement("option")).val(a).text(a).appendTo(i.currentPage);this.checkNav()},handleDataRequest:function(t){var a=this;i.dataBody.empty(),e.each(t,function(e,t){var a=i.rowClone.clone().children();a.eq(0).children().val(t.id),a.eq(1).find("strong").text(t.name),a.eq(1).find(".inline_editUsername").val(t.name),a.eq(2).find(".quizMaster_email").text(t.email),a.eq(2).find("input").val(t.email),a.eq(3).text(t.type),a.eq(4).text(t.date),a.eq(5).text(t.points),a.eq(6).text(t.result),a.parent().show().appendTo(i.dataBody)}),t.length||e(document.createElement("td")).attr("colspan","7").text(quizMasterLocalize.no_data_available).css({"font-weight":"bold","text-align":"center",padding:"5px"}).appendTo(document.createElement("tr")).appendTo(i.dataBody),e(".quizMaster_delete").click(function(){if(confirm(quizMasterLocalize.confirm_delete_entry)){var t=new Array(e(this).closest("tr").find('input[name="checkedData[]"]').val());a.loadData({a:"delete",toplistIds:t})}return!1}),e(".quizMaster_edit").click(function(){var t=e(this).closest("tr");return t.find(".row-actions").hide(),t.find(".inline-edit").show(),t.find(".quizMaster_username, .quizMaster_email").hide(),t.find(".inline_editUsername, .inline_editEmail").show(),!1}),e(".inline_editSave").click(function(){var t=e(this).closest("tr"),i=t.find(".inline_editUsername").val(),n=t.find(".inline_editEmail").val();return a.isEmpty(i)||a.isEmpty(n)?(alert(quizMasterLocalize.not_all_fields_completed),!1):(a.loadData({a:"edit",toplistId:t.find('input[name="checkedData[]"]').val(),name:i,email:n}),!1)}),e(".inline_editCancel").click(function(){var t=e(this).closest("tr");return t.find(".row-actions").show(),t.find(".inline-edit").hide(),t.find(".quizMaster_username, .quizMaster_email").show(),t.find(".inline_editUsername, .inline_editEmail").hide(),t.find(".inline_editUsername").val(t.find(".quizMaster_username").text()),t.find(".inline_editEmail").val(t.find(".quizMaster_email").text()),!1})},checkNav:function(){var e=i.currentPage.val();1==e?i.pageLeft.hide():i.pageLeft.show(),e==i.currentPage.children().length?i.pageRight.hide():i.pageRight.show()},isEmpty:function(t){return t=e.trim(t),!t||0===t.length}},n=function(){i.sort.change(function(){a.loadData()}),i.pageLimit.change(function(){a.loadData({nav:1})}),i.currentPage.change(function(){a.checkNav(),a.loadData()}),i.pageLeft.click(function(){i.currentPage.val(Number(i.currentPage.val())-1),a.checkNav(),a.loadData()}),i.pageRight.click(function(){i.currentPage.val(Number(i.currentPage.val())+1),a.checkNav(),a.loadData()}),e("#quizMaster_deleteAll").click(function(){a.loadData({a:"deleteAll"})}),e("#quizMaster_action").click(function(){var t=e("#quizMaster_actionName").val();if("0"!=t){var i=e('input[name="checkedData[]"]:checked').map(function(){return e(this).val()}).get();a.loadData({a:t,toplistIds:i})}}),e("#quizMaster_checkedAll").change(function(){this.checked?e('input[name="checkedData[]"]').attr("checked","checked"):e('input[name="checkedData[]"]').removeAttr("checked","checked")}),a.loadData({nav:1})};n()},e(".quizMaster_quizOverall").length&&e(".quizMaster_quizOverall").quizMaster_preview(),e(".quizMaster_quizOverall").length&&e(".quizMaster_quizOverall").quizMaster_quizOverall(),e(".quizMaster_quizEdit").length&&e(".quizMaster_quizEdit").quizMaster_quizEdit(),e(".quizMaster_toplist").length&&e(".quizMaster_toplist").quizMaster_toplist(),t()}); -
quizmaster/trunk/js/quizmaster.js
r1712912 r1717342 1 1 jQuery(document).ready(function( $ ) { 2 2 3 // datatables 4 $('.quizmaster-info-table').DataTable({ 5 searching: false, 6 paging: false, 7 bInfo: false, 8 ordering: false, 9 }); 10 11 $('#quizmaster_score_table').DataTable({ 12 searching: false 13 }); 3 // QuizMaster jQuery plugin 4 $.fn.quizmaster = function( options = false ) { 5 6 var quizmaster = this; 7 8 quizmaster.config = {}, 9 quizmaster.status = {}; 10 11 quizmaster.data = { 12 results: new Object(), 13 catResults: new Object(), 14 currentQuestion: false, 15 currentQuestionId: 0, 16 quizSolved: [], 17 lastButtonValue: "", 18 inViewQuestions: false, 19 currentPage: 1, 20 isQuizStarted: false, 21 }; 22 23 quizmaster.elements = { 24 checkButtonClass: '.qm-button-check', 25 nextButtonClass: '.qm-button-next', 26 finishButtonClass: '.qm-button-finish', 27 skipButtonClass: '.qm-skip-button', 28 singlePageLeft: 'input[name="quizMaster_pageLeft"]', 29 singlePageRight: 'input[name="quizMaster_pageRight"]', 30 startButton: quizmaster.find('.qm-start-button'), 31 backButtonClass: '.qm-back-button', 32 backButton: quizmaster.find('.qm-back-button'), 33 nextButton: quizmaster.find('.qm-button-next'), 34 finishButton: quizmaster.find('.qm-button-finish'), 35 skipButton: quizmaster.find('.qm-skip-button'), 36 checkButton: quizmaster.find('.qm-button-check'), 37 restartButtonClass: '.qm-restart-quiz-button', 38 restartButton: quizmaster.find('.qm-restart-quiz-button'), 39 questionReviewButton: quizmaster.find('.qm-question-review-button'), 40 quiz: quizmaster.find('.quizMaster_quiz'), 41 questionListClass: '.qm-question-list', 42 questionList: quizmaster.find('.quizMaster_list'), 43 resultsBox: quizmaster.find('.qm-results-box'), 44 reviewBox: quizmaster.find('.qm-review-box'), 45 questionCheck: quizmaster.find('.qm-check-answer-box'), 46 startPage: quizmaster.find('.qm-quiz-start-box'), 47 timeLimitBox: quizmaster.find('.qm-time-limit'), 48 hintTrigger: quizmaster.find('.qm-hint-trigger'), 49 listItems: $() 50 }; 51 52 quizmaster.startPageShow = function() { 53 54 quizmaster.elements.startPage.show(); 55 56 // hide hint button 57 quizmaster.hint.buttonHide(); 58 59 // hide next button 60 quizmaster.elements.nextButton.hide(); 61 62 // hide next button 63 quizmaster.elements.finishButton.hide(); 64 65 }; 66 67 quizmaster.startPageHide = function() { 68 quizmaster.elements.startPage.hide(); 69 }; 70 71 /* 72 * Moves quiz to next question 73 */ 74 quizmaster.nextQuestion = function () { 75 76 if( !quizmaster.data.currentQuestion.next().length ) { 77 return; // no next question (end of quiz) 78 } 79 80 quizmaster.showQuestionObject( quizmaster.data.currentQuestion.next() ); 81 82 // question show event 83 quizmaster.trigger({ 84 type: 'quizmaster.nextQuestion', 85 nextQuestion: quizmaster.data.currentQuestion.next(), 86 currentQuestion: quizmaster.data.currentQuestion, 87 }); 88 89 }; 90 91 quizmaster.prevQuestion = function () { 92 quizmaster.showQuestionObject( quizmaster.data.currentQuestion.prev() ); 93 94 quizmaster.fireChangeScreenEvent('question') 95 }; 96 97 quizmaster.getCurrentQuestion = function () { 98 return quizmaster.data.currentQuestion; 99 } 100 101 quizmaster.isLastQuestion = function( $questionId = 0 ) { 102 if( quizmaster.questionCount() == quizmaster.data.currentQuestion.index() +1 ) { 103 return true; 104 } 105 106 return false; 107 } 108 109 quizmaster.isFirstQuestion = function( $questionId ) { 110 if( 0 == quizmaster.data.currentQuestion.index() ) { 111 return true; 112 } 113 114 return false; 115 } 116 117 quizmaster.getCurrentQuestionId = function () { 118 return quizmaster.data.currentQuestionId; 119 } 120 121 quizmaster.showQuestionObject = function ( obj ) { 122 123 if( obj == 'current' ) { 124 obj = quizmaster.data.currentQuestion; 125 } 126 127 // hide current question, show new and set storage of current question 128 quizmaster.data.currentQuestion.hide(); 129 obj.show(); 130 quizmaster.setCurrentQuestion( obj ); 131 132 // scroll to quiz area 133 quizmaster.scrollTo( quizmaster.elements.quiz ); 134 135 // question show event 136 quizmaster.trigger({ 137 type: 'quizmaster.questionShow', 138 question: quizmaster.data.currentQuestion, 139 questionIndex: quizmaster.data.currentQuestion.index() 140 }); 141 142 // last question load event 143 if( quizmaster.questionCount() == quizmaster.data.currentQuestion.index() +1 ) { 144 145 quizmaster.trigger({ 146 type: 'quizmaster.lastQuestionLoaded', 147 question: quizmaster.data.currentQuestion, 148 questionIndex: quizmaster.data.currentQuestion.index() 149 }); 150 151 } 152 153 quizmaster.timer.question.start( quizmaster.getCurrentQuestionId() ); 154 155 }; 156 157 quizmaster.fireChangeScreenEvent = function( $screen ) { 158 159 // change event 160 quizmaster.trigger({ 161 type: 'quizmaster.changeScreen', 162 screen: $screen 163 }); 164 165 } 166 167 quizmaster.checkButtonInit = function() { 168 169 quizmaster.elements.checkButton.click( function () { 170 171 if (quizmaster.config.options.forcingQuestionSolve && !quizmaster.data.quizSolved[ quizmaster.data.currentQuestion.index() ] 172 && (quizmaster.config.options.quizSummeryHide || !quizmaster.config.options.reviewQustion)) { 173 174 return false; 175 } 176 177 quizmaster.fireQuestionAnsweredEvent() 178 179 }); 180 181 }; 182 183 quizmaster.userAnswerData = { 184 185 singleMulti: function( $questionId, $questionElement ) { 186 187 var userAnswerData = { 188 answerIndexes: [] 189 }; 190 191 var input = $questionElement.find('.quizMaster_questionInput') 192 193 $questionElement.find('.qm-question-list-item').each(function (i) { 194 195 var $item = $(this); 196 var index = $item.data('pos'); 197 var checked = input.eq(i).is(':checked'); 198 199 if( checked ) { 200 userAnswerData.answerIndexes.push( index ) 201 } 202 203 }); 204 205 return userAnswerData; 206 207 }, 208 209 free: function( $questionId, $questionElement ) { 210 211 return $questionElement.find('.quizMaster_questionInput').val(); 212 213 }, 214 215 fillBlank: function( $questionId, $questionElement ) { 216 217 var answers = []; 218 219 $questionElement.find('.quizMaster_cloze input').each(function (i, v) { 220 answers.push( $(this).val() ); 221 }); 222 223 return answers; 224 225 }, 226 227 sorting: function( $questionId, $questionElement ) { 228 229 var answerOrder = $questionElement.find('.qm-sortable').sortable('toArray'); 230 return answerOrder; 231 232 }, 233 234 }; 235 236 237 quizmaster.checker = function ( $questionId, $questionElement ) { 238 239 var questionData = quizmaster.config.json[ quizmaster.getCurrentQuestionId() ]; 240 241 switch( questionData.type ) { 242 243 case 'single': 244 case 'multiple': 245 var userAnswerData = quizmaster.userAnswerData.singleMulti( $questionId, $questionElement ) 246 break; 247 248 case 'free_answer': 249 var userAnswerData = quizmaster.userAnswerData.free( $questionId, $questionElement ) 250 break; 251 252 case 'fill_blank': 253 var userAnswerData = quizmaster.userAnswerData.fillBlank( $questionId, $questionElement ) 254 break; 255 256 case 'sort_answer': 257 var userAnswerData = quizmaster.userAnswerData.sorting( $questionId, $questionElement ) 258 break; 259 260 } 261 262 quizmaster.ajax({ 263 action: 'quizmaster_admin_ajax', 264 func: 'checkAnswer', 265 data: { 266 267 answerType: questionData.type, 268 quizId: quizmaster.config.quizId, 269 userAnswerData: userAnswerData, 270 questionId: $questionId, 271 272 273 } 274 }, function (json) { 275 276 // organize result from checking answer 277 quizmaster.data.results[ $questionId ].points = json.points; 278 quizmaster.data.results[ $questionId ].correct = json.correct; 279 quizmaster.data.results['comp'].points += json.points; 280 281 if( json.correct ) { 282 quizmaster.data.results['comp'].correctQuestions += 1; 283 } 284 285 quizmaster.data.catResults[ questionData.catId ] += json.points; 286 quizmaster.getCurrentQuestion().data('check', true); 287 288 // answerCheckComplete event 289 quizmaster.trigger({ 290 type: 'quizmaster.answerCheckComplete', 291 values: { 292 question: quizmaster.data.currentQuestion, 293 isCorrect: json.correct 294 } 295 }); 296 297 }); 298 299 }; 300 301 quizmaster.marker = function (e, correct) { 302 303 if ( !quizmaster.config.options.disabledAnswerMark ) { 304 if (correct) { 305 e.addClass('quizMaster_answerCorrect'); 306 } else { 307 e.addClass('quizMaster_answerIncorrect'); 308 } 309 } 310 311 }; 312 313 quizmaster.checkQuestion = function( list, endCheck ) { 314 315 quizmaster.setStatus('checkQuestion') 316 317 // stop timer 318 quizmaster.timer.question.stop(); 319 320 // answer already checked 321 if ( quizmaster.getCurrentQuestion().data('check') ) { 322 return true; 323 } 324 325 // run checker to check answer 326 quizmaster.checker( quizmaster.getCurrentQuestionId(), quizmaster.getCurrentQuestion() ); 327 328 // end check trigger 329 quizmaster.trigger({ 330 type: 'quizmaster.questionChecked', 331 values: { 332 item: quizmaster.data.currentQuestion, 333 index: quizmaster.data.currentQuestion.index(), 334 solved: true, 335 fake: true 336 } 337 }); 338 339 }; 340 341 quizmaster.questionSolved = function (e) { 342 343 quizmaster.data.quizSolved[ e.values.index ] = e.values.solved; 344 var data = quizmaster.config.json[ quizmaster.getCurrentQuestionId() ]; 345 346 quizmaster.data.results[data.id].solved = Number(e.values.fake ? quizmaster.data.results[data.id].solved : e.values.solved); 347 348 // record as answered, solved/skipped 349 if( e.values.fake ) { 350 quizmaster.data.results.comp.answered++ 351 if( quizmaster.data.results[data.id].solved ) { 352 quizmaster.data.results.comp.solved++ 353 } else { 354 quizmaster.data.results.comp.skipped++ 355 } 356 } 357 }; 358 359 quizmaster.ajax = function (data, success, dataType) { 360 dataType = dataType || 'json'; 361 362 if (quizmaster.config.options.cors) { 363 jQuery.support.cors = true; 364 } 365 366 $.post(QuizMasterGlobal.ajaxurl, data, success, dataType); 367 368 if (quizmaster.config.options.cors) { 369 jQuery.support.cors = false; 370 } 371 }; 372 373 quizmaster.startButtonInit = function() { 374 375 quizmaster.elements.startButton.click( function () { 376 quizmaster.startQuiz(); 377 }); 378 379 }; 380 381 /* 382 * Initialize Next Button 383 */ 384 quizmaster.nextButtonInit = function() { 385 386 quizmaster.elements.nextButton.click(function () { 387 388 if ( quizmaster.config.options.forcingQuestionSolve && !quizmaster.data.quizSolved[ quizmaster.getCurrentQuestion().index() ] 389 && ( quizmaster.config.options.quizSummeryHide || !quizmaster.config.options.reviewQustion )) { 390 return false; 391 } 392 393 // question answered event 394 // don't fire for mode 1 (check/continue) because it's fired from check button click 395 if( quizmaster.config.mode != 1 ) { 396 quizmaster.fireQuestionAnsweredEvent() 397 } 398 399 quizmaster.nextQuestion(); 400 401 }); 402 403 }; 404 405 /* 406 * Initialize Finish Button 407 */ 408 quizmaster.finishButtonInit = function() { 409 410 quizmaster.elements.finishButton.click(function () { 411 412 quizmaster.finishQuiz(); 413 414 }); 415 416 }; 417 418 quizmaster.fireQuestionAnsweredEvent = function() { 419 420 // question answered event 421 quizmaster.trigger({ 422 type: 'quizmaster.questionAnswered', 423 question: quizmaster.data.currentQuestion, 424 }); 425 426 }; 427 428 quizmaster.backButtonInit = function() { 429 430 quizmaster.elements.backButton.click( function () { 431 quizmaster.prevQuestion(); 432 }); 433 434 } 435 436 quizmaster.startQuiz = function() { 437 438 quizmaster.startPageHide(); 439 440 var $listItem = quizmaster.elements.questionList.children(); 441 quizmaster.elements.listItems = $('.quizMaster_list > li'); 442 443 // start time limit 444 quizmaster.timer.limit.start(); 445 446 quizmaster.data.quizSolved = []; 447 quizmaster.data.results = { 448 comp: { 449 points: 0, 450 correctQuestions: 0, 451 quizTime: 0, 452 answered: 0, 453 skipped: 0, 454 solved: 0, 455 } 456 }; 457 458 $('.qm-question-list').each(function () { 459 460 var questionId = $(this).data('question_id'); 461 462 quizmaster.data.results[ questionId ] = { 463 time: 0, 464 solved: 0 465 }; 466 467 }); 468 469 quizmaster.data.catResults = {}; 470 $.each( quizmaster.config.options.catPoints, function (i, v) { 471 quizmaster.data.catResults[i] = 0; 472 }); 473 474 quizmaster.elements.quiz.show(); 475 476 // maybe show reviewBox 477 if( quizmaster.config.options.isShowReviewQuestion ) { 478 quizmaster.elements.reviewBox.show(); 479 } 480 481 // maybe show skip button 482 if ( quizmaster.config.options.isShowSkipButton || quizmaster.config.options.isShowReviewQuestion ) { 483 quizmaster.elements.skipButton.show(); 484 } 485 486 // maybe show back button 487 if ( quizmaster.config.options.isShowBackButton ) { 488 quizmaster.elements.backButton.show(); 489 } 490 491 // start timer 492 quizmaster.timer.quiz.start(); 493 494 // quiz start event 495 quizmaster.trigger({ 496 type: 'quizmaster.startQuiz', 497 mode: quizmaster.config.mode, 498 }); 499 500 }; 501 502 quizmaster.showSinglePage = function (page) { 503 $listItem = quizmaster.elements.questionList.children().hide(); 504 505 if (!quizmaster.config.qpp) { 506 $listItem.show(); 507 508 return; 509 } 510 511 page = page ? +page : 1; 512 var maxPage = Math.ceil(quizmaster.find('.quizMaster_list > li').length / quizmaster.config.qpp); 513 514 if (page > maxPage) 515 return; 516 517 var pl = quizmaster.find(quizmaster.elements.singlePageLeft).hide(); 518 var pr = quizmaster.find(quizmaster.elements.singlePageRight).hide(); 519 var cs = quizmaster.find('input[name="checkSingle"]').hide(); 520 521 if (page > 1) { 522 pl.val(pl.data('text').replace(/%d/, page - 1)).show(); 523 } 524 525 if (page == maxPage) { 526 cs.show(); 527 } else { 528 pr.val(pr.data('text').replace(/%d/, page + 1)).show(); 529 } 530 531 currentPage = page; 532 var start = config.qpp * (page - 1); 533 534 $listItem.slice(start, start + config.qpp).show(); 535 quizmaster.scrollTo( quizmaster.elements.quiz ); 536 }; 537 538 quizmaster.setCurrentQuestion = function( $question ) { 539 540 quizmaster.data.currentQuestion = $question; 541 quizmaster.data.currentQuestionId = $question.find(quizmaster.elements.questionListClass).data('question_id'); 542 543 }; 544 545 quizmaster.questionCount = function () { 546 return quizmaster.find('.quizMaster_listItem').length; 547 }; 548 549 quizmaster.finishQuiz = function (timeover) { 550 551 // hide finish button 552 quizmaster.elements.finishButton.hide(); 553 554 // deactivate hint trigger 555 quizmaster.hintDisable(); 556 557 quizmaster.timer.question.stop(); 558 quizmaster.timer.quiz.stop(); 559 quizmaster.timer.limit.stop(); 560 561 var time = (+new Date() - quizmaster.timer.quizStartTime); 562 time = (quizmaster.config.timeLimit && time > quizmaster.config.timeLimit) ? quizmaster.config.timeLimit : time; 563 564 quizmaster.find('.quizMaster_quiz_time span').text( quizmaster.timer.parseTime(time) ); 565 566 if (timeover) { 567 quizmaster.elements.resultsBox.find('.qm-time-limit_expired').show(); 568 } 569 570 // check all answers if mode is single page 571 if( quizmaster.config.mode == 2 ) { 572 quizmaster.checkQuestion(quizmaster.elements.questionList.children(), true); 573 } 574 575 576 quizmaster.setAverageResult(quizmaster.data.results.comp.result, false); 577 quizmaster.setCategoryOverview(); 578 579 quizmaster.sendCompletedQuiz(); 580 581 /* global trigger */ 582 quizmaster.trigger({ 583 type: 'quizmaster.quizCompleted', 584 questionCount: quizmaster.questionCount(), 585 results: quizmaster.data.results, 586 }); 587 588 }; 589 590 quizmaster.afterQuizFinish = function() { 591 592 // hide buttons and elements 593 quizmaster.elements.checkButton.hide(); 594 quizmaster.elements.skipButton.hide(); 595 quizmaster.elements.reviewBox.hide(); 596 quizmaster.find('.qm-check-page, .qm-info-page').hide(); 597 quizmaster.elements.quiz.hide(); 598 quizmaster.elements.resultsBox.show(); 599 quizmaster.scrollTo(quizmaster.elements.resultsBox); 600 601 // reset result comp 602 quizmaster.data.results.comp.solved = 0; 603 quizmaster.data.results.comp.answered = 0; 604 quizmaster.data.results.comp.skipped = 0; 605 606 } 607 608 quizmaster.showQuizSummary = function() { 609 610 quizmaster.elements.reviewBox.hide(); 611 quizmaster.elements.quiz.hide(); 612 613 /* 614 * Show the quiz summary 615 * Needs to fire after question check for last question is completed 616 */ 617 618 // show the correct answer count 619 var correctAnswerEl = quizmaster.find('.quizMaster_correct_answer'); 620 correctAnswerEl.text( quizmaster.data.results.comp.correctQuestions ) 621 622 quizmaster.data.results.comp.result = Math.round(quizmaster.data.results.comp.points / quizmaster.config.globalPoints * 100 * 100) / 100; 623 var $pointFields = quizmaster.find('.quizMaster_points span'); 624 625 $pointFields.eq(0).text(quizmaster.data.results.comp.points); 626 $pointFields.eq(1).text(quizmaster.config.globalPoints); 627 $pointFields.eq(2).text(quizmaster.data.results.comp.result + '%'); 628 629 } 630 631 /* 632 * Hint Handler Functions 633 */ 634 635 quizmaster.hint = { 636 637 buttonHide: function() { 638 quizmaster.elements.hintTrigger.hide(); 639 }, 640 641 buttonShow: function() { 642 quizmaster.elements.hintTrigger.show(); 643 }, 644 645 }; 646 647 quizmaster.hintInit = function() { 648 649 quizmaster.on('quizmaster.questionShow', function() { 650 651 var $hint = quizmaster.getCurrentQuestion().find('.quizMaster_tipp') 652 if( ! $hint.length ) { 653 quizmaster.hintDisable(); 654 } else { 655 quizmaster.hint.buttonShow(); 656 quizmaster.hintEnable(); 657 } 658 659 }); 660 }; 661 662 quizmaster.hintDisable = function () { 663 664 $tipModal = $('.qm-hint-modal'); 665 $tipModal.hide(); 666 quizmaster.elements.hintTrigger.removeClass('qm-hint-enabled') 667 quizmaster.elements.hintTrigger.addClass('qm-hint-disabled') 668 quizmaster.elements.hintTrigger.off( 'click', quizmaster.hintHide ) 669 quizmaster.elements.hintTrigger.off( 'click', quizmaster.hintShow ) 670 671 }; 672 673 quizmaster.hintEnable = function () { 674 675 quizmaster.elements.hintTrigger.removeClass('qm-hint-disabled') 676 quizmaster.elements.hintTrigger.addClass('qm-hint-enabled') 677 quizmaster.elements.hintTrigger.off( 'click', quizmaster.hintHide ) 678 quizmaster.elements.hintTrigger.on( 'click', quizmaster.hintShow ) 679 680 }; 681 682 quizmaster.hintHide = function ( event ) { 683 684 $tipModal = $('.qm-hint-modal'); 685 $tipModal.hide(); 686 quizmaster.elements.hintTrigger.off( 'click', quizmaster.hintHide ) 687 quizmaster.elements.hintTrigger.on( 'click', quizmaster.hintShow ) 688 689 }; 690 691 quizmaster.hintShow = function ( event ) { 692 693 var $this = $(this); 694 var id = quizmaster.getCurrentQuestionId(); 695 696 // get tip div 697 var $hint = quizmaster.data.currentQuestion.find('.quizMaster_tipp') 698 var $tip = $hint.html(); 699 $tipModal = $('.qm-hint-modal'); 700 $tipModalContents = $('.qm-hint-modal .qm-hint-content'); 701 702 // populate modal with current question tip 703 $tipModalContents.html( $tip ) 704 705 // adjust modal position 706 $tipModal.css({ 707 position: "absolute", 708 left: $this.position().left + "px", 709 top: ($this.position().top + $this.outerHeight()) + "px", 710 display: "block", 711 }); 712 713 quizmaster.elements.hintTrigger.on( 'click', quizmaster.hintHide ) 714 quizmaster.elements.hintTrigger.off( 'click', quizmaster.hintShow ) 715 716 // record use of tip 717 quizmaster.data.results[id].tip = 1; 718 719 }; 720 721 /* 722 * Timer Class 723 */ 724 quizmaster.timer = { 725 726 questionStartTime: 0, 727 quizStartTime: 0, 728 729 limit: { 730 731 intervalId: 0, 732 733 stop: function () { 734 if ( quizmaster.config.timeLimit ) { 735 window.clearInterval( quizmaster.timer.limit.intervalId ); 736 quizmaster.elements.timeLimitBox.hide(); 737 } 738 }, 739 740 start: function () { 741 742 if (! quizmaster.config.timeLimit ) 743 return; 744 745 var $timeText = quizmaster.elements.timeLimitBox.find('span').text( quizmaster.timer.parseTime( quizmaster.config.timeLimit ) ); 746 var $timeDiv = quizmaster.elements.timeLimitBox.find('.qm-progress-box'); 747 748 quizmaster.elements.timeLimitBox.show(); 749 750 var beforeTime = +new Date(); 751 752 quizmaster.timer.limit.intervalId = window.setInterval(function () { 753 754 var diff = (+new Date() - beforeTime); 755 var elapsedTime = (quizmaster.config.timeLimit) - diff; 756 757 if (diff >= 500) { 758 $timeText.text( quizmaster.timer.parseTime(Math.ceil(elapsedTime)) ); 759 } 760 761 $timeDiv.css('width', (elapsedTime / quizmaster.config.timeLimit * 100) + '%'); 762 763 if (elapsedTime <= 0) { 764 quizmaster.timer.limit.stop(); 765 quizmaster.finishQuiz( true ); 766 } 767 768 }); 769 }, 770 771 }, 772 773 question: { 774 775 start: function ( questionId ) { 776 if ( quizmaster.data.currentQuestionId != 0 ) 777 quizmaster.stop(); 778 779 quizmaster.data.currentQuestionId = questionId; 780 quizmaster.timer.questionStartTime = +new Date(); 781 782 }, 783 784 stop: function () { 785 786 if ( quizmaster.getCurrentQuestionId() == 0 ) 787 return; 788 789 quizmaster.data.results[ quizmaster.getCurrentQuestionId() ].time += Math.round((new Date() - quizmaster.timer.questionStartTime)); 790 791 }, 792 793 }, 794 795 quiz: { 796 797 start: function () { 798 if ( quizmaster.data.isQuizStarted ) 799 quizmaster.stopQuiz(); 800 801 quizmaster.timer.quizStartTime = +new Date(); 802 quizmaster.data.isQuizStarted = true; 803 804 }, 805 806 stop: function () { 807 808 if ( !quizmaster.data.isQuizStarted ) { 809 return; 810 } 811 812 quizmaster.data.results['comp'].quizTime += new Date() - quizmaster.timer.quizStartTime; 813 quizmaster.data.isQuizStarted = false; 814 815 }, 816 817 }, 818 819 convertTimeLimitMs: function() { 820 if( quizmaster.config.timeLimit ) { 821 quizmaster.config.timeLimit = quizmaster.config.timeLimit * 1000; 822 } 823 }, 824 825 parseTime: function (ms) { 826 827 var seconds = parseInt(ms / 1000); 828 var minutes = parseInt((seconds / 60) % 60); 829 var hours = parseInt((seconds / 3600) % 24); 830 831 seconds = (seconds > 9 ? '' : '0') + seconds; 832 minutes = (minutes > 9 ? '' : '0') + minutes; 833 hours = (hours > 9 ? '' : '0') + hours; 834 835 return hours + ':' + minutes + ':' + seconds; 836 }, 837 838 }; 839 840 quizmaster.setAverageResult = function (p, g) { 841 var v = quizmaster.find('.quizMaster_resultValue:eq(' + (g ? 0 : 1) + ') > * '); 842 v.eq(1).text(p + '%'); 843 v.eq(0).css('width', (240 * p / 100) + 'px'); 844 }; 845 846 quizmaster.setCategoryOverview = function () { 847 848 quizmaster.data.results.comp.cats = {}; 849 850 quizmaster.find('.quizMaster_catOverview li').each(function () { 851 852 var $this = $(this); 853 var catId = $this.data('category_id'); 854 855 if (quizmaster.config.catPoints[catId] === undefined) { 856 $this.hide(); 857 return true; 858 } 859 860 var r = Math.round(quizmaster.data.catResults[catId] / quizmaster.config.catPoints[catId] * 100 * 100) / 100; 861 862 quizmaster.data.results.comp.cats[catId] = r; 863 864 $this.find('.quizMaster_catPercent').text(r + '%'); 865 866 $this.show(); 867 }); 868 869 }; 870 871 quizmaster.sendCompletedQuiz = function () { 872 873 quizmaster.fetchAllAnswerData( quizmaster.data.results ); 874 875 quizmaster.ajax({ 876 action: 'quizmaster_admin_ajax', 877 func: 'completedQuiz', 878 data: { 879 quizId: quizmaster.config.quizId, 880 results: quizmaster.data.results, 881 } 882 }); 883 884 }; 885 886 quizmaster.fetchAllAnswerData = function (resultData) { 887 888 quizmaster.find('.quizMaster_question-list').each(function () { 889 var $this = $(this); 890 var questionId = $this.data('question_id'); 891 var type = $this.data('type'); 892 var data = {}; 893 894 if (type == 'single' || type == 'multiple') { 895 $this.find('.qm-question-list-item').each(function () { 896 data[$(this).data('pos')] = +$(this).find('.quizMaster_questionInput').is(':checked'); 897 }); 898 } else if (type == 'free_answer') { 899 data[0] = $this.find('.quizMaster_questionInput').val(); 900 } else if (type == 'sort_answer') { 901 return true; 902 } else if (type == 'matrix_sort_answer') { 903 return true; 904 } else if (type == 'fill_blank') { 905 var i = 0; 906 $this.find('.quizMaster_cloze input').each(function () { 907 data[i++] = $(this).val(); 908 }); 909 } 910 911 quizmaster.data.resultData[questionId]['data'] = data; 912 913 }); 914 }; 915 916 /* 917 * Question Review 918 */ 919 quizmaster.questionReviewButtonInit = function() { 920 921 quizmaster.elements.questionReviewButton.on( 'click', function () { 922 quizmaster.showQuestionList(); 923 }); 924 925 }; 926 927 quizmaster.showQuestionList = function () { 928 929 quizmaster.elements.quiz.toggle(); 930 quizmaster.find('.quizMaster_QuestionButton').hide(); 931 quizmaster.elements.questionList.children().show(); 932 933 if( quizmaster.config.showReviewBox ) { 934 quizmaster.elements.reviewBox.toggle(); 935 } 936 937 quizmaster.find('.quizMaster_question_page').hide(); 938 939 }; 940 941 /* 942 * Restart quiz 943 */ 944 quizmaster.restartButtonInit = function() { 945 946 quizmaster.elements.restartButton.click(function () { 947 quizmaster.restartQuiz(); 948 }); 949 950 }; 951 952 quizmaster.restartQuiz = function () { 953 954 quizmaster.elements.resultsBox.hide(); 955 quizmaster.elements.startPage.show(); 956 quizmaster.elements.questionList.children().hide(); 957 quizmaster.elements.reviewBox.hide(); 958 959 quizmaster.find('.quizMaster_questionInput, .quizMaster_cloze input').removeAttr('disabled').removeAttr('checked') 960 .css('background-color', ''); 961 962 quizmaster.find('.quizMaster_questionListItem input[type="text"]').val(''); 963 964 quizmaster.find('.quizMaster_answerCorrect, .quizMaster_answerIncorrect').removeClass('quizMaster_answerCorrect quizMaster_answerIncorrect'); 965 966 quizmaster.find('.quizMaster_listItem').data('check', false); 967 968 // quizmaster.find('.qm-check-answer-box').hide().children().hide(); 969 quizmaster.find('.qm-check-answer-box').hide(); 970 quizmaster.find('.quizMaster_clozeCorrect, .quizMaster_QuestionButton, .qm-results-boxList > li').hide(); 971 972 quizmaster.find('.quizMaster_question_page, input[name="tip"]').show(); 973 quizmaster.find('.quizMaster_resultForm').text('').hide(); 974 975 quizmaster.elements.resultsBox.find('.qm-time-limit_expired').hide(); 976 977 }; 978 979 /* 980 * Important utility functions 981 */ 982 983 quizmaster.loadQuizData = function () { 984 985 quizmaster.ajax({ 986 action: 'quizmaster_admin_ajax', 987 func: 'quizLoadData', 988 data: { 989 quizId: quizmaster.config.quizId 990 } 991 }, function (json) { 992 993 quizmaster.config.globalPoints = json.globalPoints; 994 quizmaster.config.catPoints = json.catPoints; 995 quizmaster.config.json = json.json; 996 quizmaster.find('.quizMaster_quizAnker').after(json.content); 997 998 // quiz data loaded event 999 quizmaster.trigger({ 1000 type: 'quizmaster.quizDataLoaded', 1001 }); 1002 1003 }); 1004 }; 1005 1006 quizmaster.modeHandler = function() { 1007 1008 // mode handling 1009 switch (quizmaster.config.mode) { 1010 1011 // single page mode 1012 case 2: 1013 1014 quizmaster.elements.finishButton.show(); 1015 quizmaster.find('.quizMaster_question_page').hide(); 1016 var $questionList = quizmaster.elements.questionList.children(); 1017 quizmaster.setCurrentQuestion( $questionList.last() ); 1018 quizmaster.showSinglePage(0); 1019 break; 1020 1021 // check/continue mode 1022 case 1: 1023 1024 // show check button at start 1025 quizmaster.elements.checkButton.show(); 1026 quizmaster.elements.finishButton.hide(); 1027 quizmaster.elements.nextButton.hide(); 1028 1029 // handle buttons on questionCheck 1030 quizmaster.on( 'quizmaster.questionChecked', function() { 1031 1032 if( quizmaster.isLastQuestion() ) { 1033 quizmaster.elements.finishButton.show() 1034 quizmaster.elements.checkButton.hide() 1035 } else { 1036 quizmaster.elements.nextButton.show() 1037 quizmaster.elements.checkButton.hide() 1038 } 1039 1040 }); 1041 1042 // handle buttons on nextQuestion 1043 quizmaster.on( 'quizmaster.nextQuestion', function() { 1044 1045 if( quizmaster.config.mode == 1 ) { 1046 1047 quizmaster.elements.checkButton.show() 1048 quizmaster.elements.nextButton.hide() 1049 1050 } 1051 1052 }); 1053 1054 break; 1055 1056 // default normal mode 1057 case 0: 1058 quizmaster.elements.nextButton.show(); 1059 break; 1060 } 1061 1062 // maybe hide question position overview 1063 if ( quizmaster.config.options.hideQuestionPositionOverview ) { 1064 quizmaster.find('.quizMaster_question_page').hide(); 1065 } 1066 1067 // start timer 1068 quizmaster.timer.question.start( quizmaster.getCurrentQuestionId() ) 1069 1070 }; 1071 1072 quizmaster.startQuizShowQuestion = function() { 1073 1074 if( quizmaster.config.mode != 2 ) { 1075 1076 // get first question object and show 1077 var $questionList = quizmaster.elements.questionList.children(); 1078 quizmaster.setCurrentQuestion( $questionList.eq(0) ); 1079 quizmaster.showQuestionObject( 'current' ); 1080 1081 } 1082 1083 }; 1084 1085 quizmaster.sortableInit = function () { 1086 1087 quizmaster.find('.qm-sortable').sortable({ 1088 update: function (event, ui) { 1089 var $p = $(this).parents('.quizMaster_listItem'); 1090 1091 quizmaster.trigger({ 1092 type: 'quizmaster.questionSolved', 1093 values: { 1094 item: $p, 1095 index: $p.index(), 1096 solved: true 1097 } 1098 }); 1099 } 1100 }).disableSelection(); 1101 1102 } 1103 1104 quizmaster.setStatus = function ( statusCode ) { 1105 quizmaster.status = statusCode; 1106 } 1107 1108 quizmaster.getStatus = function () { 1109 return quizmaster.status; 1110 } 1111 1112 quizmaster.init = function( options ) { 1113 1114 // parse options to quizmaster.config 1115 quizmaster.config = $.extend({ 1116 1117 // default settings 1118 bitOptions: { 1119 cors: true 1120 }, 1121 options: { 1122 catPoints: [] 1123 } 1124 1125 }, options ); 1126 1127 // convert the time limit set in seconds to ms 1128 quizmaster.timer.convertTimeLimitMs(); 1129 1130 quizmaster.loadQuizData() 1131 quizmaster.checkButtonInit(); 1132 quizmaster.backButtonInit(); 1133 quizmaster.nextButtonInit(); 1134 quizmaster.finishButtonInit(); 1135 quizmaster.startButtonInit(); 1136 quizmaster.restartButtonInit(); 1137 quizmaster.questionReviewButtonInit(); 1138 quizmaster.hintInit(); 1139 quizmaster.sortableInit(); 1140 1141 /* 1142 * Maybe start quiz or show start page 1143 */ 1144 if( quizmaster.config.options.isAutostart ) { 1145 quizmaster.on( 'quizmaster.quizDataLoaded', quizmaster.startQuiz ) 1146 } else { 1147 quizmaster.startPageShow(); 1148 } 1149 1150 // quiz setup functions 1151 quizmaster.on( 'quizmaster.startQuiz', quizmaster.modeHandler ); 1152 quizmaster.on( 'quizmaster.startQuiz', quizmaster.startQuizShowQuestion ); 1153 1154 /* 1155 * Event Handlers 1156 */ 1157 1158 // bind questionSolved to questionCheck 1159 quizmaster.on( 'quizmaster.questionChecked', quizmaster.questionSolved ); 1160 1161 // bind to quizCompleted event 1162 quizmaster.on( 'quizmaster.quizCompleted', function() { 1163 quizmaster.elements.nextButton.hide() 1164 quizmaster.elements.checkButton.hide() 1165 quizmaster.elements.hintTrigger.hide() 1166 }); 1167 1168 quizmaster.on( 'quizmaster.lastQuestionLoaded', function() { 1169 1170 if( quizmaster.config.mode == 0 ) { 1171 quizmaster.elements.finishButton.show(); 1172 quizmaster.elements.checkButton.hide(); 1173 quizmaster.elements.nextButton.hide(); 1174 } 1175 1176 }); 1177 1178 quizmaster.on( 'quizmaster.quizCompleted', function() { 1179 quizmaster.showQuizSummary(); 1180 }); 1181 1182 quizmaster.on( 'quizmaster.quizCompleted', function() { 1183 quizmaster.afterQuizFinish(); 1184 }); 1185 1186 // bind to questionAnswered event 1187 quizmaster.on( 'quizmaster.questionAnswered', function() { 1188 quizmaster.checkQuestion() 1189 }); 1190 1191 /* 1192 * Set initial status 1193 */ 1194 quizmaster.setStatus('initialized') 1195 1196 }; 1197 1198 /* 1199 * Initialize or return 1200 */ 1201 1202 if( !options ) { 1203 // return current instance 1204 return quizmaster; 1205 } else { 1206 // do init 1207 quizmaster.init( options ); 1208 } 1209 1210 1211 }; // end quizmaster jQuery plugin 14 1212 15 1213 }); 16 17 /**18 * Source: https://github.com/jfriend00/docReady19 */20 (function(funcName, baseObj) {21 // The public function name defaults to window.quizMasterReady22 // but you can pass in your own object and own function name and those will be used23 // if you want to put them in a different namespace24 funcName = funcName || "quizMasterReady";25 baseObj = baseObj || window;26 var readyList = [];27 var readyFired = false;28 var readyEventHandlersInstalled = false;29 30 // call this when the document is ready31 // this function protects itself against being called more than once32 function ready() {33 if (!readyFired) {34 // this must be set to true before we start calling callbacks35 readyFired = true;36 for (var i = 0; i < readyList.length; i++) {37 // if a callback here happens to add new ready handlers,38 // the quizMasterReady() function will see that it already fired39 // and will schedule the callback to run right after40 // this event loop finishes so all handlers will still execute41 // in order and no new ones will be added to the readyList42 // while we are processing the list43 readyList[i].fn.call(window, readyList[i].ctx);44 }45 // allow any closures held by these functions to free46 readyList = [];47 }48 }49 50 function readyStateChange() {51 if ( document.readyState === "complete" ) {52 ready();53 }54 }55 56 // This is the one public interface57 // quizMasterReady(fn, context);58 // the context argument is optional - if present, it will be passed59 // as an argument to the callback60 baseObj[funcName] = function(callback, context) {61 // if ready has already fired, then just schedule the callback62 // to fire asynchronously, but right away63 if (readyFired) {64 setTimeout(function() {callback(context);}, 1);65 return;66 } else {67 // add the function and context to the list68 readyList.push({fn: callback, ctx: context});69 }70 // if document already ready to go, schedule the ready function to run71 if (document.readyState === "complete") {72 setTimeout(ready, 1);73 } else if (!readyEventHandlersInstalled) {74 // otherwise if we don't have event handlers installed, install them75 if (document.addEventListener) {76 // first choice is DOMContentLoaded event77 document.addEventListener("DOMContentLoaded", ready, false);78 // backup is window load event79 window.addEventListener("load", ready, false);80 } else {81 // must be IE82 document.attachEvent("onreadystatechange", readyStateChange);83 window.attachEvent("onload", ready);84 }85 readyEventHandlersInstalled = true;86 }87 }88 })("quizMasterReady", window);89 90 quizmasterQuizRegistry = quizMasterReady(function () {91 92 var r = window.quizmasterQuizRegistry || [];93 94 for(var i = 0; i < r.length; i++) {95 jQuery(r[i].id).quizMasterFront(r[i].init);96 }97 98 return window.quizmasterQuizRegistry;99 100 });101 102 (function ($) {103 104 /**105 * @memberOf $106 */107 $.quizMasterFront = function (element, options) {108 109 var $e = $(element);110 var config = options;111 var callbacks = [];112 var plugin = this;113 var results = new Object();114 var catResults = new Object();115 var startTime = 0;116 var currentQuestion = null;117 var quizSolved = [];118 var lastButtonValue = "";119 var inViewQuestions = false;120 var currentPage = 1;121 122 var registerCallbacks = (function () {123 124 plugin.methode.ajax({125 action: 'quizmaster_admin_ajax',126 func: 'registerExtensionScriptCallbacks',127 data: {}128 }, function (json) {129 window.quizmasterCallbackRegistry = json;130 }131 );132 133 });134 135 var bitOptions = {136 randomAnswer: 0,137 randomQuestion: 0,138 disabledAnswerMark: 0,139 checkBeforeStart: 0,140 preview: 0,141 cors: 0,142 isAddAutomatic: 0,143 quizSummeryHide: 0,144 skipButton: 0,145 reviewQustion: 0,146 autoautoStart: 0,147 forcingQuestionSolve: 0,148 hideQuestionPositionOverview: 0,149 formActivated: 0,150 maxShowQuestion: 0,151 sortCategories: 0152 };153 154 var quizStatus = {155 isQuizStart: 0,156 isLocked: 0,157 loadLock: 0,158 isUserStartLocked: 0159 };160 161 var globalNames = {162 check: '.qm-button-check',163 next: '.qm-button-next',164 questionList: '.quizMaster_questionList',165 skip: 'input[name="skip"]',166 singlePageLeft: 'input[name="quizMaster_pageLeft"]',167 singlePageRight: 'input[name="quizMaster_pageRight"]'168 };169 170 var globalElements = {171 back: $e.find('input[name="back"]'),172 next: $e.find(globalNames.next),173 skip: $e.find(globalNames.skip),174 check: $e.find(globalNames.check),175 quiz: $e.find('.quizMaster_quiz'),176 questionList: $e.find('.quizMaster_list'),177 results: $e.find('.qm-results-box'),178 questionCheck: $e.find('.qm-check-answer-box'),179 quizStartPage: $e.find('.qm-quiz-start-box'),180 timelimit: $e.find('.qm-time-limit'),181 toplistShowInButton: $e.find('.quizMaster_toplistShowInButton'),182 hintTrigger: $e.find('.qm-hint-trigger'),183 listItems: $()184 };185 186 var toplistData = {187 token: '',188 isUser: 0189 };190 191 var formPosConst = {192 START: 0,193 END: 1194 };195 196 /**197 * @memberOf timelimit198 */199 var timelimit = (function () {200 var _counter = config.timelimit;201 var _intervalId = 0;202 var instance = {};203 204 instance.stop = function () {205 if (_counter) {206 window.clearInterval(_intervalId);207 globalElements.timelimit.hide();208 }209 };210 211 instance.start = function () {212 if (!_counter)213 return;214 215 var x = _counter * 1000;216 217 var $timeText = globalElements.timelimit.find('span').text(plugin.methode.parseTime(_counter));218 var $timeDiv = globalElements.timelimit.find('.qm-progress-box');219 220 globalElements.timelimit.show();221 222 var beforeTime = +new Date();223 224 _intervalId = window.setInterval(function () {225 226 var diff = (+new Date() - beforeTime);227 var elapsedTime = x - diff;228 229 if (diff >= 500) {230 $timeText.text(plugin.methode.parseTime(Math.ceil(elapsedTime / 1000)));231 }232 233 $timeDiv.css('width', (elapsedTime / x * 100) + '%');234 235 if (elapsedTime <= 0) {236 instance.stop();237 plugin.methode.finishQuiz(true);238 }239 240 }, 16);241 };242 243 return instance;244 245 })();246 247 /**248 * @memberOf reviewBox249 */250 var reviewBox = new function () {251 252 var $contain = [], $cursor = [], $list = [], $items = [];253 var x = 0, offset = 0, diff = 0, top = 0, max = 0;254 255 this.init = function () {256 257 $contain = $e.find('.quizMaster_reviewQuestion');258 $cursor = $contain.find('div');259 $list = $contain.find('ol');260 $items = $list.children();261 262 $cursor.mousedown(function (e) {263 e.preventDefault();264 e.stopPropagation();265 266 offset = e.pageY - $cursor.offset().top + top;267 268 $(document).bind('mouseup.scrollEvent', endScroll);269 $(document).bind('mousemove.scrollEvent', moveScroll);270 271 });272 273 $items.click(function (e) {274 plugin.methode.showQuestion($(this).index());275 });276 277 $e.bind('changeQuestion', function (e) {278 $items.removeClass('quizMaster_reviewQuestionTarget');279 280 $items.eq(e.values.index).addClass('quizMaster_reviewQuestionTarget');281 282 // show and hide buttons283 switch (config.mode) {284 285 case 2:286 287 globalElements.questionCheck.hide()288 globalElements.next.hide()289 $(globalNames.check).show()290 $(globalNames.skip).show()291 292 break;293 294 }295 296 scroll(e.values.index);297 });298 299 // show skip button if set300 if (bitOptions.skipButton)301 $(globalNames.skip).show();302 303 $contain.bind('mousewheel DOMMouseScroll', function (e) {304 e.preventDefault();305 306 var ev = e.originalEvent;307 var w = ev.wheelDelta ? -ev.wheelDelta / 120 : ev.detail / 3;308 var plus = 20 * w;309 310 var x = top - $list.offset().top + plus;311 312 if (x > max)313 x = max;314 315 if (x < 0)316 x = 0;317 318 var o = x / diff;319 320 $list.attr('style', 'margin-top: ' + (-x) + 'px !important');321 $cursor.css({top: o});322 323 return false;324 });325 };326 327 this.show = function (save) {328 329 if (bitOptions.reviewQustion)330 $contain.parent().show();331 332 if (save)333 return;334 335 $list.attr('style', 'margin-top: 0px !important');336 $cursor.css({top: 0});337 338 var h = $list.outerHeight();339 var c = $contain.height();340 x = c - $cursor.height();341 offset = 0;342 max = h - c;343 diff = max / x;344 345 if (h > 100) {346 $cursor.show();347 }348 349 top = $cursor.offset().top;350 };351 352 this.hide = function () {353 $contain.parent().hide();354 };355 356 this.toggle = function () {357 if (bitOptions.reviewQustion) {358 359 $contain.parent().toggle();360 $items.removeClass('quizMaster_reviewQuestionTarget');361 362 $cursor.css({top: 0});363 364 var h = $list.outerHeight();365 var c = $contain.height();366 x = c - $cursor.height();367 offset = 0;368 max = h - c;369 diff = max / x;370 371 if (h > 100) {372 $cursor.show();373 }374 375 top = $cursor.offset().top;376 }377 };378 379 function scroll(index) {380 var $item = $items.eq(index);381 var iTop = $item.offset().top;382 var cTop = $contain.offset().top;383 var calc = iTop - cTop;384 385 if ((calc - 4) < 0 || (calc + 32) > 100) {386 var x = cTop - $items.eq(0).offset().top - (cTop - $list.offset().top) + $item.position().top;387 388 if (x > max)389 x = max;390 391 var o = x / diff;392 393 $list.attr('style', 'margin-top: ' + (-x) + 'px !important');394 $cursor.css({top: o});395 }396 }397 398 399 400 function moveScroll(e) {401 e.preventDefault();402 403 var o = e.pageY - offset;404 405 if (o < 0)406 o = 0;407 408 if (o > x)409 o = x;410 411 var v = diff * o;412 413 $list.attr('style', 'margin-top: ' + (-v) + 'px !important');414 415 $cursor.css({top: o});416 }417 418 function endScroll(e) {419 e.preventDefault();420 421 $(document).unbind('.scrollEvent');422 }423 };424 425 function QuestionTimer() {426 var questionStartTime = 0;427 var currentQuestionId = -1;428 429 var quizStartTimer = 0;430 var isQuizStart = false;431 432 this.questionStart = function (questionId) {433 if (currentQuestionId != -1)434 this.questionStop();435 436 currentQuestionId = questionId;437 questionStartTime = +new Date();438 };439 440 this.questionStop = function () {441 if (currentQuestionId == -1)442 return;443 444 results[currentQuestionId].time += Math.round((new Date() - questionStartTime) / 1000);445 446 currentQuestionId = -1;447 };448 449 this.startQuiz = function () {450 if (isQuizStart)451 this.stopQuiz();452 453 quizStartTimer = +new Date();454 isQuizStart = true;455 };456 457 this.stopQuiz = function () {458 if (!isQuizStart)459 return;460 461 results['comp'].quizTime += Math.round((new Date() - quizStartTimer) / 1000);462 isQuizStart = false;463 };464 465 this.init = function () {466 467 };468 469 };470 471 var questionTimer = new QuestionTimer();472 473 /**474 * @memberOf checker475 */476 var checker = function (name, data, $question, $questionList) {477 var correct = true;478 var points = 0;479 var isDiffPoints = $.isArray(data.points);480 var statistcAnswerData = {};481 482 var func = {483 singleMulti: function () {484 var input = $questionList.find('.quizMaster_questionInput').attr('disabled', 'disabled');485 var isDiffMode = data.diffMode;486 487 $questionList.children().each(function (i) {488 var $item = $(this);489 var index = $item.data('pos');490 var checked = input.eq(i).is(':checked');491 492 if (data.correct[index]) {493 if (!checked) {494 correct = false;495 } else {496 if (isDiffPoints) {497 if (isDiffMode)498 points = data.points[index];499 else500 points += data.points[index];501 }502 }503 504 if (data.disCorrect) {505 correct = true;506 } else {507 plugin.methode.marker($item, true);508 }509 510 } else {511 if (checked) {512 if (!data.disCorrect) {513 plugin.methode.marker($item, false);514 correct = false;515 } else {516 correct = true;517 }518 519 if (isDiffMode)520 points = data.points[index];521 } else {522 if (isDiffPoints && !isDiffMode) {523 points += data.points[index];524 }525 }526 }527 });528 },529 530 sort_answer: function () {531 var $items = $questionList.children();532 533 $items.each(function (i, v) {534 var $this = $(this);535 536 statistcAnswerData[i] = $this.data('pos');537 538 if (i == $this.data('pos')) {539 plugin.methode.marker($this, true);540 541 if (isDiffPoints) {542 points += data.points[i];543 }544 } else {545 plugin.methode.marker($this, false);546 correct = false;547 }548 });549 550 $items.children().css({551 'box-shadow': '0 0',552 'cursor': 'auto'553 });554 555 $questionList.sortable("destroy");556 557 $items.sort(function (a, b) {558 return $(a).data('pos') > $(b).data('pos') ? 1 : -1;559 });560 561 $questionList.append($items);562 },563 564 matrix_sort_answer: function () {565 var $items = $questionList.children();566 var matrix = new Array();567 statistcAnswerData = {0: -1};568 569 $items.each(function () {570 var $this = $(this);571 var i = $this.data('pos');572 var $stringUl = $this.find('.quizMaster_maxtrixSortCriterion');573 var $stringItem = $stringUl.children();574 575 if ($stringItem.length)576 statistcAnswerData[i] = $stringItem.data('pos');577 578 if ($stringItem.length && $.inArray(String(i), String($stringItem.data('correct')).split(',')) >= 0) {579 // if(i == $stringItem.data('pos')) {580 plugin.methode.marker($stringUl, true);581 582 if (isDiffPoints) {583 points += data.points[i];584 }585 } else {586 correct = false;587 plugin.methode.marker($stringUl, false);588 }589 590 matrix[i] = $stringUl;591 });592 593 plugin.methode.resetMatrix($question);594 595 $question.find('.quizMaster_sortStringItem').each(function () {596 var x = matrix[$(this).data('pos')];597 if (x != undefined)598 x.append(this);599 }).css({600 'box-shadow': '0 0',601 'cursor': 'auto'602 });603 604 $question.find('.quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion').sortable("destroy");605 },606 607 free_answer: function () {608 var $li = $questionList.children();609 var value = $li.find('.quizMaster_questionInput').attr('disabled', 'disabled').val();610 611 if ($.inArray($.trim(value).toLowerCase(), data.correct) >= 0) {612 plugin.methode.marker($li, true);613 } else {614 plugin.methode.marker($li, false);615 correct = false;616 }617 },618 619 cloze_answer: function () {620 $questionList.find('.quizMaster_cloze').each(function (i, v) {621 var $this = $(this);622 var cloze = $this.children();623 var input = cloze.eq(0);624 var span = cloze.eq(1);625 var inputText = plugin.methode.cleanupCurlyQuotes(input.val());626 627 if ($.inArray(inputText, data.correct[i]) >= 0) {628 if (isDiffPoints) {629 points += data.points[i];630 }631 632 if (!bitOptions.disabledAnswerMark) {633 input.css('background-color', '#B0DAB0');634 }635 } else {636 if (!bitOptions.disabledAnswerMark) {637 input.css('background-color', '#FFBABA');638 }639 640 correct = false;641 642 span.show();643 }644 645 input.attr('disabled', 'disabled');646 });647 },648 649 assessment_answer: function () {650 correct = true;651 var $input = $questionList.find('.quizMaster_questionInput').attr('disabled', 'disabled');652 var val = 0;653 654 $input.filter(':checked').each(function () {655 val += parseInt($(this).val());656 });657 658 points = val;659 }660 };661 662 func[name]();663 664 if (!isDiffPoints && correct) {665 points = data.points;666 }667 668 return {669 c: correct,670 p: points,671 s: statistcAnswerData672 };673 };674 675 /**676 * @memberOf formClass677 */678 var formClass = new function () {679 var funcs = {680 isEmpty: function (str) {681 str = $.trim(str);682 return (!str || 0 === str.length);683 }684 };685 686 var typeConst = {687 TEXT: 0,688 TEXTAREA: 1,689 NUMBER: 2,690 CHECKBOX: 3,691 EMAIL: 4,692 YES_NO: 5,693 DATE: 6,694 SELECT: 7,695 RADIO: 8696 };697 698 this.checkForm = function () {699 var check = true;700 701 $e.find('.quizMaster_forms input, .quizMaster_forms textarea, .quizMaster_forms .quizMaster_formFields, .quizMaster_forms select').each(function () {702 var $this = $(this);703 var isRequired = $this.data('required') == 1;704 var type = $this.data('type');705 var test = true;706 var value = $.trim($this.val());707 708 switch (type) {709 case typeConst.TEXT:710 case typeConst.TEXTAREA:711 case typeConst.SELECT:712 if (isRequired)713 test = !funcs.isEmpty(value);714 715 break;716 case typeConst.NUMBER:717 if (isRequired || !funcs.isEmpty(value))718 test = !funcs.isEmpty(value) && !isNaN(value);719 720 break;721 case typeConst.EMAIL:722 if (isRequired || !funcs.isEmpty(value))723 test = !funcs.isEmpty(value) && new RegExp(/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/)724 .test(value);725 726 break;727 case typeConst.CHECKBOX:728 if (isRequired)729 test = $this.is(':checked');730 731 break;732 case typeConst.YES_NO:733 case typeConst.RADIO:734 if (isRequired)735 test = $this.find('input[type="radio"]:checked').val() !== undefined;736 break;737 case typeConst.DATE:738 var num = 0, co = 0;739 740 $this.find('select').each(function () {741 num++;742 co += funcs.isEmpty($(this).val()) ? 0 : 1;743 });744 745 if (isRequired || co > 0)746 test = num == co;747 748 break;749 }750 751 if (test) {752 $this.siblings('.quizMaster_invalidate').hide();753 } else {754 check = false;755 $this.siblings('.quizMaster_invalidate').show();756 }757 758 });759 760 return check;761 };762 763 this.getFormData = function () {764 var data = {};765 766 $e.find('.quizMaster_forms input, .quizMaster_forms textarea, .quizMaster_forms .quizMaster_formFields, .quizMaster_forms select').each(function () {767 var $this = $(this);768 var id = $this.data('form_id');769 var type = $this.data('type');770 771 switch (type) {772 case typeConst.TEXT:773 case typeConst.TEXTAREA:774 case typeConst.SELECT:775 case typeConst.NUMBER:776 case typeConst.EMAIL:777 data[id] = $this.val();778 break;779 case typeConst.CHECKBOX:780 data[id] = $this.is(':checked') ? 1 : 0;781 break;782 case typeConst.YES_NO:783 case typeConst.RADIO:784 data[id] = $this.find('input[type="radio"]:checked').val();785 break;786 case typeConst.DATE:787 data[id] = {788 day: $this.find('select[name="quizMaster_field_' + id + '_day"]').val(),789 month: $this.find('select[name="quizMaster_field_' + id + '_month"]').val(),790 year: $this.find('select[name="quizMaster_field_' + id + '_year"]').val()791 };792 break;793 }794 });795 796 return data;797 };798 };799 800 var fetchAllAnswerData = function (resultData) {801 $e.find('.quizMaster_questionList').each(function () {802 var $this = $(this);803 var questionId = $this.data('question_id');804 var type = $this.data('type');805 var data = {};806 807 if (type == 'single' || type == 'multiple') {808 $this.find('.quizMaster_questionListItem').each(function () {809 data[$(this).data('pos')] = +$(this).find('.quizMaster_questionInput').is(':checked');810 });811 } else if (type == 'free_answer') {812 data[0] = $this.find('.quizMaster_questionInput').val();813 } else if (type == 'sort_answer') {814 return true;815 } else if (type == 'matrix_sort_answer') {816 return true;817 } else if (type == 'cloze_answer') {818 var i = 0;819 $this.find('.quizMaster_cloze input').each(function () {820 data[i++] = $(this).val();821 });822 } else if (type == 'assessment_answer') {823 data[0] = '';824 825 $this.find('.quizMaster_questionInput:checked').each(function () {826 data[$(this).data('index')] = $(this).val();827 });828 }829 830 resultData[questionId]['data'] = data;831 832 });833 };834 835 plugin.startQuiz = function () {836 plugin.methode.startQuiz();837 };838 839 plugin.blockQuiz = function () {840 return quizStatus.isBlocked = true;841 };842 843 plugin.unblockQuiz = function () {844 return quizStatus.isBlocked = false;845 };846 847 plugin.lockQuiz = function () {848 return quizStatus.isLocked = true;849 };850 851 plugin.setQuizStatus = function ( prop, val ) {852 quizStatus[ prop ] = val853 return quizStatus;854 };855 856 plugin.getQuizStatus = function () {857 return quizStatus;858 };859 860 plugin.hideQuizStart = function () {861 862 globalElements.quizStartPage.hide();863 plugin.methode.startQuiz();864 865 };866 867 plugin.methode = {868 869 // public method used for extensions to hook into events870 registerAction: function ( action, object, func ) {871 872 var a = {873 object: object,874 func: func,875 }876 877 if( callbacks.hasOwnProperty( action ) == false ){878 callbacks[action] = []879 }880 881 callbacks[action].push( a )882 883 },884 885 886 887 /**888 * @memberOf plugin.methode889 */890 891 parseBitOptions: function () {892 893 if (config.bo) {894 bitOptions.randomAnswer = config.bo & (1 << 0);895 bitOptions.randomQuestion = config.bo & (1 << 1);896 bitOptions.disabledAnswerMark = config.bo & (1 << 2);897 bitOptions.checkBeforeStart = config.bo & (1 << 3);898 bitOptions.preview = config.bo & (1 << 4);899 bitOptions.isAddAutomatic = config.bo & (1 << 6);900 bitOptions.reviewQustion = config.bo & ( 1 << 7);901 bitOptions.quizSummeryHide = config.bo & (1 << 8);902 bitOptions.skipButton = config.bo & (1 << 9);903 bitOptions.autoStart = config.bo & (1 << 10);904 bitOptions.forcingQuestionSolve = config.bo & (1 << 11);905 bitOptions.hideQuestionPositionOverview = config.bo & (1 << 12);906 bitOptions.formActivated = config.bo & (1 << 13);907 bitOptions.maxShowQuestion = config.bo & (1 << 14);908 bitOptions.sortCategories = config.bo & (1 << 15);909 910 var cors = config.bo & (1 << 5);911 912 if (cors && jQuery.support != undefined && jQuery.support.cors != undefined && jQuery.support.cors == false) {913 bitOptions.cors = cors;914 }915 }916 },917 918 setClozeStyle: function () {919 $e.find('.quizMaster_cloze input').each(function () {920 var $this = $(this);921 var word = "";922 var wordLen = $this.data('wordlen');923 924 for (var i = 0; i < wordLen; i++)925 word += "w";926 927 var clone = $(document.createElement("span"))928 .css('visibility', 'hidden')929 .text(word)930 .appendTo($('body'));931 932 var width = clone.width();933 934 clone.remove();935 936 $this.width(width + 5);937 });938 },939 940 parseTime: function (sec) {941 var seconds = parseInt(sec % 60);942 var minutes = parseInt((sec / 60) % 60);943 var hours = parseInt((sec / 3600) % 24);944 945 seconds = (seconds > 9 ? '' : '0') + seconds;946 minutes = (minutes > 9 ? '' : '0') + minutes;947 hours = (hours > 9 ? '' : '0') + hours;948 949 return hours + ':' + minutes + ':' + seconds;950 },951 952 cleanupCurlyQuotes: function (str) {953 str = str.replace(/\u2018/, "'");954 str = str.replace(/\u2019/, "'");955 956 str = str.replace(/\u201C/, '"');957 str = str.replace(/\u201D/, '"');958 959 return $.trim(str).toLowerCase();960 },961 962 resetMatrix: function (selector) {963 selector.each(function () {964 var $this = $(this);965 var $list = $this.find('.quizMaster_sortStringList');966 967 $this.find('.quizMaster_sortStringItem').each(function () {968 $list.append($(this));969 });970 });971 },972 973 marker: function (e, correct) {974 if (!bitOptions.disabledAnswerMark) {975 if (correct) {976 e.addClass('quizMaster_answerCorrect');977 } else {978 e.addClass('quizMaster_answerIncorrect');979 }980 }981 982 },983 984 startQuiz: function (loadData) {985 986 // enable hint987 plugin.methode.hintEnable();988 989 if ( quizStatus.loadLock ) {990 quizStatus.isQuizStart = 1;991 return;992 }993 994 quizStatus.isQuizStart = 0;995 996 if ( quizStatus.isBlocked ) {997 globalElements.quizStartPage.hide();998 return;999 }1000 1001 if ( quizStatus.isLocked ) {1002 globalElements.quizStartPage.hide();1003 $e.find('.qm-locked').show();1004 return;1005 }1006 1007 if ( quizStatus.isUserStartLocked ) {1008 globalElements.quizStartPage.hide();1009 $e.find('.qm-lock-box').show();1010 return;1011 }1012 1013 if (bitOptions.maxShowQuestion && !loadData) {1014 1015 globalElements.quizStartPage.hide();1016 $e.find('.quizMaster_loadQuiz').show();1017 plugin.methode.loadQuizDataAjax(true);1018 return;1019 1020 }1021 1022 if (bitOptions.formActivated && config.formPos == formPosConst.START) {1023 if (!formClass.checkForm())1024 return;1025 }1026 1027 plugin.methode.loadQuizData();1028 1029 if (bitOptions.randomQuestion) {1030 plugin.methode.random(globalElements.questionList);1031 }1032 1033 if (bitOptions.randomAnswer) {1034 plugin.methode.random($e.find(globalNames.questionList));1035 }1036 1037 if (bitOptions.sortCategories) {1038 plugin.methode.sortCategories();1039 }1040 1041 plugin.methode.random($e.find('.quizMaster_sortStringList'));1042 plugin.methode.random($e.find('[data-type="sort_answer"]'));1043 1044 $e.find('.quizMaster_listItem').each(function (i, v) {1045 var $this = $(this);1046 $this.find('.quizMaster_question_page span:eq(0)').text(i + 1);1047 $this.find('> h5 span').text(i + 1);1048 1049 $this.find('.quizMaster_questionListItem').each(function (i, v) {1050 $(this).find('> span:not(.quizMaster_cloze)').text(i + 1 + '. ');1051 });1052 });1053 1054 globalElements.next = $e.find(globalNames.next);1055 1056 switch (config.mode) {1057 case 3:1058 $e.find('input[name="checkSingle"]').show();1059 break;1060 case 2:1061 1062 $(globalNames.check).show();1063 1064 if ( bitOptions.skipButton || bitOptions.reviewQustion)1065 $e.find(globalNames.skip).show();1066 1067 break;1068 1069 case 1:1070 $e.find('input[name="back"]').slice(1).show();1071 case 0:1072 globalElements.next.show();1073 break;1074 }1075 1076 if (bitOptions.hideQuestionPositionOverview || config.mode == 3)1077 $e.find('.quizMaster_question_page').hide();1078 1079 var $listItem = globalElements.questionList.children();1080 1081 globalElements.listItems = $e.find('.quizMaster_list > li');1082 1083 if (config.mode == 3) {1084 plugin.methode.showSinglePage(0);1085 } else {1086 currentQuestion = $listItem.eq(0).show();1087 1088 var questionId = currentQuestion.find(globalNames.questionList).data('question_id');1089 questionTimer.questionStart(questionId);1090 }1091 1092 questionTimer.startQuiz();1093 1094 $e.find('.quizMaster_sortable').parents('ul').sortable({1095 update: function (event, ui) {1096 var $p = $(this).parents('.quizMaster_listItem');1097 1098 $e.trigger({1099 type: 'questionSolved',1100 values: {1101 item: $p,1102 index: $p.index(),1103 solved: true1104 }1105 });1106 }1107 }).disableSelection();1108 1109 $e.find('.quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion').sortable({1110 connectWith: '.quizMaster_maxtrixSortCriterion:not(:has(li)), .quizMaster_sortStringList',1111 placeholder: 'quizMaster_placehold',1112 update: function (event, ui) {1113 var $p = $(this).parents('.quizMaster_listItem');1114 1115 $e.trigger({1116 type: 'questionSolved',1117 values: {1118 item: $p,1119 index: $p.index(),1120 solved: true1121 }1122 });1123 1124 }1125 }).disableSelection();1126 1127 quizSolved = [];1128 1129 timelimit.start();1130 1131 startTime = +new Date();1132 1133 results = {1134 comp: {1135 points: 0,1136 correctQuestions: 0,1137 quizTime: 0,1138 answered: 0,1139 skipped: 0,1140 solved: 0,1141 }1142 };1143 1144 $e.find('.quizMaster_questionList').each(function () {1145 var questionId = $(this).data('question_id');1146 1147 results[questionId] = {1148 time: 0,1149 solved: 01150 };1151 });1152 1153 catResults = {};1154 1155 $.each(options.catPoints, function (i, v) {1156 catResults[i] = 0;1157 });1158 1159 globalElements.quizStartPage.hide();1160 $e.find('.quizMaster_loadQuiz').hide();1161 globalElements.quiz.show();1162 reviewBox.show();1163 1164 if (config.mode != 3) {1165 $e.trigger({1166 type: 'changeQuestion',1167 values: {1168 item: currentQuestion,1169 index: currentQuestion.index()1170 }1171 });1172 }1173 },1174 1175 showSingleQuestion: function (question) {1176 var page = question ? Math.ceil(question / config.qpp) : 1;1177 this.showSinglePage(page);1178 },1179 1180 showSinglePage: function (page) {1181 $listItem = globalElements.questionList.children().hide();1182 1183 if (!config.qpp) {1184 $listItem.show();1185 1186 return;1187 }1188 1189 page = page ? +page : 1;1190 var maxPage = Math.ceil($e.find('.quizMaster_list > li').length / config.qpp);1191 1192 if (page > maxPage)1193 return;1194 1195 var pl = $e.find(globalNames.singlePageLeft).hide();1196 var pr = $e.find(globalNames.singlePageRight).hide();1197 var cs = $e.find('input[name="checkSingle"]').hide();1198 1199 if (page > 1) {1200 pl.val(pl.data('text').replace(/%d/, page - 1)).show();1201 }1202 1203 if (page == maxPage) {1204 cs.show();1205 } else {1206 pr.val(pr.data('text').replace(/%d/, page + 1)).show();1207 }1208 1209 currentPage = page;1210 var start = config.qpp * (page - 1);1211 1212 $listItem.slice(start, start + config.qpp).show();1213 plugin.methode.scrollTo(globalElements.quiz);1214 },1215 1216 nextQuestion: function () {1217 this.showQuestionObject(currentQuestion.next());1218 },1219 1220 prevQuestion: function () {1221 this.showQuestionObject(currentQuestion.prev());1222 },1223 1224 showQuestion: function (index) {1225 var $element = globalElements.listItems.eq(index);1226 1227 if (config.mode == 3 || inViewQuestions) {1228 if (config.qpp) {1229 plugin.methode.showSingleQuestion(index + 1);1230 }1231 plugin.methode.scrollTo($element, 1);1232 questionTimer.startQuiz();1233 return;1234 }1235 1236 this.showQuestionObject($element);1237 },1238 1239 questionCount: function () {1240 return $e.find('.quizMaster_listItem').length;1241 },1242 1243 showQuestionObject: function (obj) {1244 1245 if (!obj.length && bitOptions.forcingQuestionSolve && bitOptions.quizSummeryHide && bitOptions.reviewQustion) {1246 for (var i = 0, c = $e.find('.quizMaster_listItem').length; i < c; i++) {1247 if (!quizSolved[i]) {1248 alert(QuizMasterGlobal.questionsNotSolved);1249 return false;1250 }1251 }1252 }1253 1254 currentQuestion.hide();1255 currentQuestion = obj.show();1256 1257 // Change last name1258 if( plugin.methode.questionCount() == currentQuestion.index() +1 ) {1259 var $lastButton = globalElements.next.last();1260 lastButtonValue = $lastButton.val();1261 $lastButton.val(config.lbn);1262 }1263 1264 plugin.methode.scrollTo( globalElements.quiz );1265 1266 // Change Question Trigger1267 $e.trigger({1268 type: 'changeQuestion',1269 values: {1270 item: currentQuestion,1271 index: currentQuestion.index()1272 }1273 });1274 1275 if ( !currentQuestion.length ) {1276 plugin.methode.showQuizSummary();1277 } else {1278 var questionId = currentQuestion.find(globalNames.questionList).data('question_id');1279 questionTimer.questionStart(questionId);1280 }1281 },1282 1283 skipQuestion: function () {1284 $e.trigger({1285 type: 'skipQuestion',1286 values: {1287 item: currentQuestion,1288 index: currentQuestion.index()1289 }1290 });1291 1292 plugin.methode.nextQuestion();1293 },1294 1295 reviewQuestion: function () {1296 $e.trigger({1297 type: 'reviewQuestion',1298 values: {1299 item: currentQuestion,1300 index: currentQuestion.index()1301 }1302 });1303 },1304 1305 showQuizSummary: function () {1306 1307 questionTimer.questionStop();1308 questionTimer.stopQuiz();1309 1310 if (bitOptions.quizSummeryHide || !bitOptions.reviewQustion) {1311 if (bitOptions.formActivated && config.formPos == formPosConst.END) {1312 reviewBox.hide();1313 globalElements.quiz.hide();1314 plugin.methode.scrollTo($e.find('.qm-info-page').show());1315 } else {1316 plugin.methode.finishQuiz();1317 }1318 1319 return;1320 }1321 1322 var quizSummary = $e.find('.qm-check-page');1323 1324 quizSummary.find('ol:eq(0)').empty()1325 .append($e.find('.quizMaster_reviewQuestion ol li').clone().removeClass('quizMaster_reviewQuestionTarget'))1326 .children().click(function (e) {1327 quizSummary.hide();1328 globalElements.quiz.show();1329 reviewBox.show(true);1330 1331 plugin.methode.showQuestion($(this).index());1332 });1333 1334 var cSolved = 0;1335 1336 for (var i = 0, c = quizSolved.length; i < c; i++) {1337 if (quizSolved[i]) {1338 cSolved++;1339 }1340 }1341 1342 quizSummary.find('span:eq(0)').text(cSolved);1343 1344 reviewBox.hide();1345 globalElements.quiz.hide();1346 1347 quizSummary.show();1348 1349 plugin.methode.scrollTo(quizSummary);1350 },1351 1352 finishQuiz: function (timeover) {1353 1354 // deactivate hint trigger1355 plugin.methode.hintDisable();1356 1357 questionTimer.questionStop();1358 questionTimer.stopQuiz();1359 timelimit.stop();1360 1361 var time = (+new Date() - startTime) / 1000;1362 time = (config.timelimit && time > config.timelimit) ? config.timelimit : time;1363 1364 $e.find('.quizMaster_quiz_time span').text(plugin.methode.parseTime(time));1365 1366 if (timeover) {1367 globalElements.results.find('.qm-time-limit_expired').show();1368 }1369 1370 plugin.methode.checkQuestion(globalElements.questionList.children(), true);1371 $e.find('.quizMaster_correct_answer').text(results.comp.correctQuestions);1372 1373 results.comp.result = Math.round(results.comp.points / config.globalPoints * 100 * 100) / 100;1374 var $pointFields = $e.find('.quizMaster_points span');1375 1376 $pointFields.eq(0).text(results.comp.points);1377 $pointFields.eq(1).text(config.globalPoints);1378 $pointFields.eq(2).text(results.comp.result + '%');1379 1380 var $resultText = $e.find('.qm-results-boxList > li').eq(0);1381 1382 var formData = formClass.getFormData();1383 1384 $resultText.find('.quizMaster_resultForm').each(function () {1385 var $this = $(this);1386 var formId = $this.data('form_id');1387 var data = formData[formId];1388 1389 if (typeof data === 'object') {1390 data = data['day'] + '-' + data['month'] + '-' + data['year'];1391 }1392 1393 $this.text(data).show();1394 });1395 1396 $resultText.show();1397 1398 //Result-Text END1399 1400 plugin.methode.setAverageResult(results.comp.result, false);1401 1402 this.setCategoryOverview();1403 1404 plugin.methode.sendCompletedQuiz();1405 1406 // hide buttons1407 globalElements.check.hide();1408 globalElements.skip.hide();1409 1410 reviewBox.hide();1411 1412 $e.find('.qm-check-page, .qm-info-page').hide();1413 globalElements.quiz.hide();1414 globalElements.results.show();1415 plugin.methode.scrollTo(globalElements.results);1416 1417 /* global trigger */1418 $(document).trigger({1419 type: 'quizmasterQuizCompleted',1420 values: {1421 questionCount: plugin.methode.questionCount(),1422 results: results,1423 }1424 });1425 1426 // reset result comp1427 /*1428 results.comp.solved = 0;1429 results.comp.answered = 0;1430 results.comp.skipped = 0;1431 */1432 1433 },1434 1435 setCategoryOverview: function () {1436 results.comp.cats = {};1437 1438 $e.find('.quizMaster_catOverview li').each(function () {1439 var $this = $(this);1440 var catId = $this.data('category_id');1441 1442 if (config.catPoints[catId] === undefined) {1443 $this.hide();1444 return true;1445 }1446 1447 var r = Math.round(catResults[catId] / config.catPoints[catId] * 100 * 100) / 100;1448 1449 results.comp.cats[catId] = r;1450 1451 $this.find('.quizMaster_catPercent').text(r + '%');1452 1453 $this.show();1454 });1455 },1456 1457 questionSolved: function (e) {1458 1459 quizSolved[e.values.index] = e.values.solved;1460 1461 var $questionList = e.values.item.find( globalNames.questionList );1462 var data = config.json[$questionList.data('question_id')];1463 1464 results[data.id].solved = Number(e.values.fake ? results[data.id].solved : e.values.solved);1465 1466 // record as answered, solved/skipped1467 if( e.values.fake ) {1468 results.comp.answered++1469 if( results[data.id].solved ) {1470 results.comp.solved++1471 } else {1472 results.comp.skipped++1473 }1474 }1475 },1476 1477 sendCompletedQuiz: function () {1478 if (bitOptions.preview)1479 return;1480 1481 fetchAllAnswerData(results);1482 1483 var formData = formClass.getFormData();1484 1485 plugin.methode.ajax({1486 action: 'quizmaster_admin_ajax',1487 func: 'completedQuiz',1488 data: {1489 quizId: config.quizId,1490 results: results,1491 forms: formData1492 }1493 });1494 },1495 1496 showQustionList: function () {1497 inViewQuestions = !inViewQuestions;1498 globalElements.toplistShowInButton.hide();1499 globalElements.quiz.toggle();1500 $e.find('.quizMaster_QuestionButton').hide();1501 globalElements.questionList.children().show();1502 reviewBox.toggle();1503 1504 $e.find('.quizMaster_question_page').hide();1505 },1506 1507 random: function (group) {1508 group.each(function () {1509 var e = $(this).children().get().sort(function () {1510 return Math.round(Math.random()) - 0.5;1511 });1512 1513 $(e).appendTo(e[0].parentNode);1514 });1515 },1516 1517 sortCategories: function () {1518 var e = $('.quizMaster_list').children().get().sort(function (a, b) {1519 var aQuestionId = $(a).find('.quizMaster_questionList').data('question_id');1520 var bQuestionId = $(b).find('.quizMaster_questionList').data('question_id');1521 1522 return config.json[aQuestionId].catId - config.json[bQuestionId].catId;1523 });1524 1525 $(e).appendTo(e[0].parentNode);1526 },1527 1528 restartQuiz: function () {1529 1530 globalElements.results.hide();1531 globalElements.quizStartPage.show();1532 globalElements.questionList.children().hide();1533 globalElements.toplistShowInButton.hide();1534 reviewBox.hide();1535 1536 $e.find('.quizMaster_questionInput, .quizMaster_cloze input').removeAttr('disabled').removeAttr('checked')1537 .css('background-color', '');1538 1539 $e.find('.quizMaster_questionListItem input[type="text"]').val('');1540 1541 $e.find('.quizMaster_answerCorrect, .quizMaster_answerIncorrect').removeClass('quizMaster_answerCorrect quizMaster_answerIncorrect');1542 1543 $e.find('.quizMaster_listItem').data('check', false);1544 1545 // $e.find('.qm-check-answer-box').hide().children().hide();1546 $e.find('.qm-check-answer-box').hide();1547 1548 plugin.methode.resetMatrix($e.find('.quizMaster_listItem'));1549 $e.find('.quizMaster_sortStringItem, .quizMaster_sortable').removeAttr('style');1550 $e.find('.quizMaster_clozeCorrect, .quizMaster_QuestionButton, .qm-results-boxList > li').hide();1551 1552 $e.find('.quizMaster_question_page, input[name="tip"]').show();1553 $e.find('.quizMaster_resultForm').text('').hide();1554 1555 globalElements.results.find('.qm-time-limit_expired').hide();1556 1557 // @TODO add trigger that extensions can use to reset items on restart1558 1559 inViewQuestions = false;1560 1561 },1562 1563 currentQuestionId: function() {1564 return currentQuestion.find(globalNames.questionList).data('question_id');1565 },1566 1567 checkQuestion: function ( list, endCheck ) {1568 1569 // either check list passed (at quiz finish) or use current question1570 list = (list == undefined) ? currentQuestion : list;1571 1572 list.each(function () {1573 1574 var $this = $(this);1575 var $questionList = $this.find(globalNames.questionList);1576 var data = config.json[$questionList.data('question_id')];1577 var name = data.type;1578 1579 questionTimer.questionStop();1580 1581 if ( $this.data('check') ) {1582 return true;1583 }1584 1585 // check answer1586 if (data.type == 'single' || data.type == 'multiple') {1587 name = 'singleMulti';1588 }1589 var result = checker( name, data, $this, $questionList );1590 1591 // show questionCheck box1592 if( endCheck == true ) {1593 1594 // insert points earned1595 $('.qm-check-question-points span').text( result.p );1596 1597 // show check message1598 if (result.c) {1599 // correct answer1600 $('.qm-check-message').html( data.correctMessage )1601 globalElements.questionCheck.removeClass('qm-check-answer-incorrect')1602 globalElements.questionCheck.addClass('qm-check-answer-correct')1603 $('.qm-check-message').show()1604 results['comp'].correctQuestions += 1;1605 } else {1606 $('.qm-check-message').html( data.incorrectMessage )1607 globalElements.questionCheck.removeClass('qm-check-answer-correct')1608 globalElements.questionCheck.addClass('qm-check-answer-incorrect')1609 $('.qm-check-message').show()1610 }1611 1612 // show and hide buttons1613 $(globalNames.check).hide();1614 $(globalNames.skip).hide();1615 $(globalNames.next).show();1616 globalElements.questionCheck.show();1617 1618 return;1619 1620 }1621 1622 // organize result from checking answer1623 results[data.id].points = result.p;1624 results[data.id].correct = Number(result.c);1625 results[data.id].data = result.s;1626 results['comp'].points += result.p;1627 catResults[data.catId] += result.p;1628 $this.data('check', true);1629 1630 // end check trigger1631 $e.trigger({1632 type: 'questionSolved',1633 values: {1634 item: currentQuestion,1635 index: currentQuestion.index(),1636 solved: true,1637 fake: true1638 }1639 });1640 1641 // global event1642 $(document).trigger({1643 type: 'quizmasterQuestionSolved',1644 values: {1645 item: currentQuestion,1646 index: currentQuestion.index(),1647 questionCount: plugin.methode.questionCount(),1648 solved: true,1649 results: results,1650 }1651 });1652 1653 });1654 1655 },1656 1657 hintDisable: function () {1658 1659 $tipModal = $('.qm-hint-modal');1660 $tipModal.hide();1661 globalElements.hintTrigger.removeClass('qm-hint-enabled')1662 globalElements.hintTrigger.addClass('qm-hint-disabled')1663 globalElements.hintTrigger.off( 'click', plugin.methode.hintHide )1664 globalElements.hintTrigger.off( 'click', plugin.methode.hintShow )1665 1666 },1667 1668 hintEnable: function () {1669 1670 globalElements.hintTrigger.removeClass('qm-hint-disabled')1671 globalElements.hintTrigger.addClass('qm-hint-enabled')1672 globalElements.hintTrigger.off( 'click', plugin.methode.hintHide )1673 globalElements.hintTrigger.on( 'click', plugin.methode.hintShow )1674 1675 },1676 1677 hintHide: function ( event ) {1678 1679 $tipModal = $('.qm-hint-modal');1680 $tipModal.hide();1681 globalElements.hintTrigger.off( 'click', plugin.methode.hintHide )1682 globalElements.hintTrigger.on( 'click', plugin.methode.hintShow )1683 1684 },1685 1686 hintShow: function ( event ) {1687 1688 var $this = $(this);1689 var id = currentQuestion.find(globalNames.questionList).data('question_id');1690 1691 // get tip div1692 var $hint = currentQuestion.find('.quizMaster_tipp')1693 var $tip = $hint.html();1694 $tipModal = $('.qm-hint-modal');1695 $tipModalContents = $('.qm-hint-modal .qm-hint-content');1696 1697 // populate modal with current question tip1698 $tipModalContents.html( $tip )1699 1700 // adjust modal position1701 $tipModal.css({1702 position: "absolute",1703 left: $this.position().left + "px",1704 top: ($this.position().top + $this.outerHeight()) + "px",1705 display: "block",1706 });1707 1708 globalElements.hintTrigger.on( 'click', plugin.methode.hintHide )1709 globalElements.hintTrigger.off( 'click', plugin.methode.hintShow )1710 1711 // record use of tip1712 results[id].tip = 1;1713 1714 },1715 1716 ajax: function (data, success, dataType) {1717 dataType = dataType || 'json';1718 1719 if (bitOptions.cors) {1720 jQuery.support.cors = true;1721 }1722 1723 $.post(QuizMasterGlobal.ajaxurl, data, success, dataType);1724 1725 if (bitOptions.cors) {1726 jQuery.support.cors = false;1727 }1728 },1729 1730 checkQuizLock: function () {1731 1732 quizStatus.loadLock = 1;1733 1734 plugin.methode.ajax({1735 action: 'quizmaster_admin_ajax',1736 func: 'quizCheckLock',1737 data: {1738 quizId: config.quizId1739 }1740 }, function (json) {1741 1742 // global trigger1743 $(document).trigger({1744 type: 'quizmasterCheckQuizLock',1745 values: {1746 lockData: json,1747 }1748 });1749 1750 // run callback hooks1751 var quizLockCallbacks = callbacks['checkQuizLock'];1752 $.each( quizLockCallbacks, function( index, value ) {1753 1754 // find object1755 var fn = window[value.object][value.func];1756 1757 // is object a function?1758 if (typeof fn === "function") {1759 var quizMasterFront = this;1760 fn( json, quizStatus, globalElements );1761 }1762 1763 });1764 1765 if (json.lock != undefined) {1766 quizStatus.isLocked = json.lock.is;1767 1768 if ( json.lock.pre ) {1769 $e.find('input[name="restartQuiz"]').hide();1770 }1771 }1772 1773 if (json.startUserLock != undefined) {1774 quizStatus.isUserStartLocked = json.startUserLock;1775 }1776 1777 quizStatus.loadLock = 0;1778 1779 if ( quizStatus.isQuizStart ) {1780 plugin.methode.startQuiz();1781 }1782 1783 });1784 },1785 1786 loadQuizData: function () {1787 plugin.methode.ajax({1788 action: 'quizmaster_admin_ajax',1789 func: 'loadQuizData',1790 data: {1791 quizId: config.quizId1792 }1793 }, function (json) {1794 1795 if (json.averageResult != undefined) {1796 plugin.methode.setAverageResult(json.averageResult, true);1797 }1798 1799 });1800 1801 },1802 1803 setAverageResult: function (p, g) {1804 var v = $e.find('.quizMaster_resultValue:eq(' + (g ? 0 : 1) + ') > * ');1805 1806 v.eq(1).text(p + '%');1807 v.eq(0).css('width', (240 * p / 100) + 'px');1808 },1809 1810 scrollTo: function (e, h) {1811 var x = e.offset().top - 100;1812 1813 if (h || (window.pageYOffset || document.body.scrollTop) > x) {1814 $('html,body').animate({scrollTop: x}, 300);1815 }1816 },1817 1818 registerSolved: function () {1819 1820 $e.find('.quizMaster_questionInput[type="text"]').change(function (e) {1821 var $this = $(this);1822 var $p = $this.parents('.quizMaster_listItem');1823 var s = false;1824 1825 if ($this.val() != '') {1826 s = true;1827 }1828 1829 $e.trigger({1830 type: 'questionSolved',1831 values: {1832 item: $p,1833 index: $p.index(),1834 solved: s1835 }1836 });1837 1838 });1839 1840 $e.find('.quizMaster_questionList[data-type="single"] .quizMaster_questionInput, .quizMaster_questionList[data-type="assessment_answer"] .quizMaster_questionInput').change(function (e) {1841 var $this = $(this);1842 var $p = $this.parents('.quizMaster_listItem');1843 var s = this.checked;1844 1845 $e.trigger({1846 type: 'questionSolved',1847 values: {1848 item: $p,1849 index: $p.index(),1850 solved: s1851 }1852 });1853 1854 });1855 1856 $e.find('.quizMaster_cloze input').change(function () {1857 var $this = $(this);1858 var $p = $this.parents('.quizMaster_listItem');1859 var s = true;1860 1861 $p.find('.quizMaster_cloze input').each(function () {1862 if ($(this).val() == '') {1863 s = false;1864 return false;1865 }1866 });1867 1868 $e.trigger({1869 type: 'questionSolved',1870 values: {1871 item: $p,1872 index: $p.index(),1873 solved: s1874 }1875 });1876 1877 });1878 1879 $e.find('.quizMaster_questionList[data-type="multiple"] .quizMaster_questionInput').change(function (e) {1880 var $this = $(this);1881 var $p = $this.parents('.quizMaster_listItem');1882 var c = 0;1883 1884 $p.find('.quizMaster_questionList[data-type="multiple"] .quizMaster_questionInput').each(function (e) {1885 if (this.checked)1886 c++;1887 });1888 1889 $e.trigger({1890 type: 'questionSolved',1891 values: {1892 item: $p,1893 index: $p.index(),1894 solved: (c) ? true : false1895 }1896 });1897 1898 });1899 },1900 1901 loadQuizDataAjax: function (quizStart) {1902 plugin.methode.ajax({1903 action: 'quizmaster_admin_ajax',1904 func: 'quizLoadData',1905 data: {1906 quizId: config.quizId1907 }1908 }, function (json) {1909 1910 config.globalPoints = json.globalPoints;1911 config.catPoints = json.catPoints;1912 config.json = json.json;1913 1914 globalElements.quiz.remove();1915 1916 $e.find('.quizMaster_quizAnker').after(json.content);1917 1918 //Reinit globalElements1919 globalElements = {1920 back: $e.find('input[name="back"]'),1921 next: $e.find(globalNames.next),1922 skip: $e.find(globalNames.skip),1923 quiz: $e.find('.quizMaster_quiz'),1924 questionList: $e.find('.quizMaster_list'),1925 results: $e.find('.qm-results-box'),1926 questionCheck: $e.find('.qm-check-answer-box'),1927 quizStartPage: $e.find('.qm-quiz-start-box'),1928 timelimit: $e.find('.qm-time-limit'),1929 toplistShowInButton: $e.find('.quizMaster_toplistShowInButton'),1930 listItems: $()1931 };1932 1933 plugin.methode.initQuiz();1934 1935 if (quizStart)1936 plugin.methode.startQuiz(true);1937 1938 });1939 },1940 1941 initQuiz: function () {1942 1943 plugin.methode.setClozeStyle();1944 plugin.methode.registerSolved();1945 1946 // Next Button Click1947 globalElements.next.click(function () {1948 1949 if (bitOptions.forcingQuestionSolve && !quizSolved[currentQuestion.index()]1950 && (bitOptions.quizSummeryHide || !bitOptions.reviewQustion)) {1951 1952 alert(QuizMasterGlobal.questionNotSolved);1953 return false;1954 }1955 1956 plugin.methode.nextQuestion();1957 });1958 1959 globalElements.back.click(function () {1960 plugin.methode.prevQuestion();1961 });1962 1963 // Check Answer Button Click1964 $e.find(globalNames.check).click(function () {1965 1966 if (bitOptions.forcingQuestionSolve && !quizSolved[currentQuestion.index()]1967 && (bitOptions.quizSummeryHide || !bitOptions.reviewQustion)) {1968 1969 alert(QuizMasterGlobal.questionNotSolved);1970 return false;1971 }1972 1973 plugin.methode.checkQuestion();1974 1975 });1976 1977 $e.find('input[name="checkSingle"]').click(function () {1978 if (bitOptions.forcingQuestionSolve && (bitOptions.quizSummeryHide || !bitOptions.reviewQustion)) {1979 for (var i = 0, c = $e.find('.quizMaster_listItem').length; i < c; i++) {1980 if (!quizSolved[i]) {1981 alert(QuizMasterGlobal.questionsNotSolved);1982 return false;1983 }1984 }1985 }1986 1987 plugin.methode.showQuizSummary();1988 });1989 1990 // enable hint1991 //plugin.methode.hintEnable()1992 1993 $e.find('input[name="skip"]').click(plugin.methode.skipQuestion);1994 1995 $e.find('input[name="quizMaster_pageLeft"]').click(function () {1996 plugin.methode.showSinglePage(currentPage - 1);1997 });1998 1999 $e.find('input[name="quizMaster_pageRight"]').click(function () {2000 plugin.methode.showSinglePage(currentPage + 1);2001 });2002 }2003 };2004 2005 /**2006 * @memberOf plugin2007 */2008 plugin.preInit = function () {2009 2010 // if hint if open when question solved hide it2011 $e.bind('changeQuestion', plugin.methode.hintHide);2012 2013 // disable hint if not activated for question2014 $e.bind('changeQuestion', function() {2015 var $hint = currentQuestion.find('.quizMaster_tipp')2016 if( ! $hint.length ) {2017 plugin.methode.hintDisable()2018 } else {2019 plugin.methode.hintEnable()2020 }2021 });2022 2023 // hint close button2024 $e.find('.qm-hint-modal .qm-hint-close').on('click', plugin.methode.hintHide)2025 2026 plugin.methode.parseBitOptions();2027 reviewBox.init();2028 2029 $e.find('input[name="startQuiz"]').click(function () {2030 plugin.methode.startQuiz();2031 return false;2032 });2033 2034 // check quiz lock2035 plugin.methode.checkQuizLock();2036 2037 $e.find('input[name="reShowQuestion"]').click(function () {2038 plugin.methode.showQustionList();2039 });2040 2041 $e.find('input[name="restartQuiz"]').click(function () {2042 plugin.methode.restartQuiz();2043 });2044 2045 $e.find('input[name="review"]').click(plugin.methode.reviewQuestion);2046 2047 $e.find('input[name="quizSummary"]').click(plugin.methode.showQuizSummary);2048 2049 $e.find('input[name="endQuizSummary"]').click(function () {2050 if (bitOptions.forcingQuestionSolve) {2051 for (var i = 0, c = $e.find('.quizMaster_listItem').length; i < c; i++) {2052 if (!quizSolved[i]) {2053 alert(QuizMasterGlobal.questionsNotSolved);2054 return false;2055 }2056 }2057 }2058 2059 if (bitOptions.formActivated && config.formPos == formPosConst.END && !formClass.checkForm())2060 return;2061 2062 plugin.methode.finishQuiz();2063 });2064 2065 $e.bind('questionSolved', plugin.methode.questionSolved);2066 2067 if (!bitOptions.maxShowQuestion) {2068 plugin.methode.initQuiz();2069 }2070 2071 // start quiz if autostart active, otherwise show quiz start page2072 if (bitOptions.autoStart) {2073 plugin.methode.startQuiz();2074 } else {2075 globalElements.quizStartPage.show();2076 }2077 2078 2079 2080 };2081 2082 plugin.preInit();2083 };2084 2085 $.fn.quizMasterFront = function (options) {2086 return this.each(function () {2087 if (undefined == $(this).data('quizMasterFront')) {2088 $(this).data('quizMasterFront', new $.quizMasterFront(this, options));2089 }2090 });2091 };2092 2093 })(jQuery); -
quizmaster/trunk/js/quizmaster.min.js
r1671450 r1717342 1 !function(i,e){function t(){if(!r){r=!0;for(var i=0;i<n.length;i++)n[i].fn.call(window,n[i].ctx);n=[]}}function o(){"complete"===document.readyState&&t()}i=i||"quizMasterReady",e=e||window;var n=[],r=!1,s=!1;e[i]=function(i,e){return r?void setTimeout(function(){i(e)},1):(n.push({fn:i,ctx:e}),void("complete"===document.readyState?setTimeout(t,1):s||(document.addEventListener?(document.addEventListener("DOMContentLoaded",t,!1),window.addEventListener("load",t,!1)):(document.attachEvent("onreadystatechange",o),window.attachEvent("onload",t)),s=!0)))}}("quizMasterReady",window),quizMasterReady(function(){for(var i=window.quizMasterInitList||[],e=0;e<i.length;e++)jQuery(i[e].id).quizMasterFront(i[e].init)}),function(i){i.quizMasterFront=function(e,t){function o(){var i=0,e=-1,t=0,o=!1;this.questionStart=function(t){-1!=e&&this.questionStop(),e=t,i=+new Date},this.questionStop=function(){-1!=e&&(a[e].time+=Math.round((new Date-i)/1e3),e=-1)},this.startQuiz=function(){o&&this.stopQuiz(),t=+new Date,o=!0},this.stopQuiz=function(){o&&(a.comp.quizTime+=Math.round((new Date-t)/1e3),o=!1)},this.init=function(){}}var n=i(e),r=t,s=this,a=new Object,u=new Object,d=0,c=null,p=[],l="",h=!1,f=1,m={randomAnswer:0,randomQuestion:0,disabledAnswerMark:0,checkBeforeStart:0,preview:0,cors:0,isAddAutomatic:0,quizSummeryHide:0,skipButton:0,reviewQustion:0,autoStart:0,forcingQuestionSolve:0,hideQuestionPositionOverview:0,formActivated:0,maxShowQuestion:0,sortCategories:0},w={isQuizStart:0,isLocked:0,loadLock:0,isPrerequisite:0,isUserStartLocked:0},Q={check:'input[name="check"]',next:'input[name="next"]',questionList:".quizMaster_questionList",skip:'input[name="skip"]',singlePageLeft:'input[name="quizMaster_pageLeft"]',singlePageRight:'input[name="quizMaster_pageRight"]'},v={back:n.find('input[name="back"]'),next:n.find(Q.next),quiz:n.find(".quizMaster_quiz"),questionList:n.find(".quizMaster_list"),results:n.find(".qm-results-box"),quizStartPage:n.find(".qm-start-box"),timelimit:n.find(".qm-time-limit"),toplistShowInButton:n.find(".quizMaster_toplistShowInButton"),listItems:i()},z={token:"",isUser:0},_={START:0,END:1},P=function(){var i=r.timelimit,e=0,t={};return t.stop=function(){i&&(window.clearInterval(e),v.timelimit.hide())},t.start=function(){if(i){var o=1e3*i,n=v.timelimit.find("span").text(s.methode.parseTime(i)),r=v.timelimit.find(".qm-progress-box");v.timelimit.show();var a=+new Date;e=window.setInterval(function(){var i=+new Date-a,e=o-i;i>=500&&n.text(s.methode.parseTime(Math.ceil(e/1e3))),r.css("width",e/o*100+"%"),0>=e&&(t.stop(),s.methode.finishQuiz(!0))},16)}},t}(),g=new function(){function e(i){var e=c.eq(i),t=e.offset().top,o=a.offset().top,n=t-o;if(0>n-4||n+32>100){var r=o-c.eq(0).offset().top-(o-d.offset().top)+e.position().top;r>w&&(r=w);var s=r/h;d.attr("style","margin-top: "+-r+"px !important"),u.css({top:s})}}function t(i){var e="",t=Q[i];t.review?e="#FFB800":t.solved&&(e="#6CA54C"),c.eq(i).css("background-color",e)}function o(i){i.preventDefault();var e=i.pageY-l;0>e&&(e=0),e>p&&(e=p);var t=h*e;d.attr("style","margin-top: "+-t+"px !important"),u.css({top:e})}function r(e){e.preventDefault(),i(document).unbind(".scrollEvent")}var a=[],u=[],d=[],c=[],p=0,l=0,h=0,f=0,w=0,Q=[];this.init=function(){a=n.find(".quizMaster_reviewQuestion"),u=a.find("div"),d=a.find("ol"),c=d.children(),u.mousedown(function(e){e.preventDefault(),e.stopPropagation(),l=e.pageY-u.offset().top+f,i(document).bind("mouseup.scrollEvent",r),i(document).bind("mousemove.scrollEvent",o)}),c.click(function(e){s.methode.showQuestion(i(this).index())}),n.bind("questionSolved",function(i){Q[i.values.index].solved=i.values.solved,t(i.values.index)}),n.bind("changeQuestion",function(i){c.removeClass("quizMaster_reviewQuestionTarget"),c.eq(i.values.index).addClass("quizMaster_reviewQuestionTarget"),e(i.values.index)}),n.bind("reviewQuestion",function(i){Q[i.values.index].review=!Q[i.values.index].review,t(i.values.index)}),a.bind("mousewheel DOMMouseScroll",function(i){i.preventDefault();var e=i.originalEvent,t=e.wheelDelta?-e.wheelDelta/120:e.detail/3,o=20*t,n=f-d.offset().top+o;n>w&&(n=w),0>n&&(n=0);var r=n/h;return d.attr("style","margin-top: "+-n+"px !important"),u.css({top:r}),!1})},this.show=function(i){if(m.reviewQustion&&a.parent().show(),n.find(".qmr-review-box .quizMaster_button2").show(),!i){d.attr("style","margin-top: 0px !important"),u.css({top:0});var e=d.outerHeight(),t=a.height();p=t-u.height(),l=0,w=e-t,h=w/p,this.reset(),e>100&&u.show(),f=u.offset().top}},this.hide=function(){a.parent().hide()},this.toggle=function(){if(m.reviewQustion){a.parent().toggle(),c.removeClass("quizMaster_reviewQuestionTarget"),n.find(".qmr-review-box .quizMaster_button2").hide(),d.attr("style","margin-top: 0px !important"),u.css({top:0});var i=d.outerHeight(),e=a.height();p=e-u.height(),l=0,w=i-e,h=w/p,i>100&&u.show(),f=u.offset().top}},this.reset=function(){for(var i=0,e=c.length;e>i;i++)Q[i]={};c.removeClass("quizMaster_reviewQuestionTarget").css("background-color","")}},q=new o,x=function(e,t,o,n){var r=!0,a=0,u=i.isArray(t.points),d={},c={singleMulti:function(){var e=n.find(".quizMaster_questionInput").attr("disabled","disabled"),o=t.diffMode;n.children().each(function(n){var d=i(this),c=d.data("pos"),p=e.eq(n).is(":checked");t.correct[c]?(p?u&&(o?a=t.points[c]:a+=t.points[c]):r=!1,t.disCorrect?r=!0:s.methode.marker(d,!0)):p?(t.disCorrect?r=!0:(s.methode.marker(d,!1),r=!1),o&&(a=t.points[c])):u&&!o&&(a+=t.points[c])})},sort_answer:function(){var e=n.children();e.each(function(e,o){var n=i(this);d[e]=n.data("pos"),e==n.data("pos")?(s.methode.marker(n,!0),u&&(a+=t.points[e])):(s.methode.marker(n,!1),r=!1)}),e.children().css({"box-shadow":"0 0",cursor:"auto"}),n.sortable("destroy"),e.sort(function(e,t){return i(e).data("pos")>i(t).data("pos")?1:-1}),n.append(e)},matrix_sort_answer:function(){var e=n.children(),c=new Array;d={0:-1},e.each(function(){var e=i(this),o=e.data("pos"),n=e.find(".quizMaster_maxtrixSortCriterion"),p=n.children();p.length&&(d[o]=p.data("pos")),p.length&&i.inArray(String(o),String(p.data("correct")).split(","))>=0?(s.methode.marker(n,!0),u&&(a+=t.points[o])):(r=!1,s.methode.marker(n,!1)),c[o]=n}),s.methode.resetMatrix(o),o.find(".quizMaster_sortStringItem").each(function(){var e=c[i(this).data("pos")];void 0!=e&&e.append(this)}).css({"box-shadow":"0 0",cursor:"auto"}),o.find(".quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion").sortable("destroy")},free_answer:function(){var e=n.children(),o=e.find(".quizMaster_questionInput").attr("disabled","disabled").val();i.inArray(i.trim(o).toLowerCase(),t.correct)>=0?s.methode.marker(e,!0):(s.methode.marker(e,!1),r=!1)}, cloze_answer:function(){n.find(".quizMaster_cloze").each(function(e,o){var n=i(this),d=n.children(),c=d.eq(0),p=d.eq(1),l=s.methode.cleanupCurlyQuotes(c.val());i.inArray(l,t.correct[e])>=0?(u&&(a+=t.points[e]),m.disabledAnswerMark||c.css("background-color","#B0DAB0")):(m.disabledAnswerMark||c.css("background-color","#FFBABA"),r=!1,p.show()),c.attr("disabled","disabled")})},assessment_answer:function(){r=!0;var e=n.find(".quizMaster_questionInput").attr("disabled","disabled"),t=0;e.filter(":checked").each(function(){t+=parseInt(i(this).val())}),a=t}};return c[e](),!u&&r&&(a=t.points),{c:r,p:a,s:d}},k=new function(){var e={isEmpty:function(e){return e=i.trim(e),!e||0===e.length}},t={TEXT:0,TEXTAREA:1,NUMBER:2,CHECKBOX:3,EMAIL:4,YES_NO:5,DATE:6,SELECT:7,RADIO:8};this.checkForm=function(){var o=!0;return n.find(".quizMaster_forms input, .quizMaster_forms textarea, .quizMaster_forms .quizMaster_formFields, .quizMaster_forms select").each(function(){var n=i(this),r=1==n.data("required"),s=n.data("type"),a=!0,u=i.trim(n.val());switch(s){case t.TEXT:case t.TEXTAREA:case t.SELECT:r&&(a=!e.isEmpty(u));break;case t.NUMBER:(r||!e.isEmpty(u))&&(a=!e.isEmpty(u)&&!isNaN(u));break;case t.EMAIL:(r||!e.isEmpty(u))&&(a=!e.isEmpty(u)&&new RegExp(/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/).test(u));break;case t.CHECKBOX:r&&(a=n.is(":checked"));break;case t.YES_NO:case t.RADIO:r&&(a=void 0!==n.find('input[type="radio"]:checked').val());break;case t.DATE:var d=0,c=0;n.find("select").each(function(){d++,c+=e.isEmpty(i(this).val())?0:1}),(r||c>0)&&(a=d==c)}a?n.siblings(".quizMaster_invalidate").hide():(o=!1,n.siblings(".quizMaster_invalidate").show())}),o},this.getFormData=function(){var e={};return n.find(".quizMaster_forms input, .quizMaster_forms textarea, .quizMaster_forms .quizMaster_formFields, .quizMaster_forms select").each(function(){var o=i(this),n=o.data("form_id"),r=o.data("type");switch(r){case t.TEXT:case t.TEXTAREA:case t.SELECT:case t.NUMBER:case t.EMAIL:e[n]=o.val();break;case t.CHECKBOX:e[n]=o.is(":checked")?1:0;break;case t.YES_NO:case t.RADIO:e[n]=o.find('input[type="radio"]:checked').val();break;case t.DATE:e[n]={day:o.find('select[name="quizMaster_field_'+n+'_day"]').val(),month:o.find('select[name="quizMaster_field_'+n+'_month"]').val(),year:o.find('select[name="quizMaster_field_'+n+'_year"]').val()}}}),e}},S=function(e){n.find(".quizMaster_questionList").each(function(){var t=i(this),o=t.data("question_id"),n=t.data("type"),r={};if("single"==n||"multiple"==n)t.find(".quizMaster_questionListItem").each(function(){r[i(this).data("pos")]=+i(this).find(".quizMaster_questionInput").is(":checked")});else if("free_answer"==n)r[0]=t.find(".quizMaster_questionInput").val();else{if("sort_answer"==n)return!0;if("matrix_sort_answer"==n)return!0;if("cloze_answer"==n){var s=0;t.find(".quizMaster_cloze input").each(function(){r[s++]=i(this).val()})}else"assessment_answer"==n&&(r[0]="",t.find(".quizMaster_questionInput:checked").each(function(){r[i(this).data("index")]=i(this).val()}))}e[o].data=r})};s.methode={parseBitOptions:function(){if(r.bo){m.randomAnswer=1&r.bo,m.randomQuestion=2&r.bo,m.disabledAnswerMark=4&r.bo,m.checkBeforeStart=8&r.bo,m.preview=16&r.bo,m.isAddAutomatic=64&r.bo,m.reviewQustion=128&r.bo,m.quizSummeryHide=256&r.bo,m.skipButton=512&r.bo,m.autoStart=1024&r.bo,m.forcingQuestionSolve=2048&r.bo,m.hideQuestionPositionOverview=4096&r.bo,m.formActivated=8192&r.bo,m.maxShowQuestion=16384&r.bo,m.sortCategories=32768&r.bo;var i=32&r.bo;i&&void 0!=jQuery.support&&void 0!=jQuery.support.cors&&0==jQuery.support.cors&&(m.cors=i)}},setClozeStyle:function(){n.find(".quizMaster_cloze input").each(function(){for(var e=i(this),t="",o=e.data("wordlen"),n=0;o>n;n++)t+="w";var r=i(document.createElement("span")).css("visibility","hidden").text(t).appendTo(i("body")),s=r.width();r.remove(),e.width(s+5)})},parseTime:function(i){var e=parseInt(i%60),t=parseInt(i/60%60),o=parseInt(i/3600%24);return e=(e>9?"":"0")+e,t=(t>9?"":"0")+t,o=(o>9?"":"0")+o,o+":"+t+":"+e},cleanupCurlyQuotes:function(e){return e=e.replace(/\u2018/,"'"),e=e.replace(/\u2019/,"'"),e=e.replace(/\u201C/,'"'),e=e.replace(/\u201D/,'"'),i.trim(e).toLowerCase()},resetMatrix:function(e){e.each(function(){var e=i(this),t=e.find(".quizMaster_sortStringList");e.find(".quizMaster_sortStringItem").each(function(){t.append(i(this))})})},marker:function(i,e){m.disabledAnswerMark||(e?i.addClass("quizMaster_answerCorrect"):i.addClass("quizMaster_answerIncorrect"))},startQuiz:function(e){if(w.loadLock)return void(w.isQuizStart=1);if(w.isQuizStart=0,w.isLocked)return v.quizStartPage.hide(),void n.find(".qm-locked").show();if(w.isPrerequisite)return v.quizStartPage.hide(),void n.find(".quizMaster_prerequisite").show();if(w.isUserStartLocked)return v.quizStartPage.hide(),void n.find(".qm-lock-box").show();if(m.maxShowQuestion&&!e)return v.quizStartPage.hide(),n.find(".quizMaster_loadQuiz").show(),void s.methode.loadQuizDataAjax(!0);if(!m.formActivated||r.formPos!=_.START||k.checkForm()){switch(s.methode.loadQuizData(),m.randomQuestion&&s.methode.random(v.questionList),m.randomAnswer&&s.methode.random(n.find(Q.questionList)),m.sortCategories&&s.methode.sortCategories(),s.methode.random(n.find(".quizMaster_sortStringList")),s.methode.random(n.find('[data-type="sort_answer"]')),n.find(".quizMaster_listItem").each(function(e,t){var o=i(this);o.find(".quizMaster_question_page span:eq(0)").text(e+1),o.find("> h5 span").text(e+1),o.find(".quizMaster_questionListItem").each(function(e,t){i(this).find("> span:not(.quizMaster_cloze)").text(e+1+". ")})}),v.next=n.find(Q.next),r.mode){case 3:n.find('input[name="checkSingle"]').show();break;case 2:n.find(Q.check).show(),!m.skipButton&&m.reviewQustion&&n.find(Q.skip).show();break;case 1:n.find('input[name="back"]').slice(1).show();case 0:v.next.show()}(m.hideQuestionPositionOverview||3==r.mode)&&n.find(".quizMaster_question_page").hide();var o=v.next.last();l=o.val(),o.val(r.lbn);var h=v.questionList.children();if(v.listItems=n.find(".quizMaster_list > li"),3==r.mode)s.methode.showSinglePage(0);else{c=h.eq(0).show();var f=c.find(Q.questionList).data("question_id");q.questionStart(f)}q.startQuiz(),n.find(".quizMaster_sortable").parents("ul").sortable({update:function(e,t){var o=i(this).parents(".quizMaster_listItem");n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:!0}})}}).disableSelection(),n.find(".quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion").sortable({connectWith:".quizMaster_maxtrixSortCriterion:not(:has(li)), .quizMaster_sortStringList",placeholder:"quizMaster_placehold",update:function(e,t){var o=i(this).parents(".quizMaster_listItem");n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:!0}})}}).disableSelection(),p=[],P.start(),d=+new Date,a={comp:{points:0,correctQuestions:0,quizTime:0}},n.find(".quizMaster_questionList").each(function(){var e=i(this).data("question_id");a[e]={time:0,solved:0}}),u={},i.each(t.catPoints,function(i,e){u[i]=0}),v.quizStartPage.hide(),n.find(".quizMaster_loadQuiz").hide(),v.quiz.show(),g.show(),3!=r.mode&&n.trigger({type:"changeQuestion",values:{item:c,index:c.index()}})}},showSingleQuestion:function(i){var e=i?Math.ceil(i/r.qpp):1;this.showSinglePage(e)},showSinglePage:function(i){if($listItem=v.questionList.children().hide(),!r.qpp)return void $listItem.show();i=i?+i:1;var e=Math.ceil(n.find(".quizMaster_list > li").length/r.qpp);if(!(i>e)){var t=n.find(Q.singlePageLeft).hide(),o=n.find(Q.singlePageRight).hide(),a=n.find('input[name="checkSingle"]').hide();i>1&&t.val(t.data("text").replace(/%d/,i-1)).show(),i==e?a.show():o.val(o.data("text").replace(/%d/,i+1)).show(),f=i;var u=r.qpp*(i-1);$listItem.slice(u,u+r.qpp).show(),s.methode.scrollTo(v.quiz)}},nextQuestion:function(){this.showQuestionObject(c.next())},prevQuestion:function(){this.showQuestionObject(c.prev())},showQuestion:function(i){var e=v.listItems.eq(i);return 3==r.mode||h?(r.qpp&&s.methode.showSingleQuestion(i+1),s.methode.scrollTo(e,1),void q.startQuiz()):void this.showQuestionObject(e)},showQuestionObject:function(i){if(!i.length&&m.forcingQuestionSolve&&m.quizSummeryHide&&m.reviewQustion)for(var e=0,t=n.find(".quizMaster_listItem").length;t>e;e++)if(!p[e])return alert(QuizMasterGlobal.questionsNotSolved),!1;if(c.hide(),c=i.show(),s.methode.scrollTo(v.quiz),n.trigger({type:"changeQuestion",values:{item:c,index:c.index()}}),c.length){var o=c.find(Q.questionList).data("question_id");q.questionStart(o)}else s.methode.showQuizSummary()},skipQuestion:function(){n.trigger({type:"skipQuestion",values:{item:c,index:c.index()}}),s.methode.nextQuestion()},reviewQuestion:function(){n.trigger({type:"reviewQuestion",values:{item:c,index:c.index()}})},showQuizSummary:function(){if(q.questionStop(),q.stopQuiz(),m.quizSummeryHide||!m.reviewQustion)return void(m.formActivated&&r.formPos==_.END?(g.hide(),v.quiz.hide(),s.methode.scrollTo(n.find(".qm-info-page").show())):s.methode.finishQuiz());var e=n.find(".qm-check-page");e.find("ol:eq(0)").empty().append(n.find(".quizMaster_reviewQuestion ol li").clone().removeClass("quizMaster_reviewQuestionTarget")).children().click(function(t){e.hide(),v.quiz.show(),g.show(!0),s.methode.showQuestion(i(this).index())});for(var t=0,o=0,a=p.length;a>o;o++)p[o]&&t++;e.find("span:eq(0)").text(t),g.hide(),v.quiz.hide(),e.show(),s.methode.scrollTo(e)},finishQuiz:function(e){q.questionStop(),q.stopQuiz(),P.stop();var t=(+new Date-d)/1e3;t=r.timelimit&&t>r.timelimit?r.timelimit:t,n.find(".quizMaster_quiz_time span").text(s.methode.parseTime(t)),e&&v.results.find(".qm-time-limit_expired").show(),s.methode.checkQuestion(v.questionList.children(),!0),n.find(".quizMaster_correct_answer").text(a.comp.correctQuestions),a.comp.result=Math.round(a.comp.points/r.globalPoints*100*100)/100,a.comp.solved=0;var o=n.find(".quizMaster_points span");o.eq(0).text(a.comp.points),o.eq(1).text(r.globalPoints),o.eq(2).text(a.comp.result+"%");var u=n.find(".qm-results-boxList > li").eq(s.methode.findResultIndex(a.comp.result)),c=k.getFormData();u.find(".quizMaster_resultForm").each(function(){var e=i(this),t=e.data("form_id"),o=c[t];"object"==typeof o&&(o=o.day+"-"+o.month+"-"+o.year),e.text(o).show()}),u.show(),s.methode.setAverageResult(a.comp.result,!1),this.setCategoryOverview(),s.methode.sendCompletedQuiz(),m.isAddAutomatic&&z.isUser&&s.methode.addToplist(),g.hide(),n.find(".qm-check-page, .qm-info-page").hide(),v.quiz.hide(),v.results.show(),s.methode.scrollTo(v.results)},setCategoryOverview:function(){a.comp.cats={},n.find(".quizMaster_catOverview li").each(function(){var e=i(this),t=e.data("category_id");if(void 0===r.catPoints[t])return e.hide(),!0;var o=Math.round(u[t]/r.catPoints[t]*100*100)/100;a.comp.cats[t]=o,e.find(".quizMaster_catPercent").text(o+"%"),e.show()})},questionSolved:function(i){p[i.values.index]=i.values.solved;var e=i.values.item.find(Q.questionList),t=r.json[e.data("question_id")];a[t.id].solved=Number(i.values.fake?a[t.id].solved:i.values.solved)},sendCompletedQuiz:function(){if(!m.preview){S(a);var i=k.getFormData();s.methode.ajax({action:"quizmaster_admin_ajax",func:"completedQuiz",data:{quizId:r.quizId,results:a,forms:i}})}},findResultIndex:function(i){for(var e=r.resultsGrade,t=-1,o=999999,n=0;n<e.length;n++){var s=e[n];i>=s&&o>i-s&&(o=i-s,t=n)}return t},showQustionList:function(){h=!h,v.toplistShowInButton.hide(),v.quiz.toggle(),n.find(".quizMaster_QuestionButton").hide(),v.questionList.children().show(),g.toggle(),n.find(".quizMaster_question_page").hide()},random:function(e){e.each(function(){var e=i(this).children().get().sort(function(){return Math.round(Math.random())-.5});i(e).appendTo(e[0].parentNode)})},sortCategories:function(){var e=i(".quizMaster_list").children().get().sort(function(e,t){var o=i(e).find(".quizMaster_questionList").data("question_id"),n=i(t).find(".quizMaster_questionList").data("question_id");return r.json[o].catId-r.json[n].catId});i(e).appendTo(e[0].parentNode)},restartQuiz:function(){v.results.hide(),v.quizStartPage.show(),v.questionList.children().hide(),v.toplistShowInButton.hide(),g.hide(),n.find(".quizMaster_questionInput, .quizMaster_cloze input").removeAttr("disabled").removeAttr("checked").css("background-color",""),n.find('.quizMaster_questionListItem input[type="text"]').val(""),n.find(".quizMaster_answerCorrect, .quizMaster_answerIncorrect").removeClass("quizMaster_answerCorrect quizMaster_answerIncorrect"),n.find(".quizMaster_listItem").data("check",!1),n.find(".quizMaster_response").hide().children().hide(),s.methode.resetMatrix(n.find(".quizMaster_listItem")),n.find(".quizMaster_sortStringItem, .quizMaster_sortable").removeAttr("style"),n.find(".quizMaster_clozeCorrect, .quizMaster_QuestionButton, .qm-results-boxList > li").hide(),n.find('.quizMaster_question_page, input[name="tip"]').show(),n.find(".quizMaster_resultForm").text("").hide(),v.results.find(".qm-time-limit_expired").hide(),v.next.last().val(l),h=!1},checkQuestion:function(e,t){e=void 0==e?c:e,e.each(function(){var e=i(this),o=e.find(Q.questionList),s=r.json[o.data("question_id")],d=s.type;if(q.questionStop(),e.data("check"))return!0;("single"==s.type||"multiple"==s.type)&&(d="singleMulti");var c=x(d,s,e,o);e.find(".quizMaster_response").show(),e.find(Q.check).hide(),e.find(Q.skip).hide(),e.find(Q.next).show(),a[s.id].points=c.p,a[s.id].correct=Number(c.c),a[s.id].data=c.s,a.comp.points+=c.p,u[s.catId]+=c.p,c.c?(e.find(".quizMaster_correct").show(),a.comp.correctQuestions+=1):e.find(".quizMaster_incorrect").show(),e.find(".quizMaster_responsePoints").text(c.p),e.data("check",!0),t||n.trigger({type:"questionSolved",values:{item:e,index:e.index(),solved:!0,fake:!0}})})},showTip:function(){var e=i(this),t=e.siblings(".quizMaster_question").find(Q.questionList).data("question_id");e.siblings(".quizMaster_tipp").toggle("fast"),a[t].tip=1,i(document).bind("mouseup.tipEvent",function(e){var t=n.find(".quizMaster_tipp"),o=n.find('input[name="tip"]');t.is(e.target)||0!=t.has(e.target).length||o.is(e.target)||(t.hide("fast"),i(document).unbind(".tipEvent"))})},ajax:function(e,t,o){o=o||"json",m.cors&&(jQuery.support.cors=!0),i.post(QuizMasterGlobal.ajaxurl,e,t,o),m.cors&&(jQuery.support.cors=!1)},checkQuizLock:function(){w.loadLock=1,s.methode.ajax({action:"quizmaster_admin_ajax",func:"quizCheckLock",data:{quizId:r.quizId}},function(i){void 0!=i.lock&&(w.isLocked=i.lock.is,i.lock.pre&&n.find('input[name="restartQuiz"]').hide()),void 0!=i.prerequisite&&(w.isPrerequisite=1,n.find(".quizMaster_prerequisite span").text(i.prerequisite)),void 0!=i.startUserLock&&(w.isUserStartLocked=i.startUserLock),w.loadLock=0,w.isQuizStart&&s.methode.startQuiz()})},loadQuizData:function(){s.methode.ajax({action:"quizmaster_admin_ajax",func:"loadQuizData",data:{quizId:r.quizId}},function(i){i.toplist&&s.methode.handleToplistData(i.toplist),void 0!=i.averageResult&&s.methode.setAverageResult(i.averageResult,!0)})},setAverageResult:function(i,e){var t=n.find(".quizMaster_resultValue:eq("+(e?0:1)+") > * ");t.eq(1).text(i+"%"),t.eq(0).css("width",240*i/100+"px")},handleToplistData:function(i){var e=n.find(".quizMaster_addToplist"),t=e.find(".quizMaster_addBox").show().children("div");if(i.canAdd)if(e.show(),e.find(".quizMaster_addToplistMessage").hide(),e.find(".quizMaster_toplistButton").show(),z.token=i.token,z.isUser=0,i.userId)t.hide(),z.isUser=1,m.isAddAutomatic&&e.hide();else{t.show();var o=t.children().eq(1);i.captcha?(o.find('input[name="quizMaster_captchaPrefix"]').val(i.captcha.code),o.find(".quizMaster_captchaImg").attr("src",i.captcha.img),o.find('input[name="quizMaster_captcha"]').val(""),o.show()):o.hide()}else e.hide()},scrollTo:function(e,t){var o=e.offset().top-100;(t||(window.pageYOffset||document.body.scrollTop)>o)&&i("html,body").animate({scrollTop:o},300)},addToplist:function(){if(!m.preview){var i=n.find(".quizMaster_addToplistMessage").text(QuizMasterGlobal.loadData).show(),e=n.find(".quizMaster_addBox").hide();s.methode.ajax({action:"quizmaster_admin_ajax",func:"addInToplist",data:{quizId:r.quizId,token:z.token,name:e.find('input[name="quizMaster_toplistName"]').val(),email:e.find('input[name="quizMaster_toplistEmail"]').val(),captcha:e.find('input[name="quizMaster_captcha"]').val(),prefix:e.find('input[name="quizMaster_captchaPrefix"]').val(),points:a.comp.points,totalPoints:r.globalPoints}},function(t){i.text(t.text),t.clear?(e.hide(),s.methode.updateToplist()):e.show(),t.captcha&&(e.find(".quizMaster_captchaImg").attr("src",t.captcha.img),e.find('input[name="quizMaster_captchaPrefix"]').val(t.captcha.code),e.find('input[name="quizMaster_captcha"]').val(""))})}},updateToplist:function(){"function"==typeof quizMaster_fetchToplist&&quizMaster_fetchToplist()},registerSolved:function(){n.find('.quizMaster_questionInput[type="text"]').change(function(e){var t=i(this),o=t.parents(".quizMaster_listItem"),r=!1;""!=t.val()&&(r=!0),n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:r}})}),n.find('.quizMaster_questionList[data-type="single"] .quizMaster_questionInput, .quizMaster_questionList[data-type="assessment_answer"] .quizMaster_questionInput').change(function(e){var t=i(this),o=t.parents(".quizMaster_listItem"),r=this.checked;n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:r}})}),n.find(".quizMaster_cloze input").change(function(){var e=i(this),t=e.parents(".quizMaster_listItem"),o=!0;t.find(".quizMaster_cloze input").each(function(){return""==i(this).val()?(o=!1,!1):void 0}),n.trigger({type:"questionSolved",values:{item:t,index:t.index(),solved:o}})}),n.find('.quizMaster_questionList[data-type="multiple"] .quizMaster_questionInput').change(function(e){var t=i(this),o=t.parents(".quizMaster_listItem"),r=0;o.find('.quizMaster_questionList[data-type="multiple"] .quizMaster_questionInput').each(function(i){this.checked&&r++}),n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:r?!0:!1}})})},loadQuizDataAjax:function(e){s.methode.ajax({action:"quizmaster_admin_ajax",func:"quizLoadData",data:{quizId:r.quizId}},function(t){r.globalPoints=t.globalPoints,r.catPoints=t.catPoints,r.json=t.json,v.quiz.remove(),n.find(".quizMaster_quizAnker").after(t.content),v={back:n.find('input[name="back"]'),next:n.find(Q.next),quiz:n.find(".quizMaster_quiz"),questionList:n.find(".quizMaster_list"),results:n.find(".qm-results-box"),quizStartPage:n.find(".qm-start-box"),timelimit:n.find(".qm-time-limit"),toplistShowInButton:n.find(".quizMaster_toplistShowInButton"),listItems:i()},s.methode.initQuiz(),e&&s.methode.startQuiz(!0)})},initQuiz:function(){s.methode.setClozeStyle(),s.methode.registerSolved(),v.next.click(function(){return!m.forcingQuestionSolve||p[c.index()]||!m.quizSummeryHide&&m.reviewQustion?void s.methode.nextQuestion():(alert(QuizMasterGlobal.questionNotSolved),!1)}),v.back.click(function(){s.methode.prevQuestion()}),n.find(Q.check).click(function(){return!m.forcingQuestionSolve||p[c.index()]||!m.quizSummeryHide&&m.reviewQustion?void s.methode.checkQuestion():(alert(QuizMasterGlobal.questionNotSolved),!1)}),n.find('input[name="checkSingle"]').click(function(){if(m.forcingQuestionSolve&&(m.quizSummeryHide||!m.reviewQustion))for(var i=0,e=n.find(".quizMaster_listItem").length;e>i;i++)if(!p[i])return alert(QuizMasterGlobal.questionsNotSolved),!1;s.methode.showQuizSummary()}),n.find('input[name="tip"]').click(s.methode.showTip),n.find('input[name="skip"]').click(s.methode.skipQuestion),n.find('input[name="quizMaster_pageLeft"]').click(function(){s.methode.showSinglePage(f-1)}),n.find('input[name="quizMaster_pageRight"]').click(function(){s.methode.showSinglePage(f+1)})}},s.preInit=function(){s.methode.parseBitOptions(),g.init(),n.find('input[name="startQuiz"]').click(function(){return s.methode.startQuiz(),!1}),m.checkBeforeStart&&!m.preview&&s.methode.checkQuizLock(),n.find('input[name="reShowQuestion"]').click(function(){s.methode.showQustionList()}),n.find('input[name="restartQuiz"]').click(function(){s.methode.restartQuiz()}),n.find('input[name="review"]').click(s.methode.reviewQuestion),n.find('input[name="quizMaster_toplistAdd"]').click(s.methode.addToplist),n.find('input[name="quizSummary"]').click(s.methode.showQuizSummary),n.find('input[name="endQuizSummary"]').click(function(){if(m.forcingQuestionSolve)for(var i=0,e=n.find(".quizMaster_listItem").length;e>i;i++)if(!p[i])return alert(QuizMasterGlobal.questionsNotSolved),!1;(!m.formActivated||r.formPos!=_.END||k.checkForm())&&s.methode.finishQuiz()}),n.find('input[name="endInfopage"]').click(function(){k.checkForm()&&s.methode.finishQuiz()}),n.find('input[name="showToplist"]').click(function(){v.quiz.hide(),v.toplistShowInButton.toggle()}),n.bind("questionSolved",s.methode.questionSolved),m.maxShowQuestion||s.methode.initQuiz(),m.autoStart&&s.methode.startQuiz()},s.preInit()},i.fn.quizMasterFront=function(e){return this.each(function(){void 0==i(this).data("quizMasterFront")&&i(this).data("quizMasterFront",new i.quizMasterFront(this,e))})}}(jQuery);1 !function(i,e){function t(){if(!r){r=!0;for(var i=0;i<n.length;i++)n[i].fn.call(window,n[i].ctx);n=[]}}function o(){"complete"===document.readyState&&t()}i=i||"quizMasterReady",e=e||window;var n=[],r=!1,s=!1;e[i]=function(i,e){return r?void setTimeout(function(){i(e)},1):(n.push({fn:i,ctx:e}),void("complete"===document.readyState?setTimeout(t,1):s||(document.addEventListener?(document.addEventListener("DOMContentLoaded",t,!1),window.addEventListener("load",t,!1)):(document.attachEvent("onreadystatechange",o),window.attachEvent("onload",t)),s=!0)))}}("quizMasterReady",window),quizMasterReady(function(){for(var i=window.quizMasterInitList||[],e=0;e<i.length;e++)jQuery(i[e].id).quizMasterFront(i[e].init)}),function(i){i.quizMasterFront=function(e,t){function o(){var i=0,e=-1,t=0,o=!1;this.questionStart=function(t){-1!=e&&this.questionStop(),e=t,i=+new Date},this.questionStop=function(){-1!=e&&(a[e].time+=Math.round((new Date-i)/1e3),e=-1)},this.startQuiz=function(){o&&this.stopQuiz(),t=+new Date,o=!0},this.stopQuiz=function(){o&&(a.comp.quizTime+=Math.round((new Date-t)/1e3),o=!1)},this.init=function(){}}var n=i(e),r=t,s=this,a=new Object,u=new Object,d=0,c=null,p=[],l="",h=!1,f=1,m={randomAnswer:0,randomQuestion:0,disabledAnswerMark:0,checkBeforeStart:0,preview:0,cors:0,isAddAutomatic:0,quizSummeryHide:0,skipButton:0,reviewQustion:0,autoStart:0,forcingQuestionSolve:0,hideQuestionPositionOverview:0,formActivated:0,maxShowQuestion:0,sortCategories:0},w={isQuizStart:0,isLocked:0,loadLock:0,isPrerequisite:0,isUserStartLocked:0},Q={check:'input[name="check"]',next:'input[name="next"]',questionList:".quizMaster_questionList",skip:'input[name="skip"]',singlePageLeft:'input[name="quizMaster_pageLeft"]',singlePageRight:'input[name="quizMaster_pageRight"]'},v={back:n.find('input[name="back"]'),next:n.find(Q.next),quiz:n.find(".quizMaster_quiz"),questionList:n.find(".quizMaster_list"),results:n.find(".qm-results-box"),quizStartPage:n.find(".qm-start-box"),timelimit:n.find(".qm-time-limit"),toplistShowInButton:n.find(".quizMaster_toplistShowInButton"),listItems:i()},z={token:"",isUser:0},_={START:0,END:1},P=function(){var i=r.timelimit,e=0,t={};return t.stop=function(){i&&(window.clearInterval(e),v.timelimit.hide())},t.start=function(){if(i){var o=1e3*i,n=v.timelimit.find("span").text(s.methode.parseTime(i)),r=v.timelimit.find(".qm-progress-box");v.timelimit.show();var a=+new Date;e=window.setInterval(function(){var i=+new Date-a,e=o-i;i>=500&&n.text(s.methode.parseTime(Math.ceil(e/1e3))),r.css("width",e/o*100+"%"),0>=e&&(t.stop(),s.methode.finishQuiz(!0))},16)}},t}(),g=new function(){function e(i){var e=c.eq(i),t=e.offset().top,o=a.offset().top,n=t-o;if(0>n-4||n+32>100){var r=o-c.eq(0).offset().top-(o-d.offset().top)+e.position().top;r>w&&(r=w);var s=r/h;d.attr("style","margin-top: "+-r+"px !important"),u.css({top:s})}}function t(i){var e="",t=Q[i];t.review?e="#FFB800":t.solved&&(e="#6CA54C"),c.eq(i).css("background-color",e)}function o(i){i.preventDefault();var e=i.pageY-l;0>e&&(e=0),e>p&&(e=p);var t=h*e;d.attr("style","margin-top: "+-t+"px !important"),u.css({top:e})}function r(e){e.preventDefault(),i(document).unbind(".scrollEvent")}var a=[],u=[],d=[],c=[],p=0,l=0,h=0,f=0,w=0,Q=[];this.init=function(){a=n.find(".quizMaster_reviewQuestion"),u=a.find("div"),d=a.find("ol"),c=d.children(),u.mousedown(function(e){e.preventDefault(),e.stopPropagation(),l=e.pageY-u.offset().top+f,i(document).bind("mouseup.scrollEvent",r),i(document).bind("mousemove.scrollEvent",o)}),c.click(function(e){s.methode.showQuestion(i(this).index())}),n.bind("questionSolved",function(i){Q[i.values.index].solved=i.values.solved,t(i.values.index)}),n.bind("changeQuestion",function(i){c.removeClass("quizMaster_reviewQuestionTarget"),c.eq(i.values.index).addClass("quizMaster_reviewQuestionTarget"),e(i.values.index)}),n.bind("reviewQuestion",function(i){Q[i.values.index].review=!Q[i.values.index].review,t(i.values.index)}),a.bind("mousewheel DOMMouseScroll",function(i){i.preventDefault();var e=i.originalEvent,t=e.wheelDelta?-e.wheelDelta/120:e.detail/3,o=20*t,n=f-d.offset().top+o;n>w&&(n=w),0>n&&(n=0);var r=n/h;return d.attr("style","margin-top: "+-n+"px !important"),u.css({top:r}),!1})},this.show=function(i){if(m.reviewQustion&&a.parent().show(),n.find(".qmr-review-box .quizMaster_button2").show(),!i){d.attr("style","margin-top: 0px !important"),u.css({top:0});var e=d.outerHeight(),t=a.height();p=t-u.height(),l=0,w=e-t,h=w/p,this.reset(),e>100&&u.show(),f=u.offset().top}},this.hide=function(){a.parent().hide()},this.toggle=function(){if(m.reviewQustion){a.parent().toggle(),c.removeClass("quizMaster_reviewQuestionTarget"),n.find(".qmr-review-box .quizMaster_button2").hide(),d.attr("style","margin-top: 0px !important"),u.css({top:0});var i=d.outerHeight(),e=a.height();p=e-u.height(),l=0,w=i-e,h=w/p,i>100&&u.show(),f=u.offset().top}},this.reset=function(){for(var i=0,e=c.length;e>i;i++)Q[i]={};c.removeClass("quizMaster_reviewQuestionTarget").css("background-color","")}},q=new o,x=function(e,t,o,n){var r=!0,a=0,u=i.isArray(t.points),d={},c={singleMulti:function(){var e=n.find(".quizMaster_questionInput").attr("disabled","disabled"),o=t.diffMode;n.children().each(function(n){var d=i(this),c=d.data("pos"),p=e.eq(n).is(":checked");t.correct[c]?(p?u&&(o?a=t.points[c]:a+=t.points[c]):r=!1,t.disCorrect?r=!0:s.methode.marker(d,!0)):p?(t.disCorrect?r=!0:(s.methode.marker(d,!1),r=!1),o&&(a=t.points[c])):u&&!o&&(a+=t.points[c])})},sort_answer:function(){var e=n.children();e.each(function(e,o){var n=i(this);d[e]=n.data("pos"),e==n.data("pos")?(s.methode.marker(n,!0),u&&(a+=t.points[e])):(s.methode.marker(n,!1),r=!1)}),e.children().css({"box-shadow":"0 0",cursor:"auto"}),n.sortable("destroy"),e.sort(function(e,t){return i(e).data("pos")>i(t).data("pos")?1:-1}),n.append(e)},matrix_sort_answer:function(){var e=n.children(),c=new Array;d={0:-1},e.each(function(){var e=i(this),o=e.data("pos"),n=e.find(".quizMaster_maxtrixSortCriterion"),p=n.children();p.length&&(d[o]=p.data("pos")),p.length&&i.inArray(String(o),String(p.data("correct")).split(","))>=0?(s.methode.marker(n,!0),u&&(a+=t.points[o])):(r=!1,s.methode.marker(n,!1)),c[o]=n}),s.methode.resetMatrix(o),o.find(".quizMaster_sortStringItem").each(function(){var e=c[i(this).data("pos")];void 0!=e&&e.append(this)}).css({"box-shadow":"0 0",cursor:"auto"}),o.find(".quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion").sortable("destroy")},free_answer:function(){var e=n.children(),o=e.find(".quizMaster_questionInput").attr("disabled","disabled").val();i.inArray(i.trim(o).toLowerCase(),t.correct)>=0?s.methode.marker(e,!0):(s.methode.marker(e,!1),r=!1)},fill_blank:function(){n.find(".quizMaster_cloze").each(function(e,o){var n=i(this),d=n.children(),c=d.eq(0),p=d.eq(1),l=s.methode.cleanupCurlyQuotes(c.val());i.inArray(l,t.correct[e])>=0?(u&&(a+=t.points[e]),m.disabledAnswerMark||c.css("background-color","#B0DAB0")):(m.disabledAnswerMark||c.css("background-color","#FFBABA"),r=!1,p.show()),c.attr("disabled","disabled")})},assessment_answer:function(){r=!0;var e=n.find(".quizMaster_questionInput").attr("disabled","disabled"),t=0;e.filter(":checked").each(function(){t+=parseInt(i(this).val())}),a=t}};return c[e](),!u&&r&&(a=t.points),{c:r,p:a,s:d}},k=new function(){var e={isEmpty:function(e){return e=i.trim(e),!e||0===e.length}},t={TEXT:0,TEXTAREA:1,NUMBER:2,CHECKBOX:3,EMAIL:4,YES_NO:5,DATE:6,SELECT:7,RADIO:8};this.checkForm=function(){var o=!0;return n.find(".quizMaster_forms input, .quizMaster_forms textarea, .quizMaster_forms .quizMaster_formFields, .quizMaster_forms select").each(function(){var n=i(this),r=1==n.data("required"),s=n.data("type"),a=!0,u=i.trim(n.val());switch(s){case t.TEXT:case t.TEXTAREA:case t.SELECT:r&&(a=!e.isEmpty(u));break;case t.NUMBER:(r||!e.isEmpty(u))&&(a=!e.isEmpty(u)&&!isNaN(u));break;case t.EMAIL:(r||!e.isEmpty(u))&&(a=!e.isEmpty(u)&&new RegExp(/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/).test(u));break;case t.CHECKBOX:r&&(a=n.is(":checked"));break;case t.YES_NO:case t.RADIO:r&&(a=void 0!==n.find('input[type="radio"]:checked').val());break;case t.DATE:var d=0,c=0;n.find("select").each(function(){d++,c+=e.isEmpty(i(this).val())?0:1}),(r||c>0)&&(a=d==c)}a?n.siblings(".quizMaster_invalidate").hide():(o=!1,n.siblings(".quizMaster_invalidate").show())}),o},this.getFormData=function(){var e={};return n.find(".quizMaster_forms input, .quizMaster_forms textarea, .quizMaster_forms .quizMaster_formFields, .quizMaster_forms select").each(function(){var o=i(this),n=o.data("form_id"),r=o.data("type");switch(r){case t.TEXT:case t.TEXTAREA:case t.SELECT:case t.NUMBER:case t.EMAIL:e[n]=o.val();break;case t.CHECKBOX:e[n]=o.is(":checked")?1:0;break;case t.YES_NO:case t.RADIO:e[n]=o.find('input[type="radio"]:checked').val();break;case t.DATE:e[n]={day:o.find('select[name="quizMaster_field_'+n+'_day"]').val(),month:o.find('select[name="quizMaster_field_'+n+'_month"]').val(),year:o.find('select[name="quizMaster_field_'+n+'_year"]').val()}}}),e}},S=function(e){n.find(".quizMaster_questionList").each(function(){var t=i(this),o=t.data("question_id"),n=t.data("type"),r={};if("single"==n||"multiple"==n)t.find(".quizMaster_questionListItem").each(function(){r[i(this).data("pos")]=+i(this).find(".quizMaster_questionInput").is(":checked")});else if("free_answer"==n)r[0]=t.find(".quizMaster_questionInput").val();else{if("sort_answer"==n)return!0;if("matrix_sort_answer"==n)return!0;if("fill_blank"==n){var s=0;t.find(".quizMaster_cloze input").each(function(){r[s++]=i(this).val()})}else"assessment_answer"==n&&(r[0]="",t.find(".quizMaster_questionInput:checked").each(function(){r[i(this).data("index")]=i(this).val()}))}e[o].data=r})};s.methode={parseBitOptions:function(){if(r.bo){m.randomAnswer=1&r.bo,m.randomQuestion=2&r.bo,m.disabledAnswerMark=4&r.bo,m.checkBeforeStart=8&r.bo,m.preview=16&r.bo,m.isAddAutomatic=64&r.bo,m.reviewQustion=128&r.bo,m.quizSummeryHide=256&r.bo,m.skipButton=512&r.bo,m.autoStart=1024&r.bo,m.forcingQuestionSolve=2048&r.bo,m.hideQuestionPositionOverview=4096&r.bo,m.formActivated=8192&r.bo,m.maxShowQuestion=16384&r.bo,m.sortCategories=32768&r.bo;var i=32&r.bo;i&&void 0!=jQuery.support&&void 0!=jQuery.support.cors&&0==jQuery.support.cors&&(m.cors=i)}},setClozeStyle:function(){n.find(".quizMaster_cloze input").each(function(){for(var e=i(this),t="",o=e.data("wordlen"),n=0;o>n;n++)t+="w";var r=i(document.createElement("span")).css("visibility","hidden").text(t).appendTo(i("body")),s=r.width();r.remove(),e.width(s+5)})},parseTime:function(i){var e=parseInt(i%60),t=parseInt(i/60%60),o=parseInt(i/3600%24);return e=(e>9?"":"0")+e,t=(t>9?"":"0")+t,o=(o>9?"":"0")+o,o+":"+t+":"+e},cleanupCurlyQuotes:function(e){return e=e.replace(/\u2018/,"'"),e=e.replace(/\u2019/,"'"),e=e.replace(/\u201C/,'"'),e=e.replace(/\u201D/,'"'),i.trim(e).toLowerCase()},resetMatrix:function(e){e.each(function(){var e=i(this),t=e.find(".quizMaster_sortStringList");e.find(".quizMaster_sortStringItem").each(function(){t.append(i(this))})})},marker:function(i,e){m.disabledAnswerMark||(e?i.addClass("quizMaster_answerCorrect"):i.addClass("quizMaster_answerIncorrect"))},startQuiz:function(e){if(w.loadLock)return void(w.isQuizStart=1);if(w.isQuizStart=0,w.isLocked)return v.quizStartPage.hide(),void n.find(".qm-locked").show();if(w.isPrerequisite)return v.quizStartPage.hide(),void n.find(".quizMaster_prerequisite").show();if(w.isUserStartLocked)return v.quizStartPage.hide(),void n.find(".qm-lock-box").show();if(m.maxShowQuestion&&!e)return v.quizStartPage.hide(),n.find(".quizMaster_loadQuiz").show(),void s.methode.loadQuizDataAjax(!0);if(!m.formActivated||r.formPos!=_.START||k.checkForm()){switch(s.methode.loadQuizData(),m.randomQuestion&&s.methode.random(v.questionList),m.randomAnswer&&s.methode.random(n.find(Q.questionList)),m.sortCategories&&s.methode.sortCategories(),s.methode.random(n.find(".quizMaster_sortStringList")),s.methode.random(n.find('[data-type="sort_answer"]')),n.find(".quizMaster_listItem").each(function(e,t){var o=i(this);o.find(".quizMaster_question_page span:eq(0)").text(e+1),o.find("> h5 span").text(e+1),o.find(".quizMaster_questionListItem").each(function(e,t){i(this).find("> span:not(.quizMaster_cloze)").text(e+1+". ")})}),v.next=n.find(Q.next),r.mode){case 3:n.find('input[name="checkSingle"]').show();break;case 2:n.find(Q.check).show(),!m.skipButton&&m.reviewQustion&&n.find(Q.skip).show();break;case 1:n.find('input[name="back"]').slice(1).show();case 0:v.next.show()}(m.hideQuestionPositionOverview||3==r.mode)&&n.find(".quizMaster_question_page").hide();var o=v.next.last();l=o.val(),o.val(r.lbn);var h=v.questionList.children();if(v.listItems=n.find(".quizMaster_list > li"),3==r.mode)s.methode.showSinglePage(0);else{c=h.eq(0).show();var f=c.find(Q.questionList).data("question_id");q.questionStart(f)}q.startQuiz(),n.find(".quizMaster_sortable").parents("ul").sortable({update:function(e,t){var o=i(this).parents(".quizMaster_listItem");n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:!0}})}}).disableSelection(),n.find(".quizMaster_sortStringList, .quizMaster_maxtrixSortCriterion").sortable({connectWith:".quizMaster_maxtrixSortCriterion:not(:has(li)), .quizMaster_sortStringList",placeholder:"quizMaster_placehold",update:function(e,t){var o=i(this).parents(".quizMaster_listItem");n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:!0}})}}).disableSelection(),p=[],P.start(),d=+new Date,a={comp:{points:0,correctQuestions:0,quizTime:0}},n.find(".quizMaster_questionList").each(function(){var e=i(this).data("question_id");a[e]={time:0,solved:0}}),u={},i.each(t.catPoints,function(i,e){u[i]=0}),v.quizStartPage.hide(),n.find(".quizMaster_loadQuiz").hide(),v.quiz.show(),g.show(),3!=r.mode&&n.trigger({type:"changeQuestion",values:{item:c,index:c.index()}})}},showSingleQuestion:function(i){var e=i?Math.ceil(i/r.qpp):1;this.showSinglePage(e)},showSinglePage:function(i){if($listItem=v.questionList.children().hide(),!r.qpp)return void $listItem.show();i=i?+i:1;var e=Math.ceil(n.find(".quizMaster_list > li").length/r.qpp);if(!(i>e)){var t=n.find(Q.singlePageLeft).hide(),o=n.find(Q.singlePageRight).hide(),a=n.find('input[name="checkSingle"]').hide();i>1&&t.val(t.data("text").replace(/%d/,i-1)).show(),i==e?a.show():o.val(o.data("text").replace(/%d/,i+1)).show(),f=i;var u=r.qpp*(i-1);$listItem.slice(u,u+r.qpp).show(),s.methode.scrollTo(v.quiz)}},nextQuestion:function(){this.showQuestionObject(c.next())},prevQuestion:function(){this.showQuestionObject(c.prev())},showQuestion:function(i){var e=v.listItems.eq(i);return 3==r.mode||h?(r.qpp&&s.methode.showSingleQuestion(i+1),s.methode.scrollTo(e,1),void q.startQuiz()):void this.showQuestionObject(e)},showQuestionObject:function(i){if(!i.length&&m.forcingQuestionSolve&&m.quizSummeryHide&&m.reviewQustion)for(var e=0,t=n.find(".quizMaster_listItem").length;t>e;e++)if(!p[e])return alert(QuizMasterGlobal.questionsNotSolved),!1;if(c.hide(),c=i.show(),s.methode.scrollTo(v.quiz),n.trigger({type:"changeQuestion",values:{item:c,index:c.index()}}),c.length){var o=c.find(Q.questionList).data("question_id");q.questionStart(o)}else s.methode.showQuizSummary()},skipQuestion:function(){n.trigger({type:"skipQuestion",values:{item:c,index:c.index()}}),s.methode.nextQuestion()},reviewQuestion:function(){n.trigger({type:"reviewQuestion",values:{item:c,index:c.index()}})},showQuizSummary:function(){if(q.questionStop(),q.stopQuiz(),m.quizSummeryHide||!m.reviewQustion)return void(m.formActivated&&r.formPos==_.END?(g.hide(),v.quiz.hide(),s.methode.scrollTo(n.find(".qm-info-page").show())):s.methode.finishQuiz());var e=n.find(".qm-check-page");e.find("ol:eq(0)").empty().append(n.find(".quizMaster_reviewQuestion ol li").clone().removeClass("quizMaster_reviewQuestionTarget")).children().click(function(t){e.hide(),v.quiz.show(),g.show(!0),s.methode.showQuestion(i(this).index())});for(var t=0,o=0,a=p.length;a>o;o++)p[o]&&t++;e.find("span:eq(0)").text(t),g.hide(),v.quiz.hide(),e.show(),s.methode.scrollTo(e)},finishQuiz:function(e){q.questionStop(),q.stopQuiz(),P.stop();var t=(+new Date-d)/1e3;t=r.timelimit&&t>r.timelimit?r.timelimit:t,n.find(".quizMaster_quiz_time span").text(s.methode.parseTime(t)),e&&v.results.find(".qm-time-limit_expired").show(),s.methode.checkQuestion(v.questionList.children(),!0),n.find(".quizMaster_correct_answer").text(a.comp.correctQuestions),a.comp.result=Math.round(a.comp.points/r.globalPoints*100*100)/100,a.comp.solved=0;var o=n.find(".quizMaster_points span");o.eq(0).text(a.comp.points),o.eq(1).text(r.globalPoints),o.eq(2).text(a.comp.result+"%");var u=n.find(".qm-results-boxList > li").eq(s.methode.findResultIndex(a.comp.result)),c=k.getFormData();u.find(".quizMaster_resultForm").each(function(){var e=i(this),t=e.data("form_id"),o=c[t];"object"==typeof o&&(o=o.day+"-"+o.month+"-"+o.year),e.text(o).show()}),u.show(),s.methode.setAverageResult(a.comp.result,!1),this.setCategoryOverview(),s.methode.sendCompletedQuiz(),m.isAddAutomatic&&z.isUser&&s.methode.addToplist(),g.hide(),n.find(".qm-check-page, .qm-info-page").hide(),v.quiz.hide(),v.results.show(),s.methode.scrollTo(v.results)},setCategoryOverview:function(){a.comp.cats={},n.find(".quizMaster_catOverview li").each(function(){var e=i(this),t=e.data("category_id");if(void 0===r.catPoints[t])return e.hide(),!0;var o=Math.round(u[t]/r.catPoints[t]*100*100)/100;a.comp.cats[t]=o,e.find(".quizMaster_catPercent").text(o+"%"),e.show()})},questionSolved:function(i){p[i.values.index]=i.values.solved;var e=i.values.item.find(Q.questionList),t=r.json[e.data("question_id")];a[t.id].solved=Number(i.values.fake?a[t.id].solved:i.values.solved)},sendCompletedQuiz:function(){if(!m.preview){S(a);var i=k.getFormData();s.methode.ajax({action:"quizmaster_admin_ajax",func:"completedQuiz",data:{quizId:r.quizId,results:a,forms:i}})}},findResultIndex:function(i){for(var e=r.resultsGrade,t=-1,o=999999,n=0;n<e.length;n++){var s=e[n];i>=s&&o>i-s&&(o=i-s,t=n)}return t},showQustionList:function(){h=!h,v.toplistShowInButton.hide(),v.quiz.toggle(),n.find(".quizMaster_QuestionButton").hide(),v.questionList.children().show(),g.toggle(),n.find(".quizMaster_question_page").hide()},random:function(e){e.each(function(){var e=i(this).children().get().sort(function(){return Math.round(Math.random())-.5});i(e).appendTo(e[0].parentNode)})},sortCategories:function(){var e=i(".quizMaster_list").children().get().sort(function(e,t){var o=i(e).find(".quizMaster_questionList").data("question_id"),n=i(t).find(".quizMaster_questionList").data("question_id");return r.json[o].catId-r.json[n].catId});i(e).appendTo(e[0].parentNode)},restartQuiz:function(){v.results.hide(),v.quizStartPage.show(),v.questionList.children().hide(),v.toplistShowInButton.hide(),g.hide(),n.find(".quizMaster_questionInput, .quizMaster_cloze input").removeAttr("disabled").removeAttr("checked").css("background-color",""),n.find('.quizMaster_questionListItem input[type="text"]').val(""),n.find(".quizMaster_answerCorrect, .quizMaster_answerIncorrect").removeClass("quizMaster_answerCorrect quizMaster_answerIncorrect"),n.find(".quizMaster_listItem").data("check",!1),n.find(".quizMaster_response").hide().children().hide(),s.methode.resetMatrix(n.find(".quizMaster_listItem")),n.find(".quizMaster_sortStringItem, .quizMaster_sortable").removeAttr("style"),n.find(".quizMaster_clozeCorrect, .quizMaster_QuestionButton, .qm-results-boxList > li").hide(),n.find('.quizMaster_question_page, input[name="tip"]').show(),n.find(".quizMaster_resultForm").text("").hide(),v.results.find(".qm-time-limit_expired").hide(),v.next.last().val(l),h=!1},checkQuestion:function(e,t){e=void 0==e?c:e,e.each(function(){var e=i(this),o=e.find(Q.questionList),s=r.json[o.data("question_id")],d=s.type;if(q.questionStop(),e.data("check"))return!0;("single"==s.type||"multiple"==s.type)&&(d="singleMulti");var c=x(d,s,e,o);e.find(".quizMaster_response").show(),e.find(Q.check).hide(),e.find(Q.skip).hide(),e.find(Q.next).show(),a[s.id].points=c.p,a[s.id].correct=Number(c.c),a[s.id].data=c.s,a.comp.points+=c.p,u[s.catId]+=c.p,c.c?(e.find(".quizMaster_correct").show(),a.comp.correctQuestions+=1):e.find(".quizMaster_incorrect").show(),e.find(".quizMaster_responsePoints").text(c.p),e.data("check",!0),t||n.trigger({type:"questionSolved",values:{item:e,index:e.index(),solved:!0,fake:!0}})})},showTip:function(){var e=i(this),t=e.siblings(".quizMaster_question").find(Q.questionList).data("question_id");e.siblings(".quizMaster_tipp").toggle("fast"),a[t].tip=1,i(document).bind("mouseup.tipEvent",function(e){var t=n.find(".quizMaster_tipp"),o=n.find('input[name="tip"]');t.is(e.target)||0!=t.has(e.target).length||o.is(e.target)||(t.hide("fast"),i(document).unbind(".tipEvent"))})},ajax:function(e,t,o){o=o||"json",m.cors&&(jQuery.support.cors=!0),i.post(QuizMasterGlobal.ajaxurl,e,t,o),m.cors&&(jQuery.support.cors=!1)},checkQuizLock:function(){w.loadLock=1,s.methode.ajax({action:"quizmaster_admin_ajax",func:"quizCheckLock",data:{quizId:r.quizId}},function(i){void 0!=i.lock&&(w.isLocked=i.lock.is,i.lock.pre&&n.find('input[name="restartQuiz"]').hide()),void 0!=i.prerequisite&&(w.isPrerequisite=1,n.find(".quizMaster_prerequisite span").text(i.prerequisite)),void 0!=i.startUserLock&&(w.isUserStartLocked=i.startUserLock),w.loadLock=0,w.isQuizStart&&s.methode.startQuiz()})},loadQuizData:function(){s.methode.ajax({action:"quizmaster_admin_ajax",func:"loadQuizData",data:{quizId:r.quizId}},function(i){i.toplist&&s.methode.handleToplistData(i.toplist),void 0!=i.averageResult&&s.methode.setAverageResult(i.averageResult,!0)})},setAverageResult:function(i,e){var t=n.find(".quizMaster_resultValue:eq("+(e?0:1)+") > * ");t.eq(1).text(i+"%"),t.eq(0).css("width",240*i/100+"px")},handleToplistData:function(i){var e=n.find(".quizMaster_addToplist"),t=e.find(".quizMaster_addBox").show().children("div");if(i.canAdd)if(e.show(),e.find(".quizMaster_addToplistMessage").hide(),e.find(".quizMaster_toplistButton").show(),z.token=i.token,z.isUser=0,i.userId)t.hide(),z.isUser=1,m.isAddAutomatic&&e.hide();else{t.show();var o=t.children().eq(1);i.captcha?(o.find('input[name="quizMaster_captchaPrefix"]').val(i.captcha.code),o.find(".quizMaster_captchaImg").attr("src",i.captcha.img),o.find('input[name="quizMaster_captcha"]').val(""),o.show()):o.hide()}else e.hide()},scrollTo:function(e,t){var o=e.offset().top-100;(t||(window.pageYOffset||document.body.scrollTop)>o)&&i("html,body").animate({scrollTop:o},300)},addToplist:function(){if(!m.preview){var i=n.find(".quizMaster_addToplistMessage").text(QuizMasterGlobal.loadData).show(),e=n.find(".quizMaster_addBox").hide();s.methode.ajax({action:"quizmaster_admin_ajax",func:"addInToplist",data:{quizId:r.quizId,token:z.token,name:e.find('input[name="quizMaster_toplistName"]').val(),email:e.find('input[name="quizMaster_toplistEmail"]').val(),captcha:e.find('input[name="quizMaster_captcha"]').val(),prefix:e.find('input[name="quizMaster_captchaPrefix"]').val(),points:a.comp.points,totalPoints:r.globalPoints}},function(t){i.text(t.text),t.clear?(e.hide(),s.methode.updateToplist()):e.show(),t.captcha&&(e.find(".quizMaster_captchaImg").attr("src",t.captcha.img),e.find('input[name="quizMaster_captchaPrefix"]').val(t.captcha.code),e.find('input[name="quizMaster_captcha"]').val(""))})}},updateToplist:function(){"function"==typeof quizMaster_fetchToplist&&quizMaster_fetchToplist()},registerSolved:function(){n.find('.quizMaster_questionInput[type="text"]').change(function(e){var t=i(this),o=t.parents(".quizMaster_listItem"),r=!1;""!=t.val()&&(r=!0),n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:r}})}),n.find('.quizMaster_questionList[data-type="single"] .quizMaster_questionInput, .quizMaster_questionList[data-type="assessment_answer"] .quizMaster_questionInput').change(function(e){var t=i(this),o=t.parents(".quizMaster_listItem"),r=this.checked;n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:r}})}),n.find(".quizMaster_cloze input").change(function(){var e=i(this),t=e.parents(".quizMaster_listItem"),o=!0;t.find(".quizMaster_cloze input").each(function(){return""==i(this).val()?(o=!1,!1):void 0}),n.trigger({type:"questionSolved",values:{item:t,index:t.index(),solved:o}})}),n.find('.quizMaster_questionList[data-type="multiple"] .quizMaster_questionInput').change(function(e){var t=i(this),o=t.parents(".quizMaster_listItem"),r=0;o.find('.quizMaster_questionList[data-type="multiple"] .quizMaster_questionInput').each(function(i){this.checked&&r++}),n.trigger({type:"questionSolved",values:{item:o,index:o.index(),solved:r?!0:!1}})})},loadQuizDataAjax:function(e){s.methode.ajax({action:"quizmaster_admin_ajax",func:"quizLoadData",data:{quizId:r.quizId}},function(t){r.globalPoints=t.globalPoints,r.catPoints=t.catPoints,r.json=t.json,v.quiz.remove(),n.find(".quizMaster_quizAnker").after(t.content),v={back:n.find('input[name="back"]'),next:n.find(Q.next),quiz:n.find(".quizMaster_quiz"),questionList:n.find(".quizMaster_list"),results:n.find(".qm-results-box"),quizStartPage:n.find(".qm-start-box"),timelimit:n.find(".qm-time-limit"),toplistShowInButton:n.find(".quizMaster_toplistShowInButton"),listItems:i()},s.methode.initQuiz(),e&&s.methode.startQuiz(!0)})},initQuiz:function(){s.methode.setClozeStyle(),s.methode.registerSolved(),v.next.click(function(){return!m.forcingQuestionSolve||p[c.index()]||!m.quizSummeryHide&&m.reviewQustion?void s.methode.nextQuestion():(alert(QuizMasterGlobal.questionNotSolved),!1)}),v.back.click(function(){s.methode.prevQuestion()}),n.find(Q.check).click(function(){return!m.forcingQuestionSolve||p[c.index()]||!m.quizSummeryHide&&m.reviewQustion?void s.methode.checkQuestion():(alert(QuizMasterGlobal.questionNotSolved),!1)}),n.find('input[name="checkSingle"]').click(function(){if(m.forcingQuestionSolve&&(m.quizSummeryHide||!m.reviewQustion))for(var i=0,e=n.find(".quizMaster_listItem").length;e>i;i++)if(!p[i])return alert(QuizMasterGlobal.questionsNotSolved),!1;s.methode.showQuizSummary()}),n.find('input[name="tip"]').click(s.methode.showTip),n.find('input[name="skip"]').click(s.methode.skipQuestion),n.find('input[name="quizMaster_pageLeft"]').click(function(){s.methode.showSinglePage(f-1)}),n.find('input[name="quizMaster_pageRight"]').click(function(){s.methode.showSinglePage(f+1)})}},s.preInit=function(){s.methode.parseBitOptions(),g.init(),n.find('input[name="startQuiz"]').click(function(){return s.methode.startQuiz(),!1}),m.checkBeforeStart&&!m.preview&&s.methode.checkQuizLock(),n.find('input[name="reShowQuestion"]').click(function(){s.methode.showQustionList()}),n.find('input[name="restartQuiz"]').click(function(){s.methode.restartQuiz()}),n.find('input[name="review"]').click(s.methode.reviewQuestion),n.find('input[name="quizMaster_toplistAdd"]').click(s.methode.addToplist),n.find('input[name="quizSummary"]').click(s.methode.showQuizSummary),n.find('input[name="endQuizSummary"]').click(function(){if(m.forcingQuestionSolve)for(var i=0,e=n.find(".quizMaster_listItem").length;e>i;i++)if(!p[i])return alert(QuizMasterGlobal.questionsNotSolved),!1;(!m.formActivated||r.formPos!=_.END||k.checkForm())&&s.methode.finishQuiz()}),n.find('input[name="endInfopage"]').click(function(){k.checkForm()&&s.methode.finishQuiz()}),n.find('input[name="showToplist"]').click(function(){v.quiz.hide(),v.toplistShowInButton.toggle()}),n.bind("questionSolved",s.methode.questionSolved),m.maxShowQuestion||s.methode.initQuiz(),m.autoStart&&s.methode.startQuiz()},s.preInit()},i.fn.quizMasterFront=function(e){return this.each(function(){void 0==i(this).data("quizMasterFront")&&i(this).data("quizMasterFront",new i.quizMasterFront(this,e))})}}(jQuery); -
quizmaster/trunk/lib/controller/QuizMaster_Controller_Admin.php
r1713430 r1717342 40 40 wp_enqueue_style('jquery-ui', 41 41 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css'); 42 43 wp_enqueue_style( 'quizmaster-admin-css', plugins_url('css/quizmaster-admin.css', QUIZMASTER_FILE), array(), QUIZMASTER_VERSION ); 42 44 43 45 $this->localizeScript(); … … 100 102 101 103 foreach ($pages as $p) { 102 add_action('admin_print_scripts-' . $p, array($this, 'enqueueScript')); 104 103 105 add_action('load-' . $p, array($this, 'routeLoadAction')); 104 106 } 107 108 add_action('admin_print_scripts', array($this, 'enqueueScript')); 105 109 } 106 110 -
quizmaster/trunk/lib/controller/QuizMaster_Controller_Ajax.php
r1671450 r1717342 57 57 'quizCheckLock' => array('QuizMaster_Controller_Quiz', 'ajaxQuizCheckLock'), 58 58 'registerExtensionScriptCallbacks' => array('QuizMaster_Helper_Extension', 'ajaxRegisterExtensionScriptCallbacks'), 59 59 'checkAnswer' => array('QuizMaster_Helper_CheckAnswers', 'ajaxCheckAnswer'), 60 60 ); 61 61 … … 67 67 'quizCheckLock' => array('QuizMaster_Controller_Quiz', 'ajaxQuizCheckLock'), 68 68 'registerExtensionScriptCallbacks' => array('QuizMaster_Helper_Extension', 'ajaxRegisterExtensionScriptCallbacks'), 69 'checkAnswer' => array('QuizMaster_Helper_CheckAnswers', 'ajaxCheckAnswer'), 69 70 ); 70 71 } -
quizmaster/trunk/lib/helper/QuizMaster_Helper_DbUpgrade.php
r1663661 r1717342 476 476 477 477 } 478 } elseif ($row['answer_type'] == ' cloze_answer') {478 } elseif ($row['answer_type'] == 'fill_blank') { 479 479 $x = new QuizMaster_Model_AnswerTypes(); 480 480 -
quizmaster/trunk/lib/helper/QuizMaster_Helper_Upgrade.php
r1663661 r1717342 58 58 SELECT id, answer_data 59 59 FROM {$wpdb->prefix}quizmaster_question 60 WHERE answer_type = ' cloze_answer' AND answer_points_activated = 1", ARRAY_A);60 WHERE answer_type = 'fill_blank' AND answer_points_activated = 1", ARRAY_A); 61 61 62 62 foreach ($results as $row) { … … 103 103 104 104 foreach ($into as $c) { 105 if ($row['answer_type'] == ' cloze_answer') {105 if ($row['answer_type'] == 'fill_blank') { 106 106 preg_match_all('#\{(.*?)(?:\|(\d+))?(?:[\s]+)?\}#im', $c->getAnswer(), $matches); 107 107 -
quizmaster/trunk/lib/model/QuizMaster_Model_Question.php
r1671450 r1717342 165 165 * @return QuizMaster_Model_AnswerTypes[]|null|string 166 166 */ 167 public function getAnswerData($serialize = false) { 168 if ($this->_answerData === null) { 169 return null; 170 } 171 172 if (is_array($this->_answerData) || $this->_answerData instanceof QuizMaster_Model_AnswerTypes) { 173 if ($serialize) { 174 return @serialize($this->_answerData); 175 } 176 } else { 177 if (!$serialize) { 178 if (QuizMaster_Helper_Until::saveUnserialize($this->_answerData, $into) === false) { 179 return null; 180 } 181 182 $this->_answerData = $into; 183 } 184 } 185 167 public function getAnswerData() { 186 168 return $this->_answerData; 187 169 } … … 246 228 247 229 public function loadAnswerDataCloze( $fields ) { 248 $fieldAnswerData['answer'] = $fields['qmqe_ cloze_answers'];230 $fieldAnswerData['answer'] = $fields['qmqe_fill_blanks']; 249 231 $answerData[] = new QuizMaster_Model_AnswerTypes( $fieldAnswerData ); 250 return $answerData;251 }252 253 public function loadAnswerDataMatrixSortingAnswer( $fields ) {254 $fieldAnswerData = $fields['qmqe_matrix_sorting_answers'];255 $answerData = array();256 foreach( $fieldAnswerData as $fieldAnswer ) {257 $fieldAnswer['answer'] = $fieldAnswer['qmqe_matrix_sorting_criterion'];258 $fieldAnswer['sort_string'] = $fieldAnswer['qmqe_matrix_sorting_sort_string'];259 $answerData[] = new QuizMaster_Model_AnswerTypes( $fieldAnswer );260 }261 232 return $answerData; 262 233 } … … 317 288 $answerData = $this->loadAnswerDataSortingChoice( $fields ); 318 289 break; 319 case ' cloze_answer':290 case 'fill_blank': 320 291 $answerData = $this->loadAnswerDataCloze( $fields ); 321 292 break; … … 408 379 case 'sort_answer': 409 380 return new QuizMaster_Answer_Sorting; 410 case ' cloze_answer':381 case 'fill_blank': 411 382 return new QuizMaster_Answer_Fill_Blank; 412 383 } -
quizmaster/trunk/lib/model/QuizMaster_Model_QuestionMapper.php
r1663661 r1717342 43 43 'free_answer' => 'QuizMaster_Question_Free', 44 44 'sort_answer' => 'QuizMaster_Question_Sorting', 45 ' cloze_answer' => 'QuizMaster_Question_FillBlank',45 'fill_blank' => 'QuizMaster_Question_FillBlank', 46 46 ); 47 47 -
quizmaster/trunk/lib/model/QuizMaster_Model_Quiz.php
r1712912 r1717342 58 58 protected $_staticHeaderMessage; 59 59 protected $_showSkipButton; 60 protected $_showBackButton; 60 61 61 62 public function setId($_id) … … 675 676 } 676 677 678 public function setShowBackButton( $_showBackButton ) { 679 $this->_showBackButton = $_showBackButton; 680 } 681 682 public function isShowBackButton() { 683 return $this->_showBackButton; 684 } 685 677 686 public function fieldGroupKey() { 678 687 return 'quiz'; -
quizmaster/trunk/lib/model/answer_types/QuizMaster_Answer_Sorting.php
r1671450 r1717342 3 3 4 4 class QuizMaster_Answer_Sorting extends QuizMaster_Model_Answer { 5 6 protected $_answer_id; 5 7 6 8 public function getKey() { … … 19 21 foreach( $fieldAnswerData as $fieldAnswer ) { 20 22 $answer['answer'] = $fieldAnswer['qmqe_sorting_choice_answer']; 23 $answer['answer_id'] = $fieldAnswer['qmqe_sorting_choice_answer_id']; 21 24 $answerData[] = new self( $answer ); 22 25 } 26 23 27 return $answerData; 24 28 25 29 } 26 30 31 public function getAnswerId() { 32 return $this->_answer_id; 33 } 34 35 public function setAnswerId( $_answer_id ) { 36 $this->_answer_id = $_answer_id; 37 } 38 27 39 } -
quizmaster/trunk/lib/view/QuizMaster_View_FrontQuiz.php
r1712912 r1717342 77 77 } 78 78 79 public function createOption($preview) 80 { 81 $bo = 0; 82 83 $bo |= ((int)$this->quiz->isAnswerRandom()) << 0; 84 $bo |= ((int)$this->quiz->isQuestionRandom()) << 1; 85 $bo |= ((int)$this->quiz->isDisabledAnswerMark()) << 2; 86 $bo |= ((int)($this->quiz->isQuizRunOnce() || $this->quiz->isStartOnlyRegisteredUser() )) << 3; 87 $bo |= ((int)$preview) << 4; 88 $bo |= ((int)get_option('quizMaster_corsActivated')) << 5; 89 $bo |= ((int)$this->quiz->isShowReviewQuestion()) << 7; 90 $bo |= ((int)$this->quiz->isQuizSummaryHide()) << 8; 91 $bo |= ((int)$this->quiz->isShowSkipButton()) << 9; 92 $bo |= ((int)$this->quiz->isAutostart()) << 10; 93 $bo |= ((int)$this->quiz->isForcingQuestionSolve()) << 11; 94 $bo |= ((int)$this->quiz->isHideQuestionPositionOverview()) << 12; 95 $bo |= ((int)$this->quiz->isFormActivated()) << 13; 96 $bo |= ((int)$this->quiz->isShowMaxQuestion()) << 14; 97 $bo |= ((int)$this->quiz->isSortCategories()) << 15; 98 99 return $bo; 100 } 101 102 public function showMaxQuestion() { 103 104 $this->loadButtonNames(); 105 $question_count = count($this->question); 106 $result = $this->quiz->getResultText(); 107 108 ?> 109 <div class="qm-quiz-content" id="quizMaster_<?php echo $this->quiz->getId(); ?>"> 110 <?php 111 112 if (!$this->quiz->isTitleHidden()) { 113 echo '<h2>', $this->quiz->getName(), '</h2>'; 114 } 115 116 $this->showTimeLimitBox(); 117 $this->showCheckPageBox($question_count); 118 $this->showInfoPageBox(); 119 $this->showStartQuizBox(); 120 $this->showLockBox(); 121 $this->showLoadQuizBox(); 122 $this->showStartOnlyRegisteredUserBox(); 123 $this->showResultBox($result, $question_count); 124 $this->showReviewBox($question_count); 125 $this->showQuizAnker(); 126 ?> 127 </div> 128 <?php 129 130 $bo = $this->createOption(false); 131 132 ?> 133 <script type="text/javascript"> 134 jQuery(document).ready(function ($) { 135 $('#quizMaster_<?php echo $this->quiz->getId(); ?>').quizMasterFront({ 136 quizId: <?php echo (int)$this->quiz->getId(); ?>, 137 mode: <?php echo (int)$this->quiz->getQuizModus(); ?>, 138 timelimit: <?php echo (int)$this->quiz->getTimeLimit(); ?>, 139 bo: <?php echo $bo ?>, 140 qpp: <?php echo $this->quiz->getQuestionsPerPage(); ?>, 141 formPos: <?php echo (int)$this->quiz->getFormShowPosition(); ?>, 142 lbn: <?php echo json_encode(($this->quiz->isShowReviewQuestion() && !$this->quiz->isQuizSummaryHide()) ? $this->_buttonNames['quiz_summary'] : $this->_buttonNames['finish_quiz']); ?> 143 }); 144 }); 145 </script> 146 <?php 79 public function createOption() { 80 $options = array( 81 'isAnswerRandom' => (int)$this->quiz->isAnswerRandom(), 82 'isQuestionRandom' => (int)$this->quiz->isQuestionRandom(), 83 'isDisabledAnswerMark' => (int)$this->quiz->isDisabledAnswerMark(), 84 'isQuizRunOnce' => (int)$this->quiz->isQuizRunOnce(), 85 'isStartOnlyRegisteredUser' => $this->quiz->isStartOnlyRegisteredUser(), 86 'isCorsActivated' => (int)get_option('quizMaster_corsActivated'), 87 'isShowReviewQuestion' => (int)$this->quiz->isShowReviewQuestion(), 88 'isQuizSummaryHide' => (int)$this->quiz->isQuizSummaryHide(), 89 'isShowSkipButton' => (int)$this->quiz->isShowSkipButton(), 90 'isAutostart' => (int)$this->quiz->isAutostart(), 91 'isForcingQuestionSolve' => (int)$this->quiz->isForcingQuestionSolve(), 92 'isHideQuestionPositionOverview' => (int)$this->quiz->isHideQuestionPositionOverview(), 93 'isFormActivated' => (int)$this->quiz->isFormActivated(), 94 'isShowMaxQuestion' => (int)$this->quiz->isShowMaxQuestion(), 95 'isSortCategories' => (int)$this->quiz->isSortCategories(), 96 'isShowBackButton' => (int)$this->quiz->isShowBackButton(), 97 ); 98 99 print json_encode( $options ); 147 100 } 148 101 … … 343 296 344 297 // cloze 345 if ($question->getAnswerType() === ' cloze_answer') {298 if ($question->getAnswerType() === 'fill_blank') { 346 299 $clozeData = $question->fetchCloze($v->getAnswer()); 347 300 $json[$question->getId()]['correct'] = $clozeData['correct']; -
quizmaster/trunk/quizmaster.php
r1713430 r1717342 4 4 Plugin URI: http://wordpress.org/extend/plugins/quizmaster 5 5 Description: Best free quiz plugin for WordPress. 6 Version: 0. 6.56 Version: 0.7.0 7 7 Author: GoldHat Group 8 8 Author URI: https://goldhat.ca … … 12 12 */ 13 13 14 define('QUIZMASTER_VERSION', '0. 6.5');14 define('QUIZMASTER_VERSION', '0.7.0'); 15 15 define('QUIZMASTER_DEV', true); 16 16 define('QUIZMASTER_PATH', dirname(__FILE__)); … … 50 50 $enableCopyPosts = array( 'quizmaster_quiz', 'quizmaster_question' ); 51 51 new QuizMaster_Helper_CopyPost( $enableCopyPosts ); 52 53 add_filter( quizmaster_get_fields_prefix() . '/load_value/name=qmqe_sorting_choice_answer_id', array( $this, 'makeSortingChoiceAnswerId' ), 10, 3 ); 54 } 55 56 public function makeSortingChoiceAnswerId( $value ) { 57 58 if( $value == '' || strlen( $value ) <= 6 ) { 59 return quizmasterGenerateRandomString( 12 ); 60 } 61 62 return $value; 63 52 64 } 53 65 -
quizmaster/trunk/readme.txt
r1713430 r1717342 5 5 Requires at least: 4.0 6 6 Tested up to: 4.3 7 Stable tag: 0. 6.57 Stable tag: 0.7.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 10 11 The bestquiz system plugin for WordPress.11 The most extendable, feature-rich quiz system plugin for WordPress. 12 12 13 13 == Description == 14 14 15 The best quiz system plugin for WordPress. Highly extendable and developer-friendly. Requires FieldMaster (Free) or ACF Pro. Forked in 2016 from WP Pro Quiz, a free quiz plugin developed by Julius Fischer (http://www.it-gecko.de/).15 The most extendable, feature-rich quiz system plugin for WordPress. Developer-friendly, customizable and extension based with numerous extensions available to extend the feature set. Requires FieldMaster (Free) or ACF Pro. Forked in 2016 from WP Pro Quiz, a free quiz plugin developed by Julius Fischer (http://www.it-gecko.de/). 16 16 17 17 = Features = … … 43 43 == Installation == 44 44 45 1. Search for "quizmaster" from your Add New Plugin page in the WP Admin. 46 2. Click to install, then activate. 47 48 OR 49 45 50 1. Upload the "quizmaster" folder to the /wp-content/plugins/ directory 46 51 2. Activate the plugin through the 'Plugins' menu in WordPress 47 52 48 53 == Changelog == 54 55 = 0.7.0 = 56 57 Contains a rebuilt front-end JS file with the newly developed QuizMaster jQuery plugin. This file features global event hooks that extension developers can leverage to adapt the quiz flow at run-time. 49 58 50 59 = 0.6.5 = … … 61 70 We originally included ACF Pro because of it's great UX fields and because it allows us to offer great support for extending the plugin. Developers are able to easily add fields into the UX and there is great consistency in the interface by using ACF. However we were not able to strike a deal with the ACF developer to enable us to embed ACF Pro into the plugin, and QuizMaster already relied on certain pro features including repeater field and options pages. Thus we invented the new fields plugin FieldMaster which is a fork of ACF Pro, and available for free. We recommend using FieldMaster unless you already have ACF Pro installed, because we are bundling additional ACF integration plugins that provide an even better UX, such as collapsing repeater fields. 62 71 72 = How can I customize the front-end UX and style templates? = 73 74 QuizMaster has a sophisticated templating system similar to that found in most advanced WP plugins such as WooCommerce. Developers may override templates at the theme level simply by creating a directory named "quizmaster" and copying the original template from quizmaster using the same name and/or subfolder. These overrides give you the ability to edit template output. QuizMaster has over 20 of these templates and the vast majority of output comes from them (not from the view layer as in WP Pro Quiz). For other styling changes such as color, fonts etc. use your child theme CSS file or integrated theme style editor. We've eliminated the WP Pro Quiz usage of "!important" declarations so that the styles can be overwritten. Most QuizMaster CSS class names are prefixed with "qm-" but some inconsistency remains at this point in the naming of classes. 75 63 76 == Screenshots == 64 77 65 1. Test 78 1. Quiz List 79 2. Add New Quiz 80 3. Email List 81 4. Email Editor 82 5. Categories & Tags 83 6. Main Menu 84 7. Quiz Category Editor 85 8. Questions List 86 9. Quiz Scores List 87 10. Add New Question 88 11. Student Quiz Scores List 66 89 67 90 == Credits == -
quizmaster/trunk/templates/question/fill_blank.php
r1671450 r1717342 15 15 </div> 16 16 17 <ul class="q uizMaster_questionList" data-question_id="<?php echo $question->getId(); ?>"17 <ul class="qm-question-list" data-question_id="<?php echo $question->getId(); ?>" 18 18 data-type="<?php echo $question->getAnswerType(); ?>"> 19 19 20 <li class="q uizMaster_questionListItem" data-pos="0">20 <li class="qm-question-list-item" data-pos="0"> 21 21 22 22 <?php -
quizmaster/trunk/templates/question/free.php
r1671450 r1717342 17 17 </div> 18 18 19 <ul class="q uizMaster_questionList" data-question_id="<?php echo $question->getId(); ?>"19 <ul class="qm-question-list" data-question_id="<?php echo $question->getId(); ?>" 20 20 data-type="<?php echo $question->getAnswerType(); ?>"> 21 21 … … 30 30 ?> 31 31 32 <li class="q uizMaster_questionListItem" data-pos="<?php echo $answer_index; ?>">32 <li class="qm-question-list-item" data-pos="<?php echo $answer_index; ?>"> 33 33 <label> 34 34 <input class="quizMaster_questionInput" type="text" -
quizmaster/trunk/templates/question/multiple.php
r1671450 r1717342 15 15 </div> 16 16 17 <ul class="quizMaster_questionList" data-question_id="<?php echo $question->getId(); ?>"18 data-type="<?php echo $question->getAnswerType(); ?>">17 <ul class="qm-question-list" data-question_id="<?php echo $question->getId(); ?>" 18 data-type="<?php echo $question->getAnswerType(); ?>"> 19 19 20 <?php21 $answer_index = 0;20 <?php 21 $answer_index = 0; 22 22 23 foreach ($question->getAnswerData() as $v) :24 $answer_text = $v->isHtml() ? $v->getAnswer() : esc_html($v->getAnswer());25 ?>23 foreach ($question->getAnswerData() as $v) : 24 $answer_text = $v->isHtml() ? $v->getAnswer() : esc_html($v->getAnswer()); 25 ?> 26 26 27 <li class="quizMaster_questionListItem" data-pos="<?php echo $answer_index; ?>">28 <span></span>29 <label>30 <input class="quizMaster_questionInput"31 type="checkbox"32 name="question_<?php echo $question->getId(); ?>"33 value="<?php echo($answer_index + 1); ?>"> <?php echo $answer_text; ?>34 </label>35 </li>27 <li class="qm-question-list-item" data-pos="<?php echo $answer_index; ?>"> 28 <span></span> 29 <label> 30 <input class="quizMaster_questionInput" 31 type="checkbox" 32 name="question_<?php echo $question->getId(); ?>" 33 value="<?php echo($answer_index + 1); ?>"> <?php echo $answer_text; ?> 34 </label> 35 </li> 36 36 37 <?php $answer_index++; endforeach; ?>37 <?php $answer_index++; endforeach; ?> 38 38 39 39 </ul> 40 40 41 </div>42 41 </div> -
quizmaster/trunk/templates/question/single.php
r1671450 r1717342 19 19 </div> 20 20 21 <ul class="q uizMaster_questionList" data-question_id="<?php echo $question->getId(); ?>"21 <ul class="qm-question-list" data-question_id="<?php echo $question->getId(); ?>" 22 22 data-type="<?php echo $question->getAnswerType(); ?>"> 23 23 … … 30 30 31 31 32 <li class="q uizMaster_questionListItem" data-pos="<?php echo $answer_index; ?>">32 <li class="qm-question-list-item" data-pos="<?php echo $answer_index; ?>"> 33 33 <span></span> 34 34 <label> -
quizmaster/trunk/templates/question/sorting.php
r1671450 r1717342 9 9 ?> 10 10 11 <div class="q uizMaster_question">11 <div class="qm-question"> 12 12 13 13 <div class="qm-question-text"> … … 15 15 </div> 16 16 17 <ul class="q uizMaster_questionList" data-question_id="<?php echo $question->getId(); ?>"17 <ul class="qm-question-list qm-sortable" data-question_id="<?php echo $question->getId(); ?>" 18 18 data-type="<?php echo $question->getAnswerType(); ?>"> 19 19 20 20 <?php 21 21 $answer_index = 0; 22 foreach ($question->getAnswerData() as $v) : 23 $answer_text = $v->isHtml() ? $v->getAnswer() : esc_html($v->getAnswer()); 22 $sortingAnswers = $question->getAnswerData(); 23 shuffle( $sortingAnswers ); 24 foreach ( $sortingAnswers as $v ) : 25 $answer_text = $v->getAnswer(); 24 26 ?> 25 27 26 <li class="q uizMaster_questionListItem" data-pos="<?php echo $answer_index; ?>">27 <div class="quizMaster_sortable"> 28 <?php echo $answer_text; ?>29 </div> 28 <li class="qm-question-list-item" id="<?php print $v->getAnswerId(); ?>" data-pos="<?php echo $answer_index; ?>"> 29 30 <?php echo $answer_text; ?> 31 30 32 </li> 31 33 -
quizmaster/trunk/templates/quiz/body.php
r1712912 r1717342 32 32 ?> 33 33 34 35 34 </div> 36 35 -
quizmaster/trunk/templates/quiz/button-back.php
r1671450 r1717342 1 <input type="button" name="back" value="<?php _e('Back', 'quizmaster'); ?>" 2 class="qm-button quizMaster_QuestionButton" 3 style="float: left !important; margin-right: 10px !important; display: none;"> 1 <input type="button" value="<?php _e('Back', 'quizmaster'); ?>" class="qm-back-button qm-button"> -
quizmaster/trunk/templates/quiz/button-hint.php
r1671450 r1717342 1 <input type="button" value="<?php _e('Hint', 'quizmaster'); ?>" 2 class="qm-hint-trigger qm-button quizMaster_QuestionButton quizMaster_TipButton" 3 style="float: left !important; display: inline-block; margin-right: 10px !important;"> 1 <input type="button" value="<?php _e('Hint', 'quizmaster'); ?>" class="qm-hint-trigger qm-button"> -
quizmaster/trunk/templates/quiz/button-next.php
r1671450 r1717342 1 <input type="button" class="qm-button-next qm-button" value="<?php _e('Next', 'quizmaster'); ?>" 2 class="qm-button quizMaster_QuestionButton" style="float: right; display: none;"> 1 <input type="button" class="qm-button-next qm-button" value="<?php _e('Next', 'quizmaster'); ?>"> -
quizmaster/trunk/templates/quiz/button-skip.php
r1671450 r1717342 1 <input type="button" name="skip" value="<?php _e('Skip', 'quizmaster'); ?>" 2 class="quizmaster-skip-button qm-button quizMaster_QuestionButton"> 1 <input type="button" name="skip" value="<?php _e('Skip', 'quizmaster'); ?>" class="qm-skip-button qm-button"> -
quizmaster/trunk/templates/quiz/check.php
r1671450 r1717342 4 4 5 5 <p> 6 <?php printf(__('%s of %s questions completed', 'quizmaster'), '<span>0</span>', $questionCount); ?>6 <?php printf(__('%s of %s questions completed', 'quizmaster'), '<span>0</span>', $questionCount); ?> 7 7 </p> 8 8 9 <p><?php _e('Questions', 'quizmaster'); ?>:</p>10 11 <div class="quizMaster_box">12 <ol>13 <?php for ($xy = 1; $xy <= $questionCount; $xy++) { ?>14 <li><?php echo $xy; ?></li>15 <?php } ?>16 </ol>17 </div>18 19 <?php20 if ($view->quiz->isFormActivated() && $view->quiz->getFormShowPosition() == QuizMaster_Model_Quiz::QUIZ_FORM_POSITION_END21 && ($view->quiz->isShowReviewQuestion() && !$view->quiz->isQuizSummaryHide())22 ) {23 ?>24 25 <h4 class="quizMaster_header"><?php _e('Information', 'quizmaster'); ?></h4>26 27 <?php } ?>28 29 <input type="button" name="endQuizSummary" value="<?php echo $view->_buttonNames['finish_quiz']; ?>" class="qm-button">30 31 9 </div> -
quizmaster/trunk/templates/quiz/footer.php
r1712912 r1717342 9 9 } 10 10 11 ?> 11 print quizmaster_get_template( 'quiz/button-back.php' ); 12 13 ?> 12 14 13 15 </div> … … 16 18 <?php print quizmaster_get_template( 'quiz/button-check.php' ); ?> 17 19 <?php print quizmaster_get_template( 'quiz/button-next.php' ); ?> 20 <?php print quizmaster_get_template( 'quiz/button-finish.php' ); ?> 18 21 19 22 </div> -
quizmaster/trunk/templates/quiz/loader.php
r1671450 r1717342 34 34 </div> 35 35 36 <?php 36 <script type="text/javascript"> 37 jQuery(document).ready(function ($) { 37 38 38 $bo = $view->createOption($view->preview); 39 $('#quizMaster_<?php echo $view->quiz->getId(); ?>').quizmaster({ 39 40 40 ?> 41 quizId: <?php echo (int)$view->quiz->getId(); ?>, 42 mode: <?php echo (int)$view->quiz->getQuizModus(); ?>, 43 globalPoints: <?php echo (int)$quizData['globalPoints']; ?>, 44 timeLimit: <?php echo (int)$view->quiz->getTimeLimit(); ?>, 45 options: <?php echo $view->createOption(); ?>, 46 qpp: <?php echo $view->quiz->getQuestionsPerPage(); ?>, 47 catPoints: <?php echo json_encode($quizData['catPoints']); ?>, 48 formPos: <?php echo (int)$view->quiz->getFormShowPosition(); ?>, 49 showReviewBox: 0, 50 lbn: <?php echo json_encode(($view->quiz->isShowReviewQuestion() && !$view->quiz->isQuizSummaryHide()) ? $view->_buttonNames['quiz_summary'] : $view->_buttonNames['finish_quiz']); ?>, 51 json: <?php echo json_encode($quizData['json']); ?> 41 52 42 <script type="text/javascript"> 53 }); 43 54 44 window.quizmasterQuizRegistry = window.quizmasterQuizRegistry || []; 45 46 window.quizmasterQuizRegistry.push({ 47 id: '#quizMaster_<?php echo $view->quiz->getId(); ?>', 48 init: { 49 quizId: <?php echo (int)$view->quiz->getId(); ?>, 50 mode: <?php echo (int)$view->quiz->getQuizModus(); ?>, 51 globalPoints: <?php echo (int)$quizData['globalPoints']; ?>, 52 timelimit: <?php echo (int)$view->quiz->getTimeLimit(); ?>, 53 bo: <?php echo $bo ?>, 54 qpp: <?php echo $view->quiz->getQuestionsPerPage(); ?>, 55 catPoints: <?php echo json_encode($quizData['catPoints']); ?>, 56 formPos: <?php echo (int)$view->quiz->getFormShowPosition(); ?>, 57 lbn: <?php echo json_encode(($view->quiz->isShowReviewQuestion() && !$view->quiz->isQuizSummaryHide()) ? $view->_buttonNames['quiz_summary'] : $view->_buttonNames['finish_quiz']); ?>, 58 json: <?php echo json_encode($quizData['json']); ?> 59 } 60 }); 61 55 }); 62 56 </script> -
quizmaster/trunk/templates/quiz/question-buttons.php
r1671450 r1717342 10 10 <?php 11 11 12 print quizmaster_get_template( 'quiz/button-back.php' ); 13 14 if ($question->isTipEnabled()) { 15 // @TODO make this question setting work outside question 16 print quizmaster_get_template( 'quiz/button-hint.php' ); 17 } 12 if ($question->isTipEnabled()) { 13 // @TODO make this question setting work outside question 14 print quizmaster_get_template( 'quiz/button-hint.php' ); 15 } 18 16 19 17 ?> -
quizmaster/trunk/templates/quiz/question-item.php
r1671450 r1717342 8 8 ?> 9 9 10 <li class="quizMaster_listItem" style="display: none;" >10 <li class="quizMaster_listItem" style="display: none;" data-pos="<?php print $index; ?>"> 11 11 12 12 <div class="quizMaster_question_page" <?php $view->isDisplayNone($view->quiz->getQuizModus() != QuizMaster_Model_Quiz::QUIZ_MODUS_SINGLE && !$view->quiz->isHideQuestionPositionOverview()); ?> > -
quizmaster/trunk/templates/quiz/review.php
r1671450 r1717342 1 <div class="qm r-review-box qm-hidden">1 <div class="qm-review-box qm-hidden"> 2 2 3 3 <div class="quizMaster_reviewQuestion"> 4 4 <ol> 5 5 <?php for ($xy = 1; $xy <= $questionCount; $xy++) { ?> 6 <div></div>7 6 <li> 8 7 <?php echo $xy; ?> … … 26 25 </div> 27 26 28 <!-- Question Review --> 29 <div> 30 <?php if ($view->quiz->getQuizModus() != QuizMaster_Model_Quiz::QUIZ_MODUS_SINGLE) { ?> 31 <input type="button" name="review" value="<?php _e('Review question', 'quizmaster'); ?>" class="qm_button"> 32 <?php if (!$view->quiz->isQuizSummaryHide()) { ?> 33 <input type="button" name="quizSummary" value="<?php echo $view->_buttonNames['quiz_summary']; ?>" class="qm-button"> 34 <?php } ?> 27 <!-- Question Review --> 28 <div> 29 <?php if ($view->quiz->getQuizModus() != QuizMaster_Model_Quiz::QUIZ_MODUS_SINGLE) { ?> 30 <input type="button" name="review" value="<?php _e('Review question', 'quizmaster'); ?>" class="qm_button"> 31 <?php if (!$view->quiz->isQuizSummaryHide()) { ?> 32 <input type="button" name="quizSummary" value="<?php echo $view->_buttonNames['quiz_summary']; ?>" class="qm-button"> 35 33 <?php } ?> 36 </div> 34 <?php } ?> 35 </div> 37 36 38 37 </div>
Note: See TracChangeset
for help on using the changeset viewer.