/** * Add / edit of settings -> form * * @param object $objTpl Template object * @param integer $formId FormId * * @return null */ function modifyForm($objTpl, $formId) { global $_ARRAYLANG, $_CORELANG; $objTpl->addBlockfile($this->moduleLangVar . '_SETTINGS_CONTENT', 'settings_content', 'module_calendar_settings_modify_form.html'); if ($formId != 0) { $this->_pageTitle = $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_FORM'] . " " . $_ARRAYLANG['TXT_CALENDAR_EDIT']; } else { if (intval($_GET['copy']) != 0) { $objForm = new \Cx\Modules\Calendar\Controller\CalendarForm($_GET['copy']); $formId = $objForm->copy(); if (intval($formId) == 0) { $this->errMessage = $_ARRAYLANG['TXT_CALENDAR_FORM_CORRUPT_ADDED']; } $this->_pageTitle = $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_FORM'] . " " . $_ARRAYLANG['TXT_CALENDAR_COPY']; } else { $this->_pageTitle = $_ARRAYLANG['TXT_CALENDAR_INSERT_REGISTRATION_FORM']; } } $objTpl->setGlobalVariable(array('TXT_' . $this->moduleLangVar . '_REGISTRATION_FORM_TITLE' => $this->_pageTitle, 'TXT_' . $this->moduleLangVar . '_REGISTRATION_FORM' => $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_FORM'], 'TXT_' . $this->moduleLangVar . '_ACTION' => $_CORELANG['TXT_HISTORY_ACTION'], 'TXT_' . $this->moduleLangVar . '_TITLE' => $_ARRAYLANG['TXT_CALENDAR_TITLE'], 'TXT_' . $this->moduleLangVar . '_CONFIRM_DELETE_DATA' => $_ARRAYLANG['TXT_CALENDAR_CONFIRM_DELETE_DATA'], 'TXT_' . $this->moduleLangVar . '_ACTION_IS_IRREVERSIBLE' => $_ARRAYLANG['TXT_CALENDAR_ACTION_IS_IRREVERSIBLE'], 'TXT_' . $this->moduleLangVar . '_SORT' => $_ARRAYLANG['TXT_CALENDAR_SORTING'], 'TXT_' . $this->moduleLangVar . '_FIELD_NAME' => $_ARRAYLANG['TXT_CALENDAR_FIELD_NAME'], 'TXT_' . $this->moduleLangVar . '_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FIELD_TYPE'], 'TXT_' . $this->moduleLangVar . '_DEFAULT_VALUES' => $_ARRAYLANG['TXT_CALENDAR_DEFAULT_VALUES'], 'TXT_' . $this->moduleLangVar . '_FIELD_REQUIRED' => $_ARRAYLANG['TXT_CALENDAR_FIELD_REQUIRED'], 'TXT_' . $this->moduleLangVar . '_FIELD_AFFILIATION' => $_ARRAYLANG['TXT_CALENDAR_FIELD_AFFILIATION'], 'TXT_' . $this->moduleLangVar . '_ACTIONS' => $_CORELANG['TXT_HISTORY_ACTION'], 'TXT_' . $this->moduleLangVar . '_DELETE' => $_ARRAYLANG['TXT_CALENDAR_DELETE'], 'TXT_' . $this->moduleLangVar . '_NEW_INPUTFIELD' => $_ARRAYLANG['TXT_CALENDAR_NEW_INPUTFIELD'], 'TXT_' . $this->moduleLangVar . '_EXPAND' => $_ARRAYLANG['TXT_CALENDAR_EXPAND'], 'TXT_' . $this->moduleLangVar . '_MINIMIZE' => $_ARRAYLANG['TXT_CALENDAR_MINIMIZE'], 'TXT_' . $this->moduleLangVar . '_FIELDS' => $_ARRAYLANG['TXT_CALENDAR_FIELDS'], 'TXT_' . $this->moduleLangVar . '_REGISTRATION_DATA' => $_ARRAYLANG['TXT_CALENDAR_REGISTRATION_DATA'])); $objFormManager = new \Cx\Modules\Calendar\Controller\CalendarFormManager(); $objFormManager->showForm($objTpl, intval($formId), 1); }
/** * Sets placeholders for the form view. * * @param object $objTpl Template object * @param integer $formId Form id * @param integer $intView request mode frontend or backend * @param integer $arrNumSeating number of seating * * @return null */ function showForm($objTpl, $formId, $intView, $ticketSales = false) { global $_ARRAYLANG, $_LANGID; $objForm = new \Cx\Modules\Calendar\Controller\CalendarForm(intval($formId)); if (!empty($formId)) { $this->formList[$formId] = $objForm; } switch ($intView) { case 1: $this->getFrontendLanguages(); $objTpl->setGlobalVariable(array($this->moduleLangVar . '_FORM_ID' => !empty($formId) ? $objForm->id : '', $this->moduleLangVar . '_FORM_TITLE' => !empty($formId) ? $objForm->title : '')); $i = 0; $formFields = array(); if (!empty($formId)) { $defaultLangId = $_LANGID; if (!in_array($defaultLangId, \FWLanguage::getIdArray())) { $defaultLangId = \FWLanguage::getDefaultLangId(); } foreach ($objForm->inputfields as $key => $arrInputfield) { $i++; $fieldValue = array(); $defaultFieldValue = array(); foreach ($this->arrFrontendLanguages as $key => $arrLang) { $fieldValue[$arrLang['id']] = isset($arrInputfield['name'][$arrLang['id']]) ? $arrInputfield['name'][$arrLang['id']] : ''; $defaultFieldValue[$arrLang['id']] = isset($arrInputfield['default_value'][$arrLang['id']]) ? $arrInputfield['default_value'][$arrLang['id']] : ''; } $formFields[] = array('type' => $arrInputfield['type'], 'id' => $arrInputfield['id'], 'row' => $i % 2 == 0 ? 'row2' : 'row1', 'order' => $arrInputfield['order'], 'name_master' => $fieldValue[$defaultLangId], 'default_value_master' => $defaultFieldValue[$defaultLangId], 'required' => $arrInputfield['required'], 'affiliation' => $arrInputfield['affiliation'], 'field_value' => json_encode($fieldValue), 'default_field_value' => json_encode($defaultFieldValue)); } } foreach ($this->arrFrontendLanguages as $key => $arrLang) { $objTpl->setVariable(array($this->moduleLangVar . '_INPUTFIELD_LANG_ID' => $arrLang['id'], $this->moduleLangVar . '_INPUTFIELD_LANG_NAME' => $arrLang['name'], $this->moduleLangVar . '_INPUTFIELD_LANG_SHORTCUT' => $arrLang['lang'])); $objTpl->parse('inputfieldNameList'); $objTpl->setVariable(array($this->moduleLangVar . '_INPUTFIELD_LANG_ID' => $arrLang['id'], $this->moduleLangVar . '_INPUTFIELD_LANG_NAME' => $arrLang['name'], $this->moduleLangVar . '_INPUTFIELD_LANG_SHORTCUT' => $arrLang['lang'])); $objTpl->parse('inputfieldDefaultValueList'); $objTpl->setVariable(array($this->moduleLangVar . '_INPUTFIELD_LANG_NAME' => $arrLang['name'])); $objTpl->parse('inputfieldLanguagesList'); } foreach ($this->arrInputfieldTypes as $fieldType) { $objTpl->setVariable(array($this->moduleLangVar . '_FORM_FIELD_TYPE' => $fieldType, 'TXT_' . $this->moduleLangVar . '_FORM_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FORM_FIELD_' . strtoupper($fieldType)])); $objTpl->parse('inputfieldTypes'); } foreach ($this->arrRegistrationFields as $fieldType) { $objTpl->setVariable(array($this->moduleLangVar . '_FORM_FIELD_TYPE' => $fieldType, 'TXT_' . $this->moduleLangVar . '_FORM_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FORM_FIELD_' . strtoupper($fieldType)])); $objTpl->parse('inputRegfieldTypes'); } /* foreach ($this->arrInputfieldAffiliations as $strAffiliation) { $objTpl->setVariable(array( $this->moduleLangVar.'_FORM_FIELD_TYPE' => $strAffiliation, 'TXT_'.$this->moduleLangVar.'_FORM_FIELD_TYPE' => $_ARRAYLANG['TXT_CALENDAR_FORM_FIELD_AFFILIATION_'.strtoupper($strAffiliation)], )); $objTpl->parse('fieldAfflications'); }*/ $objTpl->setVariable(array($this->moduleLangVar . '_FORM_DATA' => json_encode($formFields), $this->moduleLangVar . '_FRONTEND_LANG_COUNT' => count($this->arrFrontendLanguages), $this->moduleLangVar . '_INPUTFIELD_LAST_ID' => $objForm->getLastInputfieldId(), $this->moduleLangVar . '_INPUTFIELD_LAST_ROW' => $i % 2 == 0 ? "'row2'" : "'row1'", $this->moduleLangVar . '_DISPLAY_EXPAND' => count($this->arrFrontendLanguages) > 1 ? "block" : "none")); break; case 2: $objFieldTemplate = new \Cx\Core\Html\Sigma('.'); $objFieldTemplate->setTemplate(self::frontendFieldTemplate, true, true); $objFieldTemplate->setVariable(array('TXT_' . $this->moduleLangVar . '_FIELD_NAME' => $_ARRAYLANG['TXT_CALENDAR_TYPE'] . '<font class="calendarRequired"> *</font>', $this->moduleLangVar . '_FIELD_INPUT' => '<select class="calendarSelect affiliateForm" name="registrationType"><option value="1" selected="selected"/>' . $_ARRAYLANG['TXT_CALENDAR_REG_REGISTRATION'] . '</option><option value="0"/>' . $_ARRAYLANG['TXT_CALENDAR_REG_SIGNOFF'] . '</option></select>', $this->moduleLangVar . '_FIELD_CLASS' => 'affiliationForm')); $objTpl->setVariable($this->moduleLangVar . '_REGISTRATION_FIELD', $objFieldTemplate->get()); $objTpl->parse('calendarRegistrationField'); // $selectBillingAddressStatus = false; foreach ($objForm->inputfields as $key => $arrInputfield) { $objFieldTemplate->setTemplate(self::frontendFieldTemplate, true, true); $options = array(); $options = explode(',', $arrInputfield['default_value'][$_LANGID]); $inputfield = null; $hide = false; $optionSelect = true; $availableSeat = 0; $checkSeating = false; if (isset($_POST['registrationField'][$arrInputfield['id']])) { $value = $_POST['registrationField'][$arrInputfield['id']]; } elseif (\FWUser::getFWUserObject()->objUser->login() && in_array($arrInputfield['type'], array('mail', 'firstname', 'lastname'))) { $value = ''; switch ($arrInputfield['type']) { case 'mail': $value = \FWUser::getFWUserObject()->objUser->getEmail(); break; case 'firstname': $value = \FWUser::getFWUserObject()->objUser->getProfileAttribute('firstname'); break; case 'lastname': $value = \FWUser::getFWUserObject()->objUser->getProfileAttribute('lastname'); break; default: $value = $arrInputfield['default_value'][$_LANGID]; break; } } else { $value = $arrInputfield['default_value'][$_LANGID]; } $affiliationClass = 'affiliation' . ucfirst($arrInputfield['affiliation']); switch ($arrInputfield['type']) { case 'inputtext': case 'mail': case 'firstname': case 'lastname': $inputfield = '<input type="text" class="calendarInputText" name="registrationField[' . $arrInputfield['id'] . ']" value="' . $value . '" /> '; break; case 'textarea': $inputfield = '<textarea class="calendarTextarea" name="registrationField[' . $arrInputfield['id'] . ']">' . $value . '</textarea>'; break; case 'seating': if (!$ticketSales) { $hide = true; } $optionSelect = false; if ($this->event) { $checkSeating = $this->event->registration && $this->event->numSubscriber; $availableSeat = $this->event->getFreePlaces(); } case 'select': case 'salutation': $inputfield = '<select class="calendarSelect" name="registrationField[' . $arrInputfield['id'] . ']">'; $selected = empty($_POST) ? 'selected="selected"' : ''; $inputfield .= $optionSelect ? '<option value="" ' . $selected . '>' . $_ARRAYLANG['TXT_CALENDAR_PLEASE_CHOOSE'] . '</option>' : ''; foreach ($options as $key => $name) { if ($checkSeating && contrexx_input2int($name) > $availableSeat) { continue; } $selected = $key + 1 == $value ? 'selected="selected"' : ''; $inputfield .= '<option value="' . intval($key + 1) . '" ' . $selected . '>' . $name . '</option>'; } $inputfield .= '</select>'; break; case 'radio': foreach ($options as $key => $name) { $checked = $key + 1 == $value || empty($_POST) && $key == 0 ? 'checked="checked"' : ''; $textValue = isset($_POST["registrationFieldAdditional"][$arrInputfield['id']][$key]) ? $_POST["registrationFieldAdditional"][$arrInputfield['id']][$key] : ''; $textfield = '<input type="text" class="calendarInputCheckboxAdditional" name="registrationFieldAdditional[' . $arrInputfield['id'] . '][' . $key . ']" value="' . contrexx_input2xhtml($textValue) . '" />'; $name = str_replace('[[INPUT]]', $textfield, $name); $inputfield .= '<input type="radio" class="calendarInputCheckbox" name="registrationField[' . $arrInputfield['id'] . ']" value="' . intval($key + 1) . '" ' . $checked . '/> ' . $name . '<br />'; } break; case 'checkbox': foreach ($options as $key => $name) { $textValue = isset($_POST["registrationFieldAdditional"][$arrInputfield['id']][$key]) ? $_POST["registrationFieldAdditional"][$arrInputfield['id']][$key] : ''; $textfield = '<input type="text" class="calendarInputCheckboxAdditional" name="registrationFieldAdditional[' . $arrInputfield['id'] . '][' . $key . ']" value="' . contrexx_input2xhtml($textValue) . '" />'; $name = str_replace('[[INPUT]]', $textfield, $name); $checked = in_array($key + 1, $_POST['registrationField'][$arrInputfield['id']]) ? 'checked="checked"' : ''; $inputfield .= '<input ' . $checked . ' type="checkbox" class="calendarInputCheckbox" name="registrationField[' . $arrInputfield['id'] . '][]" value="' . intval($key + 1) . '" /> ' . $name . '<br />'; } break; case 'agb': $inputfield = '<input class="calendarInputCheckbox" type="checkbox" name="registrationField[' . $arrInputfield['id'] . '][]" value="1" /> ' . $_ARRAYLANG['TXT_CALENDAR_AGB'] . '<br />'; break; /* case 'selectBillingAddress': if(!$selectBillingAddressStatus) { if($_REQUEST['registrationField'][$arrInputfield['id']] == 'deviatesFromContact') { $selectDeviatesFromContact = 'selected="selected"'; } else { $selectDeviatesFromContact = ''; } $inputfield = '<select id="calendarSelectBillingAddress" class="calendarSelect" name="registrationField['.$arrInputfield['id'].']">'; $inputfield .= '<option value="sameAsContact">'.$_ARRAYLANG['TXT_CALENDAR_SAME_AS_CONTACT'].'</option>'; $inputfield .= '<option value="deviatesFromContact" '.$selectDeviatesFromContact.'>'.$_ARRAYLANG['TXT_CALENDAR_DEVIATES_FROM_CONTACT'].'</option>'; $inputfield .= '</select>'; $selectBillingAddressStatus = true; } break; */ /* case 'selectBillingAddress': if(!$selectBillingAddressStatus) { if($_REQUEST['registrationField'][$arrInputfield['id']] == 'deviatesFromContact') { $selectDeviatesFromContact = 'selected="selected"'; } else { $selectDeviatesFromContact = ''; } $inputfield = '<select id="calendarSelectBillingAddress" class="calendarSelect" name="registrationField['.$arrInputfield['id'].']">'; $inputfield .= '<option value="sameAsContact">'.$_ARRAYLANG['TXT_CALENDAR_SAME_AS_CONTACT'].'</option>'; $inputfield .= '<option value="deviatesFromContact" '.$selectDeviatesFromContact.'>'.$_ARRAYLANG['TXT_CALENDAR_DEVIATES_FROM_CONTACT'].'</option>'; $inputfield .= '</select>'; $selectBillingAddressStatus = true; } break; */ case 'fieldset': $inputfield = null; break; } $field = ''; if ($arrInputfield['type'] == 'fieldset') { $field = '</fieldset><fieldset><legend>' . $arrInputfield['name'][$_LANGID] . '</legend>'; $hide = true; } else { $required = $arrInputfield['required'] == 1 ? '<font class="calendarRequired"> *</font>' : ''; $label = $arrInputfield['name'][$_LANGID] . $required; } if (!$hide) { $objFieldTemplate->setVariable(array('TXT_' . $this->moduleLangVar . '_FIELD_NAME' => $label, $this->moduleLangVar . '_FIELD_INPUT' => $inputfield, $this->moduleLangVar . '_FIELD_CLASS' => $affiliationClass)); $field = $objFieldTemplate->get(); } $objTpl->setVariable($this->moduleLangVar . '_REGISTRATION_FIELD', $field); $objTpl->parse('calendarRegistrationField'); } break; } }