mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-04 15:07:02 +03:00
Improvements of message displaying (internal styles)
This commit is contained in:
parent
0bba7146a6
commit
4457cdbc23
46 changed files with 1967 additions and 359 deletions
|
|
@ -68,7 +68,7 @@
|
|||
data-bind="attr: {'src': logoIframe}"></iframe>
|
||||
<div class="b-message-view-iframe-backdrop"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="message-fixed-button-toolbar clearfix" data-bind="visible: message">
|
||||
|
|
@ -295,10 +295,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="messageItem fixIndex" data-bind="css: viewLineAsCss(), nano: true, attr: {'style': 'top:' + viewBodyTopValue() + 'px' }">
|
||||
<div class="content g-scrollbox" tabindex="0" data-bind="hasfocus: messageDomFocused, css: { 'focused': messageDomFocused }">
|
||||
<div class="content-wrapper">
|
||||
<div>
|
||||
<div class="content g-scrollbox" tabindex="0" data-bind="hasfocus: messageDomFocused, css: { 'focused': messageDomFocused },
|
||||
style: {'background-color': messageLoadingThrottle() ? '' : bodyBackgroundColor()}">
|
||||
|
||||
<div class="content-wrapper">
|
||||
|
||||
<div>
|
||||
<span class="buttonUp" data-bind="click: scrollMessageToTop">
|
||||
<i class="icon-up"></i>
|
||||
</span>
|
||||
|
|
@ -316,128 +318,132 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="g-ui-min-height-300" data-bind="visible: !messageLoadingThrottle()">
|
||||
<div class="showImages" data-bind="visible: message() && message().hasImages(), click: function() { showImages(message()); }">
|
||||
<i class="icon-image"></i>
|
||||
|
||||
<span class="i18n text" data-i18n="MESSAGE/BUTTON_SHOW_IMAGES"></span>
|
||||
</div>
|
||||
<div class="readReceipt" data-bind="visible: message() && !isDraftOrSentFolder() && '' !== message().readReceipt() && !message().isReadReceipt(), click: function() { readReceipt(message()); }">
|
||||
<i class="icon-mail"></i>
|
||||
|
||||
<span class="i18n text" data-i18n="MESSAGE/BUTTON_NOTIFY_READ_RECEIPT"></span>
|
||||
</div>
|
||||
<div class="pgpInfo" data-bind="visible: isPgpStatusVerifyVisible(), css: {'success': isPgpStatusVerifySuccess()}">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span data-bind="text: pgpStatusVerifyMessage()"></span>
|
||||
</div>
|
||||
<div class="pgpSigned" data-bind="visible: message() && message().isPgpSigned() && isPgpActionVisible(), click: function() { verifyPgpSignedClearMessage(message()); }">
|
||||
<i class="icon-lock"></i>
|
||||
|
||||
<span class="i18n" data-i18n="MESSAGE/PGP_SIGNED_MESSAGE_DESC"></span>
|
||||
</div>
|
||||
<div class="pgpEncrypted" data-bind="visible: message() && message().isPgpEncrypted() && isPgpActionVisible()">
|
||||
<i class="icon-lock"></i>
|
||||
|
||||
<span class="i18n" data-i18n="MESSAGE/PGP_ENCRYPTED_MESSAGE_DESC" data-bind="click: function() { decryptPgpEncryptedMessage(message()); }"></span>
|
||||
|
||||
<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(),
|
||||
css: {'selection-mode' : showAttachmnetControls, 'unselectedAttachmentsError': highlightUnselectedAttachments}">
|
||||
<ul class="attachmentList" data-bind="foreach: message() ? message().attachments() : []">
|
||||
<li class="attachmentItem clearfix" draggable="true" data-tooltip-join="top"
|
||||
data-bind="visible: !isLinked, event: { 'dragstart': eventDragStart }, attr: { 'title': fileName }, css: {'checked': checked}">
|
||||
<div class="attachmentIconParent pull-left" data-bind="css: { 'hasPreview': hasPreview(), 'hasPreplay': hasPreplay(), 'isImage': isImage() }">
|
||||
<div class="hidePreview">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass()"></i>
|
||||
<i class="attachmentIconText attachmentMainIconText" data-bind="text: iconText()"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="showPreview">
|
||||
<a data-bind="css: {'attachmentImagePreview': isImage(), 'visible': !isLinked}, attr: { 'title': fileName, 'href': linkPreviewMain() }" target="_blank">
|
||||
<div class="g-ui-min-height-300 content-content" data-bind="visible: !messageLoadingThrottle()">
|
||||
<div class="bodySubHeader">
|
||||
<div class="showImages" data-bind="visible: message() && message().hasImages(), click: function() { showImages(message()); }">
|
||||
<i class="icon-image"></i>
|
||||
|
||||
<span class="i18n text" data-i18n="MESSAGE/BUTTON_SHOW_IMAGES"></span>
|
||||
</div>
|
||||
<div class="readReceipt" data-bind="visible: message() && !isDraftOrSentFolder() && '' !== message().readReceipt() && !message().isReadReceipt(), click: function() { readReceipt(message()); }">
|
||||
<i class="icon-mail"></i>
|
||||
|
||||
<span class="i18n text" data-i18n="MESSAGE/BUTTON_NOTIFY_READ_RECEIPT"></span>
|
||||
</div>
|
||||
<div class="pgpInfo" data-bind="visible: isPgpStatusVerifyVisible(), css: {'success': isPgpStatusVerifySuccess()}">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span data-bind="text: pgpStatusVerifyMessage()"></span>
|
||||
</div>
|
||||
<div class="pgpSigned" data-bind="visible: message() && message().isPgpSigned() && isPgpActionVisible(), click: function() { verifyPgpSignedClearMessage(message()); }">
|
||||
<i class="icon-lock"></i>
|
||||
|
||||
<span class="i18n" data-i18n="MESSAGE/PGP_SIGNED_MESSAGE_DESC"></span>
|
||||
</div>
|
||||
<div class="pgpEncrypted" data-bind="visible: message() && message().isPgpEncrypted() && isPgpActionVisible()">
|
||||
<i class="icon-lock"></i>
|
||||
|
||||
<span class="i18n" data-i18n="MESSAGE/PGP_ENCRYPTED_MESSAGE_DESC" data-bind="click: function() { decryptPgpEncryptedMessage(message()); }"></span>
|
||||
|
||||
<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(),
|
||||
css: {'selection-mode' : showAttachmnetControls, 'unselectedAttachmentsError': highlightUnselectedAttachments}">
|
||||
<ul class="attachmentList" data-bind="foreach: message() ? message().attachments() : []">
|
||||
<li class="attachmentItem clearfix" draggable="true" data-tooltip-join="top"
|
||||
data-bind="visible: !isLinked, event: { 'dragstart': eventDragStart }, attr: { 'title': fileName }, css: {'checked': checked}">
|
||||
<div class="attachmentIconParent pull-left" data-bind="css: { 'hasPreview': hasPreview(), 'hasPreplay': hasPreplay(), 'isImage': isImage() }">
|
||||
<div class="hidePreview">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass()"></i>
|
||||
<i class="attachmentIconText attachmentMainIconText" data-bind="text: iconText()"></i>
|
||||
</div>
|
||||
<div class="iconBG" data-bind="attr: { 'style': linkThumbnailPreviewStyle() }"></div>
|
||||
<div class="iconPreview">
|
||||
<i class="attachmentIcon icon-eye show-hover"></i>
|
||||
</div>
|
||||
<div class="showPreview">
|
||||
<a data-bind="css: {'attachmentImagePreview': isImage(), 'visible': !isLinked}, attr: { 'title': fileName, 'href': linkPreviewMain() }" target="_blank">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass()"></i>
|
||||
<i class="attachmentIconText attachmentMainIconText" data-bind="text: iconText()"></i>
|
||||
</div>
|
||||
<div class="iconBG" data-bind="attr: { 'style': linkThumbnailPreviewStyle() }"></div>
|
||||
<div class="iconPreview">
|
||||
<i class="attachmentIcon icon-eye show-hover"></i>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="showPreplay">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass()"></i>
|
||||
</div>
|
||||
<div class="iconPreview">
|
||||
<i class="attachmentIcon icon-play show-hover"></i>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="showPreplay">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass()"></i>
|
||||
</div>
|
||||
<div class="iconPreview">
|
||||
<i class="attachmentIcon icon-play show-hover"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="attachmentNameParent">
|
||||
<div style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">
|
||||
<span class="attachmentName" data-bind="text: fileName"></span>
|
||||
<div class="attachmentNameParent">
|
||||
<div style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">
|
||||
<span class="attachmentName" data-bind="text: fileName"></span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="attachmentSize" data-bind="text: friendlySize"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="attachmentSize" data-bind="text: friendlySize"></span>
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxAttachment icon-checkbox-unchecked"
|
||||
data-bind="css: checked() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked',
|
||||
click: function () { checked(!checked()); return false }"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="checkedParent">
|
||||
<i class="checkboxAttachment icon-checkbox-unchecked"
|
||||
data-bind="css: checked() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked',
|
||||
click: function () { checked(!checked()); return false }"></i>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<i class="icon-cog controls-handle" data-bind="visible: allowAttachmnetControls() && !showAttachmnetControls(), click: function () { showAttachmnetControls(true) }"></i>
|
||||
</div>
|
||||
<div class="attachmentsControls"
|
||||
</li>
|
||||
</ul>
|
||||
<i class="icon-cog controls-handle" data-bind="visible: allowAttachmnetControls() && !showAttachmnetControls(), click: function () { showAttachmnetControls(true) }"></i>
|
||||
</div>
|
||||
|
||||
<div class="attachmentsControls"
|
||||
data-bind="visible: showAttachmnetControls() && message() && message().hasVisibleAttachments()">
|
||||
|
||||
<span data-bind="visible: downloadAsZipAllowed">
|
||||
<i class="icon-remove iconcolor-red" data-bind="visible: downloadAsZipError"></i>
|
||||
<i class="icon-file-zip" data-bind="visible: !downloadAsZipError(),
|
||||
css: {'icon-file-zip': !downloadAsZipLoading(), 'icon-spinner animated': downloadAsZipLoading()}"></i>
|
||||
|
||||
<span class="g-ui-link" data-bind="click: downloadAsZip">
|
||||
<span class="i18n" data-i18n="MESSAGE/LINK_DOWNLOAD_AS_ZIP"></span>
|
||||
<span data-bind="visible: downloadAsZipAllowed">
|
||||
<i class="icon-remove iconcolor-red" data-bind="visible: downloadAsZipError"></i>
|
||||
<i class="icon-file-zip" data-bind="visible: !downloadAsZipError(),
|
||||
css: {'icon-file-zip': !downloadAsZipLoading(), 'icon-spinner animated': downloadAsZipLoading()}"></i>
|
||||
|
||||
<span class="g-ui-link" data-bind="click: downloadAsZip">
|
||||
<span class="i18n" data-i18n="MESSAGE/LINK_DOWNLOAD_AS_ZIP"></span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span data-bind="visible: saveToOwnCloudAllowed">
|
||||
|
||||
<i class="icon-remove iconcolor-red" data-bind="visible: saveToOwnCloudError"></i>
|
||||
<i class="icon-ok iconcolor-green" data-bind="visible: saveToOwnCloudSuccess"></i>
|
||||
<i class="icon-cloud-up" data-bind="visible: !saveToOwnCloudSuccess() && !saveToOwnCloudError(),
|
||||
css: {'icon-cloud-up': !saveToOwnCloudLoading(), 'icon-spinner animated': saveToOwnCloudLoading()}"></i>
|
||||
|
||||
<span class="g-ui-link" data-bind="click: saveToOwnCloud">
|
||||
<span class="i18n" data-i18n="MESSAGE/LINK_SAVE_TO_OWNCLOUD"></span>
|
||||
<span data-bind="visible: saveToOwnCloudAllowed">
|
||||
|
||||
<i class="icon-remove iconcolor-red" data-bind="visible: saveToOwnCloudError"></i>
|
||||
<i class="icon-ok iconcolor-green" data-bind="visible: saveToOwnCloudSuccess"></i>
|
||||
<i class="icon-cloud-up" data-bind="visible: !saveToOwnCloudSuccess() && !saveToOwnCloudError(),
|
||||
css: {'icon-cloud-up': !saveToOwnCloudLoading(), 'icon-spinner animated': saveToOwnCloudLoading()}"></i>
|
||||
|
||||
<span class="g-ui-link" data-bind="click: saveToOwnCloud">
|
||||
<span class="i18n" data-i18n="MESSAGE/LINK_SAVE_TO_OWNCLOUD"></span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span data-bind="visible: saveToDropboxAllowed">
|
||||
|
||||
<i class="icon-remove iconcolor-red" data-bind="visible: saveToDropboxError"></i>
|
||||
<i class="icon-ok iconcolor-green" data-bind="visible: saveToDropboxSuccess"></i>
|
||||
<i class="icon-dropbox" data-bind="visible: !saveToDropboxSuccess() && !saveToDropboxError(),
|
||||
css: {'icon-dropbox': !saveToDropboxLoading(), 'icon-spinner animated': saveToDropboxLoading()}"></i>
|
||||
|
||||
<span class="g-ui-link" data-bind="click: saveToDropbox">
|
||||
<span class="i18n" data-i18n="MESSAGE/LINK_SAVE_TO_DROPBOX"></span>
|
||||
<span data-bind="visible: saveToDropboxAllowed">
|
||||
|
||||
<i class="icon-remove iconcolor-red" data-bind="visible: saveToDropboxError"></i>
|
||||
<i class="icon-ok iconcolor-green" data-bind="visible: saveToDropboxSuccess"></i>
|
||||
<i class="icon-dropbox" data-bind="visible: !saveToDropboxSuccess() && !saveToDropboxError(),
|
||||
css: {'icon-dropbox': !saveToDropboxLoading(), 'icon-spinner animated': saveToDropboxLoading()}"></i>
|
||||
|
||||
<span class="g-ui-link" data-bind="click: saveToDropbox">
|
||||
<span class="i18n" data-i18n="MESSAGE/LINK_SAVE_TO_DROPBOX"></span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<!-- // --->
|
||||
<button type="button" class="close" style="margin-right: 5px;"
|
||||
data-bind="click: function () { showAttachmnetControls(false); }">×</button>
|
||||
<button type="button" class="close" style="margin-right: 5px;"
|
||||
data-bind="click: function () { showAttachmnetControls(false); }">×</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bodyText g-ui-min-height-300 rl-mv-root" data-bind="initDom: messagesBodiesDom"></div>
|
||||
|
||||
<div class="bodyText g-ui-min-height-300 rl-mv-root"
|
||||
data-bind="initDom: messagesBodiesDom"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue