GUACAMOLE-773: Remove use of XHTML-style self-closing tags from normal HTML.

This is particularly important for AngularJS 1.8.x and jQuery 3.5.0+,
which will no longer correct this automatically with their HTML
prefilters, resulting in unexpected nesting of tags when the browser
interprets something like "<div/>" as "<div>" (older versions of jQuery
would have corrected "<div/>" to "<div></div>").

See:

 * https://docs.angularjs.org/guide/migration#migrating-from-1-7-to-1-8
 * https://jquery.com/upgrade-guide/3.5/
This commit is contained in:
Michael Jumper
2021-06-02 15:24:57 -07:00
parent e93d0faa22
commit 700e2023af
37 changed files with 79 additions and 79 deletions

View File

@@ -1,8 +1,8 @@
<!-- Sets up a dialog box that will be inserted immediately after the "version"
element. -->
<meta name="after" content=".version" />
<meta name="after" content=".version">
<!-- An HTML div that has a class of "warning", pluss the other classes that
will be applied from above. -->
<div class="warning">Beware of entering Saturn's gravitational field.
Few who enter it ever escape.</div>
Few who enter it ever escape.</div>

View File

@@ -20,7 +20,7 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="guacamole.css"/>
<link rel="stylesheet" type="text/css" href="guacamole.css">
<title>Guacamole (EXAMPLE)</title>
</head>

View File

@@ -21,7 +21,7 @@
<head>
<title>Guacamole Recording Playback (EXAMPLE)</title>
<meta charset="utf-8"/>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="playback.css">
</head>

View File

@@ -1,8 +1,8 @@
<meta name="before" content=".all-connections" />
<meta name="before" content=".all-connections">
<div class="quickconnect-list-item list-item" ng-controller="quickconnectController">
<div class="quickconnect-container">
<form ng-submit="quickConnect()">
<input type=text class="quickconnect-field" placeholder="{{'QUICKCONNECT.FIELD_PLACEHOLDER_URI' |translate}}" ng-model="uri" />
<input type=text class="quickconnect-field" placeholder="{{'QUICKCONNECT.FIELD_PLACEHOLDER_URI' |translate}}" ng-model="uri">
</form>
</div>
<div class="action-buttons">

View File

@@ -1 +1 @@
<input type="hidden" ng-model="model" />
<input type="hidden" ng-model="model">

View File

@@ -41,7 +41,7 @@
<div class="totp-code">
<input type="text"
placeholder="{{'TOTP.FIELD_PLACEHOLDER_CODE' |translate}}"
ng-model="model" autocorrect="off" autocapitalize="off"/>
ng-model="model" autocorrect="off" autocapitalize="off">
</div>
</div>

View File

@@ -134,20 +134,20 @@
<!-- No IME -->
<div class="choice">
<label><input id="ime-none" name="input-method" ng-change="closeMenu()" ng-model="menu.inputMethod" type="radio" value="none"/> {{'CLIENT.NAME_INPUT_METHOD_NONE' | translate}}</label>
<label><input id="ime-none" name="input-method" ng-change="closeMenu()" ng-model="menu.inputMethod" type="radio" value="none"> {{'CLIENT.NAME_INPUT_METHOD_NONE' | translate}}</label>
<p class="caption"><label for="ime-none">{{'CLIENT.HELP_INPUT_METHOD_NONE' | translate}}</label></p>
</div>
<!-- Text input -->
<div class="choice">
<div class="figure"><label for="ime-text"><img src="images/settings/tablet-keys.png" alt=""/></label></div>
<label><input id="ime-text" name="input-method" ng-change="closeMenu()" ng-model="menu.inputMethod" type="radio" value="text"/> {{'CLIENT.NAME_INPUT_METHOD_TEXT' | translate}}</label>
<div class="figure"><label for="ime-text"><img src="images/settings/tablet-keys.png" alt=""></label></div>
<label><input id="ime-text" name="input-method" ng-change="closeMenu()" ng-model="menu.inputMethod" type="radio" value="text"> {{'CLIENT.NAME_INPUT_METHOD_TEXT' | translate}}</label>
<p class="caption"><label for="ime-text">{{'CLIENT.HELP_INPUT_METHOD_TEXT' | translate}} </label></p>
</div>
<!-- Guac OSK -->
<div class="choice">
<label><input id="ime-osk" name="input-method" ng-change="closeMenu()" ng-model="menu.inputMethod" type="radio" value="osk"/> {{'CLIENT.NAME_INPUT_METHOD_OSK' | translate}}</label>
<label><input id="ime-osk" name="input-method" ng-change="closeMenu()" ng-model="menu.inputMethod" type="radio" value="osk"> {{'CLIENT.NAME_INPUT_METHOD_OSK' | translate}}</label>
<p class="caption"><label for="ime-osk">{{'CLIENT.HELP_INPUT_METHOD_OSK' | translate}}</label></p>
</div>
@@ -162,18 +162,18 @@
<!-- Touchscreen -->
<div class="choice">
<input name="mouse-mode" ng-change="closeMenu()" ng-model="client.clientProperties.emulateAbsoluteMouse" type="radio" ng-value="true" checked="checked" id="absolute"/>
<input name="mouse-mode" ng-change="closeMenu()" ng-model="client.clientProperties.emulateAbsoluteMouse" type="radio" ng-value="true" checked="checked" id="absolute">
<div class="figure">
<label for="absolute"><img src="images/settings/touchscreen.png" alt="{{'CLIENT.NAME_MOUSE_MODE_ABSOLUTE' | translate}}"/></label>
<label for="absolute"><img src="images/settings/touchscreen.png" alt="{{'CLIENT.NAME_MOUSE_MODE_ABSOLUTE' | translate}}"></label>
<p class="caption"><label for="absolute">{{'CLIENT.HELP_MOUSE_MODE_ABSOLUTE' | translate}}</label></p>
</div>
</div>
<!-- Touchpad -->
<div class="choice">
<input name="mouse-mode" ng-change="closeMenu()" ng-model="client.clientProperties.emulateAbsoluteMouse" type="radio" ng-value="false" id="relative"/>
<input name="mouse-mode" ng-change="closeMenu()" ng-model="client.clientProperties.emulateAbsoluteMouse" type="radio" ng-value="false" id="relative">
<div class="figure">
<label for="relative"><img src="images/settings/touchpad.png" alt="{{'CLIENT.NAME_MOUSE_MODE_RELATIVE' | translate}}"/></label>
<label for="relative"><img src="images/settings/touchpad.png" alt="{{'CLIENT.NAME_MOUSE_MODE_RELATIVE' | translate}}"></label>
<p class="caption"><label for="relative">{{'CLIENT.HELP_MOUSE_MODE_RELATIVE' | translate}}</label></p>
</div>
</div>
@@ -186,16 +186,16 @@
<h3>{{'CLIENT.SECTION_HEADER_DISPLAY' | translate}}</h3>
<div class="content">
<div id="zoom-settings">
<div ng-click="zoomOut()" id="zoom-out"><img src="images/settings/zoom-out.png" alt="-"/></div>
<div ng-click="zoomOut()" id="zoom-out"><img src="images/settings/zoom-out.png" alt="-"></div>
<div class="zoom-ctrl">
<input type="number" class="zoom-ctrl" guac-zoom-ctrl
ng-model="client.clientProperties.scale"
ng-model-options="{ updateOn: 'blur submit' }"
ng-change="zoomSet()" />%
ng-change="zoomSet()">%
</div>
<div ng-click="zoomIn()" id="zoom-in"><img src="images/settings/zoom-in.png" alt="+"/></div>
<div ng-click="zoomIn()" id="zoom-in"><img src="images/settings/zoom-in.png" alt="+"></div>
</div>
<div><label><input ng-model="menu.autoFit" ng-change="changeAutoFit()" ng-disabled="autoFitDisabled()" type="checkbox" id="auto-fit"/> {{'CLIENT.TEXT_ZOOM_AUTO_FIT' | translate}}</label></div>
<div><label><input ng-model="menu.autoFit" ng-change="changeAutoFit()" ng-disabled="autoFitDisabled()" type="checkbox" id="auto-fit"> {{'CLIENT.TEXT_ZOOM_AUTO_FIT' | translate}}</label></div>
</div>
</div>

View File

@@ -5,6 +5,6 @@
</div>
<!-- Dummy background thumbnail -->
<img alt="" ng-src="{{thumbnail}}"/>
<img alt="" ng-src="{{thumbnail}}">
</div>

View File

@@ -4,4 +4,4 @@
ng-model="typedValue"
guac-focus="focused"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">

View File

@@ -8,5 +8,5 @@
guac-focus="focused"
placeholder="{{'FORM.FIELD_PLACEHOLDER_DATE' | translate}}"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">
</div>

View File

@@ -6,6 +6,6 @@
ng-hide="readOnly"
guac-focus="focused"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">
<a href="mailto:{{model}}" ng-show="readOnly">{{model}}</a>
</div>

View File

@@ -4,4 +4,4 @@
ng-model="typedValue"
guac-focus="focused"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">

View File

@@ -6,6 +6,6 @@
ng-trim="false"
guac-focus="focused"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">
<div class="icon toggle-password" ng-click="togglePassword()" title="{{getTogglePasswordHelpText() | translate}}"></div>
</div>

View File

@@ -6,7 +6,7 @@
ng-disabled="disabled"
guac-focus="focused"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">
<datalist ng-if="dataListId" ng-attr-id="{{ dataListId }}">
<option ng-repeat="option in field.options | orderBy: option"
value="{{ option }}">{{ getFieldOption(option) | translate }}</option>

View File

@@ -8,5 +8,5 @@
guac-lenient-time
placeholder="{{'FORM.FIELD_PLACEHOLDER_TIME' | translate}}"
autocorrect="off"
autocapitalize="off"/>
autocapitalize="off">
</div>

View File

@@ -16,7 +16,7 @@
<div class="icon expand" ng-click="toggleExpanded(item)"
ng-if="item.expandable"></div>
<ng-include src="templates[item.type]"/>
<ng-include src="templates[item.type]"></ng-include>
</div>

View File

@@ -1,6 +1,6 @@
<div class="group-list-filter filter">
<!-- Filter string -->
<input class="search-string" placeholder="{{placeholder()}}" type="text" ng-model="searchString"/>
<input class="search-string" placeholder="{{placeholder()}}" type="text" ng-model="searchString">
</div>

View File

@@ -26,7 +26,7 @@
<!-- Connection thumbnail -->
<div class="thumbnail">
<img alt="{{recentConnection.name}}" ng-src="{{recentConnection.entry.thumbnail}}"/>
<img alt="{{recentConnection.name}}" ng-src="{{recentConnection.entry.thumbnail}}">
</div>
<!-- Connection name -->

View File

@@ -1,6 +1,6 @@
<div class="filter">
<!-- Filter string -->
<input class="search-string" placeholder="{{placeholder()}}" type="text" ng-model="searchString"/>
<input class="search-string" placeholder="{{placeholder()}}" type="text" ng-model="searchString">
</div>

View File

@@ -1,8 +1,8 @@
<div class="pager" ng-show="pageNumbers.length > 1">
<!-- First / Previous -->
<div class="first-page icon" ng-class="{disabled: !canSelectPage(firstPage)}" ng-click="selectPage(firstPage)"/>
<div class="prev-page icon" ng-class="{disabled: !canSelectPage(previousPage)}" ng-click="selectPage(previousPage)"/>
<div class="first-page icon" ng-class="{disabled: !canSelectPage(firstPage)}" ng-click="selectPage(firstPage)"></div>
<div class="prev-page icon" ng-class="{disabled: !canSelectPage(previousPage)}" ng-click="selectPage(previousPage)"></div>
<!-- Indicator of the existence of pages before the first page number shown -->
<div class="more-pages" ng-show="hasMorePagesBefore()">...</div>
@@ -19,7 +19,7 @@
<div class="more-pages" ng-show="hasMorePagesAfter()">...</div>
<!-- Next / Last -->
<div class="next-page icon" ng-class="{disabled: !canSelectPage(nextPage)}" ng-click="selectPage(nextPage)"/>
<div class="last-page icon" ng-class="{disabled: !canSelectPage(lastPage)}" ng-click="selectPage(lastPage)"/>
<div class="next-page icon" ng-class="{disabled: !canSelectPage(nextPage)}" ng-click="selectPage(nextPage)"></div>
<div class="last-page icon" ng-class="{disabled: !canSelectPage(lastPage)}" ng-click="selectPage(lastPage)"></div>
</div>

View File

@@ -36,11 +36,11 @@
<input type="submit" name="login" class="login"
ng-disabled="submitted"
value="{{'LOGIN.ACTION_LOGIN' | translate}}"/>
value="{{'LOGIN.ACTION_LOGIN' | translate}}">
<input type="submit" name="login" class="continue-login"
ng-disabled="submitted"
value="{{'LOGIN.ACTION_CONTINUE' | translate}}"/>
value="{{'LOGIN.ACTION_CONTINUE' | translate}}">
</div>

View File

@@ -5,7 +5,7 @@
<!-- Permission checkbox -->
<input type="checkbox" ng-model="context.getPermissionFlags().connectionGroupPermissions.READ[item.identifier]"
ng-change="context.connectionGroupPermissionChanged(item.identifier)"/>
ng-change="context.connectionGroupPermissionChanged(item.identifier)">
<!-- Connection group name -->
<span class="name">{{item.name}}</span>

View File

@@ -5,7 +5,7 @@
<!-- Permission checkbox -->
<input type="checkbox" ng-model="context.getPermissionFlags().connectionPermissions.READ[item.identifier]"
ng-change="context.connectionPermissionChanged(item.identifier)"/>
ng-change="context.connectionPermissionChanged(item.identifier)">
<!-- Connection name -->
<span class="name">{{item.name}}</span>

View File

@@ -4,7 +4,7 @@
<div class="filter">
<input class="search-string" type="text"
placeholder="{{ 'SETTINGS_USERS.FIELD_PLACEHOLDER_FILTER' | translate }}"
ng-model="filterString"/>
ng-model="filterString">
</div>
</div>
@@ -12,14 +12,14 @@
<!-- Abbreviated list of only the currently selected objects -->
<div class="abbreviated-related-objects">
<img src="images/arrows/right.png" alt="Expand" class="expand" ng-hide="expanded" ng-click="expand()"/>
<img src="images/arrows/down.png" alt="Collapse" class="collapse" ng-show="expanded" ng-click="collapse()"/>
<img src="images/arrows/right.png" alt="Expand" class="expand" ng-hide="expanded" ng-click="expand()">
<img src="images/arrows/down.png" alt="Collapse" class="collapse" ng-show="expanded" ng-click="collapse()">
<p ng-hide="identifiers.length" class="no-related-objects">{{ emptyPlaceholder | translate }}</p>
<ul>
<li ng-repeat="identifier in identifiers | filter: filterString">
<label><img src="images/x-red.png" alt="Remove" class="remove"
ng-click="removeIdentifier(identifier)"
ng-show="isEditable[identifier]"/><span class="identifier">{{ identifier }}</span>
ng-show="isEditable[identifier]"><span class="identifier">{{ identifier }}</span>
</label>
</li>
</ul>
@@ -32,7 +32,7 @@
<li ng-repeat="identifier in identifiersAvailablePage">
<label><input type="checkbox"
ng-model="identifierFlags[identifier]"
ng-change="identifierChanged(identifier)"/>
ng-change="identifierChanged(identifier)">
<span class="identifier">{{ identifier }}</span>
</label>
</li>

View File

@@ -11,7 +11,7 @@
connection-groups="rootGroups"
templates="{
'connection-group' : 'app/manage/templates/locationChooserConnectionGroup.html'
}"/>
}"></guac-group-list>
</div>
</div>

View File

@@ -13,7 +13,7 @@
<tr>
<th>{{'MANAGE_CONNECTION.FIELD_HEADER_NAME' | translate}}</th>
<td><input type="text" ng-model="connection.name" autocorrect="off" autocapitalize="off"/></td>
<td><input type="text" ng-model="connection.name" autocorrect="off" autocapitalize="off"></td>
</tr>
<!-- Edit connection location -->

View File

@@ -13,7 +13,7 @@
<tr>
<th>{{'MANAGE_CONNECTION_GROUP.FIELD_HEADER_NAME' | translate}}</th>
<td><input type="text" ng-model="connectionGroup.name" autocorrect="off" autocapitalize="off"/></td>
<td><input type="text" ng-model="connectionGroup.name" autocorrect="off" autocapitalize="off"></td>
</tr>
<!-- Edit connection group location -->

View File

@@ -10,7 +10,7 @@
<tr>
<th>{{'MANAGE_SHARING_PROFILE.FIELD_HEADER_NAME' | translate}}</th>
<td><input type="text" ng-model="sharingProfile.name"
autocorrect="off" autocapitalize="off"/></td>
autocorrect="off" autocapitalize="off"></td>
</tr>
<tr>
<th>{{'MANAGE_SHARING_PROFILE.FIELD_HEADER_PRIMARY_CONNECTION' | translate}}</th>

View File

@@ -25,17 +25,17 @@
<tr>
<th>{{'MANAGE_USER.FIELD_HEADER_USERNAME' | translate}}</th>
<td>
<input ng-show="canEditUsername()" ng-model="user.username" type="text"/>
<input ng-show="canEditUsername()" ng-model="user.username" type="text">
<span ng-hide="canEditUsername()">{{user.username}}</span>
</td>
</tr>
<tr>
<th>{{'MANAGE_USER.FIELD_HEADER_PASSWORD' | translate}}</th>
<td><input ng-model="user.password" type="password" /></td>
<td><input ng-model="user.password" type="password"></td>
</tr>
<tr>
<th>{{'MANAGE_USER.FIELD_HEADER_PASSWORD_AGAIN' | translate}}</th>
<td><input ng-model="passwordMatch" type="password" /></td>
<td><input ng-model="passwordMatch" type="password"></td>
</tr>
</table>
</div>

View File

@@ -24,7 +24,7 @@
<tr>
<th>{{'MANAGE_USER_GROUP.FIELD_HEADER_USER_GROUP_NAME' | translate}}</th>
<td>
<input ng-show="canEditIdentifier()" ng-model="userGroup.identifier" type="text"/>
<input ng-show="canEditIdentifier()" ng-model="userGroup.identifier" type="text">
<span ng-hide="canEditIdentifier()">{{userGroup.identifier}}</span>
</td>
</tr>

View File

@@ -5,7 +5,7 @@
<!-- Permission checkbox -->
<input type="checkbox" ng-model="context.getPermissionFlags().sharingProfilePermissions.READ[item.identifier]"
ng-change="context.sharingProfilePermissionChanged(item.identifier)"/>
ng-change="context.sharingProfilePermissionChanged(item.identifier)">
<!-- Sharing profile name -->
<span class="name">{{item.name}}</span>

View File

@@ -6,12 +6,12 @@
ng-show="canChangeSystemPermissions()">
<th>{{systemPermissionType.label | translate}}</th>
<td><input type="checkbox" ng-model="permissionFlags.systemPermissions[systemPermissionType.value]"
ng-change="systemPermissionChanged(systemPermissionType.value)"/></td>
ng-change="systemPermissionChanged(systemPermissionType.value)"></td>
</tr>
<tr ng-show="username">
<th>{{'MANAGE_USER.FIELD_HEADER_CHANGE_OWN_PASSWORD' | translate}}</th>
<td><input type="checkbox" ng-model="permissionFlags.userPermissions.UPDATE[username]"
ng-change="userPermissionChanged('UPDATE', username)"/></td>
ng-change="userPermissionChanged('UPDATE', username)"></td>
</tr>
</table>
</div>

View File

@@ -5,8 +5,8 @@
<!-- Search controls -->
<form class="filter" ng-submit="search()">
<input class="search-string" type="text" placeholder="{{'SETTINGS_CONNECTION_HISTORY.FIELD_PLACEHOLDER_FILTER' | translate}}" ng-model="searchString" />
<input class="search-button" type="submit" value="{{'SETTINGS_CONNECTION_HISTORY.ACTION_SEARCH' | translate}}" />
<input class="search-string" type="text" placeholder="{{'SETTINGS_CONNECTION_HISTORY.FIELD_PLACEHOLDER_FILTER' | translate}}" ng-model="searchString">
<input class="search-button" type="submit" value="{{'SETTINGS_CONNECTION_HISTORY.ACTION_SEARCH' | translate}}">
<button type="button" ng-click="downloadCSV()">{{'SETTINGS_CONNECTION_HISTORY.ACTION_DOWNLOAD' | translate}}</button>
</form>

View File

@@ -44,6 +44,6 @@
'new-sharing-profile' : 'app/settings/templates/newSharingProfile.html',
'new-connection-group' : 'app/settings/templates/newConnectionGroup.html'
}"/>
}"></guac-group-list>
</div>
</div>

View File

@@ -16,15 +16,15 @@
<table class="fields">
<tr>
<th>{{'SETTINGS_PREFERENCES.FIELD_HEADER_PASSWORD_OLD' | translate}}</th>
<td><input ng-model="oldPassword" type="password" /></td>
<td><input ng-model="oldPassword" type="password"></td>
</tr>
<tr>
<th>{{'SETTINGS_PREFERENCES.FIELD_HEADER_PASSWORD_NEW' | translate}}</th>
<td><input ng-model="newPassword" type="password" /></td>
<td><input ng-model="newPassword" type="password"></td>
</tr>
<tr>
<th>{{'SETTINGS_PREFERENCES.FIELD_HEADER_PASSWORD_NEW_AGAIN' | translate}}</th>
<td><input ng-model="newPasswordMatch" type="password" /></td>
<td><input ng-model="newPasswordMatch" type="password"></td>
</tr>
</table>
</div>
@@ -43,19 +43,19 @@
<!-- No IME -->
<div class="choice">
<label><input id="ime-none" name="input-method" ng-model="preferences.inputMethod" type="radio" value="none"/> {{'SETTINGS_PREFERENCES.NAME_INPUT_METHOD_NONE' | translate}}</label>
<label><input id="ime-none" name="input-method" ng-model="preferences.inputMethod" type="radio" value="none"> {{'SETTINGS_PREFERENCES.NAME_INPUT_METHOD_NONE' | translate}}</label>
<p class="caption"><label for="ime-none">{{'SETTINGS_PREFERENCES.HELP_INPUT_METHOD_NONE' | translate}}</label></p>
</div>
<!-- Text input -->
<div class="choice">
<label><input id="ime-text" name="input-method" ng-model="preferences.inputMethod" type="radio" value="text"/> {{'SETTINGS_PREFERENCES.NAME_INPUT_METHOD_TEXT' | translate}}</label>
<label><input id="ime-text" name="input-method" ng-model="preferences.inputMethod" type="radio" value="text"> {{'SETTINGS_PREFERENCES.NAME_INPUT_METHOD_TEXT' | translate}}</label>
<p class="caption"><label for="ime-text">{{'SETTINGS_PREFERENCES.HELP_INPUT_METHOD_TEXT' | translate}} </label></p>
</div>
<!-- Guac OSK -->
<div class="choice">
<label><input id="ime-osk" name="input-method" ng-model="preferences.inputMethod" type="radio" value="osk"/> {{'SETTINGS_PREFERENCES.NAME_INPUT_METHOD_OSK' | translate}}</label>
<label><input id="ime-osk" name="input-method" ng-model="preferences.inputMethod" type="radio" value="osk"> {{'SETTINGS_PREFERENCES.NAME_INPUT_METHOD_OSK' | translate}}</label>
<p class="caption"><label for="ime-osk">{{'SETTINGS_PREFERENCES.HELP_INPUT_METHOD_OSK' | translate}}</label></p>
</div>
@@ -70,18 +70,18 @@
<!-- Touchscreen -->
<div class="choice">
<input name="mouse-mode" ng-model="preferences.emulateAbsoluteMouse" type="radio" ng-value="true" checked="checked" id="absolute"/>
<input name="mouse-mode" ng-model="preferences.emulateAbsoluteMouse" type="radio" ng-value="true" checked="checked" id="absolute">
<div class="figure">
<label for="absolute"><img src="images/settings/touchscreen.png" alt="{{'SETTINGS_PREFERENCES.NAME_MOUSE_MODE_ABSOLUTE' | translate}}"/></label>
<label for="absolute"><img src="images/settings/touchscreen.png" alt="{{'SETTINGS_PREFERENCES.NAME_MOUSE_MODE_ABSOLUTE' | translate}}"></label>
<p class="caption"><label for="absolute">{{'SETTINGS_PREFERENCES.HELP_MOUSE_MODE_ABSOLUTE' | translate}}</label></p>
</div>
</div>
<!-- Touchpad -->
<div class="choice">
<input name="mouse-mode" ng-model="preferences.emulateAbsoluteMouse" type="radio" ng-value="false" id="relative"/>
<input name="mouse-mode" ng-model="preferences.emulateAbsoluteMouse" type="radio" ng-value="false" id="relative">
<div class="figure">
<label for="relative"><img src="images/settings/touchpad.png" alt="{{'SETTINGS_PREFERENCES.NAME_MOUSE_MODE_RELATIVE' | translate}}"/></label>
<label for="relative"><img src="images/settings/touchpad.png" alt="{{'SETTINGS_PREFERENCES.NAME_MOUSE_MODE_RELATIVE' | translate}}"></label>
<p class="caption"><label for="relative">{{'SETTINGS_PREFERENCES.HELP_MOUSE_MODE_RELATIVE' | translate}}</label></p>
</div>
</div>

View File

@@ -35,7 +35,7 @@
<tbody>
<tr ng-repeat="wrapper in wrapperPage" class="session">
<td class="select-session">
<input ng-change="wrapperSelectionChange(wrapper)" type="checkbox" ng-model="wrapper.checked" />
<input ng-change="wrapperSelectionChange(wrapper)" type="checkbox" ng-model="wrapper.checked">
</td>
<td><guac-user-item username="wrapper.activeConnection.username"></guac-user-item></td>
<td>{{wrapper.startDate}}</td>

View File

@@ -19,18 +19,18 @@
-->
<html ng-app="index" ng-controller="indexController">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi"/>
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<link rel="icon" type="image/png" href="images/logo-64.png"/>
<link rel="icon" type="image/png" sizes="144x144" href="images/logo-144.png"/>
<link rel="apple-touch-icon" type="image/png" href="images/logo-144.png"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<link rel="icon" type="image/png" href="images/logo-64.png">
<link rel="icon" type="image/png" sizes="144x144" href="images/logo-144.png">
<link rel="apple-touch-icon" type="image/png" href="images/logo-144.png">
<!-- Web application CSS (bundled by Webpack) -->
<% for (var index in htmlWebpackPlugin.files.css) { %>
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.files.css[index] %>"/>
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.files.css[index] %>">
<% } %>
<!-- Extension CSS (must be able to override webapp CSS) -->