You are here

function ctools_dependent_pre_render in Chaos Tool Suite (ctools) 7

1 string reference to 'ctools_dependent_pre_render'
ctools_dependent_element_info_alter in includes/dependent.inc
CTools alters the element_info to be able to add #process functions to every major form element to make it much more handy to use #dependency, because you don't have to add #process.

File

includes/dependent.inc, line 133
Provide dependent checkboxes that can be easily used in forms.

Code

function ctools_dependent_pre_render($element) {

  // Preprocess only items with #dependency set.
  if (isset($element['#dependency'])) {
    if (!isset($element['#dependency_count'])) {
      $element['#dependency_count'] = 1;
    }
    if (!isset($element['#dependency_type'])) {
      $element['#dependency_type'] = 'hide';
    }
    $js = array(
      'values' => $element['#dependency'],
      'num' => $element['#dependency_count'],
      'type' => $element['#dependency_type'],
    );

    // Add a additional wrapper id around fieldsets, textareas to support depedency on it.
    if (in_array($element['#type'], array(
      'textarea',
      'fieldset',
      'text_format',
    ))) {
      $element['#theme_wrappers'][] = 'container';
      $element['#attributes']['id'] = $element['#id'] . '-wrapper';
    }

    // Text formats need to unset the dependency on the textarea
    // or it gets applied twice.
    if ($element['#type'] == 'text_format') {
      unset($element['value']['#dependency']);
    }
    $element['#attached']['js'][] = ctools_attach_js('dependent');
    $options['CTools']['dependent'][$element['#id']] = $js;
    $element['#attached']['js'][] = array(
      'type' => 'setting',
      'data' => $options,
    );
  }
  return $element;
}