commit 9c13641bb25b9c3ba2526817ac9a0f46bd5b611e Author: Florian Weber Date: Tue Nov 10 22:56:28 2015 +0100 Deprecate processFieldWidget diff --git a/core/modules/field/migration_templates/d6_field_instance.yml b/core/modules/field/migration_templates/d6_field_instance.yml index aa7861a..de21142 100644 --- a/core/modules/field/migration_templates/d6_field_instance.yml +++ b/core/modules/field/migration_templates/d6_field_instance.yml @@ -46,14 +46,12 @@ process: - widget_type - widget_settings - global_settings - default_value_callback: '' default_value: plugin: d6_field_instance_defaults source: - widget_type - widget_settings - destination: plugin: entity:field_config migration_dependencies: diff --git a/core/modules/field/migration_templates/d6_field_instance_widget_settings.yml b/core/modules/field/migration_templates/d6_field_instance_widget_settings.yml index d34648d..275bb4f 100644 --- a/core/modules/field/migration_templates/d6_field_instance_widget_settings.yml +++ b/core/modules/field/migration_templates/d6_field_instance_widget_settings.yml @@ -41,20 +41,9 @@ process: entity_type: 'constants/entity_type' 'options/weight': weight 'options/type': - type: - plugin: static_map - bypass: true - source: widget_type - map: - number: number - email_textfield: email_default - date_select: datetime_default - date_text: datetime_default - imagefield_widget: image_image - phone_textfield: telephone_default - optionwidgets_onoff: boolean_checkbox - optionwidgets_buttons: options_buttons - optionwidgets_select: options_select + plugin: field_instance_widget_type + source: + - widget_type 'options/settings': - plugin: field_instance_widget_settings @@ -62,7 +51,6 @@ process: - widget_type - widget_settings 'options/third_party_settings': 'constants/third_party_settings' - destination: plugin: component_entity_form_display migration_dependencies: diff --git a/core/modules/field/src/Plugin/migrate/process/d6/FieldWidgetType.php b/core/modules/field/src/Plugin/migrate/process/d6/FieldWidgetType.php new file mode 100644 index 0000000..a30d84c --- /dev/null +++ b/core/modules/field/src/Plugin/migrate/process/d6/FieldWidgetType.php @@ -0,0 +1,101 @@ +cckPluginManager = $cck_plugin_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('plugin.manager.migrate.cckfield') + ); + } + + /** + * {@inheritdoc} + */ + public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { + $source_widget_type = $row->getSourceProperty('widget_type'); + $source_field_type = $row->getSourceProperty('type'); + + try { + return $this->cckPluginManager->createInstance($source_field_type) + ->transformWidgetType($row); + } + catch (PluginNotFoundException $e) { + return $this->getWidget($source_widget_type); + } + } + + /** + * Returns widget for a given source widget type. + * + * @param $source_widget_type + * + * @return string|null + */ + protected function getWidget($source_widget_type) { + $map = [ + 'number' => 'number', + 'email_textfield' => 'email_default', + 'date_select' => 'datetime_default', + 'date_text' => 'datetime_default', + 'imagefield_widget' => 'image_image', + 'phone_textfield' => 'telephone_default', + 'optionwidgets_onoff' => 'boolean_checkbox', + 'optionwidgets_buttons' => 'options_buttons', + 'optionwidgets_select' => 'options_select', + ]; + return isset($map[$source_widget_type]) ? $map[$source_widget_type] : NULL; + } + +} diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/cckfield/CckFieldPluginBase.php b/core/modules/migrate_drupal/src/Plugin/migrate/cckfield/CckFieldPluginBase.php index 010b56f..d3c6ee2 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/cckfield/CckFieldPluginBase.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/cckfield/CckFieldPluginBase.php @@ -44,11 +44,13 @@ public function processFieldInstance(MigrationInterface $migration) { * {@inheritdoc} */ public function processFieldWidget(MigrationInterface $migration) { + /* $process = []; foreach ($this->getFieldWidgetMap() as $source_widget => $destination_widget) { $process['type']['map'][$source_widget] = $destination_widget; } $migration->mergeProcessOfProperty('options/type', $process); + */ } /** @@ -100,4 +102,13 @@ public function transformFieldInstanceSettings(Row $row) { return []; } + /** + * {@inheritdoc} + */ + public function transformWidgetType(Row $row) { + $source_widget_type = $row->getSourceProperty('widget_type'); + $map = $this->getFieldWidgetMap(); + return isset($map[$source_widget_type]) ? $map[$source_widget_type] : NULL; + } + }