You are here

function _gutenberg_node_type_form_submit in Gutenberg 8

Same name and namespace in other branches
  1. 8.2 gutenberg.module \_gutenberg_node_type_form_submit()

Alters the node form submit.

Parameters

array $form: The form definition array.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

1 string reference to '_gutenberg_node_type_form_submit'
gutenberg_form_alter in ./gutenberg.module
Implements hook_form_alter().

File

./gutenberg.module, line 220
Provides integration with the Gutenberg editor.

Code

function _gutenberg_node_type_form_submit(array $form, FormStateInterface $form_state) {
  $gutenberg_enabled = $form_state
    ->getValue('enable_gutenberg_experience');
  $template = $form_state
    ->getValue('gutenberg_template');
  $template_lock = $form_state
    ->getValue('gutenberg_template_lock');
  $config = \Drupal::service('config.factory')
    ->getEditable('gutenberg.settings');
  $config
    ->set($form_state
    ->getValue('type') . '_enable_full', $gutenberg_enabled)
    ->save();
  if (!$gutenberg_enabled) {
    $config
      ->clear($form_state
      ->getValue('type') . '_allowed_blocks')
      ->save();
    $config
      ->clear($form_state
      ->getValue('type') . '_allowed_drupal_blocks')
      ->save();
    $config
      ->clear($form_state
      ->getValue('type') . '_gutenberg_template')
      ->save();
    $config
      ->clear($form_state
      ->getValue('type') . '_gutenberg_template_lock')
      ->save();
    return;
  }

  // Save template settings.
  $config
    ->set($form_state
    ->getValue('type') . '_template', $template)
    ->save();
  $config
    ->set($form_state
    ->getValue('type') . '_template_lock', $template_lock)
    ->save();

  // Save Gutenberg core blocks settings.
  $categories = explode(' ', $form_state
    ->getValue('categories'));
  $values = [];
  foreach ($categories as $category) {
    $values = array_merge($values, $form_state
      ->getValue('allowed_blocks_' . $category));
  }
  $config
    ->set($form_state
    ->getValue('type') . '_allowed_blocks', $values)
    ->save();

  // Save Drupal blocks settings.
  $categories = explode(' ', $form_state
    ->getValue('categories_drupal'));
  $values = [];
  foreach ($categories as $category) {
    $values = array_merge($values, $form_state
      ->getValue('allowed_drupal_blocks_' . $category));
  }
  $config
    ->set($form_state
    ->getValue('type') . '_allowed_drupal_blocks', $values)
    ->save();
}