diff --git a/src/Panelizer.php b/src/Panelizer.php index 864191d..1a8c964 100644 --- a/src/Panelizer.php +++ b/src/Panelizer.php @@ -147,7 +147,7 @@ class Panelizer implements PanelizerInterface { * @return \Drupal\Core\Entity\Display\EntityViewDisplayInterface|NULL * The entity view display if one exists; NULL otherwise. */ - protected function getEntityViewDisplay($entity_type_id, $bundle, $view_mode) { + public function getEntityViewDisplay($entity_type_id, $bundle, $view_mode) { // Check the existence and status of: // - the display for the view mode, // - the 'default' display. @@ -564,4 +564,4 @@ class Panelizer implements PanelizerInterface { return $this->hasOperationPermission($op, $entity_type_id, $bundle, $account); } -} \ No newline at end of file +} diff --git a/src/Wizard/PanelizerWizard.php b/src/Wizard/PanelizerWizard.php index fc7ace2..0c6cd54 100644 --- a/src/Wizard/PanelizerWizard.php +++ b/src/Wizard/PanelizerWizard.php @@ -99,6 +99,22 @@ class PanelizerWizard extends FormWizardBase { */ public function finish(array &$form, FormStateInterface $form_state) { $cached_values = $form_state->getTemporaryValue('wizard'); + + // Save the wizard data into the Panelizer settings for this display mode. + $panelizer = \Drupal::service('panelizer'); + $panelizer_entity_manager = \Drupal::service('plugin.manager.panelizer_entity'); + $panels_display_manager = \Drupal::service('panels.display_manager'); + list($entity_type, $bundle, $display_id) = explode('__', $cached_values['id']); + $display = $panelizer->getEntityViewDisplay($entity_type, $bundle, $display_id); + $settings = $panelizer->getPanelizerSettings($entity_type, $bundle, $display_id); + $settings['enable'] = TRUE; + /** @var \Drupal\panelizer\Plugin\PanelizerEntityInterface $panelizer_entity_plugin */ + $panelizer_entity_plugin = $panelizer_entity_manager->createInstance($display->getTargetEntityTypeId(), []); + $displays = $display->getThirdPartySetting('panelizer', 'displays', []); + $displays[$display_id] = $panels_display_manager->exportDisplay($cached_values['plugin']); + $display->setThirdPartySetting('panelizer', 'displays', $displays); + $panelizer->setPanelizerSettings($entity_type, $bundle, $display_id, $settings, $display); + parent::finish($form, $form_state); }