Cleanup CSS and drop bMobileDevice detection.

Touch devices can be any size and can use (bluetooth/usb-c mouse/keyboard) these days.
It's all about pixels and currently if the mode is mobile/no-mobile (this can be improved later).
This commit is contained in:
djmaze 2020-09-30 12:31:34 +02:00
parent 25b4c899d0
commit efcefbaf78
60 changed files with 233 additions and 379 deletions

View file

@ -236,10 +236,7 @@ class Actions
private function fabrica(string $sName, ?Model\Account $oAccount = null)
{
$mResult = null;
$this->Plugins()
->RunHook('main.fabrica', array($sName, &$mResult), false)
->RunHook('main.fabrica[2]', array($sName, &$mResult, $oAccount), false)
;
$this->Plugins()->RunHook('main.fabrica', array($sName, &$mResult), false);
if (null === $mResult)
{
@ -3839,7 +3836,6 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
}
$this->Plugins()->RunHook('filter.build-message', array($oMessage));
$this->Plugins()->RunHook('filter.build-message[2]', array($oMessage, $oAccount));
return $oMessage;
}
@ -3932,10 +3928,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
$oMessage = $this->buildMessage($oAccount, true);
$this->Plugins()
->RunHook('filter.save-message', array($oMessage))
->RunHook('filter.save-message[2]', array($oMessage, $oAccount))
;
$this->Plugins()->RunHook('filter.save-message', array($oMessage));
$mResult = false;
if ($oMessage)
@ -4156,10 +4149,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
$oMessage = $this->buildMessage($oAccount, false);
$this->Plugins()
->RunHook('filter.send-message', array($oMessage))
->RunHook('filter.send-message[2]', array($oMessage, $oAccount))
;
$this->Plugins()->RunHook('filter.send-message', array($oMessage));
$mResult = false;
try
@ -4217,7 +4207,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
\rewind($rMessageStream);
}
$this->Plugins()->RunHook('filter.sent-message-stream',
$this->Plugins()->RunHook('filter.send-message-stream',
array($oAccount, &$rMessageStream, &$iMessageStreamSize));
$this->MailClient()->MessageAppendStream(
@ -4233,7 +4223,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
$iAppendMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
$oMessage->ToStream(false), array($rAppendMessageStream), 8192, true, true, true);
$this->Plugins()->RunHook('filter.sent-message-stream',
$this->Plugins()->RunHook('filter.send-message-stream',
array($oAccount, &$rAppendMessageStream, &$iAppendMessageStreamSize));
$this->MailClient()->MessageAppendStream(
@ -5018,10 +5008,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
if ($oMessage)
{
$this->Plugins()
->RunHook('filter.result-message', array($oMessage))
->RunHook('filter.result-message[2]', array($oMessage, $oAccount))
;
$this->Plugins()->RunHook('filter.result-message', array($oMessage));
$this->cacheByKey($sRawKey);
}

View file

@ -289,12 +289,6 @@ class Manager
}
$this->RunHook('filter.app-data', array($bAdmin, &$aAppData));
$this->RunHook('filter.app-data[2]', array(
'IsAdmin' => $bAdmin,
'AppData' => &$aAppData,
'Account' => $oAccount
));
}
return $this;

View file

@ -1,26 +1,16 @@
// mixins +++
.thm-linear-gradient-mixin(@start, @end) when (iscolor(@start)) and (iscolor(@end)) {
background-color: mix(@start, @end, 60%) !important;
background-image: -moz-linear-gradient(top, @start, @end) !important; // FF 3.6+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@start), to(@end)) !important; // Safari 4+, Chrome 2+
background-image: -webkit-linear-gradient(top, @start, @end) !important; // Safari 5.1+, Chrome 10+
background-image: -o-linear-gradient(top, @start, @end !important); // Opera 11.10
background-image: linear-gradient(to bottom, @start, @end) !important; // Standard, IE10
background-repeat: repeat-x !important;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start),argb(@end))) !important; // IE9 and down
}
.thm-border-radius(@radius) when (ispixel(@radius)) {
-webkit-border-radius: @radius !important;
-moz-border-radius: @radius !important;
border-radius: @radius !important;
border-radius: @radius !important;
}
.thm-box-shadow(@shadow) {
-webkit-box-shadow: @shadow !important;
-moz-box-shadow: @shadow !important;
box-shadow: @shadow !important;
box-shadow: @shadow !important;
}
.thm-body-background-image(@value) when (isstring(@value)) {
background-image: url("@{base}@{value}");
@ -231,26 +221,6 @@ html.glass {
color: @glass-color;
border-color: @glass-m-color;
&::-webkit-input-placeholder {
color: @glass-color;
text-shadow: none !important;
}
&::-moz-placeholder {
color: @glass-color;
text-shadow: none !important;
}
&:-moz-placeholder {
color: @glass-color;
text-shadow: none !important;
}
&:-ms-input-placeholder {
color: @glass-color;
text-shadow: none !important;
}
&:input-placeholder {
color: @glass-color;
text-shadow: none !important;
}
&:placeholder {
color: @glass-color;
text-shadow: none !important;

View file

@ -25,7 +25,7 @@
placeholder="Password" name="RainLoopAdminPassword" id="RainLoopAdminPassword"
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]LOGIN/LABEL_PASSWORD"
data-bind="textInput: password, disable: submitRequest" />
<span class="add-on" tabindex="-1" data-tooltip-join="left" data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_LOGIN'">
<span class="add-on" tabindex="-1" data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_LOGIN'">
<i class="icon-key" data-bind="visible: '' === password()"></i>
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">
<i class="icon-right-middle login-submit-icon"></i>

View file

@ -1,4 +1,4 @@
<div class="modal b-domain-content g-ui-user-select-none"
<div class="modal fade b-domain-content g-ui-user-select-none"
data-bind="modal: modalVisibility, css: {'domain-edit': edit, 'domain-second-page': 'main' !== page()}">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-domain-alias-content" data-bind="modal: modalVisibility">
<div class="modal fade b-domain-alias-content" data-bind="modal: modalVisibility">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3 data-i18n="POPUPS_DOMAIN_ALIAS/TITLE_ADD_DOMAIN_ALIAS"></h3>

View file

@ -1,4 +1,4 @@
<div class="modal b-plugin-content" data-bind="modal: modalVisibility">
<div class="modal fade b-plugin-content" data-bind="modal: modalVisibility">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h4>

View file

@ -1,4 +1,4 @@
<div class="modal b-ask-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-ask-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-body">
<br />

View file

@ -1,4 +1,4 @@
<div class="modal b-shortcuts-content" data-bind="modal: modalVisibility">
<div class="modal fade b-shortcuts-content" data-bind="modal: modalVisibility">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3 class="i18n" data-i18n="SHORTCUTS_HELP/LEGEND_SHORTCUTS_HELP"></h3>

View file

@ -1,4 +1,4 @@
<div class="modal b-languages-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-languages-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3>
@ -7,7 +7,7 @@
</div>
<div class="modal-body" style="min-height: 150px;">
<div data-bind="foreach: languages">
<label class="lang-item" data-tooltip-i18n="off" data-tooltip-join="right" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected, 'user': user},
<label class="lang-item" data-tooltip-i18n="off" data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected, 'user': user},
tooltip: function () { return $root.languageTooltipName(key); }">
<span class="lang-name" data-bind="text: fullName"></span>
<i class="icon-ok pull-right" style="color: green; margin-top: 3px;" data-bind="visible: selected"></i>

View file

@ -49,7 +49,7 @@
autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="textInput: password, disable: submitRequest"
data-i18n="[placeholder]LOGIN/LABEL_PASSWORD" />
<span class="add-on" tabindex="-1" data-tooltip-join="left"
<span class="add-on" tabindex="-1"
data-bind="command: submitCommand, tooltip: 'LOGIN/BUTTON_SIGN_IN'">
<i class="icon-key" data-bind="visible: '' === password()"></i>
<button type="submit" class="btn-submit-icon-wrp" data-bind="visible: '' !== password()">

View file

@ -1,12 +1,12 @@
<div class="b-folders g-ui-user-select-none thm-folders" data-bind="css: {'focused': folderListFocused, 'single-root-inbox': foldersListWithSingleInboxRootFolder, 'inbox-is-starred': isInboxStarred}">
<div class="b-toolbar btn-toolbar hide-on-mobile">
<a class="btn buttonCompose pull-left" data-tooltip-join="top" data-bind="visible: allowComposer, click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_NEW_MESSAGE', css: {'btn-warning': composeInEdit, 'btn-success': !composeInEdit()}">
<a class="btn buttonCompose pull-left" data-bind="visible: allowComposer, click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_NEW_MESSAGE', css: {'btn-warning': composeInEdit, 'btn-success': !composeInEdit()}">
<i class="icon-paper-plane"></i>
<span class="btn-text-wrp buttonComposeText">
<span class="i18n" data-i18n="FOLDER_LIST/BUTTON_NEW_MESSAGE"></span>
</span>
</a>
<a class="btn buttonContacts pull-left" data-tooltip-join="top" data-bind="visible: allowContacts, click: contactsClick, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
<a class="btn buttonContacts pull-left" data-bind="visible: allowContacts, click: contactsClick, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
<i class="icon-address-book"></i>
</a>
</div>

View file

@ -17,20 +17,20 @@
<div class="btn-group">&nbsp;</div>
<!-- /ko -->
<div class="btn-group" data-bind="visible: mobile && allowComposer && mobileCheckedStateHide()">
<a class="btn single buttonCompose" data-tooltip-join="top" data-bind="click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_NEW_MESSAGE', css: {'btn-warning': composeInEdit, 'btn-success': !composeInEdit()}">
<a class="btn single buttonCompose" data-bind="click: composeClick, tooltip: 'FOLDER_LIST/BUTTON_NEW_MESSAGE', css: {'btn-warning': composeInEdit, 'btn-success': !composeInEdit()}">
<i class="icon-paper-plane"></i>
</a>
</div>
<div class="btn-group" data-bind="visible: mobileCheckedStateHide()">&nbsp;</div>
<div class="btn-group" data-bind="visible: allowReload && mobileCheckedStateHide()">
<a class="btn single btn-dark-disabled-border buttonReload" data-tooltip-join="top" data-bind="command: reloadCommand, tooltip: 'MESSAGE_LIST/BUTTON_RELOAD'">
<a class="btn single btn-dark-disabled-border buttonReload" data-bind="command: reloadCommand, tooltip: 'MESSAGE_LIST/BUTTON_RELOAD'">
<i class="icon-spinner" data-bind="css: {'animated': messageListCompleteLoadingThrottleForAnimation}"></i>
</a>
</div>
<div class="btn-group" data-bind="visible: allowReload && mobileCheckedStateHide()">&nbsp;</div>
<!-- ko if: !newMoveToFolder() -->
<div class="btn-group dropdown colored-toggle hide-on-mobile" data-bind="visible: allowMessageListActions, registrateBootstrapDropdown: true, openDropdownTrigger: moveDropdownTrigger">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border dropdown-toggle buttonMove" data-toggle="dropdown" data-tooltip-join="top" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border dropdown-toggle buttonMove" data-toggle="dropdown" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<i class="icon-copy visible-on-ctrl-btn"></i>
<i class="icon-folder hidden-on-ctrl-btn"></i>
&nbsp;&nbsp;
@ -50,7 +50,7 @@
<!-- /ko -->
<!-- ko if: newMoveToFolder() -->
<div class="btn-group" data-bind="visible: allowMessageListActions && mobileCheckedStateShow()">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border buttonMove" data-tooltip-join="top" data-bind="command: moveNewCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn single btn-dark-disabled-border buttonMove" data-bind="command: moveNewCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<i class="icon-copy visible-on-ctrl-btn"></i>
<i class="icon-folder hidden-on-ctrl-btn"></i>
</a>
@ -58,21 +58,21 @@
<!-- /ko -->
<div class="btn-group" data-bind="visible: allowMessageListActions && mobileCheckedStateHide()">&nbsp;</div>
<div class="btn-group" data-bind="visible: allowMessageListActions && mobileCheckedStateShow()">
<a class="btn first btn-dark-disabled-border button-archive" data-tooltip-join="top"
<a class="btn first btn-dark-disabled-border button-archive"
data-bind="visible: isArchiveVisible, command: archiveCommand, tooltip: 'MESSAGE_LIST/BUTTON_ARCHIVE'">
<i class="icon-archive"></i>
</a>
<a class="btn btn-dark-disabled-border button-spam" data-tooltip-join="top"
<a class="btn btn-dark-disabled-border button-spam"
data-bind="visible: isSpamVisible, command: spamCommand, tooltip: 'MESSAGE_LIST/BUTTON_SPAM',
css: {'first': !isArchiveVisible()}">
<i class="icon-warning"></i>
</a>
<a class="btn btn-dark-disabled-border button-not-spam" data-tooltip-join="top"
<a class="btn btn-dark-disabled-border button-not-spam"
data-bind="visible: isUnSpamVisible, command: notSpamCommand, tooltip: 'MESSAGE_LIST/BUTTON_NOT_SPAM',
css: {'first': !isArchiveVisible()}">
<i class="icon-check-mark-circle-two"></i>
</a>
<a class="btn last btn-dark-disabled-border button-delete" data-tooltip-join="top"
<a class="btn last btn-dark-disabled-border button-delete"
data-bind="command: deleteCommand, tooltip: 'MESSAGE_LIST/BUTTON_DELETE',
css: {'first': !isArchiveVisible() && !isSpamVisible() && !isUnSpamVisible()}">
<i class="icon-trash"></i>
@ -80,7 +80,7 @@
</a>
</div>
<div class="btn-group dropdown colored-toggle" data-bind="visible: allowComposer || allowMessageListActions || allowDangerousActions, registrateBootstrapDropdown: true, openDropdownTrigger: moreDropdownTrigger">
<a id="more-list-dropdown-id" class="btn single btn-dark-disabled-border dropdown-toggle buttonMore" href="#" tabindex="-1" data-toggle="dropdown" data-tooltip-join="top" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
<a id="more-list-dropdown-id" class="btn single btn-dark-disabled-border dropdown-toggle buttonMore" href="#" tabindex="-1" data-toggle="dropdown" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
<i class="icon-list animate-this-icon-on-open"></i>
</a>
<ul class="dropdown-menu pull-right g-ui-menu" role="menu" aria-labelledby="more-list-dropdown-id">
@ -206,7 +206,7 @@
</div>
<div class="mainDelimiter footerDelimiter"></div>
<div class="b-footer thm-message-list-bottom-toolbar">
<span data-tooltip-i18n="off" data-tooltip-mobile="on" data-bind="visible: 0 < userUsageProc(), tooltip: quotaTooltip" class="e-quota">
<span data-tooltip-i18n="off" data-bind="visible: 0 < userUsageProc(), tooltip: quotaTooltip" class="e-quota">
<span data-bind="text: userUsageProc"></span>%
</span>
<div class="pull-right">

View file

@ -2,29 +2,29 @@
<div class="messageView" data-bind="css: {'message-selected': isMessageSelected, 'message-focused': messageFocused}">
<div class="toolbar top-toolbar g-ui-user-select-none" data-bind="visible: !usePreviewPane()">
<div class="messageButtons btn-toolbar">
<div class="btn-group" data-tooltip-join="top" data-bind="tooltip: 'MESSAGE/BUTTON_CLOSE'">
<div class="btn-group" data-bind="tooltip: 'MESSAGE/BUTTON_CLOSE'">
<a class="btn single btn-dark-disabled-border buttonClose" data-bind="command: closeMessageCommand">
<i class="icon-remove"></i>
</a>
</div>
<div class="btn-group">&nbsp;</div>
<div class="btn-group" data-tooltip-join="top" data-bind="visible: isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'">
<div class="btn-group" data-bind="visible: isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'">
<a class="btn single btn-success buttonEdit" data-bind="command: messageEditCommand">
<i class="icon-pencil icon-white"></i>
</a>
</div>
<div class="btn-group" data-bind="visible: !usePreviewPane()">&nbsp;</div>
<div class="btn-group" data-bind="visible: !usePreviewPane()">
<a class="btn first btn-dark-disabled-border button-archive" data-tooltip-join="top" data-bind="visible: !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled(), command: archiveCommand, tooltip: 'MESSAGE/BUTTON_ARCHIVE'">
<a class="btn first btn-dark-disabled-border button-archive" data-bind="visible: !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled(), command: archiveCommand, tooltip: 'MESSAGE/BUTTON_ARCHIVE'">
<i class="icon-archive"></i>
</a>
<a class="btn btn-dark-disabled-border button-spam" data-tooltip-join="top" data-bind="visible: !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled(), command: spamCommand, tooltip: 'MESSAGE/BUTTON_SPAM'">
<a class="btn btn-dark-disabled-border button-spam" data-bind="visible: !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled(), command: spamCommand, tooltip: 'MESSAGE/BUTTON_SPAM'">
<i class="icon-warning"></i>
</a>
<a class="btn btn-dark-disabled-border button-not-spam" data-tooltip-join="top" data-bind="visible: !isDraftFolder() && !isSentFolder() && isSpamFolder() && !isSpamDisabled(), command: notSpamCommand, tooltip: 'MESSAGE/BUTTON_NOT_SPAM'">
<a class="btn btn-dark-disabled-border button-not-spam" data-bind="visible: !isDraftFolder() && !isSentFolder() && isSpamFolder() && !isSpamDisabled(), command: notSpamCommand, tooltip: 'MESSAGE/BUTTON_NOT_SPAM'">
<i class="icon-check-mark-circle-two"></i>
</a>
<a class="btn last btn-dark-disabled-border button-delete" data-tooltip-join="top" data-bind="command: deleteCommand, tooltip: 'MESSAGE/BUTTON_DELETE'">
<a class="btn last btn-dark-disabled-border button-delete" data-bind="command: deleteCommand, tooltip: 'MESSAGE/BUTTON_DELETE'">
<i class="icon-trash"></i>
</a>
</div>
@ -79,7 +79,7 @@
<div class="message-fixed-button-toolbar clearfix" data-bind="visible: message">
<div class="btn-group pull-right" style="margin-right: -11px;">
<div class="btn-group pull-right" data-bind="registrateBootstrapDropdown: true, visible: allowComposer || allowMessageListActions || allowMessageActions">
<a class="btn btn-thin-2 btn-transparent last btn-dark-disabled-border dropdown-toggle buttonMore" id="more-view-dropdown-id" href="#" tabindex="-1" data-toggle="dropdown" data-tooltip-join="bottom" style="margin-left: -4px; margin-right: 2px" data-bind="command: messageVisibilityCommand, css: {'first': !allowComposer}">
<a class="btn btn-thin-2 btn-transparent last btn-dark-disabled-border dropdown-toggle buttonMore" id="more-view-dropdown-id" href="#" tabindex="-1" data-toggle="dropdown" style="margin-left: -4px; margin-right: 2px" data-bind="command: messageVisibilityCommand, css: {'first': !allowComposer}">
<span data-bind="visible: !allowComposer" class="icon-ellipsis-alt"></span>
<span data-bind="visible: allowComposer" class="caret"></span>
</a>
@ -194,21 +194,21 @@
</div>
</ul>
</div>
<a class="btn btn-thin-2 btn-transparent first btn-dark-disabled-border buttonReply pull-right" data-tooltip-join="bottom"
<a class="btn btn-thin-2 btn-transparent first btn-dark-disabled-border buttonReply pull-right"
data-bind="visible: 'reply' === lastReplyAction() && allowComposer, command: replyCommand, tooltip: 'MESSAGE/BUTTON_REPLY'">
<i class="icon-reply"></i>
</a>
<a class="btn btn-thin-2 btn-transparent first btn-dark-disabled-border buttonReplyAll pull-right" data-tooltip-join="bottom"
<a class="btn btn-thin-2 btn-transparent first btn-dark-disabled-border buttonReplyAll pull-right"
data-bind="visible: 'replyall' === lastReplyAction() && allowComposer, command: replyAllCommand, tooltip: 'MESSAGE/BUTTON_REPLY_ALL'">
<i class="icon-reply-all"></i>
</a>
<a class="btn btn-thin-2 btn-transparent first btn-dark-disabled-border buttonForward pull-right" data-tooltip-join="bottom"
<a class="btn btn-thin-2 btn-transparent first btn-dark-disabled-border buttonForward pull-right"
data-bind="visible: 'forward' === lastReplyAction() && allowComposer, command: forwardCommand, tooltip: 'MESSAGE/BUTTON_FORWARD'">
<i class="icon-forward"></i>
</a>
</div>
<div class="btn-group pull-right hide-on-mobile" data-tooltip-join="right" data-bind="visible: isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'" style="margin-right: 5px">
<div class="btn-group pull-right hide-on-mobile" data-bind="visible: isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'" style="margin-right: 5px">
<a class="btn single btn-success buttonEdit" data-bind="command: messageEditCommand">
<i class="icon-pencil icon-white"></i>
</a>
@ -339,7 +339,7 @@
<div class="attachmentsPlace" data-bind="visible: message() && message().attachments().hasVisible(),
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"
<li class="attachmentItem clearfix" draggable="true"
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">

View file

@ -1,4 +1,4 @@
<div class="modal b-account-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-account-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-open-pgp-key-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-open-pgp-key-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-advanced-search-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-advanced-search-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3>

View file

@ -1,4 +1,4 @@
<div class="modal b-compose" data-bind="modal: modalVisibility, css: {'loading': saving() || sending()}">
<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 animated big': sending()}"></i>
@ -9,8 +9,8 @@
<span class="i18n btn-text hide-on-mobile" data-i18n="COMPOSE/BUTTON_SAVE"></span>
</a>
<a class="close-custom" data-tooltip-join="top" data-bind="click: tryToClosePopup, tooltip: 'COMPOSE/BUTTON_CANCEL'">&times;</a>
<a class="minimize-custom" data-tooltip-join="top" data-bind="click: skipCommand, tooltip: 'COMPOSE/BUTTON_MINIMIZE'"></a>
<a class="close-custom" data-bind="click: tryToClosePopup, tooltip: 'COMPOSE/BUTTON_CANCEL'">&times;</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="icon-trash icon-white"></i>
@ -83,7 +83,7 @@
</div>
<div class="btn-group pull-right">&nbsp;</div>
<div class="btn-group pull-right">
<a class="btn single" data-tooltip-join="top" data-bind="visible: allowContacts, command: contactsCommand, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
<a class="btn single" data-bind="visible: allowContacts, command: contactsCommand, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
<i class="icon-address-book"></i>
</a>
</div>
@ -107,7 +107,7 @@
<div class="e-row">
<div class="e-cell e-label">
<label class="control-label" data-bind="css: {'error-to': emptyToError}">
<span class="i18n" data-i18n="COMPOSE/TITLE_TO" data-tooltip-join="top"
<span class="i18n" data-i18n="COMPOSE/TITLE_TO"
data-bind="tooltipErrorTip: emptyToErrorTooltip"></span>
</label>
</div>
@ -157,7 +157,7 @@
css: { 'active': !attachmentsPlace() }">
<i class="icon-file-text"></i>
</button>
<button type="button" class="btn last" data-tooltip-join="left" data-bind="click: function () { attachmentsPlace(true); },
<button type="button" class="btn last" data-bind="click: function () { attachmentsPlace(true); },
css: { 'btn-danger': 0 < attachmentsInErrorCount(), 'active': attachmentsPlace() },
tooltipErrorTip: attachmentsErrorTooltip">
<span data-bind="visible: 0 < attachmentsCount()">
@ -170,7 +170,7 @@
</div>
<div class="pull-right" style="margin-right: 4px;">
<div class="btn-group pull-right">
<a class="btn first" data-tooltip-join="bottom"
<a class="btn first"
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>

View file

@ -1,4 +1,4 @@
<div class="modal b-compose-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-compose-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-contacts-content" data-bind="modal: modalVisibility">
<div class="modal fade b-contacts-content" data-bind="modal: modalVisibility">
<div class="modal-header b-header-toolbar g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
@ -38,15 +38,15 @@
<span class="i18n" data-i18n="CONTACTS/BUTTON_IMPORT"></span>
</a>
</li>
<li class="divider" role="presentation" data-bind="visible: allowExport"></li>
<li class="e-item" role="presentation" data-bind="visible: allowExport">
<li class="divider hide-mobile" role="presentation"></li>
<li class="e-item hide-mobile" role="presentation">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: exportCsv">
<i data-bind="css: {'icon-export': !contacts.exportingCsv(), 'icon-spinner animated': contacts.exportingCsv}"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n="CONTACTS/BUTTON_EXPORT_CSV"></span>
</a>
</li>
<li class="e-item" role="presentation" data-bind="visible: allowExport" >
<li class="e-item hide-mobile" role="presentation">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="click: exportVcf">
<i data-bind="css: {'icon-export': !contacts.exportingVcf(), 'icon-spinner animated': contacts.exportingVcf}"></i>
&nbsp;&nbsp;
@ -204,7 +204,7 @@
</div>
<div class="control-group" data-bind="visible: !viewReadOnly() || 0 < viewPropertiesEmails().length">
<label class="control-label remove-padding-top fix-width">
<i class="icon-at iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_EMAIL'"></i>
<i class="icon-at iconsize24" data-bind="tooltip: 'CONTACTS/LABEL_EMAIL'"></i>
</label>
<div class="controls fix-width">
<div data-bind="foreach: viewPropertiesEmails">
@ -220,7 +220,7 @@
</div>
<div class="control-group" data-bind="visible: 0 < viewPropertiesPhones().length">
<label class="control-label remove-padding-top fix-width">
<i class="icon-telephone iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_PHONE'"></i>
<i class="icon-telephone iconsize24" data-bind="tooltip: 'CONTACTS/LABEL_PHONE'"></i>
</label>
<div class="controls fix-width">
<div data-bind="foreach: viewPropertiesPhones">
@ -235,7 +235,7 @@
</div>
<div class="control-group" data-bind="visible: 0 < viewPropertiesWeb().length">
<label class="control-label remove-padding-top fix-width">
<i class="icon-world iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_WEB'"></i>
<i class="icon-world iconsize24" data-bind="tooltip: 'CONTACTS/LABEL_WEB'"></i>
</label>
<div class="controls fix-width">
<div data-bind="foreach: viewPropertiesWeb">
@ -257,7 +257,7 @@
</div>
<!-- <div class="e-read-only-sign">
<i class="icon-lock iconsize24" data-tooltip-join="right" data-bind="tooltip: 'CONTACTS/LABEL_READ_ONLY'"></i>
<i class="icon-lock iconsize24" data-bind="tooltip: 'CONTACTS/LABEL_READ_ONLY'"></i>
</div>-->

View file

@ -1,4 +1,4 @@
<div class="modal b-filter-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-filter-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-folder-clear-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-folder-clear-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-folder-create-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-folder-create-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-folder-system-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-folder-system-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3>

View file

@ -1,4 +1,4 @@
<div class="modal b-identity-content" data-bind="modal: modalVisibility">
<div class="modal fade b-identity-content" data-bind="modal: modalVisibility">
<div>
<div class="modal-header g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-message-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-message-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-open-pgp-key-generate-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-open-pgp-key-generate-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-template-add-content" data-bind="modal: modalVisibility">
<div class="modal fade b-template-add-content" data-bind="modal: modalVisibility">
<div>
<div class="modal-header g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-two-factor-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-two-factor-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="visible: viewEnable() || !lock(), command: cancelCommand">&times;</button>
@ -10,7 +10,7 @@
<div class="form-horizontal" data-bind="visible: capaTwoFactor" style="margin-top: 10px;">
<div class="control-group" data-bind="visible: twoFactorStatus">
<div class="controls">
<div style="display: inline-block" data-tooltip-join="top" data-bind="tooltip: viewTwoFactorEnableTooltip">
<div style="display: inline-block" data-bind="tooltip: viewTwoFactorEnableTooltip">
<div data-bind="component: {
name: 'Checkbox',
params: {

View file

@ -1,4 +1,4 @@
<div class="modal b-two-factor-test-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div class="modal fade b-two-factor-test-content g-ui-user-select-none" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -1,4 +1,4 @@
<div class="modal b-open-pgp-key-view-content" data-bind="modal: modalVisibility">
<div class="modal fade b-open-pgp-key-view-content" data-bind="modal: modalVisibility">
<div>
<div class="modal-header g-ui-user-select-none">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>

View file

@ -14,7 +14,7 @@
<span class="i18n" data-i18n="SETTINGS_FILTERS/BUTTON_ADD_FILTER"></span>
</a>
&nbsp;&nbsp;
<a class="btn" data-tooltip-join="top" data-bind="visible: filterRaw.allow, click: function () { filterRaw.active(!filterRaw.active()) },
<a class="btn" data-bind="visible: filterRaw.allow, click: function () { filterRaw.active(!filterRaw.active()) },
css: {'active': filterRaw.active }, tooltip: 'SETTINGS_FILTERS/BUTTON_RAW_SCRIPT'">
<i class="icon-file-code"></i>
</a>

View file

@ -10,7 +10,7 @@
<span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_ADD_OPEN_PGP_KEY"></span>
</button>
&nbsp;&nbsp;
<div style="display: inline-block" data-tooltip-join="left" data-bind="tooltip: 'SETTINGS_OPEN_PGP/GENERATE_ONLY_HTTPS'">
<div style="display: inline-block" data-bind="tooltip: 'SETTINGS_OPEN_PGP/GENERATE_ONLY_HTTPS'">
<button class="btn" data-bind="click: generateOpenPgpKey">
<i class="icon-key"></i>
&nbsp;&nbsp;

View file

@ -81,7 +81,7 @@
</ul>
</div>
<div class="accountPlace pull-right hide-on-mobile" data-bind="text: emailTitle()"></div>
<div class="audioPlace pull-right" data-tooltip-i18n="off" data-tooltip-mobile="on" data-tooltip-join="right top"
<div class="audioPlace pull-right" data-tooltip-i18n="off"
data-bind="visible: '' !== currentAudio(), tooltip: currentAudio, click: stopPlay">
<div class="playIcon equaliser" data-bind="css: {'animated': '' !== currentAudio()}">
<div class="bar first"></div>
@ -92,10 +92,10 @@
</div>
<div class="logoPlace pull-right" data-bind="if: logoImg">
<img style="height: 99%" data-tooltip-i18n="off" data-tooltip-mobile="on" data-tooltip-join="right"
<img style="height: 99%" data-tooltip-i18n="off"
data-bind="attr: { 'src': logoImg }, tooltip: logoTitle" />
</div>
</div>
</div>
</div>
</div>