ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilObjDataCollectionGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
23
39{
40 public const GET_REF_ID = 'ref_id';
41 public const GET_TABLE_ID = 'table_id';
42 public const GET_VIEW_ID = 'tableview_id';
43 public const GET_RECORD_ID = 'record_id';
44
45 public const TAB_EDIT_DCL = 'settings';
46 public const TAB_LIST_TABLES = 'dcl_tables';
47 public const TAB_META_DATA = 'meta_data';
48 public const TAB_EXPORT = 'export';
49 public const TAB_LIST_PERMISSIONS = 'perm_settings';
50 public const TAB_INFO = 'info_short';
51 public const TAB_CONTENT = 'content';
53 public ?ilObject $object = null;
54 protected ilCtrl $ctrl;
55 protected ilLanguage $lng;
56 protected ilTabsGUI $tabs;
57 protected int $table_id;
59
60 public function __construct(int $a_id = 0, int $a_id_type = self::REPOSITORY_NODE_ID, int $a_parent_node_id = 0)
61 {
62 global $DIC;
63
64 parent::__construct($a_id, $a_id_type, $a_parent_node_id);
65
66 $this->tabs = $DIC->tabs();
67 $this->notification_settings = new ilDclNotification($DIC->database());
68
69 $this->lng->loadLanguageModule('dcl');
70 $this->lng->loadLanguageModule('content');
71 $this->lng->loadLanguageModule('obj');
72 $this->lng->loadLanguageModule('cntr');
73
74 $this->setTableId($this->getRefId());
75
76 if (!$this->ctrl->isAsynch()) {
77 $this->addJavaScript();
78 }
79
80 $this->ctrl->saveParameter($this, 'table_id');
81 }
82
83 private function setTableId(int $objectOrRefId = 0): void
84 {
85 if ($this->http->wrapper()->query()->has('table_id')) {
86 $this->table_id = $this->http->wrapper()->query()->retrieve('table_id', $this->refinery->kindlyTo()->int());
87 } elseif ($this->http->wrapper()->query()->has('tableview_id')) {
88 $this->table_id = ilDclTableView::find(
89 $this->http->wrapper()->query()->retrieve('tableview_id', $this->refinery->kindlyTo()->int())
90 )->getTableId();
91 } elseif ($objectOrRefId > 0) {
92 $tables = ilObjDataCollectionAccess::hasWriteAccess($this->ref_id) ? $this->object->getTables() : $this->object->getVisibleTables();
93 if ($tables !== []) {
94 $this->table_id = array_shift($tables)->getId();
95 }
96 }
97 }
98
99 public function getObjectId(): int
100 {
101 return $this->obj_id;
102 }
103
104 private function addJavaScript(): void
105 {
106 $this->tpl->addJavaScript('assets/js/datacollection.js');
107 }
108
109 public function getStandardCmd(): string
110 {
111 return 'render';
112 }
113
114 public function getType(): string
115 {
117 }
118
119 public function executeCommand(): void
120 {
121 global $DIC;
122
123 $ilNavigationHistory = $DIC['ilNavigationHistory'];
124 $DIC->help()->setScreenIdComponent('dcl');
125 $link = $this->ctrl->getLinkTarget($this, 'render');
126
127 if ($this->getObject() !== null) {
128 $ilNavigationHistory->addItem($this->object->getRefId(), $link, 'dcl');
129 }
130
131 $next_class = $this->ctrl->getNextClass($this);
132 $cmd = $this->ctrl->getCmd();
133
134 if (!$this->getCreationMode() && $next_class != 'ilinfoscreengui' && $cmd !== 'infoScreen' && !$this->checkPermissionBool('read')) {
135 $DIC->ui()->mainTemplate()->loadStandardTemplate();
136 $DIC->ui()->mainTemplate()->setContent('Permission Denied.');
137 return;
138 }
139
140 switch ($next_class) {
141 case strtolower(ilInfoScreenGUI::class):
142 $this->prepareOutput();
143 $this->tabs->activateTab(self::TAB_INFO);
144 $this->infoScreenForward();
145 break;
146 case strtolower(ilCommonActionDispatcherGUI::class):
147 $this->prepareOutput();
149 $gui->enableCommentsSettings(false);
150 $this->ctrl->forwardCommand($gui);
151 break;
152 case strtolower(ilPermissionGUI::class):
153 $this->prepareOutput();
154 $this->tabs->activateTab(self::TAB_LIST_PERMISSIONS);
155 $perm_gui = new ilPermissionGUI($this);
156 $this->ctrl->forwardCommand($perm_gui);
157 break;
158 case strtolower(ilObjectCopyGUI::class):
159 $cp = new ilObjectCopyGUI($this);
160 $cp->setType('dcl');
161 $DIC->ui()->mainTemplate()->loadStandardTemplate();
162 $this->ctrl->forwardCommand($cp);
163 break;
164 case strtolower(ilDclTableListGUI::class):
165 $this->prepareOutput();
166 $this->tabs->activateTab(self::TAB_LIST_TABLES);
167 $tablelist_gui = new ilDclTableListGUI($this);
168 $this->ctrl->forwardCommand($tablelist_gui);
169 break;
170 case strtolower(ilDclRecordListGUI::class):
171 $this->addHeaderAction();
172 $this->prepareOutput();
173 $this->tabs->activateTab(self::TAB_CONTENT);
174 try {
175 $recordlist_gui = new ilDclRecordListGUI($this, $this->table_id, $this->getTableViewId());
176 $this->ctrl->forwardCommand($recordlist_gui);
177 } catch (ilDclNoTableviewException $e) {
178 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_INFO, $this->lng->txt('dcl_no_tableview_found'));
179 }
180 break;
181 case strtolower(ilDclRecordEditGUI::class):
182 $this->prepareOutput();
183 $this->tabs->activateTab(self::TAB_CONTENT);
184 $recordedit_gui = new ilDclRecordEditGUI($this, $this->table_id, $this->getTableViewId());
185 $this->ctrl->forwardCommand($recordedit_gui);
186 break;
187 case strtolower(ilObjFileGUI::class):
188 $this->prepareOutput();
189 $this->tabs->activateTab(self::TAB_CONTENT);
190 $file_gui = new ilObjFile($this->getRefId());
191 $this->ctrl->forwardCommand($file_gui);
192 break;
193 case strtolower(ilRatingGUI::class):
194 $rgui = new ilRatingGUI();
195
196 $record_id = $this->http->wrapper()->query()->retrieve('record_id', $this->refinery->kindlyTo()->int());
197 $field_id = $this->http->wrapper()->query()->retrieve('field_id', $this->refinery->kindlyTo()->int());
198
199 $rgui->setObject($record_id, 'dcl_record', $field_id, 'dcl_field');
200 $rgui->executeCommand();
201
202 $detail = $this->http->wrapper()->query()->retrieve('detail_view', $this->refinery->kindlyTo()->bool());
203 $this->ctrl->setParameterByClass(
204 $detail ? ilDclDetailedViewGUI::class : ilDclRecordListGUI::class,
205 'tableview_id',
206 $this->http->wrapper()->query()->retrieve('tableview_id', $this->refinery->kindlyTo()->int())
207 );
208 if ($detail) {
209 $this->ctrl->setParameterByClass(
210 ilDclDetailedViewGUI::class,
211 'record_id',
212 $this->http->wrapper()->query()->retrieve('record_id', $this->refinery->kindlyTo()->int())
213 );
214 $this->ctrl->redirectByClass([ilRepositoryGUI::class, self::class, ilDclDetailedViewGUI::class], 'renderRecord');
215 } else {
216 $this->listRecords();
217 }
218 break;
219 case strtolower(ilDclDetailedViewGUI::class):
220 $this->prepareOutput();
221 $recordview_gui = new ilDclDetailedViewGUI($this, $this->getTableViewId());
222 $this->ctrl->forwardCommand($recordview_gui);
223 $this->tabs->setBackTarget(
224 $this->lng->txt('back'),
225 $this->ctrl->getLinkTargetByClass(
226 ilDclRecordListGUI::class,
228 )
229 );
230 break;
231 case strtolower(ilNoteGUI::class):
232 $this->prepareOutput();
233 $recordviewGui = new ilDclDetailedViewGUI($this, $this->getTableViewId());
234 $this->ctrl->forwardCommand($recordviewGui);
235 $this->tabs->clearTargets();
236 $this->tabs->setBackTarget($this->lng->txt('back'), $this->ctrl->getLinkTarget($this, ''));
237 break;
238 case strtolower(ilExportGUI::class):
239 $this->prepareOutput();
240 $this->handleExport();
241 break;
242 case strtolower(ilDclPropertyFormGUI::class):
243 $recordedit_gui = new ilDclRecordEditGUI($this, $this->table_id, $this->getTableViewId());
244 $recordedit_gui->getRecord();
245 $recordedit_gui->initForm();
246 $form = $recordedit_gui->getForm();
247 $this->ctrl->forwardCommand($form);
248 break;
249 case strtolower(ilObjectMetaDataGUI::class):
250 $this->checkPermission('write');
251 $this->prepareOutput();
252 $this->tabs->activateTab(self::TAB_META_DATA);
253 $gui = new ilObjectMetaDataGUI($this->object);
254 $this->ctrl->forwardCommand($gui);
255 break;
256 case strtolower(ilObjectContentStyleSettingsGUI::class):
257 $this->prepareOutput();
258 $this->setEditTabs();
259 $this->tabs->activateTab('settings');
260 $this->tabs->activateSubTab('cont_style');
261 global $DIC;
262 $settings_gui = $DIC->contentStyle()->gui()->objectSettingsGUIForRefId(null, $this->ref_id);
263 $this->ctrl->forwardCommand($settings_gui);
264 break;
265 default:
266 parent::executeCommand();
267 }
268 }
269
270 protected function handleExport(bool $do_default = false): void
271 {
272 $this->tabs->setTabActive(self::TAB_EXPORT);
273 $exp_gui = new ilExportGUI($this);
274 if ($do_default) {
275 $exp_gui->listExportFiles();
276 } else {
277 $this->ctrl->forwardCommand($exp_gui);
278 }
279 }
280
281 protected function handleExportAsync(): void
282 {
283 $this->tabs->setTabActive(self::TAB_EXPORT);
284 $exp_gui = new ilExportGUI($this);
285 $exporter = new ilDclContentExporter($this->object->getRefId(), null);
286 $exporter->exportAsync();
287 $this->ctrl->redirect($exp_gui);
288 }
289
290 protected function getTableViewId(): int
291 {
292 $tableview_id = null;
293 if ($this->http->wrapper()->query()->has('tableview_id')) {
294 $tableview_id = $this->http->wrapper()->query()->retrieve(
295 'tableview_id',
296 $this->refinery->kindlyTo()->int()
297 );
298 }
299 if ($this->http->wrapper()->post()->has('tableview_id')) {
300 $tableview_id = $this->http->wrapper()->post()->retrieve(
301 'tableview_id',
302 $this->refinery->kindlyTo()->int()
303 );
304 }
305 if (!$tableview_id) {
306 $table_obj = ilDclCache::getTableCache($this->table_id);
307 $tableview_id = $table_obj->getFirstTableViewId();
308 }
309 if ($tableview_id === null) {
310 throw new ilDclNoTableviewException('No visible tableview configured!');
311 }
312 return $tableview_id;
313 }
314
315 public function infoScreen(): void
316 {
317 $this->ctrl->redirectByClass(ilInfoScreenGUI::class, 'showSummary');
318 }
319
320 public function render(): void
321 {
322 $this->listRecords();
323 }
324
325 public function infoScreenForward(): void
326 {
327 $this->tabs->activateTab(self::TAB_INFO);
328
329 if (!$this->checkPermissionBool('visible')) {
330 $this->checkPermission('read');
331 }
332
333 $info = new ilInfoScreenGUI($this);
334 $info->enablePrivateNotes();
335 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
336
337 $this->ctrl->forwardCommand($info);
338 }
339
340 protected function addLocatorItems(): void
341 {
342 if (is_object($this->object) === true) {
343 $this->locator->addItem(
344 $this->object->getTitle(),
345 $this->ctrl->getLinkTarget($this, ''),
346 (string) $this->object->getRefId()
347 );
348 }
349 }
350
351 public static function _goto(string $a_target): void
352 {
353 global $DIC;
354 $lng = $DIC->language();
355
356 $ctrl = $DIC->ctrl();
357 $access = $DIC->access();
358 $tpl = $DIC->ui()->mainTemplate();
359
361 $values = array_combine($values, array_pad(explode('_', $a_target), count($values), 0));
362
363 $ref_id = (int) $values[self::GET_REF_ID];
364
365 if ($access->checkAccess('read', '', $ref_id)) {
366 $ctrl->setParameterByClass(ilRepositoryGUI::class, self::GET_REF_ID, $ref_id);
368 $table_id = (int) $values[self::GET_TABLE_ID];
369 if ($table_id !== 0 && isset($object->getVisibleTables()[$table_id])) {
370 $ctrl->setParameterByClass(ilObjDataCollectionGUI::class, self::GET_TABLE_ID, $table_id);
371 $table = $object->getVisibleTables()[$table_id];
372 $view_id = (int) $values[self::GET_VIEW_ID];
373 if ($view_id !== 0 && isset($table->getTableViews()[$view_id])) {
374 $ctrl->setParameterByClass(ilObjDataCollectionGUI::class, self::GET_VIEW_ID, $view_id);
375 }
376 $record_id = (int) $values[self::GET_RECORD_ID];
377 if ($record_id !== 0 && isset($table->getRecords()[$record_id])) {
378 $ctrl->setParameterByClass(ilDclDetailedViewGUI::class, self::GET_RECORD_ID, $record_id);
379 $ctrl->redirectByClass([ilRepositoryGUI::class, self::class, ilDclDetailedViewGUI::class], 'renderRecord');
380 }
381 }
382 $ctrl->redirectByClass([ilRepositoryGUI::class, self::class, ilDclRecordListGUI::class], 'listRecords');
383 } elseif ($access->checkAccess('visbile', '', $ref_id)) {
384 ilObjectGUI::_gotoRepositoryNode((int) $a_target, 'infoScreen');
385 } else {
386 $message = sprintf(
387 $lng->txt('msg_no_perm_read_item'),
389 );
390 $tpl->setOnScreenMessage('failure', $message, true);
391
393 }
394 }
395
396 protected function afterSave(ilObject $new_object): void
397 {
398 $this->tpl->setOnScreenMessage('success', $this->lng->txt('object_added'), true);
399 $this->ctrl->redirectByClass(ilDclTableListGUI::class, 'listTables');
400 }
401
402 protected function setTabs(): void
403 {
404 $ref_id = $this->object->getRefId();
405
406 if ($this->access->checkAccess('read', '', $ref_id) === true) {
407 $this->addTab(self::TAB_CONTENT, $this->ctrl->getLinkTargetByClass(ilDclRecordListGUI::class, 'show'));
408 }
409
410 if ($this->access->checkAccess('visible', '', $ref_id) === true || $this->access->checkAccess('read', '', $ref_id) === true) {
411 $this->addTab(self::TAB_INFO, $this->ctrl->getLinkTargetByClass(ilInfoScreenGUI::class, 'showSummary'));
412 }
413
414 if ($this->access->checkAccess('write', '', $ref_id) === true) {
415 $this->addTab(self::TAB_EDIT_DCL, $this->ctrl->getLinkTarget($this, 'edit'));
416 $this->addTab(self::TAB_LIST_TABLES, $this->ctrl->getLinkTargetByClass(ilDclTableListGUI::class, 'listTables'));
417 $mdgui = new ilObjectMetaDataGUI($this->object);
418 if ($mdtab = $mdgui->getTab()) {
419 $this->tabs_gui->addTab(self::TAB_META_DATA, $this->lng->txt('meta_data'), $mdtab);
420 }
421 $this->addTab(self::TAB_EXPORT, $this->ctrl->getLinkTargetByClass(ilExportGUI::class, ''));
422 }
423
424 if ($this->access->checkAccess('edit_permission', '', $ref_id) === true) {
425 $this->addTab(self::TAB_LIST_PERMISSIONS, $this->ctrl->getLinkTargetByClass(ilPermissionGUI::class, 'perm'));
426 }
427 }
428
429 private function addTab(string $langKey, string $link): void
430 {
431 $this->tabs->addTab($langKey, $this->lng->txt($langKey), $link);
432 }
433
434 protected function initForm(): Form
435 {
436 $inputs = [];
437
438 $edit = [];
439 $edit['title'] = $this->ui_factory->input()->field()->text($this->lng->txt('title'))->withRequired(true);
440 $edit['description'] = $this->ui_factory->input()->field()->textarea($this->lng->txt('description'));
441 $edit['notification'] = $this->ui_factory->input()->field()->checkbox(
442 $this->lng->txt('dcl_activate_notification'),
443 $this->lng->txt('dcl_notification_info')
444 );
445 $inputs['edit'] = $this->ui_factory->input()->field()->section($edit, $this->lng->txt($this->type . '_edit'))
446 ->withValue([
447 'title' => $this->object->getTitle(),
448 'description' => $this->object->getLongDescription(),
449 'notification' => $this->object->getNotification(),
450 ]);
451
452 $availability = [];
453 $availability['online'] = $this->ui_factory->input()->field()->checkbox(
454 $this->lng->txt('online'),
455 $this->lng->txt('dcl_online_info')
456 );
457 $inputs['availability'] = $this->ui_factory->input()->field()->section($availability, $this->lng->txt('obj_activation_list_gui'))
458 ->withValue(['online' => $this->object->getOnline(),]);
459
460 $presentation = [];
461 $presentation['tile_image'] = $this->object->getObjectProperties()->getPropertyTileImage()->toForm(
462 $this->lng,
463 $this->ui_factory->input()->field(),
464 $this->refinery
465 );
466 $inputs['presentation'] = $this->ui_factory->input()->field()->section($presentation, $this->lng->txt('cont_presentation'));
467
468 return $this->ui_factory->input()->container()->form()->standard($this->ctrl->getFormAction($this, 'update'), $inputs);
469 }
470
471 public function edit(): void
472 {
473 if (!$this->checkPermissionBool('write')) {
474 $this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_FAILURE, $this->lng->txt('permission_denied'));
475 }
476
477 $this->setEditTabs();
478 $this->tabs->activateTab(self::TAB_EDIT_DCL);
479
480 $this->tpl->setContent($this->ui_renderer->render($this->initForm()));
481 }
482
483 public function update(): void
484 {
485 if (!$this->checkPermissionBool('write')) {
486 $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
487 }
488
489 $this->setEditTabs();
490 $this->tabs->activateTab(self::TAB_EDIT_DCL);
491
492 $form = $this->initForm()->withRequest($this->http->request());
493 $data = $form->getData();
494
495 if ($data !== null) {
496 $this->object->setTitle($data['edit']['title']);
497 $this->object->setDescription($data['edit']['description']);
498 $this->object->setNotification($data['edit']['notification']);
499 $this->object->setOnline($data['availability']['online']);
500 $this->object->getObjectProperties()->storePropertyTileImage($data['presentation']['tile_image']);
501 $this->object->update();
502 $this->tpl->setOnScreenMessage('success', $this->lng->txt('msg_obj_modified'), true);
503 }
504
505 $this->tpl->setContent($this->ui_renderer->render($form));
506 }
507
508 protected function setEditTabs(): void
509 {
510 $this->tabs->addSubTab(
511 'general',
512 $this->lng->txt('general'),
513 $this->ctrl->getLinkTargetByClass(self::class, 'edit')
514 );
515 $this->tabs->addSubTab(
516 'cont_style',
517 $this->lng->txt('cont_style'),
518 $this->ctrl->getLinkTargetByClass(ilObjectContentStyleSettingsGUI::class)
519 );
520
521 $this->tabs->activateSubTab('general');
522 }
523
524 final public function listRecords(): void
525 {
526 $this->ctrl->redirectByClass(ilDclRecordListGUI::class, 'show');
527 }
528
530 {
531 return new ilObjDataCollection($this->ref_id, true);
532 }
533
534 final public function activateNotification(): void
535 {
537 foreach (ilDclNotificationType::cases() as $notification) {
538 $this->notification_settings->add($this->object, $this->user, $notification);
539 }
540 $this->ctrl->redirectByClass(ilDclRecordListGUI::class, 'show');
541 }
542
543 final public function deactivateNotification(): void
544 {
545 ilNotification::setNotification(ilNotification::TYPE_DATA_COLLECTION, $this->user->getId(), $this->obj_id, false);
546 $this->notification_settings->clear($this->object, $this->user);
547 $this->ctrl->redirectByClass(ilDclRecordListGUI::class, 'show');
548 }
549
550 final public function editNotification(): void
551 {
552 if ($data = $this->getNotificationModal()->withRequest($this->request)->getData()) {
553 $this->notification_settings->clear($this->object, $this->user);
554 foreach (ilDclNotificationType::cases() as $notification) {
555 if ($data[$notification->value]) {
556 $this->notification_settings->add($this->object, $this->user, $notification);
557 }
558 }
559 }
560 $this->ctrl->redirectByClass(ilDclRecordListGUI::class, 'show');
561 }
562
563 protected function addHeaderAction(): void
564 {
566 $this->ctrl->getLinkTarget($this, 'redrawHeaderAction', '', true),
567 '',
568 $this->ctrl->getLinkTargetByClass([ilCommonActionDispatcherGUI::class, ilTaggingGUI::class], '', '', true)
569 );
570
571 $dispatcher = new ilCommonActionDispatcherGUI(ilCommonActionDispatcherGUI::TYPE_REPOSITORY, $this->access, 'dcl', $this->ref_id, $this->obj_id);
572
573 $lg = $dispatcher->initHeaderAction();
574
575 if ($this->user->getId() != ANONYMOUS_USER_ID and $this->object->getNotification() == 1) {
577 $lg->addCustomCommandButton(
578 $this->ui_factory->button()->shy(
579 $this->lng->txt('dcl_notification_deactivate'),
580 $this->ctrl->getLinkTarget($this, 'deactivateNotification')
581 )
582 );
583 $modal = $this->getNotificationModal();
584 $lg->addCustomCommandButton(
585 $this->ui_factory->button()->shy(
586 $this->lng->txt('dcl_notification_settings'),
587 $modal->getShowSignal()
588 ),
589 $modal
590 );
591 $lg->addHeaderIcon('not_icon', ilUtil::getImagePath('object/notification_on.svg'), $this->lng->txt('dcl_notification_activated'));
592 } else {
593 $lg->addCustomCommandButton(
594 $this->ui_factory->button()->shy(
595 $this->lng->txt('dcl_notification_activate'),
596 $this->ctrl->getLinkTarget($this, 'activateNotification')
597 )
598 );
599 $lg->addHeaderIcon('not_icon', ilUtil::getImagePath('object/notification_off.svg'), $this->lng->txt('dcl_notification_deactivated'));
600 }
601 $this->ctrl->setParameter($this, 'ntf', '');
602 }
603
604 $this->tpl->setHeaderActionMenu($lg->getHeaderAction());
605 }
606
607 protected function getNotificationModal(): RoundTrip
608 {
609 return $this->ui_factory->modal()->roundtrip(
610 $this->lng->txt('dcl_notification_settings'),
611 null,
612 [
613 ilDclNotificationType::RECORD_CREATE->value => $this->ui_factory->input()->field()->checkbox($this->lng->txt('dcl_new_entries'))
614 ->withValue($this->notification_settings->has($this->object, $this->user->getId(), ilDclNotificationType::RECORD_CREATE)),
615 ilDclNotificationType::RECORD_UPDATE->value => $this->ui_factory->input()->field()->checkbox($this->lng->txt('dcl_updated_entries'))
616 ->withValue($this->notification_settings->has($this->object, $this->user->getId(), ilDclNotificationType::RECORD_UPDATE)),
617 ilDclNotificationType::RECORD_DELETE->value => $this->ui_factory->input()->field()->checkbox($this->lng->txt('dcl_deleted_entries'))
618 ->withValue($this->notification_settings->has($this->object, $this->user->getId(), ilDclNotificationType::RECORD_DELETE)),
619 ],
620 $this->ctrl->getLinkTarget($this, 'editNotification')
621 );
622 }
623}
error(string $a_errmsg)
Class ilCommonActionDispatcherGUI.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Class ilCtrl provides processing control methods.
redirectByClass( $a_class, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false)
@inheritDoc
setParameterByClass(string $a_class, string $a_parameter, $a_value)
@inheritDoc
static getTableCache(?int $table_id=null)
Hook-Class for exporting data-collections (used in SOAP-Class) This Class avoids duplicated code by r...
@ilCtrl_Calls ilDclDetailedViewGUI: ilDclDetailedViewDefinitionGUI, ilEditClipboardGUI,...
@ilCtrl_Calls ilDclTableListGUI: ilDclFieldListGUI, ilDclFieldEditGUI, ilDclTableViewGUI,...
Export User Interface Class.
Class ilInfoScreenGUI.
language handling
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...
static setNotification(int $type, int $user_id, int $id, bool $status=true)
Set notification status for object and user.
static hasNotification(int $type, int $user_id, int $id)
Check notification status for object and user.
static hasWriteAccess(int $ref, ?int $user_id=0)
@ilCtrl_Calls ilObjDataCollectionGUI: ilInfoScreenGUI, ilNoteGUI, ilCommonActionDispatcherGUI @ilCtrl...
addLocatorItems()
Functions to be overwritten.
setTabs()
create tabs (repository/workspace switch)
addTab(string $langKey, string $link)
__construct(int $a_id=0, int $a_id_type=self::REPOSITORY_NODE_ID, int $a_parent_node_id=0)
addHeaderAction()
Add header action menu.
handleExport(bool $do_default=false)
getType()
Functions that must be overwritten.
afterSave(ilObject $new_object)
Post (successful) object creation hook.
Class ilObjFile.
New implementation of ilObjectGUI.
ilAccessHandler $access
ilGlobalTemplateInterface $tpl
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $node_id=null)
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
prepareOutput(bool $show_sub_objects=true)
GUI class for the workflow of copying objects.
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
static prepareJsLinks(string $redraw_url, string $notes_url, string $tags_url, ?ilGlobalTemplateInterface $tpl=null)
Insert js/ajax links into template.
Class ilObjectMetaDataGUI.
Class ilObject Basic functions for all objects.
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
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 $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
const ANONYMOUS_USER_ID
Definition: constants.php:27
$info
Definition: entry_point.php:21
setOnScreenMessage(string $type, string $a_txt, bool $a_keep=false)
Set a message to be displayed to the user.
This describes commonalities between all forms.
Definition: Form.php:33
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 http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $DIC
Definition: shib_login.php:26
$message
Definition: xapiexit.php:31