diff --git a/components/ILIAS/DataCollection/classes/Content/class.ilDclRecordEditGUI.php b/components/ILIAS/DataCollection/classes/Content/class.ilDclRecordEditGUI.php index 96eb83b7ca49..f98d6fca8dd6 100755 --- a/components/ILIAS/DataCollection/classes/Content/class.ilDclRecordEditGUI.php +++ b/components/ILIAS/DataCollection/classes/Content/class.ilDclRecordEditGUI.php @@ -271,7 +271,7 @@ public function getRecordData(int $record_id = 0): array * init Form * @move move parts to RecordRepresentationGUI */ - public function initForm(): void + public function initForm(bool $ui = true): void { $this->form = new ilDclPropertyFormGUI(); $prefix = ($this->ctrl->isAsynch()) ? 'dclajax' : 'dcl'; // Used by datacolleciton.js to select input elements @@ -295,39 +295,43 @@ public function initForm(): void $inline_css = ''; foreach ($allFields as $field) { $field_setting = $field->getViewSetting($this->tableview_id); - if ($field_setting->isVisibleInForm(!$this->record_id)) { - $item = ilDclCache::getFieldRepresentation($field)->getInputField($this->form, $this->record_id); - if ($item === null) { - continue; // Fields calculating values at runtime, e.g. ilDclFormulaFieldModel do not have input - } + $item = ilDclCache::getFieldRepresentation($field)->getInputField($this->form, $this->record_id); + if ($item === null) { + continue; // Fields calculating values at runtime, e.g. ilDclFormulaFieldModel do not have input + } - if (!ilObjDataCollectionAccess::hasWriteAccess($this->parent_obj->getRefId()) && $field_setting->isLocked(!$this->record_id)) { - $item->setDisabled(true); - } + if (!ilObjDataCollectionAccess::hasWriteAccess($this->parent_obj->getRefId()) && $field_setting->isLocked(!$this->record_id)) { + $item->setDisabled(true); + } - $item->setRequired($field_setting->isRequired(!$this->record_id)); - $default_value = null; + $item->setRequired($field_setting->isRequired(!$this->record_id)); + $default_value = null; - // If creation mode - if (!$this->record_id) { - $default_value = ilDclTableViewBaseDefaultValue::findSingle( - $field_setting->getFieldObject()->getDatatypeId(), - $field_setting->getId() - ); + // If creation mode + if (!$this->record_id) { + $default_value = ilDclTableViewBaseDefaultValue::findSingle( + $field_setting->getFieldObject()->getDatatypeId(), + $field_setting->getId() + ); - if ($default_value !== null) { - if ($item instanceof ilDclCheckboxInputGUI) { - $item->setChecked((bool) $default_value->getValue()); - } else { - $item->setValue((string) $default_value->getValue()); - } + if ($default_value !== null) { + if ($item instanceof ilDclCheckboxInputGUI) { + $item->setChecked((bool) $default_value->getValue()); } else { - if ($item instanceof ilDclTextInputGUI) { - $item->setValue(""); - } + $item->setValue((string) $default_value->getValue()); + } + } else { + if ($item instanceof ilDclTextInputGUI) { + $item->setValue(""); } } + } + if (!$ui || $field_setting->isVisibleInForm(!$this->record_id)) { $this->form->addItem($item); + } else { + $hidden = new ilHiddenInputGUI($item->getPostVar()); + $hidden->setValue((string) $item->getValue()); + $this->form->addItem($hidden); } } @@ -487,7 +491,7 @@ public function save(): void global $DIC; $ilAppEventHandler = $DIC['ilAppEventHandler']; - $this->initForm(); + $this->initForm(false); $this->setFormValues(); // if save confirmation is enabled: Temporary file-uploads need to be handled @@ -677,7 +681,7 @@ public function save(): void if ($this->ctrl->isAsynch()) { // If ajax request, return the form in edit mode again $this->record_id = $record_obj->getId(); - $this->initForm(); + $this->initForm(false); $this->setFormValues(); echo ilUtil::getSystemMessageHTML( $this->lng->txt('msg_obj_modified'),