You are here

function term_reference_tree_process_checkbox_tree in Taxonomy Term Reference Tree Widget 7.2

Same name and namespace in other branches
  1. 7 term_reference_tree.widget.inc \term_reference_tree_process_checkbox_tree()

Process the checkbox_tree widget.

This function processes the checkbox_tree widget.

Parameters

$element: The element to be drawn.$element['#field_name']

$form_state: The form state.

Return value

The processed element.

1 string reference to 'term_reference_tree_process_checkbox_tree'
term_reference_tree_element_info in ./term_reference_tree.module
Implements hook_element_info().

File

./term_reference_tree.widget.inc, line 271

Code

function term_reference_tree_process_checkbox_tree($element, $form_state) {
  $path = drupal_get_path('module', 'term_reference_tree');
  $defaults = array();
  $defaults['#attached']['js'] = array(
    $path . '/term_reference_tree.js',
  );
  $defaults['#attached']['css'] = array(
    $path . '/term_reference_tree.css',
  );
  $defaults['#type'] = 'checkbox_tree';
  $defaults['#max_choices'] = 1;
  $defaults['#max_depth'] = '';
  $defaults['#start_minimized'] = FALSE;
  $defaults['#leaves_only'] = FALSE;
  $defaults['#filter_view'] = '';
  $defaults['#select_parents'] = FALSE;
  $defaults['#required'] = FALSE;
  $defaults['#cascading_selection'] = FALSE;
  $defaults['#track_list'] = FALSE;
  $defaults['#parent_tid'] = '';
  $defaults['#token_display'] = FALSE;
  $defaults['#default_value'] = array();
  $defaults += array(
    '#value_key' => 'tid',
    '#element_validate' => array(),
    '#properties' => array(),
  );
  foreach ($defaults as $key => $val) {
    if (!isset($element[$key])) {
      $element[$key] = $val;
    }
  }
  dsm($element['#default_value']);
  $element['#default_value'] = _term_reference_tree_flatten_default_value($element['#default_value']);
  dsm($element['#default_value']);
  if (is_array($form_state)) {
    if (!empty($element['#max_choices']) && $element['#max_choices'] != '-1') {
      drupal_add_js(array(
        'term_reference_tree' => array(
          'trees' => array(
            $element['#id'] => array(
              'max_choices' => $element['#max_choices'],
            ),
          ),
        ),
      ), 'setting');
    }
    $allowed = '';
    if (isset($element['#filter_view']) && $element['#filter_view'] != '') {
      $allowed = _term_reference_tree_get_allowed_values($element['#filter_view']);
    }
    $value = !empty($element['#default_value']) ? $element['#default_value'] : array();
    if (empty($element['#options'])) {
      $element['#options_tree'] = _term_reference_tree_get_term_hierarchy($element['#parent_tid'], $element['#vocabulary'], $allowed, $element['#filter_view'], '', $value);
      $required = $element['#required'];
      if ($element['#max_choices'] == 1 && !$required) {
        array_unshift($element['#options_tree'], (object) array(
          'tid' => '',
          'name' => 'N/A',
          'depth' => 0,
        ));
      }
      $element['#options'] = _term_reference_tree_get_options($element['#options_tree'], $allowed, $element['#filter_view']);
    }
    $terms = !empty($element['#options_tree']) ? $element['#options_tree'] : array();
    $max_choices = !empty($element['#max_choices']) ? $element['#max_choices'] : 1;
    if (array_key_exists('#select_parents', $element) && $element['#select_parents']) {
      $element['#attributes']['class'][] = 'select-parents';
    }
    if ($max_choices != 1) {
      $element['#tree'] = TRUE;
    }
    $tree = new stdClass();
    $tree->children = $terms;
    $element[] = _term_reference_tree_build_level($element, $tree, $form_state, $value, $max_choices, array(), 1);

    //Add a track list element?
    $track_list = !empty($element['#track_list']) && $element['#track_list'];
    if ($track_list) {
      $element[] = array(
        '#type' => 'checkbox_tree_track_list',
        '#max_choices' => $max_choices,
      );
    }
  }
  return $element;
}