diff --git a/src/Controller/Component/ACLComponent.php b/src/Controller/Component/ACLComponent.php index 729f81e..9619c35 100644 --- a/src/Controller/Component/ACLComponent.php +++ b/src/Controller/Component/ACLComponent.php @@ -107,6 +107,7 @@ class ACLComponent extends Component 'viewTags' => ['*'] ], 'Instance' => [ + 'downloadTopology' => ['perm_admin'], 'home' => ['*'], 'migrate' => ['perm_admin'], 'migrationIndex' => ['perm_admin'], @@ -114,7 +115,8 @@ class ACLComponent extends Component 'saveSetting' => ['perm_admin'], 'searchAll' => ['*'], 'settings' => ['perm_admin'], - 'status' => ['*'] + 'status' => ['*'], + 'topology' => ['perm_admin'], ], 'LocalTools' => [ 'action' => ['perm_admin'], diff --git a/src/Controller/Component/Navigation/sidemenu.php b/src/Controller/Component/Navigation/sidemenu.php index a701104..a97ec41 100644 --- a/src/Controller/Component/Navigation/sidemenu.php +++ b/src/Controller/Component/Navigation/sidemenu.php @@ -113,6 +113,11 @@ class Sidemenu { 'label' => __('Instance'), 'icon' => $this->iconTable['Instance'], 'children' => [ + 'Topology' => [ + 'label' => __('Topology'), + 'url' => '/instance/topology', + 'icon' => 'project-diagram', + ], 'Settings' => [ 'label' => __('Settings'), 'url' => '/instance/settings', diff --git a/src/Controller/InstanceController.php b/src/Controller/InstanceController.php index 6c8a77f..dd88647 100644 --- a/src/Controller/InstanceController.php +++ b/src/Controller/InstanceController.php @@ -188,4 +188,14 @@ class InstanceController extends AppController $this->set('description', __('A list of all instances and local tools connected .')); $this->set('data', $this->Instance->getTopology()); } + + public function downloadTopology() + { + $topologyMd = $this->Instance->getTopology(); + $response = $this->response; + $response = $response->withStringBody($topologyMd); + $response = $response->withType('text/markdown'); + $response = $response->withDownload('topology.md'); + return $response; + } }