You are here

function theme_select_as_checkboxes_details in Better Exposed Filters 8.3

Themes a select element as checkboxes enclosed in a details element.

Parameters

array $vars: An array of arrays, the 'element' item holds the properties of the element

Return value

string HTML representing the form element.

File

./better_exposed_filters.theme, line 18
Provides theming functions to display exposed forms using different interfaces.

Code

function theme_select_as_checkboxes_details($vars) {

  // Merge incoming element with some default values. Prevents a lot of this.
  // $foo = isset($bar) ? $bar : $bar_default;
  $element = array_merge(array(
    '#bef_title' => '',
    '#bef_description' => '',
    '#bef_operator' => array(),
  ), $vars['element']);
  $details = array(
    '#title' => $element['#bef_title'],
    '#description' => $element['#bef_description'],
    '#attributes' => array(
      'class' => array(
        'bef-select-as-checkboxes-details',
      ),
    ),
  );
  if (empty($element['#value'])) {

    // Using the FAPI #collapsible and #collapsed attribute doesn't work here
    // TODO: not sure why...
    $details['#attributes']['class'][] = 'collapsed';
  }

  // We rendered the description as part of the details element, don't render
  // it again along with the checkboxes.
  unset($element['#bef_description']);
  $children = '';
  if (!empty($element['#bef_operator'])) {

    // Put an exposed operator inside the details element.
    $children = drupal_render($element['#bef_operator']);
  }

  // Render the checkboxes.
  // @TODO: Render in a template
  $children .= theme('select_as_checkboxes', array(
    'element' => $element,
  ));
  $details['#children'] = $children;

  // @TODO: Render in a template
  return theme('fieldset', array(
    'element' => $details,
  ));
}