diff --git a/includes/form.inc b/includes/form.inc
index ecb2280..0e08451 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -132,14 +132,9 @@ function _radix_text_format_after_build($element, &$form_state) {
if (empty($element['format'])) { return $element; }
$format = &$element['format']['format'];
- // Overrides the form_element wrapper to render as an input group.
- foreach ($format['#theme_wrappers'] as $index => $function) {
- if ($function == 'form_element') {
- $format['#theme_wrappers'][$index] = 'radix_input_group';
- }
- }
// Set title to show in a field group before the input.
- $format['#title_display'] = 'input-group-before';
+ $format['#input_group'] = TRUE;
+ $format['#title_display'] = 'prefix';
return $element;
}
@@ -151,6 +146,7 @@ function radix_form_element($variables) {
$element = &$variables['element'];
$is_checkbox = FALSE;
$is_radio = FALSE;
+ $is_input_group = FALSE;
// This is also used in the installer, pre-database setup.
$t = get_t();
@@ -201,6 +197,12 @@ function radix_form_element($variables) {
}
}
+ // Recognize non-standard #input_group key to use a Bootstrap input group.
+ if (!empty($element['#input_group'])) {
+ $attributes['class'][] = 'input-group';
+ $is_input_group = TRUE;
+ }
+
// Add a class for disabled elements to facilitate cross-browser styling.
if (!empty($element['#attributes']['disabled'])) {
$attributes['class'][] = 'form-disabled';
@@ -211,8 +213,32 @@ function radix_form_element($variables) {
if (!isset($element['#title'])) {
$element['#title_display'] = 'none';
}
- $prefix = isset($element['#field_prefix']) ? '' . $element['#field_prefix'] . ' ' : '';
- $suffix = isset($element['#field_suffix']) ? ' ' . $element['#field_suffix'] . '' : '';
+
+ // Support for non-standard #title_display options.
+ if ($element['#title_display'] == 'prefix') {
+ if (empty($element['#field_prefix'])) {
+ $element['#field_prefix'] = '';
+ }
+ $element['#field_prefix'] = theme('form_element_label', $variables) . $element['#field_prefix'];
+ $element['#title_display'] = 'none';
+ }
+ elseif ($element['#title_display'] == 'suffix') {
+ if (empty($element['#field_suffix'])) {
+ $element['#field_suffix'] = '';
+ }
+ $element['#field_suffix'] .= theme('form_element_label', $variables);
+ $element['#title_display'] = 'none';
+ }
+
+ // Generate the prefix and suffix.
+ if ($is_input_group) {
+ $prefix = isset($element['#field_prefix']) ? theme('radix_input_group_addon', array('content' => $element['#field_prefix'])) . ' ' : '';
+ $suffix = isset($element['#field_suffix']) ? ' ' . theme('radix_input_group_addon', array('content' => $element['#field_suffix'])) : '';
+ }
+ else {
+ $prefix = isset($element['#field_prefix']) ? '' . $element['#field_prefix'] . ' ' : '';
+ $suffix = isset($element['#field_suffix']) ? ' ' . $element['#field_suffix'] . '' : '';
+ }
switch ($element['#title_display']) {
case 'invisible':
diff --git a/includes/theme.inc b/includes/theme.inc
index 0942e9c..430df08 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -68,10 +68,6 @@ function radix_theme(&$existing, $type, $theme, $path) {
),
'function' => 'theme_radix_icon',
),
- 'radix_input_group' => array(
- 'render element' => 'element',
- 'function' => 'theme_radix_input_group',
- ),
'radix_input_group_addon' => array(
'variables' => array(
'content' => NULL,
@@ -395,48 +391,6 @@ function theme_radix_icon($variables) {
}
/**
- * Implements template_preprocess_input_group().
- */
-function radix_preprocess_radix_input_group(&$variables) {
- $element = &$variables['element'];
-
- // Add element #id for #type 'item'.
- if (isset($element['#markup']) && !empty($element['#id'])) {
- $attributes['id'] = $element['#id'];
- }
- // Add element's #type and #name as class to aid with JS/CSS selectors.
- $attributes['class'] = array('form-item');
- if (!empty($element['#type'])) {
- $attributes['class'][] = 'form-type-' . strtr($element['#type'], '_', '-');
- }
- if (!empty($element['#name'])) {
- $attributes['class'][] = 'form-item-' . strtr($element['#name'], array(' ' => '-', '_' => '-', '[' => '-', ']' => ''));
- }
- // Add a class for disabled elements to facilitate cross-browser styling.
- if (!empty($element['#attributes']['disabled'])) {
- $attributes['class'][] = 'form-disabled';
- }
- // Add error class.
- if (isset($element['#parents']) && form_get_error($element) !== NULL && !empty($element['#validated'])) {
- $attributes['class'][] = 'has-error';
- }
- // Add the essential input-group class.
- $attributes['class'][] = 'input-group';
-
- $variables['attributes'] = $attributes;
-
- // This function is invoked as theme wrapper, but the rendered form element
- // may not necessarily have been processed by form_builder().
- $element += array(
- '#title_display' => 'before',
- );
- // If #title is not set, we don't display any label or required marker.
- if (!isset($element['#title'])) {
- $element['#title_display'] = 'none';
- }
-}
-
-/**
* Implements theme_input_group().
*/
function theme_radix_input_group($variables) {