mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-25 18:19:22 +03:00
Merged from sub repository (filters - step 4)
This commit is contained in:
parent
67e45a6a6f
commit
e4b286e257
58 changed files with 1176 additions and 236 deletions
|
|
@ -65,8 +65,8 @@
|
|||
<div data-bind="visible: licensing()">
|
||||
<div class="alert alert-success span8" style="margin-left: 0; padding-top: 20px" data-bind="visible: licenseValid() && '' === licenseError()">
|
||||
<h4>
|
||||
<span data-bind="visible: licenseIsUnlim()">Lifetime (Premium)</span>
|
||||
<span data-bind="visible: !licenseIsUnlim()">Premium</span>
|
||||
Premium
|
||||
<span data-bind="visible: licenseIsUnlim()">(Lifetime)</span>
|
||||
</h4>
|
||||
<p data-bind="visible: 0 < licenseExpired()" style="padding-top: 10px">
|
||||
<b>Subscription expires:</b>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<div class="span5" data-bind="css: { 'testing-done': testingDone, 'testing-error': testingImapError }">
|
||||
<div class="legend imap-header">
|
||||
<span data-placement="bottom" data-bind="tooltipForTest: testingImapErrorDesc">
|
||||
<span data-bind="text: sieveSettings() ? 'SIEVE (Filters)' : 'IMAP'">IMAP</span>
|
||||
<span data-bind="text: sieveSettings() ? 'SIEVE' : 'IMAP'">IMAP</span>
|
||||
</span>
|
||||
</div>
|
||||
<div data-bind="visible: !sieveSettings()">
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
<span data-bind="command: sieveCommand">
|
||||
<i class="icon-filter"></i>
|
||||
|
||||
<a href="#" class="g-ui-link">Sieve (Filetrs) configuration</a>
|
||||
<a href="#" class="g-ui-link">Sieve configuration</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,29 +4,34 @@
|
|||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/TITLE_CREATE_FILTER"></span>
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/TITLE_CREATE_FILTER" data-bind="visible: isNew"></span>
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/TITLE_EDIT_FILTER" data-bind="visible: !isNew()"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row filter" data-bind="with: filter">
|
||||
<div class="span9">
|
||||
<br />
|
||||
<input type="text" class="span5" data-bind="value: name" placeholder="Name" />
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<div class="control-group" data-bind="css: {'error': name.error}">
|
||||
<div class="controls">
|
||||
<input type="text" class="span5" data-bind="value: name, hasFocus: name.focused" placeholder="Name"
|
||||
autocorrect="off" autocapitalize="off" spellcheck="false" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="legend">
|
||||
<span>
|
||||
Conditions
|
||||
Conditions @i18n
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<div data-bind="visible: 1 < conditions().length">
|
||||
<select class="span4" data-bind="value: conditionsType">
|
||||
<option value="All">
|
||||
Matching all of the following rules
|
||||
Matching all of the following rules @i18n
|
||||
</option>
|
||||
<option value="Any">
|
||||
Matching any of the following rules
|
||||
Matching any of the following rules @i18n
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
|
@ -34,7 +39,7 @@
|
|||
<div data-bind="template: {'name': template(), 'data': $data}"></div>
|
||||
</div>
|
||||
<div data-bind="visible: 0 === conditions().length">
|
||||
All incoming messages
|
||||
All incoming messages @i18n
|
||||
</div>
|
||||
<br />
|
||||
<a class="btn" data-bind="click: addCondition, i18nInit: true">
|
||||
|
|
@ -49,32 +54,23 @@
|
|||
Actions
|
||||
</span>
|
||||
</div>
|
||||
<div data-bind="template: {'name': actionTemplate()}"></div>
|
||||
<br />
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'Mark as read',
|
||||
label: 'Mark as read @i18n',
|
||||
value: actionMarkAsRead
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'Skip other filters',
|
||||
enable: enableSkipOtherFilters,
|
||||
value: actionSkipOtherFiltersResult
|
||||
}
|
||||
}"></div>
|
||||
<br />
|
||||
<div data-bind="template: {'name': actionTemplate()}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a class="btn buttonSave">
|
||||
<i class="icon-folder-add"></i>
|
||||
<a class="btn buttonSave" data-bind="command: saveFilter">
|
||||
<i class="icon-ok"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_CREATE"></span>
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_DONE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -5,15 +5,57 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div data-bind="foreach: filters, i18nUpdate: filters">
|
||||
<span data-bind="text: name" ></span>
|
||||
<br />
|
||||
<div class="span8">
|
||||
<a class="btn" data-bind="click: addFilter">
|
||||
<i class="icon-plus"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_ADD_FILTER"></span>
|
||||
</a>
|
||||
|
||||
<a class="btn" data-bind="command: saveChanges">
|
||||
<i data-bind="css: {'icon-floppy': !filters.saving(), 'icon-spinner animated': filters.saving()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_SAVE"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="span8">
|
||||
<div class="process-place g-ui-user-select-none" data-bind="style: {'visibility': visibility }">
|
||||
<i class="icon-spinner animated"></i>
|
||||
|
||||
<span data-bind="text: processText"></span>
|
||||
</div>
|
||||
<table class="table table-hover list-table g-ui-user-select-none" data-bind="i18nUpdate: filters">
|
||||
<colgroup>
|
||||
<col style="width: 30px" />
|
||||
<col />
|
||||
<col style="width: 140px" />
|
||||
<col style="width: 1%" />
|
||||
</colgroup>
|
||||
<tbody data-bind="sortable: {data: filters, options: scrollableOptions()}">
|
||||
<tr class="filter-item">
|
||||
<td>
|
||||
<span class="disabled-filter" data-bind="click: function () { $root.haveChanges(true); enabled(!enabled()); }">
|
||||
<i data-bind="css: {'icon-checkbox-checked': enabled, 'icon-checkbox-unchecked': !enabled()}"></i>
|
||||
</span>
|
||||
</td>
|
||||
<td class="e-action">
|
||||
<span class="filter-name" data-bind="text: name()"></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(oFilter) { $root.deleteFilter(oFilter); }">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/DELETING_ASK"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="delete-filter" data-bind="visible: !deleteAccess() && canBeDalete(), click: function (oFilter) { $root.filterForDeletion(oFilter); }">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<a class="btn" data-bind="click: addFilter">
|
||||
<i class="icon-filter"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_ADD_FILTER"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -1 +1 @@
|
|||
<select data-bind="options: actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<select data-bind="options: $root.actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<select data-bind="options: actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<select data-bind="options: $root.actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
|
||||
<select data-bind="options: $root.folderSelectList, value: $root.selectedFolderValue,
|
||||
optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defautOptionsAfterRender"></select>
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
<select data-bind="options: actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<select data-bind="options: $root.actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
|
||||
<input type="text" data-bind="value: actionValue" />
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<select class="span3" data-bind="options: fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<select class="span3" data-bind="options: $root.fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
|
||||
<select class="span2" data-bind="options: typeOptions, value: type, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
<select class="span2" data-bind="options: $root.typeOptions, value: type, optionsText: 'name', optionsValue: 'id'"></select>
|
||||
|
||||
<input class="span3" type="text" data-bind="value: value" />
|
||||
|
||||
<span class="delete-action button-delete pull-right" data-bind="click: removeSelf">
|
||||
<span class="delete-action button-delete pull-right" data-bind="click: function (oCondition) { $root.removeCondition(oCondition); }">
|
||||
<i class="icon-trash"></i>
|
||||
</span>
|
||||
|
|
@ -11,19 +11,26 @@
|
|||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" tabindex="-1" role="menu" aria-labelledby="top-system-dropdown-id">
|
||||
|
||||
<!-- ko if: accounts().length -->
|
||||
<!-- ko foreach: accounts -->
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" data-bind="click: $root.accountClick, attr: {'href': changeAccountLink() }">
|
||||
<i class="icon-ok" data-bind="visible: $root.accountEmail() === email"></i>
|
||||
<i class="icon-user" data-bind="visible: $root.accountEmail() !== email"></i>
|
||||
|
||||
<span data-bind="text: email"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
<li class="divider" role="presentation"></li>
|
||||
<!-- ko foreach: accounts -->
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem account-item" href="#" data-bind="click: $root.accountClick,
|
||||
attr: {'href': changeAccountLink()}, css: {current: $root.accountEmail() === email}">
|
||||
<b class="pull-right counter" data-bind="visible: 0 < count()">
|
||||
<span data-bind="text: count, visible: 100 > count()"></span>
|
||||
<span data-bind="visible: 99 < count()">99+</span>
|
||||
</b>
|
||||
<i class="icon-ok"></i>
|
||||
<i class="icon-user"></i>
|
||||
|
||||
<span class="email-title" data-bind="text: email"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
<li class="divider" role="presentation"></li>
|
||||
<!-- /ko -->
|
||||
|
||||
<!-- ko if: capaAdditionalAccounts -->
|
||||
<li class="e-item" role="presentation">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: addAccountClick">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue