X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=metaform.php;h=1cd27f5d0f400165992525bf0341f11d1985c979;hb=c311c032739b97156dd373b270c0915bf248be76;hp=274128f699a1b543c72bfcf5086bf86d50b8c3d2;hpb=716a02dbcc75c65b2add4198e08e52270664f092;p=wfpl.git diff --git a/metaform.php b/metaform.php index 274128f..1cd27f5 100644 --- a/metaform.php +++ b/metaform.php @@ -33,7 +33,8 @@ $GLOBALS['types'] = array( 'decimal' => array('textbox', 'decimal', 'decimal(12,12)'), 'bigint' => array('textbox', 'int', 'varchar(100)'), # up to 100 digits, stored as a string 'zip' => array('textbox', 'zip', 'varchar(20)'), - 'email' => array('textbox', 'email', 'varchar(100)'), + 'email' => array('email', 'email', 'varchar(100)'), + 'search' => array('search', 'oneline', 'varchar(200)'), 'phone' => array('textbox', 'phone', 'varchar(32)'), 'state' => array('states', 'oneline', 'varchar(2)'), 'money' => array('textbox', 'money', 'varchar(32)'), @@ -70,6 +71,7 @@ function list_available_types() { function tem_set_globals(&$tem) { $vars = array( 'file_name', + 'public_file_name', 'table_name', 'plural', 'singular'); @@ -82,9 +84,12 @@ function tem_set_globals(&$tem) { 'opt_db', 'opt_listing', 'opt_display', - 'opt_pass'); + 'opt_pass', + 'opt_public_form', + 'opt_public_display', + 'opt_public_something'); foreach($bools as $bool) { - if(format_bool($GLOBALS[$bool])) { + if($GLOBALS[$bool]) { $tem->set($bool); } } @@ -101,11 +106,19 @@ function metaform() { } $GLOBALS['singular'] = format_oneline($_REQUEST['singular']); - $GLOBALS['opt_email'] = format_yesno($_REQUEST['opt_email']); - $GLOBALS['opt_db'] = format_yesno($_REQUEST['opt_db']); - $GLOBALS['opt_listing'] = format_yesno($_REQUEST['opt_listing']); - $GLOBALS['opt_display'] = format_yesno($_REQUEST['opt_display']); - $GLOBALS['opt_pass'] = format_yesno($_REQUEST['opt_pass']); + $GLOBALS['opt_email'] = format_bool($_REQUEST['opt_email']); + $GLOBALS['opt_db'] = format_bool($_REQUEST['opt_db']); + $GLOBALS['opt_listing'] = format_bool($_REQUEST['opt_listing']); + $GLOBALS['opt_display'] = format_bool($_REQUEST['opt_display']); + $GLOBALS['opt_pass'] = format_bool($_REQUEST['opt_pass']); + $GLOBALS['opt_public_form'] = format_bool($_REQUEST['opt_public_form']); + $GLOBALS['opt_public_display'] = format_bool($_REQUEST['opt_public_display']); + + $GLOBALS['public_file_name'] = $GLOBALS['file_name']; + if($GLOBALS['opt_public_form'] || $GLOBALS['opt_public_display']) { + $GLOBALS['opt_public_something'] = 1; + $GLOBALS['file_name'] = $GLOBALS['file_name'] . _admin; + } tem_init(); tem_set_globals($GLOBALS['wfpl_template']); @@ -172,7 +185,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); @@ -232,7 +245,7 @@ function view_sql() { function find_always_field($fields) { foreach($fields as $field) { list($name, $type, $input, $format, $sql) = $field; - if($input != 'submit' && $input != 'image' && $input != 'file' && $input != 'checkbox' && $input != 'radio') { + if($input != 'submit' && $input != 'image' && $input != 'file' && $input != 'checkbox' && $input != 'radio' && $type != '{') { return $name; } } @@ -307,7 +320,7 @@ function make_html($whole_file = true) { } # Submit/Send button - if($GLOBALS['opt_email'] == 'Yes' && $GLOBALS['opt_db'] != 'Yes') { + if($GLOBALS['opt_email'] == 'Yes' && !$GLOBALS['opt_db']) { $visible_fields[] = array('submit' => array( 'name' => 'send', 'caption' => 'Send')); @@ -317,9 +330,12 @@ function make_html($whole_file = true) { 'caption' => 'Save')); } - $tem->set('form', array( - 'visible_fields' => $visible_fields, - 'hidden_fields' => $hidden_fields)); + $form_fields = array(); + $form_fields['visible_fields'] = $visible_fields; + if($hidden_fields) { + $form_fields['hidden_fields'] = $hidden_fields; + } + $tem->set('form', $form_fields); # opt_display and opt_listing control whether these are actually displayed $tem->set('display_fields', $display_fields); @@ -364,6 +380,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 +405,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 +431,9 @@ 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->set('has_pulldowns'); $tem->show('pulldowns'); $tem->show('pulldown_format_extra'); } @@ -409,7 +443,7 @@ function make_php() { } } - if($GLOBALS['opt_listing'] == 'Yes') { + if($GLOBALS['opt_listing']) { if(show_in_listing($type, $input, $format, $sql)) { $tem->show('listing_fields_1'); $tem->show('listing_fields_2'); @@ -430,7 +464,7 @@ function make_php() { $tem->set('always_field', $always_field); $tem->set('db_fields', $db_fields); $tem->set('metaform_url', edit_url()); - if($GLOBALS['opt_email'] == 'Yes') { + if($GLOBALS['opt_email']) { $this_domain = $_SERVER['HTTP_HOST']; if(substr($this_domain, -2) == '.l') { $this_domain = substr($this_domain, 0, -1) . 'com'; @@ -493,14 +527,14 @@ function preview() { tem_set('fields', $_REQUEST['fields']); $preview_tem = new tem(); $preview_tem->load_str(make_html(false)); - if($GLOBALS['opt_db'] == 'Yes') { + if($GLOBALS['opt_db']) { $preview_tem->show('new_msg'); } $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(); @@ -513,21 +547,27 @@ function preview() { } function download_tar() { - $name = $GLOBALS['file_name']; - $data = array( + $admin_name = $GLOBALS['file_name']; + $nice_name = $GLOBALS['public_file_name']; + $files = array( "INSTALL" => read_whole_file('code/wfpl/metaform/INSTALL'), ".htaccess" => make_htaccess(), - #"run.php ->" => 'code/wfpl/run.php', - "style.css" => read_whole_file('code/wfpl/metaform/style.css'), - "$name.html" => make_html(), - "$name.php" => make_php()); - if($GLOBALS['opt_db'] == 'Yes') { - $data["$name.sql"] = make_sql(); + "run.php ->" => 'code/wfpl/run.php', + "style.less" => read_whole_file('code/wfpl/metaform/style.less'), + "template.html" => read_whole_file('code/wfpl/metaform/site-template.html'), + "$admin_name.html" => make_html(), + "$admin_name.php" => make_php()); + if($GLOBALS['opt_public_something']) { + $files["$nice_name.html ->"] = "$admin_name.html"; + $files["$nice_name.php ->"] = "$admin_name.php"; + } + if($GLOBALS['opt_db']) { + $files["$nice_name.sql"] = make_sql(); } - if($GLOBALS['opt_email'] == 'Yes') { - $data["$name.email.txt"] = make_email(); + if($GLOBALS['opt_email']) { + $files["$nice_name.email.txt"] = make_email(); } - make_tar($name, $data); + make_tar($nice_name, $files); }