ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilSelectInputGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once("./Services/Table/interfaces/interface.ilTableFilterItem.php");
6 include_once("./Services/Form/classes/class.ilSubEnabledFormPropertyGUI.php");
7 include_once 'Services/UIComponent/Toolbar/interfaces/interface.ilToolbarItem.php';
8 
17 {
18  protected $cust_attr = array();
19  protected $options = array();
20  protected $value;
21 
28  function __construct($a_title = "", $a_postvar = "")
29  {
30  parent::__construct($a_title, $a_postvar);
31  $this->setType("select");
32  }
33 
39  function setOptions($a_options)
40  {
41  $this->options = $a_options;
42  }
43 
49  function getOptions()
50  {
51  return $this->options ? $this->options : array();
52  }
53 
59  function setValue($a_value)
60  {
61  if($this->getMulti() && is_array($a_value))
62  {
63  $this->setMultiValues($a_value);
64  $a_value = array_shift($a_value);
65  }
66  $this->value = $a_value;
67  }
68 
74  function getValue()
75  {
76  return $this->value;
77  }
78 
79  public function setMulti($a_multi)
80  {
81  $this->multi = (bool)$a_multi;
82  }
83 
89  function setValueByArray($a_values)
90  {
91  $this->setValue($a_values[$this->getPostVar()]);
92  }
93 
99  function checkInput()
100  {
101  global $lng;
102 
103  $valid = true;
104  if(!$this->getMulti())
105  {
106  $_POST[$this->getPostVar()] = ilUtil::stripSlashes($_POST[$this->getPostVar()]);
107  if($this->getRequired() && trim($_POST[$this->getPostVar()]) == "")
108  {
109  $valid = false;
110  }
111  }
112  else
113  {
114  foreach($_POST[$this->getPostVar()] as $idx => $value)
115  {
116  $_POST[$this->getPostVar()][$idx] = ilUtil::stripSlashes($value);
117  }
118  $_POST[$this->getPostVar()] = array_unique($_POST[$this->getPostVar()]);
119 
120  if($this->getRequired() && !trim(implode("", $_POST[$this->getPostVar()])))
121  {
122  $valid = false;
123  }
124  }
125  if (!$valid)
126  {
127  $this->setAlert($lng->txt("msg_input_is_required"));
128  return false;
129  }
130  return $this->checkSubItemsInput();
131  }
132 
133  public function addCustomAttribute($a_attr)
134  {
135  $this->cust_attr[] = $a_attr;
136  }
137 
138  public function getCustomAttributes()
139  {
140  return (array) $this->cust_attr;
141  }
142 
146  function render($a_mode = "")
147  {
148  $tpl = new ilTemplate("tpl.prop_select.html", true, true, "Services/Form");
149 
150  foreach($this->getCustomAttributes() as $attr)
151  {
152  $tpl->setCurrentBlock('cust_attr');
153  $tpl->setVariable('CUSTOM_ATTR',$attr);
154  $tpl->parseCurrentBlock();
155  }
156 
157  // determin value to select. Due to accessibility reasons we
158  // should always select a value (per default the first one)
159  $first = true;
160  foreach($this->getOptions() as $option_value => $option_text)
161  {
162  if ($first)
163  {
164  $sel_value = $option_value;
165  }
166  $first = false;
167  if ((string) $option_value == (string) $this->getValue())
168  {
169  $sel_value = $option_value;
170  }
171  }
172  foreach($this->getOptions() as $option_value => $option_text)
173  {
174  $tpl->setCurrentBlock("prop_select_option");
175  $tpl->setVariable("VAL_SELECT_OPTION", ilUtil::prepareFormOutput($option_value));
176  if((string) $sel_value == (string) $option_value)
177  {
178  $tpl->setVariable("CHK_SEL_OPTION",
179  'selected="selected"');
180  }
181  $tpl->setVariable("TXT_SELECT_OPTION", $option_text);
182  $tpl->parseCurrentBlock();
183  }
184  $tpl->setVariable("ID", $this->getFieldId());
185 
186  $postvar = $this->getPostVar();
187  if($this->getMulti() && substr($postvar, -2) != "[]")
188  {
189  $postvar .= "[]";
190  }
191 
192  if ($this->getDisabled())
193  {
194  if($this->getMulti())
195  {
196  $value = $this->getMultiValues();
197  $hidden = "";
198  if(is_array($value))
199  {
200  foreach($value as $item)
201  {
202  $hidden .= $this->getHiddenTag($postvar, $item);
203  }
204  }
205  }
206  else
207  {
208  $hidden = $this->getHiddenTag($postvar, $this->getValue());
209  }
210  if($hidden)
211  {
212  $tpl->setVariable("DISABLED", " disabled=\"disabled\"");
213  $tpl->setVariable("HIDDEN_INPUT", $hidden);
214  }
215  }
216  else
217  {
218  $tpl->setVariable("POST_VAR", $postvar);
219  }
220 
221  // multi icons
222  if($this->getMulti() && !$a_mode && !$this->getDisabled())
223  {
224  $tpl->setVariable("MULTI_ICONS", $this->getMultiIconsHTML());
225  }
226 
227  return $tpl->get();
228  }
229 
235  function insert(&$a_tpl)
236  {
237  $a_tpl->setCurrentBlock("prop_generic");
238  $a_tpl->setVariable("PROP_GENERIC", $this->render());
239  $a_tpl->parseCurrentBlock();
240  }
241 
246  {
247  $html = $this->render();
248  return $html;
249  }
250 
254  function getToolbarHTML()
255  {
256  $html = $this->render("toolbar");
257  return $html;
258  }
259 
260 }