JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
wrote upload handler (untested
[wfpl.git] / metaform.php
index 9bd36cb..9fe48c9 100644 (file)
@@ -30,15 +30,18 @@ $GLOBALS['types'] = array(
 #    type                  input          format        sql     
        'name' =>       array('textbox',     'oneline',    'varchar(200)'),
        'textbox' =>    array('textbox',     'oneline',    'varchar(200)'),
+       'int' =>        array('textbox',     'int',        'varchar(100)'),
        'email' =>      array('textbox',     'email',      'varchar(100)'),
        'phone' =>      array('textbox',     'phone',      'varchar(32)'),
        'money' =>      array('textbox',     'money',      'varchar(32)'),
        'dollars' =>    array('textbox',     'dollars',    'varchar(32)'),
        'url' =>        array('textbox',     'url',        'varchar(200)'),
+       'hidden' =>     array('hidden',      'unix',       'varchar(200)'),
+       'password' =>   array('password',    'oneline',    'varchar(200)'),
        'textarea' =>   array('textarea',    'unix',       'text'),
        'pulldown' =>   array('pulldown',    'options',    'int'),
-       'checkbox' =>   array('checkbox',    'yesno',      'int'),
-       'yesno' =>      array('checkbox',    'yesno',      'int'),
+       'checkbox' =>   array('checkbox',    'yesno',      'varchar(3)'),
+       'yesno' =>      array('checkbox',    'yesno',      'varchar(3)'),
        'submit' =>     array('submit',      'oneline',    'n/a')
 );
 
@@ -155,10 +158,14 @@ function make_template($whole_file = true) {
                $tem->set('name', $name);
                $tem->set('caption', $name); # fixme
                $tem->sub($input);
+               if($input != 'hidden') {
+                       $tem->sub('row');
+               }
        }
        $tem->set('name', 'save');
        $tem->set('caption', 'Save');
        $tem->sub('submit');
+       $tem->sub('row');
        $tem->sub('form');
        if($whole_file) {
                return $tem->run();
@@ -179,6 +186,7 @@ function make_php() {
        $tem->set('form_name', $GLOBALS['form_name']);
        $fields = get_fields();
        $db_fields = '';
+       $php_fields = '';
        $always_field = false;
        foreach($fields as $field) {
                list($name, $type, $input, $format, $sql) = $field;
@@ -187,11 +195,13 @@ function make_php() {
                        $tem->set('name', $name);
                        $tem->set('db_field', ''); # we don't want to use the value from last time
                        if($sql != 'n/a') {
-                               $tem->sub('db_field');
                                if($db_fields != '') $db_fields .= ',';
                                $db_fields .= $name;
+                               if($php_fields != '') $php_fields .= ', ';
+                               $php_fields .= '$' . $name;
                        }
                        $tem->sub('formats');
+                       $tem->sub('tem_sets');
                        if(!$always_field and $input != 'checkbox' and $input != 'radio') {
                                $always_field = $name;
                        }
@@ -200,6 +210,7 @@ function make_php() {
        # always_field is a form field that always submits (unlike say, checkboxes). It's used to detect if the form has submitted or not.
        $tem->set('always_field', $always_field);
        $tem->set('db_fields', $db_fields);
+       $tem->set('php_fields', $php_fields);
        return $tem->run();
 }
 
@@ -234,7 +245,10 @@ function preview() {
        $tem->load('code/wfpl/metaform/preview.html');
        $tem->set('form_name', $GLOBALS['form_name']);
        $tem->set('fields', $_REQUEST['fields']);
-       $tem->set('preview', make_template(false));
+       $preview_tem = new tem();
+       $preview = $preview_tem->run(make_template(false));
+       unset($preview_tem);
+       $tem->set('preview', $preview);
        set_form_action();
        $tem->output();
 }