You are here

function formfilter_ui_add_selectors in Formfilter 7

Forms API pre render callback to add selectors to a form for the user to select which elements to filter.

1 string reference to 'formfilter_ui_add_selectors'
formfilter_ui_form_alter in formfilter_ui/formfilter_ui.module
Implements hook_form_alter().

File

formfilter_ui/formfilter_ui.module, line 221
Provide a UI for modification of the fields presented in any form in your installation without resorting to hook_form_alter() or a custom theme.

Code

function formfilter_ui_add_selectors($form, $filters = NULL, $keys = array()) {
  if (!$form['#formfilter_ui_processed']) {
    if (is_null($filters) && isset($form['form_id'])) {
      $filters = variable_get('formfilter', array());
      $form_id = $form['form_id']['#value'];
      $filters = array_key_exists($form_id, $filters) ? $filters[$form_id] : NULL;
    }
    foreach (element_children($form) as $key) {
      $keys[] = $key;

      // Prevent validation errors when form is submitted.
      unset($form[$key]['#required']);
      if (isset($form[$key]['#type']) && in_array($form[$key]['#type'], formfilter_supported_types())) {
        $form[$key]['#suffix'] .= '<div>' . t('Hide %title:', array(
          '%title' => isset($form[$key]['#title']) ? $form[$key]['#title'] : $key,
        )) . ' <input type="checkbox" name="edit[formfilter][' . implode('|', $keys) . ']" value="1"' . ($filters && $filters[implode('|', $keys)] ? ' checked="checked" ' : ' ') . '/></div>';
      }
      $form[$key] = formfilter_ui_add_selectors($form[$key], $filters, $keys);
      unset($keys[array_search($key, $keys)]);
    }
    $form['#formfilter_ui_processed'] = TRUE;
  }
  return $form;
}