ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilExcCriteriaGUI.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 
13 {
17  protected $ctrl;
18 
22  protected $toolbar;
23 
27  protected $lng;
28 
32  protected $tpl;
33 
34  protected $cat_id; // [int]
35 
36  public function __construct($a_cat_id)
37  {
38  global $DIC;
39 
40  $this->ctrl = $DIC->ctrl();
41  $this->toolbar = $DIC->toolbar();
42  $this->lng = $DIC->language();
43  $this->tpl = $DIC["tpl"];
44  $this->cat_id = $a_cat_id;
45  }
46 
47  public function executeCommand()
48  {
49  $ilCtrl = $this->ctrl;
50 
51  $next_class = $ilCtrl->getNextClass($this);
52  $cmd = $ilCtrl->getCmd("view");
53 
54  switch ($next_class) {
55  default:
56  $this->$cmd();
57  break;
58  }
59  }
60 
61 
62  //
63  // LIST/TABLE
64  //
65 
66  protected function view()
67  {
68  $ilToolbar = $this->toolbar;
69  $ilCtrl = $this->ctrl;
70  $lng = $this->lng;
71  $tpl = $this->tpl;
72 
73  $ilToolbar->setFormAction($ilCtrl->getFormAction($this, "add"));
74 
75  $types = new ilSelectInputGUI($lng->txt("type"), "type");
76  $types->setOptions(ilExcCriteria::getTypesMap());
77  $ilToolbar->addStickyItem($types);
78 
79  $button = ilSubmitButton::getInstance();
80  $button->setCaption("exc_add_criteria");
81  $button->setCommand("add");
82  $ilToolbar->addStickyItem($button);
83 
84  $tbl = new ilExcCriteriaTableGUI($this, "view", $this->cat_id);
85  $tpl->setContent($tbl->getHTML());
86  }
87 
88  protected function saveOrder()
89  {
90  $ilCtrl = $this->ctrl;
91  $lng = $this->lng;
92 
93  $all_cat = ilExcCriteria::getInstancesByParentId($this->cat_id);
94 
95  $pos = 0;
96  asort($_POST["pos"]);
97  foreach (array_keys($_POST["pos"]) as $id) {
98  if (array_key_exists($id, $all_cat)) {
99  $pos += 10;
100  $all_cat[$id]->setPosition($pos);
101  $all_cat[$id]->update();
102  }
103  }
104 
105  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
106  $ilCtrl->redirect($this, "view");
107  }
108 
109  protected function confirmDeletion()
110  {
111  $ilCtrl = $this->ctrl;
112  $lng = $this->lng;
113  $tpl = $this->tpl;
114 
115  $ids = $_POST["id"];
116  if (!sizeof($ids)) {
117  ilUtil::sendInfo($lng->txt("select_one"), true);
118  $ilCtrl->redirect($this, "view");
119  }
120 
121  $confirmation_gui = new ilConfirmationGUI();
122  $confirmation_gui->setFormAction($ilCtrl->getFormAction($this, "delete"));
123  $confirmation_gui->setHeaderText($lng->txt("exc_criteria_deletion_confirmation"));
124  $confirmation_gui->setCancel($lng->txt("cancel"), "view");
125  $confirmation_gui->setConfirm($lng->txt("delete"), "delete");
126 
127  foreach (ilExcCriteria::getInstancesByParentId($this->cat_id) as $item) {
128  if (in_array($item->getId(), $ids)) {
129  $confirmation_gui->addItem("id[]", $item->getId(), $item->getTitle());
130  }
131  }
132 
133  $tpl->setContent($confirmation_gui->getHTML());
134  }
135 
136  protected function delete()
137  {
138  $ilCtrl = $this->ctrl;
139  $lng = $this->lng;
140 
141  $ids = $_POST["id"];
142  if (!sizeof($ids)) {
143  $ilCtrl->redirect($this, "view");
144  }
145 
146  foreach (ilExcCriteria::getInstancesByParentId($this->cat_id) as $item) {
147  if (in_array($item->getId(), $ids)) {
148  $item->delete();
149  }
150  }
151 
152  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
153  $ilCtrl->redirect($this, "view");
154  }
155 
156 
157  //
158  // EDIT
159  //
160 
161  protected function initForm(ilExcCriteria $a_crit_obj)
162  {
163  $ilCtrl = $this->ctrl;
164  $lng = $this->lng;
165 
166  $form = new ilPropertyFormGUI();
167 
168  $is_edit = (bool) $a_crit_obj->getId();
169  if (!$is_edit) {
170  $form->setFormAction($ilCtrl->getFormAction($this, "create"));
171  $form->setTitle($lng->txt("exc_criteria_create_form"));
172  $form->addCommandButton("create", $lng->txt("create"));
173  } else {
174  $form->setFormAction($ilCtrl->getFormAction($this, "update"));
175  $form->setTitle($lng->txt("exc_criteria_update_form"));
176  $form->addCommandButton("update", $lng->txt("save"));
177  }
178 
179  $form->addCommandButton("view", $lng->txt("cancel"));
180 
181  $type = new ilNonEditableValueGUI($lng->txt("type"));
182  $type->setValue($a_crit_obj->getTranslatedType());
183  $form->addItem($type);
184 
185  $title = new ilTextInputGUI($lng->txt("title"), "title");
186  $title->setRequired(true);
187  $form->addItem($title);
188 
189  $desc = new ilTextAreaInputGUI($lng->txt("description"), "desc");
190  $form->addItem($desc);
191 
192  $req = new ilCheckboxInputGUI($lng->txt("required_field"), "req");
193  $form->addItem($req);
194 
195  $a_crit_obj->initCustomForm($form);
196 
197  return $form;
198  }
199 
200  protected function add(ilPropertyFormGUI $a_form = null)
201  {
202  $tpl = $this->tpl;
203  $ilCtrl = $this->ctrl;
204 
205  $new_type = trim($_REQUEST["type"]);
206  if (!$new_type) {
207  $ilCtrl->redirect($this, "view");
208  }
209 
210  $ilCtrl->setParameter($this, "type", $new_type);
211 
212  if (!$a_form) {
213  $crit_obj = ilExcCriteria::getInstanceByType($new_type);
214  $a_form = $this->initForm($crit_obj);
215  }
216 
217  $tpl->setContent($a_form->getHTML());
218  }
219 
220  protected function exportForm(ilExcCriteria $a_crit_obj, ilPropertyFormGUI $a_form)
221  {
222  $a_form->getItemByPostVar("title")->setValue($a_crit_obj->getTitle());
223  $a_form->getItemByPostVar("desc")->setValue($a_crit_obj->getDescription());
224  $a_form->getItemByPostVar("req")->setChecked($a_crit_obj->isRequired());
225 
226  $a_crit_obj->exportCustomForm($a_form);
227  }
228 
229  protected function importForm(ilExcCriteria $a_crit_obj)
230  {
231  $ilCtrl = $this->ctrl;
232  $lng = $this->lng;
233 
234  $is_edit = (bool) $a_crit_obj->getId();
235 
236  $form = $this->initForm($a_crit_obj);
237  if ($form->checkInput()) {
238  $a_crit_obj->setTitle($form->getInput("title"));
239  $a_crit_obj->setDescription($form->getInput("desc"));
240  $a_crit_obj->setRequired($form->getInput("req"));
241 
242  $a_crit_obj->importCustomForm($form);
243 
244  if (!$is_edit) {
245  $a_crit_obj->setParent($this->cat_id);
246  $a_crit_obj->save();
247  } else {
248  $a_crit_obj->update();
249  }
250 
251  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
252  $ilCtrl->redirect($this, "view");
253  }
254 
255  $form->setValuesByPost();
256  $this->{$is_edit ? "edit" : "add"}($form);
257  }
258 
259  protected function create()
260  {
261  $ilCtrl = $this->ctrl;
262 
263  $new_type = trim($_REQUEST["type"]);
264  if (!$new_type) {
265  $ilCtrl->redirect($this, "view");
266  }
267 
268  $crit_obj = ilExcCriteria::getInstanceByType($new_type);
269  $this->importForm($crit_obj);
270  }
271 
272  protected function getCurrentCritera()
273  {
274  $ilCtrl = $this->ctrl;
275 
276  $id = (int) $_REQUEST["crit_id"];
277  if ($id) {
278  $crit_obj = ilExcCriteria::getInstanceById($id);
279  if ($crit_obj->getParent() == $this->cat_id) {
280  $ilCtrl->setParameter($this, "crit_id", $id);
281  return $crit_obj;
282  }
283  }
284 
285  $ilCtrl->redirect($this, "view");
286  }
287 
288  protected function edit(ilPropertyFormGUI $a_form = null)
289  {
290  $tpl = $this->tpl;
291 
292  $crit_obj = $this->getCurrentCritera();
293 
294  if (!$a_form) {
295  $a_form = $this->initForm($crit_obj);
296  $this->exportForm($crit_obj, $a_form);
297  }
298 
299  $tpl->setContent($a_form->getHTML());
300  }
301 
302  protected function update()
303  {
304  $crit_obj = $this->getCurrentCritera();
305  $this->importForm($crit_obj);
306  }
307 }
static getInstanceByType($a_type)
importCustomForm(ilPropertyFormGUI $a_form)
Class ilExcCriteria.
getItemByPostVar($a_post_var)
Get Item by POST variable.
This class represents a property form user interface.
$type
static getInstanceById($a_id)
This class represents a checkbox property in a property form.
exportCustomForm(ilPropertyFormGUI $a_form)
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
add(ilPropertyFormGUI $a_form=null)
static getInstancesByParentId($a_parent_id)
global $DIC
Definition: goto.php:24
Class ilExcCriteriaGUI.
edit(ilPropertyFormGUI $a_form=null)
This class represents a non editable value in a property form.
This class represents a text area property in a property form.
exportForm(ilExcCriteria $a_crit_obj, ilPropertyFormGUI $a_form)
initCustomForm(ilPropertyFormGUI $a_form)
initForm(ilExcCriteria $a_crit_obj)
Class ilExcCriteriaTableGUI.
$_POST["username"]
importForm(ilExcCriteria $a_crit_obj)
Confirmation screen class.