From 225e92a51c6329c493023f424a630b3260be94c8 Mon Sep 17 00:00:00 2001 From: naomi Date: Sun, 3 Apr 2022 14:37:40 +0100 Subject: [PATCH] Added target field to activity --- .../opencase_entities.install | 42 +++++++++++++------ .../opencase_entities.module | 8 ++++ .../src/Entity/OCActivity.php | 28 +++++++++---- 3 files changed, 57 insertions(+), 21 deletions(-) diff --git a/modules/opencase_entities/opencase_entities.install b/modules/opencase_entities/opencase_entities.install index bd7941e..6d705af 100644 --- a/modules/opencase_entities/opencase_entities.install +++ b/modules/opencase_entities/opencase_entities.install @@ -4,6 +4,36 @@ use \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchemaConverter; use \Drupal\Core\Field\BaseFieldDefinition; + +function opencase_entities_update_90002() { + $field_storage_definition = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Target')) + ->setRevisionable(TRUE) + ->setSetting('target_type', 'oc_actor') + ->setSetting('handler', 'default') + ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::defaultTarget') + ->setDisplayConfigurable('form', true) + ->setDisplayConfigurable('view', true); + + + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition('oc_target', 'oc_activity', 'opencase_entities', $field_storage_definition); +} + + +function opencase_entities_update_90001() { + $storage_definition = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Provider')) + ->setRevisionable(TRUE) + ->setSetting('target_type', 'oc_actor') + ->setSetting('handler', 'default') + ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::loggedInActorId') + ->setDisplayConfigurable('form', true) + ->setDisplayConfigurable('view', true); + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition('oc_provider', 'oc_activity', 'oc_activity', $storage_definition); +} + function opencase_entities_update_80202() { \Drupal::entityTypeManager()->clearCachedDefinitions(); \Drupal::entityDefinitionUpdateManager() @@ -151,15 +181,3 @@ function opencase_entities_update_8003() { } -function opencase_entities_update_90001() { - $storage_definition = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference') - ->setLabel(t('Provider')) - ->setRevisionable(TRUE) - ->setSetting('target_type', 'oc_actor') - ->setSetting('handler', 'default') - ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::loggedInActorId') - ->setDisplayConfigurable('form', true) - ->setDisplayConfigurable('view', true); - \Drupal::entityDefinitionUpdateManager() - ->installFieldStorageDefinition('oc_provider', 'oc_activity', 'oc_activity', $storage_definition); -} diff --git a/modules/opencase_entities/opencase_entities.module b/modules/opencase_entities/opencase_entities.module index d07ebd8..8ab4e58 100644 --- a/modules/opencase_entities/opencase_entities.module +++ b/modules/opencase_entities/opencase_entities.module @@ -86,6 +86,14 @@ function opencase_entities_theme() { return $theme; } +/** + * Get the value of a url parameter and return it in a array + * so that it can be used as a default callback for an entity reference field. + */ +function opencase_entities_get($key) { + \Drupal::request()->query->get($key); +} + /** * Implements hook_theme_suggestions_HOOK(). */ diff --git a/modules/opencase_entities/src/Entity/OCActivity.php b/modules/opencase_entities/src/Entity/OCActivity.php index 14f7404..5389c92 100644 --- a/modules/opencase_entities/src/Entity/OCActivity.php +++ b/modules/opencase_entities/src/Entity/OCActivity.php @@ -97,7 +97,14 @@ class OCActivity extends RevisionableContentEntityBase implements OCActivityInte $linked_actor = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id())->field_linked_opencase_actor; if (empty($linked_actor)) return []; else return $linked_actor->target_id ; + + } + + public static function defaultTarget() { + if (opencase_entities_get('target_id')) return [opencase_entities_get('target_id')]; + else return []; } + /** * {@inheritdoc} */ @@ -244,6 +251,16 @@ class OCActivity extends RevisionableContentEntityBase implements OCActivityInte ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::loggedInActorId') ->setDisplayConfigurable('form', true) ->setDisplayConfigurable('view', true); + + + $fields['oc_target'] = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Target')) + ->setRevisionable(TRUE) + ->setSetting('target_type', 'oc_actor') + ->setSetting('handler', 'default') + ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::defaultTarget') + ->setDisplayConfigurable('form', true) + ->setDisplayConfigurable('view', true); $fields['status'] = BaseFieldDefinition::create('boolean') ->setLabel(t('Visible')) @@ -294,15 +311,8 @@ class OCActivity extends RevisionableContentEntityBase implements OCActivityInte 'text_processing' => 0, ]) ->setDefaultValue('') - ->setDisplayOptions('view', [ - 'label' => 'above', - 'type' => 'basic_string', - 'weight' => -1, - ]) - ->setDisplayOptions('form', [ - 'type' => 'string_textarea', - 'weight' => -1, - ]) + ->setDisplayConfigurable('form', true) + ->setDisplayConfigurable('view', true) ->setRequired(FALSE); $fields['time_taken'] = BaseFieldDefinition::create('decimal')