ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjFolderGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
20 require_once "./Services/Container/classes/class.ilContainerGUI.php";
21 
23 {
24  var $folder_tree; // folder tree
25 
30  function ilObjFolderGUI($a_data, $a_id = 0, $a_call_by_reference = true, $a_prepare_output = false)
31  {
32  $this->type = "fold";
33  parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output, false);
34  }
35 
36 
40  function viewObject()
41  {
42  global $tree;
43 
44  $this->checkPermission('read');
45 
46  if (strtolower($_GET["baseClass"]) == "iladministrationgui")
47  {
49  return true;
50  }
51  $this->renderObject();
52  $this->tabs_gui->setTabActive('view_content');
53  return true;
54  }
55 
59  function renderObject()
60  {
61  global $ilTabs;
62 
63  $this->checkPermission('read');
64 
65  $ilTabs->activateTab("view_content");
67  return $ret;
68  }
69 
70  function &executeCommand()
71  {
72  global $ilUser,$ilCtrl;
73 
74  $next_class = $this->ctrl->getNextClass($this);
75  $cmd = $this->ctrl->getCmd();
76 
77  // show repository tree
78  $this->showRepTree(true);
79 
80  switch ($next_class)
81  {
82  case 'ilpermissiongui':
83  $this->prepareOutput();
84  $this->tabs_gui->setTabActive('perm_settings');
85  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
86  $perm_gui =& new ilPermissionGUI($this);
87  $ret =& $this->ctrl->forwardCommand($perm_gui);
88  break;
89 
90  case 'ilcoursecontentgui':
91  $this->prepareOutput();
92  include_once './Modules/Course/classes/class.ilCourseContentGUI.php';
93  $course_content_obj = new ilCourseContentGUI($this);
94  $this->ctrl->forwardCommand($course_content_obj);
95  break;
96 
97  case "illearningprogressgui":
98  $this->prepareOutput();
99  include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php';
100 
102  $this->object->getRefId(),
103  $_GET['user_id'] ? $_GET['user_id'] : $ilUser->getId());
104  $this->ctrl->forwardCommand($new_gui);
105  $this->tabs_gui->setTabActive('learning_progress');
106  break;
107 
108  // container page editing
109  case "ilcontainerpagegui":
110  $this->prepareOutput(false);
111  $ret = $this->forwardToPageObject();
112  if ($ret != "")
113  {
114  $this->tpl->setContent($ret);
115  }
116  break;
117 
118  case 'ilinfoscreengui':
119  $this->prepareOutput();
120  $this->infoScreen();
121  break;
122 
123  case 'ilobjectcopygui':
124  $this->prepareOutput();
125 
126  include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
127  $cp = new ilObjectCopyGUI($this);
128  $cp->setType('fold');
129  $this->ctrl->forwardCommand($cp);
130  break;
131 
132  case "ilobjstylesheetgui":
133  $this->forwardToStyleSheet();
134  break;
135 
136  case 'ilexportgui':
137  $this->prepareOutput();
138 
139  $this->tabs_gui->setTabActive('export');
140  include_once './Services/Export/classes/class.ilExportGUI.php';
141  $exp = new ilExportGUI($this);
142  $exp->addFormat('xml');
143  $this->ctrl->forwardCommand($exp);
144  break;
145 
146  case "ilcommonactiondispatchergui":
147  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
149  $this->ctrl->forwardCommand($gui);
150  break;
151 
152  case 'ildidactictemplategui':
153  $this->ctrl->setReturn($this,'edit');
154  include_once './Services/DidacticTemplate/classes/class.ilDidacticTemplateGUI.php';
155  $did = new ilDidacticTemplateGUI($this);
156  $this->ctrl->forwardCommand($did);
157  break;
158  case 'ilcolumngui':
159  $this->tabs_gui->setTabActive('none');
160  $this->checkPermission("read");
161  $this->viewObject();
162  break;
163 
164  default:
165 
166  $this->prepareOutput();
167  // Dirty hack for course timings view
168  if($this->forwardToTimingsView())
169  {
170  break;
171  }
172 
173  if (empty($cmd))
174  {
175  $cmd = "view";
176  }
177  $cmd .= "Object";
178  $this->$cmd();
179  break;
180  }
181 
182  $this->addHeaderAction();
183  }
184 
188  function setFolderTree($a_tree)
189  {
190  $this->folder_tree =& $a_tree;
191  }
192 
197  public function importFileObject()
198  {
199  global $lng;
200 
201  if(parent::importFileObject())
202  {
203  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
204  $this->ctrl->returnToParent($this);
205  }
206  }
207 
208 
209 
210  protected function initEditCustomForm(ilPropertyFormGUI $a_form)
211  {
212  // Show didactic template type
213  $this->initDidacticTemplate($a_form);
214 
215  $this->initSortingForm(
216  $a_form,
217  array(
222  )
223  );
224  }
225 
226  protected function getEditFormCustomValues(array &$a_values)
227  {
228  // we cannot use $this->object->getOrderType()
229  // if set to inherit it will be translated to parent setting
230  #include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
231  #$sort = new ilContainerSortingSettings($this->object->getId());
232  #$a_values["sor"] = $sort->getSortMode();
233  }
234 
235  protected function updateCustom(ilPropertyFormGUI $a_form)
236  {
237  $this->saveSortingSettings($a_form);
238  }
239 
240  // BEGIN ChangeEvent show info screen on folder object
246  function showSummaryObject()
247  {
248  $this->ctrl->setCmd("showSummary");
249  $this->ctrl->setCmdClass("ilinfoscreengui");
250  $this->infoScreen();
251  }
252 
253  protected function afterSave(ilObject $a_new_object)
254  {
255  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
256  $sort = new ilContainerSortingSettings($a_new_object->getId());
258  $sort->update();
259 
260  // always send a message
261  ilUtil::sendSuccess($this->lng->txt("fold_added"),true);
262  $this->ctrl->setParameter($this, "ref_id", $a_new_object->getRefId());
263  $this->redirectToRefId($a_new_object->getRefId(), "");
264  }
265 
271  function infoScreenObject()
272  {
273  $this->ctrl->setCmd("showSummary");
274  $this->ctrl->setCmdClass("ilinfoscreengui");
275  $this->infoScreen();
276  }
277 
281  function infoScreen()
282  {
283  global $ilAccess;
284 
285  if (!$ilAccess->checkAccess("visible", "", $this->ref_id))
286  {
287  $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
288  }
289 
290  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
291  $info = new ilInfoScreenGUI($this);
292 
293  $info->enablePrivateNotes();
294 
295  if ($ilAccess->checkAccess("read", "", $_GET["ref_id"]))
296  {
297  $info->enableNews();
298  }
299 
300  // no news editing for files, just notifications
301  $info->enableNewsEditing(false);
302  if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]))
303  {
304  $news_set = new ilSetting("news");
305  $enable_internal_rss = $news_set->get("enable_rss_for_internal");
306 
307  if ($enable_internal_rss)
308  {
309  $info->setBlockProperty("news", "settings", true);
310  $info->setBlockProperty("news", "public_notifications_option", true);
311  }
312  }
313 
314 
315  // standard meta data
316  $info->addMetaDataSections($this->object->getId(),0, $this->object->getType());
317 
318  // forward the command
319  $this->ctrl->forwardCommand($info);
320  }
321  // END ChangeEvent show info screen on folder object
322 
326  function getTabs(&$tabs_gui)
327  {
328  global $rbacsystem, $ilUser, $lng, $ilCtrl,$ilAccess, $ilHelp;
329 
330  $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
331 
332  $ilHelp->setScreenIdComponent("fold");
333 
334  $tabs_gui->setTabActive("");
335  if ($rbacsystem->checkAccess('read',$this->ref_id))
336  {
337  $tabs_gui->addTab("view_content", $lng->txt("content"),
338  $this->ctrl->getLinkTarget($this, ""));
339 
340  //BEGIN ChangeEvent add info tab to category object
341  $force_active = ($this->ctrl->getNextClass() == "ilinfoscreengui"
342  || strtolower($_GET["cmdClass"]) == "ilnotegui")
343  ? true
344  : false;
345  $tabs_gui->addTarget("info_short",
346  $this->ctrl->getLinkTargetByClass(
347  array("ilobjfoldergui", "ilinfoscreengui"), "showSummary"),
348  array("showSummary","", "infoScreen"),
349  "", "", $force_active);
350  //END ChangeEvent add info tab to category object
351  }
352 
353  if ($rbacsystem->checkAccess('write',$this->ref_id))
354  {
355  $tabs_gui->addTarget("settings",
356  $this->ctrl->getLinkTarget($this, "edit"), "edit", "", "", ($ilCtrl->getCmd() == "edit"));
357  }
358 
359  // learning progress
360  include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
361  if(ilLearningProgressAccess::checkAccess($this->object->getRefId()))
362  {
363  $tabs_gui->addTarget('learning_progress',
364  $this->ctrl->getLinkTargetByClass(array('ilobjfoldergui','illearningprogressgui'),''),
365  '',
366  array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui','illplistofprogressgui'));
367  }
368 
369  if($ilAccess->checkAccess('write','',$this->object->getRefId()))
370  {
371  $tabs_gui->addTarget(
372  'export',
373  $this->ctrl->getLinkTargetByClass('ilexportgui',''),
374  'export',
375  'ilexportgui'
376  );
377  }
378 
379 
380  if ($rbacsystem->checkAccess('edit_permission',$this->ref_id))
381  {
382  $tabs_gui->addTarget("perm_settings",
383  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
384  }
385 
386  // show clipboard in repository
387  if ($_GET["baseClass"] == "ilRepositoryGUI" and !empty($_SESSION['il_rep_clipboard']))
388  {
389  $tabs_gui->addTarget("clipboard",
390  $this->ctrl->getLinkTarget($this, "clipboard"), "clipboard", get_class($this));
391  }
392 
393  }
394 
398  public static function _goto($a_target)
399  {
400  global $ilAccess, $ilErr, $lng;
401 
402  if ($ilAccess->checkAccess("read", "", $a_target))
403  {
405  }
406  $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
407  }
408 
409 
410  public function downloadFolderObject () {
411  global $ilAccess, $ilErr, $lng;
412 
413  if (!$ilAccess->checkAccess("read", "", $this->ref_id))
414  {
415  $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
416  }
417  $filename = $this->object->downloadFolder();
418  ilUtil::deliverFile($filename, ilUtil::getASCIIFilename($this->object->getTitle().".zip"));
419  }
420 
424  function modifyItemGUI($a_item_list_gui, $a_item_data, $a_show_path)
425  {
426  global $tree;
427 
428  // if folder is in a course, modify item list gui according to course requirements
429  if ($course_ref_id = $tree->checkForParentType($this->object->getRefId(),'crs'))
430  {
431  include_once("./Modules/Course/classes/class.ilObjCourse.php");
432  include_once("./Modules/Course/classes/class.ilObjCourseGUI.php");
433  $course_obj_id = ilObject::_lookupObjId($course_ref_id);
434  ilObjCourseGUI::_modifyItemGUI($a_item_list_gui, 'ilcoursecontentgui', $a_item_data, $a_show_path,
435  ilObjCourse::_lookupAboStatus($course_obj_id), $course_ref_id, $course_obj_id,
436  $this->object->getRefId());
437  }
438  }
439 
440  protected function forwardToTimingsView()
441  {
442  global $tree;
443 
444  if(!$crs_ref = $tree->checkForParentType($this->ref_id, 'crs'))
445  {
446  return false;
447  }
448  include_once './Modules/Course/classes/class.ilObjCourse.php';
449  if(!$this->ctrl->getCmd() and ilObjCourse::_lookupViewMode(ilObject::_lookupObjId($crs_ref)) == ilContainer::VIEW_TIMING)
450  {
451  if(!isset($_SESSION['crs_timings'])) {
452  $_SESSION['crs_timings'] = true;
453  }
454 
455  if($_SESSION['crs_timings'] == true) {
456  include_once './Modules/Course/classes/class.ilCourseContentGUI.php';
457  $course_content_obj = new ilCourseContentGUI($this);
458  $this->ctrl->setCmdClass(get_class($course_content_obj));
459  $this->ctrl->setCmd('editUserTimings');
460  $this->ctrl->forwardCommand($course_content_obj);
461  return true;
462  }
463  }
464  $_SESSION['crs_timings'] = false;
465  return false;
466  }
467 
474  public function editObject()
475  {
476  global $ilTabs, $ilErr;
477 
478  $this->setSubTabs("settings");
479  $ilTabs->activateTab("settings");
480 
481  if (!$this->checkPermissionBool("write"))
482  {
483  $ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$ilErr->MESSAGE);
484  }
485 
486  $form = $this->initEditForm();
487  $values = $this->getEditFormValues();
488  if($values)
489  {
490  $form->setValuesByArray($values,TRUE);
491  }
492  $GLOBALS['tpl']->setContent($form->getHTML());
493  }
494 
495 
499  function setSubTabs($a_tab)
500  {
501  global $ilTabs, $lng;
502 
503  $ilTabs->addSubTab("settings",
504  $lng->txt("fold_settings"),
505  $this->ctrl->getLinkTarget($this,'edit'));
506 
507  // custom icon
508  if ($this->ilias->getSetting("custom_icons"))
509  {
510  $ilTabs->addSubTab("icons",
511  $lng->txt("icon_settings"),
512  $this->ctrl->getLinkTarget($this,'editIcons'));
513  }
514 
515  $ilTabs->activateSubTab($a_tab);
516  $ilTabs->activateTab("settings");
517  }
518 
519 
523 
527  function editIconsObject($a_form = null)
528  {
529  global $tpl;
530 
531  $this->checkPermission('write');
532 
533  $this->tabs_gui->setTabActive('settings');
534 
535  if(!$a_form)
536  {
537  $a_form = $this->initIconsForm();
538  }
539 
540  $tpl->setContent($a_form->getHTML());
541  }
542 
543  function initIconsForm()
544  {
545  $this->setSubTabs("icons");
546 
547  include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
548  $form = new ilPropertyFormGUI();
549  $form->setFormAction($this->ctrl->getFormAction($this));
550 
551  $this->showCustomIconsEditing(1, $form);
552 
553  // $form->setTitle($this->lng->txt('edit_grouping'));
554  $form->addCommandButton('updateIcons', $this->lng->txt('save'));
555 
556  return $form;
557  }
558 
562  function updateIconsObject()
563  {
564  global $ilSetting;
565 
566  $this->checkPermission('write');
567 
568  $form = $this->initIconsForm();
569  if($form->checkInput())
570  {
571  //save custom icons
572  if ($ilSetting->get("custom_icons"))
573  {
574  if($_POST["cont_icon_delete"])
575  {
576  $this->object->removeCustomIcon();
577  }
578  $this->object->saveIcons($_FILES["cont_icon"]['tmp_name']);
579  }
580  if ($_FILES["cont_icon"]['tmp_name'] || $_POST["cont_icon_delete"])
581  {
582  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"),true);
583  }
584  $this->ctrl->redirect($this,"editIcons");
585  }
586 
587  $form->setValuesByPost();
588  $this->editIconsObject($form);
589  }
590 
591 
592 
593 } // END class.ilObjFolderGUI
594 ?>