diff --git a/ui_patterns_settings.info.yml b/ui_patterns_settings.info.yml index a93111a96f264882138dfaa2f4bde5445aff68d9..31c1fd0e5a975c845cf27e34208f811080f20d73 100644 --- a/ui_patterns_settings.info.yml +++ b/ui_patterns_settings.info.yml @@ -2,7 +2,7 @@ name: UI Patterns Settings type: module description: Configure patterns with settings package: User interface -core_version_requirement: ^8 || ^9 || ^10 +core_version_requirement: ^10.2 dependencies: - ui_patterns:ui_patterns - token:token diff --git a/ui_patterns_settings.module b/ui_patterns_settings.module index 20a345838982416dce1a624bb7e9010fc40c293a..e651a8ffab9d366797abe8643dff8caec64d8c38 100644 --- a/ui_patterns_settings.module +++ b/ui_patterns_settings.module @@ -7,6 +7,7 @@ use Drupal\Component\Utility\UrlHelper; use Drupal\Core\Url; +use Drupal\field\FieldStorageConfigInterface; use Drupal\ui_patterns_settings\Plugin\PatternSettingTypeBase; use Drupal\ui_patterns_settings\Plugin\Layout\PatternSettingsLayout; use Drupal\Core\Entity\EntityTypeInterface; @@ -82,13 +83,14 @@ function ui_patterns_settings_preprocess_media_library_element(&$variables) { } } + /** - * Implements hook_form_field_storage_config_edit_form_alter(). + * Implements hook_form_FORM_ID_alter() for 'field_config_edit_form'. */ -function ui_patterns_settings_form_field_storage_config_edit_form_alter(&$form, FormStateInterface $form_state) { +function ui_patterns_settings_form_field_config_edit_form_alter(&$form, FormStateInterface $form_state): void { /** @var \Drupal\field\Entity\FieldStorageConfig $entity */ - $entity = $form_state->getFormObject()->getEntity(); - array_unshift($form['actions']['submit']['#submit'], 'ui_patterns_settings_form_field_storage_config_edit_form_submit'); + $entity = $form_state->getFormObject()->getEntity()->getFieldStorageDefinition(); + array_unshift($form['actions']['submit']['#submit'], 'ui_patterns_settings_form_field_config_edit_form_submit'); $definitions = UiPatterns::getPatternDefinitions(); $settings_options = []; @@ -98,22 +100,24 @@ function ui_patterns_settings_form_field_storage_config_edit_form_alter(&$form, $settings_options[$key] = $info['label']; } } + if (count($settings_options) > 0) { + $parent = &$form['field_storage']['subform']; $mapping = UiPatternsSettings::getConfigManager()->getMapping($entity->id()); - $form['settings']['use_pattern'] = [ + $parent['settings']['use_pattern'] = [ '#type' => 'checkbox', '#title' => t('Expose pattern setting'), '#default_value' => $mapping !== NULL, '#description' => '', ]; - $form['settings']['pattern_setting'] = [ + $parent['settings']['pattern_setting'] = [ '#type' => 'select', '#options' => $settings_options, '#title' => 'Pattern Setting', '#states' => [ 'invisible' => [ - ':input[name="settings[use_pattern]"]' => ['checked' => FALSE], + ':input[name$="[use_pattern]"]' => ['checked' => FALSE], ], ], '#default_value' => $mapping, @@ -122,12 +126,12 @@ function ui_patterns_settings_form_field_storage_config_edit_form_alter(&$form, } /** - * Implements hook_form_field_storage_config_edit_form_submit(). + * Form submit callback. */ -function ui_patterns_settings_form_field_storage_config_edit_form_submit(array $form, FormStateInterface $form_state) { - $settings = $form_state->getValue('settings'); - /** @var \Drupal\field\Entity\FieldStorageConfig $entity */ - $entity = $form_state->getFormObject()->getEntity(); +function ui_patterns_settings_form_field_config_edit_form_submit(array $form, FormStateInterface $form_state) { + $settings = $form_state->getValue(['field_storage', 'subform', 'settings']); + $entity = $form_state->getFormObject()->getEntity()->getFieldStorageDefinition(); + \assert($entity instanceof FieldStorageConfigInterface); if (isset($settings['use_pattern']) && $settings['use_pattern'] === 1) { UiPatternsSettings::getConfigManager()->addMapping($entity->id(), $settings['pattern_setting']);