diff --git a/composer.json b/composer.json
index f4de42e..b9b9da0 100644
--- a/composer.json
+++ b/composer.json
@@ -12,7 +12,7 @@
}
],
"require": {
- "drupal/migrate_plus": ">=3.0",
+ "drupal/migrate_plus": ">=4.0",
"digicol/dcx-sdk-php": "^2.0"
},
"require-dev": {
diff --git a/modules/dcx_article_import/dcx_article_import.info.yml b/modules/dcx_article_import/dcx_article_import.info.yml
index e651b9e..00b15a8 100644
--- a/modules/dcx_article_import/dcx_article_import.info.yml
+++ b/modules/dcx_article_import/dcx_article_import.info.yml
@@ -6,3 +6,4 @@ package: dcx
dependencies:
- dcx_integration:dcx_integration
- dcx_integration:dcx_migration
+ - paragraphs:paragraphs
diff --git a/modules/dcx_article_import/dcx_article_import.libraries.yml b/modules/dcx_article_import/dcx_article_import.libraries.yml
index 7adf66a..33775b6 100644
--- a/modules/dcx_article_import/dcx_article_import.libraries.yml
+++ b/modules/dcx_article_import/dcx_article_import.libraries.yml
@@ -5,3 +5,8 @@ dropzone:
css:
theme:
css/dcx-article-import-ui.css: {}
+ dependencies:
+ - core/jquery
+ - core/drupal
+ - core/drupalSettings
+ - core/jquery.once
diff --git a/modules/dcx_article_import/js/dcx-article-import-ui.js b/modules/dcx_article_import/js/dcx-article-import-ui.js
index 4b73845..a23e74a 100644
--- a/modules/dcx_article_import/js/dcx-article-import-ui.js
+++ b/modules/dcx_article_import/js/dcx-article-import-ui.js
@@ -8,7 +8,10 @@
Drupal.behaviors.dcxArticleImportUi = {
attach: function (context, settings) {
var submitButton = $('#edit-submit');
- var textfield = $('input[data-drupal-selector=edit-dcx-id]');
+ var textfield = $('input[data-drupal-selector=edit-dcx-id]').once('dcx_dropzone_init');
+ if (textfield.length === 0) {
+ return;
+ }
var dropzone = $('
').addClass('dcx-dropzone');
var message = $('' + Drupal.t('Drop DC-X story link here!') + '
').addClass('message').appendTo(dropzone);
diff --git a/modules/dcx_article_import/tests/src/FunctionalJavascript/ArticleImportTest.php b/modules/dcx_article_import/tests/src/FunctionalJavascript/ArticleImportTest.php
new file mode 100644
index 0000000..2ec923f
--- /dev/null
+++ b/modules/dcx_article_import/tests/src/FunctionalJavascript/ArticleImportTest.php
@@ -0,0 +1,41 @@
+config('dcx_integration.jsonclientsettings')->setData([
+ 'url' => getenv('DCX_URL'),
+ 'username' => getenv('DCX_USER'),
+ 'password' => getenv('DCX_PASS'),
+ 'publication' => getenv('DCX_PUBLICATION'),
+ 'notification_access_key' => getenv('DCX_NOTIFICATION_KEY'),
+ ])->save();
+ $this->config('system.site')->setData(['mail' => 'admin@admin.de', 'name' => 'Integration Test'])->save();
+
+ $this->drupalLogin($this->createUser(['import from dcx']));
+
+ $this->drupalGet('node/add/article/dcx-import');
+ }
+
+}
diff --git a/modules/dcx_migration/config/install/field.field.media.image.field_dcx_id.yml b/modules/dcx_migration/config/optional/field.field.media.image.field_dcx_id.yml
similarity index 100%
rename from modules/dcx_migration/config/install/field.field.media.image.field_dcx_id.yml
rename to modules/dcx_migration/config/optional/field.field.media.image.field_dcx_id.yml
diff --git a/modules/dcx_migration/config/install/field.storage.media.field_dcx_id.yml b/modules/dcx_migration/config/optional/field.storage.media.field_dcx_id.yml
similarity index 100%
rename from modules/dcx_migration/config/install/field.storage.media.field_dcx_id.yml
rename to modules/dcx_migration/config/optional/field.storage.media.field_dcx_id.yml
diff --git a/modules/dcx_migration/dcx_migration.info.yml b/modules/dcx_migration/dcx_migration.info.yml
index a60578b..83734a0 100644
--- a/modules/dcx_migration/dcx_migration.info.yml
+++ b/modules/dcx_migration/dcx_migration.info.yml
@@ -3,10 +3,8 @@ type: module
description: 'Migration of data from DC-X digital asset management.'
core: '8.x'
package: dcx
-
dependencies:
- dcx_integration:dcx_integration
- drupal:migrate
- migrate_plus:migrate_plus
- media_entity:media_entity
- - thunder:thunder_media
diff --git a/tests/modules/dcx_test/config/install/field.field.media.image.field_copyright.yml b/tests/modules/dcx_test/config/install/field.field.media.image.field_copyright.yml
new file mode 100644
index 0000000..4d8e1e4
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.media.image.field_copyright.yml
@@ -0,0 +1,19 @@
+uuid: 5af4128c-f300-442e-a7ce-45879b1ee82b
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.media.field_copyright
+ - media_entity.bundle.image
+id: media.image.field_copyright
+field_name: field_copyright
+entity_type: media
+bundle: image
+label: Copyright
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/tests/modules/dcx_test/config/install/field.field.media.image.field_expires.yml b/tests/modules/dcx_test/config/install/field.field.media.image.field_expires.yml
new file mode 100644
index 0000000..7a211e5
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.media.image.field_expires.yml
@@ -0,0 +1,21 @@
+uuid: fd203df1-2506-4051-9c65-943ddf0bd0ef
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.media.field_expires
+ - media_entity.bundle.image
+ module:
+ - datetime
+id: media.image.field_expires
+field_name: field_expires
+entity_type: media
+bundle: image
+label: Expires
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: datetime
diff --git a/tests/modules/dcx_test/config/install/field.field.media.image.field_image.yml b/tests/modules/dcx_test/config/install/field.field.media.image.field_image.yml
new file mode 100644
index 0000000..adb965d
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.media.image.field_image.yml
@@ -0,0 +1,38 @@
+uuid: a1ae969d-7d6c-4607-be0a-0eb034469315
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.media.field_image
+ - media_entity.bundle.image
+ module:
+ - image
+id: media.image.field_image
+field_name: field_image
+entity_type: media
+bundle: image
+label: Image
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ file_directory: '[date:custom:Y]-[date:custom:m]'
+ file_extensions: 'png gif jpg jpeg'
+ max_filesize: ''
+ max_resolution: ''
+ min_resolution: ''
+ alt_field: true
+ alt_field_required: true
+ title_field: false
+ title_field_required: false
+ default_image:
+ uuid: ''
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ handler: 'default:file'
+ handler_settings: { }
+field_type: image
diff --git a/tests/modules/dcx_test/config/install/field.field.media.image.field_source.yml b/tests/modules/dcx_test/config/install/field.field.media.image.field_source.yml
new file mode 100644
index 0000000..1dd0e84
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.media.image.field_source.yml
@@ -0,0 +1,19 @@
+uuid: a6103478-2b1c-4050-ae7f-0494c6be33e8
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.media.field_source
+ - media_entity.bundle.image
+id: media.image.field_source
+field_name: field_source
+entity_type: media
+bundle: image
+label: Source
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: string
diff --git a/tests/modules/dcx_test/config/install/field.field.node.article.field_paragraphs.yml b/tests/modules/dcx_test/config/install/field.field.node.article.field_paragraphs.yml
new file mode 100644
index 0000000..b06ff27
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.node.article.field_paragraphs.yml
@@ -0,0 +1,31 @@
+uuid: 341f7fba-b53b-4716-9b4a-563c8f54ba7f
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.node.field_paragraphs
+ - node.type.article
+ - paragraphs.paragraphs_type.image
+ module:
+ - entity_reference_revisions
+id: node.article.field_paragraphs
+field_name: field_paragraphs
+entity_type: node
+bundle: article
+label: Paragraphs
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:paragraph'
+ handler_settings:
+ negate: 0
+ target_bundles:
+ image: image
+ target_bundles_drag_drop:
+ image:
+ enabled: true
+ weight: 2
+field_type: entity_reference_revisions
diff --git a/tests/modules/dcx_test/config/install/field.field.paragraph.image.field_image.yml b/tests/modules/dcx_test/config/install/field.field.paragraph.image.field_image.yml
new file mode 100644
index 0000000..efd689a
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.paragraph.image.field_image.yml
@@ -0,0 +1,28 @@
+uuid: d47d0055-395f-4c4d-a179-4dc78083a24d
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.paragraph.field_image
+ - media_entity.bundle.image
+ - paragraphs.paragraphs_type.image
+id: paragraph.image.field_image
+field_name: field_image
+entity_type: paragraph
+bundle: image
+label: Image
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings:
+ handler: 'default:media'
+ handler_settings:
+ target_bundles:
+ image: image
+ sort:
+ field: _none
+ auto_create: false
+ auto_create_bundle: ''
+field_type: entity_reference
diff --git a/tests/modules/dcx_test/config/install/field.field.paragraph.text.field_text.yml b/tests/modules/dcx_test/config/install/field.field.paragraph.text.field_text.yml
new file mode 100644
index 0000000..4d139b2
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.field.paragraph.text.field_text.yml
@@ -0,0 +1,21 @@
+uuid: d1c920ba-be79-40a1-840b-34fb257907c0
+langcode: en
+status: true
+dependencies:
+ config:
+ - field.storage.paragraph.field_text
+ - paragraphs.paragraphs_type.text
+ module:
+ - text
+id: paragraph.text.field_text
+field_name: field_text
+entity_type: paragraph
+bundle: text
+label: Text
+description: ''
+required: false
+translatable: false
+default_value: { }
+default_value_callback: ''
+settings: { }
+field_type: text_long
diff --git a/tests/modules/dcx_test/config/install/field.storage.media.field_copyright.yml b/tests/modules/dcx_test/config/install/field.storage.media.field_copyright.yml
new file mode 100644
index 0000000..0825da2
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.media.field_copyright.yml
@@ -0,0 +1,21 @@
+uuid: b5a9b0da-70a3-4db6-a136-43260e6a5805
+langcode: en
+status: true
+dependencies:
+ module:
+ - media_entity
+id: media.field_copyright
+field_name: field_copyright
+entity_type: media
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/field.storage.media.field_expires.yml b/tests/modules/dcx_test/config/install/field.storage.media.field_expires.yml
new file mode 100644
index 0000000..02cca91
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.media.field_expires.yml
@@ -0,0 +1,20 @@
+uuid: 2791a276-3db7-4fcd-92e3-23fca4d5103e
+langcode: en
+status: true
+dependencies:
+ module:
+ - datetime
+ - media_entity
+id: media.field_expires
+field_name: field_expires
+entity_type: media
+type: datetime
+settings:
+ datetime_type: datetime
+module: datetime
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/field.storage.media.field_image.yml b/tests/modules/dcx_test/config/install/field.storage.media.field_image.yml
new file mode 100644
index 0000000..a13bf54
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.media.field_image.yml
@@ -0,0 +1,30 @@
+uuid: ef7d7657-3a17-4752-83bd-dba3401c6b4a
+langcode: en
+status: true
+dependencies:
+ module:
+ - file
+ - image
+ - media_entity
+id: media.field_image
+field_name: field_image
+entity_type: media
+type: image
+settings:
+ uri_scheme: public
+ default_image:
+ uuid: ''
+ alt: ''
+ title: ''
+ width: null
+ height: null
+ target_type: file
+ display_field: false
+ display_default: false
+module: image
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/field.storage.media.field_source.yml b/tests/modules/dcx_test/config/install/field.storage.media.field_source.yml
new file mode 100644
index 0000000..61d5df6
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.media.field_source.yml
@@ -0,0 +1,21 @@
+uuid: 071fc21b-8b4e-463a-b8a0-007383e229d9
+langcode: en
+status: true
+dependencies:
+ module:
+ - media_entity
+id: media.field_source
+field_name: field_source
+entity_type: media
+type: string
+settings:
+ max_length: 255
+ is_ascii: false
+ case_sensitive: false
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/field.storage.node.field_paragraphs.yml b/tests/modules/dcx_test/config/install/field.storage.node.field_paragraphs.yml
new file mode 100644
index 0000000..20e306e
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.node.field_paragraphs.yml
@@ -0,0 +1,21 @@
+uuid: 2486cc03-26ed-44a1-bc8c-e8191c369c9f
+langcode: en
+status: true
+dependencies:
+ module:
+ - entity_reference_revisions
+ - node
+ - paragraphs
+id: node.field_paragraphs
+field_name: field_paragraphs
+entity_type: node
+type: entity_reference_revisions
+settings:
+ target_type: paragraph
+module: entity_reference_revisions
+locked: false
+cardinality: -1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/field.storage.paragraph.field_image.yml b/tests/modules/dcx_test/config/install/field.storage.paragraph.field_image.yml
new file mode 100644
index 0000000..3b47c12
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.paragraph.field_image.yml
@@ -0,0 +1,20 @@
+uuid: 5e486716-5c3c-4e9f-89eb-5e9628e9d503
+langcode: en
+status: true
+dependencies:
+ module:
+ - media_entity
+ - paragraphs
+id: paragraph.field_image
+field_name: field_image
+entity_type: paragraph
+type: entity_reference
+settings:
+ target_type: media
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/field.storage.paragraph.field_text.yml b/tests/modules/dcx_test/config/install/field.storage.paragraph.field_text.yml
new file mode 100644
index 0000000..03a966f
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/field.storage.paragraph.field_text.yml
@@ -0,0 +1,19 @@
+uuid: 0db964c0-a859-4d7e-91a4-166b01a0ef97
+langcode: en
+status: true
+dependencies:
+ module:
+ - paragraphs
+ - text
+id: paragraph.field_text
+field_name: field_text
+entity_type: paragraph
+type: text_long
+settings: { }
+module: text
+locked: false
+cardinality: 1
+translatable: true
+indexes: { }
+persist_with_no_fields: false
+custom_storage: false
diff --git a/tests/modules/dcx_test/config/install/media_entity.bundle.image.yml b/tests/modules/dcx_test/config/install/media_entity.bundle.image.yml
new file mode 100644
index 0000000..908b5f5
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/media_entity.bundle.image.yml
@@ -0,0 +1,16 @@
+uuid: 5d8e7dca-2fea-47e1-8767-22a263fa0d1c
+langcode: en
+status: true
+dependencies:
+ module:
+ - media_entity_image
+id: image
+label: Image
+description: ''
+type: image
+queue_thumbnail_downloads: false
+new_revision: false
+type_configuration:
+ source_field: ''
+ gather_exif: false
+field_map: { }
diff --git a/tests/modules/dcx_test/config/install/node.type.article.yml b/tests/modules/dcx_test/config/install/node.type.article.yml
new file mode 100644
index 0000000..196953e
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/node.type.article.yml
@@ -0,0 +1,13 @@
+uuid: a2a885b5-2c97-4585-b632-0885b05142f5
+langcode: en
+status: true
+dependencies: { }
+_core:
+ default_config_hash: AeW1SEDgb1OTQACAWGhzvMknMYAJlcZu0jljfeU3oso
+name: Article
+type: article
+description: 'Use articles for time-sensitive content like news, press releases or blog posts.'
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: true
diff --git a/tests/modules/dcx_test/config/install/paragraphs.paragraphs_type.image.yml b/tests/modules/dcx_test/config/install/paragraphs.paragraphs_type.image.yml
new file mode 100644
index 0000000..1d1ff5a
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/paragraphs.paragraphs_type.image.yml
@@ -0,0 +1,9 @@
+uuid: 07786908-4ef2-4390-8477-1e3163eacd5d
+langcode: en
+status: true
+dependencies: { }
+id: image
+label: Image
+icon_uuid: null
+description: ''
+behavior_plugins: { }
diff --git a/tests/modules/dcx_test/config/install/paragraphs.paragraphs_type.text.yml b/tests/modules/dcx_test/config/install/paragraphs.paragraphs_type.text.yml
new file mode 100644
index 0000000..846c970
--- /dev/null
+++ b/tests/modules/dcx_test/config/install/paragraphs.paragraphs_type.text.yml
@@ -0,0 +1,9 @@
+uuid: 672c99fe-fe15-4f87-92e7-2135a98ecde8
+langcode: en
+status: true
+dependencies: { }
+id: text
+label: Text
+icon_uuid: null
+description: ''
+behavior_plugins: { }
diff --git a/tests/modules/dcx_test/dcx_test.info.yml b/tests/modules/dcx_test/dcx_test.info.yml
new file mode 100644
index 0000000..71995c5
--- /dev/null
+++ b/tests/modules/dcx_test/dcx_test.info.yml
@@ -0,0 +1,10 @@
+name: DC-X Test module
+type: module
+description: 'Only provides test config'
+core: '8.x'
+package: dcx
+dependencies:
+ - media_entity_image:media_entity_image
+ - paragraphs:paragraphs
+ - drupal:node
+ - drupal:datetime