Skip to content

Commit

Permalink
Restore subnavigation links and titles (CFM-292) (#98)
Browse files Browse the repository at this point in the history
  • Loading branch information
arlen authored Jun 17, 2023
1 parent d8a60ea commit 0cf22b4
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 3 deletions.
58 changes: 58 additions & 0 deletions app/src/Controller/MVEAController.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,64 @@ public function beforeFilter(\Cake\Event\EventInterface $event) {
$this->Breadcrumb->injectPrimaryLink($parentPrimaryLink);
$this->Breadcrumb->injectPrimaryLink($primaryLink);
}

// Set up the supertitle and links for subnavigation
if(!empty($primaryLink->value)) {
$this->set('vv_primary_link_attr', $primaryLink->attr);
$this->set('vv_primary_link_id', $primaryLink->value);

$Names = $this->getTableLocator()->get('Names');

switch($primaryLink->attr) {
case 'external_identity_role_id':
$ExternalIdentityRoles = $this->getTableLocator()->get('ExternalIdentityRoles');
$roleEntity = $ExternalIdentityRoles->findById((int)$primaryLink->value)->firstOrFail();

// Note this is a string, but vv_person_name is an entity
$this->set('vv_ei_role', $ExternalIdentityRoles->generateDisplayField($roleEntity));
$this->set('vv_ei_role_id', $primaryLink->value);
// fall through
case 'external_identity_id':
$ExternalIdentity = $this->getTableLocator()->get('ExternalIdentities');

// What's the Person ID for the ExternalIdentity?
$eiId = isset($roleEntity) ? $roleEntity->external_identity_id : $primaryLink->value;

$externalIdentity = $ExternalIdentity->findById($eiId)->firstOrFail();

// What's the primary name for the Extarnal Identity?
$this->set('vv_ei_name', $Names->primaryName($externalIdentity->id, 'external_identity'));
$this->set('vv_ei_id', $externalIdentity->id);

// What's the primary name of the Person?
$personName = $Names->primaryName($externalIdentity->person_id);
$this->set('vv_person_name', $personName);
$this->set('vv_supertitle', $personName->full_name);
$this->set('vv_person_id', $externalIdentity->person_id);
break;
case 'person_role_id':
$PersonRoles = $this->getTableLocator()->get('PersonRoles');
$roleEntity = $PersonRoles->findById((int)$primaryLink->value)->firstOrFail();
// Note this is a string, but vv_person_name is an entity
$this->set('vv_person_role', $PersonRoles->generateDisplayField($roleEntity));
$this->set('vv_person_role_id', $primaryLink->value);

// Also set a name
$personName = $Names->primaryName($roleEntity->person_id);
$this->set('vv_person_name', $personName);
$this->set('vv_supertitle', $personName->full_name);
$this->set('vv_person_id', $roleEntity->person_id);
break;
case 'person_id':
$personName = $Names->primaryName((int)$primaryLink->value);
$this->set('vv_person_name', $personName);
$this->set('vv_supertitle', $personName->full_name);
$this->set('vv_person_id', $primaryLink->value);
break;
default;
break;
}
}
}

return parent::beforeFilter($event);
Expand Down
6 changes: 3 additions & 3 deletions app/templates/element/subnavigation.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,12 @@
}

$supertitle = __d('information','global.title.none');
if(!empty($vv_supertitle)) {
if(!empty($vv_person_name)) {
$supertitle = $vv_person_name->full_name;
} elseif(!empty($vv_supertitle)) {
$supertitle = $vv_supertitle;
} elseif(!empty($vv_obj)) {
$supertitle = $vv_obj->$vv_display_field;
} elseif(!empty($vv_person_name)) {
$supertitle = $vv_person_name->full_name;
} elseif(!empty($vv_bc_parent_obj)) {
$supertitle = $vv_bc_parent_obj->$vv_bc_parent_displayfield;
}
Expand Down

0 comments on commit 0cf22b4

Please sign in to comment.