You are here

function _term_reference_tree_output_list_level in Taxonomy Term Reference Tree Widget 8

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

Helper function to output a single level of the term reference tree display.

1 call to _term_reference_tree_output_list_level()
theme_term_tree_list in ./term_reference_tree.module
Themes the term tree display (as opposed to the select widget).

File

./term_reference_tree.module, line 474

Code

function _term_reference_tree_output_list_level(&$element, &$tree) {
  $output = '';
  $langcode = \Drupal::languageManager()
    ->getCurrentLanguage()
    ->getId();
  if (isset($tree['children']) && is_array($tree['children']) && count($tree['children']) > 0) {
    $output = '<ul class="term">';
    foreach ($tree['children'] as &$item) {
      if (isset($item['tid'])) {
        $term = Term::load($item['tid']);
        $url = $term
          ->toUrl();
        $uri['options']['html'] = TRUE;
        $class = $item['selected'] ? 'selected' : 'unselected';
        $output .= '<li class="' . $class . '">';
        $t = NULL;
        $term_name = '';
        if (\Drupal::moduleHandler()
          ->moduleExists('locale') && !empty($term->tid)) {
          $t = $term;
          if ($t && $t
            ->hasTranslation($langcode)) {
            $term_name = $t
              ->getTranslation($langcode)
              ->label();
          }
        }
        if (empty($term_name)) {
          $term_name = $term
            ->label();
        }
        $output .= \Drupal::service('link_generator')
          ->generate($term_name, $url);
        if (isset($item['children'])) {
          $output .= _term_reference_tree_output_list_level($element, $item);
        }
        $output .= '</li>';
      }
    }
    $output .= '</ul>';
  }
  return $output;
}