ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
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
20require_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 {
48 parent::viewObject();
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");
66 $ret = parent::renderObject();
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
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());
257 $sort->setSortMode(ilContainer::SORT_INHERIT);
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
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
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?>
$filename
Definition: buildRTE.php:89
$_GET["client_id"]
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Class ilContainerGUI.
& forwardToPageObject()
forward command to page object
getEditFormValues()
Get values for edit form.
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
showRepTree($a_initial_call=false)
Show tree.
forwardToStyleSheet()
Forward to style object.
showCustomIconsEditing($a_input_colspan=1, ilPropertyFormGUI $a_form=null, $a_as_section=true)
show edit section of custom icons for container
saveSortingSettings(ilPropertyFormGUI $form)
Save sorting settings.
Class ilCourseContentGUI.
GUI class for didactic template settings inside repository objects.
Export User Interface Class.
Class ilInfoScreenGUI.
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
Class ilObjUserTrackingGUI.
static _modifyItemGUI($a_item_list_gui, $a_cmd_class, $a_item_data, $a_show_path, $a_abo_status, $a_course_ref_id, $a_course_obj_id, $a_parent_ref_id=0)
We need a static version of this, e.g.
Class ilObjFolderGUI.
setFolderTree($a_tree)
set tree
initEditCustomForm(ilPropertyFormGUI $a_form)
Add custom fields to update form.
modifyItemGUI($a_item_list_gui, $a_item_data, $a_show_path)
Modify Item ListGUI for presentation in container.
editIconsObject($a_form=null)
Edit folder icons.
renderObject()
Render folder.
getEditFormCustomValues(array &$a_values)
Add values to custom edit fields.
afterSave(ilObject $a_new_object)
Post (successful) object creation hook.
ilObjFolderGUI($a_data, $a_id=0, $a_call_by_reference=true, $a_prepare_output=false)
Constructor @access public.
viewObject()
View folder.
updateIconsObject()
update container icons
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
updateCustom(ilPropertyFormGUI $a_form)
Insert custom update form values into object.
setSubTabs($a_tab)
Set sub tabs.
static _goto($a_target)
goto target group
getTabs(&$tabs_gui)
Get tabs.
importFileObject()
Import object.
& executeCommand()
execute command note: this method is overwritten in all container objects
showSummaryObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
infoScreen()
show information screen
GUI class for the workflow of copying objects.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
prepareOutput()
prepare output
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
initDidacticTemplate(ilPropertyFormGUI $form)
Show didactic template types.
addHeaderAction()
Add header action menu.
initEditForm()
Init object edit form.
redirectToRefId($a_ref_id, $a_cmd="")
redirects to (repository) view per ref id usually to a container and usually used at the end of a sav...
Class ilObject Basic functions for all objects.
static _lookupObjId($a_id)
getRefId()
get reference id @access public
getId()
get object id @access public
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
ILIAS Setting Class.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static deliverFile($a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
$_POST['username']
Definition: cron.php:12
$GLOBALS['ct_recipient']
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']
global $ilCtrl
Definition: ilias.php:18
redirection script todo: (a better solution should control the processing via a xml file)
global $ilSetting
Definition: privfeed.php:40
$cmd
Definition: sahs_server.php:35
global $ilUser
Definition: imgupload.php:15