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 @@