You are here

function theme_filetree in File Tree 7

Same name and namespace in other branches
  1. 6.2 filetree.module \theme_filetree()
  2. 6 filetree.module \theme_filetree()
  3. 7.2 filetree.module \theme_filetree()

Renders filetree.

1 theme call to theme_filetree()
_filetree_process in ./filetree.module
Implements hook_filter_FILTER_process().

File

./filetree.module, line 313

Code

function theme_filetree($variables) {
  $files = $variables['files'];
  $params = $variables['params'];
  $output = '';

  // Render controls (but only if multiple folders is enabled, and only if
  // there is at least one folder to expand/collapse).
  if ($params['multi'] and $params['controls']) {
    $has_folder = FALSE;
    foreach ($files as $file) {
      if (isset($file['children'])) {
        $has_folder = TRUE;
        break;
      }
    }
    if ($has_folder) {
      $controls = array(
        '<a href="#" class="expand">' . t('expand all') . '</a>',
        '<a href="#" class="collapse">' . t('collapse all') . '</a>',
      );
      $output .= theme('item_list', array(
        'items' => $controls,
        'title' => NULL,
        'type' => 'ul',
        'attributes' => array(
          'class' => 'controls',
        ),
      ));
    }
  }

  // Render files.
  $output .= theme('item_list', array(
    'items' => $files,
    'title' => NULL,
    'type' => 'ul',
    'attributes' => array(
      'class' => 'files',
    ),
  ));

  // Generate classes and unique ID for wrapper div.
  $id = drupal_clean_css_identifier(uniqid('filetree-'));
  $classes = array(
    'filetree',
  );
  if ($params['multi']) {
    $classes[] = 'multi';
  }
  return '<div id="' . $id . '" class="' . implode(' ', $classes) . '">' . $output . '</div>';
}