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 
19 require_once "./Services/Container/classes/class.ilContainerGUI.php";
20 require_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 
42  public function importCategoriesFormObject()
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  {
62  ilObjCategoryGUI::_importCategories($this->ref_id, 0);
63  }
64 
65 
70  {
71  ilObjCategoryGUI::_importCategories($this->ref_id, 1);
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()) {
343  $this->saveSortingSettings($form);
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 }
Class ilObjRootFolderGUI.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
importCancelledObject()
import cancelled
Class ilContainerLinkListGUI.
saveSortingSettings(ilPropertyFormGUI $form)
Save sorting settings.
This class represents a property form user interface.
GUI class for the workflow of copying objects.
$_GET["client_id"]
addTranslationObject()
Add a translation.
static _recordWriteEvent($obj_id, $usr_id, $action, $parent_obj_id=null)
Records a write event.
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
importCategoriesObject()
import categories
static _importCategoriesForm($a_ref_id, &$a_tpl)
display form for category import (static, also called by RootFolderGUI)
This class represents a checkbox property in a property form.
prepareOutput($a_show_subobjects=true)
prepare output
setTitleAndDescription()
called by prepare output
viewObject()
View root folder.
static _goto($a_target)
goto target group
static _catchupWriteEvents($obj_id, $usr_id, $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
importCategoriesFormObject()
import categories form
setChecked($a_checked)
Set Checked.
updateObject()
updates object entry in object_data
setEditTabs($active_tab="settings_misc")
if(isset($_POST['submit'])) $form
showCustomIconsEditing($a_input_colspan=1, ilPropertyFormGUI $a_form=null, $a_as_section=true)
show edit section of custom icons for container
forwardToStyleSheet()
Forward to style object.
& forwardToPageObject()
forward command to page object
$ilUser
Definition: imgupload.php:18
redirection script todo: (a better solution should control the processing via a xml file) ...
importCategoriesWithRolObject()
import categories
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static getContentStylePath($a_style_id, $add_random=true)
get content style path
renderObject()
Render root folder.
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
deleteTranslationsObject()
Remove translation.
TableGUI class for title/description translations.
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
Create new PHPExcel object
obj_idprivate
global $ilSetting
Definition: privfeed.php:17
$ret
Definition: parser.php:6
static _importCategories($a_ref_id, $withrol_tmp)
import categories (static, also called by RootFolderGUI)
Class ilContainerGUI.
static _writeContainerSetting($a_id, $a_keyword, $a_value)
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
__construct($a_data, $a_id, $a_call_by_reference=true, $a_prepare_output=true)
Constructor public.
if(empty($password)) $table
Definition: pwgen.php:24
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
saveTranslationsObject()
Save title and translations.
$_POST["username"]
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
GUI class for object translation handling.
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
editTranslationsObject($a_get_post_values=false)
Edit title and translations.