Commit c9d85713 authored by Volodymyr Mostepaniuk's avatar Volodymyr Mostepaniuk
Browse files

Issue #3295753 by mostepaniukvm: Save ce builder activation in view display third-party settings.

parent f67bee0b
Loading
Loading
Loading
Loading
+24 −6
Original line number Diff line number Diff line
@@ -29,11 +29,13 @@ function custom_elements_ui_entity_type_alter(array &$entity_types) {
/**
* Implements hook_form_FORM_ID_alter() for \Drupal\field_ui\Form\EntityFormDisplayEditForm.
*/
function custom_elements_ui_form_entity_form_display_edit_form_alter(&$form, FormStateInterface $form_state) {
function custom_elements_ui_form_entity_view_display_edit_form_alter(&$form, FormStateInterface $form_state) {
  /** @var \Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm $display_form */
  $display_form = $form_state->getFormObject();
  /** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display_entity */
  $display_entity = $display_form->getEntity();
  $is_enabled = $display_entity->getThirdPartySetting('ce', 'enabled');

  // @todo Get value from config.
  //  $is_enabled = $this->third_party_settings[$module][$key];
  $is_enabled = FALSE;
  if ($is_enabled) {
    // Hide the table of fields.
    $form['fields']['#access'] = FALSE;
@@ -51,18 +53,34 @@ function custom_elements_ui_form_entity_form_display_edit_form_alter(&$form, For
    '#access' => $is_enabled,
  ];

  $form['layout'] = [
  $form['ce'] = [
    '#type' => 'details',
    '#open' => TRUE,
    '#title' => t('Custom Elements'),
    '#tree' => TRUE,
  ];

  $form['layout']['enabled'] = [
  $form['ce']['enabled'] = [
    '#type' => 'checkbox',
    '#title' => t('Use Custom Elements Builder'),
    // @todo What about "Custom Elements Builder" naming?
    '#default_value' => $is_enabled,
  ];

  $form['actions']['submit']['#submit'][] = '_custom_elements_ui_entity_view_display_edit_form_submit';
}

/**
 * Form submission handler for entity_view_display_edit_form.
 *
 * @see custom_elements_ui_form_entity_view_display_edit_form_alter()
 */
function _custom_elements_ui_entity_view_display_edit_form_submit($form, FormStateInterface $form_state) {
  $set_enabled = (bool) $form_state->getValue(['ce', 'enabled'], FALSE);
  /** @var \Drupal\Core\Entity\EntityFormInterface $display_form */
  $display_form = $form_state->getFormObject();
  /** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display_entity */
  $display_entity = $display_form->getEntity();
  $display_entity->setThirdPartySetting('ce', 'enabled', $set_enabled);
  $display_entity->save();
}