Identities refactoring and improvements (Reply-To and BCC)

This commit is contained in:
RainLoop Team 2015-02-06 19:26:20 +04:00
parent 3e01887f85
commit 493191375f
43 changed files with 578 additions and 1051 deletions

View file

@ -12,7 +12,6 @@
<meta http-equiv="refresh" content="0; URL=./?/BadBrowser" />
<![endif]-->
<script data-cfasync="false">
window.__rlt__ = (new Date).getTime();
if (!window.navigator || !window.navigator.cookieEnabled) {
window.document.location.replace('./?/NoCookie');
}

View file

@ -136,13 +136,6 @@
value: capaAdditionalAccounts
}
}"></div>
<div data-bind="component: {
name: 'Checkbox',
params: {
label: 'Allow additional identities',
value: capaAdditionalIdentities
}
}"></div>
</div>
</div>
</div>

View file

@ -243,6 +243,11 @@
&nbsp;
<span class="bcc" data-bind="text: viewBcc, title: viewBcc"></span>
</div>
<div data-bind="visible: '' !== viewReplyTo()">
<span class="i18n uiLabel labelBcc" data-i18n-text="MESSAGE/LABEL_REPLY_TO"></span>:
&nbsp;
<span class="bcc" data-bind="text: viewReplyTo, title: viewReplyTo"></span>
</div>
<div data-bind="visible: '' !== viewDate()">
<span class="i18n uiLabel labelBcc" data-i18n-text="MESSAGE/LABEL_DATE"></span>:
&nbsp;

View file

@ -36,7 +36,7 @@
<div class="dropdown pull-left" data-bind="registrateBootstrapDropdown: true, openDropdownTrigger: identitiesDropdownTrigger">
<a class="dropdown-toggle g-ui-dropdown e-identity" href="#" tabindex="-1"
id="identity-label-id" role="button" data-toggle="dropdown"
data-bind="text: currentIdentityString, dropdownCloser: true, css: {'multiply': 1 < identitiesOptions().length }">
data-bind="text: currentIdentityView, dropdownCloser: true, css: {'multiply': 1 < identitiesOptions().length }">
</a>
<!-- ko if: 1 < identitiesOptions().length -->
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="identity-label-id">
@ -90,8 +90,14 @@
<span class="i18n g-ui-link" data-i18n-text="COMPOSE/TITLE_CC"
data-bind="visible: !showCc(), click: function () { showCc(true); }"></span>
&nbsp;&nbsp;
<span class="i18n g-ui-link" data-i18n-text="COMPOSE/TITLE_BCC"
data-bind="visible: !showBcc(), click: function () { showBcc(true); }"></span>
<span data-bind="visible: !showBcc()">
<span class="i18n g-ui-link" data-i18n-text="COMPOSE/TITLE_BCC"
data-bind="click: function () { showBcc(true); }"></span>
&nbsp;&nbsp;
</span>
<span class="i18n g-ui-link" data-i18n-text="COMPOSE/TITLE_REPLY_TO"
data-bind="visible: !showReplyTo(), click: function () { showReplyTo(true); }"></span>
&nbsp;
</span>
</div>
</div>
@ -124,7 +130,7 @@
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: bcc, autoCompleteSource: emailsSource" />
</div>
</div>
<div class="e-row reply-to-row" data-bind="visible: false">
<div class="e-row reply-to-row" data-bind="visible: showReplyTo">
<div class="e-cell e-label">
<span class="i18n" data-i18n-text="COMPOSE/TITLE_REPLY_TO"></span>
</div>

View file

@ -37,7 +37,7 @@
data-bind="value: name, onEnter: addOrEditIdentityCommand, hasfocus: name.focused" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': replyTo.hasError}" style="display: none">
<div class="control-group" data-bind="css: {'error': replyTo.hasError}">
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_REPLY_TO"></label>
<div class="controls">
<input type="text" class="inputReplyTo input-large"
@ -45,7 +45,7 @@
data-bind="value: replyTo, onEnter: addOrEditIdentityCommand, hasfocus: replyTo.focused" />
</div>
</div>
<div class="control-group" data-bind="css: {'error': bcc.hasError}" style="display: none">
<div class="control-group" data-bind="css: {'error': bcc.hasError}">
<label class="i18n control-label" data-i18n-text="POPUPS_IDENTITIES/LABEL_BCC"></label>
<div class="controls">
<input type="text" class="inputBcc input-large"
@ -56,7 +56,7 @@
</div>
</div>
<div class="modal-footer">
<a class="btn buttonAddAccount" data-bind="command: addOrEditIdentityCommand">
<a class="btn buttonAddIdentity" data-bind="command: addOrEditIdentityCommand">
<i data-bind="visible: !edit(), css: {'icon-user-add': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
<i data-bind="visible: edit, css: {'icon-ok': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
&nbsp;&nbsp;

View file

@ -96,6 +96,10 @@ pre {
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_BCC"></td>
<td class="tv" data-bind="text: popupBcc"></td>
</tr>
<tr data-bind="visible: '' !== popupReplyTo">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_REPLY_TO"></td>
<td class="tv" data-bind="text: popupReplyTo"></td>
</tr>
<tr data-bind="visible: '' !== popupDate">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_DATE"></td>
<td class="tv" data-bind="text: popupDate"></td>

View file

@ -1,7 +1,7 @@
<div class="b-settings-accounts g-ui-user-select-none">
<div class="form-horizontal">
<div class="legend">
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/LEGEND_ACCOUNTS"></span>
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/LEGEND_ACCOUNTS_AND_IDENTITIES"></span>
</div>
</div>
<a class="btn" data-bind="click: addNewAccount">
@ -9,12 +9,18 @@
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/BUTTON_ADD_ACCOUNT"></span>
</a>
&nbsp;&nbsp;
<a class="btn" data-bind="click: addNewIdentity">
<i class="icon-user-add"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/BUTTON_ADD_IDENTITY"></span>
</a>
<div class="process-place" data-bind="style: {'visibility': visibility }">
<i class="icon-spinner animated"></i>
&nbsp;&nbsp;
<span data-bind="text: processText"></span>
</div>
<table class="table table-hover list-table" data-bind="i18nUpdate: accounts">
<table class="table table-hover list-table accounts-list" data-bind="i18nUpdate: accounts">
<colgroup>
<col />
<col style="width: 150px" />
@ -29,13 +35,42 @@
<span class="account-name" data-bind="text: email"></span>
</td>
<td>
<span data-bind="visible: !canBeDalete()"></span>
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete button-delete-transitions" data-bind="visible: canBeDalete, css: {'delete-access': deleteAccess}, click: function(oAccount) { $root.deleteAccount(oAccount); }">
<span data-bind="visible: !canBeDeleted()"></span>
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete button-delete-transitions" data-bind="visible: canBeDeleted, css: {'delete-access': deleteAccess}, click: function(oAccount) { $root.deleteAccount(oAccount); }">
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/DELETING_ASK"></span>
</a>
</td>
<td>
<span class="delete-account" data-bind="visible: !deleteAccess() && canBeDalete(), click: function (oAccount) { $root.accountForDeletion(oAccount); }">
<span class="delete-account" data-bind="visible: !deleteAccess() && canBeDeleted(), click: function (oAccount) { $root.accountForDeletion(oAccount); }">
<i class="icon-trash"></i>
</span>
</td>
</tr>
</tbody>
</table>
<br />
<br />
<table class="table table-hover list-table identities-list" data-bind="i18nUpdate: identities">
<colgroup>
<col />
<col style="width: 150px" />
<col style="width: 1%" />
</colgroup>
<tbody data-bind="foreach: identities">
<tr class="identity-item">
<td class="e-action">
<span class="identity-img icon-user"></span>
&nbsp;&nbsp;
<span class="identity-name" data-bind="text: formattedName()"></span>
</td>
<td>
<span data-bind="visible: !canBeDeleted()"></span>
<a class="btn btn-small btn-small-small btn-danger pull-right button-delete button-delete-transitions" data-bind="visible: canBeDeleted, css: {'delete-access': deleteAccess}, click: function(oIdentity) { $root.deleteIdentity(oIdentity); }">
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/DELETING_ASK"></span>
</a>
</td>
<td>
<span class="delete-identity" data-bind="visible: !deleteAccess() && canBeDeleted(), click: function (oIdentity) { $root.identityForDeletion(oIdentity); }">
<i class="icon-trash"></i>
</span>
</td>

View file

@ -93,7 +93,7 @@
</a>
</td>
<td>
<span class="delete-filter" data-bind="visible: !deleteAccess() && canBeDalete(), click: function (oFilter) { $root.filterForDeletion(oFilter); }">
<span class="delete-filter" data-bind="visible: !deleteAccess() && canBeDeleted(), click: function (oFilter) { $root.filterForDeletion(oFilter); }">
<i class="icon-trash"></i>
</span>
</td>

View file

@ -1,107 +0,0 @@
<div class="b-settings-identities">
<div class="form-horizontal">
<div class="legend g-ui-user-select-none">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LEGEND_IDENTITY"></span>
</div>
<div class="control-group g-ui-user-select-none" data-bind="if: 0 < identities().length">
<label class="control-label" data-bind="i18nUpdate: identities">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LABEL_DEFAULT"></span>
</label>
<div class="controls">
<div data-bind="component: {
name: 'Select',
params: {
options: identitiesOptions,
value: defaultIdentityID,
optionsText: 'name',
optionsValue: 'id',
trigger: defaultIdentityIDTrigger
}
}"></div>
</div>
</div>
<div class="control-group g-ui-user-select-none">
<label class="control-label">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LABEL_DISPLAY_NAME"></span>
</label>
<div class="controls">
<div data-bind="component: {
name: 'Input',
params: {
value: displayName,
size: 4,
trigger: displayNameTrigger
}
}"></div>
</div>
</div>
<!-- <div class="control-group g-ui-user-select-none" style="display: none">
<label class="control-label">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LABEL_REPLY_TO"></span>
</label>
<div class="controls">
<div data-bind="component: {
name: 'Input',
params: {
value: replyTo,
size: 4
}
}"></div>
</div>
</div>-->
<div class="control-group">
<label class="control-label g-ui-user-select-none">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LABEL_SIGNATURE"></span>
</label>
<div class="controls">
<div class="e-signature-place" data-bind="initDom: signatureDom"></div>
&nbsp;&nbsp;
<div data-bind="component: {
name: 'SaveTrigger',
params: { value: signatureTrigger, verticalAlign: 'top' }
}"></div>
</div>
</div>
</div>
<br />
<div class="form-horizontal g-ui-user-select-none">
<div class="legend">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LEGEND_IDENTITIES"></span>
</div>
</div>
<a class="btn g-ui-user-select-none" data-bind="click: addNewIdentity">
<i class="icon-user-add"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/BUTTON_ADD_IDENTITY"></span>
</a>
<div class="process-place g-ui-user-select-none" data-bind="style: {'visibility': visibility }">
<i class="icon-spinner animated"></i>
&nbsp;&nbsp;
<span data-bind="text: processText"></span>
</div>
<table class="table table-hover list-table g-ui-user-select-none" data-bind="i18nUpdate: identities">
<colgroup>
<col />
<col style="width: 140px" />
<col style="width: 1%" />
</colgroup>
<tbody data-bind="foreach: identities">
<tr class="identity-item">
<td class="e-action">
<span class="identity-img icon-user"></span>
<span class="identity-name" data-bind="text: formattedName()"></span>
</td>
<td>
<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(oIdentity) { $root.deleteIdentity(oIdentity); }">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/DELETING_ASK"></span>
</a>
</td>
<td>
<span class="delete-identity" data-bind="visible: !deleteAccess() && canBeDalete(), click: function (oIdentity) { $root.identityForDeletion(oIdentity); }">
<i class="icon-trash"></i>
</span>
</td>
</tr>
</tbody>
</table>
</div>

View file

@ -1,49 +0,0 @@
<div class="b-settings-identity">
<div class="form-horizontal">
<div class="legend g-ui-user-select-none">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITY/LEGEND_IDENTITY"></span>
</div>
<div class="control-group g-ui-user-select-none">
<label class="control-label">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITY/LABEL_DISPLAY_NAME"></span>
</label>
<div class="controls">
<div data-bind="component: {
name: 'Input',
params: {
value: displayName,
size: 4,
trigger: displayNameTrigger
}
}"></div>
</div>
</div>
<!-- <div class="control-group g-ui-user-select-none" style="display: none">
<label class="control-label">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITY/LABEL_REPLY_TO"></span>
</label>
<div class="controls">
<div data-bind="component: {
name: 'Input',
params: {
value: replyTo,
size: 4
}
}"></div>
</div>
</div>-->
<div class="control-group">
<label class="control-label g-ui-user-select-none">
<span class="i18n" data-i18n-text="SETTINGS_IDENTITY/LABEL_SIGNATURE"></span>
</label>
<div class="controls">
<div class="e-signature-place" data-bind="initDom: signatureDom"></div>
&nbsp;&nbsp;
<div data-bind="component: {
name: 'SaveTrigger',
params: { value: signatureTrigger, verticalAlign: 'top' }
}"></div>
</div>
</div>
</div>
</div>