ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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
19require_once "./Services/Container/classes/class.ilContainerGUI.php";
20require_once "./Modules/Category/classes/class.ilObjCategoryGUI.php";
21
23{
28 public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
29 {
30 global $lng;
31
32 $this->type = "root";
33 parent::__construct($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
52 public function importCancelledObject()
53 {
54 $this->ctrl->returnToParent($this);
55 }
56
60 public function importCategoriesObject()
61 {
63 }
64
65
70 {
72 }
73
74
75 public function getTabs()
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 $this->tabs_gui->addTab(
85 'view_content',
86 $lng->txt("content"),
87 $this->ctrl->getLinkTarget($this, "")
88 );
89 }
90
91 if ($rbacsystem->checkAccess('write', $this->ref_id)) {
92 $force_active = ($_GET["cmd"] == "edit")
93 ? true
94 : false;
95 $this->tabs_gui->addTarget(
96 "settings",
97 $this->ctrl->getLinkTarget($this, "edit"),
98 "edit",
99 get_class($this),
100 "",
101 $force_active
102 );
103 }
104
105 // parent tabs (all container: edit_permission, clipboard, trash
106 parent::getTabs();
107 }
108
109 public function executeCommand()
110 {
111 global $rbacsystem;
112
113 $next_class = $this->ctrl->getNextClass($this);
114 $cmd = $this->ctrl->getCmd();
115
116 // show repository tree
117 $this->showRepTree();
118
119 switch ($next_class) {
120 case 'ilcontainerlinklistgui':
121 include_once("Services/Container/classes/class.ilContainerLinkListGUI.php");
122 $link_list_gui = new ilContainerLinkListGUI();
123 $ret =&$this->ctrl->forwardCommand($link_list_gui);
124 break;
125
126 // container page editing
127 case "ilcontainerpagegui":
128 $this->prepareOutput(false);
129 $ret = $this->forwardToPageObject();
130 if ($ret != "") {
131 $this->tpl->setContent($ret);
132 }
133 break;
134
135 case 'ilpermissiongui':
136 $this->prepareOutput();
137 include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
138 $perm_gui = new ilPermissionGUI($this);
139 $ret =&$this->ctrl->forwardCommand($perm_gui);
140 break;
141
142 case "ilcolumngui":
143 $this->checkPermission("read");
144 $this->prepareOutput();
145 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
146 $this->tpl->setVariable(
147 "LOCATION_CONTENT_STYLESHEET",
148 ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId())
149 );
150 $this->renderObject();
151 break;
152
153 case 'ilobjectcopygui':
154 $this->prepareOutput();
155 include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
156 $cp = new ilObjectCopyGUI($this);
157 $cp->setType('root');
158 $this->ctrl->forwardCommand($cp);
159 break;
160
161 case "ilobjstylesheetgui":
162 $this->forwardToStyleSheet();
163 break;
164
165 case "ilcommonactiondispatchergui":
166 include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
168 $this->ctrl->forwardCommand($gui);
169 break;
170
171 case 'ilobjecttranslationgui':
172 $this->checkPermissionBool("write");
173 $this->prepareOutput();
174 //$this->tabs_gui->setTabActive('export');
175 $this->setEditTabs("settings_trans");
176 include_once("./Services/Object/classes/class.ilObjectTranslationGUI.php");
177 $transgui = new ilObjectTranslationGUI($this);
178 $this->ctrl->forwardCommand($transgui);
179 break;
180
181 default:
182
183 // fix bug http://www.ilias.de/mantis/view.php?id=10305
184 if ($cmd == "infoScreen") {
185 $this->checkPermission("visible");
186 } else {
187 $this->checkPermission("read");
188 }
189 $this->prepareOutput();
190 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
191 $this->tpl->setVariable(
192 "LOCATION_CONTENT_STYLESHEET",
193 ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId())
194 );
195
196 if (!$cmd) {
197 $cmd = "render";
198 }
199
200 $cmd .= "Object";
201 $this->$cmd();
202
203 break;
204 }
205 return true;
206 }
207
211 public function renderObject()
212 {
213 global $ilTabs;
214
215 include_once "Services/Object/classes/class.ilObjectListGUI.php";
216 ilObjectListGUI::prepareJSLinks(
217 "",
218 $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "ilnotegui"), "", "", true, false),
219 $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true, false)
220 );
221
222 $ilTabs->activateTab("view_content");
223 $ret = parent::renderObject();
224 return $ret;
225 }
226
232 public function viewObject()
233 {
234 $this->checkPermission('read');
235
236 if (strtolower($_GET["baseClass"]) == "iladministrationgui") {
237 parent::viewObject();
238 return true;
239 }
240
241 $this->renderObject();
242 return true;
243 }
244
245
246
250 public function setTitleAndDescription()
251 {
252 global $lng;
253
254 parent::setTitleAndDescription();
255 $this->tpl->setDescription("");
256 if (!ilContainer::_lookupContainerSetting($this->object->getId(), "hide_header_icon_and_title")) {
257 if ($this->object->getTitle() == "ILIAS") {
258 $this->tpl->setTitle($lng->txt("repository"));
259 } else {
260 if ($this->object->getDescription() != "") {
261 $this->tpl->setDescription($this->object->getDescription()); // #13479
262 }
263 }
264 }
265 }
266
267 protected function setEditTabs($active_tab = "settings_misc")
268 {
269 $this->tabs_gui->addSubTab(
270 "settings_misc",
271 $this->lng->txt("settings"),
272 $this->ctrl->getLinkTarget($this, "edit")
273 );
274
275 /*$this->tabs_gui->addSubTab("settings_trans",
276 $this->lng->txt("title_and_translations"),
277 $this->ctrl->getLinkTarget($this, "editTranslations"));*/
278
279 $this->tabs_gui->addSubTab(
280 "settings_trans",
281 $this->lng->txt("obj_multilinguality"),
282 $this->ctrl->getLinkTargetByClass("ilobjecttranslationgui", "")
283 );
284
285
286 $this->tabs_gui->activateTab("settings");
287 $this->tabs_gui->activateSubTab($active_tab);
288 }
289
290 public function initEditForm()
291 {
292 $this->setEditTabs();
293
294 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
295 $form = new ilPropertyFormGUI();
296 $form->setFormAction($this->ctrl->getFormAction($this));
297 $form->setTitle($this->lng->txt("repository"));
298
299
300 $this->initSortingForm(
301 $form,
302 array(
305 ilcontainer::SORT_MANUAL
306 )
307 );
308
309
310 $this->showCustomIconsEditing(1, $form, false);
311
312
313 $hide = new ilCheckboxInputGUI($this->lng->txt("cntr_hide_title_and_icon"), "hide_header_icon_and_title");
314 $hide->setChecked(ilContainer::_lookupContainerSetting($this->object->getId(), "hide_header_icon_and_title"));
315 $form->addItem($hide);
316
317
318 $form->addCommandButton("update", $this->lng->txt("save"));
319 $form->addCommandButton("addTranslation", $this->lng->txt("add_translation"));
320
321 return $form;
322 }
323
324 public function getEditFormValues()
325 {
326 // values are set in initEditForm()
327 }
328
334 public function updateObject()
335 {
336 global $ilSetting;
337
338 if (!$this->checkPermissionBool("write")) {
339 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
340 } else {
341 $form = $this->initEditForm();
342 if ($form->checkInput()) {
344
345 // save custom icons
346 //save custom icons
347 if ($ilSetting->get("custom_icons")) {
348 if ($_POST["cont_icon_delete"]) {
349 $this->object->removeCustomIcon();
350 }
351 $this->object->saveIcons($_FILES["cont_icon"]['tmp_name']);
352 }
353
354 // hide icon/title
356 $this->object->getId(),
357 "hide_header_icon_and_title",
358 $form->getInput("hide_header_icon_and_title")
359 );
360
361 // BEGIN ChangeEvent: Record update
362 global $ilUser;
363 require_once('Services/Tracking/classes/class.ilChangeEvent.php');
364 ilChangeEvent::_recordWriteEvent($this->object->getId(), $ilUser->getId(), 'update');
365 ilChangeEvent::_catchupWriteEvents($this->object->getId(), $ilUser->getId());
366 // END ChangeEvent: Record update
367
368 ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
369 $this->ctrl->redirect($this, "edit");
370 }
371
372 // display form to correct errors
373 $this->setEditTabs();
374 $form->setValuesByPost();
375 $this->tpl->setContent($form->getHTML());
376 }
377 }
378
382 public function editTranslationsObject($a_get_post_values = false)
383 {
384 global $tpl;
385
386
387 $this->ctrl->redirectByClass("ilobjecttranslationgui", "");
388
389 $this->lng->loadLanguageModule($this->object->getType());
390 $this->setEditTabs("settings_trans");
391
392 include_once("./Services/Object/classes/class.ilObjectTranslationTableGUI.php");
394 $this,
395 "editTranslations",
396 true,
397 "Translation"
398 );
399 if ($a_get_post_values) {
400 $vals = array();
401 foreach ($_POST["title"] as $k => $v) {
402 $vals[] = array("title" => $v,
403 "desc" => $_POST["desc"][$k],
404 "lang" => $_POST["lang"][$k],
405 "default" => ($_POST["default"] == $k));
406 }
407 $table->setData($vals);
408 } else {
409 $data = $this->object->getTranslations();
410 foreach ($data["Fobject"] as $k => $v) {
411 $data["Fobject"][$k]["default"] = ($k == $data["default_language"]);
412 }
413 $table->setData($data["Fobject"]);
414 }
415 $tpl->setContent($table->getHTML());
416 }
417
421 public function saveTranslationsObject()
422 {
423 if (!$this->checkPermissionBool("write")) {
424 $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
425 }
426
427 // default language set?
428 if (!isset($_POST["default"]) && count($_POST["lang"]) > 0) {
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 ilUtil::sendFailure($this->lng->txt("msg_no_language_selected"));
436 return $this->editTranslationsObject(true);
437 }
438
439 // no single language is selected more than once?
440 if (count(array_unique($_POST["lang"])) < count($_POST["lang"])) {
441 ilUtil::sendFailure($this->lng->txt("msg_multi_language_selected"));
442 return $this->editTranslationsObject(true);
443 }
444
445 // save the stuff
446 $this->object->removeTranslations();
447
448 if (sizeof($_POST["title"])) {
449 foreach ($_POST["title"] as $k => $v) {
450 // update object data if default
451 $is_default = ($_POST["default"] == $k);
452 if ($is_default) {
453 $this->object->setTitle(ilUtil::stripSlashes($v));
454 $this->object->setDescription(ilUtil::stripSlashes($_POST["desc"][$k]));
455 $this->object->update();
456 }
457
458 $this->object->addTranslation(
460 ilUtil::stripSlashes($_POST["desc"][$k]),
461 ilUtil::stripSlashes($_POST["lang"][$k]),
462 $is_default
463 );
464 }
465 } else {
466 // revert to original title
467 $this->object->setTitle("ILIAS");
468 $this->object->setDescription("");
469 $this->object->update();
470 }
471
472 ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
473 $this->ctrl->redirect($this, "editTranslations");
474 }
475
479 public function addTranslationObject()
480 {
481 if (sizeof($_POST["title"])) {
482 $k = max(array_keys($_POST["title"]))+1;
483 } else {
484 $k = 0;
485 }
486 $_POST["title"][$k] = "";
487 $this->editTranslationsObject(true);
488 }
489
493 public function deleteTranslationsObject()
494 {
495 $del_default = true;
496 foreach ($_POST["title"] as $k => $v) {
497 if ($_POST["check"][$k]) {
498 unset($_POST["title"][$k]);
499 unset($_POST["desc"][$k]);
500 unset($_POST["lang"][$k]);
501 if ($_POST["default"] == $k) {
502 $del_default = true;
503 }
504 }
505 }
506 // set new default
507 if ($del_default && sizeof($_POST["title"])) {
508 $_POST["default"] = array_shift(array_keys($_POST["title"]));
509 }
510 $this->saveTranslationsObject();
511 }
512
516 public static function _goto($a_target)
517 {
518 global $ilAccess, $ilErr, $lng;
519
521 }
522}
$_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.
This class represents a checkbox property in a property form.
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
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 ilContainerLinkListGUI.
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
static _writeContainerSetting($a_id, $a_keyword, $a_value)
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
updateObject()
updates object entry in object_data
__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)
get content style path
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 _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
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 sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
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
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
if(empty($password)) $table
Definition: pwgen.php:24
if(isset($_POST['submit'])) $form
$ilUser
Definition: imgupload.php:18