ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilExplorerSelectInputGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2013 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.ilFormPropertyGUI.php");
7 
17 {
24  function __construct($a_title, $a_postvar, $a_explorer_gui, $a_multi = false)
25  {
26  global $lng;
27 
28  $this->multi_nodes = $a_multi;
29  $this->explorer_gui = $a_explorer_gui;
30 
31  parent::__construct($a_title, $a_postvar);
32  $this->setType("exp_select");
33  }
34 
41  function getExplHandleCmd()
42  {
43  return "handleExplorerCommand";
44  }
45 
50  {
51  $this->explorer_gui->handleCommand();
52  }
53 
60  abstract function getTitleForNodeId($a_id);
61 
67  function setValue($a_value)
68  {
69  if ($this->multi_nodes && !is_array($a_value))
70  {
71  if ($a_value !== false)
72  {
73  $this->value = array($a_value);
74  }
75  else
76  {
77  $this->value = array();
78  }
79  }
80  else
81  {
82  $this->value = $a_value;
83  }
84  }
85 
91  function getValue()
92  {
93  return $this->value;
94  }
95 
101  function setValueByArray($a_values)
102  {
103  $this->setValue($a_values[$this->getPostVar()]);
104  }
105 
111  function checkInput()
112  {
113  global $lng;
114 
115  // sanitize
116  if ($this->multi_nodes)
117  {
118  if (!is_array($_POST[$this->getPostVar()]))
119  {
120  $_POST[$this->getPostVar()] = array();
121  }
122 
123  foreach ($_POST[$this->getPostVar()] as $k => $v)
124  {
125  $_POST[$this->getPostVar()][$k] = ilUtil::stripSlashes($v);
126  }
127  }
128  else
129  {
130  $_POST[$this->getPostVar()] = ilUtil::stripSlashes($_POST[$this->getPostVar()]);
131  }
132 
133  // check required
134  if ($this->getRequired())
135  {
136  if ((!$this->multi_nodes && trim($_POST[$this->getPostVar()]) == "") ||
137  ($this->multi_nodes && count($_POST[$this->getPostVar()]) == 0))
138  {
139  $this->setAlert($lng->txt("msg_input_is_required"));
140  return false;
141  }
142  }
143  return true;
144  }
145 
146 
150  function render($a_mode = "property_form")
151  {
152  global $lng;
153 
154  include_once("./Services/YUI/classes/class.ilYuiUtil.php");
156  $GLOBALS["tpl"]->addJavascript("./Services/UIComponent/Explorer2/js/Explorer2.js");
157 
158  $tpl = new ilTemplate("tpl.prop_expl_select.html", true, true, "Services/UIComponent/Explorer2");
159 
160  if ($a_mode != "property_form")
161  {
162  $tpl->touchBlock("tiny_presentation");
163  }
164 
165  // set values
166  $val = $this->getValue();
167  if (is_array($val))
168  {
169  $val_txt = $sep = "";
170  foreach ($val as $v)
171  {
172  $tpl->setCurrentBlock("node_hid");
173  $tpl->setVariable("HID_NAME", $this->getPostVar()."[]");
174  $tpl->setVariable("HID_VAL", $v);
175  $tpl->parseCurrentBlock();
176  $val_txt.= $sep.$this->getTitleForNodeId($v);
177  $sep = ", ";
178  $this->explorer_gui->setNodeOpen($v);
179  $this->explorer_gui->setNodeSelected($v);
180  }
181  $tpl->setVariable("VAL_TXT", $val_txt);
182  }
183  else if ($val != "")
184  {
185  $tpl->setCurrentBlock("node_hid");
186  $tpl->setVariable("HID_NAME", $this->getPostVar());
187  $tpl->setVariable("HID_VAL", $val);
188  $tpl->parseCurrentBlock();
189  $tpl->setVariable("VAL_TXT", $this->getTitleForNodeId($val));
190  $this->explorer_gui->setNodeOpen($val);
191  $this->explorer_gui->setNodeSelected($val);
192  }
193 
194  $tpl->setVariable("POST_VAR", $this->getPostVar());
195  $tpl->setVariable("ID", $this->getFieldId());
196 // $tpl->setVariable("PROPERTY_VALUE", ilUtil::prepareFormOutput($this->getValue()));
197 
198  //added disabled
199  if(!$this->disabled) {
200  $tpl->setCurrentBlock("txt_select");
201  $tpl->setVariable("TXT_SELECT", $lng->txt("select"));
202  $tpl->setVariable("ID_TXT_SELECT", $this->getFieldId());
203  $tpl->parseCurrentBlock();
204 
205  $tpl->setCurrentBlock("txt_reset");
206  $tpl->setVariable("TXT_RESET", $lng->txt("reset"));
207  $tpl->setVariable("ID_TXT_RESET", $this->getFieldId());
208  $tpl->parseCurrentBlock();
209  }
210 
211  $tpl->setVariable("EXPL", $this->explorer_gui->getHTML());
212 
213  $top_tb = new ilToolbarGUI();
214 
215  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
216 
217  $button = ilLinkButton::getInstance();
218  $button->setCaption("select");
219  $button->addCSSClass("ilExplSelectInputButS");
220  $button->setOmitPreventDoubleSubmission(true);
221  $top_tb->addButtonInstance($button);
222 
223  $button = ilLinkButton::getInstance();
224  $button->setCaption("cancel");
225  $button->addCSSClass("ilExplSelectInputButC");
226  $button->setOmitPreventDoubleSubmission(true);
227  $top_tb->addButtonInstance($button);
228 
229  // :TODO: we should probably clone the buttons properly
230  $tpl->setVariable("TOP_TB", $top_tb->getHTML());
231  $tpl->setVariable("BOT_TB", $top_tb->getHTML());
232 
233  //$tpl->setVariable("HREF_SELECT",
234  // $ilCtrl->getLinkTargetByClass(array($parent_gui, "ilformpropertydispatchgui", "ilrepositoryselectorinputgui"),
235  // "showRepositorySelection"));
236 
237  /*if ($this->getValue() > 0 && $this->getValue() != ROOT_FOLDER_ID)
238  {
239  $tpl->setVariable("TXT_ITEM",
240  $ilObjDataCache->lookupTitle($ilObjDataCache->lookupObjId($this->getValue())));
241  }
242  else
243  {
244  $nd = $tree->getNodeData(ROOT_FOLDER_ID);
245  $title = $nd["title"];
246  if ($title == "ILIAS")
247  {
248  $title = $lng->txt("repository");
249  }
250  if (in_array($nd["type"], $this->getClickableTypes()))
251  {
252  $tpl->setVariable("TXT_ITEM", $title);
253  }
254  }*/
255 
256  return $tpl->get();
257  }
258 
263  function insert(&$a_tpl)
264  {
265  $a_tpl->setCurrentBlock("prop_generic");
266  $a_tpl->setVariable("PROP_GENERIC", $this->render());
267  $a_tpl->parseCurrentBlock();
268  }
269 
274  {
275  $html = $this->render("table_filter");
276  return $html;
277  }
278 
279 }
Interface for property form input GUI classes that can be used in table filters.
getPostVar()
Get Post Variable.
getTableFilterHTML()
Get HTML for table filter.
__construct($a_title, $a_postvar, $a_explorer_gui, $a_multi=false)
Constructor.
checkInput()
Check input, strip slashes etc.
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
setAlert($a_alert)
Set Alert Text.
global $tpl
Definition: ilias.php:8
setType($a_type)
Set Type.
setValueByArray($a_values)
Set value by array.
getExplHandleCmd()
Get explorer handle command function.
getTitleForNodeId($a_id)
Get title for node id (needs to be overwritten, if explorer is not a tree eplorer.
getFieldId()
Get Post Variable.
special template class to simplify handling of ITX/PEAR
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
handleExplorerCommand()
Handle explorer command.
Create styles array
The data for the language used.
static initPanel($a_resize=false)
Init yui panel.
This class represents a property in a property form.
global $lng
Definition: privfeed.php:17
Select explorer tree nodes input GUI.
insert(&$a_tpl)
Insert property html.
render($a_mode="property_form")
Render item.
$_POST["username"]
$html
Definition: example_001.php:87