function forum_form_node_form_alter

Same name and namespace in other branches
  1. 7.x modules/forum/forum.module \forum_form_node_form_alter()
  2. 9 core/modules/forum/forum.module \forum_form_node_form_alter()
  3. 8.9.x core/modules/forum/forum.module \forum_form_node_form_alter()
  4. 10 core/modules/forum/forum.module \forum_form_node_form_alter()

Implements hook_form_BASE_FORM_ID_alter() for \Drupal\node\NodeForm.

File

core/modules/forum/forum.module, line 336

Code

function forum_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
    $node = $form_state->getFormObject()
        ->getEntity();
    if (isset($node->taxonomy_forums) && !$node->isNew()) {
        $forum_terms = $node->taxonomy_forums;
        // If editing, give option to leave shadows.
        $shadow = count($forum_terms) > 1;
        $form['shadow'] = [
            '#type' => 'checkbox',
            '#title' => t('Leave shadow copy'),
            '#default_value' => $shadow,
            '#description' => t('If you move this topic, you can leave a link in the old forum to the new forum.'),
        ];
        $form['forum_tid'] = [
            '#type' => 'value',
            '#value' => $node->forum_tid,
        ];
    }
    if (isset($form['taxonomy_forums'])) {
        $widget =& $form['taxonomy_forums']['widget'];
        $widget['#multiple'] = FALSE;
        if (empty($widget['#default_value'])) {
            // If there is no default forum already selected, try to get the forum
            // ID from the URL (e.g., if we are on a page like node/add/forum/2, we
            // expect "2" to be the ID of the forum that was requested).
            $requested_forum_id = \Drupal::request()->query
                ->get('forum_id');
            $widget['#default_value'] = is_numeric($requested_forum_id) ? $requested_forum_id : '';
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.