_conversationalSettings = $conversationalSettings; } public function inputWrapper($formViewInstance, $rowID, $isNestedField = false) { $formID = $formViewInstance->getFormID(); $this->_conversationalHelpers = new ConversationalHelpers($formID, $this->_conversationalSettings); $stepSettings = $this->_conversationalHelpers->getMergedStepSettings($rowID); if (isset($stepSettings->enable) && !$stepSettings->enable) { return ''; } $field = $formViewInstance->fields($rowID); if (!is_object($field)) { return ''; } $field_name = $formViewInstance->getFieldName($rowID); $form_atomic_Cls_map = $formViewInstance->getAtomicClaMap(); $error = $formViewInstance->getError($rowID); $value = $formViewInstance->getValue($field_name, $rowID); $this->_nestedLayout = $formViewInstance->getNestedLayout($rowID); $this->_formViewerInstance = $formViewInstance; $isHidden = !empty($field->valid->hide) && $field->valid->hide ? 'fld-hide' : null; $fieldHTML = $this->getField($field, $rowID, $field_name, $form_atomic_Cls_map, $error, $value, $formID); $stepBtnHTML = $isNestedField ? '' : $this->_conversationalHelpers->getStepButtonsView($field, $stepSettings); $minHeightCls = $isNestedField ? "bc{$formID}-min-height" : ''; $fieldContent = sprintf( '
%4$s %5$s
', $rowID, $minHeightCls, $isHidden, $fieldHTML, $stepBtnHTML ); $imageContent = $this->_conversationalHelpers->conversationalSettingsIcon($stepSettings, 'layoutImage', 'step-img', 'Field Image'); $convStepLayout = empty($stepSettings->layout) ? 'normal-layout' : $stepSettings->layout; $layoutClsNames = "bc{$formID}-{$rowID} $convStepLayout"; $stepLayoutMarkup = $isNestedField ? $fieldContent : $this->_conversationalHelpers->getStepLayout($formID, $imageContent, $fieldContent, $convStepLayout, $layoutClsNames); return $stepLayoutMarkup; } public function getField($field, $rowID, $field_name, $form_atomic_Cls_map, $error, $value, $formID) { if (!is_object($field)) { return ''; } // Pro-only fields ship in the Bit Form Pro plugin. In the free plugin, we avoid rendering Pro implementations. $proMissingHtml = '
'; switch ($field->typ) { case 'text': case 'username': case 'number': case 'password': case 'email': case 'url': case 'date': case 'datetime-local': case 'time': case 'month': case 'week': case 'color': return TextField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'textarea': return TextAreaField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'check': // return $this->checkBox($field, $rowID, $field_name, $formID, $error, $value); return CheckBoxField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'radio': // return $this->radioBox($field, $rowID, $field_name, $formID, $error, $value); return RadioBoxField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'html-select': return HtmlSelectField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'select': // return $this->dropDown($field, $rowID, $field_name, $formID, $error, $value); return DropdownField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'file-up': // return $this->fileUp($field, $rowID, $field_name, $formID, $error, $value); return FileUploadField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'recaptcha': return RecaptchaV2Field::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); // return $this->recaptcha($field, $rowID, $field_name, $formID, $error, $value); case 'decision-box': // return $this->decisionBox($field, $rowID, $field_name, $formID, $error, $value); return DecisionBoxField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'gdpr': return GDPRAgreementField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'hidden': return HiddenField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'paypal': if (class_exists('\BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\PayPalField')) { return \BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\PayPalField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); } return $proMissingHtml; case 'stripe': if (class_exists('\BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\StripeField')) { return \BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\StripeField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); } return $proMissingHtml; case 'razorpay': if (class_exists('\BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\RazorPayField')) { return \BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\RazorPayField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); } return $proMissingHtml; case 'country': return CountryField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'currency': return CurrencyField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'phone-number': return PhoneNumberField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'advanced-file-up': if (class_exists('\BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\AdvanceFileUpField')) { return \BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\AdvanceFileUpField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); } return $proMissingHtml; case 'section': return SectionField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $this->_formViewerInstance, $this->_nestedLayout, $error, $value); case 'repeater': return RepeaterField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $this->_formViewerInstance, $this->_nestedLayout, $error, $value); case 'signature': if (class_exists('\BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\SignatureField')) { return \BitCode\BitFormPro\Frontend\Form\View\Conversational\Fields\SignatureField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); } return $proMissingHtml; case 'rating': return RatingField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); case 'image-select': return ImageSelectField::init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value); default: break; } } }