ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjRootFolderGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 
19 require_once "./Services/Container/classes/class.ilContainerGUI.php";
20 require_once "./Modules/Category/classes/class.ilObjCategoryGUI.php";
21 
23 {
28  function ilObjRootFolderGUI($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
29  {
30  global $lng;
31 
32  $this->type = "root";
33  $this->ilContainerGUI($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
34 
35  $lng->loadLanguageModule("cntr");
36  $lng->loadLanguageModule("obj");
37  }
38 
43  {
44  ilObjCategoryGUI::_importCategoriesForm($this->ref_id, $this->tpl);
45  }
46 
53  {
54  $this->ctrl->returnToParent($this);
55  }
56 
61  {
62  ilObjCategoryGUI::_importCategories($this->ref_id,0);
63  }
64 
65 
70  {
71  ilObjCategoryGUI::_importCategories($this->ref_id,1);
72  }
73 
74 
75  function getTabs(&$tabs_gui)
76  {
77  global $rbacsystem, $lng, $ilHelp;
78 
79  $ilHelp->setScreenIdComponent("root");
80 
81  $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
82 
83  if ($rbacsystem->checkAccess('read',$this->ref_id))
84  {
85  $tabs_gui->addTab('view_content', $lng->txt("content"),
86  $this->ctrl->getLinkTarget($this, ""));
87  }
88 
89  if ($rbacsystem->checkAccess('write',$this->ref_id))
90  {
91  $force_active = ($_GET["cmd"] == "edit")
92  ? true
93  : false;
94  $tabs_gui->addTarget("settings",
95  $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this)
96  , "", $force_active);
97  }
98 
99  // parent tabs (all container: edit_permission, clipboard, trash
100  parent::getTabs($tabs_gui);
101 
102  }
103 
104  function &executeCommand()
105  {
106  global $rbacsystem;
107 
108  $next_class = $this->ctrl->getNextClass($this);
109  $cmd = $this->ctrl->getCmd();
110 
111  // show repository tree
112  $this->showRepTree(true);
113 
114  switch($next_class)
115  {
116  case 'ilcontainerlinklistgui':
117  include_once("Services/Container/classes/class.ilContainerLinkListGUI.php");
118  $link_list_gui =& new ilContainerLinkListGUI();
119  $ret =& $this->ctrl->forwardCommand($link_list_gui);
120  break;
121 
122  // container page editing
123  case "ilcontainerpagegui":
124  $this->prepareOutput(false);
125  $ret = $this->forwardToPageObject();
126  if ($ret != "")
127  {
128  $this->tpl->setContent($ret);
129  }
130  break;
131 
132  case 'ilpermissiongui':
133  $this->prepareOutput();
134  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
135  $perm_gui =& new ilPermissionGUI($this);
136  $ret =& $this->ctrl->forwardCommand($perm_gui);
137  break;
138 
139  case "ilcolumngui":
140  $this->checkPermission("read");
141  $this->prepareOutput();
142  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
143  $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
144  ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId()));
145  $this->renderObject();
146  break;
147 
148  case 'ilobjectcopygui':
149  $this->prepareOutput();
150  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
151  $cp = new ilObjectCopyGUI($this);
152  $cp->setType('root');
153  $this->ctrl->forwardCommand($cp);
154  break;
155 
156  case "ilobjstylesheetgui":
157  $this->forwardToStyleSheet();
158  break;
159 
160  case "ilcommonactiondispatchergui":
161  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
163  $this->ctrl->forwardCommand($gui);
164  break;
165 
166  case 'ilobjecttranslationgui':
167  $this->checkPermissionBool("write");
168  $this->prepareOutput();
169  //$this->tabs_gui->setTabActive('export');
170  $this->setEditTabs("settings_trans");
171  include_once("./Services/Object/classes/class.ilObjectTranslationGUI.php");
172  $transgui = new ilObjectTranslationGUI($this);
173  $this->ctrl->forwardCommand($transgui);
174  break;
175 
176  default:
177 
178  // fix bug http://www.ilias.de/mantis/view.php?id=10305
179  if ($cmd == "infoScreen")
180  {
181  $this->checkPermission("visible");
182  }
183  else
184  {
185  $this->checkPermission("read");
186  }
187  $this->prepareOutput();
188  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
189  $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
190  ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId()));
191 
192  if(!$cmd)
193  {
194  $cmd = "render";
195  }
196 
197  $cmd .= "Object";
198  $this->$cmd();
199 
200  break;
201  }
202  return true;
203  }
204 
208  function renderObject()
209  {
210  global $ilTabs;
211 
212  include_once "Services/Object/classes/class.ilObjectListGUI.php";
213  ilObjectListGUI::prepareJSLinks("",
214  $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "ilnotegui"), "", "", true, false),
215  $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true, false));
216 
217  $ilTabs->activateTab("view_content");
219  return $ret;
220  }
221 
222 
227  {
228  global $lng;
229 
231  $this->tpl->setDescription("");
232  if (!ilContainer::_lookupContainerSetting($this->object->getId(), "hide_header_icon_and_title"))
233  {
234  if ($this->object->getTitle() == "ILIAS")
235  {
236  $this->tpl->setTitle($lng->txt("repository"));
237  }
238  else
239  {
240  if ($this->object->getDescription() != "")
241  {
242  $this->tpl->setDescription($this->object->getDescription()); // #13479
243  }
244  }
245  }
246  }
247 
248  protected function setEditTabs($active_tab = "settings_misc")
249  {
250  $this->tabs_gui->addSubTab("settings_misc",
251  $this->lng->txt("settings"),
252  $this->ctrl->getLinkTarget($this, "edit"));
253 
254  /*$this->tabs_gui->addSubTab("settings_trans",
255  $this->lng->txt("title_and_translations"),
256  $this->ctrl->getLinkTarget($this, "editTranslations"));*/
257 
258  $this->tabs_gui->addSubTab("settings_trans",
259  $this->lng->txt("obj_multilinguality"),
260  $this->ctrl->getLinkTargetByClass("ilobjecttranslationgui", ""));
261 
262 
263  $this->tabs_gui->activateTab("settings");
264  $this->tabs_gui->activateSubTab($active_tab);
265  }
266 
267  function initEditForm()
268  {
269  $this->setEditTabs();
270 
271  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
272  $form = new ilPropertyFormGUI();
273  $form->setFormAction($this->ctrl->getFormAction($this));
274  $form->setTitle($this->lng->txt("repository"));
275 
276 
277  // sorting
278 
279  include_once('Services/Container/classes/class.ilContainerSortingSettings.php');
280  $settings = new ilContainerSortingSettings($this->object->getId());
281 
282  $sort = new ilRadioGroupInputGUI($this->lng->txt('sorting_header'), "sorting");
283  $sort_title = new ilRadioOption($this->lng->txt('sorting_title_header'),
285  $sort_title->setInfo($this->lng->txt('sorting_info_title'));
286  $sort->addOption($sort_title);
287 
288  $sort_manual = new ilRadioOption($this->lng->txt('sorting_manual_header'),
290  $sort_manual->setInfo($this->lng->txt('sorting_info_manual'));
291  $sort->addOption($sort_manual);
292 
293  $sort->setValue($settings->getSortMode());
294  $form->addItem($sort);
295 
296 
297  $this->showCustomIconsEditing(1, $form, false);
298 
299 
300  $hide = new ilCheckboxInputGUI($this->lng->txt("cntr_hide_title_and_icon"), "hide_header_icon_and_title");
301  $hide->setChecked(ilContainer::_lookupContainerSetting($this->object->getId(), "hide_header_icon_and_title"));
302  $form->addItem($hide);
303 
304 
305  $form->addCommandButton("update", $this->lng->txt("save"));
306  $form->addCommandButton("addTranslation", $this->lng->txt("add_translation"));
307 
308  return $form;
309  }
310 
311  function getEditFormValues()
312  {
313  // values are set in initEditForm()
314  }
315 
321  function updateObject()
322  {
323  if (!$this->checkPermissionBool("write"))
324  {
325  $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
326  }
327  else
328  {
329  $form = $this->initEditForm();
330  if($form->checkInput())
331  {
332  include_once('Services/Container/classes/class.ilContainerSortingSettings.php');
333  $settings = new ilContainerSortingSettings($this->object->getId());
334  $settings->setSortMode($form->getInput("sorting"));
335  $settings->update();
336 
337  // save custom icons
338  if ($this->ilias->getSetting("custom_icons"))
339  {
340  if($form->getItemByPostVar("cont_big_icon")->getDeletionFlag())
341  {
342  $this->object->removeBigIcon();
343  }
344  if($form->getItemByPostVar("cont_tiny_icon")->getDeletionFlag())
345  {
346  $this->object->removeTinyIcon();
347  }
348 
349  $this->object->saveIcons($_FILES["cont_big_icon"]['tmp_name'],
350  null, $_FILES["cont_tiny_icon"]['tmp_name']);
351  }
352 
353  // hide icon/title
354  ilContainer::_writeContainerSetting($this->object->getId(),
355  "hide_header_icon_and_title",
356  $form->getInput("hide_header_icon_and_title"));
357 
358  // BEGIN ChangeEvent: Record update
359  global $ilUser;
360  require_once('Services/Tracking/classes/class.ilChangeEvent.php');
361  ilChangeEvent::_recordWriteEvent($this->object->getId(), $ilUser->getId(), 'update');
362  ilChangeEvent::_catchupWriteEvents($this->object->getId(), $ilUser->getId());
363  // END ChangeEvent: Record update
364 
365  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"),true);
366  $this->ctrl->redirect($this, "edit");
367  }
368 
369  // display form to correct errors
370  $this->setEditTabs();
371  $form->setValuesByPost();
372  $this->tpl->setContent($form->getHTML());
373  }
374  }
375 
379  function editTranslationsObject($a_get_post_values = false)
380  {
381  global $tpl;
382 
383 
384  $this->ctrl->redirectByClass("ilobjecttranslationgui", "");
385 
386  $this->lng->loadLanguageModule($this->object->getType());
387  $this->setEditTabs("settings_trans");
388 
389  include_once("./Services/Object/classes/class.ilObjectTranslationTableGUI.php");
390  $table = new ilObjectTranslationTableGUI($this, "editTranslations", true,
391  "Translation");
392  if ($a_get_post_values)
393  {
394  $vals = array();
395  foreach($_POST["title"] as $k => $v)
396  {
397  $vals[] = array("title" => $v,
398  "desc" => $_POST["desc"][$k],
399  "lang" => $_POST["lang"][$k],
400  "default" => ($_POST["default"] == $k));
401  }
402  $table->setData($vals);
403  }
404  else
405  {
406  $data = $this->object->getTranslations();
407  foreach($data["Fobject"] as $k => $v)
408  {
409  $data["Fobject"][$k]["default"] = ($k == $data["default_language"]);
410  }
411  $table->setData($data["Fobject"]);
412  }
413  $tpl->setContent($table->getHTML());
414  }
415 
420  {
421  if (!$this->checkPermissionBool("write"))
422  {
423  $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
424  }
425 
426  // default language set?
427  if (!isset($_POST["default"]) && count($_POST["lang"]) > 0)
428  {
429  ilUtil::sendFailure($this->lng->txt("msg_no_default_language"));
430  return $this->editTranslationsObject(true);
431  }
432 
433  // all languages set?
434  if (array_key_exists("",$_POST["lang"]))
435  {
436  ilUtil::sendFailure($this->lng->txt("msg_no_language_selected"));
437  return $this->editTranslationsObject(true);
438  }
439 
440  // no single language is selected more than once?
441  if (count(array_unique($_POST["lang"])) < count($_POST["lang"]))
442  {
443  ilUtil::sendFailure($this->lng->txt("msg_multi_language_selected"));
444  return $this->editTranslationsObject(true);
445  }
446 
447  // save the stuff
448  $this->object->removeTranslations();
449 
450  if(sizeof($_POST["title"]))
451  {
452  foreach($_POST["title"] as $k => $v)
453  {
454  // update object data if default
455  $is_default = ($_POST["default"] == $k);
456  if($is_default)
457  {
458  $this->object->setTitle(ilUtil::stripSlashes($v));
459  $this->object->setDescription(ilUtil::stripSlashes($_POST["desc"][$k]));
460  $this->object->update();
461  }
462 
463  $this->object->addTranslation(
465  ilUtil::stripSlashes($_POST["desc"][$k]),
466  ilUtil::stripSlashes($_POST["lang"][$k]),
467  $is_default);
468  }
469  }
470  else
471  {
472  // revert to original title
473  $this->object->setTitle("ILIAS");
474  $this->object->setDescription("");
475  $this->object->update();
476  }
477 
478  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
479  $this->ctrl->redirect($this, "editTranslations");
480  }
481 
486  {
487  if(sizeof($_POST["title"]))
488  {
489  $k = max(array_keys($_POST["title"]))+1;
490  }
491  else
492  {
493  $k = 0;
494  }
495  $_POST["title"][$k] = "";
496  $this->editTranslationsObject(true);
497  }
498 
503  {
504  $del_default = true;
505  foreach($_POST["title"] as $k => $v)
506  {
507  if ($_POST["check"][$k])
508  {
509  unset($_POST["title"][$k]);
510  unset($_POST["desc"][$k]);
511  unset($_POST["lang"][$k]);
512  if($_POST["default"] == $k)
513  {
514  $del_default = true;
515  }
516  }
517  }
518  // set new default
519  if($del_default && sizeof($_POST["title"]))
520  {
521  $_POST["default"] = array_shift(array_keys($_POST["title"]));
522  }
523  $this->saveTranslationsObject();
524  }
525 
529  function _goto($a_target)
530  {
531  global $ilAccess, $ilErr, $lng;
532 
534  }
535 
541  protected function showSortingSettings()
542  {
543  $this->tpl->setVariable('TXT_SORTING',$this->lng->txt('sorting_header'));
544  $this->tpl->setVariable('TXT_SORT_TITLE',$this->lng->txt('sorting_title_header'));
545  $this->tpl->setVariable('INFO_SORT_TITLE',$this->lng->txt('sorting_info_title'));
546  $this->tpl->setVariable('TXT_SORT_MANUAL',$this->lng->txt('sorting_manual_header'));
547  $this->tpl->setVariable('INFO_SORT_MANUAL',$this->lng->txt('sorting_info_manual'));
548 
549  include_once('Services/Container/classes/class.ilContainerSortingSettings.php');
550  if($this->getCreationMode())
551  {
552  $settings = new ilContainerSortingSettings(0);
553  }
554  else
555  {
556  $settings = new ilContainerSortingSettings($this->object->getId());
557  }
558 
559 
560  $this->tpl->setVariable('RADIO_SORT_TITLE',ilUtil::formRadioButton(
561  $settings->getSortMode() == ilContainer::SORT_TITLE,
562  'sorting',
564  $this->tpl->setVariable('RADIO_SORT_MANUAL',ilUtil::formRadioButton(
565  $settings->getSortMode() == ilContainer::SORT_MANUAL,
566  'sorting',
568  }
569 
570 }
571 ?>