diff --git a/app/availableplugins/ApiConnector/src/Controller/ApiSourceEndpointsController.php b/app/availableplugins/ApiConnector/src/Controller/ApiSourceEndpointsController.php index f9fe4da31..119202628 100644 --- a/app/availableplugins/ApiConnector/src/Controller/ApiSourceEndpointsController.php +++ b/app/availableplugins/ApiConnector/src/Controller/ApiSourceEndpointsController.php @@ -48,6 +48,14 @@ class ApiSourceEndpointsController extends StandardPluginController { */ public function beforeRender(\Cake\Event\EventInterface $event) { + $link = $this->getPrimaryLink(true); + + if(!empty($link->value)) { + $this->set('vv_bc_parent_obj', $this->ApiSourceEndpoints->Apis->get($link->value)); + $this->set('vv_bc_parent_displayfield', $this->ApiSourceEndpoints->Apis->getDisplayField()); + $this->set('vv_bc_parent_primarykey', $this->ApiSourceEndpoints->Apis->getPrimaryKey()); + } + $vv_obj = $this->viewBuilder()->getVar('vv_obj'); if(!empty($vv_obj->external_identity_source->api_source->id)) { diff --git a/app/availableplugins/ApiConnector/src/Controller/ApiSourcesController.php b/app/availableplugins/ApiConnector/src/Controller/ApiSourcesController.php index 75ff700c5..b779a9a65 100644 --- a/app/availableplugins/ApiConnector/src/Controller/ApiSourcesController.php +++ b/app/availableplugins/ApiConnector/src/Controller/ApiSourcesController.php @@ -29,6 +29,7 @@ namespace ApiConnector\Controller; +use Cake\Event\EventInterface; use Cake\Routing\Router; use App\Controller\StandardPluginController; @@ -38,4 +39,25 @@ class ApiSourcesController extends StandardPluginController { 'ApiSources.id' => 'asc' ] ]; + + /** + * Callback run prior to the request render. + * + * @param EventInterface $event Cake Event + * + * @return Response|void + * @since COmanage Registry v5.0.0 + */ + + public function beforeRender(EventInterface $event) { + $link = $this->getPrimaryLink(true); + + if(!empty($link->value)) { + $this->set('vv_bc_parent_obj', $this->ApiSources->ExternalIdentitySources->get($link->value)); + $this->set('vv_bc_parent_displayfield', $this->ApiSources->ExternalIdentitySources->getDisplayField()); + $this->set('vv_bc_parent_primarykey', $this->ApiSources->ExternalIdentitySources->getPrimaryKey()); + } + + return parent::beforeRender($event); + } } diff --git a/app/availableplugins/ApiConnector/src/Model/Table/ApiSourcesTable.php b/app/availableplugins/ApiConnector/src/Model/Table/ApiSourcesTable.php index 0cb1f6d72..07bfdfdfa 100644 --- a/app/availableplugins/ApiConnector/src/Model/Table/ApiSourcesTable.php +++ b/app/availableplugins/ApiConnector/src/Model/Table/ApiSourcesTable.php @@ -42,7 +42,6 @@ class ApiSourcesTable extends Table { use \App\Lib\Traits\PrimaryLinkTrait; use \App\Lib\Traits\TableMetaTrait; use \App\Lib\Traits\ValidationTrait; - use \App\Lib\Traits\TabTrait; /** * Perform Cake Model initialization. diff --git a/app/availableplugins/ApiConnector/templates/ApiSourceEndpoints/fields.inc b/app/availableplugins/ApiConnector/templates/ApiSourceEndpoints/fields.inc index 909625d5f..e3b79cfa3 100644 --- a/app/availableplugins/ApiConnector/templates/ApiSourceEndpoints/fields.inc +++ b/app/availableplugins/ApiConnector/templates/ApiSourceEndpoints/fields.inc @@ -38,3 +38,11 @@ if(!empty($vv_push_endpoint)) { $fields = [ 'external_identity_source_id' ]; + +$subnav = [ + 'tabs' => ['Apis', 'ApiConnector.ApiSourceEndpoints'], + 'action' => [ + 'Apis' => ['edit'], + 'ApiConnector.ApiSourceEndpoints' => ['edit'] + ] +]; diff --git a/app/availableplugins/ApiConnector/templates/ApiSources/fields.inc b/app/availableplugins/ApiConnector/templates/ApiSources/fields.inc index 32722bfa7..e3178098d 100644 --- a/app/availableplugins/ApiConnector/templates/ApiSources/fields.inc +++ b/app/availableplugins/ApiConnector/templates/ApiSources/fields.inc @@ -38,3 +38,12 @@ $fields = [ 'subtitle' => __d('api_connector', 'field.ApiSources.push_mode') ] ]; + +$subnav = [ + 'tabs' => ['ExternalIdentitySources', 'ApiConnector.ApiSources', 'ExternalIdentitySources@action.search'], + 'action' => [ + 'ExternalIdentitySources' => ['edit', 'view', 'search'], + 'ApiConnector.ApiSources' => ['edit'], + 'ExternalIdentitySources@action.search' => [], + ], +]; diff --git a/app/availableplugins/FileConnector/src/Controller/FileProvisionersController.php b/app/availableplugins/FileConnector/src/Controller/FileProvisionersController.php index 3fe2ebd9e..fed47b8e2 100644 --- a/app/availableplugins/FileConnector/src/Controller/FileProvisionersController.php +++ b/app/availableplugins/FileConnector/src/Controller/FileProvisionersController.php @@ -30,6 +30,7 @@ namespace FileConnector\Controller; use App\Controller\StandardPluginController; +use Cake\Event\EventInterface; class FileProvisionersController extends StandardPluginController { protected array $paginate = [ @@ -37,4 +38,25 @@ class FileProvisionersController extends StandardPluginController { 'FileProvisioners.id' => 'asc' ] ]; + + /** + * Callback run prior to the request render. + * + * @param EventInterface $event Cake Event + * + * @return Response|void + * @since COmanage Registry v5.0.0 + */ + + public function beforeRender(EventInterface $event) { + $link = $this->getPrimaryLink(true); + + if(!empty($link->value)) { + $this->set('vv_bc_parent_obj', $this->FileProvisioners->ProvisioningTargets->get($link->value)); + $this->set('vv_bc_parent_displayfield', $this->FileProvisioners->ProvisioningTargets->getDisplayField()); + $this->set('vv_bc_parent_primarykey', $this->FileProvisioners->ProvisioningTargets->getPrimaryKey()); + } + + return parent::beforeRender($event); + } } diff --git a/app/availableplugins/FileConnector/src/Model/Table/FileSourcesTable.php b/app/availableplugins/FileConnector/src/Model/Table/FileSourcesTable.php index 5010d7267..ee57ddd7a 100644 --- a/app/availableplugins/FileConnector/src/Model/Table/FileSourcesTable.php +++ b/app/availableplugins/FileConnector/src/Model/Table/FileSourcesTable.php @@ -47,7 +47,6 @@ class FileSourcesTable extends Table { use \App\Lib\Traits\PrimaryLinkTrait; use \App\Lib\Traits\TableMetaTrait; use \App\Lib\Traits\ValidationTrait; - use \App\Lib\Traits\TabTrait; // Cache of the field configuration protected $fieldCfg = null; @@ -89,23 +88,6 @@ public function initialize(array $config): void { ] ]); - // All the tabs share the same configuration in the ModelTable file - $this->setTabsConfig( - [ - // Ordered list of Tabs - 'tabs' => ['ExternalIdentitySources', 'FileConnector.FileSources', 'ExternalIdentitySources@action.search'], - // What actions will include the subnavigation header - 'action' => [ - // If a model renders in a subnavigation mode in edit/view mode, it cannot - // render in index mode for the same use case/context - // XXX edit should go first. - 'ExternalIdentitySources' => ['edit', 'view', 'search'], - 'FileConnector.FileSources' => ['edit'], - 'ExternalIdentitySources@action.search' => [], - ], - ] - ); - $this->setPermissions([ // Actions that operate over an entity (ie: require an $id) 'entity' => [ diff --git a/app/availableplugins/FileConnector/templates/FileProvisioners/fields.inc b/app/availableplugins/FileConnector/templates/FileProvisioners/fields.inc index ffecf0e93..c5eb0f373 100644 --- a/app/availableplugins/FileConnector/templates/FileProvisioners/fields.inc +++ b/app/availableplugins/FileConnector/templates/FileProvisioners/fields.inc @@ -27,4 +27,12 @@ $fields = [ 'filename' -]; \ No newline at end of file +]; + +$subnav = [ + 'tabs' => ['ProvisioningTargets', 'FileConnector.FileProvisioners'], + 'action' => [ + 'ProvisioningTargets' => ['edit'], + 'FileConnector.FileProvisioners' => ['edit'] + ] +]; diff --git a/app/availableplugins/FileConnector/templates/FileSources/fields.inc b/app/availableplugins/FileConnector/templates/FileSources/fields.inc index 3fbde4e40..a9f4af3de 100644 --- a/app/availableplugins/FileConnector/templates/FileSources/fields.inc +++ b/app/availableplugins/FileConnector/templates/FileSources/fields.inc @@ -32,3 +32,12 @@ $fields = [ 'threshold_check', 'threshold_override', ]; + +$subnav = [ + 'tabs' => ['ExternalIdentitySources', 'FileConnector.FileSources', 'ExternalIdentitySources@action.search'], + 'action' => [ + 'ExternalIdentitySources' => ['edit', 'view', 'search'], + 'FileConnector.FileSources' => ['edit'], + 'ExternalIdentitySources@action.search' => [], + ], +]; diff --git a/app/availableplugins/KerberosConnector/src/Controller/KerberosServersController.php b/app/availableplugins/KerberosConnector/src/Controller/KerberosServersController.php index 089b2ef8e..e818c8cb8 100644 --- a/app/availableplugins/KerberosConnector/src/Controller/KerberosServersController.php +++ b/app/availableplugins/KerberosConnector/src/Controller/KerberosServersController.php @@ -30,6 +30,7 @@ namespace KerberosConnector\Controller; use App\Controller\StandardPluginController; +use Cake\Event\EventInterface; class KerberosServersController extends StandardPluginController { protected array $paginate = [ @@ -37,4 +38,25 @@ class KerberosServersController extends StandardPluginController { 'KerberosServers.hostname' => 'asc' ] ]; + + /** + * Callback run prior to the request render. + * + * @param EventInterface $event Cake Event + * + * @return Response|void + * @since COmanage Registry v5.0.0 + */ + + public function beforeRender(EventInterface $event) { + $link = $this->getPrimaryLink(true); + + if(!empty($link->value)) { + $this->set('vv_bc_parent_obj', $this->KerberosServers->Servers->get($link->value)); + $this->set('vv_bc_parent_displayfield', $this->KerberosServers->Servers->getDisplayField()); + $this->set('vv_bc_parent_primarykey', $this->KerberosServers->Servers->getPrimaryKey()); + } + + return parent::beforeRender($event); + } } diff --git a/app/availableplugins/KerberosConnector/templates/KerberosServers/fields.inc b/app/availableplugins/KerberosConnector/templates/KerberosServers/fields.inc index d4f28daf4..8b9f5afbc 100644 --- a/app/availableplugins/KerberosConnector/templates/KerberosServers/fields.inc +++ b/app/availableplugins/KerberosConnector/templates/KerberosServers/fields.inc @@ -33,3 +33,10 @@ $fields = [ 'keytab_path' ]; +$subnav = [ + 'tabs' => ['Servers', 'KerberosConnector.KerberosServers'], + 'action' => [ + 'Servers' => ['edit'], + 'KerberosConnector.KerberosServers' => ['edit'] + ] +]; diff --git a/app/availableplugins/PasswordAuthenticator/src/Controller/PasswordAuthenticatorsController.php b/app/availableplugins/PasswordAuthenticator/src/Controller/PasswordAuthenticatorsController.php index 06dba901f..cf0692b5b 100644 --- a/app/availableplugins/PasswordAuthenticator/src/Controller/PasswordAuthenticatorsController.php +++ b/app/availableplugins/PasswordAuthenticator/src/Controller/PasswordAuthenticatorsController.php @@ -30,6 +30,7 @@ namespace PasswordAuthenticator\Controller; use App\Controller\StandardPluginController; +use Cake\Event\EventInterface; class PasswordAuthenticatorsController extends StandardPluginController { protected array $paginate = [ @@ -37,4 +38,25 @@ class PasswordAuthenticatorsController extends StandardPluginController { 'PasswordAuthenticators.id' => 'asc' ] ]; + + /** + * Callback run prior to the request render. + * + * @param EventInterface $event Cake Event + * + * @return Response|void + * @since COmanage Registry v5.0.0 + */ + + public function beforeRender(EventInterface $event) { + $link = $this->getPrimaryLink(true); + + if(!empty($link->value)) { + $this->set('vv_bc_parent_obj', $this->PasswordAuthenticators->Authenticators->get($link->value)); + $this->set('vv_bc_parent_displayfield', $this->PasswordAuthenticators->Authenticators->getDisplayField()); + $this->set('vv_bc_parent_primarykey', $this->PasswordAuthenticators->Authenticators->getPrimaryKey()); + } + + return parent::beforeRender($event); + } } diff --git a/app/availableplugins/PasswordAuthenticator/templates/PasswordAuthenticators/fields.inc b/app/availableplugins/PasswordAuthenticator/templates/PasswordAuthenticators/fields.inc index bf1640b56..59452354b 100644 --- a/app/availableplugins/PasswordAuthenticator/templates/PasswordAuthenticators/fields.inc +++ b/app/availableplugins/PasswordAuthenticator/templates/PasswordAuthenticators/fields.inc @@ -34,6 +34,14 @@ $fields = [ 'format_plaintext' ]; +$subnav = [ + 'tabs' => ['Authenticators', 'PasswordAuthenticator.PasswordAuthenticators'], + 'action' => [ + 'Authenticators' => ['edit'], + 'PasswordAuthenticator.PasswordAuthenticators' => ['edit'] + ] +] + ?>