4require_once 
'./Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
 
    5require_once 
'./Modules/TestQuestionPool/interfaces/interface.ilGuiQuestionScoringAdjustable.php';
 
    6require_once 
'./Modules/TestQuestionPool/interfaces/interface.ilGuiAnswerScoringAdjustable.php';
 
    7include_once 
'./Modules/Test/classes/inc.AssessmentConstants.php';
 
    8require_once  
'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
 
   39        parent::__construct();
 
   40        include_once 
'./Modules/TestQuestionPool/classes/class.assImagemapQuestion.php';
 
   43            $this->
object->loadFromDb(
$id);
 
   45        $assessmentSetting = 
new ilSetting(
"assessment");
 
   46        $this->linecolor = (strlen($assessmentSetting->get(
"imap_line_color"))) ? 
"#" . $assessmentSetting->get(
"imap_line_color") : 
"#FF0000";
 
   51        if (isset(
$_POST[
"imagemap"]) ||
 
   52        isset(
$_POST[
"imagemap_x"]) ||
 
   53        isset(
$_POST[
"imagemap_y"])) {
 
   54            $this->ctrl->setCmd(
"getCoords");
 
   63        $this->
object->deleteImage();
 
   64        $this->
object->saveToDb();
 
   65        ilUtil::sendSuccess($this->lng->txt(
'saved_successfully'), 
true);
 
   66        $this->ctrl->redirect($this, 
'editQuestion');
 
   75        $form->setValuesByPost();
 
   77        if (!$always && !
$form->checkInput()) {
 
   92        if ($this->ctrl->getCmd() != 
'deleteImage') {
 
   93            $this->
object->flushAnswers();
 
   94            if (is_array(
$_POST[
'image'][
'coords'][
'name'])) {
 
   95                foreach (
$_POST[
'image'][
'coords'][
'name'] as $idx => 
$name) {
 
   96                    if ($this->object->getIsMultipleChoice() && isset(
$_POST[
'image'][
'coords'][
'points_unchecked'])) {
 
   97                        $pointsUnchecked = 
$_POST[
'image'][
'coords'][
'points_unchecked'][$idx];
 
   99                        $pointsUnchecked = 0.0;
 
  102                    $this->
object->addAnswer(
 
  104                        $_POST[
'image'][
'coords'][
'points'][$idx],
 
  106                        $_POST[
'image'][
'coords'][
'coords'][$idx],
 
  107                        $_POST[
'image'][
'coords'][
'shape'][$idx],
 
  113            if (strlen($_FILES[
'imagemapfile'][
'tmp_name'])) {
 
  114                if ($this->object->getSelfAssessmentEditingMode() && $this->object->getId() < 1) {
 
  115                    $this->
object->createNewQuestion();
 
  118                $this->
object->uploadImagemap($form->
getItemByPostVar(
'imagemapfile')->getShapes());
 
  125        if ($this->ctrl->getCmd() != 
'deleteImage') {
 
  126            if (strlen($_FILES[
'image'][
'tmp_name']) == 0) {
 
  127                $this->
object->setImageFilename(
$_POST[
"image_name"]);
 
  130        if (strlen($_FILES[
'image'][
'tmp_name'])) {
 
  131            if ($this->object->getSelfAssessmentEditingMode() && $this->object->getId() < 1) {
 
  132                $this->
object->createNewQuestion();
 
  134            $this->
object->setImageFilename($_FILES[
'image'][
'name'], $_FILES[
'image'][
'tmp_name']);
 
  161        if (
null === 
$form) {
 
  166        $this->tpl->addCss(
'Modules/Test/templates/default/ta.css');
 
  168        $this->tpl->setVariable(
'QUESTION_DATA', $this->ctrl->getHTML(
$form));
 
  180        $radioGroup = 
new ilRadioGroupInputGUI($this->lng->txt(
'tst_imap_qst_mode'), 
'is_multiple_choice');
 
  181        $radioGroup->setValue($this->object->getIsMultipleChoice());
 
  183            $this->lng->txt(
'tst_imap_qst_mode_sc'),
 
  187            $this->lng->txt(
'tst_imap_qst_mode_mc'),
 
  190        $radioGroup->addOption($modeSingleChoice);
 
  191        $radioGroup->addOption($modeMultipleChoice);
 
  192        $form->addItem($radioGroup);
 
  194        require_once 
'Modules/TestQuestionPool/classes/forms/class.ilImagemapFileInputGUI.php';
 
  196        $image->setPointsUncheckedFieldEnabled($this->object->getIsMultipleChoice());
 
  197        $image->setRequired(
true);
 
  199        if (strlen($this->object->getImageFilename())) {
 
  200            $image->setImage($this->object->getImagePathWeb() . $this->object->getImageFilename());
 
  201            $image->setValue($this->object->getImageFilename());
 
  202            $image->setAreas($this->object->getAnswers());
 
  203            $assessmentSetting = 
new ilSetting(
"assessment");
 
  205                $assessmentSetting->get(
"imap_line_color")
 
  206            )) ? 
"\"#" . $assessmentSetting->get(
"imap_line_color") . 
"\"" : 
"\"#FF0000\"";
 
  208            $image->setImagePath($this->object->getImagePath());
 
  209            $image->setImagePathWeb($this->object->getImagePathWeb());
 
  211        $form->addItem($image);
 
  213        require_once 
'Modules/TestQuestionPool/classes/forms/class.ilHtmlImageMapFileInputGUI.php';
 
  215        $imagemapfile->setRequired(
false);
 
  216        $form->addItem($imagemapfile);
 
  241        switch (
$_POST[
"shape"]) {
 
  244                ilUtil::sendSuccess($this->lng->txt(
'msg_rect_added'), 
true);
 
  247                if (preg_match(
"/(\d+)\s*,\s*(\d+)\s+(\d+)\s*,\s*(\d+)/", 
$_POST[
'image'][
'mapcoords'][0] . 
" " . 
$_POST[
'image'][
'mapcoords'][1], $matches)) {
 
  248                    $coords = 
"$matches[1],$matches[2]," . (int) sqrt((($matches[3] - $matches[1]) * ($matches[3] - $matches[1])) + (($matches[4] - $matches[2]) * ($matches[4] - $matches[2])));
 
  250                ilUtil::sendSuccess($this->lng->txt(
'msg_circle_added'), 
true);
 
  254                ilUtil::sendSuccess($this->lng->txt(
'msg_poly_added'), 
true);
 
  257        $this->
object->addAnswer(
$_POST[
"shapetitle"], 0, count($this->object->getAnswers()), 
$coords, 
$_POST[
"shape"]);
 
  258        $this->
object->saveToDb();
 
  259        $this->ctrl->redirect($this, 
'editQuestion');
 
  264        $shape = (strlen($shape)) ? $shape : 
$_POST[
'shape'];
 
  265        include_once 
"./Modules/TestQuestionPool/classes/class.ilImagemapPreview.php";
 
  267        $this->tpl->addBlockFile(
"QUESTION_DATA", 
"question_data", 
"tpl.il_as_qpl_imagemap_question.html", 
"Modules/TestQuestionPool");
 
  269        if (is_array(
$_POST[
'image'][
'mapcoords'])) {
 
  270            foreach (
$_POST[
'image'][
'mapcoords'] as $value) {
 
  274        if (is_array(
$_POST[
'cmd'][
'areaEditor'][
'image'])) {
 
  275            array_push(
$coords, 
$_POST[
'cmd'][
'areaEditor'][
'image'][0] . 
"," . 
$_POST[
'cmd'][
'areaEditor'][
'image'][1]);
 
  278            $this->tpl->setCurrentBlock(
"hidden");
 
  279            $this->tpl->setVariable(
"HIDDEN_NAME", 
'image[mapcoords][]');
 
  280            $this->tpl->setVariable(
"HIDDEN_VALUE", $value);
 
  281            $this->tpl->parseCurrentBlock();
 
  284        $this->tpl->setCurrentBlock(
"hidden");
 
  285        $this->tpl->setVariable(
"HIDDEN_NAME", 
'shape');
 
  286        $this->tpl->setVariable(
"HIDDEN_VALUE", $shape);
 
  287        $this->tpl->parseCurrentBlock();
 
  290        foreach ($this->object->answers as 
$index => $answer) {
 
  291            $preview->addArea(
$index, $answer->getArea(), $answer->getCoords(), $answer->getAnswertext(), 
"", 
"", 
true, $this->linecolor);
 
  294        $disabled_save = 
" disabled=\"disabled\"";
 
  300                } elseif (count(
$coords) == 1) {
 
  303                } elseif (count(
$coords) == 2) {
 
  312                } elseif (count(
$coords) == 1) {
 
  315                } elseif (count(
$coords) == 2) {
 
  316                    if (preg_match(
"/(\d+)\s*,\s*(\d+)\s+(\d+)\s*,\s*(\d+)/", 
$coords[0] . 
" " . 
$coords[1], $matches)) {
 
  317                        $c = 
"$matches[1],$matches[2]," . (int) sqrt((($matches[3] - $matches[1]) * ($matches[3] - $matches[1])) + (($matches[4] - $matches[2]) * ($matches[4] - $matches[2])));
 
  326                } elseif (count(
$coords) == 1) {
 
  329                } elseif (count(
$coords) > 1) {
 
  340        $imagepath = $this->
object->getImagePathWeb() . 
$preview->getPreviewFilename($this->object->getImagePath(), $this->object->getImageFilename()) . 
"?img=" . time();
 
  342            $this->tpl->setCurrentBlock(
"maparea");
 
  343            $this->tpl->setVariable(
"IMAGE_SOURCE", 
"$imagepath");
 
  344            $this->tpl->setVariable(
"IMAGEMAP_NAME", 
"image");
 
  345            $this->tpl->parseCurrentBlock();
 
  347            $this->tpl->setCurrentBlock(
"imagearea");
 
  348            $this->tpl->setVariable(
"IMAGE_SOURCE", 
"$imagepath");
 
  349            $this->tpl->setVariable(
"ALT_IMAGE", $this->lng->txt(
"imagemap"));
 
  350            $this->tpl->parseCurrentBlock();
 
  353        if (strlen(
$_POST[
'shapetitle'])) {
 
  354            $this->tpl->setCurrentBlock(
"shapetitle");
 
  355            $this->tpl->setVariable(
"VALUE_SHAPETITLE", 
$_POST[
"shapetitle"]);
 
  356            $this->tpl->parseCurrentBlock();
 
  359        $this->tpl->setVariable(
"TEXT_IMAGEMAP", $this->lng->txt(
"imagemap"));
 
  360        $this->tpl->setVariable(
"TEXT_SHAPETITLE", $this->lng->txt(
"ass_imap_hint"));
 
  361        $this->tpl->setVariable(
"CANCEL", $this->lng->txt(
"cancel"));
 
  362        $this->tpl->setVariable(
"SAVE", $this->lng->txt(
"save"));
 
  363        $this->tpl->setVariable(
"DISABLED_SAVE", $disabled_save);
 
  366                $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormaction($this, 
'addRect'));
 
  369                $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormaction($this, 
'addCircle'));
 
  372                $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormaction($this, 
'addPoly'));
 
  380        $this->ctrl->redirect($this, 
'editQuestion');
 
  387        #require_once './Modules/Test/classes/class.ilObjTest.php'; 
  388        #if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) 
  390        #       $pass = ilObjTest::_getPass($active_id); 
  391        #       $info = $this->object->getUserSolutionPreferingIntermediate($active_id, $pass); 
  395        #       $info = $this->object->getUserSolutionPreferingIntermediate($active_id, NULL); 
  398        $info = $this->
object->getTestOutputSolutions($active_id, 
$pass);
 
  401            if (strcmp(
$info[0][
"value1"], 
"") != 0) {
 
  402                $formAction .= 
"&selImage=" . 
$info[0][
"value1"];
 
  437        $graphicalOutput = 
false,
 
  438        $result_output = 
false,
 
  439        $show_question_only = 
true,
 
  440        $show_feedback = 
false,
 
  441        $show_correct_solution = 
false,
 
  442        $show_manual_scoring = 
false,
 
  443        $show_question_text = 
true 
  445        $imagepath = $this->
object->getImagePathWeb() . $this->
object->getImageFilename();
 
  446        $solutions = array();
 
  447        if (($active_id > 0) && (!$show_correct_solution)) {
 
  448            include_once 
"./Modules/Test/classes/class.ilObjTest.php";
 
  450                if (is_null(
$pass)) {
 
  456            if (!$this->object->getIsMultipleChoice()) {
 
  459                foreach ($this->object->answers as 
$index => $answer) {
 
  460                    if ($answer->getPoints() > $max_points) {
 
  461                        $max_points = $answer->getPoints();
 
  465                array_push($solutions, array(
"value1" => $found_index));
 
  468                foreach ($this->object->answers as 
$index => $answer) {
 
  469                    $points_checked = $answer->getPoints();
 
  470                    $points_unchecked = $answer->getPointsUnchecked();
 
  471                    if ($points_checked > $points_unchecked) {
 
  472                        if ($points_checked > 0) {
 
  473                            array_push($solutions, array(
"value1" => 
$index));
 
  480        if (is_array($solutions)) {
 
  481            include_once 
"./Modules/TestQuestionPool/classes/class.ilImagemapPreview.php";
 
  483            foreach ($solutions as $idx => $solution_value) {
 
  484                if (strcmp($solution_value[
"value1"], 
"") != 0) {
 
  485                    $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);
 
  486                    $solution_id = $solution_value[
"value1"];
 
  490            $imagepath = $this->
object->getImagePathWeb() . 
$preview->getPreviewFilename($this->object->getImagePath(), $this->object->getImageFilename());
 
  494        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  495        $template = 
new ilTemplate(
"tpl.il_as_qpl_imagemap_question_output_solution.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  496        $solutiontemplate = 
new ilTemplate(
"tpl.il_as_tst_solution_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  497        $questiontext = $this->
object->getQuestion();
 
  498        if ($show_question_text == 
true) {
 
  499            $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, 
true));
 
  503        $template->setVariable(
"IMG_ALT", $this->lng->txt(
"imagemap"));
 
  504        $template->setVariable(
"IMG_TITLE", $this->lng->txt(
"imagemap"));
 
  505        if (($active_id > 0) && (!$show_correct_solution)) {
 
  506            if ($graphicalOutput) {
 
  508                $reached_points = $this->
object->getReachedPoints($active_id, 
$pass);
 
  509                if ($reached_points == $this->object->getMaximumPoints()) {
 
  512                    $template->setVariable(
"TEXT_OK", $this->lng->txt(
"answer_is_right"));
 
  516                    if ($reached_points > 0) {
 
  518                        $template->setVariable(
"TEXT_NOT_OK", $this->lng->txt(
"answer_is_not_correct_but_positive"));
 
  521                        $template->setVariable(
"TEXT_NOT_OK", $this->lng->txt(
"answer_is_wrong"));
 
  528        if ($show_feedback) {
 
  529            $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation(
 
  530                $this->object->getId(),
 
  544        if (strlen($feedback)) {
 
  550            $solutiontemplate->setVariable(
"ILC_FB_CSS_CLASS", $cssClass);
 
  551            $solutiontemplate->setVariable(
"FEEDBACK", $this->object->prepareTextareaOutput($feedback, 
true));
 
  553        $solutiontemplate->setVariable(
"SOLUTION_OUTPUT", $questionoutput);
 
  555        $solutionoutput = $solutiontemplate->get();
 
  556        if (!$show_question_only) {
 
  560        return $solutionoutput;
 
  563    public function getPreview($show_question_only = 
false, $showInlineFeedback = 
false)
 
  566            $user_solution = array();
 
  569                $user_solution = array_values($this->
getPreviewSession()->getParticipantsSolution());
 
  572            include_once 
"./Modules/TestQuestionPool/classes/class.ilImagemapPreview.php";
 
  574            foreach ($user_solution as $idx => $solution_value) {
 
  575                if (strcmp($solution_value, 
"") != 0) {
 
  576                    $preview->addArea($solution_value, $this->object->answers[$solution_value]->getArea(), $this->object->answers[$solution_value]->getCoords(), $this->object->answers[$solution_value]->getAnswertext(), 
"", 
"", 
true, $this->linecolor);
 
  580            $imagepath = $this->
object->getImagePathWeb() . 
$preview->getPreviewFilename($this->object->getImagePath(), $this->object->getImageFilename());
 
  582            $user_solution = array();
 
  583            $imagepath = $this->
object->getImagePathWeb() . $this->
object->getImageFilename();
 
  587        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  588        $template = 
new ilTemplate(
"tpl.il_as_qpl_imagemap_question_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  596        foreach ($this->object->answers as $answer_id => $answer) {
 
  597            $parameter = 
"&selImage=$answer_id";
 
  598            if (is_array($user_solution) && in_array($answer_id, $user_solution)) {
 
  599                $parameter = 
"&remImage=$answer_id";
 
  603                $template->setCurrentBlock(
"imagemap_area_href");
 
  604                $template->setVariable(
"HREF_AREA", $hrefArea . $parameter);
 
  608            $template->setCurrentBlock(
"imagemap_area");
 
  609            $template->setVariable(
"SHAPE", $answer->getArea());
 
  610            $template->setVariable(
"COORDS", $answer->getCoords());
 
  615        $questiontext = $this->
object->getQuestion();
 
  616        $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, 
true));
 
  618        $template->setVariable(
"IMG_ALT", $this->lng->txt(
"imagemap"));
 
  619        $template->setVariable(
"IMG_TITLE", $this->lng->txt(
"imagemap"));
 
  621        if (!$show_question_only) {
 
  625        return $questionoutput;
 
  629    public function getTestOutput($active_id, 
$pass, $is_postponed = 
false, $use_post_solutions = 
false, $show_feedback = 
false)
 
  635            #include_once "./Modules/Test/classes/class.ilObjTest.php";
 
  636            #if (!ilObjTest::_getUsePreviousAnswers($active_id, true)) 
  638            #   if (is_null($pass)) $pass = ilObjTest::_getPass($active_id); 
  640            $solutions = $this->
object->getTestOutputSolutions($active_id, 
$pass);
 
  643            $userSelection = array();
 
  646            include_once 
"./Modules/TestQuestionPool/classes/class.ilImagemapPreview.php";
 
  649            foreach ($solutions as $idx => $solution_value) {
 
  650                if (strlen($solution_value[
"value1"])) {
 
  651                    $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);
 
  652                    $userSelection[$selectionIndex] = $solution_value[
"value1"];
 
  654                    $selectionIndex = $this->
object->getIsMultipleChoice() ? ++$selectionIndex : $selectionIndex;
 
  660            $imagepath = $this->
object->getImagePathWeb() . 
$preview->getPreviewFilename($this->object->getImagePath(), $this->object->getImageFilename());
 
  662            $imagepath = $this->
object->getImagePathWeb() . $this->
object->getImageFilename();
 
  666        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  667        $template = 
new ilTemplate(
"tpl.il_as_qpl_imagemap_question_output.html", 
true, 
true, 
"Modules/TestQuestionPool");
 
  668        $this->ctrl->setParameterByClass($this->
getTargetGuiClass(), 
"formtimestamp", time());
 
  670        foreach ($this->object->answers as $answer_id => $answer) {
 
  671            $template->setCurrentBlock(
"imagemap_area");
 
  673            $template->setVariable(
"SHAPE", $answer->getArea());
 
  674            $template->setVariable(
"COORDS", $answer->getCoords());
 
  678            if ($show_feedback) {
 
  679                if (!$this->object->getIsMultipleChoice() && count($userSelection) && current($userSelection) == $answer_id) {
 
  680                    $feedback = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation(
 
  681                        $this->object->getId(),
 
  685                    if (strlen($feedback)) {
 
  687                        $template->setVariable(
"FEEDBACK", $feedback);
 
  693        $questiontext = $this->
object->getQuestion();
 
  694        $template->setVariable(
"QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, 
true));
 
  696        $template->setVariable(
"IMG_ALT", $this->lng->txt(
"imagemap"));
 
  697        $template->setVariable(
"IMG_TITLE", $this->lng->txt(
"imagemap"));
 
  699        $pageoutput = $this->
outQuestionPage(
"", $is_postponed, $active_id, $questionoutput);
 
  706        $href = $this->ctrl->getLinkTargetByClass(
 
  721        if ($this->object->getTestPresentationConfig()->isSolutionInitiallyPrefilled()) {
 
  722            $reuseSelection = array();
 
  724            if ($areaIndex === 
null) {
 
  725                $reuseSelection = $currentSelection;
 
  726            } elseif ($this->object->getIsMultipleChoice()) {
 
  727                if (!in_array($areaIndex, $currentSelection)) {
 
  728                    $reuseSelection[] = $areaIndex;
 
  731                foreach (array_diff($currentSelection, array($areaIndex)) as $otherSelectedArea) {
 
  732                    $reuseSelection[] = $otherSelectedArea;
 
  735                $reuseSelection[] = $areaIndex;
 
  740        } elseif ($areaIndex !== 
null) {
 
  741            if (!$this->object->getIsMultipleChoice() || !in_array($areaIndex, $currentSelection)) {
 
  742                $areaAction = 
'selImage';
 
  744                $areaAction = 
'remImage';
 
  747            $selection = $areaIndex;
 
  753        return "{$action}={$selection}";
 
  767        $rbacsystem = 
$DIC[
'rbacsystem'];
 
  768        $ilTabs = 
$DIC[
'ilTabs'];
 
  770        $ilTabs->clearTargets();
 
  772        $this->ctrl->setParameterByClass(
"ilAssQuestionPageGUI", 
"q_id", 
$_GET[
"q_id"]);
 
  773        include_once 
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
 
  774        $q_type = $this->
object->getQuestionType();
 
  776        if (strlen($q_type)) {
 
  777            $classname = $q_type . 
"GUI";
 
  778            $this->ctrl->setParameterByClass(strtolower($classname), 
"sel_question_types", $q_type);
 
  779            $this->ctrl->setParameterByClass(strtolower($classname), 
"q_id", 
$_GET[
"q_id"]);
 
  783            if ($rbacsystem->checkAccess(
'write', 
$_GET[
"ref_id"])) {
 
  787                    $this->ctrl->getLinkTargetByClass(
"ilAssQuestionPageGUI", 
"edit"),
 
  788                    array(
"edit", 
"insert", 
"exec_pg"),
 
  798        $force_active = 
false;
 
  799        if ($rbacsystem->checkAccess(
'write', 
$_GET[
"ref_id"])) {
 
  802                $url = $this->ctrl->getLinkTargetByClass($classname, 
"editQuestion");
 
  804            if (array_key_exists(
"imagemap_x", 
$_POST)) {
 
  805                $force_active = 
true;
 
  811                array(
"editQuestion", 
"save", 
"addArea", 
"addRect", 
"addCircle", 
"addPoly",
 
  812                     "uploadingImage", 
"uploadingImagemap", 
"areaEditor",
 
  813                     "saveShape", 
"saveEdit", 
"originalSyncForm"),
 
  833                $this->ctrl->getLinkTargetByClass($classname, 
"assessment"),
 
  845        if (!$this->object->feedbackOBJ->specificAnswerFeedbackExists()) {
 
  849        $output = 
'<table class="test_specific_feedback"><tbody>';
 
  851        foreach ($this->object->getAnswers() as $idx => $answer) {
 
  852            $feedback = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation(
 
  853                $this->object->getId(),
 
  858            $output .= 
"<tr><td>{$answer->getAnswerText()}</td><td>{$feedback}</td></tr>";
 
  863        return $this->
object->prepareTextareaOutput(
$output, 
true);
 
  896        $tpl = 
new ilTemplate(
'tpl.il_as_aggregated_answers_table.html', 
true, 
true, 
"Modules/TestQuestionPool");
 
  898        $tpl->setCurrentBlock(
'headercell');
 
  899        $tpl->setVariable(
'HEADER', $this->lng->txt(
'tst_answer_aggr_answer_header'));
 
  900        $tpl->parseCurrentBlock();
 
  902        $tpl->setCurrentBlock(
'headercell');
 
  903        $tpl->setVariable(
'HEADER', $this->lng->txt(
'tst_answer_aggr_frequency_header'));
 
  904        $tpl->parseCurrentBlock();
 
  906        foreach ($answeringFequencies as $answerIndex => $answeringFrequency) {
 
  907            $tpl->setCurrentBlock(
'aggregaterow');
 
  908            $tpl->setVariable(
'OPTION', $this->object->getAnswer($answerIndex)->getAnswerText());
 
  909            $tpl->setVariable(
'COUNT', $answeringFrequency);
 
  910            $tpl->parseCurrentBlock();
 
  918        $answeringFequencies = array();
 
  920        foreach ($existingAnswerOptions as $answerIndex => $answerOption) {
 
  921            $answeringFequencies[$answerIndex] = 0;
 
  924        foreach ($givenSolutionRows as $solutionRow) {
 
  925            $answeringFequencies[$solutionRow[
'value1']]++;
 
  928        return $answeringFequencies;
 
  948        if (!count($this->object->currentSolution)) {
 
  953        $button->setCaption(
'use_previous_solution');
 
  956            $this->ctrl->getLinkTargetByClass($this->getTargetGuiClass(), $this->getQuestionActionCmd()),
 
  957            $this->buildSelectionParameter($this->object->currentSolution, 
null)
 
  960        $tpl = 
new ilTemplate(
'tpl.tst_question_additional_behaviour_checkbox.html', 
true, 
true, 
'Modules/TestQuestionPool');
 
  961        $tpl->setVariable(
'BUTTON', $button->render());
 
  968        $agg = $this->
aggregateAnswers($relevantAnswers, $this->object->getAnswers());
 
  972        foreach ($this->object->getAnswers() as $answerIndex => $ans) {
 
  974                'answer' => $ans->getAnswerText(),
 
  975                'frequency' => $agg[$answerIndex]
 
  984        require_once 
'Modules/TestQuestionPool/classes/forms/class.ilImagemapCorrectionsInputGUI.php';
 
  986        $image->setPointsUncheckedFieldEnabled($this->object->getIsMultipleChoice());
 
  987        $image->setRequired(
true);
 
  989        if (strlen($this->object->getImageFilename())) {
 
  990            $image->setImage($this->object->getImagePathWeb() . $this->object->getImageFilename());
 
  991            $image->setValue($this->object->getImageFilename());
 
  992            $image->setAreas($this->object->getAnswers());
 
  993            $assessmentSetting = 
new ilSetting(
"assessment");
 
  995                $assessmentSetting->get(
"imap_line_color")
 
  996            )) ? 
"\"#" . $assessmentSetting->get(
"imap_line_color") . 
"\"" : 
"\"#FF0000\"";
 
  998            $image->setImagePath($this->object->getImagePath());
 
  999            $image->setImagePathWeb($this->object->getImagePathWeb());
 
 1001        $form->addItem($image);
 
 1009        $areas = 
$form->getItemByPostVar(
'image')->getAreas();
 
 1011        foreach ($this->object->getAnswers() as 
$index => $answer) {
 
 1012            if ($this->object->getIsMultipleChoice()) {
 
 1013                $answer->setPointsUnchecked((
float) $areas[
$index]->getPointsUnchecked());
 
 1016            $answer->setPoints((
float) $areas[
$index]->getPoints());
 
An exception for terminatinating execution or to throw for unit testing.
Image map question GUI representation.
editQuestion(ilPropertyFormGUI $form=null)
populateQuestionSpecificFormPart(\ilPropertyFormGUI $form)
getPreviousSolutionConfirmationCheckboxHtml()
saveShape()
Saves a shape of the area editor.
getAfterParticipationSuppressionAnswerPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
aggregateAnswers($givenSolutionRows, $existingAnswerOptions)
buildSelectionParameter($currentSelection, $areaIndex=null)
populateAnswerSpecificFormPart(\ilPropertyFormGUI $form)
getAnswersFrequency($relevantAnswers, $questionIndex)
writeAnswerSpecificPostData(ilPropertyFormGUI $form)
Extracts the answer specific values from $_POST and applies them to the data object.
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 question solution output.
setQuestionTabs()
Sets the ILIAS tabs for this question type.
buildAreaLinkTarget($currentSelection, $areaIndex)
renderAggregateView($answeringFequencies)
saveCorrectionsFormProperties(ilPropertyFormGUI $form)
supportsIntermediateSolutionOutput()
Question type specific support of intermediate solution output The function getSolutionOutput respect...
__construct($id=-1)
assImagemapQuestionGUI constructor
writePostData($always=false)
{Evaluates a posted edit form and writes the form data in the question object.integer A positive valu...
getSpecificFeedbackOutput($userSolution)
Returns the answer specific feedback for the question.
populateCorrectionsFormProperties(ilPropertyFormGUI $form)
getTestOutput($active_id, $pass, $is_postponed=false, $use_post_solutions=false, $show_feedback=false)
getAfterParticipationSuppressionQuestionPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
getPreview($show_question_only=false, $showInlineFeedback=false)
completeTestOutputFormAction($formAction, $active_id, $pass)
getAggregatedAnswersView($relevant_answers)
Returns an html string containing a question specific representation of the answers so far given in t...
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
Extracts the question specific values from $_POST and applies them to the data object.
Class for image map questions.
const MODE_MULTIPLE_CHOICE
Basic GUI class for assessment questions.
populateTaxonomyFormSection(ilPropertyFormGUI $form)
addTab_QuestionHints(ilTabsGUI $tabs)
adds the hints tab to ilTabsGUI
writeQuestionGenericPostData()
addQuestionFormCommandButtons($form)
Add the command buttons of a question properties form.
getILIASPage($html="")
Returns the ILIAS Page around a question.
getQuestionTemplate()
get question template
addTab_SuggestedSolution(ilTabsGUI $tabs, $classname)
outQuestionPage($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
output question page
getUseIntermediateSolution()
Get if intermediate solution should be used for solution output.
saveTaxonomyAssignments()
buildBasicEditFormObject()
addBackTab(ilTabsGUI $ilTabs)
isTestPresentationContext()
hasCorrectSolution($activeId, $passIndex)
addTab_QuestionFeedback(ilTabsGUI $tabs)
adds the feedback tab to ilTabsGUI
addBasicQuestionFormProperties($form)
Add basic question form properties: assessment: title, author, description, question,...
addTab_QuestionPreview(ilTabsGUI $tabsGUI)
getAnswerFeedbackOutput($active_id, $pass)
Returns the answer generic feedback depending on the results of the question.
static implodeKeyValues($keyValues)
const CSS_CLASS_FEEDBACK_WRONG
const CSS_CLASS_FEEDBACK_CORRECT
Image map image preview creator.
static _getUsePreviousAnswers($active_id, $user_active_user_setting=false)
Returns if the previous results should be hidden for a learner.
static _getPass($active_id)
Retrieves the actual pass of a given user for a given test.
This class represents an option in a radio group.
special template class to simplify handling of ITX/PEAR
static appendUrlParameterString($a_url, $a_par, $xml_style=false)
append URL parameter string ("par1=value1&par2=value2...") to given URL string
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
static signFile($path_to_file)
if(!array_key_exists('StateId', $_REQUEST)) $id
Interface ilGuiAnswerScoringAdjustable.
Interface ilGuiQuestionScoringAdjustable.
if(isset($_POST['submit'])) $form