You are here

function domain_access_form_node_form_alter in Domain Access 8

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

Move Domain Access fields to an advanced tab like other node settings.

File

domain_access/domain_access.module, line 251
Domain-based access control for content.

Code

function domain_access_form_node_form_alter(&$form, FormState $form_state, $form_id) {
  $move_enabled = \Drupal::config('domain_access.settings')
    ->get('node_advanced_tab');
  if ($move_enabled && isset($form[DomainAccessManagerInterface::DOMAIN_ACCESS_FIELD]) && isset($form[DomainAccessManagerInterface::DOMAIN_ACCESS_ALL_FIELD]) && empty($form[DomainAccessManagerInterface::DOMAIN_ACCESS_FIELD]['#group']) && empty($form[DomainAccessManagerInterface::DOMAIN_ACCESS_ALL_FIELD]['#group'])) {

    // Move to the tabs on the entity form.
    $form[DomainAccessManagerInterface::DOMAIN_ACCESS_FIELD]['#group'] = 'domain';
    $form[DomainAccessManagerInterface::DOMAIN_ACCESS_ALL_FIELD]['#group'] = 'domain';
    $form['domain'] = [
      '#type' => 'details',
      '#open' => (bool) \Drupal::config('domain_access.settings')
        ->get('node_advanced_tab_open'),
      '#title' => t('Domain settings'),
      '#group' => 'advanced',
      '#attributes' => [
        'class' => [
          'node-form-options',
        ],
      ],
      '#attached' => [
        'library' => [
          'node/drupal.node',
        ],
      ],
      '#weight' => 100,
      '#optional' => TRUE,
    ];
  }

  // Add the options hidden from the user silently to the form.
  $manager = \Drupal::service('domain.element_manager');
  $form = $manager
    ->setFormOptions($form, $form_state, DomainAccessManagerInterface::DOMAIN_ACCESS_FIELD);
}