show_edit(intval($_GET['id'])); return; } $this->show_list(); } private function show_list(): void { global $rsv_form_registry; $element_types = array_keys($rsv_form_registry->handlers); $elements_with_ids = []; $next_id = 1; $timetables = (new RsvTimetableService())->get_all(); ?>

Formuláře


column(function () { echo RsvFormBuilder::create('add_form_definition', get_rest_url(null, 'reservations/v1/form-definition'), 'POST', 'Form definition created.') ->heading('Přidat formulář') ->nonce('my_action', 'my_nonce') ->text('name', 'Název') ->render(); ?>

column(function () { ?>
output(); ?> elements_table_script($elements_with_ids, $next_id, 'add_form_definition', $element_types, $timetables); ?> handlers); $repo = new RsvFormDefinitionRepository(); $form_def = $repo->get($id); if ($form_def === null) { echo '

Form definition not found.

'; return; } $definition = $form_def['definition'] ?? []; $raw_elements = array_values($definition['elements'] ?? []); $elements_with_ids = array_map(function (array $el, int $idx): array { return array_merge($el, ['id' => $idx + 1]); }, $raw_elements, array_keys($raw_elements)); $next_id = count($elements_with_ids) + 1; $timetables = (new RsvTimetableService())->get_all(); $email_key_options = ['' => '— select field —']; foreach ($raw_elements as $el) { $el_name = $el['name'] ?? ''; if ($el_name === '') { continue; } $el_label = $el['label'] ?? ''; $email_key_options[$el_name] = $el_label !== '' ? "$el_label ($el_name)" : $el_name; } ?>

Edit Form:

← Back to Forms
text('name', 'Name', '', true, $form_def['name']) ->select('definition.email_key', 'Email Key', $email_key_options, "Form field that holds the submitter's email address.", true, $definition['email_key'] ?? '') ->textarea('definition.success_message', 'Success message', 'Shown to the visitor after a successful submission. HTML is allowed. Use to display the selected reservations. Leave blank for the default message.', false, $definition['success_message'] ?? '') ->render(); ?>

Form Elements

Define the fields that will appear in this form.

elements_table_script($elements_with_ids, $next_id, 'edit_form_definition', $element_types, $timetables); ?>