ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilObjContentPageGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2018 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
19 {
23  protected $request;
24 
28  protected $ctrl;
29 
33  protected $access;
34 
38  protected $settings;
39 
43  protected $tabs;
44 
48  protected $user;
49 
53  protected $obj_service;
54 
58  protected $navHistory;
59 
63  protected $error;
64 
68  protected $dic;
69 
73  protected $infoScreenEnabled = false;
74 
76  protected $help;
77 
81  public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
82  {
83  global $DIC;
84 
85  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
86 
87  $this->dic = $DIC;
88  $this->request = $this->dic->http()->request();
89  $this->settings = $this->dic->settings();
90  $this->access = $this->dic->access();
91  $this->ctrl = $this->dic->ctrl();
92  $this->tabs = $this->dic->tabs();
93  $this->user = $this->dic->user();
94  $this->obj_service = $this->dic->object();
95  $this->navHistory = $this->dic['ilNavigationHistory'];
96  $this->error = $this->dic['ilErr'];
97  $this->help = $DIC['ilHelp'];
98 
99  $this->lng->loadLanguageModule('copa');
100  $this->lng->loadLanguageModule('style');
101  $this->lng->loadLanguageModule('content');
102 
103  if ($this->object instanceof \ilObjContentPage) {
104  $this->infoScreenEnabled = \ilContainer::_lookupContainerSetting(
105  $this->object->getId(),
107  true
108  );
109  }
110  }
111 
116  public static function _goto($target)
117  {
118  global $DIC;
119 
120  $targetAttributes = explode('_', $target);
121  $refId = (int) $targetAttributes[0];
122 
123  if ((int) $refId <= 0) {
124  $DIC['ilErr']->raiseError($DIC->language()->txt('msg_no_perm_read'), $DIC['ilErr']->FATAL);
125  }
126 
127  if ($DIC->access()->checkAccess('read', '', $refId)) {
128  $DIC->ctrl()->setTargetScript('ilias.php');
129  $DIC->ctrl()->initBaseClass('ilRepositoryGUI');
130  if (isset($DIC->http()->request()->getQueryParams()['gotolp'])) {
131  $DIC->ctrl()->setParameterByClass(__CLASS__, 'gotolp', 1);
132  }
133  $DIC->ctrl()->setParameterByClass(__CLASS__, 'ref_id', $refId);
134  $DIC->ctrl()->redirectByClass(array(
135  'ilRepositoryGUI',
136  __CLASS__,
137  ), self::UI_CMD_VIEW);
138  } elseif ($DIC->access()->checkAccess("visible", "", $target)) {
139  ilObjectGUI::_gotoRepositoryNode($target, "infoScreen");
140  } elseif ($DIC->access()->checkAccess('read', '', ROOT_FOLDER_ID)) {
141  \ilUtil::sendInfo(sprintf(
142  $DIC->language()->txt('msg_no_perm_read_item'),
144  ), true);
145 
146  $DIC->ctrl()->setTargetScript('ilias.php');
147  $DIC->ctrl()->initBaseClass('ilRepositoryGUI');
148  $DIC->ctrl()->setParameterByClass('ilRepositoryGUI', 'ref_id', ROOT_FOLDER_ID);
149  $DIC->ctrl()->redirectByClass('ilRepositoryGUI');
150  }
151 
152  $DIC['ilErr']->raiseError($DIC->language()->txt('msg_no_perm_read'), $DIC['ilErr']->FATAL);
153  }
154 
158  public function getType()
159  {
160  return self::OBJ_TYPE;
161  }
162 
166  public function setTabs()
167  {
168  $this->help->setScreenIdComponent($this->object->getType());
169 
170  if ($this->checkPermissionBool('read')) {
171  $this->tabs->addTab(
172  self::UI_TAB_ID_CONTENT,
173  $this->lng->txt('content'),
174  $this->ctrl->getLinkTarget($this, self::UI_CMD_VIEW)
175  );
176  }
177 
178  if ($this->infoScreenEnabled && ($this->checkPermissionBool('visible') || $this->checkPermissionBool('read'))) {
179  $this->tabs->addTab(
180  self::UI_TAB_ID_INFO,
181  $this->lng->txt('info_short'),
182  $this->ctrl->getLinkTargetByClass('ilinfoscreengui', 'showSummary')
183  );
184  }
185 
186  if ($this->checkPermissionBool('write')) {
187  $this->tabs->addTab(
188  self::UI_TAB_ID_SETTINGS,
189  $this->lng->txt('settings'),
190  $this->ctrl->getLinkTarget($this, self::UI_CMD_EDIT)
191  );
192  }
193 
194  if (\ilLearningProgressAccess::checkAccess($this->object->getRefId())) {
195  $this->tabs->addTab(
196  self::UI_TAB_ID_LP,
197  $this->lng->txt('learning_progress'),
198  $this->ctrl->getLinkTargetByClass('illearningprogressgui')
199  );
200  }
201 
202  if ($this->checkPermissionBool('write')) {
203  $this->tabs->addTab(
204  self::UI_TAB_ID_EXPORT,
205  $this->lng->txt('export'),
206  $this->ctrl->getLinkTargetByClass('ilexportgui')
207  );
208  }
209 
210  if ($this->checkPermissionBool('edit_permission')) {
211  $this->tabs->addTab(
212  self::UI_TAB_ID_PERMISSIONS,
213  $this->lng->txt('perm_settings'),
214  $this->ctrl->getLinkTargetByClass('ilpermissiongui', 'perm')
215  );
216  }
217  }
218 
225  public function executeCommand()
226  {
227  $nextClass = $this->ctrl->getNextClass($this);
228  $cmd = $this->ctrl->getCmd(self::UI_CMD_VIEW);
229 
230  $this->addToNavigationHistory();
231 
232  if (strtolower($nextClass) !== 'ilobjstylesheetgui') {
233  $this->renderHeaderActions();
234  }
235 
236  switch (strtolower($nextClass)) {
237  case 'ilobjstylesheetgui':
238  $this->checkPermission('write');
239 
240  $this->setLocator();
241 
242  $this->ctrl->setReturn($this, 'editStyleProperties');
243  $style_gui = new \ilObjStyleSheetGUI(
244  '',
245  $this->object->getStyleSheetId(),
246  false,
247  false
248  );
249  $style_gui->omitLocator();
250  if ($cmd === 'create' || $_GET['new_type'] === 'sty') {
251  $style_gui->setCreationMode(true);
252  }
253 
254  if ($cmd === 'confirmedDelete') {
255  $this->object->setStyleSheetId(0);
256  $this->object->update();
257  }
258 
259  $ret = $this->ctrl->forwardCommand($style_gui);
260 
261  if ($cmd === 'save' || $cmd === 'copyStyle' || $cmd === 'importStyle') {
262  $styleId = $ret;
263  $this->object->setStyleSheetId($styleId);
264  $this->object->update();
265  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'edit');
266  }
267  break;
268 
269  case 'ilcontentpagepagegui':
270  if (in_array(strtolower($cmd), array_map('strtolower', [
271  self::UI_CMD_COPAGE_DOWNLOAD_FILE,
272  self::UI_CMD_COPAGE_DISPLAY_FULLSCREEN,
273  self::UI_CMD_COPAGE_DOWNLOAD_PARAGRAPH,
274  ]))
275  ) {
276  if (!$this->checkPermissionBool('read')) {
277  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
278  }
279  } elseif (!$this->checkPermissionBool('write') || $this->user->isAnonymous()) {
280  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
281  }
282 
283  $this->prepareOutput();
284 
285  $this->tpl->setVariable(
286  'LOCATION_CONTENT_STYLESHEET',
287  \ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId())
288  );
289  $this->tpl->setCurrentBlock('SyntaxStyle');
290  $this->tpl->setVariable('LOCATION_SYNTAX_STYLESHEET', \ilObjStyleSheet::getSyntaxStylePath());
291  $this->tpl->parseCurrentBlock();
292 
293  $forwarder = new \ilContentPagePageCommandForwarder(
294  $this->request,
295  $this->ctrl,
296  $this->tabs,
297  $this->lng,
298  $this->object
299  );
300  $pageContent = $forwarder->forward();
301  if (strlen($pageContent) > 0) {
302  $this->tpl->setContent($pageContent);
303  }
304  break;
305 
306  case 'ilinfoscreengui':
307  if (!$this->infoScreenEnabled) {
308  return null;
309  }
310  $this->prepareOutput();
311 
312  $this->infoScreenForward();
313  break;
314 
315  case 'ilcommonactiondispatchergui':
316  $this->ctrl->forwardCommand(\ilCommonActionDispatcherGUI::getInstanceFromAjaxCall());
317  break;
318 
319  case 'ilpermissiongui':
320  $this->checkPermission('edit_permission');
321 
322  $this->prepareOutput();
323  $this->tabs->activateTab(self::UI_TAB_ID_PERMISSIONS);
324 
325  $this->ctrl->forwardCommand(new \ilPermissionGUI($this));
326  break;
327 
328  case 'illearningprogressgui':
329  if (!\ilLearningProgressAccess::checkAccess($this->object->getRefId())) {
330  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
331  }
332 
333  $this->prepareOutput();
334  $this->tabs->activateTab(self::UI_TAB_ID_LP);
335 
336  $this->ctrl->forwardCommand(new \ilLearningProgressGUI(
338  $this->object->getRefId(),
339  isset(
340  $this->request->getQueryParams()['user_id']) &&
341  is_numeric(
342  $this->request->getQueryParams()['user_id']
343  ) ?
344  (int) $this->request->getQueryParams()['user_id'] :
345  $this->user->getId()
346  ));
347  break;
348 
349  case 'ilexportgui':
350  $this->checkPermission('write');
351 
352  $this->prepareOutput();
353  $this->tabs->activateTab(self::UI_TAB_ID_EXPORT);
354 
355  $gui = new \ilExportGUI($this);
356  $gui->addFormat('xml');
357  $this->ctrl->forwardCommand($gui);
358  break;
359 
360  case 'ilobjectcustomiconconfigurationgui':
361  if (!$this->checkPermissionBool('write') || !$this->settings->get('custom_icons')) {
362  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
363  }
364 
365  $this->prepareOutput();
366  $this->tabs->activateTab(self::UI_TAB_ID_SETTINGS);
367  $this->setSettingsSubTabs(self::UI_TAB_ID_ICON);
368 
369  require_once 'Services/Object/Icon/classes/class.ilObjectCustomIconConfigurationGUI.php';
370  $gui = new \ilObjectCustomIconConfigurationGUI($this->dic, $this, $this->object);
371  $this->ctrl->forwardCommand($gui);
372  break;
373 
374  case 'ilobjectcopygui':
375  $this->tpl->loadStandardTemplate();
376 
377  $gui = new \ilObjectCopyGUI($this);
378  $gui->setType(self::OBJ_TYPE);
379 
380  $this->ctrl->forwardCommand($gui);
381  break;
382 
383  default:
384  switch (true) {
385  case in_array(strtolower($cmd), array_map('strtolower', [self::UI_CMD_EDIT, self::UI_CMD_UPDATE])):
386  $this->setSettingsSubTabs(self::UI_TAB_ID_SETTINGS);
387  break;
388  }
389 
390  if (in_array(strtolower($cmd), array_map('strtolower', ['addToDesk', 'removeFromDesk']))) {
391  $this->ctrl->setCmd($cmd . 'Object');
392  }
393 
394  return parent::executeCommand();
395  }
396  return null;
397  }
398 
402  public function addToNavigationHistory()
403  {
404  if (!$this->getCreationMode()) {
405  if ($this->checkPermissionBool('read')) {
406  $this->navHistory->addItem(
407  $this->object->getRefId(),
408  \ilLink::_getLink($this->object->getRefId(), $this->object->getType()),
409  $this->object->getType()
410  );
411  }
412  }
413  }
414 
418  public function renderHeaderActions()
419  {
420  if (!$this->getCreationMode()) {
421  if ($this->checkPermissionBool('read')) {
422  $this->addHeaderAction();
423  }
424  }
425  }
426 
431  public function infoScreenForward()
432  {
433  if (!$this->infoScreenEnabled) {
434  return;
435  }
436 
437  if (!$this->checkPermissionBool('visible') && !$this->checkPermissionBool('read')) {
438  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
439  }
440 
441  $this->tabs->activateTab(self::UI_TAB_ID_INFO);
442 
443  $info = new \ilInfoScreenGUI($this);
444  $info->enableLearningProgress(true);
445  $info->enablePrivateNotes();
446  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
447 
448  $this->ctrl->forwardCommand($info);
449  }
450 
455  protected function setSettingsSubTabs($activeTab)
456  {
457  if ($this->checkPermissionBool('write')) {
458  $this->tabs->addSubTab(
459  self::UI_TAB_ID_SETTINGS,
460  $this->lng->txt('settings'),
461  $this->ctrl->getLinkTarget($this, self::UI_CMD_EDIT)
462  );
463 
464  if ($this->settings->get('custom_icons')) {
465  $this->tabs_gui->addSubTab(
466  self::UI_TAB_ID_ICON,
467  $this->lng->txt('icon_settings'),
468  $this->ctrl->getLinkTargetByClass('ilObjectCustomIconConfigurationGUI')
469  );
470  }
471 
472  $this->tabs_gui->addSubTab(
473  self::UI_TAB_ID_STYLE,
474  $this->lng->txt('cont_style'),
475  $this->ctrl->getLinkTarget($this, 'editStyleProperties')
476  );
477 
478  $this->tabs->activateSubTab($activeTab);
479  }
480  }
481 
485  public function addLocatorItems()
486  {
487  if ($this->object instanceof \ilObject) {
488  $this->locator->addItem(
489  $this->object->getTitle(),
490  $this->ctrl->getLinkTarget($this, self::UI_CMD_VIEW),
491  '',
492  $this->object->getRefId()
493  );
494  }
495  }
496 
501  public function infoScreen()
502  {
503  $this->ctrl->setCmd('showSummary');
504  $this->ctrl->setCmdClass('ilinfoscreengui');
505 
506  $this->infoScreenForward();
507  }
508 
509 
515  public function view()
516  {
517  $this->checkPermission('read');
518 
519  $this->setContentSubTabs();
520 
521  $this->tabs->activateTab(self::UI_TAB_ID_CONTENT);
522  $this->tabs->activateSubTab(self::UI_TAB_ID_CONTENT);
523 
524  $this->tpl->setPermanentLink($this->object->getType(), $this->object->getRefId(), '', '_top');
525 
526  $this->tpl->setContent($this->getContent());
527  }
528 
532  protected function setContentSubTabs()
533  {
534  if ($this->checkPermissionBool('write')) {
535  $this->tabs->addSubTab(
536  self::UI_TAB_ID_CONTENT,
537  $this->lng->txt('view'),
538  $this->ctrl->getLinkTarget($this, self::UI_CMD_VIEW)
539  );
540 
541  if (!$this->user->isAnonymous()) {
542  $this->lng->loadLanguageModule('cntr');
543  $this->tabs->addSubTab(
544  'page_editor',
545  $this->lng->txt('cntr_text_media_editor'),
546  $this->ctrl->getLinkTargetByClass('ilContentPagePageGUI', 'edit')
547  );
548  }
549  }
550  }
551 
557  public function getContent(string $ctrlLink = '') : string
558  {
559  if ($this->checkPermissionBool('read')) {
560  $this->object->trackProgress((int) $this->user->getId());
561 
562  $this->initStyleSheets();
563 
564  $forwarder = new \ilContentPagePageCommandForwarder(
565  $this->request,
566  $this->ctrl,
567  $this->tabs,
568  $this->lng,
569  $this->object
570  );
572 
573  return $forwarder->forward($ctrlLink);
574  }
575 
576  return '';
577  }
578 
579  protected function initStyleSheets()
580  {
581  $this->tpl->setVariable(
582  'LOCATION_CONTENT_STYLESHEET',
583  \ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId())
584  );
585  $this->tpl->setCurrentBlock('SyntaxStyle');
586  $this->tpl->setVariable('LOCATION_SYNTAX_STYLESHEET', \ilObjStyleSheet::getSyntaxStylePath());
587  $this->tpl->parseCurrentBlock();
588  }
589 
593  protected function afterSave(\ilObject $a_new_object)
594  {
595  \ilUtil::sendSuccess($this->lng->txt('object_added'), true);
596  $this->ctrl->redirect($this, 'edit');
597  }
598 
602  protected function setTitleAndDescription()
603  {
604  parent::setTitleAndDescription();
605 
606  $icon = ilObject::_getIcon($this->object->getId(), 'big', $this->object->getType());
607  $this->tpl->setTitleIcon($icon, $this->lng->txt('obj_' . $this->object->getType()));
608  }
609 
613  protected function initEditCustomForm(\ilPropertyFormGUI $a_form)
614  {
615  $sh = new ilFormSectionHeaderGUI();
616  $sh->setTitle($this->lng->txt('obj_features'));
617  $a_form->addItem($sh);
618 
620  $this->object->getId(),
621  $a_form,
622  array(
624  )
625  );
626 
627  $presentationHeader = new ilFormSectionHeaderGUI();
628  $presentationHeader->setTitle($this->lng->txt('settings_presentation_header'));
629  $a_form->addItem($presentationHeader);
630  $this->obj_service->commonSettings()->legacyForm($a_form, $this->object)->addTileImage();
631  }
632 
636  protected function getEditFormCustomValues(array &$a_values)
637  {
639  }
640 
644  protected function updateCustom(\ilPropertyFormGUI $a_form)
645  {
647  $this->object->getId(),
648  $a_form,
649  array(
651  )
652  );
653  $this->obj_service->commonSettings()->legacyForm($a_form, $this->object)->saveTileImage();
654  }
655 
659  protected function editStyleProperties()
660  {
661  $this->checkPermission('write');
662 
663  $this->tabs->activateTab(self::UI_TAB_ID_SETTINGS);
664  $this->setSettingsSubTabs(self::UI_TAB_ID_STYLE);
665 
666  $form = $this->buildStylePropertiesForm();
667  $this->tpl->setContent($form->getHTML());
668  }
669 
674  {
675  $form = new \ilPropertyFormGUI();
676 
677  $fixedStyle = $this->settings->get('fixed_content_style_id');
678  $defaultStyle = $this->settings->get('default_content_style_id');
679  $styleId = $this->object->getStyleSheetId();
680 
681  if ($fixedStyle > 0) {
682  $st = new ilNonEditableValueGUI($this->lng->txt("cont_current_style"));
683  $st->setValue(
684  \ilObject::_lookupTitle($fixedStyle) . " (" . $this->lng->txt("global_fixed") . ")"
685  );
686  $form->addItem($st);
687  } else {
689  true,
690  false,
691  (int) $_GET["ref_id"]
692  );
693 
694  if ($defaultStyle > 0) {
695  $st_styles[0] = \ilObject::_lookupTitle($defaultStyle) . ' (' . $this->lng->txt('default') . ')';
696  } else {
697  $st_styles[0] = $this->lng->txt('default');
698  }
699  ksort($st_styles);
700 
701  if ($styleId > 0) {
702  if (!\ilObjStyleSheet::_lookupStandard($styleId)) {
703  $st = new \ilNonEditableValueGUI($this->lng->txt('cont_current_style'));
704  $st->setValue(ilObject::_lookupTitle($styleId));
705  $form->addItem($st);
706 
707  $form->addCommandButton('editStyle', $this->lng->txt('cont_edit_style'));
708  $form->addCommandButton('deleteStyle', $this->lng->txt('cont_delete_style'));
709  }
710  }
711 
712  if ($styleId <= 0 || \ilObjStyleSheet::_lookupStandard($styleId)) {
713  $style_sel = new \ilSelectInputGUI($this->lng->txt('cont_current_style'), 'style_id');
714  $style_sel->setOptions($st_styles);
715  $style_sel->setValue($styleId);
716  $form->addItem($style_sel);
717  $form->addCommandButton('saveStyleSettings', $this->lng->txt('save'));
718  $form->addCommandButton('createStyle', $this->lng->txt('sty_create_ind_style'));
719  }
720  }
721 
722  $form->setTitle($this->lng->txt("cont_style"));
723  $form->setFormAction($this->ctrl->getFormAction($this));
724 
725  return $form;
726  }
727 
731  protected function createStyle()
732  {
733  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'create');
734  }
735 
739  protected function editStyle()
740  {
741  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'edit');
742  }
743 
747  protected function deleteStyle()
748  {
749  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'delete');
750  }
751 
756  protected function saveStyleSettings()
757  {
758  $this->checkPermission('write');
759 
760  if (
761  $this->settings->get('fixed_content_style_id') <= 0 &&
762  (
764  $this->object->getStyleSheetId()
765  ) ||
766  $this->object->getStyleSheetId() == 0
767  )
768  ) {
769  $this->object->setStyleSheetId(ilUtil::stripSlashes($_POST['style_id']));
770  $this->object->update();
771  ilUtil::sendSuccess($this->lng->txt('msg_obj_modified'), true);
772  }
773 
774  $this->ctrl->redirect($this, 'editStyleProperties');
775  }
776 }
static getContentStylePath($a_style_id, $add_random=true, $add_token=true)
get content style path
setLocator()
set Locator
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
settings()
Definition: settings.php:2
afterSave(\ilObject $a_new_object)
getContent(string $ctrlLink='')
This class represents a property form user interface.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
New implementation of ilObjectGUI.
setContentSubTabs()
Sub tab configuration of the content area.
$_GET["client_id"]
This class represents a section header in a property form.
Interface ilContentPageObjectConstants.
initEditCustomForm(\ilPropertyFormGUI $a_form)
setSettingsSubTabs($activeTab)
Sub tab configuration of the settings area.
static _lookupTitle($a_id)
lookup object title
$refId
Definition: xapitoken.php:42
static _getStandardStyles( $a_exclude_default_style=false, $a_include_deactivated=false, $a_scope=0)
Get standard styles.
addItem($a_item)
Add Item (Property, SectionHeader).
Class ilObjContentPageGUI ilObjContentPageGUI: ilRepositoryGUI ilObjContentPageGUI: ilAdministratio...
user()
Definition: user.php:4
static _lookupStandard($a_id)
Lookup standard flag.
help()
Definition: help.php:2
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
getEditFormCustomValues(array &$a_values)
static _lookupObjId($a_id)
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static getSyntaxStylePath()
get syntax style path
const PRESENTATION_MODE_PRESENTATION
presentation mode for requesting
static updateServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Update service settings.
Class ilObjContentPage.
saveStyleSettings()
Save style settings.
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
This class represents a non editable value in a property form.
Interface for gui classes (e.g ilLuceneSearchGUI) that offer add/remove to/from desktop.
view()
Shows the content of the object.
__construct(Container $dic, ilPlugin $plugin)
updateCustom(\ilPropertyFormGUI $a_form)
$ret
Definition: parser.php:6
static initServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Init service settings form.
$DIC
Definition: xapitoken.php:46
prepareOutput($a_show_subobjects=true)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
static _goto($target)
Deep link.
addHeaderAction()
Add header action menu.
Class ilObjUserTrackingGUI.
$_POST["username"]
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.