From 5f790c73c7a8b94d2ccf40113e9fb094acdcdf2f Mon Sep 17 00:00:00 2001 From: naomi Date: Sat, 4 Dec 2021 06:19:54 +0000 Subject: [PATCH] Removed obsolete code from opencase_defaults --- .../opencase_defaults.module | 90 ------- .../src/EntityTypeRelations.php | 10 - .../src/Plugin/Block/ContextualMenu.php | 244 ------------------ 3 files changed, 344 deletions(-) delete mode 100644 modules/opencase_defaults/src/Plugin/Block/ContextualMenu.php diff --git a/modules/opencase_defaults/opencase_defaults.module b/modules/opencase_defaults/opencase_defaults.module index 3fea0e7..c83a865 100644 --- a/modules/opencase_defaults/opencase_defaults.module +++ b/modules/opencase_defaults/opencase_defaults.module @@ -28,31 +28,6 @@ function opencase_defaults_help($route_name, RouteMatchInterface $route_match) { } } -/** - * Implements hook_preprocess_page_title - * - * Modify the page title to include more information - */ -function opencase_defaults_preprocess_page_title(&$variables) { - - $route_name = \Drupal::routeMatch()->getRouteName(); - switch ($route_name) { - case 'entity.oc_case.canonical': - $case = \Drupal::routeMatch()->getParameter('oc_case'); - $variables['title'] = $case->getName() . ": Case Details and Files"; - break; - case 'view.cases.page_1': - $actor_id = \Drupal::routeMatch()->getParameter('actor_id'); - $actor = \Drupal::entityTypeManager()->getStorage('oc_actor')->load($actor_id); - $variables['title'] = $actor->getName() . ": Cases"; - break; - case 'view.activities.page_1': - $case_id = \Drupal::routeMatch()->getParameter('case_id'); - $case = \Drupal::entityTypeManager()->getStorage('oc_case')->load($case_id); - $variables['title'] = $case->getName() . ": Activities"; - break; - } -} /** * Implements hook_theme(). */ @@ -64,33 +39,6 @@ function opencase_defaults_theme() { ]; } -/** - * Implements hook_block_access - * - * Forbids the opencase_contextual_menu block on pages where it has no content. - * (Without this, it was displaying an empty sidebar) - */ -function opencase_defaults_block_access(\Drupal\block\Entity\Block $block, $operation, \Drupal\Core\Session\AccountInterface $account) { - if ($operation == 'view' && $block->getPluginId() == 'opencase_contextual_menu') { - $route_name = \Drupal::routeMatch()->getRouteName(); - $routes_where_it_should_be_shown = [ - 'entity.oc_actor.canonical', - 'entity.oc_actor.edit_form', - 'view.cases.page_1', - 'entity.oc_case.canonical', - 'entity.oc_case.edit_form', - 'entity.oc_case.add_form', - 'view.activities.page_1', - 'entity.oc_activity.canonical', - 'entity.oc_activity.edit_form', - 'entity.oc_activity.add_form', - ]; - return AccessResult::forbiddenIf(!in_array($route_name, $routes_where_it_should_be_shown))->addCacheableDependency($block); - } - - // No opinion. - return AccessResult::neutral(); -} function opencase_defaults_entity_base_field_info($entity_type) { $fields = array(); @@ -108,47 +56,9 @@ function opencase_defaults_entity_base_field_info($entity_type) { 'weight' => -6, )); } - - // Add Involved Parties field to cases - if ($entity_type->id() === 'oc_case') { - $fields['actors_involved'] = BaseFieldDefinition::create('entity_reference') - ->setLabel(t('Involved Parties')) - ->setDescription(t('People involved in this case. To add one, start typing their name.')) - ->setSetting('target_type', 'oc_actor') - ->setSetting('handler', 'default') - ->setTranslatable(TRUE) - ->setCardinality(-1) - ->setDisplayOptions('form', [ - 'label' => 'above', - 'type' => 'entity_reference_autocomplete', - 'weight' => -2, - 'settings' => [ - 'match_operator' => 'CONTAINS', - 'size' => '60', - 'autocomplete_type' => 'tags', - 'placeholder' => '', - ], - ]) - ->setDisplayOptions('view', [ - 'label' => 'above', - ]) - ->setDefaultValueCallback('opencase_defaults_actors_involved_callback') - ->setRequired(TRUE); - } return $fields; } -/** - * When creating a case, it sets the first involved party to the actor - * id from the URL, and the second to the author's linked actor - * (if it exists and is different) - */ -function opencase_defaults_actors_involved_callback() { - $author_linked_actor_id = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id())->get('field_linked_opencase_actor')->target_id; - $currently_viewed_actor_id = \Drupal::request()->query->get('actor_id'); - return array_unique([$currently_viewed_actor_id, $author_linked_actor_id]); -} - /** * Implements hook_form_ID_alter */ diff --git a/modules/opencase_defaults/src/EntityTypeRelations.php b/modules/opencase_defaults/src/EntityTypeRelations.php index 328266f..9110dd6 100644 --- a/modules/opencase_defaults/src/EntityTypeRelations.php +++ b/modules/opencase_defaults/src/EntityTypeRelations.php @@ -8,16 +8,6 @@ namespace Drupal\opencase; */ class EntityTypeRelations { - - public static function getAllowedActorTypesForCaseType($case_type) { - $base_field_override = \Drupal\Core\Field\Entity\BaseFieldOverride::load("oc_case.$case_type.actors_involved"); - $allowedActorTypes = array(); - if ($base_field_override) { - $allowedActorTypes = $base_field_override->getSettings()['handler_settings']['target_bundles']; - } - return $allowedActorTypes; // // format: ['volunteer' => 0, 'client' => 'client'] - } - public static function getAllowedActivityTypesForCaseType($case_type) { $caseTypeConfig = \Drupal::entityTypeManager()->getStorage('oc_case_type')->load($case_type); $allowedActivityTypes = $caseTypeConfig->get('allowedActivityTypes'); // format: ['application' => 'application', 'interview' => 0] diff --git a/modules/opencase_defaults/src/Plugin/Block/ContextualMenu.php b/modules/opencase_defaults/src/Plugin/Block/ContextualMenu.php deleted file mode 100644 index 641c05d..0000000 --- a/modules/opencase_defaults/src/Plugin/Block/ContextualMenu.php +++ /dev/null @@ -1,244 +0,0 @@ -getRouteName(); - switch ($route_name) { - case 'entity.oc_actor.canonical': - case 'entity.oc_actor.edit_form': - $markup = $this->actorPage(); - break; - case 'view.cases.page_1': - $markup = $this->caseListPageForActor(); - break; - case 'entity.oc_case.canonical': - case 'entity.oc_case.edit_form': - $markup = $this->casePage(); - break; - case 'entity.oc_case.add_form': - $markup = $this->caseAddPage(); - break; - case 'view.activities.page_1': - $markup = $this->activityListPage(); - break; - case 'entity.oc_activity.canonical': - case 'entity.oc_activity.edit_form': - $markup = $this->activityPage(); - break; - case 'entity.oc_activity.add_form': - $markup = $this->activityAddPage(); - break; - } - - $build = []; - $build['contextual_menu'] = [ - '#markup' => "
$markup ['max-age' => 0] - ]; - return $build; - } - - - /** - * Contextual menu for Actor page - * - Link to case list for that actor - */ - private function actorPage() { - $actor_id = \Drupal::routeMatch()->getParameter('oc_actor')->id(); - $link = $this->getCaseListLink('oc_actor', $actor_id); - return $this->asNavLinks([$link]); - } - - /** - * Contextual menu for Case list page - * - Link to actor whose case list this is - * - Links to add cases of various types - * - Store the actor id in the session, so that the user experiences - * a hierachy actor->case->activities which they can navigate - */ - private function caseListPageForActor() { - $actor_id = \Drupal::routeMatch()->getParameter('actor_id'); - \Drupal::service('user.private_tempstore')->get('opencase')->set('parent_type', 'oc_actor'); - \Drupal::service('user.private_tempstore')->get('opencase')->set('parent_id', $actor_id); - $actor = \Drupal::entityTypeManager()->getStorage('oc_actor')->load($actor_id); - $link = $actor->toLink()->toString(); - $markup = $this->asNavLinks([$link]); - $current_path = \Drupal::service('path.current')->getPath(); - $title = "Add new case"; - $query = ['actor_id' => $actor_id, 'destination' => $current_path]; - $markup .= $this->generateLinksForAddingNewCasesForActor($actor, $title, $query); - return $markup; - } - - /** - * Contextual menu for Case page - * - Link either the case list for the actor stored in the session (because their case list page was previously loaded) - * or the home page - * - Link to Activity list for that case - */ - private function casePage() { - $case = \Drupal::routeMatch()->getParameter('oc_case'); - $links = [$this->getCaseListLinkForParentEntity(), $this->getActivityListLink($case)]; - return $this->asNavLinks($links); - } - - /** - * Contextual menu for Add-New-Case page - * - Link to Case list for the parent entity (actor by default but plugins can change the type) - * that is stored in the session - */ - private function caseAddPage() { - $link = $this->getCaseListLinkForParentEntity(); - return $this->asNavLinks([$link]); - } - - private function getCaseListLinkForParentEntity() { - $parent_type = \Drupal::service('user.private_tempstore')->get('opencase')->get('parent_type'); - $parent_id = \Drupal::service('user.private_tempstore')->get('opencase')->get('parent_id'); - return $this->getCaseListLink($parent_type, $parent_id); - } - private function getCaseListLink($entity_type, $entity_id) { - $url = "/opencase/$entity_type/$entity_id/case_list"; - $entity = \Drupal::entityTypeManager()->getStorage($entity_type)->load($entity_id); - $link_text = $entity->getName(). ": Cases"; - return "$link_text"; - } - - /** - * Returns a link to the list of all cases - */ - private function getCaseListLinkAll() { - $url = Url::fromRoute('view.cases.page_2'); - return Link::fromTextAndUrl(t("All cases"), $url)->toString(); - } - - /** - * Contextual menu for Activity list page - * - Link to the case that the activity list is for - * - Links to add activities of various types - */ - private function activityListPage() { - $case_id = \Drupal::routeMatch()->getParameter('case_id'); - $case = \Drupal::entityTypeManager()->getStorage('oc_case')->load($case_id); - $url = $case->toUrl(); - $link = Link::fromTextAndUrl(t($case->getName() .": Case Details and Files"), $url)->toString(); - $markup = $this->asNavLinks([$link]); - $current_path = \Drupal::service('path.current')->getPath(); - return $markup . $this->generateLinksForAddingNewActivities($case, "Add activity", ['case_id' => $case_id, 'destination' => $current_path]); - } - - /** - * Contextual menu for Activity page - * - Link to the activity list for the case - */ - private function activityPage() { - $activity = \Drupal::routeMatch()->getParameter('oc_activity'); - $case = $activity->oc_case->entity; - $link = $this->getActivityListLink($case); - return $this->asNavLinks([$link]); - } - - - /** - * Contextual menu for Add-New-Activity page - * - Link to the activity list for the case - */ - private function activityAddPage() { - $case_id = \Drupal::request()->query->get('case_id'); - $case = \Drupal::entityTypeManager()->getStorage('oc_case')->load($case_id); - $link = $this->getActivityListLink($case); - return $this->asNavLinks([$link]); - } - - - /** - * Given an case entity, returns a link to the activity list - */ - private function getActivityListLink($case) { - $url = Url::fromRoute('view.activities.page_1', ['case_id' => $case->id()]); - return Link::fromTextAndUrl(t($case->getName() .": Activities"), $url)->toString(); - } - - /** - * Render given links as nav links div with heading - */ - private function asNavLinks(array $links) { - $markup = ''; - foreach($links as $link) { - $markup .= "

$link

"; - } - $title = t("Go to:"); - return ""; - } - - /** - * returns html markup. - */ - private function generateLinksForAddingNewCasesForActor($actor, $title, $query = []) { - $actor_type = $actor->bundle(); - $allCaseTypes = \Drupal::service('entity_type.bundle.info')->getBundleInfo('oc_case'); - // $allCaseTypes is array where the key is the machine name and the value is array containing label - // Now we pick just the allowed ones and produced an array of labels keyed by machine name - $allowedCaseTypes = array(); - foreach(array_keys($allCaseTypes) as $caseType) { - if (in_array($actor_type, EntityTypeRelations::getAllowedActorTypesForCaseType($caseType))) { - $allowedCaseTypes[$caseType] = $allCaseTypes[$caseType]['label']; - } - } - $title = t($title); - $markup = "

$title:

"; - foreach($allowedCaseTypes as $machine_name => $label) { - $url = \Drupal\Core\Url::fromRoute("entity.oc_case.add_form", ['oc_case_type' => $machine_name]); - $url->setOption('query', $query); - $link = \Drupal\Core\Link::fromTextAndUrl($label, $url)->toString(); - $markup .= "

$link

"; - } - return ""; - } - - /** - * returns html markup. - */ - private function generateLinksForAddingNewActivities($case, $title, $query = []) { - $title = t($title); - $markup = "

$title:

"; - $caseType = $case->bundle(); - $allActivityTypes = \Drupal::service('entity_type.bundle.info')->getBundleInfo('oc_activity'); - // $allActivityTypes is array where the key is the machine name and the value is array containing label - // Now we pick just the allowed ones and produced an array of labels keyed by machine name - $allowedActivityTypes = EntityTypeRelations::getAllowedActivityTypesForCaseType($caseType); - foreach($allowedActivityTypes as $machine_name => $is_allowed) { - if ($is_allowed) { - $label = $allActivityTypes[$machine_name]['label']; - $url = \Drupal\Core\Url::fromRoute("entity.oc_activity.add_form", ['oc_activity_type' => $machine_name]); - $url->setOption('query', $query); - $link = \Drupal\Core\Link::fromTextAndUrl($label, $url)->toString(); - $markup .= "

$link

"; - } - } - return ""; - } -}