ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilRatingCategoryGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once("./Services/Rating/classes/class.ilRatingCategory.php");
5 
15 {
19  protected $lng;
20 
24  protected $ctrl;
25 
29  protected $tpl;
30 
34  protected $toolbar;
35 
36  protected $parent_id; // [int]
37  protected $export_callback; // [string|array]
38  protected $export_subobj_title; // [string]
39 
40  public function __construct($a_parent_id, $a_export_callback = null, $a_export_subobj_title = null)
41  {
42  global $DIC;
43 
44  $this->lng = $DIC->language();
45  $this->ctrl = $DIC->ctrl();
46  $this->tpl = $DIC["tpl"];
47  $this->toolbar = $DIC->toolbar();
48  $lng = $DIC->language();
49 
50  $this->parent_id = (int) $a_parent_id;
51  $this->export_callback = $a_export_callback;
52  $this->export_subobj_title = $a_export_subobj_title;
53 
54  $lng->loadLanguageModule("rating");
55 
56  if ($_REQUEST["cat_id"]) {
57  $cat = new ilRatingCategory($_REQUEST["cat_id"]);
58  if ($cat->getParentId() == $this->parent_id) {
59  $this->cat_id = $cat->getId();
60  }
61  }
62  }
63 
67  public function executeCommand()
68  {
70 
71  $next_class = $ilCtrl->getNextClass($this);
72  $cmd = $ilCtrl->getCmd("listCategories");
73 
74  switch ($next_class) {
75  default:
76  return $this->$cmd();
77  break;
78  }
79  }
80 
81  protected function listCategories()
82  {
83  $tpl = $this->tpl;
84  $ilToolbar = $this->toolbar;
85  $lng = $this->lng;
87 
88  $ilToolbar->addButton(
89  $lng->txt("rating_add_category"),
90  $ilCtrl->getLinkTarget($this, "add")
91  );
92 
93  $ilToolbar->addSeparator();
94 
95  $ilToolbar->addButton(
96  $lng->txt("export"),
97  $ilCtrl->getLinkTarget($this, "export")
98  );
99 
100  include_once "Services/Rating/classes/class.ilRatingCategoryTableGUI.php";
101  $table = new ilRatingCategoryTableGUI($this, "listCategories", $this->parent_id);
102  $tpl->setContent($table->getHTML());
103  }
104 
105 
106  protected function initCategoryForm($a_id = null)
107  {
108  $lng = $this->lng;
110 
111  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
112  $form = new ilPropertyFormGUI();
113  $form->setTarget("_top");
114  $form->setFormAction($ilCtrl->getFormAction($this, "save"));
115  $form->setTitle($lng->txt("rating_category_" . ($a_id ? "edit" : "create")));
116 
117  // title
118  $ti = new ilTextInputGUI($lng->txt("title"), "title");
119  $ti->setMaxLength(128);
120  $ti->setSize(40);
121  $ti->setRequired(true);
122  $form->addItem($ti);
123 
124  // description
125  $ta = new ilTextAreaInputGUI($lng->txt("description"), "desc");
126  $ta->setCols(40);
127  $ta->setRows(2);
128  $form->addItem($ta);
129 
130  if (!$a_id) {
131  $form->addCommandButton("save", $lng->txt("rating_category_add"));
132  } else {
133  $cat = new ilRatingCategory($a_id);
134  $ti->setValue($cat->getTitle());
135  $ta->setValue($cat->getDescription());
136 
137  $form->addCommandButton("update", $lng->txt("rating_category_update"));
138  }
139  $form->addCommandButton("listCategories", $lng->txt("cancel"));
140 
141  return $form;
142  }
143 
144  protected function add($a_form = null)
145  {
146  $tpl = $this->tpl;
147 
148  if (!$a_form) {
149  $a_form = $this->initCategoryForm();
150  }
151 
152  $tpl->setContent($a_form->getHTML());
153  }
154 
155  protected function save()
156  {
158  $lng = $this->lng;
159 
160  $form = $this->initCategoryForm("create");
161  if ($form->checkInput()) {
162  include_once "Services/Rating/classes/class.ilRatingCategory.php";
163  $cat = new ilRatingCategory();
164  $cat->setParentId($this->parent_id);
165  $cat->setTitle($form->getInput("title"));
166  $cat->setDescription($form->getInput("desc"));
167  $cat->save();
168 
169  ilUtil::sendSuccess($lng->txt("rating_category_created"));
170  $ilCtrl->redirect($this, "listCategories");
171  }
172 
173  $form->setValuesByPost();
174  $this->add($form);
175  }
176 
177  protected function edit($a_form = null)
178  {
179  $tpl = $this->tpl;
181 
182  $ilCtrl->setParameter($this, "cat_id", $this->cat_id);
183 
184  if (!$a_form) {
185  $a_form = $this->initCategoryForm($this->cat_id);
186  }
187 
188  $tpl->setContent($a_form->getHTML());
189  }
190 
191  protected function update()
192  {
194  $lng = $this->lng;
195 
196  $form = $this->initCategoryForm($this->cat_id);
197  if ($form->checkInput()) {
198  include_once "Services/Rating/classes/class.ilRatingCategory.php";
199  $cat = new ilRatingCategory($this->cat_id);
200  $cat->setTitle($form->getInput("title"));
201  $cat->setDescription($form->getInput("desc"));
202  $cat->update();
203 
204  ilUtil::sendSuccess($lng->txt("rating_category_updated"));
205  $ilCtrl->redirect($this, "listCategories");
206  }
207 
208  $form->setValuesByPost();
209  $this->add($form);
210  }
211 
212  protected function updateOrder()
213  {
215  $lng = $this->lng;
216 
217  $order = $_POST["pos"];
218  asort($order);
219 
220  $cnt = 0;
221  foreach ($order as $id => $pos) {
222  $cat = new ilRatingCategory($id);
223  if ($cat->getParentId() == $this->parent_id) {
224  $cnt += 10;
225  $cat->setPosition($cnt);
226  $cat->update();
227  }
228  }
229 
230  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
231  $ilCtrl->redirect($this, "listCategories");
232  }
233 
234  protected function confirmDelete()
235  {
236  $tpl = $this->tpl;
238  $lng = $this->lng;
239 
240  if (!$this->cat_id) {
241  return $this->listCategories();
242  }
243 
244  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
245  $cgui = new ilConfirmationGUI();
246  $cgui->setHeaderText($lng->txt("rating_category_delete_sure") . "<br/>" .
247  $lng->txt("info_delete_warning_no_trash"));
248 
249  $cgui->setFormAction($ilCtrl->getFormAction($this));
250  $cgui->setCancel($lng->txt("cancel"), "listCategories");
251  $cgui->setConfirm($lng->txt("confirm"), "delete");
252 
253  $cat = new ilRatingCategory($this->cat_id);
254  $cgui->addItem("cat_id", $this->cat_id, $cat->getTitle());
255 
256  $tpl->setContent($cgui->getHTML());
257  }
258 
259  protected function delete()
260  {
262  $lng = $this->lng;
263 
264  if ($this->cat_id) {
265  ilRatingCategory::delete($this->cat_id);
266  ilUtil::sendSuccess($lng->txt("rating_category_deleted"), true);
267  }
268 
269  // fix order
270  $cnt = 0;
271  foreach (ilRatingCategory::getAllForObject($this->parent_id) as $item) {
272  $cnt += 10;
273 
274  $cat = new ilRatingCategory($item["id"]);
275  $cat->setPosition($cnt);
276  $cat->update();
277  }
278 
279  $ilCtrl->redirect($this, "listCategories");
280  }
281 
282  protected function export()
283  {
284  $lng = $this->lng;
285 
286  include_once "./Services/Excel/classes/class.ilExcel.php";
287  $excel = new ilExcel();
288  $excel->addSheet($lng->txt("rating_categories"));
289 
290  // restrict to currently active (probably not needed - see delete())
291  $active = array();
292  foreach (ilRatingCategory::getAllForObject($this->parent_id) as $item) {
293  $active[$item["id"]] = $item["title"];
294  }
295 
296  // title row
297  $row = 1;
298  $excel->setCell($row, 0, $this->export_subobj_title . " (" . $lng->txt("id") . ")");
299  $excel->setCell($row, 1, $this->export_subobj_title);
300  $excel->setCell($row, 2, $lng->txt("rating_export_category") . " (" . $lng->txt("id") . ")");
301  $excel->setCell($row, 3, $lng->txt("rating_export_category"));
302  $excel->setCell($row, 4, $lng->txt("rating_export_date"));
303  $excel->setCell($row, 5, $lng->txt("rating_export_rating"));
304  $excel->setBold("A1:F1");
305 
306  // content rows
307  foreach (ilRating::getExportData($this->parent_id, ilObject::_lookupType($this->parent_id), array_keys($active)) as $item) {
308  // overall rating?
309  if (!$item["sub_obj_id"]) {
310  continue;
311  }
312 
313  $row++;
314 
315  $sub_obj_title = $item["sub_obj_type"];
316  if ($this->export_callback) {
317  $sub_obj_title = call_user_func($this->export_callback, $item["sub_obj_id"], $item["sub_obj_type"]);
318  }
319 
320  $excel->setCell($row, 0, (int) $item["sub_obj_id"]);
321  $excel->setCell($row, 1, $sub_obj_title);
322  $excel->setCell($row, 2, (int) $item["category_id"]);
323  $excel->setCell($row, 3, $active[$item["category_id"]]);
324  $excel->setCell($row, 4, new ilDateTime($item["tstamp"], IL_CAL_UNIX));
325  $excel->setCell($row, 5, $item["rating"]);
326  }
327 
328  $excel->sendToClient(ilObject::_lookupTitle($this->parent_id));
329  }
330 }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
executeCommand()
execute command
This class represents a property form user interface.
global $DIC
Definition: saml.php:7
__construct($a_parent_id, $a_export_callback=null, $a_export_subobj_title=null)
if(!array_key_exists('StateId', $_REQUEST)) $id
static _lookupTitle($a_id)
lookup object title
const IL_CAL_UNIX
static getAllForObject($a_parent_obj_id)
Get all categories for object.
static getExportData($a_obj_id, $a_obj_type, array $a_category_ids=null)
Get export data.
global $ilCtrl
Definition: ilias.php:18
Class ilRatingCategoryGUI.
if(isset($_POST['submit'])) $form
This class represents a text property in a property form.
Date and time handling
setMaxLength($a_maxlength)
Set Max Length.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
This class represents a text area property in a property form.
static delete($a_id)
Delete db entry.
Class ilRatingCategory.
if(empty($password)) $table
Definition: pwgen.php:24
$_POST["username"]
Confirmation screen class.