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