From: Jason Woofenden Date: Sat, 30 Oct 2010 00:49:22 +0000 (-0400) Subject: metaform: added fieldset support X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=716a02dbcc75c65b2add4198e08e52270664f092 metaform: added fieldset support --- diff --git a/metaform.php b/metaform.php index 1bdd940..274128f 100644 --- a/metaform.php +++ b/metaform.php @@ -52,7 +52,9 @@ $GLOBALS['types'] = array( 'image' => array('image', 'oneline', 'varchar(120)'), 'thumb' => array('image', 'oneline', 'varchar(240)'), 'file' => array('file', 'oneline', 'varchar(100)'), - 'submit' => array('submit', 'oneline', 'n/a') + 'submit' => array('submit', 'n/a', 'n/a'), + '{' => array('fieldset', 'n/a', 'n/a'), + '}' => array('end_fieldset','n/a', 'n/a') ); function list_available_types() { @@ -159,14 +161,26 @@ function get_fields() { $fields_str = rtrim($fields_str); $fields = split("\n", $fields_str); foreach($fields as $field) { - list($name, $type, $options) = split(' *', $field); - if($options) $options = split(',', $options); - if(!$type) $type = $name; + $field = trim($field); + if(substr($field, -1) == '{') { + $name = trim(substr($field, 0, -1)); # FIXME: stop this from getting enc_caption()ed + $type = '{'; + $options = null; + } elseif(substr($field, -1) == '{') { + $name = 'ignored'; + $type = '}'; + $options = null; + } else { + list($name, $type, $options) = split(' *', $field); + if($options) $options = split(',', $options); + if(!$type) $type = $name; + } $input = field_input($type); $format = field_format($type); $sql = field_sql($type); $GLOBALS['gotten_fields'][] = array($name, $type, $input, $format, $sql, $options); } + return $GLOBALS['gotten_fields']; } @@ -271,8 +285,10 @@ function make_html($whole_file = true) { default: $display_type = 'short'; } - $display_fields[] = array($display_type => array( - 'name' => $name, 'caption' => format_caption($name))); + if($format != 'n/a') { + $display_fields[] = array($display_type => array( + 'name' => $name, 'caption' => format_caption($name))); + } if(show_in_listing($type, $input, $format, $sql)) { $listing_headers[] = array('caption' => format_caption($name)); @@ -337,6 +353,8 @@ function show_in_listing($type, $input, $format, $sql) { case 'password': case 'textarea': case 'html': + case 'fieldset': + case 'end_fieldset': return false; } if($type == 'image') { @@ -385,7 +403,9 @@ function make_php() { $tem->show('pulldowns'); $tem->show('pulldown_format_extra'); } - $tem->show('formats'); + if($format != 'n/a') { + $tem->show('formats'); + } } } diff --git a/metaform/main.html b/metaform/main.html index f15b49e..c7e02bc 100644 --- a/metaform/main.html +++ b/metaform/main.html @@ -33,11 +33,19 @@

Password protect this form.

Below, specify the fields you'd like in your form, one field per line. After each field name, put at least one space, then the field type. The following field types are available: , ~type html~.

-

Example:

+
+	

You can start a labeled fieldset by putting a { at the end of a lite with the caption. Then end the fieldset with a } on a line by itself

+ +

Example:

+email     textbox
+contact info {
 name      textbox
 phone     phone
+}
 comments  textarea
-agree     yesno

+agree yesno +

+

Fields:

diff --git a/metaform/style.css b/metaform/style.css index 247cb41..ded770c 100644 --- a/metaform/style.css +++ b/metaform/style.css @@ -1,24 +1,21 @@ -div.caption { +.caption { + margin-top: 15px; font-weight: bold; } -div.field { +.field { margin-bottom: 15px; } div.field_notes { font-size: 12px; line-height: 16px; } -div.form_section { +fieldset { border: 1px dotted black; - padding: 23px 15px 15px 15px; - margin: 40px 0; + padding: 0 15px 15px 15px; + margin: 15px 0; position: relative; } -div.form_section_header { - position: absolute; - left: 42px; - top: -9px; - background: white; +legend { padding: 0 6px; font-weight: bold; } @@ -29,11 +26,11 @@ div.error { background: #fdd; } -.first { +:first-child, .first { padding-top: 0px; margin-top: 0px; } -.last { +:last-child, .last { padding-bottom: 0px; margin-bottom: 0px; } diff --git a/metaform/template.html b/metaform/template.html index ded1b41..4e94d4a 100644 --- a/metaform/template.html +++ b/metaform/template.html @@ -68,7 +68,9 @@
- + +
~caption html~ +
~caption html~
~caption html~