X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=metaform.php;h=62ef5069f8afd9c2eb6b25fe52e7e862ee87c99c;hb=4a25d3b6318f7f361df3adfac17366452fe3ed49;hp=63c1c6ee9c371921d63a5a1f9feaf7fa48d1c872;hpb=702a6250f176b2e59ad0fe66a89cf72e570f8784;p=wfpl.git diff --git a/metaform.php b/metaform.php index 63c1c6e..62ef506 100644 --- a/metaform.php +++ b/metaform.php @@ -2,21 +2,18 @@ # Copyright (C) 2006 Jason Woofenden # -# This file is part of wfpl. -# -# wfpl is free software; you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation; either version 2.1 of the License, or (at your option) -# any later version. -# -# wfpl is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for -# more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with wfpl; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # This file writes the code for you (sql, php, html, email) to handle a form. @@ -40,7 +37,7 @@ $GLOBALS['types'] = array( 'phone' => array('textbox', 'phone', 'varchar(32)'), 'state' => array('states', 'oneline', 'varchar(2)'), 'money' => array('textbox', 'money', 'varchar(32)'), - 'date' => array('textbox', 'mdy_to_ymd', 'char(10)'), + 'date' => array('date', 'mdy_to_ymd', 'char(10)'), 'dollars' => array('textbox', 'dollars', 'varchar(32)'), 'url' => array('textbox', 'url', 'varchar(200)'), 'hidden' => array('hidden', 'unix', 'varchar(200)'), @@ -49,35 +46,38 @@ $GLOBALS['types'] = array( 'html' => array('html', 'unix', 'text'), 'pulldown' => array('pulldown', 'options', 'varchar(100)'), 'radio' => array('radio', 'oneline', 'varchar(200)'), - 'leftcheck' => array('leftcheck', 'yesno', 'varchar(3)'), - 'checkbox' => array('checkbox', 'yesno', 'varchar(3)'), - 'yesno' => array('checkbox', 'yesno', 'varchar(3)'), + 'checkbox' => array('leftcheck', 'bool', 'int(1)'), + 'rightcheck' => array('checkbox', 'bool', 'int(1)'), + 'rightyesno' => array('checkbox', 'yesno', 'varchar(3)'), + 'yesno' => array('leftcheck', 'yesno', 'varchar(3)'), 'delete' => array('checkbox', 'yesno', 'n/a'), 'image' => array('image', 'oneline', 'varchar(200)'), 'submit' => array('submit', 'oneline', 'n/a') ); function list_available_types() { - $types = ''; + ksort($GLOBALS['types']); foreach($GLOBALS['types'] as $key => $value) { - if($types) { - $types .= ', '; - } - $types .= $key; + tem_set('type', $key); + tem_show('types'); + tem_show('types_sep'); } - tem_set('available_types', $types); } function metaform() { if(isset($_REQUEST['form_name'])) { - $GLOBALS['form_name'] = ereg_replace('[^a-z0-9_-]', '', $_REQUEST['form_name']); + $GLOBALS['form_name'] = format_varname($_REQUEST['form_name']); + $GLOBALS['singular'] = format_varname($_REQUEST['singular']); + tem_set('singular', $GLOBALS['singular']); $GLOBALS['opt_email'] = format_yesno($_REQUEST['opt_email']); tem_set('opt_email', $GLOBALS['opt_email']); $GLOBALS['opt_db'] = format_yesno($_REQUEST['opt_db']); tem_set('opt_db', $GLOBALS['opt_db']); $GLOBALS['opt_listing'] = format_yesno($_REQUEST['opt_listing']); tem_set('opt_listing', $GLOBALS['opt_listing']); + $GLOBALS['opt_display'] = format_yesno($_REQUEST['opt_display']); + tem_set('opt_display', $GLOBALS['opt_display']); $GLOBALS['opt_http_pass'] = format_yesno($_REQUEST['opt_http_pass']); tem_set('opt_http_pass', $GLOBALS['opt_http_pass']); } else { @@ -114,8 +114,9 @@ function metaform() { set_form_action(); + tem_load('code/wfpl/metaform/main.html'); list_available_types(); - tem_output('code/wfpl/metaform/main.html'); + tem_output(); } @@ -170,7 +171,7 @@ function make_sql() { if($sql != 'n/a') { $tem->set('name', $name); $tem->set('type', $sql); - if($sql == 'int') { + if(substr($sql, 0, 3) == 'int' || substr($sql, 0, 7) == 'decimal') { $tem->set('default', '0'); } elseif($format == 'yesno') { $tem->set('default', '"No"'); @@ -210,6 +211,7 @@ function make_html($whole_file = true) { $tem = new tem(); $tem->load('code/wfpl/metaform/template.html'); $tem->set('form_name', $GLOBALS['form_name']); + $tem->set('singular', $GLOBALS['singular']); $fields = get_fields(); $tem->set('always_field', find_always_field($fields)); foreach($fields as $field) { @@ -229,6 +231,19 @@ function make_html($whole_file = true) { $tem->set('html_field_name', $name); $tem->show('replace_textarea'); } + if($GLOBALS['opt_display']) { + switch($input) { + case 'textarea': + $tem->show('display_multiline'); + break; + case 'html': + $tem->show('display_html'); + break; + default: + $tem->show('display_short'); + } + $tem->show('display_row'); + } } if($GLOBALS['opt_db'] == 'Yes') { @@ -239,9 +254,15 @@ function make_html($whole_file = true) { } if($GLOBALS['opt_listing'] == 'Yes') { + if($GLOBALS['opt_display'] != 'Yes') { + $tem->show('opt_display_a_else'); + } $tem->show('opt_listing_1'); - } else { - $tem->show('opt_listing_1_else'); + } + + if($GLOBALS['opt_display'] == 'Yes') { + $tem->show('opt_display_1'); + $tem->show('opt_display_2'); } if($GLOBALS['opt_email'] == 'Yes' && $GLOBALS['opt_db'] != 'Yes') { @@ -277,6 +298,7 @@ function make_php() { $tem = new tem(); $tem->load('code/wfpl/metaform/template.php'); $tem->set('form_name', $GLOBALS['form_name']); + $tem->set('singular', $GLOBALS['singular']); $fields = get_fields(); $db_fields = ''; $php_fields = ''; @@ -321,9 +343,13 @@ function make_php() { if($GLOBALS['opt_listing'] == 'Yes') { $tem->show('opt_listing_1'); $tem->show('opt_listing_2'); - $tem->show('opt_listing_4'); + } + if($GLOBALS['opt_display'] == 'Yes') { + $tem->show('opt_display_1'); + $tem->show('opt_display_2'); } else { - $tem->show('opt_listing_4_else'); + $tem->show('opt_display_1_else'); + $tem->show('opt_display_2_else'); } if($GLOBALS['opt_db'] == 'Yes') { $tem->show('opt_db_1'); @@ -370,6 +396,8 @@ function make_email() { $tem->set('caption', $name); # fixme if($type == 'textarea') { $tem->show('multi_line'); + } elseif($type == 'checkbox') { + $tem->show('checkbox'); } else { $tem->show('normal'); } @@ -408,7 +436,9 @@ function preview() { } $preview = $preview_tem->run(); unset($preview_tem); + $preview = ereg_replace('type="submit"', 'type="submit" disabled="disabled"', $preview); tem_set('preview', $preview); + tem_show('hiddens'); set_form_action(); tem_output(); } @@ -427,7 +457,7 @@ function download_tar() { if($GLOBALS['opt_email'] == 'Yes') { $data["$name.email.txt"] = make_email(); } - make_wfpl_tar($name, $data); + make_tar($name, $data); }