Skip to content
Snippets Groups Projects
Commit c8e1e48c authored by Dieter Holvoet's avatar Dieter Holvoet
Browse files

Issue #3491686 by dieterholvoet: Add config schema

parent 9c117213
No related branches found
No related tags found
1 merge request!7Clean up required_plugin_options config & add config schema
Pipeline #360282 passed
......@@ -13,6 +13,6 @@
},
"require": {
"drupal/core": "^8 || ^9 || ^10 || ^11",
"drupal/required_api": "*"
"drupal/required_api": "^3.0"
}
}
required_api.plugin_options.required_by_role:
type: sequence
label: 'Roles'
sequence:
type: string
label: 'Role'
......@@ -3,4 +3,4 @@ description: Provides checkboxes for each field to set the required property for
type: module
core_version_requirement: ^8 || ^9 || ^10 || ^11
dependencies:
- required_api:required_api
- required_api:required_api (>3.0)
<?php
/**
* @file
* Install, update and uninstall functions for the required_by_role module.
*/
use Drupal\field\Entity\FieldConfig;
/**
* Clean up the required_plugin_options.
*/
function required_by_role_update_8001(): void {
foreach (FieldConfig::loadMultiple() as $field_config) {
$third_party_settings = $field_config->getThirdPartySettings('required_api');
if (!isset($third_party_settings['required_plugin_options'])) {
continue;
}
$options = $third_party_settings['required_plugin_options'];
$options = array_filter($options);
$options = array_values($options);
$field_config->setThirdPartySetting('required_api', 'required_plugin_options', $options);
$field_config->save();
}
}
......@@ -3,6 +3,7 @@
namespace Drupal\required_by_role\Plugin\Required;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\required_api\Plugin\Required\RequiredBase;
......@@ -60,6 +61,7 @@ class RequiredByRole extends RequiredBase {
*/
public function requiredFormElement(FieldDefinitionInterface $field) {
$default_value = $field->getThirdPartySetting('required_api', 'required_plugin_options') ?: [];
$default_value = array_combine($default_value, array_fill(0, count($default_value), 1));
$options = array_map(
function ($role) {
......@@ -85,4 +87,13 @@ class RequiredByRole extends RequiredBase {
];
}
/**
* {@inheritdoc}
*/
public function submitFieldConfigForm(array &$form, FormStateInterface $form_state): void {
$parents = ['third_party_settings', 'required_api', 'required_plugin_options'];
$options = $form_state->getValue($parents);
$form_state->setValue($parents, array_keys(array_filter($options)));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment