public function setUp() { $this->account = $this->prophesize(AccountInterface::class); $this->contextHandler = $this->prophesize(ContextHandlerInterface::class); $this->uuidGenerator = $this->prophesize(UuidInterface::class); $this->token = $this->prophesize(Token::class); $this->builderManager = $this->prophesize(DisplayBuilderManagerInterface::class); $this->layoutManager = $this->prophesize(LayoutPluginManagerInterface::class); $this->layout = $this->prophesize(LayoutInterface::class); $this->layoutManager->createInstance(Argument::type('string'), Argument::type('array'))->willReturn($this->layout->reveal()); $this->variant = new PanelsDisplayVariant([], '', [], $this->contextHandler->reveal(), $this->account->reveal(), $this->uuidGenerator->reveal(), $this->token->reveal(), $this->builderManager->reveal(), $this->layoutManager->reveal()); }
/** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { // Don't call VariantBase::buildConfigurationForm() on purpose, because it // adds a 'Label' field that we don't actually want to use - we store the // label on the page variant entity. //$form = parent::buildConfigurationForm($form, $form_state); // Allow to configure the page title, even when adding a new display. // Default to the page label in that case. $form['page_title'] = ['#type' => 'textfield', '#title' => $this->t('Page title'), '#description' => $this->t('Configure the page title that will be used for this display.'), '#default_value' => $this->configuration['page_title'] ?: '']; if (empty($this->configuration['builder'])) { $plugins = $this->builderManager->getDefinitions(); $options = array(); foreach ($plugins as $id => $plugin) { $options[$id] = $plugin['label']; } // Only allow the IPE if the storage information is set. if (!$this->getStorageType()) { unset($options['ipe']); } $form['builder'] = ['#title' => $this->t('Builder'), '#type' => 'select', '#options' => $options, '#default_value' => 'standard']; } $form['layout'] = ['#title' => $this->t('Layout'), '#type' => 'select', '#options' => Layout::getLayoutOptions(['group_by_category' => TRUE]), '#default_value' => $this->configuration['layout'] ?: NULL]; if (!empty($this->configuration['layout'])) { $form['layout']['#ajax'] = ['callback' => [$this, 'layoutSettingsAjaxCallback'], 'wrapper' => 'layout-settings-wrapper', 'effect' => 'fade']; // If a layout is already selected, show the layout settings. $form['layout_settings_wrapper'] = ['#type' => 'fieldset', '#title' => $this->t('Layout settings'), '#prefix' => '<div id="layout-settings-wrapper">', '#suffix' => '</div>']; $form['layout_settings_wrapper']['layout_settings'] = []; // Process callback to configure #parents correctly on settings, since // we don't know where in the form hierarchy our settings appear. $form['#process'][] = [$this, 'layoutSettingsProcessCallback']; } return $form; }
/** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form = parent::buildConfigurationForm($form, $form_state); // Allow to configure the page title, even when adding a new display. // Default to the page label in that case. $form['page_title'] = ['#type' => 'textfield', '#title' => $this->t('Page title'), '#description' => $this->t('Configure the page title that will be used for this display.'), '#default_value' => $this->configuration['page_title'] ?: '']; if (empty($this->configuration['builder'])) { $plugins = $this->builderManager->getDefinitions(); $options = array(); foreach ($plugins as $id => $plugin) { $options[$id] = $plugin['label']; } $form['builder'] = ['#title' => $this->t('Builder'), '#type' => 'select', '#options' => $options, '#default_value' => 'standard']; } if (empty($this->configuration['layout'])) { $form['layout'] = ['#title' => $this->t('Layout'), '#type' => 'select', '#options' => Layout::getLayoutOptions(['group_by_category' => TRUE]), '#default_value' => NULL]; } else { $form['layout'] = ['#type' => 'value', '#value' => $this->configuration['layout']]; // If a layout is already selected, show the layout settings. $form['layout_settings_wrapper'] = ['#type' => 'fieldset', '#title' => $this->t('Layout settings')]; $form['layout_settings_wrapper']['layout_settings'] = []; // Get settings form from layout plugin. $layout = $this->layoutManager->createInstance($this->configuration['layout'], $this->configuration['layout_settings'] ?: []); $form['layout_settings_wrapper']['layout_settings'] = $layout->buildConfigurationForm($form['layout_settings_wrapper']['layout_settings'], $form_state); // Process callback to configure #parents correctly on settings, since // we don't know where in the form hierarchy our settings appear. $form['#process'][] = [$this, 'layoutSettingsProcessCallback']; } return $form; }