ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilObjDataCollectionGUI.php
Go to the documentation of this file.
1 <?php
2 
31 {
32  public const GET_DCL_GTR = "dcl_gtr";
33  public const GET_REF_ID = "ref_id";
34  public const GET_VIEW_ID = "tableview_id";
35 
36  public const TAB_EDIT_DCL = 'settings';
37  public const TAB_LIST_TABLES = 'dcl_tables';
38  public const TAB_EXPORT = 'export';
39  public const TAB_LIST_PERMISSIONS = 'perm_settings';
40  public const TAB_INFO = 'info_short';
41  public const TAB_CONTENT = 'content';
42 
43  public ?ilObject $object = null;
44 
48 
49  protected ilCtrl $ctrl;
50  protected ilLanguage $lng;
52  protected ilTabsGUI $tabs;
53  protected int $table_id;
54 
55  public function __construct(int $a_id = 0, int $a_id_type = self::REPOSITORY_NODE_ID, int $a_parent_node_id = 0)
56  {
57  global $DIC;
58  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
59 
60  $this->http = $DIC->http();
61  $this->tabs = $DIC->tabs();
62 
63  $this->lng->loadLanguageModule("dcl");
64  $this->lng->loadLanguageModule('content');
65  $this->lng->loadLanguageModule('obj');
66  $this->lng->loadLanguageModule('cntr');
67 
68  $this->setTableId($this->getRefId());
69 
70  $this->dclEndPoint = ilDataCollectionEndpointAdapter::new();
71  $this->dclAccess = ilDataCollectionAccessAdapter::new();
72  $this->dclUi = ilDataCollectionUiAdapter::new();
73 
74  if ($this->ctrl->isAsynch() === false) {
75  $this->addJavaScript();
76  }
77 
78  $this->dclEndPoint->saveParameterTableId($this);
79  }
80 
81  private function setTableId(int $objectOrRefId = 0): void
82  {
83  if ($this->http->wrapper()->query()->has('table_id')) {
84  $this->table_id = $this->http->wrapper()->query()->retrieve('table_id', $this->refinery->kindlyTo()->int());
85  } elseif ($this->http->wrapper()->query()->has('tableview_id')) {
86  $this->table_id = ilDclTableView::find(
87  $this->http->wrapper()->query()->retrieve('tableview_id', $this->refinery->kindlyTo()->int())
88  )->getTableId();
89  } elseif ($objectOrRefId > 0) {
90  $this->table_id = $this->object->getFirstVisibleTableId();
91  }
92  }
93 
94  public function getObjectId(): int
95  {
96  return $this->obj_id;
97  }
98 
99  private function addJavaScript(): void
100  {
101  $this->dclUi->addJavaScriptFile("Modules/DataCollection/js/datacollection.js");
102  }
103 
104  public function getStandardCmd(): string
105  {
106  return "render";
107  }
108 
109  public function getType(): string
110  {
111  return "dcl";
112  }
113 
117  public function executeCommand(): void
118  {
119  global $DIC;
120 
121  $ilNavigationHistory = $DIC['ilNavigationHistory'];
122  $ilHelp = $DIC['ilHelp'];
123  $ilHelp->setScreenIdComponent('bibl');
124 
125  // Navigation History
126  $link = $this->ctrl->getLinkTarget($this, "render");
127 
128  if ($this->getObject() !== null) {
129  $ilNavigationHistory->addItem($this->object->getRefId(), $link, "dcl");
130  }
131 
132  $hasDclGtr = $this->http->wrapper()->query()->has(self::GET_DCL_GTR);
133  // Direct-Link Resource, redirect to viewgui
134  if ($hasDclGtr) {
135  $table_view_id = $this->getTableViewId();
136  $record_id = $this->http->wrapper()->query()->retrieve(
137  self::GET_DCL_GTR,
138  $this->refinery->kindlyTo()->int()
139  );
140 
141  $this->ctrl->setParameterByClass(ilDclDetailedViewGUI::class, 'tableview_id', $table_view_id);
142  $this->ctrl->setParameterByClass(ilDclDetailedViewGUI::class, 'record_id', $record_id);
143  $this->ctrl->redirectByClass(ilDclDetailedViewGUI::class, 'renderRecord');
144  }
145 
146  $next_class = $this->ctrl->getNextClass($this);
147  $cmd = $this->ctrl->getCmd();
148 
149  if (!$this->getCreationMode() && $next_class != "ilinfoscreengui" && $cmd != 'infoScreen' && !$this->checkPermissionBool("read")) {
150  $DIC->ui()->mainTemplate()->loadStandardTemplate();
151  $DIC->ui()->mainTemplate()->setContent("Permission Denied.");
152 
153  return;
154  }
155 
156  switch ($next_class) {
157  case "ilinfoscreengui":
158  $this->prepareOutput();
159  $this->tabs->activateTab(self::TAB_INFO);
160  $this->infoScreenForward();
161  break;
162 
163  case "ilcommonactiondispatchergui":
164  $this->prepareOutput();
166  $gui->enableCommentsSettings(false);
167  $this->ctrl->forwardCommand($gui);
168  break;
169 
170  case "ilpermissiongui":
171  $this->prepareOutput();
172  $this->tabs->activateTab(self::TAB_LIST_PERMISSIONS);
173  $perm_gui = new ilPermissionGUI($this);
174  $this->ctrl->forwardCommand($perm_gui);
175  break;
176 
177  case "ilobjectcopygui":
178  $cp = new ilObjectCopyGUI($this);
179  $cp->setType("dcl");
180  $DIC->ui()->mainTemplate()->loadStandardTemplate();
181  $this->ctrl->forwardCommand($cp);
182  break;
183 
184  case "ildcltablelistgui":
185  $this->prepareOutput();
186  $this->tabs->activateTab(self::TAB_LIST_TABLES);
187  $tablelist_gui = new ilDclTableListGUI($this);
188  $this->ctrl->forwardCommand($tablelist_gui);
189  break;
190 
191  case "ildclrecordlistgui":
192  $this->addHeaderAction();
193  $this->prepareOutput();
194  $this->tabs->activateTab(self::TAB_CONTENT);
195  $recordlist_gui = new ilDclRecordListGUI($this, $this->table_id, $this->getTableViewId());
196  $this->ctrl->forwardCommand($recordlist_gui);
197  break;
198 
199  case "ildclrecordeditgui":
200  $this->prepareOutput();
201  $this->tabs->activateTab(self::TAB_CONTENT);
202  $recordedit_gui = new ilDclRecordEditGUI($this, $this->table_id, $this->getTableViewId());
203  $this->ctrl->forwardCommand($recordedit_gui);
204  break;
205 
206  case "ilobjfilegui":
207  $this->prepareOutput();
208  $this->tabs->activateTab(self::TAB_CONTENT);
209  $file_gui = new ilObjFile($this->getRefId());
210  $this->ctrl->forwardCommand($file_gui);
211  break;
212 
213  case "ilratinggui":
214  $rgui = new ilRatingGUI();
215 
216  $record_id = $this->http->wrapper()->query()->retrieve('record_id', $this->refinery->kindlyTo()->int());
217  $field_id = $this->http->wrapper()->query()->retrieve('field_id', $this->refinery->kindlyTo()->int());
218 
219  $rgui->setObject($record_id, "dcl_record", $field_id, "dcl_field");
220  $rgui->executeCommand();
221  $this->listRecords();
222  break;
223 
224  case "ildcldetailedviewgui":
225  $this->prepareOutput();
226  $recordview_gui = new ilDclDetailedViewGUI($this, $this->getTableViewId());
227  $this->ctrl->forwardCommand($recordview_gui);
228  $this->tabs->clearTargets();
229  $this->tabs->setBackTarget(
230  $this->lng->txt("back"),
231  $this->ctrl->getLinkTargetByClass(
232  ilDclRecordListGUI::class,
234  )
235  );
236  break;
237 
238  case 'ilnotegui':
239  $this->prepareOutput();
240  $recordviewGui = new ilDclDetailedViewGUI($this, $this->getTableViewId());
241  $this->ctrl->forwardCommand($recordviewGui);
242  $this->tabs->clearTargets();
243  $this->tabs->setBackTarget($this->lng->txt("back"), $this->ctrl->getLinkTarget($this, ""));
244  break;
245  case "ildclexportgui":
246  $this->handleExport();
247  break;
248 
249  case strtolower(ilDclPropertyFormGUI::class):
250  $recordedit_gui = new ilDclRecordEditGUI($this, $this->table_id, $this->getTableViewId());
251  $recordedit_gui->getRecord();
252  $recordedit_gui->initForm();
253  $form = $recordedit_gui->getForm();
254  $this->ctrl->forwardCommand($form);
255  break;
256 
257  default:
258  switch ($cmd) {
259  case 'edit': // this is necessary because ilObjectGUI only calls its own editObject (why??)
260  $this->prepareOutput();
261  $this->editObject();
262  break;
263  case 'export':
264  $this->handleExport(true);
265  break;
266  default:
267  parent::executeCommand();
268  }
269  }
270  }
271 
272  protected function handleExport(bool $do_default = false)
273  {
274  $this->prepareOutput();
275  $this->tabs->setTabActive(self::TAB_EXPORT);
276  $exp_gui = new ilDclExportGUI($this);
277  $exporter = new ilDclContentExporter($this->object->getRefId(), $this->table_id);
278  $exp_gui->addFormat("xlsx", $this->lng->txt('dlc_xls_async_export'), $exporter, 'exportAsync');
279  $exp_gui->addFormat("xml");
280  if ($do_default) {
281  $exp_gui->listExportFiles();
282  } else {
283  $this->ctrl->forwardCommand($exp_gui);
284  }
285  }
286 
287  protected function getTableViewId(): int
288  {
289  $tableview_id = null;
290  if ($this->http->wrapper()->query()->has('tableview_id')) {
291  $tableview_id = $this->http->wrapper()->query()->retrieve(
292  'tableview_id',
293  $this->refinery->kindlyTo()->int()
294  );
295  }
296  if ($this->http->wrapper()->post()->has('tableview_id')) {
297  $tableview_id = $this->http->wrapper()->post()->retrieve(
298  'tableview_id',
299  $this->refinery->kindlyTo()->int()
300  );
301  }
302  if (!$tableview_id) {
303  $table_obj = ilDclCache::getTableCache($this->table_id);
304  $tableview_id = $table_obj->getFirstTableViewId($this->getRefId());
305  }
306  return $tableview_id;
307  }
308 
314  public function infoScreen(): void
315  {
316  $this->ctrl->setCmd("showSummary");
317  $this->ctrl->setCmdClass("ilinfoscreengui");
318  $this->infoScreenForward();
319  }
320 
324  public function render(): void
325  {
326  if ($this->http->wrapper()->query()->has('tableview_id')) {
327  $tableview_id = $this->http->wrapper()->query()->retrieve(
328  'tableview_id',
329  $this->refinery->kindlyTo()->int()
330  );
331  $this->ctrl->setParameterByClass('ilDclRecordListGUI', 'tableview_id', $tableview_id);
332  }
333  $this->ctrl->redirectByClass("ildclrecordlistgui", "show");
334  }
335 
339  public function infoScreenForward(): void
340  {
341  $this->tabs->activateTab(self::TAB_INFO);
342 
343  if (!$this->checkPermissionBool('visible')) {
344  $this->checkPermission('read');
345  }
346 
347  $info = new ilInfoScreenGUI($this);
348  $info->enablePrivateNotes();
349  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
350 
351  $this->ctrl->forwardCommand($info);
352  }
353 
357  protected function addLocatorItems(): void
358  {
359  if (is_object($this->object) === true) {
360  $this->dclUi->addLocatorItem(
361  $this->object->getTitle(),
362  $this->ctrl->getLinkTarget($this, ""),
363  $this->object->getRefId()
364  );
365  }
366  }
367 
368  public static function _goto(string $a_target): void
369  {
370  global $DIC;
371  $lng = $DIC->language();
372 
374  $dclUi = $dclConfig->getDataCollectionUi();
375 
376  $ilCtrl = $DIC->ctrl();
377  $dclAccess = $dclConfig->getDataCollectionAccess();
378 
379  $targetParts = explode("_", $a_target);
380  if (count($targetParts) === 1) {
381  [$refId] = $targetParts;
382  } elseif (count($targetParts) === 2) {
383  [$refId, $viewId] = $targetParts;
384  } else {
385  [$refId, $viewId, $recordId] = $targetParts;
386  }
387 
388  //redirect if no permission given
389  if ($dclAccess->hasVisibleOrReadPermission($refId) === false) {
390  $dclUi->displayFailureMessage(
391  sprintf(
392  $lng->txt("msg_no_perm_read_item"),
394  )
395  );
397  }
398 
399  //load record list
400  if ($dclAccess->hasReadPermission($refId) === true) {
401  $ilCtrl->setParameterByClass("ilRepositoryGUI", self::GET_REF_ID, $refId);
402  if (isset($viewId)) {
403  $ilCtrl->setParameterByClass("ilRepositoryGUI", self::GET_VIEW_ID, $viewId);
404  }
405  if (isset($recordId)) {
406  $ilCtrl->setParameterByClass("ilRepositoryGUI", self::GET_DCL_GTR, $recordId);
407  }
408  $ilCtrl->redirectByClass("ilRepositoryGUI", "listRecords");
409  }
410 
411  //redirect to info screen
412  if ($dclAccess->hasVisiblePermission($refId) === true) {
413  ilObjectGUI::_gotoRepositoryNode($a_target, "infoScreen");
414  }
415  }
416 
417  protected function afterSave(ilObject $new_object): void
418  {
419  $this->dclUi->displaySuccessMessage($this->lng->txt("object_added"));
420 
421  $listTablesLink = $this->dclEndPoint->getListTablesLink();
422  $this->dclEndPoint->redirect($listTablesLink);
423  }
424 
430  protected function setTabs(): void
431  {
432  $refId = $this->object->getRefId();
433 
434  // read permission
435  if ($this->dclAccess->hasReadPermission($refId) === true) {
436  // list records
437  $this->addTab(self::TAB_CONTENT, $this->dclEndPoint->getListRecordsLink());
438  }
439 
440  // visible permission
441  if ($this->dclAccess->hasVisibleOrReadPermission($refId) === true) {
442  // info screen
443  $this->addTab(self::TAB_INFO, $this->dclEndPoint->getInfoScreenLink());
444  }
445 
446  // write permission
447  if ($this->dclAccess->hasWritePermission($refId) === true) {
448  // settings
449  $this->addTab(self::TAB_EDIT_DCL, $this->dclEndPoint->getEditDclLink($this));
450  // list tables
451  $this->addTab(self::TAB_LIST_TABLES, $this->dclEndPoint->getListTablesLink());
452  // export
453  $this->addTab(self::TAB_EXPORT, $this->dclEndPoint->getDataCollectionExportLink());
454  }
455 
456  // edit permissions
457  if ($this->dclAccess->hasEditPermissionPermission($refId) === true) {
458  //list permissions
459  $this->addTab(self::TAB_LIST_PERMISSIONS, $this->dclEndPoint->getListPermissionsLink());
460  }
461  }
462 
463  private function addTab(string $langKey, string $link): void
464  {
465  $this->tabs->addTab($langKey, $this->lng->txt($langKey), $link);
466  }
467 
472  public function editObject(): void
473  {
474  $dataCollectionTemplate = $this->tpl;
475 
476  $refId = $this->object->getRefId();
477  if ($this->dclAccess->hasWritePermission($refId) === false) {
478  $this->dclUi->displayErrorMessage(
479  $this->lng->txt("msg_no_perm_write")
480  );
481  }
482 
483  $this->tabs->activateTab(self::TAB_EDIT_DCL);
484 
485  $form = $this->initEditForm();
486  $values = $this->getEditFormValues();
487  if ($values) {
488  $form->setValuesByArray($values, true);
489  }
490 
491  $this->addExternalEditFormCustom($form);
492 
493  $dataCollectionTemplate->setContent($form->getHTML());
494  }
495 
496  protected function initEditForm(): ilPropertyFormGUI
497  {
498  $this->tabs->activateTab(self::TAB_EDIT_DCL);
499 
500  $form = new ilPropertyFormGUI();
501  $form->setFormAction($this->ctrl->getFormAction($this, "update"));
502  $form->setTitle($this->lng->txt($this->object->getType() . "_edit"));
503 
504  // title
505  $ti = new ilTextInputGUI($this->lng->txt("title"), "title");
506  $ti->setSize(min(40, ilObject::TITLE_LENGTH));
507  $ti->setMaxLength(ilObject::TITLE_LENGTH);
508  $ti->setRequired(true);
509  $form->addItem($ti);
510 
511  // description
512  $ta = new ilTextAreaInputGUI($this->lng->txt("description"), "desc");
513  $ta->setCols(40);
514  $ta->setRows(2);
515  $form->addItem($ta);
516 
517  // is_online
518  $cb = new ilCheckboxInputGUI($this->lng->txt("online"), "is_online");
519  $cb->setInfo($this->lng->txt("dcl_online_info"));
520  $form->addItem($cb);
521 
522  // Notification
523  $cb = new ilCheckboxInputGUI($this->lng->txt("dcl_activate_notification"), "notification");
524  $cb->setInfo($this->lng->txt("dcl_notification_info"));
525  $form->addItem($cb);
526 
527  // tile img upload
528  $section_appearance = new ilFormSectionHeaderGUI();
529  $section_appearance->setTitle($this->lng->txt('cont_presentation'));
530  $form->addItem($section_appearance);
531  $form = $this->object_service->commonSettings()->legacyForm($form, $this->object)->addTileImage();
532 
533  $form->addCommandButton("update", $this->lng->txt("save"));
534 
535  return $form;
536  }
537 
538  final public function listRecords(): void
539  {
540  $listRecordsLink = $this->dclEndPoint->getListRecordsLink($this->getTableViewId());
541  $this->dclEndPoint->redirect($listRecordsLink);
542  }
543 
545  {
546  return new ilObjDataCollection($this->ref_id, true);
547  }
548 
549  protected function getEditFormCustomValues(array &$a_values): void
550  {
551  $a_values["is_online"] = $this->object->getOnline();
552  $a_values["rating"] = $this->object->getRating();
553  $a_values["public_notes"] = $this->object->getPublicNotes();
554  $a_values["approval"] = $this->object->getApproval();
555  $a_values["notification"] = $this->object->getNotification();
556  }
557 
558  protected function updateCustom(ilPropertyFormGUI $form): void
559  {
560  $this->object->setOnline($form->getInput("is_online"));
561  $this->object->setRating($form->getInput("rating"));
562  $this->object->setPublicNotes($form->getInput("public_notes"));
563  $this->object->setApproval($form->getInput("approval"));
564  $this->object->setNotification($form->getInput("notification"));
565 
566  $this->object_service->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
567 
568  $this->emptyInfo();
569  }
570 
571  private function emptyInfo(): void
572  {
573  global $DIC;
574  $lng = $DIC['lng'];
575  $table = ilDclCache::getTableCache($this->object->getFirstVisibleTableId());
576  $tables = $this->object->getTables();
577  if (count($tables) === 1 && count($table->getRecordFields()) === 0 && count($table->getRecords()) === 0
578  && $this->object->getOnline()
579  ) {
580  $this->tpl->setOnScreenMessage('info', $lng->txt("dcl_no_content_warning"), true);
581  }
582  }
583 
584  final public function toggleNotification(): void
585  {
586  $ntf = $this->http->wrapper()->query()->retrieve('ntf', $this->refinery->kindlyTo()->int());
587  switch ($ntf) {
588  case 1:
591  $this->user->getId(),
593  false
594  );
595  break;
596  case 2:
599  $this->user->getId(),
601  );
602  break;
603  }
604  $this->ctrl->redirectByClass("ildclrecordlistgui", "show");
605  }
606 
607  protected function addHeaderAction(): void
608  {
609  ilObjectListGUI::prepareJSLinks(
610  $this->ctrl->getLinkTarget($this, "redrawHeaderAction", "", true),
611  "",
612  $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true)
613  );
614 
615  $dispatcher = new ilCommonActionDispatcherGUI(ilCommonActionDispatcherGUI::TYPE_REPOSITORY, $this->access, "dcl", $this->ref_id, $this->obj_id);
616 
617  $lg = $dispatcher->initHeaderAction();
618 
619  // notification
620  if ($this->user->getId() != ANONYMOUS_USER_ID and $this->object->getNotification() == 1) {
622  //Command Activate Notification
623  $this->ctrl->setParameter($this, "ntf", 1);
624  $lg->addCustomCommand($this->ctrl->getLinkTarget($this, "toggleNotification"), "dcl_notification_deactivate_dcl");
625 
626  $lg->addHeaderIcon("not_icon", ilUtil::getImagePath("notification_on.svg"), $this->lng->txt("dcl_notification_activated"));
627  } else {
628  //Command Deactivate Notification
629  $this->ctrl->setParameter($this, "ntf", 2);
630  $lg->addCustomCommand($this->ctrl->getLinkTarget($this, "toggleNotification"), "dcl_notification_activate_dcl");
631 
632  $lg->addHeaderIcon("not_icon", ilUtil::getImagePath("notification_off.svg"), $this->lng->txt("dcl_notification_deactivated"));
633  }
634  $this->ctrl->setParameter($this, "ntf", "");
635  }
636 
637  $this->tpl->setHeaderActionMenu($lg->getHeaderAction());
638  }
639 }
checkPermission(string $perm, string $cmd="", string $type="", int $ref_id=null)
handleExport(bool $do_default=false)
__construct(int $a_id=0, int $a_id_type=self::REPOSITORY_NODE_ID, int $a_parent_node_id=0)
Class ilInfoScreenGUI.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const ANONYMOUS_USER_ID
Definition: constants.php:27
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
New implementation of ilObjectGUI.
GUI class for the workflow of copying objects.
const TITLE_LENGTH
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static _gotoRepositoryNode(int $ref_id, string $cmd="")
This class represents a checkbox property in a property form.
$refId
Definition: xapitoken.php:58
prepareOutput(bool $show_sub_objects=true)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
displayFailureMessage(string $message)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
addExternalEditFormCustom(ilPropertyFormGUI $form)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupObjId(int $ref_id)
global $DIC
Definition: feed.php:28
hasVisibleOrReadPermission(int $refId)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilDataCollectionEndpointPort $dclEndPoint
static http()
Fetches the global http state from ILIAS.
setTabs()
setTabs create tabs (repository/workspace switch) this had to be moved here because of the context-sp...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $node_id=null)
static _lookupTitle(int $obj_id)
static getTableCache(int $table_id=null)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static setNotification(int $type, int $user_id, int $id, bool $status=true)
Set notification status for object and user.
updateCustom(ilPropertyFormGUI $form)
Class ilObjFile.
ilGlobalTemplateInterface $tpl
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
render()
show Content; redirect to ilDclRecordListGUI::listRecords
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilDataCollectionAccessPort $dclAccess
__construct(Container $dic, ilPlugin $plugin)
This class represents a text area property in a property form.
static hasNotification(int $type, int $user_id, int $id)
Check notification status for object and user.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
addTab(string $langKey, string $link)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
hasVisiblePermission(int $refId)
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
infoScreen()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually...
infoScreenForward()
show information screen
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...