# see code/wfpl/metaform/template.html for the html templates for these elements
$GLOBALS['types'] = array(
# type input format sql
- 'varname' => array('textbox', 'varname', 'varchar(50)'),
- 'name' => array('textbox', 'oneline', 'varchar(200)'),
- 'textbox' => array('textbox', 'oneline', 'varchar(200)'),
+ 'varname' => array('textbox', 'varname', 'varchar(50) binary'),
+ 'name' => array('textbox', 'oneline', 'varchar(200) binary'),
+ 'textbox' => array('textbox', 'oneline', 'varchar(200) binary'),
'int' => array('textbox', 'int', 'int'),
- '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)'),
- 'phone' => array('textbox', 'phone', 'varchar(32)'),
- 'state' => array('states', 'oneline', 'varchar(2)'),
- 'money' => array('textbox', 'money', 'varchar(32)'),
- '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)'),
- 'password' => array('password', 'oneline', 'varchar(200)'),
- 'textarea' => array('textarea', 'unix', 'text'),
- 'html' => array('html', 'unix', 'text'),
- 'pulldown' => array('pulldown', 'options', 'varchar(100)'),
- 'radio' => array('radio', 'options', 'varchar(100)'),
+ 'decimal' => array('textbox', 'decimal', 'decimal(12,2)'),
+ 'bigint' => array('textbox', 'int', 'varchar(100) binary'), # up to 100 digits, stored as a string
+ 'zip' => array('textbox', 'zip', 'varchar(20) binary'),
+ 'email' => array('email', 'email', 'varchar(100) binary'),
+ 'search' => array('search', 'oneline', 'varchar(200) binary'),
+ 'phone' => array('textbox', 'phone', 'varchar(32) binary'),
+ 'state' => array('states', 'oneline', 'varchar(2) binary'),
+ 'money' => array('textbox', 'money', 'varchar(32) binary'),
+ 'date' => array('date', 'mdy_to_ymd', 'char(10) binary'),
+ 'dollars' => array('textbox', 'dollars', 'varchar(32) binary'),
+ 'url' => array('textbox', 'url', 'varchar(200) binary'),
+ 'hidden' => array('hidden', 'unix', 'varchar(200) binary'),
+ 'password' => array('password', 'oneline', 'varchar(200) binary'),
+ 'textarea' => array('textarea', 'unix', 'text binary'),
+ 'html' => array('html', 'unix', 'mediumtext binary'),
+ 'pulldown' => array('pulldown', 'options', 'varchar(100) binary'),
+ 'radio' => array('radio', 'options', 'varchar(100) binary'),
'checkbox' => array('checkbox', 'bool', 'int(1)'),
- 'yesno' => array('checkbox', 'yesno', 'varchar(3)'),
+ 'yesno' => array('checkbox', 'yesno', 'varchar(3) binary'),
'delete' => array('checkbox', 'yesno', 'n/a'),
- 'image' => array('image', 'oneline', 'varchar(120)'),
- 'thumb' => array('image', 'oneline', 'varchar(240)'),
- 'file' => array('file', 'oneline', 'varchar(100)'),
+ 'image' => array('image', 'oneline', 'varchar(120) binary'),
+ 'thumb' => array('image', 'oneline', 'varchar(240) binary'),
+ 'file' => array('file', 'oneline', 'varchar(100) binary'),
'submit' => array('submit', 'n/a', 'n/a'),
'{' => array('fieldset', 'n/a', 'n/a'),
'}' => array('end_fieldset','n/a', 'n/a')
function tem_set_globals(&$tem) {
$vars = array(
'file_name',
+ 'public_file_name',
'table_name',
'plural',
'singular');
'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);
}
}
}
$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']);
$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);
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;
}
}
}
if(show_in_listing($type, $input, $format, $sql)) {
- $listing_headers[] = array('caption' => format_caption($name));
+ $listing_headers[] = array('caption' => format_caption($name), 'name' => $name);
$listing_field = array('name' => $name);
if($format == 'bool' || $format == 'yesno') {
$listing_field['enc'] = 'yesno';
}
# 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'));
'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);
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();
$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);
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');
}
}
}
- 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');
$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';
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();
}
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);
}