Skip to content
Snippets Groups Projects

Issue #3269521: The 'Prevent this field from being overwritten' option does not work

1 file
+ 26
9
Compare changes
  • Side-by-side
  • Inline
+ 26
9
@@ -5,6 +5,7 @@
@@ -5,6 +5,7 @@
* Contains migrate_override.module.
* Contains migrate_override.module.
*/
*/
 
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\migrate_override\OverrideManagerServiceInterface;
use Drupal\migrate_override\OverrideManagerServiceInterface;
@@ -46,7 +47,8 @@ function migrate_override_field_widget_multivalue_form_alter(array &$elements, F
@@ -46,7 +47,8 @@ function migrate_override_field_widget_multivalue_form_alter(array &$elements, F
if (!$manager->entityBundleEnabled($entity)) {
if (!$manager->entityBundleEnabled($entity)) {
return;
return;
}
}
if ($manager->entityFieldInstanceSetting($entity, $field) === OverrideManagerServiceInterface::FIELD_IGNORED) {
$setting = $manager->entityFieldInstanceSetting($entity, $field);
 
if ($setting === OverrideManagerServiceInterface::FIELD_IGNORED) {
return;
return;
}
}
$type = $entity->getEntityTypeId();
$type = $entity->getEntityTypeId();
@@ -63,30 +65,31 @@ function migrate_override_field_widget_multivalue_form_alter(array &$elements, F
@@ -63,30 +65,31 @@ function migrate_override_field_widget_multivalue_form_alter(array &$elements, F
/** @var \Drupal\Core\Field\WidgetInterface $widget */
/** @var \Drupal\Core\Field\WidgetInterface $widget */
$widget = $context['widget'];
$widget = $context['widget'];
 
$keys = [];
switch ($widget->getPluginId()) {
switch ($widget->getPluginId()) {
case 'inline_entity_form_complex':
case 'inline_entity_form_complex':
if (isset($elements['entities'])) {
if (isset($elements['entities'])) {
foreach (Element::children($elements['entities']) as $delta) {
foreach (Element::children($elements['entities']) as $delta) {
$elements['entities'][$delta]['actions']['ief_entity_edit']['#states'] = $states;
$keys[] = ['entities', $delta, 'actions', 'ief_entity_edit'];
$elements['entities'][$delta]['actions']['ief_entity_remove']['#states'] = $states;
$keys[] = ['entities', $delta, 'actions', 'ief_entity_remove'];
}
}
}
}
if (isset($elements['actions'])) {
if (isset($elements['actions'])) {
$elements['actions']['#states'] = $states;
$keys[] = ['actions'];
}
}
break;
break;
case 'telephone_default':
case 'telephone_default':
case 'email_default':
case 'email_default':
foreach (Element::children($elements) as $key) {
foreach (Element::children($elements) as $key) {
$elements[$key]['value']['#states'] = $states;
$keys[] = [$key, 'value'];
}
}
break;
break;
case 'link_default':
case 'link_default':
foreach (Element::children($elements) as $key) {
foreach (Element::children($elements) as $key) {
$elements[$key]['uri']['#states'] = $states;
$keys[] = [$key, 'uri'];
$elements[$key]['title']['#states'] = $states;
$keys[] = [$key, 'title'];
}
}
break;
break;
@@ -97,15 +100,29 @@ function migrate_override_field_widget_multivalue_form_alter(array &$elements, F
@@ -97,15 +100,29 @@ function migrate_override_field_widget_multivalue_form_alter(array &$elements, F
default:
default:
foreach (Element::children($elements) as $outerkey) {
foreach (Element::children($elements) as $outerkey) {
if (isset($elements[$outerkey]['#type'])) {
if (isset($elements[$outerkey]['#type'])) {
$elements[$outerkey]['#states'] = $states;
$keys[] = [$outerkey];
}
}
else {
else {
foreach (Element::children($elements[$outerkey]) as $innerkey) {
foreach (Element::children($elements[$outerkey]) as $innerkey) {
$elements[$outerkey][$innerkey]['#states'] = $states;
$keys[] = [$outerkey, $innerkey];
}
}
}
}
}
}
}
}
 
 
if ($setting === OverrideManagerServiceInterface::FIELD_OVERRIDEABLE) {
 
foreach ($keys as $key) {
 
$key[] = '#states';
 
NestedArray::setValue($elements, $key, $states);
 
}
 
}
 
 
if ($setting === OverrideManagerServiceInterface::FIELD_LOCKED) {
 
foreach ($keys as $key) {
 
$key[] = '#disabled';
 
NestedArray::setValue($elements, $key, TRUE);
 
}
 
}
}
}
/**
/**
Loading