From 182376cc0850a463cf5ec152563190d0af9bdd29 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 29 Mar 2015 13:10:26 -0700 Subject: [PATCH 1/3] GUAC-1138: Use date format from translation string. --- .../controllers/manageConnectionController.js | 16 +++++++++++++++- .../controllers/manageSessionsController.js | 18 ++++++++++++++++-- .../app/manage/templates/manageConnection.html | 2 +- .../app/manage/templates/manageSessions.html | 2 +- .../src/main/webapp/translations/en_US.json | 10 ++++++++-- 5 files changed, 41 insertions(+), 7 deletions(-) diff --git a/guacamole/src/main/webapp/app/manage/controllers/manageConnectionController.js b/guacamole/src/main/webapp/app/manage/controllers/manageConnectionController.js index 9d5914910..fda9e28a3 100644 --- a/guacamole/src/main/webapp/app/manage/controllers/manageConnectionController.js +++ b/guacamole/src/main/webapp/app/manage/controllers/manageConnectionController.js @@ -35,6 +35,7 @@ angular.module('manage').controller('manageConnectionController', ['$scope', '$i // Required services var $location = $injector.get('$location'); var $routeParams = $injector.get('$routeParams'); + var $translate = $injector.get('$translate'); var authenticationService = $injector.get('authenticationService'); var guacNotification = $injector.get('guacNotification'); var connectionService = $injector.get('connectionService'); @@ -100,6 +101,13 @@ angular.module('manage').controller('manageConnectionController', ['$scope', '$i */ $scope.parameters = null; + /** + * The date format for use within the connection history. + * + * @type String + */ + $scope.historyDateFormat = null; + /** * The usage history of the connection being modified. * @@ -150,6 +158,7 @@ angular.module('manage').controller('manageConnectionController', ['$scope', '$i && $scope.rootGroup !== null && $scope.connection !== null && $scope.parameters !== null + && $scope.historyDateFormat !== null && $scope.historyEntryWrappers !== null && $scope.permissions !== null && $scope.canSaveConnection !== null @@ -199,7 +208,12 @@ angular.module('manage').controller('manageConnectionController', ['$scope', '$i protocolService.getProtocols().success(function protocolsReceived(protocols) { $scope.protocols = protocols; }); - + + // Get history date format + $translate('MANAGE_CONNECTION.FORMAT_HISTORY_START').then(function historyDateFormatReceived(historyDateFormat) { + $scope.historyDateFormat = historyDateFormat; + }); + // If we are editing an existing connection, pull its data if (identifier) { diff --git a/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js b/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js index ac56335d8..46680fb6b 100644 --- a/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js +++ b/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js @@ -32,6 +32,7 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj var SortOrder = $injector.get('SortOrder'); // Required services + var $translate = $injector.get('$translate'); var activeConnectionService = $injector.get('activeConnectionService'); var authenticationService = $injector.get('authenticationService'); var connectionGroupService = $injector.get('connectionGroupService'); @@ -54,6 +55,13 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj */ $scope.wrappers = null; + /** + * The date format for use for session-related dates. + * + * @type String + */ + $scope.sessionDateFormat = null; + /** * SortOrder instance which maintains the sort order of the visible * connection wrappers. @@ -192,6 +200,11 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj }); + // Get session date format + $translate('MANAGE_SESSION.FORMAT_STARTDATE').then(function sessionDateFormatReceived(sessionDateFormat) { + $scope.sessionDateFormat = sessionDateFormat; + }); + /** * Returns whether critical data has completed being loaded. * @@ -201,8 +214,9 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj */ $scope.isLoaded = function isLoaded() { - return $scope.wrappers !== null - && $scope.permissions !== null; + return $scope.wrappers !== null + && $scope.sessionDateFormat !== null + && $scope.permissions !== null; }; diff --git a/guacamole/src/main/webapp/app/manage/templates/manageConnection.html b/guacamole/src/main/webapp/app/manage/templates/manageConnection.html index 41c8db37b..7cdfabe8e 100644 --- a/guacamole/src/main/webapp/app/manage/templates/manageConnection.html +++ b/guacamole/src/main/webapp/app/manage/templates/manageConnection.html @@ -97,7 +97,7 @@ THE SOFTWARE. {{wrapper.entry.username}} - {{wrapper.entry.startDate | date:'short'}} + {{wrapper.entry.startDate | date:historyDateFormat}} {{wrapper.durationText | translate:"{VALUE: wrapper.duration.value, UNIT: wrapper.duration.unit}"}} diff --git a/guacamole/src/main/webapp/app/manage/templates/manageSessions.html b/guacamole/src/main/webapp/app/manage/templates/manageSessions.html index 41a49f784..b558f4076 100644 --- a/guacamole/src/main/webapp/app/manage/templates/manageSessions.html +++ b/guacamole/src/main/webapp/app/manage/templates/manageSessions.html @@ -66,7 +66,7 @@ THE SOFTWARE. {{wrapper.activeConnection.username}} - {{wrapper.activeConnection.startDate | date:'short'}} + {{wrapper.activeConnection.startDate | date:sessionDateFormat}} {{wrapper.activeConnection.remoteHost}} {{wrapper.name}} diff --git a/guacamole/src/main/webapp/translations/en_US.json b/guacamole/src/main/webapp/translations/en_US.json index 46876aa5b..da003fd38 100644 --- a/guacamole/src/main/webapp/translations/en_US.json +++ b/guacamole/src/main/webapp/translations/en_US.json @@ -23,7 +23,9 @@ "FIELD_HEADER_PASSWORD" : "Password:", "FIELD_HEADER_PASSWORD_AGAIN" : "Re-enter Password:", - + + "FORMAT_DATE_TIME_PRECISE" : "yyyy-MM-dd HH:mm:ss", + "INFO_ACTIVE_USER_COUNT" : "Currently in use by {USERS} {USERS, plural, one{user} other{users}}.", "NAME" : "Guacamole ${project.version}" @@ -155,7 +157,9 @@ "FIELD_HEADER_LOCATION" : "Location:", "FIELD_HEADER_NAME" : "Name:", "FIELD_HEADER_PROTOCOL" : "Protocol:", - + + "FORMAT_HISTORY_START" : "@:APP.FORMAT_DATE_TIME_PRECISE", + "HELP_CONNECTIONS" : "Click or tap on a connection below to manage that connection. Depending on your access level, connections can be added and deleted, and their properties (protocol, hostname, port, etc.) can be changed.", "HELP_SHOW_PASSWORD" : "Click to show password", "HELP_HIDE_PASSWORD" : "Click to hide password", @@ -245,6 +249,8 @@ "FIELD_PLACEHOLDER_FILTER" : "Filter", + "FORMAT_STARTDATE" : "@:APP.FORMAT_DATE_TIME_PRECISE", + "HELP_SESSIONS" : "All currently-active Guacamole sessions are listed here. If you wish to kill one or more sessions, check the box next to those sessions and click \"Kill Sessions\". Killing a session will immediately disconnect the user from the associated connection.", "INFO_NO_SESSIONS" : "No active sessions", From cb0ef9ca75e879290dfb3d540834f01c0106d891 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 29 Mar 2015 13:27:34 -0700 Subject: [PATCH 2/3] GUAC-1138: Store formatted start date within session wrapper. --- .../controllers/manageSessionsController.js | 28 ++++++++++++------- .../app/manage/templates/manageSessions.html | 2 +- .../manage/types/ActiveConnectionWrapper.js | 12 +++++++- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js b/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js index 46680fb6b..7874771fa 100644 --- a/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js +++ b/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js @@ -32,6 +32,7 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj var SortOrder = $injector.get('SortOrder'); // Required services + var $filter = $injector.get('$filter'); var $translate = $injector.get('$translate'); var activeConnectionService = $injector.get('activeConnectionService'); var authenticationService = $injector.get('authenticationService'); @@ -55,13 +56,6 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj */ $scope.wrappers = null; - /** - * The date format for use for session-related dates. - * - * @type String - */ - $scope.sessionDateFormat = null; - /** * SortOrder instance which maintains the sort order of the visible * connection wrappers. @@ -102,6 +96,13 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj */ var connections = null; + /** + * The date format for use for session-related dates. + * + * @type String + */ + var sessionDateFormat = null; + /** * Map of all currently-selected active connection wrappers by identifier. * @@ -151,7 +152,7 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj var wrapActiveConnections = function wrapActiveConnections() { // Abort if not all required data is available - if (!activeConnections || !connections) + if (!activeConnections || !connections || !sessionDateFormat) return; // Wrap all active connections for sake of display @@ -163,6 +164,7 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj $scope.wrappers.push(new ActiveConnectionWrapper( connection.name, + $filter('date')(activeConnection.startDate, sessionDateFormat), activeConnection )); @@ -201,8 +203,14 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj }); // Get session date format - $translate('MANAGE_SESSION.FORMAT_STARTDATE').then(function sessionDateFormatReceived(sessionDateFormat) { - $scope.sessionDateFormat = sessionDateFormat; + $translate('MANAGE_SESSION.FORMAT_STARTDATE').then(function sessionDateFormatReceived(retrievedSessionDateFormat) { + + // Store received date format + sessionDateFormat = retrievedSessionDateFormat; + + // Attempt to produce wrapped list of active connections + wrapActiveConnections(); + }); /** diff --git a/guacamole/src/main/webapp/app/manage/templates/manageSessions.html b/guacamole/src/main/webapp/app/manage/templates/manageSessions.html index b558f4076..c1c1095b1 100644 --- a/guacamole/src/main/webapp/app/manage/templates/manageSessions.html +++ b/guacamole/src/main/webapp/app/manage/templates/manageSessions.html @@ -66,7 +66,7 @@ THE SOFTWARE. {{wrapper.activeConnection.username}} - {{wrapper.activeConnection.startDate | date:sessionDateFormat}} + {{wrapper.startDate}} {{wrapper.activeConnection.remoteHost}} {{wrapper.name}} diff --git a/guacamole/src/main/webapp/app/manage/types/ActiveConnectionWrapper.js b/guacamole/src/main/webapp/app/manage/types/ActiveConnectionWrapper.js index 92130c270..cb2c43e3d 100644 --- a/guacamole/src/main/webapp/app/manage/types/ActiveConnectionWrapper.js +++ b/guacamole/src/main/webapp/app/manage/types/ActiveConnectionWrapper.js @@ -33,11 +33,14 @@ angular.module('manage').factory('ActiveConnectionWrapper', [ * @constructor * @param {String} name * The display name of the active connection. + * + * @param {String} startDate + * The date and time this session began, pre-formatted for display. * * @param {ActiveConnection} activeConnection * The ActiveConnection to wrap. */ - var ActiveConnectionWrapper = function ActiveConnectionWrapper(name, activeConnection) { + var ActiveConnectionWrapper = function ActiveConnectionWrapper(name, startDate, activeConnection) { /** * The display name of this connection. @@ -46,6 +49,13 @@ angular.module('manage').factory('ActiveConnectionWrapper', [ */ this.name = name; + /** + * The date and time this session began, pre-formatted for display. + * + * @type String + */ + this.startDate = startDate; + /** * The wrapped ActiveConnection. * From 731f02fb0cb52f5cf6bb4af41d02b966e86352e2 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 29 Mar 2015 13:29:30 -0700 Subject: [PATCH 3/3] GUAC-1138: Filter and sort sessions based on pre-formatted date. --- .../webapp/app/manage/controllers/manageSessionsController.js | 3 ++- .../src/main/webapp/app/manage/templates/manageSessions.html | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js b/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js index 7874771fa..f89f19a32 100644 --- a/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js +++ b/guacamole/src/main/webapp/app/manage/controllers/manageSessionsController.js @@ -64,7 +64,7 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj */ $scope.wrapperOrder = new SortOrder([ 'activeConnection.username', - 'activeConnection.startDate', + 'startDate', 'activeConnection.remoteHost', 'name' ]); @@ -76,6 +76,7 @@ angular.module('manage').controller('manageSessionsController', ['$scope', '$inj */ $scope.filteredWrapperProperties = [ 'activeConnection.username', + 'startDate', 'activeConnection.remoteHost', 'name' ]; diff --git a/guacamole/src/main/webapp/app/manage/templates/manageSessions.html b/guacamole/src/main/webapp/app/manage/templates/manageSessions.html index c1c1095b1..5b50f5f64 100644 --- a/guacamole/src/main/webapp/app/manage/templates/manageSessions.html +++ b/guacamole/src/main/webapp/app/manage/templates/manageSessions.html @@ -49,7 +49,7 @@ THE SOFTWARE. {{'MANAGE_SESSION.TABLE_HEADER_SESSION_USERNAME' | translate}} - + {{'MANAGE_SESSION.TABLE_HEADER_SESSION_STARTDATE' | translate}}