You are here

function compact_forms_pre_render in Compact Forms 7

#pre_render callback for all forms.

@todo Replace with #attached and move back into hook_form_alter().

1 string reference to 'compact_forms_pre_render'
compact_forms_form_alter in ./compact_forms.module
Implements hook_form_alter().

File

./compact_forms.module, line 57
Compact Forms Drupal module.

Code

function compact_forms_pre_render($form) {
  static $css_ids, $form_ids, $loaded, $field_size, $descriptions;

  // Prepare CSS form ids.
  if (!isset($css_ids)) {
    $css_ids = explode("\n", variable_get('compact_forms_ids', 'user-login-form'));
    $css_ids = array_filter(array_map('trim', $css_ids));
  }

  // Prepare Form API form ids.
  if (!isset($form_ids) && !empty($css_ids)) {
    $form_ids = array();
    foreach ($css_ids as $id) {
      $form_ids[] = strtr($id, array(
        '-' => '_',
      ));
    }
  }

  // Prepare form alteration settings.
  if (!isset($field_size)) {
    $field_size = variable_get('compact_forms_field_size', '');
    $descriptions = variable_get('compact_forms_descriptions', 1);
  }
  if (in_array($form['form_id']['#value'], $form_ids) || isset($form['#id']) && in_array($form['#id'], $css_ids)) {

    // If the custom #compact_forms property has been programmatically set to
    // FALSE, do not process this form.
    if (isset($form['#compact_forms']) && !$form['#compact_forms']) {

      // Also remove it from the CSS IDs being added as JS settings.
      foreach ($css_ids as $key => $value) {
        if ($value == $form['#id']) {
          unset($css_ids[$key]);
        }
      }
      return;
    }

    // Load our page requisites and JavaScript settings.
    if (!isset($loaded)) {
      _compact_forms_include_js($css_ids);
      $loaded = TRUE;
    }

    // Only alter the form if a custom field size is configured or form element
    // descriptions shall be hidden.
    if (!empty($field_size) || !$descriptions) {
      _compact_forms_resize_fields($form, $field_size, $descriptions);
    }
  }
  return $form;
}