diff --git a/guacamole/src/main/frontend/src/app/clipboard/directives/guacClipboard.js b/guacamole/src/main/frontend/src/app/clipboard/directives/guacClipboard.js
index 789756bd8..315b08b5f 100644
--- a/guacamole/src/main/frontend/src/app/clipboard/directives/guacClipboard.js
+++ b/guacamole/src/main/frontend/src/app/clipboard/directives/guacClipboard.js
@@ -30,6 +30,7 @@ angular.module('clipboard').directive('guacClipboard', ['$injector',
const ClipboardData = $injector.get('ClipboardData');
// Required services
+ const $window = $injector.get('$window');
const clipboardService = $injector.get('clipboardService');
/**
@@ -53,24 +54,28 @@ angular.module('clipboard').directive('guacClipboard', ['$injector',
* editor via this DOM element rather than updating a model so that we
* are prepared for future support of rich text contents.
*
- * @type Element
+ * @type {!Element}
*/
- var element = $element[0].querySelectorAll('.clipboard.active')[0];
+ var element = $element[0].querySelectorAll('.clipboard')[0];
/**
- * When isActive is set to true then the Clipboard data will be
- * displayed in the Clipboard Editor. When false, the Clipboard Editor
- * will not be displayed with Clipboard data.
+ * Whether clipboard contents should be displayed in the clipboard
+ * editor. If false, clipboard contents will not be displayed until
+ * the user manually reveals them.
*
- * @type Boolean
+ * @type {!boolean}
*/
- $scope.isActive = false;
+ $scope.contentsShown = false;
/**
- * Updates clipboard editor to be active.
+ * Reveals the contents of the clipboard editor, automatically
+ * assigning input focus to the editor if possible.
*/
- $scope.setActive = function setActive() {
- $scope.isActive = true;
+ $scope.showContents = function showContents() {
+ $scope.contentsShown = true;
+ $window.setTimeout(function setFocus() {
+ element.focus();
+ }, 0);
};
/**
diff --git a/guacamole/src/main/frontend/src/app/clipboard/styles/clipboard.css b/guacamole/src/main/frontend/src/app/clipboard/styles/clipboard.css
index 3bb602c7f..cec0c2650 100644
--- a/guacamole/src/main/frontend/src/app/clipboard/styles/clipboard.css
+++ b/guacamole/src/main/frontend/src/app/clipboard/styles/clipboard.css
@@ -58,13 +58,50 @@
overflow: hidden;
}
-#clipboard-settings .clipboard.active {
+.clipboard-editor {
+ position: relative;
+}
+
+.clipboard-editor .clipboard {
overflow: auto;
font-size: 1em;
}
-#clipboard-settings .clipboard.inactive {
+.clipboard-editor .clipboard.clipboard-contents-hidden {
+ color: transparent;
+ overflow: hidden;
+}
+
+.clipboard-editor .clipboard-contents-hidden-hint {
+
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+
+ cursor: pointer;
+
+ display: flex;
+ align-items: center;
+
+}
+
+.clipboard-editor .clipboard-contents-hidden-hint .clipboard-contents-hidden-hint-text {
+
+ flex: 1;
+
+ background: rgba(0, 0, 0, 0.125);
+ color: #888;
+
+ padding: 0.5em;
overflow: hidden;
font-size: 0.9em;
- opacity: 0.5;
+ text-align: center;
+ font-style: italic;
+
+}
+
+.clipboard-editor .clipboard-contents-hidden-hint:hover .clipboard-contents-hidden-hint-text {
+ text-decoration: underline;
}
diff --git a/guacamole/src/main/frontend/src/app/clipboard/templates/guacClipboard.html b/guacamole/src/main/frontend/src/app/clipboard/templates/guacClipboard.html
index 4e1ebda8e..159ee356a 100644
--- a/guacamole/src/main/frontend/src/app/clipboard/templates/guacClipboard.html
+++ b/guacamole/src/main/frontend/src/app/clipboard/templates/guacClipboard.html
@@ -1,4 +1,12 @@
-
-
-
+
+
+
+
{{ 'CLIENT.ACTION_SHOW_CLIPBOARD' | translate }}
+
diff --git a/guacamole/src/main/frontend/src/app/home/controllers/homeController.js b/guacamole/src/main/frontend/src/app/home/controllers/homeController.js
index 92c149e6b..8d84b49e1 100644
--- a/guacamole/src/main/frontend/src/app/home/controllers/homeController.js
+++ b/guacamole/src/main/frontend/src/app/home/controllers/homeController.js
@@ -62,12 +62,14 @@ angular.module('home').controller('homeController', ['$scope', '$injector',
];
/**
- * Returns true if recent connections should be displayed on the Guacamole
- * home page, otherwise false.
+ * Returns whether the "Recent Connections" section should be displayed on
+ * the home screen.
*
* @returns {!boolean}
+ * true if recent connections should be displayed on the home screen,
+ * false otherwise.
*/
- $scope.willShowRecentConnections = function willShowRecentConnections() {
+ $scope.isRecentConnectionsVisible = function isRecentConnectionsVisible() {
return preferenceService.preferences.showRecentConnections;
};
diff --git a/guacamole/src/main/frontend/src/app/home/directives/guacRecentConnections.js b/guacamole/src/main/frontend/src/app/home/directives/guacRecentConnections.js
index 57f141f3f..4be606524 100644
--- a/guacamole/src/main/frontend/src/app/home/directives/guacRecentConnections.js
+++ b/guacamole/src/main/frontend/src/app/home/directives/guacRecentConnections.js
@@ -74,16 +74,6 @@ angular.module('home').directive('guacRecentConnections', [function guacRecentCo
&& guacHistory.removeEntry(recentConnection.entry.id));
};
- /**
- * Returns whether or not recent connections should be displayed.
- *
- * @returns {!boolean}
- * true if recent connections should be displayed, otherwise false.
- */
- $scope.willShowRecentConnections = function willShowRecentConnections() {
- return preferenceService.preferences.showRecentConnections;
- };
-
/**
* Returns whether recent connections are available for display.
*
diff --git a/guacamole/src/main/frontend/src/app/home/styles/home.css b/guacamole/src/main/frontend/src/app/home/styles/home.css
index 7699fe87e..8ae0486ed 100644
--- a/guacamole/src/main/frontend/src/app/home/styles/home.css
+++ b/guacamole/src/main/frontend/src/app/home/styles/home.css
@@ -77,9 +77,12 @@ a.home-connection, .empty.balancer a.home-connection-group {
display: none;
}
-.header-app-name {
- font-size: 0.85em;
- box-shadow: none;
+.recent-connections .connection .remove-recent {
+ visibility: hidden;
+}
+
+.recent-connections .connection:hover .remove-recent {
+ visibility: visible;
}
.recent-connections .connection .remove-recent::after {
@@ -90,11 +93,10 @@ a.home-connection, .empty.balancer a.home-connection-group {
background-repeat: no-repeat;
background-size: contain;
background-position: center center;
- background-image: url('images/x.svg');
+ background-image: url('images/x-black.svg');
}
.recent-connections .connection .remove-recent {
- background-color: red;
height: 1em;
width: 1em;
position: absolute;
diff --git a/guacamole/src/main/frontend/src/app/home/templates/guacRecentConnections.html b/guacamole/src/main/frontend/src/app/home/templates/guacRecentConnections.html
index d24397445..2d25bc1db 100644
--- a/guacamole/src/main/frontend/src/app/home/templates/guacRecentConnections.html
+++ b/guacamole/src/main/frontend/src/app/home/templates/guacRecentConnections.html
@@ -1,4 +1,4 @@
-
+
{{'HOME.INFO_NO_RECENT_CONNECTIONS' | translate}}
diff --git a/guacamole/src/main/frontend/src/app/home/templates/home.html b/guacamole/src/main/frontend/src/app/home/templates/home.html
index 6ba553025..872ac9803 100644
--- a/guacamole/src/main/frontend/src/app/home/templates/home.html
+++ b/guacamole/src/main/frontend/src/app/home/templates/home.html
@@ -2,16 +2,14 @@
-
-
-
-
-
{{'SETTINGS_PREFERENCES.HELP_RECENT_CONNECTIONS' | translate}}
-
-
-
\ No newline at end of file
diff --git a/guacamole/src/main/frontend/src/translations/ca.json b/guacamole/src/main/frontend/src/translations/ca.json
index 658c9232f..42829cc9f 100644
--- a/guacamole/src/main/frontend/src/translations/ca.json
+++ b/guacamole/src/main/frontend/src/translations/ca.json
@@ -59,6 +59,7 @@
"ACTION_DISCONNECT" : "Desconnecta",
"ACTION_RECONNECT" : "Torneu a connectar",
+ "ACTION_SHOW_CLIPBOARD" : "Feu clic per veure les dades del porta-retalls.",
"ACTION_UPLOAD_FILES" : "Carregueu fitxers",
"DIALOG_HEADER_CONNECTING" : "Connectant",
@@ -143,7 +144,6 @@
"TEXT_CLIENT_STATUS_DISCONNECTED" : "Heu estat desconnectats.",
"TEXT_CLIENT_STATUS_UNSTABLE" : "La connexió de xarxa al servidor Guacamole sembla inestable.",
"TEXT_CLIENT_STATUS_WAITING" : "Connectat a Guacamole. Esperant resposta ...",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "Feu clic per veure les dades del porta-retalls...",
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
"TEXT_RECONNECT_COUNTDOWN" : "Re-conectant en {REMAINING} {REMAINING, plural, one{segon} other{segons}}...",
"TEXT_USER_JOINED" : "{USERNAME} s'ha afegit a la connexió.",
diff --git a/guacamole/src/main/frontend/src/translations/cs.json b/guacamole/src/main/frontend/src/translations/cs.json
index fd52edb64..9120cc81e 100644
--- a/guacamole/src/main/frontend/src/translations/cs.json
+++ b/guacamole/src/main/frontend/src/translations/cs.json
@@ -71,6 +71,7 @@
"ACTION_RECONNECT" : "Znovu připojit",
"ACTION_SAVE_FILE" : "@:APP.ACTION_SAVE",
"ACTION_SHARE" : "@:APP.ACTION_SHARE",
+ "ACTION_SHOW_CLIPBOARD" : "Kliknutím zobrazíte obsah schránky.",
"ACTION_UPLOAD_FILES" : "Nahrát soubory",
"DIALOG_HEADER_CONNECTING" : "Připojování",
@@ -163,7 +164,6 @@
"TEXT_USER_LEFT" : "{USERNAME} opustil spojení.",
"TEXT_RECONNECT_COUNTDOWN" : "Znovu připojuji {REMAINING} {REMAINING, plural, one{sekundu} other{sekund}}...",
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "Kliknutím zobrazíte obsah schránky...",
"URL_OSK_LAYOUT" : "layouts/en-us-qwerty.json"
diff --git a/guacamole/src/main/frontend/src/translations/de.json b/guacamole/src/main/frontend/src/translations/de.json
index e9bcab55d..bcffc6b13 100644
--- a/guacamole/src/main/frontend/src/translations/de.json
+++ b/guacamole/src/main/frontend/src/translations/de.json
@@ -71,6 +71,7 @@
"ACTION_RECONNECT" : "Neu verbinden",
"ACTION_SAVE_FILE" : "@:APP.ACTION_SAVE",
"ACTION_SHARE" : "@:APP.ACTION_SHARE",
+ "ACTION_SHOW_CLIPBOARD" : "Klicken um Zwischenablage anzuzeigen.",
"ACTION_UPLOAD_FILES" : "Dateien hochladen",
"DIALOG_HEADER_CONNECTING" : "Verbinden",
@@ -163,7 +164,6 @@
"TEXT_USER_LEFT" : "{USERNAME} hat die Verbindung verlassen.",
"TEXT_RECONNECT_COUNTDOWN" : "Neuverbindung in {REMAINING} {REMAINING, plural, one{Sekunde} other{Sekunden}}...",
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "Klicken um Zwischenablage anzuzeigen...",
"URL_OSK_LAYOUT" : "layouts/de-de-qwertz.json"
diff --git a/guacamole/src/main/frontend/src/translations/en.json b/guacamole/src/main/frontend/src/translations/en.json
index 0cd0cc9cf..5b0ff7994 100644
--- a/guacamole/src/main/frontend/src/translations/en.json
+++ b/guacamole/src/main/frontend/src/translations/en.json
@@ -76,6 +76,7 @@
"ACTION_RECONNECT" : "Reconnect",
"ACTION_SAVE_FILE" : "@:APP.ACTION_SAVE",
"ACTION_SHARE" : "@:APP.ACTION_SHARE",
+ "ACTION_SHOW_CLIPBOARD" : "Click to view clipboard contents.",
"ACTION_UPLOAD_FILES" : "Upload Files",
"DIALOG_HEADER_CONNECTING" : "Connecting",
@@ -168,7 +169,6 @@
"TEXT_USER_LEFT" : "{USERNAME} has left the connection.",
"TEXT_RECONNECT_COUNTDOWN" : "Reconnecting in {REMAINING} {REMAINING, plural, one{second} other{seconds}}...",
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "Click to view clipboard data...",
"URL_OSK_LAYOUT" : "layouts/en-us-qwerty.json"
@@ -1075,6 +1075,7 @@
"FIELD_HEADER_TIMEZONE" : "Timezone:",
"FIELD_HEADER_USERNAME" : "Username:",
+ "HELP_APPEARANCE" : "Here you can enable or disable whether the \"Recent Connections\" section is shown on the home screen, and adjust the number of recent connections included.",
"HELP_DEFAULT_INPUT_METHOD" : "The default input method determines how keyboard events are received by Guacamole. Changing this setting may be necessary when using a mobile device, or when typing through an IME. This setting can be overridden on a per-connection basis within the Guacamole menu.",
"HELP_DEFAULT_MOUSE_MODE" : "The default mouse emulation mode determines how the remote mouse will behave in new connections with respect to touches. This setting can be overridden on a per-connection basis within the Guacamole menu.",
"HELP_INPUT_METHOD_NONE" : "@:CLIENT.HELP_INPUT_METHOD_NONE",
@@ -1083,7 +1084,6 @@
"HELP_LOCALE" : "Options below are related to the locale of the user and will impact how various parts of the interface are displayed.",
"HELP_MOUSE_MODE_ABSOLUTE" : "@:CLIENT.HELP_MOUSE_MODE_ABSOLUTE",
"HELP_MOUSE_MODE_RELATIVE" : "@:CLIENT.HELP_MOUSE_MODE_RELATIVE",
- "HELP_RECENT_CONNECTIONS" : "Here you can enable or disable recent conections in the Guacamole Home Page, and adjust the number of recent connections that will be displayed.",
"HELP_UPDATE_PASSWORD" : "If you wish to change your password, enter your current password and the desired new password below, and click \"Update Password\". The change will take effect immediately.",
"INFO_PASSWORD_CHANGED" : "Password changed.",
@@ -1093,9 +1093,9 @@
"NAME_INPUT_METHOD_OSK" : "@:CLIENT.NAME_INPUT_METHOD_OSK",
"NAME_INPUT_METHOD_TEXT" : "@:CLIENT.NAME_INPUT_METHOD_TEXT",
+ "SECTION_HEADER_APPEARANCE" : "Appearance",
"SECTION_HEADER_DEFAULT_INPUT_METHOD" : "Default Input Method",
"SECTION_HEADER_DEFAULT_MOUSE_MODE" : "Default Mouse Emulation Mode",
- "SECTION_HEADER_RECENT_CONNECTIONS" : "Recent Connections Preferences",
"SECTION_HEADER_UPDATE_PASSWORD" : "Change Password"
},
diff --git a/guacamole/src/main/frontend/src/translations/fr.json b/guacamole/src/main/frontend/src/translations/fr.json
index f6477400d..bbde24cb8 100644
--- a/guacamole/src/main/frontend/src/translations/fr.json
+++ b/guacamole/src/main/frontend/src/translations/fr.json
@@ -64,6 +64,7 @@
"ACTION_CANCEL" : "@:APP.ACTION_CANCEL",
"ACTION_CLEAR_CLIENT_MESSAGES" : "@:APP.ACTION_CLEAR",
"ACTION_CLEAR_COMPLETED_TRANSFERS" : "@:APP.ACTION_CLEAR",
+ "ACTION_SHOW_CLIPBOARD" : "Cliquez pour afficher le contenu du presse-papiers.",
"ACTION_CONTINUE" : "@:APP.ACTION_CONTINUE",
"ACTION_DISCONNECT" : "Déconnecter",
"ACTION_FULLSCREEN" : "Plein écran",
@@ -165,7 +166,6 @@
"TEXT_USER_LEFT" : "{USERNAME} a quitté la connexion.",
"TEXT_RECONNECT_COUNTDOWN" : "Reconnexion dans {REMAINING} {REMAINING, plural, one{seconde} other{secondes}}...",
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "Cliquez pour afficher le contenu du presse-papiers...",
"URL_OSK_LAYOUT" : "layouts/fr-fr-azerty.json"
@@ -1045,6 +1045,7 @@
"FIELD_HEADER_TIMEZONE" : "Fuseau horaire:",
"FIELD_HEADER_USERNAME" : "Identifiant:",
+ "HELP_APPEARANCE" : "Vous pouvez ici activer ou désactiver les connexions récentes sur la page d'accueil de Guacamole, et ajuster le nombre de connexions récentes qui seront affichées.",
"HELP_DEFAULT_INPUT_METHOD" : "La méthode de saisie par défaut détermine comment les événements clavier sont reçus par Guacamole. Modifier ce paramètre peut être nécessaire lors de l'utilisation d'un appareil mobile. Ce paramètre peut être remplacé pour chaque connexion dans le menu de Guacamole.",
"HELP_DEFAULT_MOUSE_MODE" : "Le mode d'émulation de la souris par défaut détermine le comportement de la souris distante dans de nouvelles connexions par rapport aux touches. Ce paramètre peut être remplacé pour chaque connexion dans le menu Guacamole.",
"HELP_INPUT_METHOD_NONE" : "@:CLIENT.HELP_INPUT_METHOD_NONE",
@@ -1053,7 +1054,6 @@
"HELP_LOCALE" : "Les options ci-dessous sont liées à la localisation de l'utilisateur et auront un impact sur l'affichage de différentes parties de l'interface.",
"HELP_MOUSE_MODE_ABSOLUTE" : "@:CLIENT.HELP_MOUSE_MODE_ABSOLUTE",
"HELP_MOUSE_MODE_RELATIVE" : "@:CLIENT.HELP_MOUSE_MODE_RELATIVE",
- "HELP_RECENT_CONNECTIONS" : "Vous pouvez ici activer ou désactiver les connexions récentes sur la page d'accueil de Guacamole, et ajuster le nombre de connexions récentes qui seront affichées.",
"HELP_UPDATE_PASSWORD" : "Si vous souhaitez changer votre mot de passe, saisissez votre mot de passe actuel ainsi que le nouveau mot de passe souhaité ci-dessous, puis cliquez sur \"Mettre à jour Mot de passe\". Le changement prendra effet immédiatement.",
"INFO_PASSWORD_CHANGED" : "Mot de passe modifié.",
@@ -1065,7 +1065,6 @@
"SECTION_HEADER_DEFAULT_INPUT_METHOD" : "Méthode de saisie par défaut",
"SECTION_HEADER_DEFAULT_MOUSE_MODE" : "Mode d'émulation de la souris par défaut",
- "SECTION_HEADER_RECENT_CONNECTIONS" : "Préférences des connexions récentes",
"SECTION_HEADER_UPDATE_PASSWORD" : "Modifier Mot de passe"
},
diff --git a/guacamole/src/main/frontend/src/translations/ja.json b/guacamole/src/main/frontend/src/translations/ja.json
index 2750d38fd..45a079cc9 100644
--- a/guacamole/src/main/frontend/src/translations/ja.json
+++ b/guacamole/src/main/frontend/src/translations/ja.json
@@ -55,6 +55,7 @@
"ACTION_RECONNECT" : "再接続",
"ACTION_SAVE_FILE" : "@:APP.ACTION_SAVE",
"ACTION_SHARE" : "@:APP.ACTION_SHARE",
+ "ACTION_SHOW_CLIPBOARD" : "クリックをしてコピー/カットされたテキストが表示されます。",
"ACTION_UPLOAD_FILES" : "ファイルアップロード",
"DIALOG_HEADER_CONNECTING" : "接続",
@@ -132,8 +133,7 @@
"TEXT_CLIENT_STATUS_DISCONNECTED" : "切断されました。",
"TEXT_CLIENT_STATUS_UNSTABLE" : "Guacamoleサーバへのネットワーク接続が不安定です。",
"TEXT_CLIENT_STATUS_WAITING" : "Guacamoleサーバに接続しました。応答を待っています",
- "TEXT_RECONNECT_COUNTDOWN" : "再接続しています... {REMAINING} {REMAINING, plural, one{second} other{seconds}}...",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "クリックをしてコピー/カットされたテキストが表示されます..."
+ "TEXT_RECONNECT_COUNTDOWN" : "再接続しています... {REMAINING} {REMAINING, plural, one{second} other{seconds}}..."
},
diff --git a/guacamole/src/main/frontend/src/translations/zh.json b/guacamole/src/main/frontend/src/translations/zh.json
index 76e9a2a81..b16934c64 100644
--- a/guacamole/src/main/frontend/src/translations/zh.json
+++ b/guacamole/src/main/frontend/src/translations/zh.json
@@ -72,6 +72,7 @@
"ACTION_RECONNECT" : "重新连接",
"ACTION_SAVE_FILE" : "@:APP.ACTION_SAVE",
"ACTION_SHARE" : "@:APP.ACTION_SHARE",
+ "ACTION_SHOW_CLIPBOARD" : "点击以查看剪贴板内容。",
"ACTION_UPLOAD_FILES" : "上传文件",
"DIALOG_HEADER_CONNECTING" : "正在连接",
@@ -164,7 +165,6 @@
"TEXT_USER_LEFT" : "用户 {USERNAME} 断开了连接。",
"TEXT_RECONNECT_COUNTDOWN" : "在 {REMAINING} 秒后重连...",
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
- "TEXT_CLIPBOARD_AWAITING_FOCUS" : "点击以查看剪贴板内容...",
"URL_OSK_LAYOUT" : "layouts/en-us-qwerty.json"