From 5d2c39d6fc110c7876038361374216cea15f7409 Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Fri, 3 Nov 2023 11:35:08 +1100 Subject: [PATCH] [SDPAP-8421] Apply content category field and taxonomy https://digital-vic.atlassian.net/browse/SDPAP-8421 --- ...entity_form_display.node.grant.default.yml | 13 +++++++++ ...ield.node.grant.field_content_category.yml | 28 +++++++++++++++++++ src/TideGrantOperation.php | 8 ++++++ tide_grant.install | 28 +++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 config/install/field.field.node.grant.field_content_category.yml diff --git a/config/install/core.entity_form_display.node.grant.default.yml b/config/install/core.entity_form_display.node.grant.default.yml index 16bd4d1..cca2c47 100644 --- a/config/install/core.entity_form_display.node.grant.default.yml +++ b/config/install/core.entity_form_display.node.grant.default.yml @@ -30,6 +30,7 @@ dependencies: - field.field.node.grant.field_show_social_sharing - field.field.node.grant.field_tags - field.field.node.grant.field_topic + - field.field.node.grant.field_content_category - node.type.grant module: - content_moderation @@ -44,6 +45,7 @@ dependencies: - range - telephone - text + - term_reference_tree third_party_settings: field_group: group_grant_overview: @@ -481,6 +483,17 @@ content: third_party_settings: { } type: entity_reference_autocomplete region: content + field_content_category: + type: term_reference_tree + weight: 1 + region: content + settings: + start_minimized: true + leaves_only: true + select_parents: false + cascading_selection: 0 + max_depth: 0 + third_party_settings: { } moderation_state: type: moderation_state_default weight: 9 diff --git a/config/install/field.field.node.grant.field_content_category.yml b/config/install/field.field.node.grant.field_content_category.yml new file mode 100644 index 0000000..9618a14 --- /dev/null +++ b/config/install/field.field.node.grant.field_content_category.yml @@ -0,0 +1,28 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_content_category + - node.type.grant + - taxonomy.vocabulary.content_category +id: node.grant.field_content_category +field_name: field_content_category +entity_type: node +bundle: grant +label: 'Content category' +description: 'Select the most relevant option from the list of content categories. This mandatory field will help with search and filtering on the website.' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: + handler: 'default:taxonomy_term' + handler_settings: + target_bundles: + content_category: content_category + sort: + field: name + direction: asc + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/src/TideGrantOperation.php b/src/TideGrantOperation.php index 63e71a0..7d12be1 100644 --- a/src/TideGrantOperation.php +++ b/src/TideGrantOperation.php @@ -113,4 +113,12 @@ public function assignNecessaryPermissions() { } } + /** + * Add default value to Content Category. + */ + public function addDefaultValueToContentCategory() { + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/updates'); + _tide_core_field_content_category_default_value('grant', 'Grant'); + } + } diff --git a/tide_grant.install b/tide_grant.install index c0d0d4b..a1d1cc8 100644 --- a/tide_grant.install +++ b/tide_grant.install @@ -19,6 +19,7 @@ function tide_grant_install() { $grantoperation->addGrantAuthorUser(); $grantoperation->assignNecessaryPermissions(); $grantoperation->enableEditorialWorkflow(); + $grantoperation->addDefaultValueToContentCategory(); } /** @@ -35,3 +36,30 @@ function tide_grant_uninstall() { // Remove the image styles that Linkit has installed. $config_factory->getEditable('user.role.grant_author')->delete(); } + +/** + * Implements hook_update_dependencies(). + */ +function tide_grant_update_dependencies() { + $dependencies = []; + $dependencies['tide_grant'][10001] = ['tide_core' => 10005]; + return $dependencies; +} + +/** + * Imports field.field.node.grant.field_content_category for existing sites. + */ +function tide_grant_update_10001() { + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); + $config_location = [\Drupal::service('extension.list.module')->getPath('tide_grant') . '/config/install']; + $config_read = _tide_read_config('field.field.node.grant.field_content_category', $config_location, TRUE); + $storage = \Drupal::entityTypeManager()->getStorage('field_config'); + $id = $storage->getIDFromConfigName('field.field.node.grant.field_content_category', $storage->getEntityType()->getConfigPrefix()); + if ($storage->load($id) == NULL) { + $config_entity = $storage->createFromStorageRecord($config_read); + $config_entity->save(); + } + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/updates'); + _tide_core_field_content_category_default_value('grant', 'Grant'); + _tide_core_content_category_form_display('grant'); +}