From 6f31c75ebf370c663a83b612f40fd443f30d28b6 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Fri, 18 Aug 2023 17:13:38 +1000 Subject: [PATCH 01/18] add config files --- ....publication.field_publication_authors.yml | 31 +++++++++++++++++++ ...storage.node.field_publication_authors.yml | 26 ++++++++++++++++ .../taxonomy.vocabulary.organisation.yml | 7 +++++ 3 files changed, 64 insertions(+) create mode 100644 config/default/field.field.node.publication.field_publication_authors.yml create mode 100644 config/default/field.storage.node.field_publication_authors.yml create mode 100644 config/install/taxonomy.vocabulary.organisation.yml diff --git a/config/default/field.field.node.publication.field_publication_authors.yml b/config/default/field.field.node.publication.field_publication_authors.yml new file mode 100644 index 0000000..a86a716 --- /dev/null +++ b/config/default/field.field.node.publication.field_publication_authors.yml @@ -0,0 +1,31 @@ +uuid: 05698e02-39c6-40a2-822f-1fa9bb102dce +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_publication_authors + - node.type.publication + - taxonomy.vocabulary.organisation +_core: + default_config_hash: '-ExNyXJOfyV6z82S2g3GreY6Vnqw4F48Y1fJ5BVTRWw' +id: node.publication.field_publication_authors +field_name: field_publication_authors +entity_type: node +bundle: publication +label: 'Publication author' +description: 'Start typing to choose one publication author.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:taxonomy_term' + handler_settings: + target_bundles: + organisation: organisation + sort: + field: name + direction: asc + auto_create: false + auto_create_bundle: department +field_type: entity_reference diff --git a/config/default/field.storage.node.field_publication_authors.yml b/config/default/field.storage.node.field_publication_authors.yml new file mode 100644 index 0000000..ad95274 --- /dev/null +++ b/config/default/field.storage.node.field_publication_authors.yml @@ -0,0 +1,26 @@ +uuid: 9f403576-849e-4bc7-965f-721cf06276ed +langcode: en +status: true +dependencies: + module: + - field_permissions + - node + - taxonomy +third_party_settings: + field_permissions: + permission_type: public +_core: + default_config_hash: pehCQhnFlr7A0oxDvIAMYEW7FJf0rsn0HRiQmHVOeH0 +id: node.field_publication_authors +field_name: field_publication_authors +entity_type: node +type: entity_reference +settings: + target_type: taxonomy_term +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/install/taxonomy.vocabulary.organisation.yml b/config/install/taxonomy.vocabulary.organisation.yml new file mode 100644 index 0000000..c542f52 --- /dev/null +++ b/config/install/taxonomy.vocabulary.organisation.yml @@ -0,0 +1,7 @@ +langcode: en +status: true +dependencies: { } +name: Organisation +vid: organisation +description: 'Currently used for ''Publication author'' non-mandatory field' +weight: 0 From 638bf7792f9d85974cd4ec6b7b75fec636671b97 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Fri, 18 Aug 2023 20:08:46 +1000 Subject: [PATCH 02/18] move config files --- ....publication.field_publication_authors.yml | 31 ------------------- ...storage.node.field_publication_authors.yml | 26 ---------------- ....publication.field_publication_authors.yml | 14 +++++++-- ...storage.node.field_publication_authors.yml | 9 +++++- 4 files changed, 19 insertions(+), 61 deletions(-) delete mode 100644 config/default/field.field.node.publication.field_publication_authors.yml delete mode 100644 config/default/field.storage.node.field_publication_authors.yml diff --git a/config/default/field.field.node.publication.field_publication_authors.yml b/config/default/field.field.node.publication.field_publication_authors.yml deleted file mode 100644 index a86a716..0000000 --- a/config/default/field.field.node.publication.field_publication_authors.yml +++ /dev/null @@ -1,31 +0,0 @@ -uuid: 05698e02-39c6-40a2-822f-1fa9bb102dce -langcode: en -status: true -dependencies: - config: - - field.storage.node.field_publication_authors - - node.type.publication - - taxonomy.vocabulary.organisation -_core: - default_config_hash: '-ExNyXJOfyV6z82S2g3GreY6Vnqw4F48Y1fJ5BVTRWw' -id: node.publication.field_publication_authors -field_name: field_publication_authors -entity_type: node -bundle: publication -label: 'Publication author' -description: 'Start typing to choose one publication author.' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: 'default:taxonomy_term' - handler_settings: - target_bundles: - organisation: organisation - sort: - field: name - direction: asc - auto_create: false - auto_create_bundle: department -field_type: entity_reference diff --git a/config/default/field.storage.node.field_publication_authors.yml b/config/default/field.storage.node.field_publication_authors.yml deleted file mode 100644 index ad95274..0000000 --- a/config/default/field.storage.node.field_publication_authors.yml +++ /dev/null @@ -1,26 +0,0 @@ -uuid: 9f403576-849e-4bc7-965f-721cf06276ed -langcode: en -status: true -dependencies: - module: - - field_permissions - - node - - taxonomy -third_party_settings: - field_permissions: - permission_type: public -_core: - default_config_hash: pehCQhnFlr7A0oxDvIAMYEW7FJf0rsn0HRiQmHVOeH0 -id: node.field_publication_authors -field_name: field_publication_authors -entity_type: node -type: entity_reference -settings: - target_type: taxonomy_term -module: core -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/config/install/field.field.node.publication.field_publication_authors.yml b/config/install/field.field.node.publication.field_publication_authors.yml index a393643..c88644c 100644 --- a/config/install/field.field.node.publication.field_publication_authors.yml +++ b/config/install/field.field.node.publication.field_publication_authors.yml @@ -1,16 +1,19 @@ +uuid: 53e1711e-9e06-497f-8b29-7361d0bd0273 langcode: en status: true dependencies: config: - field.storage.node.field_publication_authors - node.type.publication - - taxonomy.vocabulary.department + - taxonomy.vocabulary.organisation +_core: + default_config_hash: '-ExNyXJOfyV6z82S2g3GreY6Vnqw4F48Y1fJ5BVTRWw' id: node.publication.field_publication_authors field_name: field_publication_authors entity_type: node bundle: publication label: 'Publication author' -description: 'Use this field to select an author. Choose one mostly applicable.' +description: 'Start typing to choose one publication author.' required: false translatable: false default_value: { } @@ -19,5 +22,10 @@ settings: handler: 'default:taxonomy_term' handler_settings: target_bundles: - department: department + organisation: organisation + sort: + field: name + direction: asc + auto_create: false + auto_create_bundle: department field_type: entity_reference diff --git a/config/install/field.storage.node.field_publication_authors.yml b/config/install/field.storage.node.field_publication_authors.yml index c2e73d1..985d8a6 100644 --- a/config/install/field.storage.node.field_publication_authors.yml +++ b/config/install/field.storage.node.field_publication_authors.yml @@ -1,9 +1,16 @@ +uuid: d0021eb1-fa3f-4711-a1d0-2a2399d6c0b5 langcode: en status: true dependencies: module: + - field_permissions - node - taxonomy +third_party_settings: + field_permissions: + permission_type: public +_core: + default_config_hash: pehCQhnFlr7A0oxDvIAMYEW7FJf0rsn0HRiQmHVOeH0 id: node.field_publication_authors field_name: field_publication_authors entity_type: node @@ -12,7 +19,7 @@ settings: target_type: taxonomy_term module: core locked: false -cardinality: -1 +cardinality: 1 translatable: true indexes: { } persist_with_no_fields: false From 110b48fee19224395794289271e9a7f90e4f52ea Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 22 Aug 2023 22:03:02 +1000 Subject: [PATCH 03/18] Added hook update to change publication author field cardinality and vocabulary --- src/TidePublicationOperation.php | 80 ++++++++++++++++++++++++++++++++ tide_publication.install | 15 ++++++ 2 files changed, 95 insertions(+) create mode 100644 src/TidePublicationOperation.php diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php new file mode 100644 index 0000000..31c020f --- /dev/null +++ b/src/TidePublicationOperation.php @@ -0,0 +1,80 @@ +createVocabulary($vocabulary); + } + + $field = FieldConfig::loadByName('node', self::BUNDLE, self::PUBLICATION_AUTHORS_FIELD_NAME); + $new_field = $field->toArray(); + $new_field['field_type'] = 'entity_reference'; + $new_field['dependencies'] = [ + 'config' => [ + 'field.storage.' . $config->get('id'), + 'node.type.' . self::BUNDLE, + 'taxonomy.vocabulary.' . $vocabulary, + ], + ]; + $new_field['settings'] = [ + 'handler_settings' => [ + 'target_bundles' => [ + 'department' => $vocabulary, + ], + ], + ]; + $new_field = FieldConfig::create($new_field); + $new_field->original = $field; + $new_field->enforceIsNew(FALSE); + $new_field->save(); + } + + /** + * Creates a new vocabulary. + * + * @param string $vocabulary + * The new vocabulary. + */ + public function createVocabulary(string $vocabulary) { + $vocabulary = Vocabulary::create([ + 'vid' => $vocabulary, + 'description' => '', + 'name' => ucfirst($vocabulary), + ]); + $vocabulary->save(); + } +} diff --git a/tide_publication.install b/tide_publication.install index 13ead54..268370b 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -9,6 +9,7 @@ use Drupal\Core\Entity\Entity\EntityFormDisplay; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\search_api\Item\Field; +use Drupal\tide_publication\TidePublicationOperation; use Drupal\user\Entity\Role; use Drupal\workflows\Entity\Workflow; @@ -1056,3 +1057,17 @@ function tide_publication_update_8015() { $form_display->save(); } } + +/** + * Update field_publication_authors cardinality and vocabulary to 'organisation'. + */ +function tide_publication_update_8016() { + $tidePublicationOperation = new TidePublicationOperation(); + $new_vocabulary = 'organisation'; + $config_factory = \Drupal::configFactory(); + $config = $config_factory->getEditable($tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_STORAGE); + $config->set('cardinality', 1); + $config->save(); + + $tidePublicationOperation->updateFieldPublicationAuthorsVocabulary($config, $new_vocabulary); +} From 19bca4c9b4ad66d43e86bbdcea6e5e6e23cc20b1 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 22 Aug 2023 22:13:44 +1000 Subject: [PATCH 04/18] Fixed lint errors --- src/TidePublicationOperation.php | 4 +++- tide_publication.install | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php index 31c020f..12672ec 100644 --- a/src/TidePublicationOperation.php +++ b/src/TidePublicationOperation.php @@ -2,6 +2,7 @@ namespace Drupal\tide_publication; +use Drupal\Core\Config\Config; use Drupal\field\Entity\FieldConfig; use Drupal\taxonomy\Entity\Vocabulary; @@ -33,7 +34,7 @@ class TidePublicationOperation { * @param string $vocabulary * The new vocabulary. */ - public function updateFieldPublicationAuthorsVocabulary(\Drupal\Core\Config\Config $config, string $vocabulary) { + public function updateFieldPublicationAuthorsVocabulary(Config $config, string $vocabulary) { // Creates vocabulary if doesn't exist. $vocabularies = Vocabulary::loadMultiple(); if (!isset($vocabularies[$vocabulary])) { @@ -77,4 +78,5 @@ public function createVocabulary(string $vocabulary) { ]); $vocabulary->save(); } + } diff --git a/tide_publication.install b/tide_publication.install index 268370b..1e6b68b 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -1059,7 +1059,7 @@ function tide_publication_update_8015() { } /** - * Update field_publication_authors cardinality and vocabulary to 'organisation'. + * Update field_publication_authors cardinality and vocabulary to organisation. */ function tide_publication_update_8016() { $tidePublicationOperation = new TidePublicationOperation(); From ac1ccc578f52ba95af45e38467d6b1b8fa71b93f Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 22 Aug 2023 22:39:39 +1000 Subject: [PATCH 05/18] Updated field description --- src/TidePublicationOperation.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php index 12672ec..5de86c8 100644 --- a/src/TidePublicationOperation.php +++ b/src/TidePublicationOperation.php @@ -21,6 +21,11 @@ class TidePublicationOperation { */ const PUBLICATION_AUTHORS_FIELD_NAME = 'field_publication_authors'; + /** + * The publication authors field description. + */ + const PUBLICATION_AUTHORS_FIELD_DESCRIPTION = 'Start typing to choose one publication author.'; + /** * The publication authors field storage. */ @@ -44,6 +49,7 @@ public function updateFieldPublicationAuthorsVocabulary(Config $config, string $ $field = FieldConfig::loadByName('node', self::BUNDLE, self::PUBLICATION_AUTHORS_FIELD_NAME); $new_field = $field->toArray(); $new_field['field_type'] = 'entity_reference'; + $new_field['description'] = self::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; $new_field['dependencies'] = [ 'config' => [ 'field.storage.' . $config->get('id'), From ea633555f61c018d05498fbe78f76e9a73c23924 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Wed, 23 Aug 2023 11:15:39 +1000 Subject: [PATCH 06/18] Check if field type is an entity reference --- src/TidePublicationOperation.php | 47 ++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php index 5de86c8..b3e999a 100644 --- a/src/TidePublicationOperation.php +++ b/src/TidePublicationOperation.php @@ -16,6 +16,11 @@ class TidePublicationOperation { */ const BUNDLE = 'publication'; + /** + * The entity reference field type. + */ + const ENTITY_REFERENCE_FIELD_TYPE = 'entity_reference'; + /** * The publication authors field name. */ @@ -47,27 +52,29 @@ public function updateFieldPublicationAuthorsVocabulary(Config $config, string $ } $field = FieldConfig::loadByName('node', self::BUNDLE, self::PUBLICATION_AUTHORS_FIELD_NAME); - $new_field = $field->toArray(); - $new_field['field_type'] = 'entity_reference'; - $new_field['description'] = self::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; - $new_field['dependencies'] = [ - 'config' => [ - 'field.storage.' . $config->get('id'), - 'node.type.' . self::BUNDLE, - 'taxonomy.vocabulary.' . $vocabulary, - ], - ]; - $new_field['settings'] = [ - 'handler_settings' => [ - 'target_bundles' => [ - 'department' => $vocabulary, + if ($field->get('field_type') === self::ENTITY_REFERENCE_FIELD_TYPE) { + $new_field = $field->toArray(); + $new_field['field_type'] = self::ENTITY_REFERENCE_FIELD_TYPE; + $new_field['description'] = self::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; + $new_field['dependencies'] = [ + 'config' => [ + 'field.storage.' . $config->get('id'), + 'node.type.' . self::BUNDLE, + 'taxonomy.vocabulary.' . $vocabulary, ], - ], - ]; - $new_field = FieldConfig::create($new_field); - $new_field->original = $field; - $new_field->enforceIsNew(FALSE); - $new_field->save(); + ]; + $new_field['settings'] = [ + 'handler_settings' => [ + 'target_bundles' => [ + 'department' => $vocabulary, + ], + ], + ]; + $new_field = FieldConfig::create($new_field); + $new_field->original = $field; + $new_field->enforceIsNew(FALSE); + $new_field->save(); + } } /** From 90d293497bc6246dcf0afb3a69832ddebd932daa Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Wed, 30 Aug 2023 12:05:07 +1000 Subject: [PATCH 07/18] remove uuid --- .../field.field.node.publication.field_publication_authors.yml | 3 --- .../install/field.storage.node.field_publication_authors.yml | 3 --- 2 files changed, 6 deletions(-) diff --git a/config/install/field.field.node.publication.field_publication_authors.yml b/config/install/field.field.node.publication.field_publication_authors.yml index c88644c..b87758f 100644 --- a/config/install/field.field.node.publication.field_publication_authors.yml +++ b/config/install/field.field.node.publication.field_publication_authors.yml @@ -1,4 +1,3 @@ -uuid: 53e1711e-9e06-497f-8b29-7361d0bd0273 langcode: en status: true dependencies: @@ -6,8 +5,6 @@ dependencies: - field.storage.node.field_publication_authors - node.type.publication - taxonomy.vocabulary.organisation -_core: - default_config_hash: '-ExNyXJOfyV6z82S2g3GreY6Vnqw4F48Y1fJ5BVTRWw' id: node.publication.field_publication_authors field_name: field_publication_authors entity_type: node diff --git a/config/install/field.storage.node.field_publication_authors.yml b/config/install/field.storage.node.field_publication_authors.yml index 985d8a6..c9263fb 100644 --- a/config/install/field.storage.node.field_publication_authors.yml +++ b/config/install/field.storage.node.field_publication_authors.yml @@ -1,4 +1,3 @@ -uuid: d0021eb1-fa3f-4711-a1d0-2a2399d6c0b5 langcode: en status: true dependencies: @@ -9,8 +8,6 @@ dependencies: third_party_settings: field_permissions: permission_type: public -_core: - default_config_hash: pehCQhnFlr7A0oxDvIAMYEW7FJf0rsn0HRiQmHVOeH0 id: node.field_publication_authors field_name: field_publication_authors entity_type: node From 69d3403be8604aa0ea0a0c55cf1bf10d7896fe04 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Thu, 31 Aug 2023 16:13:01 +1000 Subject: [PATCH 08/18] moved to install --- tide_publication.install | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/tide_publication.install b/tide_publication.install index 1e6b68b..7db5ee8 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -9,6 +9,7 @@ use Drupal\Core\Entity\Entity\EntityFormDisplay; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\search_api\Item\Field; +use Drupal\taxonomy\Entity\Vocabulary; use Drupal\tide_publication\TidePublicationOperation; use Drupal\user\Entity\Role; use Drupal\workflows\Entity\Workflow; @@ -1063,11 +1064,40 @@ function tide_publication_update_8015() { */ function tide_publication_update_8016() { $tidePublicationOperation = new TidePublicationOperation(); - $new_vocabulary = 'organisation'; + $vocabulary = 'organisation'; $config_factory = \Drupal::configFactory(); $config = $config_factory->getEditable($tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_STORAGE); $config->set('cardinality', 1); $config->save(); - $tidePublicationOperation->updateFieldPublicationAuthorsVocabulary($config, $new_vocabulary); + // Creates vocabulary if doesn't exist. + $vocabularies = Vocabulary::loadMultiple(); + if (!isset($vocabularies[$vocabulary])) { + $tidePublicationOperation->createVocabulary($vocabulary); + } + + $field = FieldConfig::loadByName('node', $tidePublicationOperation::BUNDLE, $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_NAME); + if ($field->get('field_type') === $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE) { + $new_field = $field->toArray(); + $new_field['field_type'] = $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE; + $new_field['description'] = $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; + $new_field['dependencies'] = [ + 'config' => [ + 'field.storage.' . $config->get('id'), + 'node.type.' . $tidePublicationOperation::BUNDLE, + 'taxonomy.vocabulary.' . $vocabulary, + ], + ]; + $new_field['settings'] = [ + 'handler_settings' => [ + 'target_bundles' => [ + 'department' => $vocabulary, + ], + ], + ]; + $new_field = FieldConfig::create($new_field); + $new_field->original = $field; + $new_field->enforceIsNew(FALSE); + $new_field->save(); + } } From f11b5823c8d5f55d8c80861a19be28addb95c917 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Thu, 31 Aug 2023 16:24:18 +1000 Subject: [PATCH 09/18] fixed lint --- tide_publication.install | 56 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/tide_publication.install b/tide_publication.install index 7db5ee8..a7d0356 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -1070,34 +1070,34 @@ function tide_publication_update_8016() { $config->set('cardinality', 1); $config->save(); - // Creates vocabulary if doesn't exist. - $vocabularies = Vocabulary::loadMultiple(); - if (!isset($vocabularies[$vocabulary])) { - $tidePublicationOperation->createVocabulary($vocabulary); - } + // Creates vocabulary if doesn't exist. + $vocabularies = Vocabulary::loadMultiple(); + if (!isset($vocabularies[$vocabulary])) { + $tidePublicationOperation->createVocabulary($vocabulary); + } - $field = FieldConfig::loadByName('node', $tidePublicationOperation::BUNDLE, $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_NAME); - if ($field->get('field_type') === $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE) { - $new_field = $field->toArray(); - $new_field['field_type'] = $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE; - $new_field['description'] = $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; - $new_field['dependencies'] = [ - 'config' => [ - 'field.storage.' . $config->get('id'), - 'node.type.' . $tidePublicationOperation::BUNDLE, - 'taxonomy.vocabulary.' . $vocabulary, - ], - ]; - $new_field['settings'] = [ - 'handler_settings' => [ - 'target_bundles' => [ - 'department' => $vocabulary, - ], + $field = FieldConfig::loadByName('node', $tidePublicationOperation::BUNDLE, $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_NAME); + if ($field->get('field_type') === $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE) { + $new_field = $field->toArray(); + $new_field['field_type'] = $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE; + $new_field['description'] = $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; + $new_field['dependencies'] = [ + 'config' => [ + 'field.storage.' . $config->get('id'), + 'node.type.' . $tidePublicationOperation::BUNDLE, + 'taxonomy.vocabulary.' . $vocabulary, + ], + ]; + $new_field['settings'] = [ + 'handler_settings' => [ + 'target_bundles' => [ + 'department' => $vocabulary, ], - ]; - $new_field = FieldConfig::create($new_field); - $new_field->original = $field; - $new_field->enforceIsNew(FALSE); - $new_field->save(); - } + ], + ]; + $new_field = FieldConfig::create($new_field); + $new_field->original = $field; + $new_field->enforceIsNew(FALSE); + $new_field->save(); + } } From 606b59c7bfdb4d4ed92cf4f82dcbcfced6893eae Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Thu, 31 Aug 2023 17:16:05 +1000 Subject: [PATCH 10/18] clean up --- src/TidePublicationOperation.php | 41 -------------------------------- 1 file changed, 41 deletions(-) diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php index b3e999a..dd5da00 100644 --- a/src/TidePublicationOperation.php +++ b/src/TidePublicationOperation.php @@ -36,47 +36,6 @@ class TidePublicationOperation { */ const PUBLICATION_AUTHORS_FIELD_STORAGE = 'field.storage.node.field_publication_authors'; - /** - * Update field_publication_authors to use new vocabulary. - * - * @param \Drupal\Core\Config\Config $config - * The config object. - * @param string $vocabulary - * The new vocabulary. - */ - public function updateFieldPublicationAuthorsVocabulary(Config $config, string $vocabulary) { - // Creates vocabulary if doesn't exist. - $vocabularies = Vocabulary::loadMultiple(); - if (!isset($vocabularies[$vocabulary])) { - $this->createVocabulary($vocabulary); - } - - $field = FieldConfig::loadByName('node', self::BUNDLE, self::PUBLICATION_AUTHORS_FIELD_NAME); - if ($field->get('field_type') === self::ENTITY_REFERENCE_FIELD_TYPE) { - $new_field = $field->toArray(); - $new_field['field_type'] = self::ENTITY_REFERENCE_FIELD_TYPE; - $new_field['description'] = self::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; - $new_field['dependencies'] = [ - 'config' => [ - 'field.storage.' . $config->get('id'), - 'node.type.' . self::BUNDLE, - 'taxonomy.vocabulary.' . $vocabulary, - ], - ]; - $new_field['settings'] = [ - 'handler_settings' => [ - 'target_bundles' => [ - 'department' => $vocabulary, - ], - ], - ]; - $new_field = FieldConfig::create($new_field); - $new_field->original = $field; - $new_field->enforceIsNew(FALSE); - $new_field->save(); - } - } - /** * Creates a new vocabulary. * From 661466a561286b65e33eeec4573a2e3fe76cd2d0 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Thu, 31 Aug 2023 17:24:08 +1000 Subject: [PATCH 11/18] fixed lint --- src/TidePublicationOperation.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php index dd5da00..5e3b0db 100644 --- a/src/TidePublicationOperation.php +++ b/src/TidePublicationOperation.php @@ -2,8 +2,6 @@ namespace Drupal\tide_publication; -use Drupal\Core\Config\Config; -use Drupal\field\Entity\FieldConfig; use Drupal\taxonomy\Entity\Vocabulary; /** From 307b1187a9b7cc2e2a470f4c7e10da03665e18df Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Mon, 4 Sep 2023 12:28:36 +1000 Subject: [PATCH 12/18] removed const --- src/TidePublicationOperation.php | 25 ------------------------- tide_publication.install | 12 ++++++------ 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/src/TidePublicationOperation.php b/src/TidePublicationOperation.php index 5e3b0db..95f0ed8 100644 --- a/src/TidePublicationOperation.php +++ b/src/TidePublicationOperation.php @@ -9,31 +9,6 @@ */ class TidePublicationOperation { - /** - * The bundle name. - */ - const BUNDLE = 'publication'; - - /** - * The entity reference field type. - */ - const ENTITY_REFERENCE_FIELD_TYPE = 'entity_reference'; - - /** - * The publication authors field name. - */ - const PUBLICATION_AUTHORS_FIELD_NAME = 'field_publication_authors'; - - /** - * The publication authors field description. - */ - const PUBLICATION_AUTHORS_FIELD_DESCRIPTION = 'Start typing to choose one publication author.'; - - /** - * The publication authors field storage. - */ - const PUBLICATION_AUTHORS_FIELD_STORAGE = 'field.storage.node.field_publication_authors'; - /** * Creates a new vocabulary. * diff --git a/tide_publication.install b/tide_publication.install index a7d0356..1e74f22 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -1066,7 +1066,7 @@ function tide_publication_update_8016() { $tidePublicationOperation = new TidePublicationOperation(); $vocabulary = 'organisation'; $config_factory = \Drupal::configFactory(); - $config = $config_factory->getEditable($tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_STORAGE); + $config = $config_factory->getEditable('field.storage.node.field_publication_authors'); $config->set('cardinality', 1); $config->save(); @@ -1076,15 +1076,15 @@ function tide_publication_update_8016() { $tidePublicationOperation->createVocabulary($vocabulary); } - $field = FieldConfig::loadByName('node', $tidePublicationOperation::BUNDLE, $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_NAME); - if ($field->get('field_type') === $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE) { + $field = FieldConfig::loadByName('node', $tidePublicationOperation::'publication', $tidePublicationOperation::'field_publication_authors'); + if ($field->get('field_type') === $tidePublicationOperation::'entity_reference') { $new_field = $field->toArray(); - $new_field['field_type'] = $tidePublicationOperation::ENTITY_REFERENCE_FIELD_TYPE; - $new_field['description'] = $tidePublicationOperation::PUBLICATION_AUTHORS_FIELD_DESCRIPTION; + $new_field['field_type'] = $tidePublicationOperation::'entity_reference'; + $new_field['description'] = $tidePublicationOperation::'Start typing to choose one publication author.'; $new_field['dependencies'] = [ 'config' => [ 'field.storage.' . $config->get('id'), - 'node.type.' . $tidePublicationOperation::BUNDLE, + 'node.type.' . $tidePublicationOperation::'publication', 'taxonomy.vocabulary.' . $vocabulary, ], ]; From b0fc836cf55d69d0dae5ce2b23a292680617fa03 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Mon, 4 Sep 2023 13:02:28 +1000 Subject: [PATCH 13/18] fix lint --- tide_publication.install | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tide_publication.install b/tide_publication.install index 1e74f22..223327f 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -1076,15 +1076,15 @@ function tide_publication_update_8016() { $tidePublicationOperation->createVocabulary($vocabulary); } - $field = FieldConfig::loadByName('node', $tidePublicationOperation::'publication', $tidePublicationOperation::'field_publication_authors'); - if ($field->get('field_type') === $tidePublicationOperation::'entity_reference') { + $field = FieldConfig::loadByName('node', 'publication', 'field_publication_authors'); + if ($field->get('field_type') === 'entity_reference') { $new_field = $field->toArray(); - $new_field['field_type'] = $tidePublicationOperation::'entity_reference'; - $new_field['description'] = $tidePublicationOperation::'Start typing to choose one publication author.'; + $new_field['field_type'] = 'entity_reference'; + $new_field['description'] = 'Start typing to choose one publication author.'; $new_field['dependencies'] = [ 'config' => [ 'field.storage.' . $config->get('id'), - 'node.type.' . $tidePublicationOperation::'publication', + 'node.type.' . 'publication', 'taxonomy.vocabulary.' . $vocabulary, ], ]; From b732dd183aa697ddcaf8dbc6d150649f4ebf2757 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Mon, 4 Sep 2023 13:11:59 +1000 Subject: [PATCH 14/18] fix lint --- tide_publication.install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tide_publication.install b/tide_publication.install index 223327f..55b67f4 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -1084,7 +1084,7 @@ function tide_publication_update_8016() { $new_field['dependencies'] = [ 'config' => [ 'field.storage.' . $config->get('id'), - 'node.type.' . 'publication', + 'node.type.publication', 'taxonomy.vocabulary.' . $vocabulary, ], ]; From 89cda8371e009dfdb78463563c6beba3094d1838 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 12 Sep 2023 12:55:48 +1000 Subject: [PATCH 15/18] added holder text in publication author field --- tide_publication.module | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tide_publication.module b/tide_publication.module index f46464b..c223c14 100644 --- a/tide_publication.module +++ b/tide_publication.module @@ -355,5 +355,8 @@ function tide_publication_form_alter(&$form, FormStateInterface $form_state, $fo }); } } + if (isset($form['field_publication_authors'])) { + $form['field_publication_authors']['widget'][0]['target_id']['#placeholder'] = t('Start typing'); + } } } From 180c3de9599b8f96a6422968220b1e502e117014 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 12 Sep 2023 12:59:57 +1000 Subject: [PATCH 16/18] update help text --- .../field.field.node.publication.field_publication_authors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/install/field.field.node.publication.field_publication_authors.yml b/config/install/field.field.node.publication.field_publication_authors.yml index b87758f..31bf545 100644 --- a/config/install/field.field.node.publication.field_publication_authors.yml +++ b/config/install/field.field.node.publication.field_publication_authors.yml @@ -10,7 +10,7 @@ field_name: field_publication_authors entity_type: node bundle: publication label: 'Publication author' -description: 'Start typing to choose one publication author.' +description: 'Start typing to choose one publication author. (Authors are added in the organisation taxonomy by your Site Admins.)' required: false translatable: false default_value: { } From b859f11c4496b5c9d53379f01843fdefd42678bb Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 12 Sep 2023 13:24:14 +1000 Subject: [PATCH 17/18] updated help text --- tide_publication.install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tide_publication.install b/tide_publication.install index 55b67f4..d775cd1 100644 --- a/tide_publication.install +++ b/tide_publication.install @@ -1080,7 +1080,7 @@ function tide_publication_update_8016() { if ($field->get('field_type') === 'entity_reference') { $new_field = $field->toArray(); $new_field['field_type'] = 'entity_reference'; - $new_field['description'] = 'Start typing to choose one publication author.'; + $new_field['description'] = 'Start typing to choose one publication author. (Authors are added in the organisation taxonomy by your Site Admins.)'; $new_field['dependencies'] = [ 'config' => [ 'field.storage.' . $config->get('id'), From a6af868cc2cd57f201fb17e78b99dc5e7a9468a3 Mon Sep 17 00:00:00 2001 From: Yeni Atencio Date: Tue, 12 Sep 2023 16:31:53 +1000 Subject: [PATCH 18/18] moved if conditional --- tide_publication.module | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tide_publication.module b/tide_publication.module index c223c14..38e0df2 100644 --- a/tide_publication.module +++ b/tide_publication.module @@ -355,8 +355,8 @@ function tide_publication_form_alter(&$form, FormStateInterface $form_state, $fo }); } } - if (isset($form['field_publication_authors'])) { - $form['field_publication_authors']['widget'][0]['target_id']['#placeholder'] = t('Start typing'); - } + } + if (isset($form['field_publication_authors'])) { + $form['field_publication_authors']['widget'][0]['target_id']['#placeholder'] = t('Start typing'); } }