From 773f0503acf641558ed477ff8447118c67c0c179 Mon Sep 17 00:00:00 2001
From: Jason Woofenden
Date: Sat, 23 Oct 2010 19:45:45 -0400
Subject: [PATCH] form gen: refactor and simplify optional output
---
metaform.php | 100 ++++++++++++++++--------------------------------
metaform/preview.html | 2 +-
metaform/template.html | 10 ++---
metaform/template.php | 20 +++++-----
4 files changed, 50 insertions(+), 82 deletions(-)
diff --git a/metaform.php b/metaform.php
index be218d4..d134f92 100644
--- a/metaform.php
+++ b/metaform.php
@@ -65,6 +65,32 @@ function list_available_types() {
}
+function tem_set_globals(&$tem) {
+ $vars = array(
+ 'file_name',
+ 'table_name',
+ 'plural',
+ 'singular');
+ foreach($vars as $var) {
+ $tem->set($var, $GLOBALS[$var]);
+ }
+
+ $bools = array(
+ 'opt_email',
+ 'opt_db',
+ 'opt_listing',
+ 'opt_display',
+ 'opt_pass');
+ foreach($bools as $bool) {
+ if(format_bool($GLOBALS[$bool])) {
+ $tem->set($bool, 1);
+ } else {
+ $tem->set($bool . '_else', 1);
+ }
+ }
+
+}
+
function metaform() {
if(isset($_REQUEST['singular'])) {
$GLOBALS['file_name'] = format_varname($_REQUEST['file_name']);
@@ -74,22 +100,16 @@ function metaform() {
if(isset($_REQUEST['form_name'])) {
$GLOBALS['file_name'] = $GLOBALS['table_name'] = $GLOBALS['plural'] = format_varname($_REQUEST['form_name']);
}
- tem_set('file_name', $GLOBALS['file_name']);
- tem_set('table_name', $GLOBALS['table_name']);
- tem_set('plural', $GLOBALS['plural']);
$GLOBALS['singular'] = format_oneline($_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_pass'] = format_yesno($_REQUEST['opt_pass']);
- tem_set('opt_pass', $GLOBALS['opt_pass']);
+
+ tem_init();
+ tem_set_globals($GLOBALS['wfpl_template']);
}
if(isset($_REQUEST['fields'])) {
@@ -171,7 +191,7 @@ function view_headers() {
function make_sql() {
$tem = new tem();
$tem->load('code/wfpl/metaform/template.sql');
- $tem->set('table_name', $GLOBALS['table_name']);
+ tem_set_globals($tem);
$fields = get_fields();
foreach($fields as $field) {
list($name, $type, $input, $format, $sql) = $field;
@@ -217,10 +237,7 @@ function make_html($whole_file = true) {
$has_html_editors = false;
$tem = new tem();
$tem->load('code/wfpl/metaform/template.html');
- $tem->set('file_name', $GLOBALS['file_name']);
- $tem->set('table_name', $GLOBALS['table_name']);
- $tem->set('singular', $GLOBALS['singular']);
- $tem->set('plural', $GLOBALS['plural']);
+ tem_set_globals($tem);
$fields = get_fields();
$tem->set('always_field', find_always_field($fields));
foreach($fields as $field) {
@@ -280,30 +297,12 @@ function make_html($whole_file = true) {
$tem->show('listing_value_enc');
}
- if($GLOBALS['opt_display'] != 'Yes') {
- $tem->show('opt_display_a_else');
- }
$tem->show('listing_head_col');
$tem->show('listing_row_col');
}
}
}
- if($GLOBALS['opt_db'] == 'Yes') {
- $tem->show('opt_db_1');
- $tem->show('opt_db_2');
- } else {
- $tem->show('opt_db_1_else');
- }
-
- if($GLOBALS['opt_listing'] == 'Yes') {
- $tem->show('opt_listing_1');
- }
-
- if($GLOBALS['opt_display'] == 'Yes') {
- $tem->show('opt_display_1');
- }
-
if($GLOBALS['opt_email'] == 'Yes' && $GLOBALS['opt_db'] != 'Yes') {
$tem->set('name', 'send');
$tem->set('caption', 'Send');
@@ -352,10 +351,7 @@ function make_php() {
$has_html_editors = false;
$tem = new tem();
$tem->load('code/wfpl/metaform/template.php');
- $tem->set('file_name', $GLOBALS['file_name']);
- $tem->set('table_name', $GLOBALS['table_name']);
- $tem->set('singular', $GLOBALS['singular']);
- $tem->set('plural', $GLOBALS['plural']);
+ tem_set_globals($tem);
$fields = get_fields();
$db_fields = '';
$always_field = find_always_field($fields);
@@ -415,34 +411,12 @@ function make_php() {
$tem->set('always_field', $always_field);
$tem->set('db_fields', $db_fields);
$tem->set('metaform_url', edit_url());
- if($GLOBALS['opt_listing'] == 'Yes') {
- $tem->show('opt_listing_1');
- $tem->show('opt_listing_2');
- }
- if($GLOBALS['opt_display'] == 'Yes') {
- $tem->show('opt_display_1');
- $tem->show('opt_display_2');
- } else {
- $tem->show('opt_display_1_else');
- }
- if($GLOBALS['opt_db'] == 'Yes') {
- $tem->show('opt_db_1');
- $tem->show('opt_db_2');
- $tem->show('opt_db_3');
- $tem->show('opt_db_4');
- $tem->show('opt_db_5');
- }
if($GLOBALS['opt_email'] == 'Yes') {
$this_domain = $_SERVER['HTTP_HOST'];
if(substr($this_domain, -2) == '.l') {
$this_domain = substr($this_domain, 0, -1) . 'com';
}
$tem->set('this_domain', $this_domain);
- $tem->show('opt_email_1');
- $tem->show('opt_email_2');
- }
- if($GLOBALS['opt_pass'] == 'Yes') {
- $tem->show('opt_pass');
}
return $tem->run();
}
@@ -465,10 +439,7 @@ function view_php() {
function make_email() {
$tem = new tem();
$tem->load('code/wfpl/metaform/template.email.txt');
- $tem->set('file_name', $GLOBALS['file_name']);
- $tem->set('table_name', $GLOBALS['table_name']);
- $tem->set('singular', $GLOBALS['singular']);
- $tem->set('plural', $GLOBALS['plural']);
+ tem_set_globals($tem);
$fields = get_fields();
foreach($fields as $field) {
list($name, $type, $input, $format, $sql) = $field;
@@ -499,10 +470,7 @@ function view_email() {
function preview() {
tem_load('code/wfpl/metaform/preview.html');
- tem_set('file_name', $GLOBALS['file_name']);
- tem_set('table_name', $GLOBALS['table_name']);
- tem_set('singular', $GLOBALS['singular']);
- tem_set('plural', $GLOBALS['plural']);
+ tem_set_globals($GLOBALS['wfpl_template']);
tem_set('fields', $_REQUEST['fields']);
$preview_tem = new tem();
$preview_tem->load_str(make_html(false));
diff --git a/metaform/preview.html b/metaform/preview.html
index e8a07d2..7137fee 100644
--- a/metaform/preview.html
+++ b/metaform/preview.html
@@ -14,7 +14,7 @@
-
+
~plural cap~ Listing
@@ -115,7 +115,7 @@
~caption~ | |
- ~~~name~ ~listing_enc~~~ |
+ ~~~name~ ~listing_enc~~~ |
[delete this ~singular~] |
diff --git a/metaform/template.php b/metaform/template.php
index 071728f..7b278af 100644
--- a/metaform/template.php
+++ b/metaform/template.php
@@ -9,10 +9,10 @@
# SETUP
-
+
# To send results by e-mail, all you have to do is set your e-mail address here:
$GLOBALS['~file_name~_form_recipient'] = 'fixme@example.com';
-
+
# To save results to a database, you'll need to create the ~table_name~ table
# (the file ~file_name~.sql should help with this), and create the file
# 'code/db_connect.php' which calls db_connect() see:
@@ -38,7 +38,7 @@ $GLOBALS['~name~_file_name'] = uniqid() . getmypid() . '.jpg'; # comment this ou
require_once('code/wfpl/template.php');
require_once('code/wfpl/format.php');
require_once('code/wfpl/messages.php');
-require_once('code/wfpl/email.php');
+require_once('code/wfpl/email.php');
require_once('code/db_connect.php');
require_once('code/wfpl/upload.php');
@@ -72,7 +72,7 @@ function ~file_name~_get_fields() {
return $data;
}
-
+
# You may pass a "where clause" for the db query.
function ~file_name~_display_listing($where = 'order by ~always_field~ limit 100') {
$rows = db_get_assocs('~table_name~', 'id,~name~', $where);
@@ -98,7 +98,7 @@ function ~file_name~_main() {
$GLOBALS['url'] = this_url();
return 'admin_login';
}
-
+
if(isset($_REQUEST['~file_name~_id'])) {
return ~file_name~_display_main();
} else {
@@ -123,7 +123,7 @@ function ~file_name~_display_main() {
function ~file_name~_edit_main() {
pulldown('~name~', array('option 1', 'option 2', 'option 3'));
-
+
$edit_id = format_int($_REQUEST['~file_name~_edit_id']);
unset($_REQUEST['~file_name~_edit_id']);
if($edit_id) {
@@ -142,7 +142,7 @@ function ~file_name~_edit_main() {
return './~file_name~';
}
- if(!$edit_id) {
+ if(!$edit_id) {
if(!isset($_REQUEST['~file_name~_new']) && !isset($_REQUEST['~always_field~'])) {
~file_name~_display_listing();
return;
@@ -154,14 +154,14 @@ function ~file_name~_edit_main() {
if(isset($_POST['~always_field~'])) {
$data = ~file_name~_get_fields();
- if("you're happy with the POSTed values") {
+ if("you're happy with the POSTed values") {
if($edit_id) {
db_update_assoc('~table_name~', $data, 'where id=%i', $edit_id);
message('~singular cap~ updated.');
} else {
db_insert_assoc('~table_name~', $data);
message('~singular cap~ saved.');
- }
+ }
if($GLOBALS['~file_name~_form_recipient'] != 'fixme@example.com') {
$to = $GLOBALS['~file_name~_form_recipient'];
$from = 'noreply@~this_domain~';
@@ -193,7 +193,7 @@ function ~file_name~_edit_main() {
# otherwise, we display the form again. ~file_name~_get_fields() has
# already put the posted values back into the template engine, so they will
# show up in the form fields. You should add some message asking people to
- # fix their entry in whatever way you require.
+ # fix their entry in whatever way you require.
} elseif($edit_id) {
# we've recieved an edit id, but no data. So we grab the values to be edited from the database
$data = db_get_assoc('~table_name~', ~file_name upper~_DB_FIELDS, 'where id=%i', $edit_id);
--
1.7.10.4