Exemplo n.º 1
0
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // generate the question output
     $template = new ilTemplate("tpl.il_as_qpl_fileupload_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         $files = $this->object->getUploadedFiles($active_id, $pass);
         if (count($files)) {
             include_once "./Modules/TestQuestionPool/classes/tables/class.assFileUploadFileTableGUI.php";
             $table_gui = new assFileUploadFileTableGUI(null, $this->getQuestionActionCmd());
             $table_gui->setTitle($this->lng->txt('already_delivered_files'), 'icon_file.svg', $this->lng->txt('already_delivered_files'));
             $table_gui->setData($files);
             $template->setCurrentBlock("files");
             $template->setVariable('FILES', $table_gui->getHTML());
             $template->parseCurrentBlock();
         }
     }
     if (strlen($this->object->getAllowedExtensions())) {
         $template->setCurrentBlock("allowed_extensions");
         $template->setVariable("TXT_ALLOWED_EXTENSIONS", $this->object->prepareTextareaOutput($this->lng->txt("allowedextensions") . ": " . $this->object->getAllowedExtensions()));
         $template->parseCurrentBlock();
     }
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->question, TRUE));
     $template->setVariable("CMD_UPLOAD", $this->getQuestionActionCmd());
     $template->setVariable("TEXT_UPLOAD", $this->object->prepareTextareaOutput($this->lng->txt('upload')));
     $template->setVariable("TXT_UPLOAD_FILE", $this->object->prepareTextareaOutput($this->lng->txt('file_add')));
     $template->setVariable("TXT_MAX_SIZE", $this->object->prepareTextareaOutput($this->lng->txt('file_notice') . " " . $this->object->getMaxFilesizeAsString()));
     $questionoutput = $template->get();
     if (!$show_question_only) {
         // get page object output
         $questionoutput = $this->getILIASPage($questionoutput);
     }
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
Exemplo n.º 2
0
 /**
  * @param integer		$active_id
  * @param integer|null	$pass
  * @param bool			$is_postponed
  * @param bool			$use_post_solutions
  * @param bool			$show_feedback
  *
  * @return string
  */
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $showInlineFeedback = FALSE)
 {
     // shuffle output
     $keys = $this->getParticipantsAnswerKeySequence();
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = array();
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         foreach ($solutions as $idx => $solution_value) {
             $user_solution[$solution_value["value1"]] = $solution_value["value2"];
         }
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_mc_kprim_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     foreach ($keys as $answer_id) {
         $answer = $this->object->getAnswer($answer_id);
         if (strlen($answer->getImageFile())) {
             if ($this->object->getThumbSize()) {
                 $template->setCurrentBlock("preview");
                 $template->setVariable("URL_PREVIEW", $answer->getImageWebPath());
                 $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
                 $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
                 $template->setVariable("ANSWER_IMAGE_URL", $answer->getThumbWebPath());
                 list($width, $height, $type, $attr) = getimagesize($answer->getImageFsPath());
                 $alt = $answer->getImageFile();
                 if (strlen($answer->getAnswertext())) {
                     $alt = $answer->getAnswertext();
                 }
                 $alt = preg_replace("/<[^>]*?>/", "", $alt);
                 $template->setVariable("ANSWER_IMAGE_ALT", ilUtil::prepareFormOutput($alt));
                 $template->setVariable("ANSWER_IMAGE_TITLE", ilUtil::prepareFormOutput($alt));
                 $template->parseCurrentBlock();
             } else {
                 $template->setCurrentBlock("answer_image");
                 $template->setVariable("ANSWER_IMAGE_URL", $answer->getImageWebPath());
                 list($width, $height, $type, $attr) = getimagesize($answer->getImageFsPath());
                 $alt = $answer->getImageFile();
                 if (strlen($answer->getAnswertext())) {
                     $alt = $answer->getAnswertext();
                 }
                 $alt = preg_replace("/<[^>]*?>/", "", $alt);
                 $template->setVariable("ATTR", $attr);
                 $template->setVariable("ANSWER_IMAGE_ALT", ilUtil::prepareFormOutput($alt));
                 $template->setVariable("ANSWER_IMAGE_TITLE", ilUtil::prepareFormOutput($alt));
                 $template->parseCurrentBlock();
             }
         }
         if ($showInlineFeedback) {
             $this->populateSpecificFeedbackInline($user_solution, $answer_id, $template);
         }
         $template->setCurrentBlock("answer_row");
         $template->setVariable("ANSWER_ID", $answer_id);
         $template->setVariable("ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), TRUE));
         $template->setVariable('VALUE_TRUE', 1);
         $template->setVariable('VALUE_FALSE', 0);
         if (isset($user_solution[$answer->getPosition()])) {
             $tplVar = $user_solution[$answer->getPosition()] ? 'CHECKED_ANSWER_TRUE' : 'CHECKED_ANSWER_FALSE';
             $template->setVariable($tplVar, " checked=\"checked\"");
         }
         $template->parseCurrentBlock();
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $template->setVariable("INSTRUCTIONTEXT", $this->object->getInstructionTextTranslation($this->lng, $this->object->getOptionLabel()));
     $template->setVariable("OPTION_LABEL_TRUE", $this->object->getTrueOptionLabelTranslation($this->lng, $this->object->getOptionLabel()));
     $template->setVariable("OPTION_LABEL_FALSE", $this->object->getFalseOptionLabelTranslation($this->lng, $this->object->getOptionLabel()));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 /**
  * @param integer		$active_id
  * @param integer|null	$pass
  * @param bool			$is_postponed
  * @param bool			$use_post_solutions
  * @param bool			$show_feedback
  *
  * @return string
  */
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // shuffle output
     $keys = $this->getChoiceKeys();
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = array();
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         foreach ($solutions as $idx => $solution_value) {
             array_push($user_solution, $solution_value["value1"]);
         }
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_mc_mr_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     foreach ($keys as $answer_id) {
         $answer = $this->object->answers[$answer_id];
         if (strlen($answer->getImage())) {
             if ($this->object->getThumbSize()) {
                 $template->setCurrentBlock("preview");
                 $template->setVariable("URL_PREVIEW", $this->object->getImagePathWeb() . $answer->getImage());
                 $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
                 $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.png'));
                 $template->setVariable("ANSWER_IMAGE_URL", $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $answer->getImage());
                 list($width, $height, $type, $attr) = getimagesize($this->object->getImagePath() . $answer->getImage());
                 $alt = $answer->getImage();
                 if (strlen($answer->getAnswertext())) {
                     $alt = $answer->getAnswertext();
                 }
                 $alt = preg_replace("/<[^>]*?>/", "", $alt);
                 $template->setVariable("ANSWER_IMAGE_ALT", ilUtil::prepareFormOutput($alt));
                 $template->setVariable("ANSWER_IMAGE_TITLE", ilUtil::prepareFormOutput($alt));
                 $template->parseCurrentBlock();
             } else {
                 $template->setCurrentBlock("answer_image");
                 $template->setVariable("ANSWER_IMAGE_URL", $this->object->getImagePathWeb() . $answer->getImage());
                 list($width, $height, $type, $attr) = getimagesize($this->object->getImagePath() . $answer->getImage());
                 $alt = $answer->getImage();
                 if (strlen($answer->getAnswertext())) {
                     $alt = $answer->getAnswertext();
                 }
                 $alt = preg_replace("/<[^>]*?>/", "", $alt);
                 $template->setVariable("ATTR", $attr);
                 $template->setVariable("ANSWER_IMAGE_ALT", ilUtil::prepareFormOutput($alt));
                 $template->setVariable("ANSWER_IMAGE_TITLE", ilUtil::prepareFormOutput($alt));
                 $template->parseCurrentBlock();
             }
         }
         if ($show_feedback && $this->object->getSpecificFeedbackSetting() == 2) {
             foreach ($user_solution as $mc_solution) {
                 if (strcmp($mc_solution, $answer_id) == 0) {
                     $fb = $this->object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), $answer_id);
                     if (strlen($fb)) {
                         $template->setCurrentBlock("feedback");
                         $template->setVariable("FEEDBACK", $this->object->prepareTextareaOutput($fb, true));
                         $template->parseCurrentBlock();
                     }
                 }
             }
         }
         if ($show_feedback && $this->object->getSpecificFeedbackSetting() == 1) {
             $fb = $this->object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), $answer_id);
             if (strlen($fb)) {
                 $template->setCurrentBlock("feedback");
                 $template->setVariable("FEEDBACK", $this->object->prepareTextareaOutput($fb, true));
                 $template->parseCurrentBlock();
             }
         }
         if ($show_feedback && $this->object->getSpecificFeedbackSetting() == 3) {
             $answer = $this->object->getAnswer($answer_id);
             if ($answer->getPoints() > 0) {
                 $fb = $this->object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), $answer_id);
                 if (strlen($fb)) {
                     $template->setCurrentBlock("feedback");
                     $template->setVariable("FEEDBACK", $this->object->prepareTextareaOutput($fb, true));
                     $template->parseCurrentBlock();
                 }
             }
         }
         $template->setCurrentBlock("answer_row");
         $template->setVariable("ANSWER_ID", $answer_id);
         $template->setVariable("ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), TRUE));
         foreach ($user_solution as $mc_solution) {
             if (strcmp($mc_solution, $answer_id) == 0) {
                 $template->setVariable("CHECKED_ANSWER", " checked=\"checked\"");
             }
         }
         $template->parseCurrentBlock();
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // generate the question output
     $template = new ilTemplate("tpl.il_as_qpl_orderinghorizontal_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $elements = $this->object->getRandomOrderingElements();
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         if (count($solutions) == 1) {
             $elements = split("{::}", $solutions[0]["value1"]);
         }
     }
     if (count($solutions) == 0) {
         $_SESSION['qst_ordering_horizontal_elements'] = $elements;
     } else {
         unset($_SESSION['qst_ordering_horizontal_elements']);
     }
     foreach ($elements as $id => $element) {
         $template->setCurrentBlock("element");
         $template->setVariable("ELEMENT_ID", "e_" . $this->object->getId() . "_{$id}");
         $template->setVariable("ORDERING_VALUE", ilUtil::prepareFormOutput($element));
         $template->setVariable("ELEMENT_VALUE", ilUtil::prepareFormOutput($element));
         $template->parseCurrentBlock();
     }
     $template->setVariable("QUESTION_ID", $this->object->getId());
     if ($this->object->textsize >= 10) {
         $template->setVariable("STYLE", " style=\"font-size: " . $this->object->textsize . "%;\"");
     }
     $template->setVariable("VALUE_ORDERRESULT", ' value="' . join($elements, '{::}') . '"');
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), TRUE));
     $questionoutput = $template->get();
     if (!$show_question_only) {
         // get page object output
         $questionoutput = $this->getILIASPage($questionoutput);
     }
     $this->tpl->addJavascript("./Modules/TestQuestionPool/templates/default/orderinghorizontal.js");
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // generate the question output
     $template = new ilTemplate("tpl.il_as_qpl_orderinghorizontal_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $elements = $this->object->getRandomOrderingElements();
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         if (count($solutions) == 1) {
             $elements = split("{::}", $solutions[0]["value1"]);
         }
     }
     if (strlen($_SESSION['qst_selection'])) {
         $this->object->moveRight($_SESSION['qst_selection'], $active_id, $pass);
         unset($_SESSION['qst_selection']);
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         if (count($solutions) == 1) {
             $elements = split("{::}", $solutions[0]["value1"]);
         }
     }
     if (count($solutions) == 0) {
         $_SESSION['qst_ordering_horizontal_elements'] = $elements;
     } else {
         unset($_SESSION['qst_ordering_horizontal_elements']);
     }
     $idx = 0;
     foreach ($elements as $id => $element) {
         $template->setCurrentBlock("element");
         $template->setVariable("ELEMENT_ID", "e_" . $this->object->getId() . "_{$id}");
         $template->setVariable("ELEMENT_VALUE", ilUtil::prepareFormOutput($element));
         $this->ctrl->setParameterByClass('iltestoutputgui', 'qst_selection', $idx);
         $idx++;
         $url = $this->ctrl->getLinkTargetByClass('iltestoutputgui', 'gotoQuestion');
         $template->setVariable("MOVE_RIGHT", $url);
         $template->setVariable("TEXT_MOVE_RIGHT", $this->lng->txt('move_right'));
         $template->setVariable("RIGHT_IMAGE", ilUtil::getImagePath('nav_arr_R.png'));
         $template->parseCurrentBlock();
     }
     if ($this->object->textsize >= 10) {
         echo $template->setVariable("STYLE", " style=\"font-size: " . $this->object->textsize . "%;\"");
     }
     $template->setVariable("VALUE_ORDERRESULT", ' value="' . join($elements, '{::}') . '"');
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), TRUE));
     $questionoutput = $template->get();
     if (!$show_question_only) {
         // get page object output
         $questionoutput = $this->getILIASPage($questionoutput);
     }
     include_once "./Services/YUI/classes/class.ilYuiUtil.php";
     ilYuiUtil::initDragDropAnimation();
     $this->tpl->addJavascript("./Modules/TestQuestionPool/templates/default/orderinghorizontal.js");
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE)
 {
     $userdata = $this->object->getActiveUserData($active_id);
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_javaapplet_question_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "test_type");
     include_once "./Modules/Test/classes/class.ilObjTest.php";
     if (ilObjTest::_lookupAnonymity(ilObjTest::_getObjectIDFromTestID($userdata["test_id"]))) {
         $template->setVariable("PARAM_VALUE", "0");
     } else {
         $template->setVariable("PARAM_VALUE", "1");
     }
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "active_id");
     $template->setVariable("PARAM_VALUE", $active_id);
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "test_id");
     $template->setVariable("PARAM_VALUE", $userdata["test_id"]);
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "question_id");
     $template->setVariable("PARAM_VALUE", $this->object->getId());
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "user_id");
     $template->setVariable("PARAM_VALUE", $userdata["user_id"]);
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "points_max");
     $template->setVariable("PARAM_VALUE", $this->object->getPoints());
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "session_id");
     $template->setVariable("PARAM_VALUE", $_COOKIE["PHPSESSID"]);
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "client");
     $template->setVariable("PARAM_VALUE", CLIENT_ID);
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "pass");
     $actualpass = ilObjTest::_getPass($active_id);
     $template->setVariable("PARAM_VALUE", $actualpass);
     $template->parseCurrentBlock();
     $template->setCurrentBlock("appletparam");
     $template->setVariable("PARAM_NAME", "post_url");
     $template->setVariable("PARAM_VALUE", ilUtil::removeTrailingPathSeparators(ILIAS_HTTP_PATH) . "/Modules/TestQuestionPool/save_question_post_data.php");
     $template->parseCurrentBlock();
     // additional parameters
     for ($i = 0; $i < $this->object->getParameterCount(); $i++) {
         $parameter = $this->object->getParameter($i);
         $template->setCurrentBlock("appletparam");
         $template->setVariable("PARAM_NAME", $parameter["name"]);
         $template->setVariable("PARAM_VALUE", $parameter["value"]);
         $template->parseCurrentBlock();
     }
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $info = $this->object->getReachedInformation($active_id, $pass);
         foreach ($info as $kk => $infodata) {
             $template->setCurrentBlock("appletparam");
             $template->setVariable("PARAM_NAME", "value_" . $infodata["order"] . "_1");
             $template->setVariable("PARAM_VALUE", $infodata["value1"]);
             $template->parseCurrentBlock();
             $template->setCurrentBlock("appletparam");
             $template->setVariable("PARAM_NAME", "value_" . $infodata["order"] . "_2");
             $template->setVariable("PARAM_VALUE", $infodata["value2"]);
             $template->parseCurrentBlock();
         }
         include_once './Services/Administration/classes/class.ilSetting.php';
         $soapSetting = new ilSetting();
         if ($soapSetting->get("soap_user_administration") == 1) {
             $template->setCurrentBlock("appletparam");
             $template->setVariable("PARAM_NAME", "server");
             $template->setVariable("PARAM_VALUE", ilUtil::removeTrailingPathSeparators(ILIAS_HTTP_PATH) . "/webservice/soap/server.php");
         }
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $template->setVariable("APPLET_WIDTH", $this->object->getJavaWidth());
     $template->setVariable("APPLET_HEIGHT", $this->object->getJavaHeight());
     $template->setVariable("APPLET_CODE", $this->object->getJavaCode());
     if (strlen($this->object->getJavaArchive()) > 0) {
         $template->setVariable("APPLET_ARCHIVE", " archive=\"" . $this->object->getJavaArchive() . "\"");
     } else {
         if (strpos($this->object->getJavaAppletFilename(), ".jar") !== FALSE) {
             $template->setVariable("APPLET_ARCHIVE", " archive=\"" . $this->object->getJavaPathWeb() . $this->object->getJavaAppletFilename() . "\"");
         }
     }
     if (strlen($this->object->getJavaCodebase()) > 0) {
         $template->setVariable("APPLET_CODEBASE", " codebase=\"" . $this->object->getJavaCodebase() . "\"");
     } else {
         if (strpos($this->object->getJavaAppletFilename(), ".class") !== FALSE) {
             $template->setVariable("APPLET_CODEBASE", " codebase=\"" . $this->object->getJavaPathWeb() . "\"");
         }
     }
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 /**
  * Get the question solution output
  * @param integer $active_id             The active user id
  * @param integer $pass                  The test pass
  * @param boolean $graphicalOutput       Show visual feedback for right/wrong answers
  * @param boolean $result_output         Show the reached points for parts of the question
  * @param boolean $show_question_only    Show the question without the ILIAS content around
  * @param boolean $show_feedback         Show the question feedback
  * @param boolean $show_correct_solution Show the correct solution instead of the user solution
  * @param boolean $show_manual_scoring   Show specific information for the manual scoring output
  * @return The solution output of the question as HTML code
  */
 function getSolutionOutput($active_id, $pass = NULL, $graphicalOutput = FALSE, $result_output = FALSE, $show_question_only = TRUE, $show_feedback = FALSE, $show_correct_solution = FALSE, $show_manual_scoring = FALSE, $show_question_text = TRUE)
 {
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = "";
     if ($active_id > 0 && !$show_correct_solution) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $user_solution["active_id"] = $active_id;
         $user_solution["pass"] = $pass;
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         foreach ($solutions as $idx => $solution_value) {
             if (preg_match("/^(\\\$v\\d+)\$/", $solution_value["value1"], $matches)) {
                 $user_solution[$matches[1]] = $solution_value["value2"];
             } else {
                 if (preg_match("/^(\\\$r\\d+)\$/", $solution_value["value1"], $matches)) {
                     if (!array_key_exists($matches[1], $user_solution)) {
                         $user_solution[$matches[1]] = array();
                     }
                     $user_solution[$matches[1]]["value"] = $solution_value["value2"];
                 } else {
                     if (preg_match("/^(\\\$r\\d+)_unit\$/", $solution_value["value1"], $matches)) {
                         if (!array_key_exists($matches[1], $user_solution)) {
                             $user_solution[$matches[1]] = array();
                         }
                         $user_solution[$matches[1]]["unit"] = $solution_value["value2"];
                     }
                 }
             }
         }
     } else {
         if ($active_id) {
             $solutions = NULL;
             include_once "./Modules/Test/classes/class.ilObjTest.php";
             if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
                 if (is_null($pass)) {
                     $pass = ilObjTest::_getPass($active_id);
                 }
             }
             $user_solution = $this->object->getBestSolution($this->object->getSolutionValues($active_id, $pass));
         } elseif (is_object($this->getPreviewSession())) {
             $solutionValues = array();
             foreach ($this->getPreviewSession()->getParticipantsSolution() as $val1 => $val2) {
                 $solutionValues[] = array('value1' => $val1, 'value2' => $val2);
             }
             $user_solution = $this->object->getBestSolution($solutionValues);
         }
     }
     $template = new ilTemplate("tpl.il_as_qpl_formulaquestion_output_solution.html", true, true, 'Modules/TestQuestionPool');
     $questiontext = $this->object->substituteVariables($user_solution, $graphicalOutput, TRUE, $result_output, $this->getPreviewSession());
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $solutiontemplate = new ilTemplate("tpl.il_as_tst_solution_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $solutiontemplate->setVariable("SOLUTION_OUTPUT", $questionoutput);
     $solutionoutput = $solutiontemplate->get();
     if (!$show_question_only) {
         // get page object output
         $solutionoutput = $this->getILIASPage($solutionoutput);
     }
     return $solutionoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = "";
     if ($this->object->getIsMultipleChoice()) {
         $user_solution = array();
     }
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         foreach ($solutions as $idx => $solution_value) {
             if ($this->object->getIsMultipleChoice()) {
                 $user_solution[] = $solution_value["value1"];
             } else {
                 $user_solution = $solution_value["value1"];
             }
         }
     }
     $imagepath = $this->object->getImagePathWeb() . $this->object->getImageFilename();
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!$showsolution && !ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         include_once "./Modules/TestQuestionPool/classes/class.ilImagemapPreview.php";
         $preview = new ilImagemapPreview($this->object->getImagePath() . $this->object->getImageFilename());
         foreach ($solutions as $idx => $solution_value) {
             if (strcmp($solution_value["value1"], "") != 0) {
                 $preview->addArea($solution_value["value1"], $this->object->answers[$solution_value["value1"]]->getArea(), $this->object->answers[$solution_value["value1"]]->getCoords(), $this->object->answers[$solution_value["value1"]]->getAnswertext(), "", "", true, $this->linecolor);
             }
         }
         $preview->createPreview();
         $imagepath = $this->object->getImagePathWeb() . $preview->getPreviewFilename($this->object->getImagePath(), $this->object->getImageFilename());
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_imagemap_question_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $this->ctrl->setParameterByClass($this->getTargetGuiClass(), "formtimestamp", time());
     $hrefArea = $this->ctrl->getLinkTargetByClass($this->getTargetGuiClass(), $this->getQuestionActionCmd());
     foreach ($this->object->answers as $answer_id => $answer) {
         $template->setCurrentBlock("imagemap_area");
         $parameter = "&amp;selImage={$answer_id}";
         if (is_array($user_solution) && in_array($answer_id, $user_solution)) {
             $parameter = "&amp;remImage={$answer_id}";
         }
         $template->setVariable("HREF_AREA", $hrefArea . $parameter);
         $template->setVariable("SHAPE", $answer->getArea());
         $template->setVariable("COORDS", $answer->getCoords());
         $template->setVariable("ALT", ilUtil::prepareFormOutput($answer->getAnswertext()));
         $template->setVariable("TITLE", ilUtil::prepareFormOutput($answer->getAnswertext()));
         $template->parseCurrentBlock();
         if ($show_feedback) {
             if (!$this->object->getIsMultipleChoice() && strlen($user_solution) && $user_solution == $answer_id) {
                 $feedback = $this->object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->object->getId(), $answer_id);
                 if (strlen($feedback)) {
                     $template->setCurrentBlock("feedback");
                     $template->setVariable("FEEDBACK", $feedback);
                     $template->parseCurrentBlock();
                 }
             }
         }
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $template->setVariable("IMG_SRC", "{$imagepath}");
     $template->setVariable("IMG_ALT", $this->lng->txt("imagemap"));
     $template->setVariable("IMG_TITLE", $this->lng->txt("imagemap"));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $user_post_solution = FALSE)
 {
     if ($this->object->getOutputType() == OUTPUT_JAVASCRIPT) {
         return $this->getTestOutputJS($active_id, $pass, $is_postponed, $user_post_solution);
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_matching_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         if (is_array($user_post_solution)) {
             $solutions = array();
             foreach ($user_post_solution['matching'][$this->object->getId()] as $definition => $term) {
                 array_push($solutions, array("value1" => $term, "value2" => $definition));
             }
         } else {
             $solutions =& $this->object->getSolutionValues($active_id, $pass);
         }
     }
     // shuffle output
     $terms = $this->object->getTerms();
     $definitions = $this->object->getDefinitions();
     switch ($this->object->getShuffle()) {
         case 1:
             $terms = $this->object->pcArrayShuffle($terms);
             if (count($solutions)) {
                 $definitions = $this->sortDefinitionsBySolution($solutions);
             } else {
                 $definitions = $this->object->pcArrayShuffle($definitions);
             }
             break;
         case 2:
             $terms = $this->object->pcArrayShuffle($terms);
             break;
         case 3:
             if (count($solutions)) {
                 $definitions = $this->sortDefinitionsBySolution($solutions);
             } else {
                 $definitions = $this->object->pcArrayShuffle($definitions);
             }
             break;
     }
     $maxcount = max(count($terms), count($definitions));
     for ($i = 0; $i < count($definitions); $i++) {
         $definition = $definitions[$i];
         if (is_object($definition)) {
             if (strlen($definition->picture)) {
                 $template->setCurrentBlock('definition_image');
                 $template->setVariable('ANSWER_IMAGE_URL', $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $definition->picture);
                 $template->setVariable('ANSWER_IMAGE_ALT', strlen($definition->text) ? ilUtil::prepareFormOutput($definition->text) : ilUtil::prepareFormOutput($definition->picture));
                 $template->setVariable('ANSWER_IMAGE_TITLE', strlen($definition->text) ? ilUtil::prepareFormOutput($definition->text) : ilUtil::prepareFormOutput($definition->picture));
                 $template->setVariable('URL_PREVIEW', $this->object->getImagePathWeb() . $definition->picture);
                 $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
                 $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.png'));
                 $template->setVariable("TEXT_DEFINITION", strlen($definition->text) ? $this->lng->txt('definition') . ' ' . ($i + 1) . ': ' . ilUtil::prepareFormOutput($definition->text) : $this->lng->txt('definition') . ' ' . ($i + 1));
                 $template->parseCurrentBlock();
             } else {
                 $template->setCurrentBlock('definition_text');
                 $template->setVariable("DEFINITION", $this->object->prepareTextareaOutput($definition->text, true));
                 $template->parseCurrentBlock();
             }
         }
         $template->setCurrentBlock('option');
         $template->setVariable("VALUE_OPTION", 0);
         $template->setVariable("TEXT_OPTION", ilUtil::prepareFormOutput($this->lng->txt('please_select')));
         $template->parseCurrentBlock();
         $j = 1;
         foreach ($terms as $term) {
             $template->setCurrentBlock('option');
             $template->setVariable("VALUE_OPTION", $term->identifier);
             $template->setVariable("TEXT_OPTION", strlen($term->text) ? $this->lng->txt('term') . ' ' . $j . ': ' . ilUtil::prepareFormOutput($term->text) : $this->lng->txt('term') . ' ' . $j);
             foreach ($solutions as $solution) {
                 if ($solution["value1"] == $term->identifier && $solution["value2"] == $definition->identifier) {
                     $template->setVariable("SELECTED_OPTION", " selected=\"selected\"");
                 }
             }
             $template->parseCurrentBlock();
             $j++;
         }
         $template->setCurrentBlock('row');
         $template->setVariable("TEXT_MATCHES", $this->lng->txt("matches"));
         if ($this->object->getEstimatedElementHeight() > 0) {
             $template->setVariable("ELEMENT_HEIGHT", " style=\"height: " . $this->object->getEstimatedElementHeight() . "px;\"");
         }
         $template->setVariable("QUESTION_ID", $this->object->getId());
         $template->setVariable("DEFINITION_ID", $definition->identifier);
         $template->parseCurrentBlock();
     }
     $i = 0;
     foreach ($terms as $term) {
         if (strlen($term->picture)) {
             $template->setCurrentBlock('term_image');
             $template->setVariable('ANSWER_IMAGE_URL', $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $term->picture);
             $template->setVariable('ANSWER_IMAGE_ALT', strlen($term->text) ? ilUtil::prepareFormOutput($term->text) : ilUtil::prepareFormOutput($term->picture));
             $template->setVariable('ANSWER_IMAGE_TITLE', strlen($term->text) ? ilUtil::prepareFormOutput($term->text) : ilUtil::prepareFormOutput($term->picture));
             $template->setVariable('URL_PREVIEW', $this->object->getImagePathWeb() . $term->picture);
             $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
             $template->setVariable("TEXT_TERM", strlen($term->text) ? $this->lng->txt('term') . ' ' . ($i + 1) . ': ' . ilUtil::prepareFormOutput($term->text) : $this->lng->txt('term') . ' ' . ($i + 1));
             $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.png'));
             $template->parseCurrentBlock();
         } else {
             $template->setCurrentBlock('term_text');
             $template->setVariable("TERM", $this->object->prepareTextareaOutput($term->text, true));
             $template->parseCurrentBlock();
         }
         $template->touchBlock('terms');
         $i++;
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $template->setVariable("TEXT_TERMS", ilUtil::prepareFormOutput($this->lng->txt('available_terms')));
     $template->setVariable('TEXT_SELECTION', ilUtil::prepareFormOutput($this->lng->txt('selection')));
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
Exemplo n.º 10
0
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE)
 {
     // get page object output
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id);
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = "";
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
     }
     // generate the question output
     include_once "./classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_syntaxtree_output.html", TRUE, TRUE, $this->ownDir);
     $this->tpl->addCss($this->cssDir . "/default.css");
     $this->tpl->addJavascript($this->ownDir . "/js/bracketCount.js");
     $this->tpl->addJavascript($this->ownDir . "/js/url_encode.js");
     $width = $this->object->getMaxTextboxWidth();
     for ($i = 0; $i < $this->object->getCorrectAnswers(); $i++) {
         $template->setCurrentBlock("syntaxtree_row");
         foreach ($solutions as $idx => $solution_value) {
             if ($idx == $i) {
                 $template->setVariable("TEXTFIELD_VALUE", $solution_value["value1"]);
             }
         }
         $template->setVariable("COUNTER", $i + 1);
         $template->setVariable("TEXTFIELD_ID", sprintf("%02d", $i + 1));
         $template->setVariable("TEXTFIELD_SIZE", $width);
         $template->setVariable("GRAPHPATH", $this->ownDir . "/phpsyntaxtree_obj/stgraph.png");
         $template->setVariable("TEXT_PHRASE_HEADER", $this->lng->txt("qpl_qst_syntaxtree_phrase_header"));
         $template->setVariable("TEXT_OPEN_BRACKETS", $this->lng->txt("qpl_qst_syntaxtree_open_brackets"));
         $template->setVariable("TEXT_CLOSED_BRACKETS", $this->lng->txt("qpl_qst_syntaxtree_closed_brackets"));
         $template->setVariable("TEXT_YOUR_GRAPH", $this->lng->txt("qpl_qst_syntaxtree_your_graph"));
         $template->parseCurrentBlock();
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 /**
  * Get the HTML output of the question for a test
  *
  * @param integer $active_id The active user id
  * @param integer $pass The test pass
  * @param boolean $is_postponed Question is postponed
  * @param boolean $use_post_solutions Use post solutions
  * @param boolean $show_feedback Show a feedback
  * @return string
  */
 public function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     $solution = NULL;
     // get the solution of the user for the active pass or from the last pass if allowed
     if ($active_id) {
         require_once './Modules/Test/classes/class.ilObjTest.php';
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         // get preferrably the intermediate solution
         $solution = $this->object->getSolutionStored($active_id, $pass, null);
     }
     $questionoutput = $this->getQuestionOutput($solution);
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 /**
  * Get the HTML output of the question for a test
  * 
  * @param integer $active_id			The active user id
  * @param integer $pass					The test pass
  * @param boolean $is_postponed			Question is postponed
  * @param boolean $use_post_solutions	Use post solutions
  * @param boolean $show_feedback		Show a feedback
  * @return string
  */
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     global $tpl;
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = array();
     if ($active_id) {
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $user_solution =& $this->object->getSolutionValues($active_id, $pass);
         if (!is_array($user_solution)) {
             $user_solution = array();
         }
     }
     $template = $this->getJsmeOutputTemplate($this->object->getQuestion(), $this->object->getOptionString(), $user_solution[0]["value1"]);
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $user_post_solution = FALSE)
 {
     $this->tpl->addJavaScript('Modules/TestQuestionPool/js/jquery-ui-1-10-3-fixed.js');
     $this->tpl->addJavaScript('Modules/TestQuestionPool/js/ilMatchingQuestion.js');
     $this->tpl->addCss(ilUtil::getStyleSheetLocation('output', 'test_javascript.css', 'Modules/TestQuestionPool'));
     $template = new ilTemplate("tpl.il_as_qpl_matching_output.html", true, true, "Modules/TestQuestionPool");
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         if (is_array($user_post_solution)) {
             $solutions = array();
             foreach ($user_post_solution['matching'][$this->object->getId()] as $definition => $term) {
                 array_push($solutions, array("value1" => $term, "value2" => $definition));
             }
         } else {
             $solutions =& $this->object->getSolutionValues($active_id, $pass);
         }
         $counter = 0;
         foreach ($solutions as $idx => $solution_value) {
             if ($solution_value["value2"] > -1 && $solution_value["value1"] > -1) {
                 $template->setCurrentBlock("matching_data");
                 $template->setVariable("TERM_ID", $solution_value["value1"]);
                 $template->setVariable("DEFINITION_ID", $solution_value["value2"]);
                 $template->parseCurrentBlock();
             }
             $counter++;
         }
     }
     $terms = $this->object->getTerms();
     $definitions = $this->object->getDefinitions();
     switch ($this->object->getShuffle()) {
         case 1:
             $terms = $this->object->pcArrayShuffle($terms);
             if (count($solutions)) {
                 $definitions = $this->sortDefinitionsBySolution($solutions, $definitions);
             } else {
                 $definitions = $this->object->pcArrayShuffle($definitions);
             }
             break;
         case 2:
             $terms = $this->object->pcArrayShuffle($terms);
             break;
         case 3:
             if (count($solutions)) {
                 $definitions = $this->sortDefinitionsBySolution($solutions, $definitions);
             } else {
                 $definitions = $this->object->pcArrayShuffle($definitions);
             }
             break;
     }
     // create definitions
     $counter = 0;
     foreach ($definitions as $definition) {
         if (strlen($definition->picture)) {
             $template->setCurrentBlock("definition_picture");
             $template->setVariable("DEFINITION_ID", $definition->identifier);
             $template->setVariable("IMAGE_HREF", $this->object->getImagePathWeb() . $definition->picture);
             $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $definition->picture;
             $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $definition->picture;
             if (!@file_exists($thumb)) {
                 $this->object->rebuildThumbnails();
             }
             $template->setVariable("THUMBNAIL_HREF", $thumbweb);
             $template->setVariable("THUMB_ALT", $this->lng->txt("image"));
             $template->setVariable("THUMB_TITLE", $this->lng->txt("image"));
             $template->setVariable("TEXT_DEFINITION", strlen($definition->text) ? ilUtil::prepareFormOutput($definition->text) : '');
             $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
             $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
             $template->parseCurrentBlock();
         } else {
             $template->setCurrentBlock("definition_text");
             $template->setVariable("DEFINITION", $this->object->prepareTextareaOutput($definition->text, true));
             $template->parseCurrentBlock();
         }
         $template->setCurrentBlock("droparea");
         $template->setVariable("ID_DROPAREA", $definition->identifier);
         $template->setVariable("QUESTION_ID", $this->object->getId());
         $template->parseCurrentBlock();
         $template->setCurrentBlock("definition_data");
         $template->setVariable("DEFINITION_ID", $definition->identifier);
         $template->parseCurrentBlock();
     }
     // create terms
     $counter = 0;
     foreach ($terms as $term) {
         if (strlen($term->picture)) {
             $template->setCurrentBlock("term_picture");
             $template->setVariable("TERM_ID", $term->identifier);
             $template->setVariable("IMAGE_HREF", $this->object->getImagePathWeb() . $term->picture);
             $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $term->picture;
             $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $term->picture;
             if (!@file_exists($thumb)) {
                 $this->object->rebuildThumbnails();
             }
             $template->setVariable("THUMBNAIL_HREF", $thumbweb);
             $template->setVariable("THUMB_ALT", $this->lng->txt("image"));
             $template->setVariable("THUMB_TITLE", $this->lng->txt("image"));
             $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
             $template->setVariable("TEXT_TERM", strlen($term->text) ? ilUtil::prepareFormOutput($term->text) : '');
             $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
             $template->parseCurrentBlock();
         } else {
             $template->setCurrentBlock("term_text");
             $template->setVariable("TERM_TEXT", $this->object->prepareTextareaOutput($term->text, true));
             $template->parseCurrentBlock();
         }
         $template->setCurrentBlock("draggable");
         $template->setVariable("ID_DRAGGABLE", $term->identifier);
         $template->parseCurrentBlock();
         $template->setCurrentBlock('term_data');
         $template->setVariable('TERM_ID', $term->identifier);
         $template->parseCurrentBlock();
     }
     $template->setVariable('MATCHING_MODE', $this->object->getMatchingMode());
     $template->setVariable("RESET_BUTTON", $this->lng->txt("reset_terms"));
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), TRUE));
     return $this->outQuestionPage("", $is_postponed, $active_id, $template->get());
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE)
 {
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = "";
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_textsubset_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $width = $this->object->getMaxTextboxWidth();
     for ($i = 0; $i < $this->object->getCorrectAnswers(); $i++) {
         $template->setCurrentBlock("textsubset_row");
         foreach ($solutions as $idx => $solution_value) {
             if ($idx == $i) {
                 $template->setVariable("TEXTFIELD_VALUE", " value=\"" . $solution_value["value1"] . "\"");
             }
         }
         $template->setVariable("COUNTER", $i + 1);
         $template->setVariable("TEXTFIELD_ID", sprintf("%02d", $i + 1));
         $template->setVariable("TEXTFIELD_SIZE", $width);
         $template->parseCurrentBlock();
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $user_post_solution = FALSE)
 {
     // shuffle output
     $keys = array();
     if (is_array($user_post_solution)) {
         $keys = $_SESSION["ordering_keys"];
     } else {
         $keys = array_keys($this->object->answers);
         shuffle($keys);
     }
     $_SESSION["ordering_keys"] = $keys;
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_ordering_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     if ($this->object->getOutputType() == OUTPUT_JAVASCRIPT) {
         // BEGIN: add javascript code for javascript enabled ordering questions
         $this->tpl->addBlockFile("CONTENT_BLOCK", "head_content", "tpl.il_as_qpl_ordering_output_javascript.html", "Modules/TestQuestionPool");
         $this->tpl->setCurrentBlock("head_content");
         $this->tpl->setVariable("JS_LOCATION", "./Modules/TestQuestionPool/js/toolman/");
         $this->tpl->parseCurrentBlock();
         // END: add javascript code for javascript enabled ordering questions
         // BEGIN: add additional stylesheet for javascript enabled ordering questions
         $this->tpl->setCurrentBlock("AdditionalStyle");
         $this->tpl->setVariable("LOCATION_ADDITIONAL_STYLESHEET", ilUtil::getStyleSheetLocation("output", "test_javascript.css", "Modules/TestQuestionPool"));
         $this->tpl->parseCurrentBlock();
         // END: add additional stylesheet for javascript enabled ordering questions
         // BEGIN: onsubmit form action for javascript enabled ordering questions
         $this->tpl->setVariable("ON_SUBMIT", "return saveOrder('orderlist');");
         // END: onsubmit form action for javascript enabled ordering questions
     }
     // get the solution of the user for the active pass or from the last pass if allowed
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         if (is_array($user_post_solution)) {
             $solutions = array();
             foreach ($user_post_solution as $key => $value) {
                 if (preg_match("/order_(\\d+)/", $key, $matches)) {
                     foreach ($this->object->getAnswers() as $answeridx => $answer) {
                         if ($answer->getRandomID() == $matches[1]) {
                             array_push($solutions, array("value1" => $answeridx, "value2" => $value));
                         }
                     }
                 }
             }
         } else {
             $solutions =& $this->object->getSolutionValues($active_id, $pass);
         }
         if ($this->object->getOutputType() == OUTPUT_JAVASCRIPT) {
             $solution_script .= "";
             $jssolutions = array();
             foreach ($solutions as $idx => $solution_value) {
                 if (strcmp($solution_value["value2"], "") != 0 && strcmp($solution_value["value1"], "") != 0) {
                     $jssolutions[$solution_value["value2"]] = $solution_value["value1"];
                 }
             }
             if (count($jssolutions)) {
                 ksort($jssolutions);
                 $js = "";
                 foreach ($jssolutions as $key => $value) {
                     if (is_object($this->object->getAnswer($value))) {
                         $js .= "initialorder.push('id_" . $this->object->getAnswer($value)->getRandomID() . "');";
                     }
                 }
                 $js .= "restoreInitialOrder();";
             }
             if (strlen($js)) {
                 $template->setCurrentBlock("javascript_restore_order");
                 $template->setVariable("RESTORE_ORDER", $js);
                 $template->parseCurrentBlock();
             }
         }
     }
     if ($this->object->getOutputType() != OUTPUT_JAVASCRIPT) {
         foreach ($keys as $idx) {
             $answer = $this->object->answers[$idx];
             if ($this->object->getOrderingType() == OQ_PICTURES) {
                 $template->setCurrentBlock("ordering_row_standard_pictures");
                 $template->setVariable("PICTURE_HREF", $this->object->getImagePathWeb() . $answer->getAnswertext());
                 $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $answer->getAnswertext();
                 $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $answer->getAnswertext();
                 if (!@file_exists($thumb)) {
                     $this->object->rebuildThumbnails();
                 }
                 $template->setVariable("THUMB_HREF", $thumbweb);
                 $template->setVariable("THUMB_ALT", $this->lng->txt("thumbnail"));
                 $template->setVariable("THUMB_TITLE", $this->lng->txt("enlarge"));
                 $template->setVariable("ANSWER_ID", $answer->getRandomID());
                 $template->parseCurrentBlock();
             } else {
                 $template->setCurrentBlock("ordering_row_standard_text");
                 $template->setVariable("ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), TRUE));
                 $template->setVariable("ANSWER_ID", $answer->getRandomID());
                 $template->parseCurrentBlock();
             }
             $template->setCurrentBlock("ordering_row_standard");
             $template->setVariable("ANSWER_ID", $answer->getRandomID());
             if (is_array($solutions)) {
                 foreach ($solutions as $solution) {
                     if ($solution["value1"] == $idx && strlen($solution["value2"])) {
                         $template->setVariable("ANSWER_ORDER", " value=\"" . $solution["value2"] . "\"");
                     }
                 }
             }
             $template->parseCurrentBlock();
         }
     } else {
         foreach ($keys as $idx) {
             $answer = $this->object->answers[$idx];
             if ($this->object->getOrderingType() == OQ_PICTURES) {
                 $template->setCurrentBlock("ordering_row_javascript_pictures");
                 $template->setVariable("PICTURE_HREF", $this->object->getImagePathWeb() . $answer->getAnswertext());
                 $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $answer->getAnswertext();
                 $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $answer->getAnswertext();
                 if (!@file_exists($thumb)) {
                     $this->object->rebuildThumbnails();
                 }
                 $template->setVariable("THUMB_HREF", $thumbweb);
                 $template->setVariable("THUMB_ALT", $this->lng->txt("thumbnail"));
                 $template->setVariable("THUMB_TITLE", $this->lng->txt("thumbnail"));
                 $template->setVariable("ENLARGE_HREF", ilUtil::getImagePath("enlarge.png", FALSE));
                 $template->setVariable("ENLARGE_ALT", $this->lng->txt("enlarge"));
                 $template->setVariable("ENLARGE_TITLE", $this->lng->txt("enlarge"));
                 $template->setVariable("ANSWER_ID", $answer->getRandomID());
                 $template->parseCurrentBlock();
             } else {
                 $template->setCurrentBlock("ordering_row_javascript_text");
                 $template->setVariable("ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), TRUE));
                 $template->setVariable("ANSWER_ID", $answer->getRandomID());
                 $template->parseCurrentBlock();
             }
         }
         $template->setCurrentBlock("ordering_with_javascript");
         if ($this->object->getOrderingType() == OQ_PICTURES) {
             $template->setVariable("RESET_POSITIONS", $this->lng->txt("reset_pictures"));
         } else {
             $template->setVariable("RESET_POSITIONS", $this->lng->txt("reset_definitions"));
         }
         $template->parseCurrentBlock();
     }
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = array();
     if ($active_id) {
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $user_solution =& $this->object->getSolutionValues($active_id, $pass);
         if (!is_array($user_solution)) {
             $user_solution = array();
         }
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_cloze_question_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $output = $this->object->getClozeText();
     foreach ($this->object->getGaps() as $gap_index => $gap) {
         switch ($gap->getType()) {
             case CLOZE_TEXT:
                 $gaptemplate = new ilTemplate("tpl.il_as_qpl_cloze_question_gap_text.html", TRUE, TRUE, "Modules/TestQuestionPool");
                 $gaptemplate->setVariable("TEXT_GAP_SIZE", $this->object->getFixedTextLength() ? $this->object->getFixedTextLength() : $gap->getMaxWidth());
                 $gaptemplate->setVariable("GAP_COUNTER", $gap_index);
                 foreach ($user_solution as $solution) {
                     if (strcmp($solution["value1"], $gap_index) == 0) {
                         $gaptemplate->setVariable("VALUE_GAP", " value=\"" . ilUtil::prepareFormOutput($solution["value2"]) . "\"");
                     }
                 }
                 $output = preg_replace("/\\[gap\\].*?\\[\\/gap\\]/", $gaptemplate->get(), $output, 1);
                 break;
             case CLOZE_SELECT:
                 $gaptemplate = new ilTemplate("tpl.il_as_qpl_cloze_question_gap_select.html", TRUE, TRUE, "Modules/TestQuestionPool");
                 foreach ($gap->getItems() as $item) {
                     $gaptemplate->setCurrentBlock("select_gap_option");
                     $gaptemplate->setVariable("SELECT_GAP_VALUE", $item->getOrder());
                     $gaptemplate->setVariable("SELECT_GAP_TEXT", ilUtil::prepareFormOutput($item->getAnswerText()));
                     foreach ($user_solution as $solution) {
                         if (strcmp($solution["value1"], $gap_index) == 0) {
                             if (strcmp($solution["value2"], $item->getOrder()) == 0) {
                                 $gaptemplate->setVariable("SELECT_GAP_SELECTED", " selected=\"selected\"");
                             }
                         }
                     }
                     $gaptemplate->parseCurrentBlock();
                 }
                 $gaptemplate->setVariable("PLEASE_SELECT", $this->lng->txt("please_select"));
                 $gaptemplate->setVariable("GAP_COUNTER", $gap_index);
                 $output = preg_replace("/\\[gap\\].*?\\[\\/gap\\]/", $gaptemplate->get(), $output, 1);
                 break;
             case CLOZE_NUMERIC:
                 $gaptemplate = new ilTemplate("tpl.il_as_qpl_cloze_question_gap_numeric.html", TRUE, TRUE, "Modules/TestQuestionPool");
                 $gaptemplate->setVariable("TEXT_GAP_SIZE", $this->object->getFixedTextLength() ? $this->object->getFixedTextLength() : $gap->getMaxWidth());
                 $gaptemplate->setVariable("GAP_COUNTER", $gap_index);
                 foreach ($user_solution as $solution) {
                     if (strcmp($solution["value1"], $gap_index) == 0) {
                         $gaptemplate->setVariable("VALUE_GAP", " value=\"" . ilUtil::prepareFormOutput($solution["value2"]) . "\"");
                     }
                 }
                 $output = preg_replace("/\\[gap\\].*?\\[\\/gap\\]/", $gaptemplate->get(), $output, 1);
                 break;
         }
     }
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($output, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
Exemplo n.º 17
0
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE, $show_feedback = FALSE)
 {
     // generate the question output
     $template = new ilTemplate("tpl.il_as_qpl_errortext_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
     }
     $errortext_value = "";
     $selections = array();
     if (is_array($solutions)) {
         foreach ($solutions as $solution) {
             array_push($selections, $solution['value1']);
         }
         $errortext_value = join(",", $selections);
     }
     if ($this->object->getTextSize() >= 10) {
         $template->setVariable("STYLE", " style=\"font-size: " . $this->object->getTextSize() . "%;\"");
     }
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), TRUE));
     $errortext = $this->object->createErrorTextOutput($selections);
     $this->ctrl->setParameterByClass($this->getTargetGuiClass(), 'errorvalue', '');
     $template->setVariable("ERRORTEXT", $errortext);
     $template->setVariable("ERRORTEXT_ID", "qst_" . $this->object->getId());
     $template->setVariable("ERRORTEXT_VALUE", $errortext_value);
     $questionoutput = $template->get();
     if (!$show_question_only) {
         // get page object output
         $questionoutput = $this->getILIASPage($questionoutput);
     }
     $this->tpl->addJavascript("./Modules/TestQuestionPool/templates/default/errortext.js");
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE)
 {
     // get the solution of the user for the active pass or from the last pass if allowed
     $user_solution = "";
     if ($active_id) {
         $solutions = NULL;
         include_once "./Modules/Test/classes/class.ilObjTest.php";
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
         foreach ($solutions as $idx => $solution_value) {
             $user_solution = $solution_value["value1"];
         }
     }
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_text_question_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     if ($this->object->getMaxNumOfChars()) {
         $template->setCurrentBlock("maximum_char_hint");
         $template->setVariable("MAXIMUM_CHAR_HINT", sprintf($this->lng->txt("text_maximum_chars_allowed"), $this->object->getMaxNumOfChars()));
         $template->parseCurrentBlock();
         #mbecker: No such block. $template->setCurrentBlock("has_maxchars");
         $template->setVariable("MAXCHARS", $this->object->getMaxNumOfChars());
         $template->parseCurrentBlock();
         $template->setCurrentBlock("maxchars_counter");
         $template->setVariable("MAXCHARS", $this->object->getMaxNumOfChars());
         $template->setVariable("TEXTBOXSIZE", strlen($this->object->getMaxNumOfChars()));
         $template->setVariable("CHARACTERS", $this->lng->txt("characters"));
         $template->parseCurrentBlock();
     }
     $template->setVariable("ESSAY", ilUtil::prepareFormOutput($user_solution));
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     include_once "./Services/YUI/classes/class.ilYuiUtil.php";
     ilYuiUtil::initDomEvent();
     return $pageoutput;
 }
Exemplo n.º 19
0
 /**
  * @param integer		$active_id
  * @param integer|null	$pass
  * @param bool			$is_postponed
  * @param bool			$use_post_solutions
  *
  * @return string
  */
 public function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE)
 {
     $solutions = NULL;
     // get the solution of the user for the active pass or from the last pass if allowed
     if ($active_id) {
         require_once './Modules/Test/classes/class.ilObjTest.php';
         if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
             if (is_null($pass)) {
                 $pass = ilObjTest::_getPass($active_id);
             }
         }
         $solutions =& $this->object->getSolutionValues($active_id, $pass);
     }
     // generate the question output
     require_once './Services/UICore/classes/class.ilTemplate.php';
     $template = new ilTemplate("tpl.il_as_qpl_numeric_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     if (is_array($solutions)) {
         foreach ($solutions as $solution) {
             $template->setVariable("NUMERIC_VALUE", " value=\"" . $solution["value1"] . "\"");
         }
     }
     $template->setVariable("NUMERIC_SIZE", $this->object->getMaxChars());
     $questiontext = $this->object->getQuestion();
     $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
     $questionoutput = $template->get();
     $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
     return $pageoutput;
 }
 function getTestOutput($active_id, $pass = NULL, $is_postponed = FALSE, $user_post_solution = FALSE)
 {
     global $tpl;
     $tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_javascript.css", "Modules/TestQuestionPool"));
     // generate the question output
     include_once "./Services/UICore/classes/class.ilTemplate.php";
     $template = new ilTemplate("tpl.il_as_qpl_ordering_output.html", TRUE, TRUE, "Modules/TestQuestionPool");
     $this->object->setOutputType(OUTPUT_JAVASCRIPT);
     // shuffle output
     $keys = array();
     if (is_array($user_post_solution)) {
         $keys = $_SESSION["ordering_keys"];
     } else {
         $keys = array_keys($this->object->answers);
         shuffle($keys);
     }
     $_SESSION["ordering_keys"] = $keys;
     if ($this->object->getOrderingType() == OQ_NESTED_TERMS || $this->object->getOrderingType() == OQ_NESTED_PICTURES) {
         include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
         include_once 'Modules/TestQuestionPool/classes/class.ilNestedOrderingGUI.php';
         $answerGUI = new ilNestedOrderingGUI($this->lng->txt("answers"), "answers");
         $answerGUI->setInstanceId('participant');
         $answerGUI->setOrderingType($this->object->getOrderingType());
         $answerMap = $this->getRandomIdToAnswerMap();
         $answerArray = array();
         $shuffleAnswers = false;
         if (is_array($user_post_solution) && isset($user_post_solution['answers_ordering__participant'])) {
             $answers_ordering = $_POST['answers_ordering__participant'];
             $user_solution_hierarchy = json_decode($answers_ordering);
             $with_random_id = true;
             $this->object->setLeveledOrdering($user_solution_hierarchy, $with_random_id);
             foreach ($this->object->leveled_ordering as $randomId => $depth) {
                 $answ = new ASS_AnswerOrdering($answerMap[$randomId]->getAnswertext(), $randomId, $depth);
                 $answerArray[] = $answ;
             }
         } else {
             include_once "./Modules/Test/classes/class.ilObjTest.php";
             if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
                 if (is_null($pass)) {
                     $pass = ilObjTest::_getPass($active_id);
                 }
             }
             $solutions =& $this->object->getSolutionValues($active_id, $pass);
             if (count($solutions)) {
                 foreach ($solutions as $solution) {
                     list($randomId, $depth) = explode(':', $solution['value2']);
                     $answ = new ASS_AnswerOrdering($answerMap[$randomId]->getAnswertext(), $randomId, $depth);
                     $answerArray[] = $answ;
                 }
             } else {
                 $answerArray = $this->object->answers;
                 $shuffleAnswers = true;
             }
         }
         $answerGUI->setObjAnswersArray($answerArray, $shuffleAnswers);
         if ($this->object->getOrderingType() == OQ_NESTED_PICTURES) {
             $answerGUI->setImagePath($this->object->getImagePath());
             $answerGUI->setImagePathWeb($this->object->getImagePathWeb());
             $answerGUI->setThumbPrefix($this->object->getThumbPrefix());
         }
         $template->setCurrentBlock('nested_ordering_output');
         $template->setVariable('NESTED_ORDERING', $answerGUI->getHtml($shuffleAnswers));
         $template->parseCurrentBlock();
         $questiontext = $this->object->getQuestion();
         $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
         $questionoutput = $template->get();
         $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
         return $pageoutput;
     } else {
         $this->tpl->addJavascript("./Modules/TestQuestionPool/templates/default/ordering.js");
         // BEGIN: onsubmit form action for javascript enabled ordering questions
         $this->tpl->setVariable("ON_SUBMIT", "return \$('div.ilVerticalOrderingQuestion').ilOrderingQuestion('saveOrder');");
         // END: onsubmit form action for javascript enabled ordering questions
         // get the solution of the user for the active pass or from the last pass if allowed
         if ($active_id) {
             $solutions = NULL;
             include_once "./Modules/Test/classes/class.ilObjTest.php";
             if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) {
                 if (is_null($pass)) {
                     $pass = ilObjTest::_getPass($active_id);
                 }
             }
             if (is_array($user_post_solution)) {
                 $solutions = array();
                 foreach ($user_post_solution as $key => $value) {
                     if (preg_match("/order_(\\d+)/", $key, $matches)) {
                         foreach ($this->object->getAnswers() as $answeridx => $answer) {
                             if ($answer->getRandomID() == $matches[1]) {
                                 array_push($solutions, array("value1" => $answeridx, "value2" => $value));
                             }
                         }
                     }
                 }
             } else {
                 $solutions =& $this->object->getSolutionValues($active_id, $pass);
             }
             $jssolutions = array();
             foreach ($solutions as $idx => $solution_value) {
                 if (strcmp($solution_value["value2"], "") != 0 && strcmp($solution_value["value1"], "") != 0) {
                     $jssolutions[$solution_value["value2"]] = $solution_value["value1"];
                 }
             }
             if (count($jssolutions)) {
                 ksort($jssolutions);
                 $initial_order = array();
                 foreach ($jssolutions as $key => $value) {
                     if (is_object($this->object->getAnswer($value))) {
                         $initial_order[] = 'id_' . $this->object->getAnswer($value)->getRandomID();
                     }
                 }
                 $template->setVariable('INITIAL_ORDER', json_encode($initial_order));
             } else {
                 $template->setVariable('INITIAL_ORDER', json_encode(array()));
             }
         }
         foreach ($keys as $idx) {
             $answer = $this->object->answers[$idx];
             if ($this->object->getOrderingType() == OQ_PICTURES) {
                 $template->setCurrentBlock("ordering_row_javascript_pictures");
                 $template->setVariable("PICTURE_HREF", $this->object->getImagePathWeb() . $answer->getAnswertext());
                 $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $answer->getAnswertext();
                 $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $answer->getAnswertext();
                 if (!@file_exists($thumb)) {
                     $this->object->rebuildThumbnails();
                 }
                 $template->setVariable("THUMB_HREF", $thumbweb);
                 $template->setVariable("THUMB_ALT", $this->lng->txt("thumbnail"));
                 $template->setVariable("THUMB_TITLE", $this->lng->txt("thumbnail"));
                 $template->setVariable("ENLARGE_HREF", ilUtil::getImagePath("enlarge.svg", FALSE));
                 $template->setVariable("ENLARGE_ALT", $this->lng->txt("enlarge"));
                 $template->setVariable("ENLARGE_TITLE", $this->lng->txt("enlarge"));
                 $template->setVariable("ANSWER_ID", $answer->getRandomID());
                 $template->parseCurrentBlock();
             } else {
                 $template->setCurrentBlock("ordering_row_javascript_text");
                 $template->setVariable("ANSWER_TEXT", $this->object->prepareTextareaOutput($answer->getAnswertext(), TRUE));
                 $template->setVariable("ANSWER_ID", $answer->getRandomID());
                 $template->parseCurrentBlock();
             }
         }
         if ($this->object->getOrderingType() == OQ_PICTURES) {
             $template->setVariable("RESET_POSITIONS", $this->lng->txt("reset_pictures"));
         } else {
             $template->setVariable("RESET_POSITIONS", $this->lng->txt("reset_definitions"));
         }
         $questiontext = $this->object->getQuestion();
         $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, TRUE));
         $template->setVariable("QUESTION_ID", $this->object->getId());
         $questionoutput = $template->get();
         $pageoutput = $this->outQuestionPage("", $is_postponed, $active_id, $questionoutput);
         $this->tpl->addJavascript("./Modules/TestQuestionPool/templates/default/ordering.js");
         return $pageoutput;
     }
 }