JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
metaform redirects after successful submit. metaform can make a display page
[wfpl.git] / metaform.php
index 63c1c6e..734d8fc 100644 (file)
@@ -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 <http://www.gnu.org/licenses/>.
 
 
 # This file writes the code for you (sql, php, html, email) to handle a form.
@@ -49,9 +46,10 @@ $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')
@@ -78,6 +76,8 @@ function metaform() {
                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 {
@@ -170,7 +170,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"');
@@ -229,6 +229,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 +252,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') {
@@ -321,9 +340,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 +393,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,6 +433,7 @@ function preview() {
        }
        $preview = $preview_tem->run();
        unset($preview_tem);
+       $preview = ereg_replace('type="submit"', 'type="submit" disabled="disabled"', $preview);
        tem_set('preview', $preview);
        set_form_action();
        tem_output();
@@ -427,7 +453,7 @@ function download_tar() {
        if($GLOBALS['opt_email'] == 'Yes') {
                $data["$name.email.txt"] = make_email();
        }
-       make_wfpl_tar($name, $data);
+       make_tar($name, $data);
 }