|
|
|
@ -16,34 +16,14 @@ use \CodeHydrater\form_builder\html_form as Form; |
|
|
|
use \CodeHydrater\enums\form_input_types as FORM_TYPE; |
|
|
|
use \CodeHydrater\enums\form_input_types as FORM_TYPE; |
|
|
|
|
|
|
|
|
|
|
|
class val_tests_out { |
|
|
|
class val_tests_out { |
|
|
|
|
|
|
|
|
|
|
|
private static function build_group(array $a, Form & $f): void { |
|
|
|
|
|
|
|
foreach($a['html'] as $name => $v) { |
|
|
|
|
|
|
|
// Fix Values, so they are always a String! |
|
|
|
|
|
|
|
$value = ($v === false || $v === null) ? "" : $v; |
|
|
|
|
|
|
|
$type_of_form_input = $a['form_type'][$name]->value ?? FORM_TYPE::text->value; |
|
|
|
|
|
|
|
if ($type_of_form_input === "none") { |
|
|
|
|
|
|
|
continue; // Skip none controls |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$is_required = $a['required'][$name] ?? false; |
|
|
|
|
|
|
|
$r_a = ($is_required) ? ['required' => ""] : []; |
|
|
|
|
|
|
|
$fc = ['class'=> 'form-control']; |
|
|
|
|
|
|
|
$f->open_div(['class'=>'mb-3']); |
|
|
|
|
|
|
|
$label = $a['headers'][$name] ?? "Header not set."; |
|
|
|
|
|
|
|
$f->label($label, array_merge($fc, ['for'=>$name])); |
|
|
|
|
|
|
|
$f->$type_of_form_input($name, array_merge($fc, ['id'=>$name, 'value'=>$value], $r_a)); |
|
|
|
|
|
|
|
$f->close_div(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static function build_form(array $a): ?string { |
|
|
|
private static function build_form(array $a): ?string { |
|
|
|
$form_builder = new Form(); |
|
|
|
$form_builder = new Form(); |
|
|
|
$form_builder->set_escape(false); |
|
|
|
$form_builder->set_escape(false); |
|
|
|
$form_builder->open(options: ['autocomplete'=>'off']); |
|
|
|
$form_builder->open(options: ['autocomplete'=>'off']); |
|
|
|
$form_builder->fieldset_open(['style'=>'width: 200px;']); |
|
|
|
$form_builder->fieldset_open(['style'=>'width: 200px;']); |
|
|
|
$form_builder->legend("News Letter"); |
|
|
|
$form_builder->legend("News Letter"); |
|
|
|
self::build_group($a, $form_builder); |
|
|
|
$form_builder->build_group($a); |
|
|
|
$form_builder->open_div(['class'=>'mb-3']); |
|
|
|
$form_builder->open_div(['class'=>$a['div-class']]); |
|
|
|
$form_builder->submit("go", ['class'=>'btn btn-primary']); |
|
|
|
$form_builder->submit("go", ['class'=>'btn btn-primary']); |
|
|
|
$form_builder->close_div(); |
|
|
|
$form_builder->close_div(); |
|
|
|
$form_builder->fieldset_close(); |
|
|
|
$form_builder->fieldset_close(); |
|
|
|
@ -52,39 +32,22 @@ class val_tests_out { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static function entry(object $app, array $input): array { |
|
|
|
public static function entry(object $app, array $input): array { |
|
|
|
$html_output = []; |
|
|
|
$a = SafeIO::build_html($input); |
|
|
|
$errors = []; |
|
|
|
|
|
|
|
$headers = []; |
|
|
|
|
|
|
|
$form_type = []; |
|
|
|
|
|
|
|
$required = []; |
|
|
|
|
|
|
|
foreach(SafeIO::esv($input['html']) as $html) { |
|
|
|
|
|
|
|
$key = $html['name'] ?? ""; |
|
|
|
|
|
|
|
$html_output[$key] = $html['html']; |
|
|
|
|
|
|
|
$headers[$key] = $html['meta']['field_desc'][$key] ?? "Unknown"; |
|
|
|
|
|
|
|
$form_type[$key] = $html['meta']['form_type'][$key] ?? FORM_TYPE::text->value; |
|
|
|
|
|
|
|
$required[$key] = $html['meta']['required'][$key] ?? false; |
|
|
|
|
|
|
|
if (\CodeHydrater\common::get_count($html['errors'])) { |
|
|
|
|
|
|
|
$errors[$key] = $html['errors'][$key]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// dump($html); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$a = ['html'=>$html_output, 'headers'=>$headers, 'form_type'=>$form_type, 'required'=>$required]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$did_submit = ($input['method'] === "POST"); |
|
|
|
$did_submit = ($input['method'] === "POST"); |
|
|
|
$name = $html_output['name'] ?? "Anonymous"; |
|
|
|
// $name = $app->request->get_post_data()->get("name") ?? "Annon."; |
|
|
|
|
|
|
|
|
|
|
|
$data = [ |
|
|
|
$twig_data = [ |
|
|
|
'form_builder' => self::build_form($a), |
|
|
|
'form_builder' => self::build_form($a), |
|
|
|
'table_options' => ['helper' => 'single-row','escape' => false], |
|
|
|
'table_options' => ['helper' => 'single-row','escape' => false], |
|
|
|
'safe_html' => $html_output, |
|
|
|
'safe_html' => $a['html'], |
|
|
|
'did_submit' => $did_submit, |
|
|
|
'did_submit' => $did_submit, |
|
|
|
'table_headers' => $headers, |
|
|
|
'table_headers' => $a['headers'], |
|
|
|
'safe_name' => \CodeHydrater\bootstrap\safer_io::h($name), |
|
|
|
// 'safe_name' => \CodeHydrater\bootstrap\safer_io::h($name), |
|
|
|
'a_errors' => $errors, |
|
|
|
'a_errors' => $a['errors'], |
|
|
|
]; |
|
|
|
]; |
|
|
|
unset($html_output, $errors, $headers, $form_type, $required); |
|
|
|
unset($html_output, $errors, $headers, $form_type, $required); |
|
|
|
$app->view->set('twig_data', $data); |
|
|
|
$app->view->set('twig_data', $twig_data); |
|
|
|
$app->view->set('twig_functions', [ |
|
|
|
$app->view->set('twig_functions', [ |
|
|
|
'show_table' => '\CodeHydrater\html::show_table_from', |
|
|
|
'show_table' => '\CodeHydrater\html::show_table_from', |
|
|
|
'show_errors' => '\CodeHydrater\html::show_errors', |
|
|
|
'show_errors' => '\CodeHydrater\html::show_errors', |
|
|
|
|