'textarea' => array('textarea', 'unix', 'text'),
'html' => array('html', 'unix', 'text'),
'pulldown' => array('pulldown', 'options', 'varchar(100)'),
- 'radio' => array('radio', 'oneline', 'varchar(200)'),
+ 'radio' => array('radio', 'options', 'varchar(100)'),
'checkbox' => array('checkbox', 'bool', 'int(1)'),
'yesno' => array('checkbox', 'yesno', 'varchar(3)'),
'delete' => array('checkbox', 'yesno', 'n/a'),
'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() {
$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 = explode(',', $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'];
}
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));
case 'password':
case 'textarea':
case 'html':
+ case 'fieldset':
+ case 'end_fieldset':
return false;
}
if($type == 'image') {
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);
} else {
if($input == 'html') {
$has_html_editors = true;
- } elseif($input == 'pulldown') {
+ } elseif($input == 'pulldown' || $input == 'radio') {
+ $pulldown_options = pulldown_options_array($options);
+ $tem->set('pulldown_options', $pulldown_options);
$tem->show('pulldowns');
$tem->show('pulldown_format_extra');
}
- $tem->show('formats');
+ if($format != 'n/a') {
+ $tem->show('formats');
+ }
}
}
}
$fields = get_fields();
foreach($fields as $field) {
- list($name, $type, $input, $format, $sql) = $field;
- if($type == 'pulldown') {
- pulldown($name, array('option 1', 'option 2', 'option 3'));
+ list($name, $type, $input, $format, $sql, $options) = $field;
+ if($type == 'pulldown' || $type == 'radio') {
+ pulldown($name, eval('return ' . pulldown_options_array($options) . ';'));
}
}
$preview = $preview_tem->run();