mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	GUAC-1172: Display file browser within own menu. Show available devices in guac menu.
This commit is contained in:
		| @@ -558,6 +558,43 @@ angular.module('client').controller('clientController', ['$scope', '$routeParams | |||||||
|     // Set client-specific menu actions |     // Set client-specific menu actions | ||||||
|     $scope.clientMenuActions = [ DISCONNECT_MENU_ACTION ]; |     $scope.clientMenuActions = [ DISCONNECT_MENU_ACTION ]; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * The currently-visible filesystem within the filesystem menu, if the | ||||||
|  |      * filesystem menu is open. If no filesystem is currently visible, this | ||||||
|  |      * will be null. | ||||||
|  |      * | ||||||
|  |      * @type ManagedFilesystem | ||||||
|  |      */ | ||||||
|  |     $scope.filesystemMenuContents = null; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Hides the filesystem menu. | ||||||
|  |      */ | ||||||
|  |     $scope.hideFilesystemMenu = function hideFilesystemMenu() { | ||||||
|  |         $scope.filesystemMenuContents = null; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Shows the filesystem menu, displaying the contents of the given | ||||||
|  |      * filesystem within it. | ||||||
|  |      * | ||||||
|  |      * @param {ManagedFilesystem} filesystem | ||||||
|  |      *     The filesystem to show within the filesystem menu. | ||||||
|  |      */ | ||||||
|  |     $scope.showFilesystemMenu = function showFilesystemMenu(filesystem) { | ||||||
|  |         $scope.filesystemMenuContents = filesystem; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Returns whether the filesystem menu should be visible. | ||||||
|  |      * | ||||||
|  |      * @returns {Boolean} | ||||||
|  |      *     true if the filesystem menu is shown, false otherwise. | ||||||
|  |      */ | ||||||
|  |     $scope.isFilesystemMenuShown = function isFilesystemMenuShown() { | ||||||
|  |         return !!$scope.filesystemMenuContents && $scope.menu.shown; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|     // Clean up when view destroyed |     // Clean up when view destroyed | ||||||
|     $scope.$on('$destroy', function clientViewDestroyed() { |     $scope.$on('$destroy', function clientViewDestroyed() { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,48 @@ | |||||||
|  | /* | ||||||
|  |  * 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. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #filesystem-menu .header h2 { | ||||||
|  |  | ||||||
|  |     font-size: 1em; | ||||||
|  |     font-weight: normal; | ||||||
|  |  | ||||||
|  |     padding-top: 0; | ||||||
|  |     padding-bottom: 0; | ||||||
|  |     padding-left: 3.5em; | ||||||
|  |  | ||||||
|  |     background-size:         1.5em 1.5em; | ||||||
|  |     -moz-background-size:    1.5em 1.5em; | ||||||
|  |     -webkit-background-size: 1.5em 1.5em; | ||||||
|  |     -khtml-background-size:  1.5em 1.5em; | ||||||
|  |     background-repeat: no-repeat; | ||||||
|  |     background-position: 1em center; | ||||||
|  |     background-image: url('images/drive.png'); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #filesystem-menu .header { | ||||||
|  |     -ms-flex-align:      center; | ||||||
|  |     -moz-box-align:      center; | ||||||
|  |     -webkit-box-align:   center; | ||||||
|  |     -webkit-align-items: center; | ||||||
|  |     align-items:         center; | ||||||
|  | } | ||||||
| @@ -160,3 +160,29 @@ | |||||||
| #guac-menu #zoom-state { | #guac-menu #zoom-state { | ||||||
|     font-size: 2em; |     font-size: 2em; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #guac-menu #devices .device { | ||||||
|  |  | ||||||
|  |     padding: 1em; | ||||||
|  |     border: 1px solid rgba(0, 0, 0, 0.125); | ||||||
|  |     background: rgba(0, 0, 0, 0.04); | ||||||
|  |  | ||||||
|  |     padding-left: 3.5em; | ||||||
|  |     background-size:         1.5em 1.5em; | ||||||
|  |     -moz-background-size:    1.5em 1.5em; | ||||||
|  |     -webkit-background-size: 1.5em 1.5em; | ||||||
|  |     -khtml-background-size:  1.5em 1.5em; | ||||||
|  |  | ||||||
|  |     background-repeat: no-repeat; | ||||||
|  |     background-position: 1em center; | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #guac-menu #devices .device:hover { | ||||||
|  |     cursor: pointer; | ||||||
|  |     border-color: black; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #guac-menu #devices .device.filesystem { | ||||||
|  |     background-image: url('images/drive.png'); | ||||||
|  | } | ||||||
|   | |||||||
| @@ -74,6 +74,16 @@ | |||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|  |  | ||||||
|  |                 <!-- Devices --> | ||||||
|  |                 <div class="menu-section" id="devices" ng-show="client.filesystems.length"> | ||||||
|  |                     <h3>{{'CLIENT.SECTION_HEADER_DEVICES' | translate}}</h3> | ||||||
|  |                     <div class="content"> | ||||||
|  |                         <div class="device filesystem" ng-repeat="filesystem in client.filesystems" ng-click="showFilesystemMenu(filesystem)"> | ||||||
|  |                             {{filesystem.name}} | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |  | ||||||
|                 <!-- File transfers --> |                 <!-- File transfers --> | ||||||
|                 <div class="menu-section" id="file-transfers"> |                 <div class="menu-section" id="file-transfers"> | ||||||
|                     <h3 guac-marker="menu.fileTransferMarker">{{'CLIENT.SECTION_HEADER_FILE_TRANSFERS' | translate}}</h3> |                     <h3 guac-marker="menu.fileTransferMarker">{{'CLIENT.SECTION_HEADER_FILE_TRANSFERS' | translate}}</h3> | ||||||
| @@ -154,4 +164,22 @@ | |||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  |     <!-- Filesystem menu --> | ||||||
|  |     <div id="filesystem-menu" class="menu" ng-class="{open: isFilesystemMenuShown()}"> | ||||||
|  |         <div class="menu-content"> | ||||||
|  |  | ||||||
|  |             <!-- Stationary header --> | ||||||
|  |             <div class="header"> | ||||||
|  |                 <h2>{{filesystemMenuContents.name}}</h2> | ||||||
|  |                 <button class="back" ng-click="hideFilesystemMenu()">Back</button> | ||||||
|  |             </div> | ||||||
|  |  | ||||||
|  |             <!-- Scrollable body --> | ||||||
|  |             <div class="menu-body"> | ||||||
|  |                 <guac-file-browser client="client" filesystem="filesystemMenuContents"></guac-file-browser> | ||||||
|  |             </div> | ||||||
|  |  | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
| </guac-viewport> | </guac-viewport> | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								guacamole/src/main/webapp/images/drive.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								guacamole/src/main/webapp/images/drive.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 752 B | 
| @@ -106,6 +106,7 @@ | |||||||
|         "NAME_MOUSE_MODE_RELATIVE" : "Touchpad", |         "NAME_MOUSE_MODE_RELATIVE" : "Touchpad", | ||||||
|  |  | ||||||
|         "SECTION_HEADER_CLIPBOARD"      : "Clipboard", |         "SECTION_HEADER_CLIPBOARD"      : "Clipboard", | ||||||
|  |         "SECTION_HEADER_DEVICES"        : "Devices", | ||||||
|         "SECTION_HEADER_DISPLAY"        : "Display", |         "SECTION_HEADER_DISPLAY"        : "Display", | ||||||
|         "SECTION_HEADER_FILE_TRANSFERS" : "File Transfers", |         "SECTION_HEADER_FILE_TRANSFERS" : "File Transfers", | ||||||
|         "SECTION_HEADER_INPUT_METHOD"   : "Input method", |         "SECTION_HEADER_INPUT_METHOD"   : "Input method", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user