/** * Load the form. */ private function loadForm() { // create form $this->frm = new FrontendForm('form' . $this->item['id']); // exists and has fields if (!empty($this->item) && !empty($this->item['fields'])) { // loop fields foreach ($this->item['fields'] as $field) { // init $item['name'] = 'field' . $field['id']; $item['type'] = $field['type']; $item['label'] = isset($field['settings']['label']) ? $field['settings']['label'] : ''; $item['required'] = isset($field['validations']['required']); $item['html'] = ''; // form values $values = isset($field['settings']['values']) ? $field['settings']['values'] : null; $defaultValues = isset($field['settings']['default_values']) ? $field['settings']['default_values'] : null; // dropdown if ($field['type'] == 'dropdown') { // values and labels are the same $values = array_combine($values, $values); // get index of selected item $defaultIndex = array_search($defaultValues, $values, true); if ($defaultIndex === false) { $defaultIndex = null; } // create element $ddm = $this->frm->addDropdown($item['name'], $values, $defaultIndex); // empty default element $ddm->setDefaultElement(''); // get content $item['html'] = $ddm->parse(); } elseif ($field['type'] == 'radiobutton') { // reset $newValues = array(); // rebuild values foreach ($values as $value) { $newValues[] = array('label' => $value, 'value' => $value); } // create element $rbt = $this->frm->addRadiobutton($item['name'], $newValues, $defaultValues); // get content $item['html'] = $rbt->parse(); } elseif ($field['type'] == 'checkbox') { // reset $newValues = array(); // rebuild values foreach ($values as $value) { $newValues[] = array('label' => $value, 'value' => $value); } // create element $chk = $this->frm->addMultiCheckbox($item['name'], $newValues, $defaultValues); // get content $item['html'] = $chk->parse(); } elseif ($field['type'] == 'textbox') { // create element $txt = $this->frm->addText($item['name'], $defaultValues); // get content $item['html'] = $txt->parse(); } elseif ($field['type'] == 'textarea') { // create element $txt = $this->frm->addTextarea($item['name'], $defaultValues); $txt->setAttribute('cols', 30); // get content $item['html'] = $txt->parse(); } elseif ($field['type'] == 'heading') { $item['html'] = '<h3>' . $values . '</h3>'; } elseif ($field['type'] == 'paragraph') { $item['html'] = $values; } elseif ($field['type'] == 'submit') { $item['html'] = $values; } // add to list $this->fieldsHTML[] = $item; } } }