You are here

protected function TFTController::add_content_links in Taxonomy File Tree 8

Same name and namespace in other branches
  1. 3.x src/Controller/TFTController.php \Drupal\tft\Controller\TFTController::add_content_links()

Render the add file and add folder links.

1 call to TFTController::add_content_links()
TFTController::content_table in src/Controller/TFTController.php
Get the folder content in HTML table form.

File

src/Controller/TFTController.php, line 237

Class

TFTController
Class TFTController.

Namespace

Drupal\tft\Controller

Code

protected function add_content_links($tid = 0, $gid = NULL) {
  $items = [];
  $tempstore = \Drupal::service('user.private_tempstore')
    ->get('tft');
  $add_file_query = [
    'destination' => $tempstore
      ->get('q'),
  ];
  $add_term_query = [
    'destination' => $tempstore
      ->get('q'),
  ];

  // Do we have a tid ?
  if ($tid) {
    $add_file_query['tid'] = $tid;
    $add_term_query['parent'] = $tid;
    if (!$gid) {
      $gid = _tft_get_group_gid($tid);
    }
  }
  $group = Group::load($gid);
  $user = $this
    ->currentUser();

  // Can the user create files ?
  if ($user
    ->hasPermission('create media')) {

    // Can they add files in this context ?
    if ($user
      ->hasPermission(TFT_ADD_FILE) || $group && $group
      ->hasPermission(TFT_ADD_FILE, $user)) {
      $query = UrlHelper::buildQuery(array_reverse($add_file_query));
      $items[] = [
        '#wrapper_attributes' => [
          'class' => 'folder-add-content-link',
        ],
        '#type' => 'link',
        '#title' => $this
          ->t("Add a file"),
        '#url' => Url::fromUri("internal:/media/add/tft_file?{$query}"),
        '#attributes' => [
          'id' => 'add-child-file',
        ],
      ];
    }
  }

  // Can the user add terms anywhere, only under Group or never ?
  if ($user
    ->hasPermission(TFT_ADD_TERMS) || $group && $group
    ->hasPermission(TFT_ADD_TERMS, $user)) {
    $query = UrlHelper::buildQuery(array_reverse($add_term_query));
    $items[] = [
      '#wrapper_attributes' => [
        'class' => 'folder-add-content-link',
      ],
      '#type' => 'link',
      '#title' => $this
        ->t("Add a folder"),
      '#url' => Url::fromUri("internal:/tft/term/add?{$query}"),
      '#attributes' => [
        'id' => 'add-child-folder',
      ],
    ];
  }
  return [
    '#theme' => 'item_list',
    '#list_type' => 'ul',
    '#attributes' => [
      'id' => 'folder-add-content-links',
    ],
    '#items' => $items,
  ];
}