ILIAS  release_8 Revision v8.24
class.ilImagemapCorrectionsInputGUI.php
Go to the documentation of this file.
1<?php
2
28{
29 public function setValueByArray(array $a_values): void
30 {
31 $this->setAreasByArray($a_values[$this->getPostVar()]['coords']);
32 }
33
34 public function setAreasByArray($a_areas): void
35 {
36 if (is_array($a_areas['points'])) {
37 foreach ($this->areas as $idx => $name) {
38 if ($this->getPointsUncheckedFieldEnabled() && isset($a_areas['points_unchecked'])) {
39 $this->areas[$idx]->setPointsUnchecked($a_areas['points_unchecked'][$idx]);
40 } else {
41 $this->areas[$idx]->setPointsUnchecked(0);
42 }
43
44 $this->areas[$idx]->setPoints($a_areas['points'][$idx]);
45 }
46 }
47 }
48
49 public function checkInput(): bool
50 {
51 global $DIC;
52 $lng = $DIC['lng'];
53
54 if (is_array($_POST[$this->getPostVar()])) {
55 $_POST[$this->getPostVar()] = ilArrayUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
56 }
57
58 $max = 0;
59 if (is_array($_POST[$this->getPostVar()]['coords']['points'])) {
60 foreach ($_POST[$this->getPostVar()]['coords']['points'] as $idx => $name) {
61 if ((!strlen($_POST[$this->getPostVar()]['coords']['points'][$idx])) && ($this->getRequired())) {
62 $this->setAlert($lng->txt('form_msg_area_missing_points'));
63 return false;
64 }
65 if ((!is_numeric($_POST[$this->getPostVar()]['coords']['points'][$idx]))) {
66 $this->setAlert($lng->txt('form_msg_numeric_value_required'));
67 return false;
68 }
69 if ($_POST[$this->getPostVar()]['coords']['points'][$idx] > 0) {
70 $max = $_POST[$this->getPostVar()]['coords']['points'][$idx];
71 }
72 }
73 }
74
75 if ($max == 0) {
76 $this->setAlert($lng->txt("enter_enough_positive_points"));
77 return false;
78 }
79 return true;
80 }
81
82 public function insert(ilTemplate $a_tpl): void
83 {
84 global $DIC;
85 $lng = $DIC['lng'];
86
87 $template = new ilTemplate("tpl.prop_imagemapquestioncorrection_input.html", true, true, "Modules/TestQuestionPool");
88
89 if ($this->getImage() != "") {
90 $template->setCurrentBlock("image");
91 if (count($this->getAreas())) {
92 include_once "./Modules/TestQuestionPool/classes/class.ilImagemapPreview.php";
93 $preview = new ilImagemapPreview($this->getImagePath() . $this->getValue());
94 foreach ($this->getAreas() as $index => $area) {
95 $preview->addArea($index, $area->getArea(), $area->getCoords(), $area->getAnswertext(), "", "", true, $this->getLineColor());
96 }
97 $preview->createPreview();
98 $imagepath = $this->getImagePathWeb() . $preview->getPreviewFilename($this->getImagePath(), $this->getValue()) . "?img=" . time();
99 $template->setVariable("SRC_IMAGE", $imagepath);
100 } else {
101 $template->setVariable("SRC_IMAGE", $this->getImage());
102 }
103 $template->setVariable("ALT_IMAGE", $this->getAlt());
104 $template->setVariable("POST_VAR_D", $this->getPostVar());
105 $template->parseCurrentBlock();
106 }
107
108 if (is_array($this->getAreas()) && $this->getAreas()) {
109 $counter = 0;
110 foreach ($this->getAreas() as $area) {
111 if (strlen($area->getPoints())) {
112 $template->setCurrentBlock('area_points_value');
113 $template->setVariable('VALUE_POINTS', $area->getPoints());
114 $template->parseCurrentBlock();
115 }
116 if ($this->getPointsUncheckedFieldEnabled()) {
117 if (strlen($area->getPointsUnchecked())) {
118 $template->setCurrentBlock('area_points_unchecked_value');
119 $template->setVariable('VALUE_POINTS_UNCHECKED', $area->getPointsUnchecked());
120 $template->parseCurrentBlock();
121 }
122
123 $template->setCurrentBlock('area_points_unchecked_field');
124 $template->parseCurrentBlock();
125 }
126 $template->setCurrentBlock('row');
127 if (strlen($area->getAnswertext())) {
128 $template->setVariable('ANSWER_AREA', $area->getAnswertext());
129 }
130 $template->setVariable('POST_VAR_R', $this->getPostVar());
131 $template->setVariable('TEXT_SHAPE', strtoupper($area->getArea()));
132 $template->setVariable('VALUE_SHAPE', $area->getArea());
133 $coords = preg_replace("/(\d+,\d+,)/", "\$1 ", $area->getCoords());
134 $template->setVariable('VALUE_COORDINATES', $area->getCoords());
135 $template->setVariable('TEXT_COORDINATES', $coords);
136 $template->setVariable('COUNTER', $counter);
137 $template->parseCurrentBlock();
138 $counter++;
139 }
140 $template->setCurrentBlock("areas");
141 $template->setVariable("TEXT_NAME", $lng->txt("ass_imap_hint"));
142 if ($this->getPointsUncheckedFieldEnabled()) {
143 $template->setVariable("TEXT_POINTS", $lng->txt("points_checked"));
144
145 $template->setCurrentBlock('area_points_unchecked_head');
146 $template->setVariable("TEXT_POINTS_UNCHECKED", $lng->txt("points_unchecked"));
147 $template->parseCurrentBlock();
148 } else {
149 $template->setVariable("TEXT_POINTS", $lng->txt("points"));
150 }
151 $template->setVariable("TEXT_SHAPE", $lng->txt("shape"));
152 $template->setVariable("TEXT_COORDINATES", $lng->txt("coordinates"));
153 $template->setVariable("TEXT_COMMANDS", $lng->txt("actions"));
154 $template->parseCurrentBlock();
155 }
156
157 $template->setVariable("POST_VAR", $this->getPostVar());
158 $template->setVariable("ID", $this->getFieldId());
159 $template->setVariable("TXT_BROWSE", $lng->txt("select_file"));
160 $template->setVariable("TXT_MAX_SIZE", $lng->txt("file_notice") . " " .
161 $this->getMaxFileSizeString());
162
163 $a_tpl->setCurrentBlock("prop_generic");
164 $a_tpl->setVariable("PROP_GENERIC", $template->get());
165 $a_tpl->parseCurrentBlock();
166
167 global $DIC;
168 $tpl = $DIC['tpl'];
169 #$tpl->addJavascript("./Services/Form/js/ServiceFormWizardInput.js");
170 #$tpl->addJavascript("./Modules/TestQuestionPool/templates/default/imagemap.js");
171 }
172}
setVariable($variable, $value='')
Sets a variable value.
Definition: IT.php:514
static stripSlashesRecursive($a_data, bool $a_strip_html=true, string $a_allow="")
ilGlobalTemplateInterface $tpl
insert(ilTemplate $a_tpl)
Insert property html.
checkInput()
Check input, strip slashes etc.
setValueByArray(array $a_values)
Set value by array.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
special template class to simplify handling of ITX/PEAR
setCurrentBlock(string $part=ilGlobalTemplateInterface::DEFAULT_BLOCK)
parseCurrentBlock(string $part=ilGlobalTemplateInterface::DEFAULT_BLOCK)
global $DIC
Definition: feed.php:28
$preview
Definition: imgupload.php:81
if($format !==null) $name
Definition: metadata.php:247
$index
Definition: metadata.php:145