ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
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 $points = $this->forms_helper->transformPoints($a_areas, 'points');
37 $points_unchecked = $this->forms_helper->transformPoints($a_areas, 'points_unchecked');
38
39 foreach (array_keys($this->areas) as $index) {
40 if ($points[$index] === null) {
41 return;
42 }
43
44 $points_unchecked[$index] = $this->getPointsUncheckedFieldEnabled() && isset($points_unchecked[$index])
45 ? $points_unchecked[$index] : 0.0;
46
47 $this->areas[$index]->setPointsUnchecked($points_unchecked[$index]);
48 $this->areas[$index]->setPoints($points[$index]);
49 }
50 }
51
52 public function checkInput(): bool
53 {
54 $data = $this->raw($this->getPostVar());
55 if (!is_array($data) || !is_array($data['coords'])) {
56 $this->setAlert($this->lng->txt('form_msg_input_is_required'));
57 return false;
58 }
59
60 $result = $this->forms_helper->checkPointsInputEnoughPositive($data['coords'], $this->getRequired());
61 if (!is_array($result)) {
62 if ($result === 'msg_input_is_required') {
63 $this->setAlert($this->lng->txt('form_msg_area_missing_points'));
64 } else {
65 $this->setAlert($this->lng->txt($result));
66 }
67 return false;
68 }
69
70 return true;
71 }
72
73 public function insert(ilTemplate $a_tpl): void
74 {
75 global $DIC;
76 $lng = $DIC['lng'];
77
78 $template = new ilTemplate('tpl.prop_imagemapquestioncorrection_input.html', true, true, 'components/ILIAS/TestQuestionPool');
79
80 if ($this->getImage() !== '') {
81 $template->setCurrentBlock('image');
82 if (count($this->getAreas())) {
83 $preview = new ilImagemapPreview($this->getImagePath() . $this->getValue());
84 foreach ($this->getAreas() as $index => $area) {
85 $preview->addArea($index, $area->getArea(), $area->getCoords(), $area->getAnswertext(), '', '', true, $this->getLineColor());
86 }
87 $preview->createPreview();
88 $imagepath = $this->getImagePathWeb() . $preview->getPreviewFilename($this->getImagePath(), $this->getValue()) . '?img=' . time();
89 $template->setVariable('SRC_IMAGE', $imagepath);
90 } else {
91 $template->setVariable('SRC_IMAGE', $this->getImage());
92 }
93 $template->setVariable('ALT_IMAGE', $this->getAlt());
94 $template->setVariable('POST_VAR_D', $this->getPostVar());
95 $template->parseCurrentBlock();
96 }
97
98 if (is_array($this->getAreas()) && $this->getAreas()) {
99 $counter = 0;
100 foreach ($this->getAreas() as $area) {
101 if ($area->getPoints() !== '') {
102 $template->setCurrentBlock('area_points_value');
103 $template->setVariable('VALUE_POINTS', $area->getPoints());
104 $template->parseCurrentBlock();
105 }
106 if ($this->getPointsUncheckedFieldEnabled()) {
107 if ($area->getPointsUnchecked() !== '') {
108 $template->setCurrentBlock('area_points_unchecked_value');
109 $template->setVariable('VALUE_POINTS_UNCHECKED', $area->getPointsUnchecked());
110 $template->parseCurrentBlock();
111 }
112
113 $template->setCurrentBlock('area_points_unchecked_field');
114 $template->parseCurrentBlock();
115 }
116 $template->setCurrentBlock('row');
117 if ($area->getAnswertext() !== '') {
118 $template->setVariable('ANSWER_AREA', $area->getAnswertext());
119 }
120 $template->setVariable('POST_VAR_R', $this->getPostVar());
121 $template->setVariable('TEXT_SHAPE', strtoupper($area->getArea()));
122 $template->setVariable('VALUE_SHAPE', $area->getArea());
123 $coords = preg_replace("/(\d+,\d+,)/", "\$1 ", $area->getCoords());
124 $template->setVariable('VALUE_COORDINATES', $area->getCoords());
125 $template->setVariable('TEXT_COORDINATES', $coords);
126 $template->setVariable('COUNTER', $counter);
127 $template->parseCurrentBlock();
128 $counter++;
129 }
130 $template->setCurrentBlock('areas');
131 $template->setVariable('TEXT_NAME', $lng->txt('ass_imap_hint'));
132 if ($this->getPointsUncheckedFieldEnabled()) {
133 $template->setVariable('TEXT_POINTS', $lng->txt('points_checked'));
134
135 $template->setCurrentBlock('area_points_unchecked_head');
136 $template->setVariable('TEXT_POINTS_UNCHECKED', $lng->txt('points_unchecked'));
137 $template->parseCurrentBlock();
138 } else {
139 $template->setVariable('TEXT_POINTS', $lng->txt('points'));
140 }
141 $template->setVariable('TEXT_SHAPE', $lng->txt('shape'));
142 $template->setVariable('TEXT_COORDINATES', $lng->txt('coordinates'));
143 $template->setVariable('TEXT_COMMANDS', $lng->txt('actions'));
144 $template->parseCurrentBlock();
145 }
146
147 $template->setVariable('POST_VAR', $this->getPostVar());
148 $template->setVariable('ID', $this->getFieldId());
149 $template->setVariable('TXT_BROWSE', $lng->txt('select_file'));
150 $template->setVariable('TXT_MAX_SIZE', $lng->txt('file_notice') . ' ' .
151 $this->getMaxFileSizeString());
152
153 $a_tpl->setCurrentBlock('prop_generic');
154 $a_tpl->setVariable('PROP_GENERIC', $template->get());
155 $a_tpl->parseCurrentBlock();
156 }
157}
setVariable($variable, $value='')
Sets a variable value.
Definition: IT.php:544
insert(ilTemplate $a_tpl)
Insert property html.
checkInput()
Check input, strip slashes etc.
setValueByArray(array $a_values)
Set value by array.
This class represents an image map file property in a property form.
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: shib_login.php:26
$counter