diff --git a/guacamole/src/main/webapp/app/navigation/directives/guacPageList.js b/guacamole/src/main/webapp/app/navigation/directives/guacPageList.js new file mode 100644 index 000000000..bd5f909c5 --- /dev/null +++ b/guacamole/src/main/webapp/app/navigation/directives/guacPageList.js @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2015 Glyptodon LLC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * A directive which provides a list of links to specific pages. + */ +angular.module('navigation').directive('guacPageList', [function guacPageList() { + + return { + restrict: 'E', + replace: true, + scope: { + + /** + * The array of pages to display. + * + * @type Page[] + */ + pages : '=' + + }, + + templateUrl: 'app/navigation/templates/guacPageList.html', + controller: ['$scope', '$injector', function guacPageListController($scope, $injector) { + + // Get required services + var $location = $injector.get('$location'); + + /** + * Navigate to the given page. + * + * @param {Page} page + * The page to navigate to. + */ + $scope.navigateToPage = function navigateToPage(page) { + $location.path(page.url); + }; + + /** + * Tests whether the given page is the page currently being viewed. + * + * @param {Page} page + * The page to test. + * + * @returns {Boolean} + * true if the given page is the current page, false otherwise. + */ + $scope.isCurrentPage = function isCurrentPage(page) { + return $location.url() === page.url; + }; + + }] // end controller + + }; +}]); diff --git a/guacamole/src/main/webapp/app/navigation/directives/guacUserMenu.js b/guacamole/src/main/webapp/app/navigation/directives/guacUserMenu.js index 1868cda06..aff6fff4a 100644 --- a/guacamole/src/main/webapp/app/navigation/directives/guacUserMenu.js +++ b/guacamole/src/main/webapp/app/navigation/directives/guacUserMenu.js @@ -214,29 +214,6 @@ angular.module('navigation').directive('guacUserMenu', [function guacUserMenu() }; - /** - * Navigate to the given page. - * - * @param {Page} page - * The page to navigate to. - */ - $scope.navigateToPage = function navigateToPage(page) { - $location.path(page.url); - }; - - /** - * Tests whether the given page should be disabled. - * - * @param {Page} page - * The page to test. - * - * @returns {Boolean} - * true if the given page should be disabled, false otherwise. - */ - $scope.isPageDisabled = function isPageDisabled(page) { - return $location.url() === page.url; - }; - /** * Logs out the current user, redirecting them to back to the login * screen after logout completes. diff --git a/guacamole/src/main/webapp/app/navigation/styles/user-menu.css b/guacamole/src/main/webapp/app/navigation/styles/user-menu.css index 617ec2be4..ae7daa2ef 100644 --- a/guacamole/src/main/webapp/app/navigation/styles/user-menu.css +++ b/guacamole/src/main/webapp/app/navigation/styles/user-menu.css @@ -139,8 +139,6 @@ top: 100%; right: 0; left: -1px; - margin: 0; - padding: 0; background: #EEE; box-shadow: 0 2px 2px rgba(0, 0, 0, 0.125); @@ -151,6 +149,11 @@ } +.user-menu .options ul { + margin: 0; + padding: 0; +} + .user-menu .user-menu-dropdown.open .options { visibility: visible; } @@ -172,8 +175,8 @@ background-color: #CDA; } -.user-menu .options li a.disabled, -.user-menu .options li a.disabled:hover { +.user-menu .options li a.current, +.user-menu .options li a.current:hover { background-color: transparent; cursor: default; opacity: 0.25; diff --git a/guacamole/src/main/webapp/app/navigation/templates/guacPageList.html b/guacamole/src/main/webapp/app/navigation/templates/guacPageList.html new file mode 100644 index 000000000..d303c8efc --- /dev/null +++ b/guacamole/src/main/webapp/app/navigation/templates/guacPageList.html @@ -0,0 +1,32 @@ +