ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilObjDataCollectionGUI.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
33 {
34  public const GET_REF_ID = 'ref_id';
35  public const GET_TABLE_ID = 'table_id';
36  public const GET_VIEW_ID = 'tableview_id';
37  public const GET_RECORD_ID = 'record_id';
38 
39  public const TAB_EDIT_DCL = 'settings';
40  public const TAB_LIST_TABLES = 'dcl_tables';
41  public const TAB_EXPORT = 'export';
42  public const TAB_LIST_PERMISSIONS = 'perm_settings';
43  public const TAB_INFO = 'info_short';
44  public const TAB_CONTENT = 'content';
45 
47  public ?ilObject $object = null;
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 
59  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
60 
61  $this->http = $DIC->http();
62  $this->tabs = $DIC->tabs();
63 
64  $this->lng->loadLanguageModule('dcl');
65  $this->lng->loadLanguageModule('content');
66  $this->lng->loadLanguageModule('obj');
67  $this->lng->loadLanguageModule('cntr');
68 
69  $this->setTableId($this->getRefId());
70 
71  if (!$this->ctrl->isAsynch()) {
72  $this->addJavaScript();
73  }
74 
75  $this->ctrl->saveParameter($this, 'table_id');
76  }
77 
78  private function setTableId(int $objectOrRefId = 0): void
79  {
80  if ($this->http->wrapper()->query()->has('table_id')) {
81  $this->table_id = $this->http->wrapper()->query()->retrieve('table_id', $this->refinery->kindlyTo()->int());
82  } elseif ($this->http->wrapper()->query()->has('tableview_id')) {
83  $this->table_id = ilDclTableView::find(
84  $this->http->wrapper()->query()->retrieve('tableview_id', $this->refinery->kindlyTo()->int())
85  )->getTableId();
86  } elseif ($objectOrRefId > 0) {
87  $tables = ilObjDataCollectionAccess::hasWriteAccess($this->ref_id) ? $this->object->getTables() : $this->object->getVisibleTables();
88  if ($tables !== []) {
89  $this->table_id = array_shift($tables)->getId();
90  }
91  }
92  }
93 
94  public function getObjectId(): int
95  {
96  return $this->obj_id;
97  }
98 
99  private function addJavaScript(): void
100  {
101  $this->tpl->addJavaScript('Modules/DataCollection/js/datacollection.js');
102  }
103 
104  public function getStandardCmd(): string
105  {
106  return 'render';
107  }
108 
109  public function getType(): string
110  {
112  }
113 
114  public function executeCommand(): void
115  {
116  global $DIC;
117 
118  $ilNavigationHistory = $DIC['ilNavigationHistory'];
119  $DIC->help()->setScreenIdComponent('dcl');
120 
121  $link = $this->ctrl->getLinkTarget($this, 'render');
122 
123  if ($this->getObject() !== null) {
124  $ilNavigationHistory->addItem($this->object->getRefId(), $link, 'dcl');
125  }
126 
127  $next_class = $this->ctrl->getNextClass($this);
128  $cmd = $this->ctrl->getCmd();
129 
130  if (!$this->getCreationMode() && $next_class != "ilinfoscreengui" && $cmd != 'infoScreen' && !$this->checkPermissionBool('read')) {
131  $DIC->ui()->mainTemplate()->loadStandardTemplate();
132  $DIC->ui()->mainTemplate()->setContent('Permission Denied.');
133 
134  return;
135  }
136 
137  switch ($next_class) {
138  case strtolower(ilInfoScreenGUI::class):
139  $this->prepareOutput();
140  $this->tabs->activateTab(self::TAB_INFO);
141  $this->infoScreenForward();
142  break;
143  case strtolower(ilCommonActionDispatcherGUI::class):
144  $this->prepareOutput();
146  $gui->enableCommentsSettings(false);
147  $this->ctrl->forwardCommand($gui);
148  break;
149  case strtolower(ilPermissionGUI::class):
150  $this->prepareOutput();
151  $this->tabs->activateTab(self::TAB_LIST_PERMISSIONS);
152  $perm_gui = new ilPermissionGUI($this);
153  $this->ctrl->forwardCommand($perm_gui);
154  break;
155  case strtolower(ilObjectCopyGUI::class):
156  $cp = new ilObjectCopyGUI($this);
157  $cp->setType('dcl');
158  $DIC->ui()->mainTemplate()->loadStandardTemplate();
159  $this->ctrl->forwardCommand($cp);
160  break;
161  case strtolower(ilDclTableListGUI::class):
162  $this->prepareOutput();
163  $this->tabs->activateTab(self::TAB_LIST_TABLES);
164  $tablelist_gui = new ilDclTableListGUI($this);
165  $this->ctrl->forwardCommand($tablelist_gui);
166  break;
167  case strtolower(ilDclRecordListGUI::class):
168  $this->addHeaderAction();
169  $this->prepareOutput();
170  $this->tabs->activateTab(self::TAB_CONTENT);
171  try {
172  $recordlist_gui = new ilDclRecordListGUI($this, $this->table_id, $this->getTableViewId());
173  $this->ctrl->forwardCommand($recordlist_gui);
174  } catch (ilDclNoTableviewException $e) {
175  $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_INFO, $this->lng->txt('dcl_no_tableview_found'));
176  }
177  break;
178  case strtolower(ilDclRecordEditGUI::class):
179  $this->prepareOutput();
180  $this->tabs->activateTab(self::TAB_CONTENT);
181  $recordedit_gui = new ilDclRecordEditGUI($this, $this->table_id, $this->getTableViewId());
182  $this->ctrl->forwardCommand($recordedit_gui);
183  break;
184  case strtolower(ilObjFileGUI::class):
185  $this->prepareOutput();
186  $this->tabs->activateTab(self::TAB_CONTENT);
187  $file_gui = new ilObjFile($this->getRefId());
188  $this->ctrl->forwardCommand($file_gui);
189  break;
190  case strtolower(ilRatingGUI::class):
191  $rgui = new ilRatingGUI();
192 
193  $record_id = $this->http->wrapper()->query()->retrieve('record_id', $this->refinery->kindlyTo()->int());
194  $field_id = $this->http->wrapper()->query()->retrieve('field_id', $this->refinery->kindlyTo()->int());
195 
196  $rgui->setObject($record_id, 'dcl_record', $field_id, 'dcl_field');
197  $rgui->executeCommand();
198  $this->ctrl->redirectToURL($this->http->request()->getServerParams()['HTTP_REFERER'] ?? '');
199  break;
200  case strtolower(ilDclDetailedViewGUI::class):
201  $this->prepareOutput();
202  $recordview_gui = new ilDclDetailedViewGUI($this, $this->getTableViewId());
203  $this->ctrl->forwardCommand($recordview_gui);
204  $this->tabs->setBackTarget(
205  $this->lng->txt('back'),
206  $this->ctrl->getLinkTargetByClass(
207  ilDclRecordListGUI::class,
209  )
210  );
211  break;
212  case strtolower(ilNoteGUI::class):
213  $this->prepareOutput();
214  $recordviewGui = new ilDclDetailedViewGUI($this, $this->getTableViewId());
215  $this->ctrl->forwardCommand($recordviewGui);
216  $this->tabs->clearTargets();
217  $this->tabs->setBackTarget($this->lng->txt('back'), $this->ctrl->getLinkTarget($this, ''));
218  break;
219  case strtolower(ilDclExportGUI::class):
220  $this->handleExport();
221  break;
222  case strtolower(ilDclPropertyFormGUI::class):
223  $recordedit_gui = new ilDclRecordEditGUI($this, $this->table_id, $this->getTableViewId());
224  $recordedit_gui->getRecord();
225  $recordedit_gui->initForm();
226  $form = $recordedit_gui->getForm();
227  $this->ctrl->forwardCommand($form);
228  break;
229  default:
230  switch ($cmd) {
231  case 'edit':
232  $this->prepareOutput();
233  $this->editObject();
234  break;
235  case 'export':
236  $this->handleExport(true);
237  break;
238  default:
239  parent::executeCommand();
240  }
241  }
242  }
243 
244  protected function handleExport(bool $do_default = false): void
245  {
246  $this->prepareOutput();
247  $this->tabs->setTabActive(self::TAB_EXPORT);
248  $exp_gui = new ilDclExportGUI($this);
249  $exporter = new ilDclContentExporter($this->object->getRefId(), null);
250  $exp_gui->addFormat("xlsx", $this->lng->txt('dcl_xls_async_export'), $exporter, 'exportAsync');
251  $exp_gui->addFormat("xml");
252  if ($do_default) {
253  $exp_gui->listExportFiles();
254  } else {
255  $this->ctrl->forwardCommand($exp_gui);
256  }
257  }
258 
259  protected function getTableViewId(): int
260  {
261  $tableview_id = null;
262  if ($this->http->wrapper()->query()->has('tableview_id')) {
263  $tableview_id = $this->http->wrapper()->query()->retrieve(
264  'tableview_id',
265  $this->refinery->kindlyTo()->int()
266  );
267  }
268  if ($this->http->wrapper()->post()->has('tableview_id')) {
269  $tableview_id = $this->http->wrapper()->post()->retrieve(
270  'tableview_id',
271  $this->refinery->kindlyTo()->int()
272  );
273  }
274  if (!$tableview_id) {
275  $table_obj = ilDclCache::getTableCache($this->table_id);
276  $tableview_id = $table_obj->getFirstTableViewId();
277  }
278  if ($tableview_id === null) {
279  throw new ilDclNoTableviewException('No visible tableview configured!');
280  }
281  return $tableview_id;
282  }
283 
284  public function infoScreen(): void
285  {
286  $this->ctrl->setCmd("showSummary");
287  $this->ctrl->setCmdClass(ilInfoScreenGUI::class);
288  $this->infoScreenForward();
289  }
290 
291  public function render(): void
292  {
293  $this->listRecords();
294  }
295 
299  public function infoScreenForward(): void
300  {
301  $this->tabs->activateTab(self::TAB_INFO);
302 
303  if (!$this->checkPermissionBool('visible')) {
304  $this->checkPermission('read');
305  }
306 
307  $info = new ilInfoScreenGUI($this);
308  $info->enablePrivateNotes();
309  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
310 
311  $this->ctrl->forwardCommand($info);
312  }
313 
314  protected function addLocatorItems(): void
315  {
316  if (is_object($this->object) === true) {
317  $this->locator->addItem(
318  $this->object->getTitle(),
319  $this->ctrl->getLinkTarget($this, ''),
320  (string) $this->object->getRefId()
321  );
322  }
323  }
324 
325  public static function _goto(string $a_target): void
326  {
327  global $DIC;
328  $lng = $DIC->language();
329 
330  $ctrl = $DIC->ctrl();
331  $access = $DIC->access();
332  $tpl = $DIC->ui()->mainTemplate();
333 
334  $params = explode('_', $a_target);
335  //41821: Handles old permanent links. This is deprecated and removed for ILIAS 10
336  if (count($params) > 1) {
337  if (!str_contains($DIC->http()->request()->getServerParams()['HTTP_REFERER'] ?? '', 'login.php')) {
338  $goto_string = explode('/', $DIC->http()->request()->getRequestTarget());
339  if (str_contains(end($goto_string), 'dcl_')) {
340  $view = new ilDclTableView((int) $params[1]);
341  $params = [$params[0], $view->getTableId(), $params[1] ?? null, $params[2] ?? null];
342  }
343  }
344  }
345  $values = [self::GET_REF_ID, self::GET_TABLE_ID, self::GET_VIEW_ID, self::GET_RECORD_ID];
346  $values = array_combine($values, array_pad($params, count($values), 0));
347 
348  $ref_id = (int) $values[self::GET_REF_ID];
349 
350  if ($access->checkAccess('read', '', $ref_id)) {
351  $ctrl->setParameterByClass(ilRepositoryGUI::class, self::GET_REF_ID, $ref_id);
352  $object = new ilObjDataCollection($ref_id);
353  $table_id = (int) $values[self::GET_TABLE_ID];
354  if ($table_id !== 0 && isset($object->getVisibleTables()[$table_id])) {
355  $ctrl->setParameterByClass(ilObjDataCollectionGUI::class, self::GET_TABLE_ID, $table_id);
356  $table = $object->getVisibleTables()[$table_id];
357  $view_id = (int) $values[self::GET_VIEW_ID];
358  if ($view_id !== 0 && isset($table->getTableViews()[$view_id])) {
359  $ctrl->setParameterByClass(ilObjDataCollectionGUI::class, self::GET_VIEW_ID, $view_id);
360  }
361 
362  $record_id = (int) $values[self::GET_RECORD_ID];
363  if ($record_id !== 0 && isset($table->getRecords()[$record_id])) {
364  $ctrl->setParameterByClass(ilDclDetailedViewGUI::class, self::GET_RECORD_ID, $record_id);
365  $ctrl->redirectByClass([ilRepositoryGUI::class, self::class, ilDclDetailedViewGUI::class], 'renderRecord');
366  }
367  }
368  $ctrl->redirectByClass([ilRepositoryGUI::class, self::class, ilDclRecordListGUI::class], 'listRecords');
369  } elseif ($access->checkAccess('visbile', '', $ref_id)) {
370  ilObjectGUI::_gotoRepositoryNode((int) $a_target, 'infoScreen');
371  } else {
372  $message = sprintf(
373  $lng->txt('msg_no_perm_read_item'),
375  );
376  $tpl->setOnScreenMessage('failure', $message, true);
377 
379  }
380  }
381 
382  protected function afterSave(ilObject $new_object): void
383  {
384  $this->tpl->setOnScreenMessage('success', $this->lng->txt('object_added'), true);
385  $this->ctrl->redirectByClass(ilDclTableListGUI::class, 'listTables');
386  }
387 
388  protected function setTabs(): void
389  {
390  $ref_id = $this->object->getRefId();
391 
392  if ($this->access->checkAccess('read', '', $ref_id) === true) {
393  $this->addTab(self::TAB_CONTENT, $this->ctrl->getLinkTargetByClass(ilDclRecordListGUI::class, 'show'));
394  }
395 
396  if ($this->access->checkAccess('visible', '', $ref_id) === true
397  || $this->access->checkAccess('read', '', $ref_id) === true) {
398  $this->addTab(self::TAB_INFO, $this->ctrl->getLinkTargetByClass(
399  ilInfoScreenGUI::class,
400  'showSummary'
401  ));
402  }
403 
404  if ($this->access->checkAccess('write', '', $ref_id) === true) {
405  $this->addTab(self::TAB_EDIT_DCL, $this->ctrl->getLinkTarget($this, 'editObject'));
406  $this->addTab(self::TAB_LIST_TABLES, $this->ctrl->getLinkTargetByClass(ilDclTableListGUI::class, 'listTables'));
407  $this->addTab(self::TAB_EXPORT, $this->ctrl->getLinkTargetByClass(ilDclExportGUI::class, ''));
408  }
409 
410  if ($this->access->checkAccess('edit_permission', '', $ref_id) === true) {
411  $this->addTab(self::TAB_LIST_PERMISSIONS, $this->ctrl->getLinkTargetByClass(ilPermissionGUI::class, 'perm'));
412  }
413  }
414 
415  private function addTab(string $langKey, string $link): void
416  {
417  $this->tabs->addTab($langKey, $this->lng->txt($langKey), $link);
418  }
419 
420  public function editObject(): void
421  {
422  $dataCollectionTemplate = $this->tpl;
423 
424  $ref_id = $this->object->getRefId();
425  if ($this->access->checkAccess('write', '', $ref_id) === false) {
426  $this->error->raiseError($this->lng->txt('msg_no_perm_write'), null);
427  }
428 
429  $this->tabs->activateTab(self::TAB_EDIT_DCL);
430 
431  $form = $this->initEditForm();
432  $values = $this->getEditFormValues();
433  if ($values) {
434  $form->setValuesByArray($values, true);
435  }
436 
437  $this->addExternalEditFormCustom($form);
438 
439  $dataCollectionTemplate->setContent($form->getHTML());
440  }
441 
442  protected function initEditForm(): ilPropertyFormGUI
443  {
444  $this->tabs->activateTab(self::TAB_EDIT_DCL);
445 
446  $form = new ilPropertyFormGUI();
447  $form->setFormAction($this->ctrl->getFormAction($this, 'update'));
448  $form->setTitle($this->lng->txt($this->object->getType() . '_edit'));
449 
450  $ti = new ilTextInputGUI($this->lng->txt('title'), 'title');
451  $ti->setSize(min(40, ilObject::TITLE_LENGTH));
452  $ti->setMaxLength(ilObject::TITLE_LENGTH);
453  $ti->setRequired(true);
454  $form->addItem($ti);
455 
456  $ta = new ilTextAreaInputGUI($this->lng->txt('description'), 'desc');
457  $ta->setCols(40);
458  $ta->setRows(2);
459  $form->addItem($ta);
460 
461  $cb = new ilCheckboxInputGUI($this->lng->txt('online'), 'is_online');
462  $cb->setInfo($this->lng->txt('dcl_online_info'));
463  $form->addItem($cb);
464 
465  $cb = new ilCheckboxInputGUI($this->lng->txt('dcl_activate_notification'), 'notification');
466  $cb->setInfo($this->lng->txt('dcl_notification_info'));
467  $form->addItem($cb);
468 
469  $section_appearance = new ilFormSectionHeaderGUI();
470  $section_appearance->setTitle($this->lng->txt('cont_presentation'));
471  $form->addItem($section_appearance);
472  $form = $this->object_service->commonSettings()->legacyForm($form, $this->object)->addTileImage();
473 
474  $form->addCommandButton('update', $this->lng->txt('save'));
475 
476  return $form;
477  }
478 
479  final public function listRecords(): void
480  {
481  $this->ctrl->redirectByClass(ilDclRecordListGUI::class, 'show');
482  }
483 
485  {
486  return new ilObjDataCollection($this->ref_id, true);
487  }
488 
489  protected function getEditFormCustomValues(array &$a_values): void
490  {
491  $a_values['is_online'] = $this->object->getOnline();
492  $a_values['rating'] = $this->object->getRating();
493  $a_values['public_notes'] = $this->object->getPublicNotes();
494  $a_values['approval'] = $this->object->getApproval();
495  $a_values['notification'] = $this->object->getNotification();
496  }
497 
498  protected function updateCustom(ilPropertyFormGUI $form): void
499  {
500  $this->object->setOnline((bool) $form->getInput('is_online'));
501  $this->object->setRating((bool) $form->getInput('rating'));
502  $this->object->setPublicNotes((bool) $form->getInput('public_notes'));
503  $this->object->setApproval((bool) $form->getInput('approval'));
504  $this->object->setNotification((bool) $form->getInput('notification'));
505 
506  $this->object_service->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
507  }
508 
509  final public function toggleNotification(): void
510  {
511  $ntf = $this->http->wrapper()->query()->retrieve('ntf', $this->refinery->kindlyTo()->int());
512  switch ($ntf) {
513  case 1:
516  $this->user->getId(),
518  false
519  );
520  break;
521  case 2:
524  $this->user->getId(),
526  );
527  break;
528  }
529  $this->ctrl->redirectByClass(ilDclRecordListGUI::class, 'show');
530  }
531 
532  protected function addHeaderAction(): void
533  {
535  $this->ctrl->getLinkTarget($this, 'redrawHeaderAction', '', true),
536  '',
537  $this->ctrl->getLinkTargetByClass([ilCommonActionDispatcherGUI::class, ilTaggingGUI::class], '', '', true)
538  );
539 
540  $dispatcher = new ilCommonActionDispatcherGUI(ilCommonActionDispatcherGUI::TYPE_REPOSITORY, $this->access, 'dcl', $this->ref_id, $this->obj_id);
541 
542  $lg = $dispatcher->initHeaderAction();
543 
544  if ($this->user->getId() != ANONYMOUS_USER_ID and $this->object->getNotification() == 1) {
546  $this->ctrl->setParameter($this, 'ntf', 1);
547  $lg->addCustomCommand($this->ctrl->getLinkTarget($this, 'toggleNotification'), 'dcl_notification_deactivate_dcl');
548  $lg->addHeaderIcon('not_icon', ilUtil::getImagePath('object/notification_on.svg'), $this->lng->txt('dcl_notification_activated'));
549  } else {
550  $this->ctrl->setParameter($this, 'ntf', 2);
551  $lg->addCustomCommand($this->ctrl->getLinkTarget($this, 'toggleNotification'), 'dcl_notification_activate_dcl');
552  $lg->addHeaderIcon('not_icon', ilUtil::getImagePath('object/notification_off.svg'), $this->lng->txt('dcl_notification_deactivated'));
553  }
554  $this->ctrl->setParameter($this, 'ntf', '');
555  }
556 
557  $this->tpl->setHeaderActionMenu($lg->getHeaderAction());
558  }
559 }
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.
redirectByClass( $a_class, string $a_cmd=null, string $a_anchor=null, bool $is_async=false)
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
setOnScreenMessage(string $type, string $a_txt, bool $a_keep=false)
Set a message to be displayed to the user.
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
static prepareJsLinks(string $redraw_url, string $notes_url, string $tags_url, ilGlobalTemplateInterface $tpl=null)
Insert js/ajax links into template.
checkAccess(string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=null, ?int $a_tree_id=null)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
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="")
setParameterByClass(string $a_class, string $a_parameter, $a_value)
prepareOutput(bool $show_sub_objects=true)
ilDclTableListGUI: ilDclFieldListGUI, ilDclFieldEditGUI, ilDclTableViewGUI, ilDclTableEditGUI ...
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)
static _lookupObjId(int $ref_id)
global $DIC
Definition: feed.php:28
ilObjDataCollectionGUI: ilInfoScreenGUI, ilNoteGUI, ilCommonActionDispatcherGUI ilObjDataCollectionG...
static http()
Fetches the global http state from ILIAS.
__construct(VocabulariesInterface $vocabularies)
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)
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
static hasWriteAccess(int $ref, ?int $user_id=0)
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.
Hook-Class for exporting data-collections (used in SOAP-Class) This Class avoids duplicated code by r...
$message
Definition: xapiexit.php:32
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...
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
infoScreenForward()
show information screen
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
ilDclDetailedViewGUI: ilDclDetailedViewDefinitionGUI, ilEditClipboardGUI, ilCommentGUI ...
ilAccessHandler $access