ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilAnswerWizardInputGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php';
5 
14 {
15  protected $values = array();
16  protected $allowMove = false;
17  protected $allowAddRemove = true;
18  protected $singleline = true;
19  protected $qstObject = null;
20  protected $minvalue = false;
21  protected $minvalueShouldBeGreater = false;
22 
29  public function __construct($a_title = "", $a_postvar = "")
30  {
31  parent::__construct($a_title, $a_postvar);
32  $this->setSize('25');
33  $this->validationRegexp = "";
34  }
35 
41  public function setValue($a_value)
42  {
43  $this->values = array();
44  if (is_array($a_value)) {
45  if (is_array($a_value['answer'])) {
46  foreach ($a_value['answer'] as $index => $value) {
47  include_once "./Modules/TestQuestionPool/classes/class.assAnswerBinaryStateImage.php";
48  $answer = new ASS_AnswerBinaryStateImage($value, $a_value['points'][$index], $index, 1, $a_value['imagename'][$index]);
49  array_push($this->values, $answer);
50  }
51  }
52  }
53  }
54 
60  public function setValues($a_values)
61  {
62  $this->values = $a_values;
63  }
64 
70  public function getValues()
71  {
72  return $this->values;
73  }
74 
80  public function setSingleline($a_value)
81  {
82  $this->singleline = $a_value;
83  }
84 
90  public function getSingleline()
91  {
92  return $this->singleline;
93  }
94 
100  public function setQuestionObject($a_value)
101  {
102  $this->qstObject = &$a_value;
103  }
104 
110  public function getQuestionObject()
111  {
112  return $this->qstObject;
113  }
114 
120  public function setAllowMove($a_allow_move)
121  {
122  $this->allowMove = $a_allow_move;
123  }
124 
130  public function getAllowMove()
131  {
132  return $this->allowMove;
133  }
134 
138  public function isAddRemoveAllowed()
139  {
140  return $this->allowAddRemove;
141  }
142 
147  {
148  $this->allowAddRemove = $allowAddRemove;
149  }
150 
156  public function setMinvalueShouldBeGreater($a_bool)
157  {
158  $this->minvalueShouldBeGreater = $a_bool;
159  }
160 
166  public function minvalueShouldBeGreater()
167  {
169  }
175  public function setMinValue($a_minvalue)
176  {
177  $this->minvalue = $a_minvalue;
178  }
179 
185  public function getMinValue()
186  {
187  return $this->minvalue;
188  }
194  public function checkInput()
195  {
196  global $DIC;
197  $lng = $DIC['lng'];
199  $foundvalues = $_POST[$this->getPostVar()];
200  if (is_array($foundvalues)) {
201  // check answers
202  if (is_array($foundvalues['answer'])) {
203  foreach ($foundvalues['answer'] as $aidx => $answervalue) {
204  if ((strlen($answervalue)) == 0) {
205  $this->setAlert($lng->txt("msg_input_is_required"));
206  return false;
207  }
208  }
209  }
210  // check points
211  $max = 0;
212  if (is_array($foundvalues['points'])) {
213  foreach ($foundvalues['points'] as $points) {
214  if ($points > $max) {
215  $max = $points;
216  }
217  if (((strlen($points)) == 0) || (!is_numeric($points))) {
218  $this->setAlert($lng->txt("form_msg_numeric_value_required"));
219  return false;
220  }
221  if ($this->minvalueShouldBeGreater()) {
222  if (trim($points) != "" &&
223  $this->getMinValue() !== false &&
224  $points <= $this->getMinValue()) {
225  $this->setAlert($lng->txt("form_msg_value_too_low"));
226 
227  return false;
228  }
229  } else {
230  if (trim($points) != "" &&
231  $this->getMinValue() !== false &&
232  $points < $this->getMinValue()) {
233  $this->setAlert($lng->txt("form_msg_value_too_low"));
234 
235  return false;
236  }
237  }
238  }
239  }
240  if ($max == 0) {
241  $this->setAlert($lng->txt("enter_enough_positive_points"));
242  return false;
243  }
244  } else {
245  $this->setAlert($lng->txt("msg_input_is_required"));
246  return false;
247  }
248 
249  return $this->checkSubItemsInput();
250  }
251 
257  public function insert($a_tpl)
258  {
259  global $DIC;
260  $lng = $DIC['lng'];
261 
262  $tpl = new ilTemplate($this->getTemplate(), true, true, "Modules/TestQuestionPool");
263  $i = 0;
264  foreach ($this->values as $value) {
265  if ($this->getSingleline()) {
266  if (is_object($value)) {
267  $tpl->setCurrentBlock("prop_text_propval");
268  $tpl->setVariable("PROPERTY_VALUE", ilUtil::prepareFormOutput($value->getAnswertext()));
269  $tpl->parseCurrentBlock();
270  $tpl->setCurrentBlock("prop_points_propval");
271  $tpl->setVariable("PROPERTY_VALUE", ilUtil::prepareFormOutput($value->getPoints()));
272  $tpl->parseCurrentBlock();
273  }
274  $tpl->setCurrentBlock('singleline');
275  $tpl->setVariable("SIZE", $this->getSize());
276  $tpl->setVariable("SINGLELINE_ID", $this->getPostVar() . "[answer][$i]");
277  $tpl->setVariable("SINGLELINE_ROW_NUMBER", $i);
278  $tpl->setVariable("SINGLELINE_POST_VAR", $this->getPostVar());
279  $tpl->setVariable("MAXLENGTH", $this->getMaxLength());
280  if ($this->getDisabled()) {
281  $tpl->setVariable("DISABLED_SINGLELINE", " disabled=\"disabled\"");
282  }
283  $tpl->parseCurrentBlock();
284  } elseif (!$this->getSingleline()) {
285  if (is_object($value)) {
286  $tpl->setCurrentBlock("prop_points_propval");
287  $tpl->setVariable("PROPERTY_VALUE", ilUtil::prepareFormOutput($value->getPoints()));
288  $tpl->parseCurrentBlock();
289  }
290  $tpl->setCurrentBlock('multiline');
291  $tpl->setVariable("PROPERTY_VALUE", $this->qstObject->prepareTextareaOutput($value->getAnswertext()));
292  $tpl->setVariable("MULTILINE_ID", $this->getPostVar() . "[answer][$i]");
293  $tpl->setVariable("MULTILINE_ROW_NUMBER", $i);
294  $tpl->setVariable("MULTILINE_POST_VAR", $this->getPostVar());
295  if ($this->getDisabled()) {
296  $tpl->setVariable("DISABLED_MULTILINE", " disabled=\"disabled\"");
297  }
298  $tpl->parseCurrentBlock();
299  }
300  if ($this->getAllowMove()) {
301  $tpl->setCurrentBlock("move");
302  $tpl->setVariable("CMD_UP", "cmd[up" . $this->getFieldId() . "][$i]");
303  $tpl->setVariable("CMD_DOWN", "cmd[down" . $this->getFieldId() . "][$i]");
304  $tpl->setVariable("ID", $this->getPostVar() . "[$i]");
305  $tpl->setVariable("UP_BUTTON", ilGlyphGUI::get(ilGlyphGUI::UP));
306  $tpl->setVariable("DOWN_BUTTON", ilGlyphGUI::get(ilGlyphGUI::DOWN));
307  $tpl->parseCurrentBlock();
308  }
309  $tpl->setCurrentBlock("row");
310  $tpl->setVariable("POST_VAR", $this->getPostVar());
311  $tpl->setVariable("ROW_NUMBER", $i);
312  $tpl->setVariable("ID", $this->getPostVar() . "[answer][$i]");
313  $tpl->setVariable("POINTS_ID", $this->getPostVar() . "[points][$i]");
314  if ($this->isAddRemoveAllowed()) {
315  $tpl->setVariable("ADD_REMOVE_ID", $this->getPostVar() . "[$i]");
316  $tpl->setVariable("CMD_ADD", "cmd[add" . $this->getFieldId() . "][$i]");
317  $tpl->setVariable("CMD_REMOVE", "cmd[remove" . $this->getFieldId() . "][$i]");
318  $tpl->setVariable("ADD_BUTTON", ilGlyphGUI::get(ilGlyphGUI::ADD));
319  $tpl->setVariable("REMOVE_BUTTON", ilGlyphGUI::get(ilGlyphGUI::REMOVE));
320  }
321  if ($this->getDisabled()) {
322  $tpl->setVariable("DISABLED_POINTS", " disabled=\"disabled\"");
323  }
324  $tpl->parseCurrentBlock();
325  $i++;
326  }
327 
328  $tpl->setVariable("ELEMENT_ID", $this->getPostVar());
329  $tpl->setVariable("ANSWER_TEXT", $this->getTextInputLabel($lng));
330  $tpl->setVariable("POINTS_TEXT", $this->getPointsInputLabel($lng));
331  $tpl->setVariable("COMMANDS_TEXT", $lng->txt('actions'));
332 
333  $a_tpl->setCurrentBlock("prop_generic");
334  $a_tpl->setVariable("PROP_GENERIC", $tpl->get());
335  $a_tpl->parseCurrentBlock();
336 
337  global $DIC;
338  $tpl = $DIC['tpl'];
339  $tpl->addJavascript("./Services/Form/js/ServiceFormWizardInput.js");
340  $tpl->addJavascript("./Modules/TestQuestionPool/templates/default/answerwizard.js");
341  }
342 
347  protected function getTextInputLabel($lng)
348  {
349  return $lng->txt('answer_text');
350  }
351 
356  protected function getPointsInputLabel($lng)
357  {
358  return $lng->txt('points');
359  }
360 
364  protected function getTemplate()
365  {
366  return "tpl.prop_answerwizardinput.html";
367  }
368 
369  protected function sanitizeSuperGlobalSubmitValue()
370  {
371  if (isset($_POST[$this->getPostVar()]) && is_array($_POST[$this->getPostVar()])) {
373  }
374  }
375 }
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
getMaxLength()
Get Max Length.
global $DIC
Definition: saml.php:7
$tpl
Definition: ilias.php:10
getPostVar()
Get Post Variable.
Class for answers with a binary state indicator.
static get($a_glyph, $a_text="")
Get glyph html.
$index
Definition: metadata.php:60
setMinValue($a_minvalue)
Set Minimum Value.
setAlert($a_alert)
Set Alert Text.
setMinvalueShouldBeGreater($a_bool)
Set minvalueShouldBeGreater.
This class represents a single choice wizard property in a property form.
insert($a_tpl)
Insert property html.
setAllowMove($a_allow_move)
Set allow move.
minvalueShouldBeGreater()
Get minvalueShouldBeGreater.
__construct($a_title="", $a_postvar="")
Constructor.
getFieldId()
Get Post Variable.
special template class to simplify handling of ITX/PEAR
setSize($a_size)
Set Size.
getQuestionObject()
Get question object.
static stripSlashesRecursive($a_data, $a_strip_html=true, $a_allow="")
Strip slashes from array and sub-arrays.
This class represents a text property in a property form.
checkInput()
Check input, strip slashes etc.
$i
Definition: disco.tpl.php:19
setSingleline($a_value)
Set singleline.
$_POST["username"]
setQuestionObject($a_value)
Set question object.