ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
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  $preview = new ilImagemapPreview($this->getImagePath() . $this->getValue());
93  foreach ($this->getAreas() as $index => $area) {
94  $preview->addArea($index, $area->getArea(), $area->getCoords(), $area->getAnswertext(), "", "", true, $this->getLineColor());
95  }
96  $preview->createPreview();
97  $imagepath = $this->getImagePathWeb() . $preview->getPreviewFilename($this->getImagePath(), $this->getValue()) . "?img=" . time();
98  $template->setVariable("SRC_IMAGE", $imagepath);
99  } else {
100  $template->setVariable("SRC_IMAGE", $this->getImage());
101  }
102  $template->setVariable("ALT_IMAGE", $this->getAlt());
103  $template->setVariable("POST_VAR_D", $this->getPostVar());
104  $template->parseCurrentBlock();
105  }
106 
107  if (is_array($this->getAreas()) && $this->getAreas()) {
108  $counter = 0;
109  foreach ($this->getAreas() as $area) {
110  if (strlen($area->getPoints())) {
111  $template->setCurrentBlock('area_points_value');
112  $template->setVariable('VALUE_POINTS', $area->getPoints());
113  $template->parseCurrentBlock();
114  }
115  if ($this->getPointsUncheckedFieldEnabled()) {
116  if (strlen($area->getPointsUnchecked())) {
117  $template->setCurrentBlock('area_points_unchecked_value');
118  $template->setVariable('VALUE_POINTS_UNCHECKED', $area->getPointsUnchecked());
119  $template->parseCurrentBlock();
120  }
121 
122  $template->setCurrentBlock('area_points_unchecked_field');
123  $template->parseCurrentBlock();
124  }
125  $template->setCurrentBlock('row');
126  if (strlen($area->getAnswertext())) {
127  $template->setVariable('ANSWER_AREA', $area->getAnswertext());
128  }
129  $template->setVariable('POST_VAR_R', $this->getPostVar());
130  $template->setVariable('TEXT_SHAPE', strtoupper($area->getArea()));
131  $template->setVariable('VALUE_SHAPE', $area->getArea());
132  $coords = preg_replace("/(\d+,\d+,)/", "\$1 ", $area->getCoords());
133  $template->setVariable('VALUE_COORDINATES', $area->getCoords());
134  $template->setVariable('TEXT_COORDINATES', $coords);
135  $template->setVariable('COUNTER', $counter);
136  $template->parseCurrentBlock();
137  $counter++;
138  }
139  $template->setCurrentBlock("areas");
140  $template->setVariable("TEXT_NAME", $lng->txt("ass_imap_hint"));
141  if ($this->getPointsUncheckedFieldEnabled()) {
142  $template->setVariable("TEXT_POINTS", $lng->txt("points_checked"));
143 
144  $template->setCurrentBlock('area_points_unchecked_head');
145  $template->setVariable("TEXT_POINTS_UNCHECKED", $lng->txt("points_unchecked"));
146  $template->parseCurrentBlock();
147  } else {
148  $template->setVariable("TEXT_POINTS", $lng->txt("points"));
149  }
150  $template->setVariable("TEXT_SHAPE", $lng->txt("shape"));
151  $template->setVariable("TEXT_COORDINATES", $lng->txt("coordinates"));
152  $template->setVariable("TEXT_COMMANDS", $lng->txt("actions"));
153  $template->parseCurrentBlock();
154  }
155 
156  $template->setVariable("POST_VAR", $this->getPostVar());
157  $template->setVariable("ID", $this->getFieldId());
158  $template->setVariable("TXT_BROWSE", $lng->txt("select_file"));
159  $template->setVariable("TXT_MAX_SIZE", $lng->txt("file_notice") . " " .
160  $this->getMaxFileSizeString());
161 
162  $a_tpl->setCurrentBlock("prop_generic");
163  $a_tpl->setVariable("PROP_GENERIC", $template->get());
164  $a_tpl->parseCurrentBlock();
165 
166  global $DIC;
167  $tpl = $DIC['tpl'];
168  #$tpl->addJavascript("./Services/Form/js/ServiceFormWizardInput.js");
169  #$tpl->addJavascript("./Modules/TestQuestionPool/templates/default/imagemap.js");
170  }
171 }
parseCurrentBlock(string $part=ilGlobalTemplateInterface::DEFAULT_BLOCK)
static stripSlashesRecursive($a_data, bool $a_strip_html=true, string $a_allow="")
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...
ilGlobalTemplateInterface $tpl
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: feed.php:28
This class represents an image map file property in a property form.
setVariable($variable, $value='')
Sets a variable value.
Definition: IT.php:546
setCurrentBlock(string $part=ilGlobalTemplateInterface::DEFAULT_BLOCK)