From: Jason Woofenden Date: Sat, 30 Oct 2010 05:58:24 +0000 (-0400) Subject: metaform: can set options for pulldown/radio X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=7ed4e19f49230c9ac8c0d1eb5a80cbae46d6c61b metaform: can set options for pulldown/radio --- diff --git a/metaform.php b/metaform.php index 274128f..9294189 100644 --- a/metaform.php +++ b/metaform.php @@ -172,7 +172,7 @@ function get_fields() { $options = null; } else { list($name, $type, $options) = split(' *', $field); - if($options) $options = split(',', $options); + if($options) $options = explode(',', $options); if(!$type) $type = $name; } $input = field_input($type); @@ -364,6 +364,21 @@ function show_in_listing($type, $input, $format, $sql) { return true; } +function pulldown_options_array($options) { + if($options) { + $pulldown_options = array(); + foreach($options as $option) { + $option = preg_replace("/['\\\\]/", '\\\\$0', $option); + $pulldown_options[] = "'$option'"; + } + $pulldown_options = 'array(' . join(', ', $pulldown_options) . ')'; + } else { + $pulldown_options = "array(array('op1', 'Option One'), array('op2', 'Option Two'), 'n/a')"; + } + + return $pulldown_options; +} + function make_php() { $has_html_editors = false; $tem = new tem(); @@ -374,7 +389,7 @@ function make_php() { $always_field = find_always_field($fields); $image_included_yet = false; foreach($fields as $field) { - list($name, $type, $input, $format, $sql) = $field; + list($name, $type, $input, $format, $sql, $options) = $field; if($input != 'submit') { $tem->set('format', $format); $tem->set('name', $name); @@ -400,6 +415,8 @@ function make_php() { if($input == 'html') { $has_html_editors = true; } elseif($input == 'pulldown' || $input == 'radio') { + $pulldown_options = pulldown_options_array($options); + $tem->set('pulldown_options', $pulldown_options); $tem->show('pulldowns'); $tem->show('pulldown_format_extra'); } @@ -498,9 +515,9 @@ function preview() { } $fields = get_fields(); foreach($fields as $field) { - list($name, $type, $input, $format, $sql) = $field; + list($name, $type, $input, $format, $sql, $options) = $field; if($type == 'pulldown' || $type == 'radio') { - pulldown($name, array('option 1', 'option 2', 'option 3')); + pulldown($name, eval('return ' . pulldown_options_array($options) . ';')); } } $preview = $preview_tem->run(); diff --git a/metaform/template.php b/metaform/template.php index 086c642..d8f663b 100644 --- a/metaform/template.php +++ b/metaform/template.php @@ -119,7 +119,7 @@ function ~file_name~_display_main() { } function ~file_name~_edit_main() { - pulldown('~name~', array(array('op1', 'Option One'), array('op2', 'Option Two'), 'n/a')); + pulldown('~name~', ~pulldown_options~); $edit_id = format_int($_REQUEST['~file_name~_edit_id']); unset($_REQUEST['~file_name~_edit_id']);