ILIAS  release_7 Revision v7.30-3-g800a261c036
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;
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
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;
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;
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;
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;
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 {
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;
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 {
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}
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
This class represents a checkbox property in a property form.
Confirmation screen class.
Class ilExcCriteriaGUI.
add(ilPropertyFormGUI $a_form=null)
initForm(ilExcCriteria $a_crit_obj)
edit(ilPropertyFormGUI $a_form=null)
importForm(ilExcCriteria $a_crit_obj)
exportForm(ilExcCriteria $a_crit_obj, ilPropertyFormGUI $a_form)
Class ilExcCriteriaTableGUI.
Class ilExcCriteria.
static getInstancesByParentId($a_parent_id)
initCustomForm(ilPropertyFormGUI $a_form)
static getInstanceById($a_id)
exportCustomForm(ilPropertyFormGUI $a_form)
importCustomForm(ilPropertyFormGUI $a_form)
static getInstanceByType($a_type)
This class represents a non editable value in a property form.
This class represents a property form user interface.
getItemByPostVar($a_post_var)
Get Item by POST variable.
This class represents a selection list property in a property form.
static getInstance()
Factory.
This class represents a text area property in a property form.
This class represents a text property in a property form.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
global $DIC
Definition: goto.php:24
$type