fields); $render_submit_button = self::render_submit_button($form_details->button_text,$button_class); $action = $action ?? route('frontend.form.builder.custom.submit'); $rand = Str::random(10); return <<
{$fields} {$render_submit_button} HTML; } private static function render_fields($fields) :string { $fields = json_decode($fields); $output = ''; $select_index = 0; $options = []; foreach ($fields->field_type as $key => $value) { if (!empty($value)) { if ($value === 'select') { $options = explode("\n", $fields->select_options[$select_index]); } $required = $fields->field_required->$key ?? ''; $mimes = isset($fields->mimes_type->$key) ? $fields->mimes_type->$key : ''; $output .= self::get_field_by_type($value, $fields->field_name[$key], $fields->field_placeholder[$key], $options, $required, $mimes); if ($value === 'select') { $select_index++; } } } return $output; } private static function render_submit_button($text,$button_class = '') :string { $text = __($text); $preloader = self::render_submit_preloader(); return << {$preloader} HTML; } private static function render_submit_preloader() :string { return <<
HTML; } private static function get_field_by_type($type, $name, $placeholder, $options = [], $requried = null, $mimes = null) { if (empty($name)){ return; } $markup = ''; $name = SanitizeInput::esc_html($name); $placeholder = SanitizeInput::esc_html($placeholder); $required_markup_html = 'required="required"'; switch ($type) { case('email'): $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; case('tel'): $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; case('date'): $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; case('url'): $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; case('textarea'): $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; case('file'): $required_markup = !empty($requried) ? $required_markup_html : ''; $mimes_type_markup = str_replace('mimes:', __('Accept File Type:') . ' ', $mimes); $markup = '
' . $mimes_type_markup . '
'; break; case('checkbox'): $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; case('select'): $option_markup = ''; $required_markup = !empty($requried) ? $required_markup_html : ''; foreach ($options as $opt) { $option_markup .= ''; } $markup = '
'; break; default: $required_markup = !empty($requried) ? $required_markup_html : ''; $markup = '
'; break; } return $markup; } public static function render_drag_drop_form_builder($content = '') { $output = ''; $form_fields = json_decode($content); $output .= ''; return $output; } private static function form_builder_field_markup($key, $type, $name, $placeholder, $required, $args = []) { $name = SanitizeInput::esc_html($name); $placeholder = SanitizeInput::esc_html($placeholder); $required_check = !empty($required) ? 'checked' : ''; $output = '
  • x '; $output .= '
    '; if ($type === 'select') { $output .= '
    ' . __('separate option by new line') . '
    '; } if ($type === 'file') { $output .= '
    '; } $output .= '
  • '; return $output; } }