/** * Form constructor. * * @param array $form * An associative array containing the structure of the form. * @param \Drupal\Core\Form\FormStateInterface $form_state * The current state of the form. * @param \Drupal\Core\Entity\EntityInterface $node * The node being previews * * @return array * The form structure. */ public function buildForm(array $form, FormStateInterface $form_state, EntityInterface $node = NULL) { $view_mode = $node->preview_view_mode; $query_options = $node->isNew() ? array('query' => array('uuid' => $node->uuid())) : array(); $form['backlink'] = array('#type' => 'link', '#title' => $this->t('Back to content editing'), '#url' => $node->isNew() ? Url::fromRoute('node.add', ['node_type' => $node->bundle()]) : $node->urlInfo('edit-form'), '#options' => array('attributes' => array('class' => array('node-preview-backlink'))) + $query_options); $view_mode_options = $this->entityManager->getViewModeOptionsByBundle('node', $node->bundle()); // Unset view modes that are not used in the front end. unset($view_mode_options['rss']); unset($view_mode_options['search_index']); $form['uuid'] = array('#type' => 'value', '#value' => $node->uuid()); $form['view_mode'] = array('#type' => 'select', '#title' => $this->t('View mode'), '#options' => $view_mode_options, '#default_value' => $view_mode, '#attributes' => array('data-drupal-autosubmit' => TRUE)); $form['submit'] = array('#type' => 'submit', '#value' => $this->t('Switch'), '#attributes' => array('class' => array('js-hide'))); return $form; }
/** * Overrides \Drupal\Core\Block\BlockBase::blockForm(). * * Adds body and description fields to the block configuration form. */ public function blockForm($form, FormStateInterface $form_state) { $uuid = $this->getDerivativeId(); $block = $this->entityManager->loadEntityByUuid('block_content', $uuid); $options = $this->entityManager->getViewModeOptionsByBundle('block_content', $block->bundle()); $form['view_mode'] = array('#type' => 'select', '#options' => $options, '#title' => $this->t('View mode'), '#description' => $this->t('Output the block in this view mode.'), '#default_value' => $this->configuration['view_mode'], '#access' => count($options) > 1); $form['title']['#description'] = $this->t('The title of the block as shown to the user.'); return $form; }
/** * {@inheritdoc} */ public function getViewModeOptionsByBundle($entity_type_id, $bundle) { return $this->entityManager->getViewModeOptionsByBundle($entity_type_id, $bundle); }
/** * Provides a list of comment view modes for the configured comment type. * * @return array * Associative array keyed by view mode key and having the view mode label * as value. */ protected function getViewModes() { return $this->entityManager->getViewModeOptionsByBundle('comment', $this->getFieldSetting('comment_type')); }