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) {