diff --git a/guacamole/src/main/webapp/app/client/controllers/clientController.js b/guacamole/src/main/webapp/app/client/controllers/clientController.js index 41c6ba6b7..83fac716c 100644 --- a/guacamole/src/main/webapp/app/client/controllers/clientController.js +++ b/guacamole/src/main/webapp/app/client/controllers/clientController.js @@ -24,22 +24,25 @@ angular.module('client').controller('clientController', ['$scope', '$routeParams function clientController($scope, $routeParams, $injector) { // Required types + var ConnectionGroup = $injector.get('ConnectionGroup'); var ManagedClient = $injector.get('ManagedClient'); var ManagedClientState = $injector.get('ManagedClientState'); var ManagedFilesystem = $injector.get('ManagedFilesystem'); var ScrollState = $injector.get('ScrollState'); // Required services - var $location = $injector.get('$location'); - var authenticationService = $injector.get('authenticationService'); - var clipboardService = $injector.get('clipboardService'); - var guacClientManager = $injector.get('guacClientManager'); - var guacNotification = $injector.get('guacNotification'); - var iconService = $injector.get('iconService'); - var preferenceService = $injector.get('preferenceService'); - var requestService = $injector.get('requestService'); - var tunnelService = $injector.get('tunnelService'); - var userPageService = $injector.get('userPageService'); + var $location = $injector.get('$location'); + var authenticationService = $injector.get('authenticationService'); + var connectionGroupService = $injector.get('connectionGroupService'); + var clipboardService = $injector.get('clipboardService'); + var dataSourceService = $injector.get('dataSourceService'); + var guacClientManager = $injector.get('guacClientManager'); + var guacNotification = $injector.get('guacNotification'); + var iconService = $injector.get('iconService'); + var preferenceService = $injector.get('preferenceService'); + var requestService = $injector.get('requestService'); + var tunnelService = $injector.get('tunnelService'); + var userPageService = $injector.get('userPageService'); /** * The minimum number of pixels a drag gesture must move to result in the @@ -264,6 +267,25 @@ angular.module('client').controller('clientController', ['$scope', '$routeParams */ $scope.client = guacClientManager.getManagedClient($routeParams.id, $routeParams.params); + /** + * Map of data source identifier to the root connection group of that data + * source, or null if the connection group hierarchy has not yet been + * loaded. + * + * @type Object. + */ + $scope.rootConnectionGroups = null; + + // Retrieve root groups and all descendants + dataSourceService.apply( + connectionGroupService.getConnectionGroupTree, + authenticationService.getAvailableDataSources(), + ConnectionGroup.ROOT_IDENTIFIER + ) + .then(function rootGroupsRetrieved(rootConnectionGroups) { + $scope.rootConnectionGroups = rootConnectionGroups; + }, requestService.WARN); + /** * Map of all available sharing profiles for the current connection by * their identifiers. If this information is not yet available, or no such diff --git a/guacamole/src/main/webapp/app/client/styles/guac-menu.css b/guacamole/src/main/webapp/app/client/styles/guac-menu.css index 9e0fb7ca7..e3bc708ab 100644 --- a/guacamole/src/main/webapp/app/client/styles/guac-menu.css +++ b/guacamole/src/main/webapp/app/client/styles/guac-menu.css @@ -65,6 +65,24 @@ margin-top: 1em; } +#guac-menu .header h2 { + padding: 0; +} + +#guac-menu .header h2 .menu-dropdown { + border: none; + background: transparent; +} + +#guac-menu .header h2 .menu-contents { + font-weight: normal; + font-size: 0.8em; +} + +#guac-menu .header h2 .menu-contents .all-connections { + margin: 0; +} + #guac-menu #mouse-settings .choice { text-align: center; } diff --git a/guacamole/src/main/webapp/app/client/templates/client.html b/guacamole/src/main/webapp/app/client/templates/client.html index 93dc417ce..004cd946c 100644 --- a/guacamole/src/main/webapp/app/client/templates/client.html +++ b/guacamole/src/main/webapp/app/client/templates/client.html @@ -47,7 +47,20 @@
-

{{client.name}}

+

{{client.name}}

+

+ +
+ +
+
+