mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-08 08:57:03 +03:00
193 lines
9.2 KiB
HTML
193 lines
9.2 KiB
HTML
<div class="modal fade b-compose" data-bind="modal: modalVisibility, css: {'loading': saving() || sending()}">
|
||
<div class="modal-header b-header-toolbar g-ui-user-select-none">
|
||
<a class="btn btn-large button-send" data-bind="command: sendCommand, tooltipErrorTip: sendErrorDesc, css: {'btn-success': sendButtonSuccess, 'btn-danger': sendError, 'btn-warning': sendSuccessButSaveError }">
|
||
<i class="icon-white" data-bind="css: {'icon-paper-plane': !sending(), 'icon-spinner big': sending()}"></i>
|
||
<span class="i18n hide-on-mobile" data-i18n="COMPOSE/BUTTON_SEND"></span>
|
||
</a>
|
||
<a class="btn button-save" data-bind="visible: allowFolders, command: saveCommand, tooltipErrorTip: savedErrorDesc, css: {'btn-danger': savedError }">
|
||
<i class="fontastic" data-bind="css: {'icon-spinner': saving(), 'icon-white': savedError()}">💾</i>
|
||
<span class="i18n hide-on-mobile" data-i18n="GLOBAL/SAVE"></span>
|
||
</a>
|
||
|
||
<a class="close" data-bind="click: tryToClosePopup, tooltip: 'GLOBAL/CANCEL'">×</a>
|
||
<a class="minimize-custom" data-bind="click: skipCommand, tooltip: 'COMPOSE/BUTTON_MINIMIZE'"></a>
|
||
|
||
<a class="btn btn-danger button-delete button-delete-transitions" data-bind="command: deleteCommand">
|
||
<i class="fontastic icon-white">🗑</i>
|
||
</a>
|
||
<span class="saved-text hide-on-mobile" data-bind="text: savedTimeText"></span>
|
||
</div>
|
||
<div class="modal-body">
|
||
<div class="b-header g-ui-user-select-none">
|
||
<div class="g-ui-table">
|
||
<div class="e-row" style="height: 40px;">
|
||
<div class="e-cell e-label">
|
||
<label class="control-label">
|
||
<span data-i18n="GLOBAL/FROM"></span>
|
||
</label>
|
||
</div>
|
||
<div class="e-cell e-value">
|
||
<div class="dropdown pull-left" data-bind="registerBootstrapDropdown: true, openDropdownTrigger: identitiesDropdownTrigger">
|
||
<a class="dropdown-toggle e-identity" href="#" tabindex="-1"
|
||
id="identity-label-id" role="button" data-toggle="dropdown"
|
||
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">
|
||
<!-- ko foreach: identitiesOptions -->
|
||
<li class="e-item" role="presentation">
|
||
<a class="e-link menuitem" tabindex="-1" href="javascript:void(0);" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }">
|
||
<span data-bind="text: optText"></span>
|
||
</a>
|
||
</li>
|
||
<!-- /ko -->
|
||
</ul>
|
||
<!-- /ko -->
|
||
</div>
|
||
<div class="pull-right">
|
||
<div class="btn-group dropdown colored-toggle pull-right" style="margin-right: 4px;" data-bind="registerBootstrapDropdown: true">
|
||
<a class="btn dropdown-toggle fontastic" data-toggle="dropdown">☰</a>
|
||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||
<li class="e-item" data-bind="click: function () { requestReadReceipt(!requestReadReceipt()); }">
|
||
<a class="e-link">
|
||
<i class="fontastic" data-bind="text: requestReadReceipt() ? '☑' : '☐'"></i>
|
||
<span data-i18n="COMPOSE/BUTTON_REQUEST_READ_RECEIPT"></span>
|
||
</a>
|
||
</li>
|
||
<li class="e-item" data-bind="click: function () { requestDsn(!requestDsn()); }">
|
||
<a class="e-link">
|
||
<i class="fontastic" data-bind="text: requestDsn() ? '☑' : '☐'"></i>
|
||
<span data-i18n="COMPOSE/BUTTON_REQUEST_DSN"></span>
|
||
</a>
|
||
</li>
|
||
<li class="e-item" data-bind="click: function () { markAsImportant(!markAsImportant()); }">
|
||
<a class="e-link">
|
||
<i class="fontastic" data-bind="text: markAsImportant() ? '☑' : '☐'"></i>
|
||
<span data-i18n="COMPOSE/BUTTON_MARK_AS_IMPORTANT"></span>
|
||
</a>
|
||
</li>
|
||
<li class="e-item dividerbar" data-bind="visible: capaOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
|
||
<a class="e-link">
|
||
<i class="fontastic">🔑</i>
|
||
<span data-i18n="COMPOSE/BUTTON_OPEN_PGP"></span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="btn-group pull-right"> </div>
|
||
<div class="btn-group pull-right">
|
||
<a class="btn fontastic" data-bind="visible: allowContacts, command: contactsCommand, tooltip: 'GLOBAL/CONTACTS'">📇</a>
|
||
</div>
|
||
<div class="btn-group pull-right"> </div>
|
||
</div>
|
||
<span class="pull-right">
|
||
<span class="i18n g-ui-link" data-i18n="GLOBAL/CC"
|
||
data-bind="visible: !showCc(), click: function () { showCc(true); }"></span>
|
||
|
||
<span data-bind="visible: !showBcc()">
|
||
<span class="i18n g-ui-link" data-i18n="GLOBAL/BCC"
|
||
data-bind="click: function () { showBcc(true); }"></span>
|
||
|
||
</span>
|
||
<span class="i18n g-ui-link" data-i18n="GLOBAL/REPLY_TO"
|
||
data-bind="visible: !showReplyTo(), click: function () { showReplyTo(true); }"></span>
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
<div class="e-row">
|
||
<div class="e-cell e-label">
|
||
<label class="control-label" data-bind="css: {'error-to': emptyToError}">
|
||
<span data-i18n="GLOBAL/TO"
|
||
data-bind="tooltipErrorTip: emptyToErrorTooltip"></span>
|
||
</label>
|
||
</div>
|
||
<div class="e-cell e-value">
|
||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to, autoCompleteSource: emailsSource" />
|
||
</div>
|
||
</div>
|
||
<div class="e-row cc-row" data-bind="visible: showCc">
|
||
<div class="e-cell e-label">
|
||
<span data-i18n="GLOBAL/CC"></span>
|
||
</div>
|
||
<div class="e-cell e-value">
|
||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: cc, autoCompleteSource: emailsSource" />
|
||
</div>
|
||
</div>
|
||
<div class="e-row bcc-row" data-bind="visible: showBcc">
|
||
<div class="e-cell e-label">
|
||
<span data-i18n="GLOBAL/BCC"></span>
|
||
</div>
|
||
<div class="e-cell e-value">
|
||
<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: showReplyTo">
|
||
<div class="e-cell e-label">
|
||
<span data-i18n="GLOBAL/REPLY_TO"></span>
|
||
</div>
|
||
<div class="e-cell e-value">
|
||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: replyTo, autoCompleteSource: emailsSource" />
|
||
</div>
|
||
</div>
|
||
<div class="e-row">
|
||
<div class="e-cell e-label">
|
||
<span data-i18n="GLOBAL/SUBJECT"></span>
|
||
</div>
|
||
<div class="e-cell e-value">
|
||
<input type="text" size="70" autocomplete="off" data-bind="textInput: subject" />
|
||
</div>
|
||
</div>
|
||
<div class="e-row">
|
||
<div class="e-cell e-label"></div>
|
||
<div class="e-cell e-value">
|
||
<div>
|
||
<div class="pull-left">
|
||
<div class="btn-group" data-toggle="buttons-radio">
|
||
<button type="button" class="btn" data-bind="click: function () { attachmentsPlace(false); },
|
||
css: { 'active': !attachmentsPlace() }">
|
||
<i class="icon-file-text"></i>
|
||
</button>
|
||
<button type="button" class="btn" data-bind="click: function () { attachmentsPlace(true); },
|
||
css: { 'btn-danger': 0 < attachmentsInErrorCount(), 'active': attachmentsPlace() },
|
||
tooltipErrorTip: attachmentsErrorTooltip">
|
||
<span data-bind="visible: 0 < attachmentsCount()">
|
||
<b data-bind="text: attachmentsCount"></b>
|
||
|
||
</span>
|
||
<i data-bind="css: { 'icon-attachment': 0 === attachmentsInProcessCount(), 'icon-spinner': 0 < attachmentsInProcessCount(), 'icon-white': 0 < attachmentsInErrorCount() }"></i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="pull-right" style="margin-right: 4px;">
|
||
<div class="btn-group pull-right">
|
||
<a class="btn"
|
||
style="padding-left: 10px; padding-right: 10px;"
|
||
data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||
<sup style="font-weight: bold; font-size: 100%; top: -0.3em;">+</sup><i class="icon-attachment"></i>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="attachmentAreaParent b-content" data-bind="visible: attachmentsPlace">
|
||
<div class="content">
|
||
<div class="content-wrapper">
|
||
<div class="b-attachment-place" data-bind="visible: addAttachmentEnabled() && dragAndDropEnabled() && dragAndDropVisible(), initDom: composeUploaderDropPlace, css: {'dragAndDropOver': dragAndDropOver}">
|
||
<span data-i18n="COMPOSE/ATTACH_DROP_FILES_DESC"></span>
|
||
</div>
|
||
<ul class="attachmentList" data-bind="template: { name: 'ComposeAttachment', foreach: attachments }"></ul>
|
||
<div class="no-attachments-desc" data-bind="visible: 0 === attachments().length">
|
||
<span data-i18n="COMPOSE/NO_ATTACHMENTS_HERE_DESC"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="textAreaParent" data-bind="visible: !attachmentsPlace(), initDom: composeEditorArea"></div>
|
||
</div>
|
||
</div>
|