layoutTempstoreRepository = $layout_tempstore_repository; $this->setMessenger($messenger); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('layout_builder.tempstore_repository'), $container->get('messenger') ); } /** * {@inheritdoc} */ public function getFormId() { return 'layout_builder_disable_form'; } /** * {@inheritdoc} */ public function getQuestion() { return $this->t('Are you sure you want to disable Layout Builder?'); } /** * {@inheritdoc} */ public function getDescription() { return $this->t('All customizations will be removed. This action cannot be undone.'); } /** * {@inheritdoc} */ public function getCancelUrl() { return $this->sectionStorage->getRedirectUrl(); } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, SectionStorageInterface $section_storage = NULL) { if (!$section_storage instanceof DefaultsSectionStorageInterface) { throw new \InvalidArgumentException(sprintf('The section storage with type "%s" and ID "%s" does not provide defaults', $section_storage->getStorageType(), $section_storage->getStorageId())); } $this->sectionStorage = $section_storage; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $this->sectionStorage->disableLayoutBuilder()->save(); $this->layoutTempstoreRepository->delete($this->sectionStorage); $this->messenger()->addMessage($this->t('Layout Builder has been disabled.')); $form_state->setRedirectUrl($this->getCancelUrl()); } }