You are here

public function Overview::buildForm in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/forum/src/Form/Overview.php \Drupal\forum\Form\Overview::buildForm()

Form constructor.

Display a tree of all the terms in a vocabulary, with options to edit each one. The form is made drag and drop by the theme function.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

\Drupal\taxonomy\VocabularyInterface $taxonomy_vocabulary: The vocabulary to display the overview form for.

Return value

array The form structure.

Overrides OverviewTerms::buildForm

File

core/modules/forum/src/Form/Overview.php, line 53
Contains \Drupal\forum\Form\Overview.

Class

Overview

Namespace

Drupal\forum\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $forum_config = $this
    ->config('forum.settings');
  $vid = $forum_config
    ->get('vocabulary');
  $vocabulary = $this->entityManager
    ->getStorage('taxonomy_vocabulary')
    ->load($vid);
  if (!$vocabulary) {
    throw new NotFoundHttpException();
  }

  // Build base taxonomy term overview.
  $form = parent::buildForm($form, $form_state, $vocabulary);
  foreach (Element::children($form['terms']) as $key) {
    if (isset($form['terms'][$key]['#term'])) {
      $term = $form['terms'][$key]['#term'];
      $form['terms'][$key]['term']['#url'] = Url::fromRoute('forum.page', [
        'taxonomy_term' => $term
          ->id(),
      ]);
      unset($form['terms'][$key]['operations']['#links']['delete']);
      $route_parameters = $form['terms'][$key]['operations']['#links']['edit']['url']
        ->getRouteParameters();
      if (!empty($term->forum_container->value)) {
        $form['terms'][$key]['operations']['#links']['edit']['title'] = $this
          ->t('edit container');
        $form['terms'][$key]['operations']['#links']['edit']['url'] = Url::fromRoute('entity.taxonomy_term.forum_edit_container_form', $route_parameters);
      }
      else {
        $form['terms'][$key]['operations']['#links']['edit']['title'] = $this
          ->t('edit forum');
        $form['terms'][$key]['operations']['#links']['edit']['url'] = Url::fromRoute('entity.taxonomy_term.forum_edit_form', $route_parameters);
      }

      // We don't want the redirect from the link so we can redirect the
      // delete action.
      unset($form['terms'][$key]['operations']['#links']['edit']['query']['destination']);
    }
  }

  // Remove the alphabetical reset.
  unset($form['actions']['reset_alphabetical']);

  // Use the existing taxonomy overview submit handler.
  $form['terms']['#empty'] = $this
    ->t('No containers or forums available. <a href=":container">Add container</a> or <a href=":forum">Add forum</a>.', array(
    ':container' => $this
      ->url('forum.add_container'),
    ':forum' => $this
      ->url('forum.add_forum'),
  ));
  return $form;
}