ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
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
20{
25 public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
26 {
27 global $lng;
28
29 $this->type = "root";
30 parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
31
32 $lng->loadLanguageModule("cntr");
33 $lng->loadLanguageModule("obj");
34 }
35
40 {
41 ilObjCategoryGUI::_importCategoriesForm($this->ref_id, $this->tpl);
42 }
43
49 public function importCancelledObject()
50 {
51 $this->ctrl->returnToParent($this);
52 }
53
57 public function importCategoriesObject()
58 {
60 }
61
62
67 {
69 }
70
71
72 public function getTabs()
73 {
74 global $rbacsystem, $lng, $ilHelp;
75
76 $ilHelp->setScreenIdComponent("root");
77
78 $this->ctrl->setParameter($this, "ref_id", $this->ref_id);
79
80 if ($rbacsystem->checkAccess('read', $this->ref_id)) {
81 $this->tabs_gui->addTab(
82 'view_content',
83 $lng->txt("content"),
84 $this->ctrl->getLinkTarget($this, "")
85 );
86 }
87
88 if ($rbacsystem->checkAccess('write', $this->ref_id)) {
89 $force_active = ($_GET["cmd"] == "edit")
90 ? true
91 : false;
92 $this->tabs_gui->addTarget(
93 "settings",
94 $this->ctrl->getLinkTarget($this, "edit"),
95 "edit",
96 get_class($this),
97 "",
98 $force_active
99 );
100 }
101
102 // parent tabs (all container: edit_permission, clipboard, trash
103 parent::getTabs();
104 }
105
106 public function executeCommand()
107 {
108 global $rbacsystem;
109
110 $next_class = $this->ctrl->getNextClass($this);
111 $cmd = $this->ctrl->getCmd();
112
113
114 switch ($next_class) {
115 case 'ilreputilgui':
116 $ru = new \ilRepUtilGUI($this);
117 $this->ctrl->setReturn($this, 'trash');
118 $this->ctrl->forwardCommand($ru);
119 break;
120
121
122 case 'ilcontainerlinklistgui':
123 include_once("Services/Container/classes/class.ilContainerLinkListGUI.php");
124 $link_list_gui = new ilContainerLinkListGUI();
125 $ret = &$this->ctrl->forwardCommand($link_list_gui);
126 break;
127
128 // container page editing
129 case "ilcontainerpagegui":
130 $this->prepareOutput(false);
131 $ret = $this->forwardToPageObject();
132 if ($ret != "") {
133 $this->tpl->setContent($ret);
134 }
135 break;
136
137 case 'ilpermissiongui':
138 $this->prepareOutput();
139 $this->tabs_gui->activateTab('perm_settings');
140 $perm_gui = new ilPermissionGUI($this);
141 $ret = $this->ctrl->forwardCommand($perm_gui);
142 break;
143
144 case "ilcolumngui":
145 $this->checkPermission("read");
146 $this->prepareOutput();
147 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
148 $this->tpl->setVariable(
149 "LOCATION_CONTENT_STYLESHEET",
150 ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId())
151 );
152 $this->renderObject();
153 break;
154
155 case 'ilobjectcopygui':
156 $this->prepareOutput();
157 include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
158 $cp = new ilObjectCopyGUI($this);
159 $cp->setType('root');
160 $this->ctrl->forwardCommand($cp);
161 break;
162
163 case "ilobjstylesheetgui":
164 $this->forwardToStyleSheet();
165 break;
166
167 case "ilcommonactiondispatchergui":
168 include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
170 $this->ctrl->forwardCommand($gui);
171 break;
172
173 case 'ilobjecttranslationgui':
174 $this->checkPermissionBool("write");
175 $this->prepareOutput();
176 //$this->tabs_gui->setTabActive('export');
177 $this->setEditTabs("settings_trans");
178 include_once("./Services/Object/classes/class.ilObjectTranslationGUI.php");
179 $transgui = new ilObjectTranslationGUI($this);
180 $this->ctrl->forwardCommand($transgui);
181 break;
182
183 default:
184 if ($cmd == "infoScreen") {
185 $this->checkPermission("visible");
186 } else {
187 try {
188 $this->checkPermission("read");
189 } catch (ilObjectException $exception) {
190 $this->ctrl->redirectToURL("login.php?client_id=" . CLIENT_ID . "&cmd=force_login");
191 }
192 }
193 $this->prepareOutput();
194 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
195 $this->tpl->setVariable(
196 "LOCATION_CONTENT_STYLESHEET",
197 ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId())
198 );
199
200 if (!$cmd) {
201 $cmd = "render";
202 }
203
204 $cmd .= "Object";
205 $this->$cmd();
206
207 break;
208 }
209 return true;
210 }
211
215 public function renderObject()
216 {
217 global $ilTabs;
218
219 include_once "Services/Object/classes/class.ilObjectListGUI.php";
220 ilObjectListGUI::prepareJSLinks(
221 "",
222 $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "ilnotegui"), "", "", true, false),
223 $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true, false)
224 );
225
226 $ilTabs->activateTab("view_content");
227 $ret = parent::renderObject();
228 return $ret;
229 }
230
236 public function viewObject()
237 {
238 $this->checkPermission('read');
239
240 if (strtolower($_GET["baseClass"]) == "iladministrationgui") {
241 parent::viewObject();
242 return true;
243 }
244
245 $this->renderObject();
246 return true;
247 }
248
249
250
254 public function setTitleAndDescription()
255 {
256 global $lng;
257
258 parent::setTitleAndDescription();
259 $this->tpl->setDescription("");
260 if (!ilContainer::_lookupContainerSetting($this->object->getId(), "hide_header_icon_and_title")) {
261 if ($this->object->getTitle() == "ILIAS") {
262 $this->tpl->setTitle($lng->txt("repository"));
263 } else {
264 if ($this->object->getDescription() != "") {
265 $this->tpl->setDescription($this->object->getDescription()); // #13479
266 }
267 }
268 }
269 }
270
271 protected function setEditTabs($active_tab = "settings_misc")
272 {
273 $this->tabs_gui->addSubTab(
274 "settings_misc",
275 $this->lng->txt("settings"),
276 $this->ctrl->getLinkTarget($this, "edit")
277 );
278
279 /*$this->tabs_gui->addSubTab("settings_trans",
280 $this->lng->txt("title_and_translations"),
281 $this->ctrl->getLinkTarget($this, "editTranslations"));*/
282
283 $this->tabs_gui->addSubTab(
284 "settings_trans",
285 $this->lng->txt("obj_multilinguality"),
286 $this->ctrl->getLinkTargetByClass("ilobjecttranslationgui", "")
287 );
288
289
290 $this->tabs_gui->activateTab("settings");
291 $this->tabs_gui->activateSubTab($active_tab);
292 }
293
294 public function initEditForm()
295 {
296 $this->setEditTabs();
297 $obj_service = $this->getObjectService();
298
299 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
300 $form = new ilPropertyFormGUI();
301 $form->setFormAction($this->ctrl->getFormAction($this));
302 $form->setTitle($this->lng->txt("repository"));
303
304 // presentation
305 $pres = new ilFormSectionHeaderGUI();
306 $pres->setTitle($this->lng->txt('obj_presentation'));
307 $form->addItem($pres);
308
309 // list presentation
310 $form = $this->initListPresentationForm($form);
311
312 $this->initSortingForm(
313 $form,
314 array(
317 ilcontainer::SORT_MANUAL
318 )
319 );
320
321
322 $this->showCustomIconsEditing(1, $form, false);
323
324 $form = $obj_service->commonSettings()->legacyForm($form, $this->object)->addTitleIconVisibility();
325
326 //$hide = new ilCheckboxInputGUI($this->lng->txt("cntr_hide_title_and_icon"), "hide_header_icon_and_title");
327 //$hide->setChecked(ilContainer::_lookupContainerSetting($this->object->getId(), "hide_header_icon_and_title"));
328 //$form->addItem($hide);
329
330
331 $form->addCommandButton("update", $this->lng->txt("save"));
332 $form->addCommandButton("addTranslation", $this->lng->txt("add_translation"));
333
334 return $form;
335 }
336
337 public function getEditFormValues()
338 {
339 // values are set in initEditForm()
340 }
341
347 public function updateObject()
348 {
349 global $ilSetting;
350
351 $obj_service = $this->getObjectService();
352
353 if (!$this->checkPermissionBool("write")) {
354 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
355 } else {
356 $form = $this->initEditForm();
357 if ($form->checkInput()) {
358 $this->saveSortingSettings($form);
359
360 // list presentation
361 $this->saveListPresentation($form);
362
363 if ($ilSetting->get('custom_icons')) {
364 global $DIC;
366 $customIconFactory = $DIC['object.customicons.factory'];
367 $customIcon = $customIconFactory->getByObjId($this->object->getId(), $this->object->getType());
368
370 $fileData = (array) $form->getInput('cont_icon');
371 $item = $form->getItemByPostVar('cont_icon');
372
373 if ($item->getDeletionFlag()) {
374 $customIcon->remove();
375 }
376
377 if ($fileData['tmp_name']) {
378 $customIcon->saveFromHttpRequest();
379 }
380 // cognos-blu-patch: end
381 }
382
383 // custom icon
384 $obj_service->commonSettings()->legacyForm($form, $this->object)->saveTitleIconVisibility();
385
386 // hide icon/title
387 //ilContainer::_writeContainerSetting($this->object->getId(),
388 // "hide_header_icon_and_title",
389 // $form->getInput("hide_header_icon_and_title"));
390
391 // BEGIN ChangeEvent: Record update
392 global $ilUser;
393 require_once('Services/Tracking/classes/class.ilChangeEvent.php');
394 ilChangeEvent::_recordWriteEvent($this->object->getId(), $ilUser->getId(), 'update');
395 ilChangeEvent::_catchupWriteEvents($this->object->getId(), $ilUser->getId());
396 // END ChangeEvent: Record update
397
398 ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
399 $this->ctrl->redirect($this, "edit");
400 }
401
402 // display form to correct errors
403 $this->setEditTabs();
404 $form->setValuesByPost();
405 $this->tpl->setContent($form->getHTML());
406 }
407 }
408
412 public function editTranslationsObject($a_get_post_values = false)
413 {
414 global $tpl;
415
416
417 $this->ctrl->redirectByClass("ilobjecttranslationgui", "");
418
419 $this->lng->loadLanguageModule($this->object->getType());
420 $this->setEditTabs("settings_trans");
421
422 include_once("./Services/Object/classes/class.ilObjectTranslationTableGUI.php");
423 $table = new ilObjectTranslationTableGUI(
424 $this,
425 "editTranslations",
426 true,
427 "Translation"
428 );
429 if ($a_get_post_values) {
430 $vals = array();
431 foreach ($_POST["title"] as $k => $v) {
432 $vals[] = array("title" => $v,
433 "desc" => $_POST["desc"][$k],
434 "lang" => $_POST["lang"][$k],
435 "default" => ($_POST["default"] == $k));
436 }
437 $table->setData($vals);
438 } else {
439 $data = $this->object->getTranslations();
440 foreach ($data["Fobject"] as $k => $v) {
441 $data["Fobject"][$k]["default"] = ($k == $data["default_language"]);
442 }
443 $table->setData($data["Fobject"]);
444 }
445 $tpl->setContent($table->getHTML());
446 }
447
451 public function saveTranslationsObject()
452 {
453 if (!$this->checkPermissionBool("write")) {
454 $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
455 }
456
457 // default language set?
458 if (!isset($_POST["default"]) && count($_POST["lang"]) > 0) {
459 ilUtil::sendFailure($this->lng->txt("msg_no_default_language"));
460 return $this->editTranslationsObject(true);
461 }
462
463 // all languages set?
464 if (array_key_exists("", $_POST["lang"])) {
465 ilUtil::sendFailure($this->lng->txt("msg_no_language_selected"));
466 return $this->editTranslationsObject(true);
467 }
468
469 // no single language is selected more than once?
470 if (count(array_unique($_POST["lang"])) < count($_POST["lang"])) {
471 ilUtil::sendFailure($this->lng->txt("msg_multi_language_selected"));
472 return $this->editTranslationsObject(true);
473 }
474
475 // save the stuff
476 $this->object->removeTranslations();
477
478 if (sizeof($_POST["title"])) {
479 foreach ($_POST["title"] as $k => $v) {
480 // update object data if default
481 $is_default = ($_POST["default"] == $k);
482 if ($is_default) {
483 $this->object->setTitle(ilUtil::stripSlashes($v));
484 $this->object->setDescription(ilUtil::stripSlashes($_POST["desc"][$k]));
485 $this->object->update();
486 }
487
488 $this->object->addTranslation(
490 ilUtil::stripSlashes($_POST["desc"][$k]),
491 ilUtil::stripSlashes($_POST["lang"][$k]),
492 $is_default
493 );
494 }
495 } else {
496 // revert to original title
497 $this->object->setTitle("ILIAS");
498 $this->object->setDescription("");
499 $this->object->update();
500 }
501
502 ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
503 $this->ctrl->redirect($this, "editTranslations");
504 }
505
509 public function addTranslationObject()
510 {
511 if (sizeof($_POST["title"])) {
512 $k = max(array_keys($_POST["title"])) + 1;
513 } else {
514 $k = 0;
515 }
516 $_POST["title"][$k] = "";
517 $this->editTranslationsObject(true);
518 }
519
523 public function deleteTranslationsObject()
524 {
525 $del_default = true;
526 foreach ($_POST["title"] as $k => $v) {
527 if ($_POST["check"][$k]) {
528 unset($_POST["title"][$k]);
529 unset($_POST["desc"][$k]);
530 unset($_POST["lang"][$k]);
531 if ($_POST["default"] == $k) {
532 $del_default = true;
533 }
534 }
535 }
536 // set new default
537 if ($del_default && sizeof($_POST["title"])) {
538 $_POST["default"] = array_shift(array_keys($_POST["title"]));
539 }
540 $this->saveTranslationsObject();
541 }
542
546 public static function _goto($a_target)
547 {
548 global $ilAccess, $ilErr, $lng;
549
551 }
552}
$_GET["client_id"]
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
static _catchupWriteEvents($obj_id, $usr_id, $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
static _recordWriteEvent($obj_id, $usr_id, $action, $parent_obj_id=null)
Records a write event.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Class ilContainerGUI.
& forwardToPageObject()
forward command to page object
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
prepareOutput($a_show_subobjects=true)
prepare output
saveListPresentation(ilPropertyFormGUI $form)
Save list presentation setting.
forwardToStyleSheet()
Forward to style object.
initListPresentationForm(ilPropertyFormGUI $form)
Add list presentation settings to form.
saveSortingSettings(ilPropertyFormGUI $form)
Save sorting settings.
Class ilContainerLinkListGUI.
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
This class represents a section header in a property form.
static _importCategories($a_ref_id, $withrol_tmp)
import categories (static, also called by RootFolderGUI)
static _importCategoriesForm($a_ref_id, &$a_tpl)
display form for category import (static, also called by RootFolderGUI)
Class ilObjRootFolderGUI.
importCategoriesFormObject()
import categories form
importCategoriesWithRolObject()
import categories
__construct($a_data, $a_id, $a_call_by_reference=true, $a_prepare_output=true)
Constructor @access public.
saveTranslationsObject()
Save title and translations.
static _goto($a_target)
goto target group
getTabs()
common tabs for all container objects (should be called at the end of child getTabs() method
getEditFormValues()
Get values for edit form.
initEditForm()
Init object edit form.
executeCommand()
execute command note: this method is overwritten in all container objects
viewObject()
View root folder.
importCancelledObject()
import cancelled
deleteTranslationsObject()
Remove translation.
setTitleAndDescription()
called by prepare output
setEditTabs($active_tab="settings_misc")
addTranslationObject()
Add a translation.
importCategoriesObject()
import categories
renderObject()
Render root folder.
editTranslationsObject($a_get_post_values=false)
Edit title and translations.
static getContentStylePath($a_style_id, $add_random=true, $add_token=true)
get content style path
GUI class for the workflow of copying objects.
Base exception class for object service.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
getObjectService()
Get object service.
updateObject()
updates object entry in object_data
GUI class for object translation handling.
TableGUI class for title/description translations.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
redirection script todo: (a better solution should control the processing via a xml file)
$ret
Definition: parser.php:6
global $ilSetting
Definition: privfeed.php:17
$ilUser
Definition: imgupload.php:18
$DIC
Definition: xapitoken.php:46