Interface optimizations

This commit is contained in:
RainLoop Team 2014-04-29 19:31:49 +04:00
parent 7552ffe241
commit d430de9e93
68 changed files with 276 additions and 110 deletions

View file

@ -8,7 +8,7 @@
<form class="form-horizontal span4 wrapper loginForm thm-login" action="#/" onsubmit="return false;" data-bind="command: submitCommand">
<div class="control-group" data-bind="css: {'error': loginError}">
<div class="input-append">
<input class="inputLogin span4" placeholder="Login" type="text"
<input type="text" class="inputLogin span4" placeholder="Login"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: login, hasFocus: loginFocus" />
<span class="add-on">
@ -18,7 +18,7 @@
</div>
<div class="control-group" data-bind="css: {'error': passwordError}">
<div class="input-append">
<input class="inputPassword span4" placeholder="Password" type="password"
<input type="password" class="inputPassword span4" placeholder="Password"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password" />
<span class="add-on">

View file

@ -8,7 +8,8 @@
Page Title
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: title, saveTrigger: title.trigger" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: title, saveTrigger: title.trigger" />
<div data-bind="saveTrigger: title.trigger"></div>
</div>
</div>
@ -17,7 +18,8 @@
Loading Description
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: loadingDesc, saveTrigger: loadingDesc.trigger" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: loadingDesc, saveTrigger: loadingDesc.trigger" />
<div data-bind="saveTrigger: loadingDesc.trigger"></div>
</div>
</div>
@ -30,7 +32,8 @@
Logo
</label>
<div class="controls">
<input type="text" class="span5" placeholder="http://" data-bind="value: loginLogo, saveTrigger: loginLogo.trigger" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
placeholder="https://" data-bind="value: loginLogo, saveTrigger: loginLogo.trigger" />
<div data-bind="saveTrigger: loginLogo.trigger"></div>
</div>
</div>
@ -39,7 +42,8 @@
Description
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: loginDescription, saveTrigger: loginDescription.trigger" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: loginDescription, saveTrigger: loginDescription.trigger" />
<div data-bind="saveTrigger: loginDescription.trigger"></div>
</div>
</div>

View file

@ -50,7 +50,8 @@
Dsn
</label>
<div class="controls">
<input type="text" class="span6" data-bind="value: pdoDsn, saveTrigger: pdoDsnTrigger" />
<input type="text" class="span6" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: pdoDsn, saveTrigger: pdoDsnTrigger" />
<div data-bind="saveTrigger: pdoDsnTrigger"></div>
<blockquote style="margin: 10px 0 0 0">
<p class="muted">
@ -66,7 +67,8 @@
User
</label>
<div class="controls">
<input type="text" data-bind="value: pdoUser, saveTrigger: pdoUserTrigger" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: pdoUser, saveTrigger: pdoUserTrigger" />
<div data-bind="saveTrigger: pdoUserTrigger"></div>
</div>
</div>
@ -75,7 +77,8 @@
Password
</label>
<div class="controls">
<input type="password" data-bind="value: pdoPassword, saveTrigger: pdoPasswordTrigger" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: pdoPassword, saveTrigger: pdoPasswordTrigger" />
<div data-bind="saveTrigger: pdoPasswordTrigger"></div>
</div>
</div>

View file

@ -8,7 +8,8 @@
Default Domain
</label>
<div class="controls">
<input type="text" class="span3" data-bind="value: defaultDomain, saveTrigger: defaultDomainTrigger" />
<input type="text" class="span3" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: defaultDomain, saveTrigger: defaultDomainTrigger" />
<div data-bind="saveTrigger: defaultDomainTrigger"></div>
</div>
</div>

View file

@ -4,13 +4,13 @@
</label>
<div class="controls">
<!-- ko if: 0 === Type || 1 === Type -->
<input type="text" data-bind="value: value" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value" />
<!-- /ko -->
<!-- ko if: 3 === Type -->
<input type="password" data-bind="value: value" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value" />
<!-- /ko -->
<!-- ko if: 2 === Type -->
<textarea data-bind="value: value"></textarea>
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value"></textarea>
<!-- /ko -->
<!-- ko if: 4 === Type -->
<select data-bind="options: Default, value: value"></select>

View file

@ -45,15 +45,26 @@
Current password
</label>
<div class="controls">
<input type="password" data-bind="value: adminPassword, valueUpdate: 'afterkeydown'" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: adminPassword, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="control-group">
<div class="control-group" data-bind="css: {'error': adminPasswordNewError}">
<label class="control-label">
New password
</label>
<div class="controls">
<input type="password" data-bind="value: adminPasswordNew, valueUpdate: 'afterkeydown'" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: adminPasswordNew, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': adminPasswordNewError}">
<label class="control-label">
Repeat new password
</label>
<div class="controls">
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: adminPasswordNew2, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="control-group">

View file

@ -22,7 +22,8 @@
Client ID
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: googleClientID, saveTrigger: googleTrigger1" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: googleClientID, saveTrigger: googleTrigger1" />
<div data-bind="saveTrigger: googleTrigger1"></div>
</div>
</div>
@ -31,7 +32,8 @@
Client Secret
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: googleClientSecret, saveTrigger: googleTrigger2" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: googleClientSecret, saveTrigger: googleTrigger2" />
<div data-bind="saveTrigger: googleTrigger2"></div>
</div>
</div>
@ -51,7 +53,8 @@
App ID
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: facebookAppID, saveTrigger: facebookTrigger1" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: facebookAppID, saveTrigger: facebookTrigger1" />
<div data-bind="saveTrigger: facebookTrigger1"></div>
</div>
</div>
@ -60,7 +63,8 @@
App Secret
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: facebookAppSecret, saveTrigger: facebookTrigger2" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: facebookAppSecret, saveTrigger: facebookTrigger2" />
<div data-bind="saveTrigger: facebookTrigger2"></div>
</div>
</div>
@ -80,7 +84,8 @@
Consumer Key
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: twitterConsumerKey, saveTrigger: twitterTrigger1" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: twitterConsumerKey, saveTrigger: twitterTrigger1" />
<div data-bind="saveTrigger: twitterTrigger1"></div>
</div>
</div>
@ -89,7 +94,8 @@
Consumer Secret
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: twitterConsumerSecret, saveTrigger: twitterTrigger2" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: twitterConsumerSecret, saveTrigger: twitterTrigger2" />
<div data-bind="saveTrigger: twitterTrigger2"></div>
</div>
</div>
@ -109,7 +115,8 @@
Api Key
</label>
<div class="controls">
<input type="text" class="span5" data-bind="value: dropboxApiKey, saveTrigger: dropboxTrigger1" />
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: dropboxApiKey, saveTrigger: dropboxTrigger1" />
<div data-bind="saveTrigger: dropboxTrigger1"></div>
</div>
</div>

View file

@ -20,7 +20,7 @@
{{INCLUDE/TopControlGroup/PLACE}}
<div class="control-group" data-bind="css: {'error': emailError}">
<div class="input-append">
<input class="i18n inputEmail span4" type="email" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
<input type="email" class="i18n inputEmail span4" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email, hasFocus: emailFocus" data-i18n-placeholder="LOGIN/LABEL_EMAIL" />
<span class="add-on">
<i class="icon-mail"></i>
@ -29,7 +29,7 @@
</div>
<div class="control-group" data-bind="css: {'error': loginError}, visible: allowCustomLogin()">
<div class="input-append">
<input class="i18n inputLogin span4" type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
<input type="email" class="i18n inputLogin span4" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: login, hasFocus: loginFocus" data-i18n-placeholder="LOGIN/LABEL_LOGIN" />
<span class="add-on">
<i class="icon-user"></i>
@ -38,7 +38,7 @@
</div>
<div class="control-group" data-bind="css: {'error': passwordError}">
<div class="input-append">
<input class="i18n inputPassword span4" type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
<input type="password" class="i18n inputPassword span4" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password" data-i18n-placeholder="LOGIN/LABEL_PASSWORD" />
<span class="add-on">
<i class="icon-key"></i>
@ -47,7 +47,7 @@
</div>
<div class="control-group" data-bind="visible: additionalCode.visibility(), css: {'error': additionalCode.error}">
<div class="input-append">
<input class="i18n inputAdditionalCode span4" type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
<input type="text" class="i18n inputAdditionalCode span4" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: additionalCode, hasFocus: additionalCode.focused" data-i18n-placeholder="LOGIN/LABEL_VERIFICATION_CODE" />
<span class="add-on">
<i class="icon-key"></i>
@ -75,37 +75,37 @@
<span class="i18n" data-i18n-text="LOGIN/LABEL_SIGN_ME"></span>
</label>
<div class="pull-right">
<div class="btn-group" data-bind="visible: socialLoginEnabled() || allowLanguagesOnLogin()">
<a class="btn dropdown-toggle buttonLoginMore" data-toggle="dropdown">
<div class="btn-group dropdown" data-bind="registrateBootstrapDropdown: true, visible: socialLoginEnabled() || allowLanguagesOnLogin()">
<a id="login-more-dropdown-id" href="#" tabindex="-1" class="btn dropdown-toggle buttonLoginMore" data-toggle="dropdown">
<i data-bind="css: langRequest() ? 'icon-spinner animated' : 'icon-list'"></i>
</a>
<ul class="dropdown-menu g-ui-menu">
<ul class="dropdown-menu g-ui-menu" tabindex="-1" role="menu" aria-labelledby="login-more-dropdown-id">
{{INCLUDE/MenuDropdownTop/PLACE}}
<li class="e-item" data-bind="visible: facebookLoginEnabled">
<a class="e-link" data-bind="command: facebookCommand">
<li class="e-item" role="presentation" data-bind="visible: facebookLoginEnabled">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: facebookCommand">
<i class="icon-facebook-alt"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="LOGIN/TITLE_SIGN_IN_FACEBOOK"></span>
</a>
</li>
<li class="e-item" data-bind="visible: googleLoginEnabled">
<a class="e-link" data-bind="command: googleCommand">
<li class="e-item" role="presentation" data-bind="visible: googleLoginEnabled">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: googleCommand">
<i class="icon-google"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="LOGIN/TITLE_SIGN_IN_GOOGLE"></span>
</a>
</li>
<li class="e-item" data-bind="visible: twitterLoginEnabled">
<a class="e-link" data-bind="command: twitterCommand">
<li class="e-item" role="presentation" data-bind="visible: twitterLoginEnabled">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: twitterCommand">
<i class="icon-twitter"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="LOGIN/TITLE_SIGN_IN_TWITTER"></span>
</a>
</li>
{{INCLUDE/MenuDropdownMiddle/PLACE}}
<li class="divider" data-bind="visible: socialLoginEnabled() && allowLanguagesOnLogin()"></li>
<li class="e-item" data-bind="visible: allowLanguagesOnLogin">
<a class="e-link" data-bind="click: selectLanguage">
<li class="divider" role="presentation" data-bind="visible: socialLoginEnabled() && allowLanguagesOnLogin()"></li>
<li class="e-item" role="presentation" data-bind="visible: allowLanguagesOnLogin">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: selectLanguage">
<label class="flag-selector">
<span class="flag-wrapper">
<span data-bind="css: 'flag flag-' + mainLanguage()" style=""></span>

View file

@ -111,7 +111,9 @@
<div class="second-toolbar thm-message-list-top-toolbar">
<div class="form-inline">
<div class="input-append pull-right">
<input class="i18n span4 inputSearch" type="text" tabindex="-1" placeholder="" data-i18n-placeholder="SEARCH/MAIN_INPUT_PLACEHOLDER" data-bind="value: inputProxyMessageListSearch, onEnter: searchEnterAction, hasfocus: inputMessageListSearchFocus" />
<input type="search" class="i18n span4 inputSearch" tabindex="-1"
placeholder="Search" autocorrect="off" autocapitalize="off"
data-i18n-placeholder="SEARCH/MAIN_INPUT_PLACEHOLDER" data-bind="value: inputProxyMessageListSearch, onEnter: searchEnterAction, hasfocus: inputMessageListSearchFocus" />
<a class="btn buttonMoreSearch" data-bind="click: advancedSearchClick">
<span class="caret"></span>
</a>

View file

@ -239,7 +239,9 @@
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="MESSAGE/PGP_ENCRYPTED_MESSAGE_DESC" data-bind="click: function() { decryptPgpEncryptedMessage(message()); }"></span>
&nbsp;&nbsp;
<input type="password" class="i18n span3 inputPgpPassword" style="margin-bottom: 0" data-i18n-placeholder="MESSAGE/PGP_PASSWORD_INPUT_PLACEHOLDER" data-bind="value: viewPgpPassword, onEnter: function() { decryptPgpEncryptedMessage(message()); }" />
<input type="password" class="i18n span3 inputPgpPassword"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
style="margin-bottom: 0" data-i18n-placeholder="MESSAGE/PGP_PASSWORD_INPUT_PLACEHOLDER" data-bind="value: viewPgpPassword, onEnter: function() { decryptPgpEncryptedMessage(message()); }" />
</div>
<div class="attachmentsPlace" data-bind="visible: message() && message().hasVisibleAttachments()">
<ul class="attachmentList" data-bind="foreach: message() ? message().attachments() : []">

View file

@ -23,7 +23,8 @@
Subscription Key
</label>
<div class="controls ">
<input type="text" class="span5" data-bind="visible: !activateProcess() && !activationSuccessed(), value: key, valueUpdate: 'afterkeydown', hasFocus: key.focus"></input>
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="visible: !activateProcess() && !activationSuccessed(), value: key, valueUpdate: 'afterkeydown', hasFocus: key.focus"></input>
<h4 class="help-inline" style="margin-top: 5px;" data-bind="text: key, visible: activateProcess() || activationSuccessed()"></h4>
<div class="help-block" data-bind="text: activateText"></div>
</div>

View file

@ -17,21 +17,21 @@
<div class="control-group" data-bind="css: {'error': emailError}">
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_EMAIL"></label>
<div class="controls">
<input class="inputEmail input-large" type="email" autocomplete="off"
<input type="email" class="inputEmail input-large" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email, valueUpdate: 'afterkeydown', onEnter: addAccountCommand, hasfocus: emailFocus" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': loginError}, visible: allowCustomLogin()">
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_LOGIN"></label>
<div class="controls">
<input class="inputLogin input-large" type="text" autocomplete="off"
<input type="email" class="inputLogin input-large" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: login, onEnter: addAccountCommand, hasfocus: loginFocus" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': passwordError}">
<label class="i18n control-label" data-i18n-text="LOGIN/LABEL_PASSWORD"></label>
<div class="controls">
<input class="inputPassword input-large" type="password" autocomplete="off"
<input type="password" class="inputPassword input-large" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password, onEnter: addAccountCommand" />
</div>
</div>

View file

@ -16,7 +16,8 @@
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_FROM"></span>
</label>
<div class="controls">
<input class="uiInput inputFrom" type="text" data-bind="value: from, onEnter: searchCommand, hasfocus: fromFocus, onEsc: cancelCommand" />
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: from, onEnter: searchCommand, hasfocus: fromFocus, onEsc: cancelCommand" />
</div>
</div>
<div class="control-group">
@ -24,7 +25,8 @@
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_TO"></span>
</label>
<div class="controls">
<input class="uiInput inputFrom" type="text" data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: to, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
</div>
<div class="control-group">
@ -32,7 +34,8 @@
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_SUBJECT"></span>
</label>
<div class="controls">
<input class="uiInput inputFrom" type="text" data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: subject, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
</div>
<div class="control-group">
@ -40,7 +43,8 @@
<span class="i18n" data-i18n-text="SEARCH/LABEL_ADV_TEXT"></span>
</label>
<div class="controls">
<input class="uiInput inputFrom" type="text" data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
<input type="text" class="uiInput inputFrom" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: text, onEnter: searchCommand, onEsc: cancelCommand" />
</div>
</div>
</div>

View file

@ -57,7 +57,7 @@
</label>
</div>
<div class="e-cell e-value">
<input type="text" data-bind="emailsTags: to" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to" />
<span class="help-block error-desc" data-bind="visible: emptyToError">
<span class="i18n" data-i18n-text="COMPOSE/EMPTY_TO_ERROR_DESC"></span>
</span>
@ -68,7 +68,7 @@
<span class="i18n" data-i18n-text="COMPOSE/TITLE_CC"></span>
</div>
<div class="e-cell e-value">
<input type="text" data-bind="emailsTags: cc" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: cc" />
</div>
</div>
<div class="e-row bcc-row" data-bind="visible: showCcAndBcc">
@ -76,7 +76,7 @@
<span class="i18n" data-i18n-text="COMPOSE/TITLE_BCC"></span>
</div>
<div class="e-cell e-value">
<input type="text" data-bind="emailsTags: bcc" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: bcc" />
</div>
</div>
<div class="e-row reply-to-row" data-bind="visible: false">
@ -84,7 +84,7 @@
<span class="i18n" data-i18n-text="COMPOSE/TITLE_REPLY_TO"></span>
</div>
<div class="e-cell e-value">
<input type="text" data-bind="emailsTags: replyTo" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: replyTo" />
</div>
</div>
<div class="e-row">
@ -92,7 +92,7 @@
<span class="i18n" data-i18n-text="COMPOSE/TITLE_SUBJECT"></span>
</div>
<div class="e-cell e-value">
<input type="text" size="70" data-bind="value: subject, valueUpdate: 'afterkeydown'" />
<input type="text" size="70" autocomplete="off" data-bind="value: subject, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="e-row">

View file

@ -30,7 +30,7 @@
<div class="control-group">
<label class="i18n control-label" data-i18n-text="POPUPS_COMPOSE_OPEN_PGP/LABEL_PASSWORD"></label>
<div class="controls">
<input class="inputPassword input-large" type="password" autocomplete="off"
<input type="password" class="inputPassword input-large" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password, hasfocus: password.focus, onEnter: doCommand" />
</div>
</div>

View file

@ -67,7 +67,8 @@
</div>
<div class="modal-body" style="position: relative">
<div class="b-list-toopbar">
<input class="i18n span3 e-search" type="text" placeholder="Search" data-i18n-placeholder="CONTACTS/SEARCH_INPUT_PLACEHOLDER" data-bind="value: search" />
<input type="search" class="i18n span3 e-search" placeholder="Search" autocorrect="off" autocapitalize="off"
data-i18n-placeholder="CONTACTS/SEARCH_INPUT_PLACEHOLDER" data-bind="value: search" />
</div>
<div class="b-list-content g-ui-user-select-none" data-bind="nano: true, css: {'hideContactListCheckbox': !useCheckboxesInList()}">
<div class="content g-scrollbox">
@ -127,7 +128,9 @@
<div class="controls fix-width" data-bind="foreach: viewPropertiesNames">
<div class="property-line">
<span class="contactValueStatic" data-bind="text: value" />
<input type="text" class="contactValueInput" placeholder="" data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
<input type="text" class="contactValueInput" placeholder=""
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup', attr: {'placeholder': placeholderValue}" />
</div>
</div>
</div>
@ -139,7 +142,9 @@
<div data-bind="foreach: viewPropertiesEmails">
<div class="property-line">
<span class="contactValueStatic" data-bind="text: value" />
<input type="email" class="contactValueInput" data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
<input type="email" class="contactValueInput"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
</div>
</div>
<a href="javascript:void(0);" class="g-ui-link add-link i18n" data-bind="visible: !viewReadOnly(), click: addNewEmail" data-i18n-text="CONTACTS/LINK_ADD_EMAIL"></a>
@ -153,7 +158,9 @@
<div data-bind="foreach: viewPropertiesPhones">
<div class="property-line">
<span class="contactValueStatic" data-bind="text: value" />
<input type="text" class="contactValueInput" data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
<input type="text" class="contactValueInput"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: value, hasFocus: focused, valueUpdate: 'keyup'" />
</div>
</div>
<a href="javascript:void(0);" class="g-ui-link add-link i18n" data-bind="visible: !viewReadOnly(), click: addNewPhone" data-i18n-text="CONTACTS/LINK_ADD_PHONE"></a>

View file

@ -10,7 +10,8 @@
<div class="span8">
Name <span style="color: #aaa">(wildcard supported)</span>
<br />
<input type="text" data-bind="value: name, hasfocus: name.focused, valueUpdate: 'afterkeydown'" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name, hasfocus: name.focused, valueUpdate: 'afterkeydown'" />
<span class="error-desc" data-bind="text: savingError"></span>
</div>
</div>
@ -22,12 +23,14 @@
</div>
Server
<br />
<input type="text" data-bind="value: imapServer, valueUpdate: 'afterkeydown', hasfocus: imapServerFocus" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: imapServer, valueUpdate: 'afterkeydown', hasfocus: imapServerFocus" />
<br />
<br />
Port
<br />
<input type="text" data-bind="value: imapPort, valueUpdate: 'afterkeydown'" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: imapPort, valueUpdate: 'afterkeydown'" />
<br />
<br />
Secure
@ -51,12 +54,14 @@
</div>
Server
<br />
<input type="text" data-bind="value: smtpServer, valueUpdate: 'afterkeydown', hasfocus: smtpServerFocus" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: smtpServer, valueUpdate: 'afterkeydown', hasfocus: smtpServerFocus" />
<br />
<br />
Port
<br />
<input type="text" data-bind="value: smtpPort, valueUpdate: 'afterkeydown'" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: smtpPort, valueUpdate: 'afterkeydown'" />
<br />
<br />
Secure

View file

@ -15,7 +15,8 @@
<span class="i18n" data-i18n-text="POPUPS_CREATE_FOLDER/LABEL_NAME"></span>
</label>
<div class="controls">
<input class="uiInput inputName" type="text" data-bind="value: folderName, hasfocus: folderName.focused, valueUpdate: 'afterkeydown', onEnter: createFolder" />
<input type="text" class="uiInput inputName" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: folderName, hasfocus: folderName.focused, valueUpdate: 'afterkeydown', onEnter: createFolder" />
</div>
</div>
<div class="control-group">

View file

@ -12,21 +12,24 @@
<div class="control-group" data-bind="css: {'error': email.error}">
<label class="i18n control-label" data-i18n-text="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_EMAIL"></label>
<div class="controls">
<input class="inputEmail input-large" type="email" autocomplete="off"
<input type="email" class="inputEmail input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email, hasfocus: email.focus" />
</div>
</div>
<div class="control-group">
<label class="i18n control-label" data-i18n-text="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_NAME"></label>
<div class="controls">
<input class="inputName input-large" type="text" autocomplete="off"
<input type="text" class="inputName input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name" />
</div>
</div>
<div class="control-group">
<label class="i18n control-label" data-i18n-text="POPUPS_GENERATE_OPEN_PGP_KEYS/LABEL_PASSWORD"></label>
<div class="controls">
<input class="inputPassword input-large" type="password" autocomplete="off"
<input type="password" class="inputPassword input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: password" />
</div>
</div>

View file

@ -17,7 +17,8 @@
<div class="control-group" data-bind="visible: !owner(), css: {'error': email.hasError}">
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_EMAIL"></label>
<div class="controls">
<input class="inputEmail input-large" type="email" autocomplete="off"
<input type="email" class="inputEmail input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: email, onEnter: addOrEditIdentityCommand, hasfocus: email.focused" />
</div>
</div>
@ -30,21 +31,24 @@
<div class="control-group">
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_NAME"></label>
<div class="controls">
<input class="inputName input-large" type="text" autocomplete="off"
<input type="text" class="inputName input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: name, onEnter: addOrEditIdentityCommand, hasfocus: name.focused" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': replyTo.hasError}" style="display: none">
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_REPLY_TO"></label>
<div class="controls">
<input class="inputReplyTo input-large" type="text" autocomplete="off"
<input type="text" class="inputReplyTo input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyTo.focused" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': bcc.hasError}" style="display: none">
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_BCC"></label>
<div class="controls">
<input class="inputBcc input-large" type="text" autocomplete="off"
<input type="text" class="inputBcc input-large"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: bcc, onEnter: addOrEditIdentityCommand, hasfocus: bcc.focused" />
</div>
</div>

View file

@ -15,7 +15,9 @@
<span class="i18n" data-i18n-text="POPUPS_TWO_FACTOR_TEST/LABEL_CODE"></span>
</label>
<div class="controls">
<input class="uiInput inputName" type="text" data-bind="value: code, hasfocus: code.focused, valueUpdate: 'afterkeydown', onEnter: testCode" />
<input type="text" class="uiInput inputName"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: code, hasfocus: code.focused, valueUpdate: 'afterkeydown', onEnter: testCode" />
</div>
</div>
</div>

View file

@ -10,7 +10,8 @@
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_CURRENT_PASSWORD"></span>
</label>
<div class="controls">
<input type="password" data-bind="value: currentPassword, valueUpdate: 'afterkeydown'" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: currentPassword, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': passwordMismatch}">
@ -18,7 +19,8 @@
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_NEW_PASSWORD"></span>
</label>
<div class="controls">
<input type="password" data-bind="value: newPassword, valueUpdate: 'afterkeydown'" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: newPassword, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': passwordMismatch}">
@ -26,7 +28,8 @@
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_REPEAT_PASSWORD"></span>
</label>
<div class="controls">
<input type="password" data-bind="value: newPassword2, valueUpdate: 'afterkeydown'" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: newPassword2, valueUpdate: 'afterkeydown'" />
</div>
</div>
<div class="control-group">

View file

@ -32,7 +32,9 @@
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_AB_URL"></span>
</label>
<div class="controls">
<input class="input-xxlarge" type="text" data-bind="value: contactsSyncUrl" placeholder="https://" />
<input type="text" class="input-xxlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: contactsSyncUrl" placeholder="https://" />
</div>
</div>
<div class="control-group">
@ -40,7 +42,8 @@
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_USER"></span>
</label>
<div class="controls">
<input type="text" data-bind="value: contactsSyncUser" />
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: contactsSyncUser" />
</div>
</div>
<div class="control-group">
@ -48,7 +51,8 @@
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_PASSWORD"></span>
</label>
<div class="controls">
<input type="password" data-bind="value: contactsSyncPass" />
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: contactsSyncPass" />
</div>
</div>

View file

@ -4,7 +4,10 @@
<span class="folder-name" data-bind="text: name, visible: !edited(), css: { 'e-action': canBeEdited, 'can-be-edited': canBeEdited }, click: function (oFolder) { $root.folderForEdit(oFolder); }"></span>
&nbsp;
<span class="folder-system-name" data-bind="text: manageFolderSystemName, visible: isSystemFolder"></span>
<input type="text" class="folder-name-input" data-bind="value: nameForEdit, visible: edited, hasfocus: edited, onEnter: function () { $root.folderEditOnEnter($data); }, onEsc: function () { $root.folderEditOnEsc($data); }" />
<input type="text" class="folder-name-input"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: nameForEdit, visible: edited, hasfocus: edited, onEnter: function () { $root.folderEditOnEnter($data); }, onEsc: function () { $root.folderEditOnEsc($data); }" />
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete button-delete-transitions" data-bind="css: {'delete-access': deleteAccess()}, click: function() { $root.deleteFolder($data); }">
<span class="i18n" data-i18n-text="SETTINGS_FOLDERS/DELETING_ASK"></span>
</a>

View file

@ -23,13 +23,13 @@
</label>
<div class="controls">
<label for="richTextEditorTypeID1">
<input id="richTextEditorTypeID1" type="radio" name="richTextEditorType" value="Html" data-bind="checked: editorDefaultType" style="position: absolute; left: -10000px" />
<input type="radio" id="richTextEditorTypeID1" name="richTextEditorType" value="Html" data-bind="checked: editorDefaultType" style="position: absolute; left: -10000px" />
<i data-bind="css: 'Html' === editorDefaultType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_EDITOR_HTML_AS_DEFAULT"></span>
</label>
<label for="richTextEditorTypeID2">
<input id="richTextEditorTypeID2" type="radio" name="richTextEditorType" value="Plain" data-bind="checked: editorDefaultType" style="position: absolute; left: -10000px" />
<input type="radio" id="richTextEditorTypeID2" name="richTextEditorType" value="Plain" data-bind="checked: editorDefaultType" style="position: absolute; left: -10000px" />
<i data-bind="css: 'Plain' === editorDefaultType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_EDITOR_PLAIN_AS_DEFAULT"></span>

View file

@ -8,7 +8,9 @@
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LABEL_DISPLAY_NAME"></span>
</label>
<div class="controls">
<input class="input-xlarge" type="text" data-bind="value: displayName, saveTrigger: displayNameTrigger" />
<input type="text" class="input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: displayName, saveTrigger: displayNameTrigger" />
<div data-bind="saveTrigger: displayNameTrigger"></div>
</div>
</div>
@ -17,7 +19,9 @@
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LABEL_REPLY_TO"></span>
</label>
<div class="controls">
<input class="input-xlarge" type="text" data-bind="value: replyTo" />
<input type="text" class="input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: replyTo" />
</div>
</div>
<div class="control-group">

View file

@ -8,7 +8,9 @@
<span class="i18n" data-i18n-text="SETTINGS_IDENTITY/LABEL_DISPLAY_NAME"></span>
</label>
<div class="controls">
<input class="input-xlarge" type="text" data-bind="value: displayName, saveTrigger: displayNameTrigger" />
<input type="text" class="input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: displayName, saveTrigger: displayNameTrigger" />
<div data-bind="saveTrigger: displayNameTrigger"></div>
</div>
</div>
@ -17,7 +19,9 @@
<span class="i18n" data-i18n-text="SETTINGS_IDENTITY/LABEL_REPLY_TO"></span>
</label>
<div class="controls">
<input class="input-xlarge" type="text" data-bind="value: replyTo" />
<input type="text" class="input-xlarge"
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="value: replyTo" />
</div>
</div>
<div class="control-group">

View file

@ -23,13 +23,13 @@
</label>
<div class="controls">
<label for="customThemeTypeID1">
<input id="customThemeTypeID1" type="radio" name="customThemeType" value="Light" data-bind="checked: customThemeType" style="position: absolute; left: -10000px" />
<input type="radio" id="customThemeTypeID1" name="customThemeType" value="Light" data-bind="checked: customThemeType" style="position: absolute; left: -10000px" />
<i data-bind="css: 'Light' === customThemeType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LABEL_CUSTOM_TYPE_LIGHT"></span>
</label>
<label for="customThemeTypeID2">
<input id="customThemeTypeID2" type="radio" name="customThemeType" value="Dark" data-bind="checked: customThemeType" style="position: absolute; left: -10000px" />
<input type="radio" id="customThemeTypeID2" name="customThemeType" value="Dark" data-bind="checked: customThemeType" style="position: absolute; left: -10000px" />
<i data-bind="css: 'Dark' === customThemeType() ? ' icon-radio-checked' : 'icon-radio-unchecked'"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LABEL_CUSTOM_TYPE_DARK"></span>

View file

@ -48,7 +48,13 @@
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_SETTINGS"></span>
</a>
</li>
<li class="e-item" role="presentation">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: settingsHelp">
<i class="icon-help"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_HELP"></span>
</a>
</li>
<li class="divider" role="presentation"></li>
<li class="e-item" role="presentation">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: logoutClick">