ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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 $navHistory;
54 
58  protected $error;
59 
63  protected $dic;
64 
68  protected $infoScreenEnabled = false;
69 
73  public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
74  {
75  global $DIC;
76 
77  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
78 
79  $this->dic = $DIC;
80  $this->request = $this->dic->http()->request();
81  $this->settings = $this->dic->settings();
82  $this->access = $this->dic->access();
83  $this->ctrl = $this->dic->ctrl();
84  $this->tabs = $this->dic->tabs();
85  $this->user = $this->dic->user();
86  $this->navHistory = $this->dic['ilNavigationHistory'];
87  $this->error = $this->dic['ilErr'];
88 
89  $this->lng->loadLanguageModule('copa');
90  $this->lng->loadLanguageModule('style');
91  $this->lng->loadLanguageModule('content');
92 
93  if ($this->object instanceof \ilObjContentPage) {
94  $this->infoScreenEnabled = \ilContainer::_lookupContainerSetting(
95  $this->object->getId(),
97  true
98  );
99  }
100  }
101 
105  protected function afterSave(\ilObject $a_new_object)
106  {
107  \ilUtil::sendSuccess($this->lng->txt('object_added'), true);
108  $this->ctrl->redirect($this, 'edit');
109  }
110 
114  public function getType()
115  {
116  return self::OBJ_TYPE;
117  }
118 
122  public function setTabs()
123  {
124  if ($this->checkPermissionBool('read')) {
125  $this->tabs->addTab(
126  self::UI_TAB_ID_CONTENT,
127  $this->lng->txt('content'),
128  $this->ctrl->getLinkTarget($this, self::UI_CMD_VIEW)
129  );
130  }
131 
132  if ($this->infoScreenEnabled && ($this->checkPermissionBool('visible') || $this->checkPermissionBool('read'))) {
133  $this->tabs->addTab(
134  self::UI_TAB_ID_INFO,
135  $this->lng->txt('info_short'),
136  $this->ctrl->getLinkTargetByClass('ilinfoscreengui', 'showSummary')
137  );
138  }
139 
140  if ($this->checkPermissionBool('write')) {
141  $this->tabs->addTab(
142  self::UI_TAB_ID_SETTINGS,
143  $this->lng->txt('settings'),
144  $this->ctrl->getLinkTarget($this, self::UI_CMD_EDIT)
145  );
146  }
147 
148  if (\ilLearningProgressAccess::checkAccess($this->object->getRefId())) {
149  $this->tabs->addTab(
150  self::UI_TAB_ID_LP,
151  $this->lng->txt('learning_progress'),
152  $this->ctrl->getLinkTargetByClass('illearningprogressgui')
153  );
154  }
155 
156  if ($this->checkPermissionBool('write')) {
157  $this->tabs->addTab(
158  self::UI_TAB_ID_EXPORT,
159  $this->lng->txt('export'),
160  $this->ctrl->getLinkTargetByClass('ilexportgui')
161  );
162  }
163 
164  if ($this->checkPermissionBool('edit_permission')) {
165  $this->tabs->addTab(
166  self::UI_TAB_ID_PERMISSIONS,
167  $this->lng->txt('perm_settings'),
168  $this->ctrl->getLinkTargetByClass('ilpermissiongui', 'perm')
169  );
170  }
171  }
172 
176  protected function setContentSubTabs()
177  {
178  if ($this->checkPermissionBool('write')) {
179  $this->tabs->addSubTab(
180  self::UI_TAB_ID_CONTENT,
181  $this->lng->txt('view'),
182  $this->ctrl->getLinkTarget($this, self::UI_CMD_VIEW)
183  );
184 
185  if (!$this->user->isAnonymous()) {
186  $this->lng->loadLanguageModule('cntr');
187  $this->tabs->addSubTab(
188  'page_editor',
189  $this->lng->txt('cntr_text_media_editor'),
190  $this->ctrl->getLinkTargetByClass('ilContentPagePageGUI', 'edit')
191  );
192  }
193  }
194  }
195 
200  protected function setSettingsSubTabs($activeTab)
201  {
202  if ($this->checkPermissionBool('write')) {
203  $this->tabs->addSubTab(
204  self::UI_TAB_ID_SETTINGS,
205  $this->lng->txt('settings'),
206  $this->ctrl->getLinkTarget($this, self::UI_CMD_EDIT)
207  );
208 
209  if ($this->settings->get('custom_icons')) {
210  $this->tabs_gui->addSubTab(
211  self::UI_TAB_ID_ICON,
212  $this->lng->txt('icon_settings'),
213  $this->ctrl->getLinkTargetByClass('ilObjectCustomIconConfigurationGUI')
214  );
215  }
216 
217  $this->tabs_gui->addSubTab(
218  self::UI_TAB_ID_STYLE,
219  $this->lng->txt('cont_style'),
220  $this->ctrl->getLinkTarget($this, 'editStyleProperties')
221  );
222 
223  $this->tabs->setSubTabActive($activeTab);
224  }
225  }
226 
230  protected function setTitleAndDescription()
231  {
232  parent::setTitleAndDescription();
233 
234  $icon = ilObject::_getIcon($this->object->getId(), 'big', $this->object->getType());
235  $this->tpl->setTitleIcon($icon, $this->lng->txt('obj_' . $this->object->getType()));
236  }
237 
241  public function executeCommand()
242  {
243  $nextClass = $this->ctrl->getNextClass($this);
244  $cmd = $this->ctrl->getCmd(self::UI_CMD_VIEW);
245 
246  $this->addToNavigationHistory();
247 
248  if (strtolower($nextClass) !== 'ilobjstylesheetgui') {
249  $this->renderHeaderActions();
250  }
251 
252  switch (strtolower($nextClass)) {
253  case 'ilobjstylesheetgui':
254  $this->checkPermission('write');
255 
256  $this->setLocator();
257 
258  $this->ctrl->setReturn($this, 'editStyleProperties');
259  $style_gui = new \ilObjStyleSheetGUI(
260  '',
261  $this->object->getStyleSheetId(),
262  false,
263  false
264  );
265  $style_gui->omitLocator();
266  if ($cmd === 'create' || $_GET['new_type'] === 'sty') {
267  $style_gui->setCreationMode(true);
268  }
269 
270  if ($cmd === 'confirmedDelete') {
271  $this->object->setStyleSheetId(0);
272  $this->object->update();
273  }
274 
275  $ret = $this->ctrl->forwardCommand($style_gui);
276 
277  if ($cmd === 'save' || $cmd === 'copyStyle' || $cmd === 'importStyle') {
278  $styleId = $ret;
279  $this->object->setStyleSheetId($styleId);
280  $this->object->update();
281  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'edit');
282  }
283  break;
284 
285  case 'ilcontentpagepagegui':
286  if (in_array(strtolower($cmd), array_map('strtolower', [
287  self::UI_CMD_COPAGE_DOWNLOAD_FILE,
288  self::UI_CMD_COPAGE_DISPLAY_FULLSCREEN,
289  self::UI_CMD_COPAGE_DOWNLOAD_PARAGRAPH,
290  ]))
291  ) {
292  if (!$this->checkPermissionBool('read')) {
293  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
294  }
295  } elseif (!$this->checkPermissionBool('write') || $this->user->isAnonymous()) {
296  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
297  }
298 
299  $this->prepareOutput();
300 
301  $this->tpl->setVariable('LOCATION_CONTENT_STYLESHEET', \ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId()));
302  $this->tpl->setCurrentBlock('SyntaxStyle');
303  $this->tpl->setVariable('LOCATION_SYNTAX_STYLESHEET', \ilObjStyleSheet::getSyntaxStylePath());
304  $this->tpl->parseCurrentBlock();
305 
306  $forwarder = new \ilContentPagePageCommandForwarder($this->request, $this->ctrl, $this->tabs, $this->lng, $this->object);
307  $pageContent = $forwarder->forward();
308  if (strlen($pageContent) > 0) {
309  $this->tpl->setContent($pageContent);
310  }
311  break;
312 
313  case 'ilinfoscreengui':
314  if (!$this->infoScreenEnabled) {
315  return;
316  }
317  $this->prepareOutput();
318 
319  $this->infoScreenForward();
320  break;
321 
322  case 'ilcommonactiondispatchergui':
323  $this->ctrl->forwardCommand(\ilCommonActionDispatcherGUI::getInstanceFromAjaxCall());
324  break;
325 
326  case 'ilpermissiongui':
327  $this->checkPermission('edit_permission');
328 
329  $this->prepareOutput();
330  $this->tabs->activateTab(self::UI_TAB_ID_PERMISSIONS);
331 
332  $this->ctrl->forwardCommand(new \ilPermissionGUI($this));
333  break;
334 
335  case 'illearningprogressgui':
336  if (!\ilLearningProgressAccess::checkAccess($this->object->getRefId())) {
337  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
338  }
339 
340  $this->prepareOutput();
341  $this->tabs->activateTab(self::UI_TAB_ID_LP);
342 
343  $this->ctrl->forwardCommand(new \ilLearningProgressGUI(
345  $this->object->getRefId(),
346  isset($this->request->getQueryParams()['user_id']) && is_numeric($this->request->getQueryParams()['user_id']) ?
347  (int) $this->request->getQueryParams()['user_id'] :
348  $this->user->getId()
349  ));
350  break;
351 
352  case 'ilexportgui':
353  $this->checkPermission('write');
354 
355  $this->prepareOutput();
356  $this->tabs->activateTab(self::UI_TAB_ID_EXPORT);
357 
358  $gui = new \ilExportGUI($this);
359  $gui->addFormat('xml');
360  $this->ctrl->forwardCommand($gui);
361  break;
362 
363  case 'ilobjectcustomiconconfigurationgui':
364  if (!$this->checkPermissionBool('write') || !$this->settings->get('custom_icons')) {
365  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
366  }
367 
368  $this->prepareOutput();
369  $this->tabs->activateTab(self::UI_TAB_ID_SETTINGS);
370  $this->setSettingsSubTabs(self::UI_TAB_ID_ICON);
371 
372  require_once 'Services/Object/Icon/classes/class.ilObjectCustomIconConfigurationGUI.php';
373  $gui = new \ilObjectCustomIconConfigurationGUI($this->dic, $this, $this->object);
374  $this->ctrl->forwardCommand($gui);
375  break;
376 
377  case 'ilobjectcopygui':
378  $this->tpl->getStandardTemplate();
379 
380  $gui = new \ilObjectCopyGUI($this);
381  $gui->setType(self::OBJ_TYPE);
382 
383  $this->ctrl->forwardCommand($gui);
384  break;
385 
386  default:
387  switch (true) {
388  case in_array(strtolower($cmd), array_map('strtolower', [self::UI_CMD_EDIT, self::UI_CMD_UPDATE])):
389  $this->setSettingsSubTabs(self::UI_TAB_ID_SETTINGS);
390  break;
391  }
392 
393  if (in_array(strtolower($cmd), array_map('strtolower', ['addToDesk', 'removeFromDesk']))) {
394  $this->ctrl->setCmd($cmd . 'Object');
395  }
396 
397  return parent::executeCommand();
398  }
399  }
400 
404  public function addLocatorItems()
405  {
406  if ($this->object instanceof \ilObject) {
407  $this->locator->addItem(
408  $this->object->getTitle(),
409  $this->ctrl->getLinkTarget($this, self::UI_CMD_VIEW),
410  '',
411  $this->object->getRefId()
412  );
413  }
414  }
415 
419  public function addToNavigationHistory()
420  {
421  if (!$this->getCreationMode()) {
422  if ($this->checkPermissionBool('read')) {
423  $this->navHistory->addItem(
424  $this->object->getRefId(),
425  \ilLink::_getLink($this->object->getRefId(), $this->object->getType()),
426  $this->object->getType()
427  );
428  }
429  }
430  }
431 
435  public function renderHeaderActions()
436  {
437  if (!$this->getCreationMode()) {
438  if ($this->checkPermissionBool('read')) {
439  $this->addHeaderAction();
440  }
441  }
442  }
443 
447  public function infoScreen()
448  {
449  $this->ctrl->setCmd('showSummary');
450  $this->ctrl->setCmdClass('ilinfoscreengui');
451 
452  $this->infoScreenForward();
453  }
454 
458  public function infoScreenForward()
459  {
460  if (!$this->infoScreenEnabled) {
461  return;
462  }
463 
464  if (!$this->checkPermissionBool('visible') && !$this->checkPermissionBool('read')) {
465  $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->MESSAGE);
466  }
467 
468  $this->tabs->activateTab(self::UI_TAB_ID_INFO);
469 
470  $info = new \ilInfoScreenGUI($this);
471  $info->enableLearningProgress(true);
472  $info->enablePrivateNotes();
473  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
474 
475  $this->ctrl->forwardCommand($info);
476  }
477 
481  protected function initEditCustomForm(\ilPropertyFormGUI $a_form)
482  {
483  $sh = new ilFormSectionHeaderGUI();
484  $sh->setTitle($this->lng->txt('obj_features'));
485  $a_form->addItem($sh);
486 
488  $this->object->getId(),
489  $a_form,
490  array(
492  )
493  );
494  }
495 
499  protected function getEditFormCustomValues(array &$a_values)
500  {
502  }
503 
507  protected function updateCustom(\ilPropertyFormGUI $a_form)
508  {
510  $this->object->getId(),
511  $a_form,
512  array(
514  )
515  );
516  }
517 
522  public static function _goto($target)
523  {
524  global $DIC;
525 
526  $targetAttributes = explode('_', $target);
527  $refId = (int) $targetAttributes[0];
528 
529  if ((int) $refId <= 0) {
530  $DIC['ilErr']->raiseError($DIC->language()->txt('msg_no_perm_read'), $DIC['ilErr']->FATAL);
531  }
532 
533  if ($DIC->access()->checkAccess('read', '', $refId)) {
534  $DIC->ctrl()->setTargetScript('ilias.php');
535  $DIC->ctrl()->initBaseClass('ilRepositoryGUI');
536  $DIC->ctrl()->setParameterByClass(__CLASS__, 'ref_id', $refId);
537  $DIC->ctrl()->redirectByClass(array(
538  'ilRepositoryGUI',
539  __CLASS__,
540  ), self::UI_CMD_VIEW);
541  } elseif ($DIC->access()->checkAccess('read', '', ROOT_FOLDER_ID)) {
542  \ilUtil::sendInfo(sprintf(
543  $DIC->language()->txt('msg_no_perm_read_item'),
545  ), true);
546 
547  $DIC->ctrl()->setTargetScript('ilias.php');
548  $DIC->ctrl()->initBaseClass('ilRepositoryGUI');
549  $DIC->ctrl()->setParameterByClass('ilRepositoryGUI', 'ref_id', ROOT_FOLDER_ID);
550  $DIC->ctrl()->redirectByClass('ilRepositoryGUI');
551  }
552 
553  $DIC['ilErr']->raiseError($DIC->language()->txt('msg_no_perm_read'), $DIC['ilErr']->FATAL);
554  }
555 
559  public function addToDeskObject()
560  {
561  if ((int) $this->settings->get('disable_my_offers')) {
562  $this->ctrl->redirect($this, self::UI_CMD_VIEW);
563  }
564 
566  \ilUtil::sendSuccess($this->lng->txt('added_to_desktop'), true);
567  $this->ctrl->redirect($this, self::UI_CMD_VIEW);
568  }
569 
573  public function removeFromDeskObject()
574  {
575  if ((int) $this->settings->get('disable_my_offers')) {
576  $this->ctrl->redirect($this, self::UI_CMD_VIEW);
577  }
578 
580  \ilUtil::sendSuccess($this->lng->txt('removed_from_desktop'), true);
581  $this->ctrl->redirect($this, self::UI_CMD_VIEW);
582  }
583 
584  protected function initStyleSheets()
585  {
586  $this->tpl->setVariable('LOCATION_CONTENT_STYLESHEET', \ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId()));
587  $this->tpl->setCurrentBlock('SyntaxStyle');
588  $this->tpl->setVariable('LOCATION_SYNTAX_STYLESHEET', \ilObjStyleSheet::getSyntaxStylePath());
589  $this->tpl->parseCurrentBlock();
590  }
591 
597  public function getContent(string $ctrlLink = '') : string
598  {
599  if ($this->checkPermissionBool('read')) {
600  $this->object->trackProgress((int) $this->user->getId());
601 
602  $this->initStyleSheets();
603 
604  $forwarder = new \ilContentPagePageCommandForwarder(
605  $this->request,
606  $this->ctrl,
607  $this->tabs,
608  $this->lng,
609  $this->object
610  );
612 
613  return $forwarder->forward($ctrlLink);
614  }
615 
616  return '';
617  }
618 
622  public function view()
623  {
624  $this->checkPermission('read');
625 
626  $this->setContentSubTabs();
627 
628  $this->tabs->activateTab(self::UI_TAB_ID_CONTENT);
629  $this->tabs->activateSubTab(self::UI_TAB_ID_CONTENT);
630 
631  $this->tpl->setPermanentLink($this->object->getType(), $this->object->getRefId(), '', '_top');
632 
633  $this->tpl->setContent($this->getContent());
634  }
635 
639  protected function editStyleProperties()
640  {
641  $this->checkPermission('write');
642 
643  $this->tabs->activateTab(self::UI_TAB_ID_SETTINGS);
644  $this->setSettingsSubTabs(self::UI_TAB_ID_STYLE);
645 
646  $form = $this->buildStylePropertiesForm();
647  $this->tpl->setContent($form->getHTML());
648  }
649 
654  {
655  $form = new \ilPropertyFormGUI();
656 
657  $fixedStyle = $this->settings->get('fixed_content_style_id');
658  $defaultStyle = $this->settings->get('default_content_style_id');
659  $styleId = $this->object->getStyleSheetId();
660 
661  if ($fixedStyle > 0) {
662  $st = new ilNonEditableValueGUI($this->lng->txt("cont_current_style"));
663  $st->setValue(
664  \ilObject::_lookupTitle($fixedStyle) . " (" . $this->lng->txt("global_fixed") . ")"
665  );
666  $form->addItem($st);
667  } else {
669  true,
670  false,
671  (int) $_GET["ref_id"]
672  );
673 
674  if ($defaultStyle > 0) {
675  $st_styles[0] = \ilObject::_lookupTitle($defaultStyle) . ' (' . $this->lng->txt('default') . ')';
676  } else {
677  $st_styles[0] = $this->lng->txt('default');
678  }
679  ksort($st_styles);
680 
681  if ($styleId > 0) {
682  if (!\ilObjStyleSheet::_lookupStandard($styleId)) {
683  $st = new \ilNonEditableValueGUI($this->lng->txt('cont_current_style'));
684  $st->setValue(ilObject::_lookupTitle($styleId));
685  $form->addItem($st);
686 
687  $form->addCommandButton('editStyle', $this->lng->txt('cont_edit_style'));
688  $form->addCommandButton('deleteStyle', $this->lng->txt('cont_delete_style'));
689  }
690  }
691 
692  if ($styleId <= 0 || \ilObjStyleSheet::_lookupStandard($styleId)) {
693  $style_sel = new \ilSelectInputGUI($this->lng->txt('cont_current_style'), 'style_id');
694  $style_sel->setOptions($st_styles);
695  $style_sel->setValue($styleId);
696  $form->addItem($style_sel);
697  $form->addCommandButton('saveStyleSettings', $this->lng->txt('save'));
698  $form->addCommandButton('createStyle', $this->lng->txt('sty_create_ind_style'));
699  }
700  }
701 
702  $form->setTitle($this->lng->txt("cont_style"));
703  $form->setFormAction($this->ctrl->getFormAction($this));
704 
705  return $form;
706  }
707 
711  protected function createStyle()
712  {
713  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'create');
714  }
715 
719  protected function editStyle()
720  {
721  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'edit');
722  }
723 
727  protected function deleteStyle()
728  {
729  $this->ctrl->redirectByClass('ilobjstylesheetgui', 'delete');
730  }
731 
735  protected function saveStyleSettings()
736  {
737  $this->checkPermission('write');
738 
739  if (
740  $this->settings->get('fixed_content_style_id') <= 0 &&
741  (\ilObjStyleSheet::_lookupStandard($this->object->getStyleSheetId()) || $this->object->getStyleSheetId() == 0)) {
742  $this->object->setStyleSheetId(ilUtil::stripSlashes($_POST['style_id']));
743  $this->object->update();
744  ilUtil::sendSuccess($this->lng->txt('msg_obj_modified'), true);
745  }
746 
747  $this->ctrl->redirect($this, 'editStyleProperties');
748  }
749 }
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.
global $DIC
Definition: saml.php:7
setContentSubTabs()
Sub tab configuration of the content area.
$_GET["client_id"]
This class represents a section header in a property form.
Interface ilContentPageObjectConstants.
removeFromDeskObject()
Remove from desktop public.
initEditCustomForm(\ilPropertyFormGUI $a_form)
setSettingsSubTabs($activeTab)
Sub tab configuration of the settings area.
static _lookupTitle($a_id)
lookup object title
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...
addToDeskObject()
Add desktop item public.
static addToDesktop()
Add desktop item public.
user()
Definition: user.php:4
static _lookupStandard($a_id)
Lookup standard flag.
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
if(isset($_POST['submit'])) $form
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 getContentStylePath($a_style_id, $add_random=true)
get content style path
static updateServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Update service settings.
Class ilObjContentPage.
saveStyleSettings()
Save style settings.
static removeFromDesktop()
Remove item from personal desktop public.
__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.
updateCustom(\ilPropertyFormGUI $a_form)
$ret
Definition: parser.php:6
static initServiceSettingsForm($a_obj_id, ilPropertyFormGUI $form, $services)
Init service settings form.
prepareOutput($a_show_subobjects=true)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
$info
Definition: index.php:5
static _goto($target)
Deep link.
$target
Definition: test.php:19
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.