diff --git a/dev/App/Abstract.js b/dev/App/Abstract.js index 6877e64e3..ea60ac90d 100644 --- a/dev/App/Abstract.js +++ b/dev/App/Abstract.js @@ -3,8 +3,7 @@ import ko from 'ko'; import { $htmlCL, leftPanelDisabled, - leftPanelType, - bMobileDevice + leftPanelType } from 'Common/Globals'; import { KeyState } from 'Common/Enums'; @@ -58,7 +57,7 @@ class AbstractApp { * @returns {boolean} */ download(link) { - if (bMobileDevice) { + if (rl.settings.app('mobile')) { open(link, '_self'); focus(); } else { @@ -99,7 +98,7 @@ class AbstractApp { ko.components.register('Select', require('Component/Select').default); ko.components.register('TextArea', require('Component/TextArea').default); - if (Settings.app('materialDesign') && !bMobileDevice) { + if (Settings.app('materialDesign') && !rl.settings.app('mobile')) { ko.components.register('Checkbox', require('Component/MaterialDesign/Checkbox').default); ko.components.register('CheckboxSimple', require('Component/Checkbox').default); } else { diff --git a/dev/App/User.js b/dev/App/User.js index 1f7c71939..f66ff4a2f 100644 --- a/dev/App/User.js +++ b/dev/App/User.js @@ -17,7 +17,7 @@ import { ClientSideKeyName } from 'Common/Enums'; -import { $htmlCL, leftPanelDisabled, bMobileDevice } from 'Common/Globals'; +import { $htmlCL, leftPanelDisabled } from 'Common/Globals'; import { UNUSED_OPTION_VALUE } from 'Common/Consts'; @@ -1048,9 +1048,8 @@ class AppUser extends AbstractApp { }, 500); } - if (!bMobileDevice) { - const o = this; - setTimeout(() => o.initVerticalLayoutResizer(ClientSideKeyName.FolderListSize), 1); + if (!Settings.app('mobile')) { + setTimeout(() => this.initVerticalLayoutResizer(ClientSideKeyName.FolderListSize), 1); } } else { this.logout(); diff --git a/dev/Common/Globals.js b/dev/Common/Globals.js index 6cb25843b..dc446dd01 100644 --- a/dev/Common/Globals.js +++ b/dev/Common/Globals.js @@ -9,13 +9,6 @@ export const $htmlCL = $html.classList; */ export const dropdownVisibility = ko.observable(false).extend({ rateLimit: 0 }); -/** - * @type {boolean} - */ -export const bMobileDevice = (/android|iphone|ipod|ipad|blackberry|mobile/i).test( - (navigator.userAgent && navigator.userAgent.toLowerCase()) || '' -); - export const VIEW_MODELS = { settings: [], 'settings-removed': [], diff --git a/dev/External/SquireUI.js b/dev/External/SquireUI.js index 571fb1a31..9c28d87bf 100644 --- a/dev/External/SquireUI.js +++ b/dev/External/SquireUI.js @@ -147,6 +147,12 @@ class SquireUI { constructor(container) { const + doClr = fn => () => { + clr.value = ''; + clr.onchange = () => squire[fn](clr.value); + clr.click(); + }, + actions = { mode: { plain: { @@ -185,18 +191,12 @@ class SquireUI colors: { textColor: { html: 'A', - cmd: () => { - clr.onchange = () => squire.setTextColour(clr.value); - clr.click(); - }, + cmd: doClr('setTextColour'), hint: 'Text color' }, backgroundColor: { html: '🎨', /* ▧ */ - cmd: () => { - clr.onchange = () => squire.setHighlightColour(clr.value); - clr.click(); - }, + cmd: doClr('setHighlightColour'), hint: 'Background color' }, }, diff --git a/dev/External/ko.js b/dev/External/ko.js index 5e26c1635..67e086e00 100644 --- a/dev/External/ko.js +++ b/dev/External/ko.js @@ -3,39 +3,32 @@ const ko = window.ko, Translator = () => require('Common/Translator'), Globals = () => require('Common/Globals'), - isFunction = v => typeof v === 'function'; + isFunction = v => typeof v === 'function', + koValue = value => !ko.isObservable(value) && isFunction(value) ? value() : ko.unwrap(value); ko.bindingHandlers.tooltip = { init: (element, fValueAccessor) => { - const fValue = fValueAccessor(), - Global = Globals(); + const Global = Globals(); + const sValue = koValue(fValueAccessor()); - if (!Global.bMobileDevice || 'on' === element.dataset.tooltipMobile) { - const sValue = !ko.isObservable(fValue) && isFunction(fValue) ? fValue() : ko.unwrap(fValue); - - if ('off' === element.dataset.tooltipI18n) { - element.title = sValue; - } else { - element.title = Translator().i18n(sValue); - Translator().trigger.subscribe(() => - element.title = Translator().i18n(sValue) - ); - Global.dropdownVisibility.subscribe(() => - element.title = Translator().i18n(sValue) - ); - } + if ('off' === element.dataset.tooltipI18n) { + element.title = sValue; + } else { + element.title = Translator().i18n(sValue); + Translator().trigger.subscribe(() => + element.title = Translator().i18n(sValue) + ); + Global.dropdownVisibility.subscribe(() => + element.title = Translator().i18n(sValue) + ); } }, update: (element, fValueAccessor) => { - const fValue = fValueAccessor(); - - if (!Globals().bMobileDevice || 'on' === element.dataset.tooltipMobile) { - const sValue = !ko.isObservable(fValue) && isFunction(fValue) ? fValue() : ko.unwrap(fValue); - if (sValue) { - element.title = 'off' === element.dataset.tooltipI18n ? sValue : Translator().i18n(sValue); - } else { - element.title = ''; - } + const sValue = koValue(fValueAccessor()); + if (sValue) { + element.title = 'off' === element.dataset.tooltipI18n ? sValue : Translator().i18n(sValue); + } else { + element.title = ''; } } }; @@ -46,9 +39,7 @@ ko.bindingHandlers.tooltipErrorTip = { ko.utils.domNodeDisposal.addDisposeCallback(element, () => element.removeAttribute('data-rainloopErrorTip')); }, update: (element, fValueAccessor) => { - const fValue = fValueAccessor(), - value = !ko.isObservable(fValue) && isFunction(fValue) ? fValue() : ko.unwrap(fValue); - + const value = koValue(fValueAccessor()); if (value) { setTimeout(() => element.setAttribute('data-rainloopErrorTip', value), 100); } else { @@ -110,9 +101,8 @@ ko.bindingHandlers.onSpace = { ko.bindingHandlers.modal = { init: (element, fValueAccessor) => { - element.classList.toggle('fade', !Globals().bMobileDevice); - - const close = element.querySelector('.close'), click = () => fValueAccessor()(false); + const close = element.querySelector('.close'), + click = () => fValueAccessor()(false); close && close.addEventListener('click.koModal', click); ko.utils.domNodeDisposal.addDisposeCallback(element, () => diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js index ac1579970..3c3b47b89 100644 --- a/dev/Knoin/Knoin.js +++ b/dev/Knoin/Knoin.js @@ -2,8 +2,6 @@ import ko from 'ko'; import { $htmlCL, VIEW_MODELS } from 'Common/Globals'; -//import { bMobileDevice } from 'Common/Globals'; - let currentScreen = null, defaultScreenName = '', popupVisibilityNames = []; @@ -11,7 +9,7 @@ let currentScreen = null, const SCREENS = {}, isNonEmptyArray = Array.isNotEmpty, autofocus = dom => { -// if (!bMobileDevice) { +// if (!rl.settings.app('mobile')) { const af = dom.querySelector('[autofocus]'); af && af.focus(); }; diff --git a/dev/Model/Attachment.js b/dev/Model/Attachment.js index 5a9b01b11..e1016526e 100644 --- a/dev/Model/Attachment.js +++ b/dev/Model/Attachment.js @@ -1,7 +1,6 @@ import ko from 'ko'; import { FileType } from 'Common/Enums'; -import { bMobileDevice } from 'Common/Globals'; import { pInt, getFileExtension, friendlySize } from 'Common/Utils'; import { attachmentDownload, @@ -15,7 +14,7 @@ import { AbstractModel } from 'Knoin/AbstractModel'; import Audio from 'Common/Audio'; -const bAllowPdfPreview = !bMobileDevice && undefined !== navigator.mimeTypes['application/pdf']; +const bAllowPdfPreview = undefined !== navigator.mimeTypes['application/pdf']; /** * @param {string} sExt diff --git a/dev/Screen/User/MailBox.js b/dev/Screen/User/MailBox.js index a7b00e5fa..b0b28d484 100644 --- a/dev/Screen/User/MailBox.js +++ b/dev/Screen/User/MailBox.js @@ -1,5 +1,5 @@ import { Focused, Capa, ClientSideKeyName } from 'Common/Enums'; -import { leftPanelDisabled, leftPanelType, moveAction, bMobileDevice } from 'Common/Globals'; +import { leftPanelDisabled, leftPanelType, moveAction } from 'Common/Globals'; import { pString, pInt } from 'Common/Utils'; import { getFolderFromCacheList, getFolderFullNameRaw, getFolderInboxName } from 'Common/Cache'; import { i18n } from 'Common/Translator'; @@ -120,7 +120,7 @@ class MailBoxUserScreen extends AbstractScreen { * @returns {void} */ onBuild() { - if (!bMobileDevice && !Settings.app('mobile')) { + if (!Settings.app('mobile')) { setTimeout(() => rl.app.initHorizontalLayoutResizer(ClientSideKeyName.MessageListSize) , 1); diff --git a/dev/Styles/Identity.less b/dev/Styles/Identity.less index 635afe550..9a765889d 100644 --- a/dev/Styles/Identity.less +++ b/dev/Styles/Identity.less @@ -22,6 +22,8 @@ } .e-signature-place { + border: 1px solid #ccc; + border-radius: 3px; height: 200px; } diff --git a/dev/Styles/Layout.less b/dev/Styles/Layout.less index 6be23aa14..53f0f2708 100644 --- a/dev/Styles/Layout.less +++ b/dev/Styles/Layout.less @@ -280,6 +280,8 @@ html:not(.rl-left-panel-disabled) #rl-left.resizable > .resizer, } } +.visible-on-ctrl, +.visible-on-ctrl-btn, .show-on-panel-disabled { display: none; } @@ -388,10 +390,6 @@ html.rl-bottom-preview-pane { } } -.visible-on-ctrl, .visible-on-ctrl-btn { - display: none; -} - .hidden-on-ctrl-btn { display: inline-block; } diff --git a/dev/Styles/Main.less b/dev/Styles/Main.less index 236816882..ff703715c 100644 --- a/dev/Styles/Main.less +++ b/dev/Styles/Main.less @@ -58,8 +58,3 @@ html.mobile *, html.rl-mobile * { input[type="search"]{ box-sizing: content-box; } - -input::-ms-clear, -input::-ms-reveal { - display: none; -} diff --git a/dev/Styles/SettingsOpenPGP.less b/dev/Styles/SettingsOpenPGP.less index 790722b5d..5af820b7e 100644 --- a/dev/Styles/SettingsOpenPGP.less +++ b/dev/Styles/SettingsOpenPGP.less @@ -21,14 +21,8 @@ } .open-pgp-key-img { - margin-right: 10px; vertical-align: top; - - .svg-icon { - width: 12px; - height: 12px; - } } .open-pgp-key-id, .open-pgp-key-user { diff --git a/dev/Styles/SquireUI.less b/dev/Styles/SquireUI.less index 1a54ac8c3..6d4f81c41 100644 --- a/dev/Styles/SquireUI.less +++ b/dev/Styles/SquireUI.less @@ -10,8 +10,7 @@ } .squire-toolgroup > button, -.squire-toolgroup > select, -.squire-toolgroup > input[type="color"] { +.squire-toolgroup > select { background: transparent; border: 0; box-shadow: none; @@ -104,8 +103,7 @@ Secondly, we can't rely on MUA's what to do with :empty right: 0; } .rl-mobile .squire-toolgroup > button, -.rl-mobile .squire-toolgroup > select, -.rl-mobile .squire-toolgroup > input[type="color"] { +.rl-mobile .squire-toolgroup > select { height: 2.5em; line-height: 2.8; width: 3em; diff --git a/dev/Styles/Ui.less b/dev/Styles/Ui.less index 911353fff..1aeb110d9 100644 --- a/dev/Styles/Ui.less +++ b/dev/Styles/Ui.less @@ -183,6 +183,7 @@ } } +html.mobile .hide-mobile, .command.command-disabled.hide-on-disabled-command { display:none; } diff --git a/dev/Styles/_BootstrapFix.less b/dev/Styles/_BootstrapFix.less index 65b80beee..9264e8e25 100644 --- a/dev/Styles/_BootstrapFix.less +++ b/dev/Styles/_BootstrapFix.less @@ -67,10 +67,6 @@ select { width: 223px; } -.btn .svg-icon { - vertical-align: middle; -} - .btn-small.btn-small-small { padding: 3px 9px; font-size: 11px; diff --git a/dev/Styles/_CkeFix.less b/dev/Styles/_CkeFix.less index 65a88b037..e7ff0b545 100644 --- a/dev/Styles/_CkeFix.less +++ b/dev/Styles/_CkeFix.less @@ -16,7 +16,7 @@ } .cke_top { - padding: 6px 4px 1px 6px; + padding: 2px; box-shadow: none !important; border-bottom: 1px solid #b6b6b6 !important; background: #F0F0F0 !important; diff --git a/dev/Styles/_End.less b/dev/Styles/_End.less index f9e1c47f5..db4536429 100644 --- a/dev/Styles/_End.less +++ b/dev/Styles/_End.less @@ -73,25 +73,6 @@ z-index: 2002; } -svg-icon { - display: none; -} - -.svg-icon { - border: 0; - outline: 0; - - height: 16px; - width: 16px; - display: inline-block; - fill: #333; - - &.svg-icon-archive { - height: 14px; - width: 14px; - } -} - .lg-backdrop.in { opacity: 0.8; } @@ -116,3 +97,23 @@ html.glass { transition: color 9999s ease-out, background-color 9999s ease-out; } } + +/* +@media (pointer: coarse), (hover: none) { + [title] { + position: relative; + display: inline-flex; + justify-content: center; + } + [title]:focus::after { + content: attr(title); + position: absolute; + top: 90%; + color: #000; + background-color: #fff; + border: 1px solid; + width: fit-content; + padding: 3px; + } +} +*/ diff --git a/dev/Styles/_InputosaurusFix.less b/dev/Styles/_InputosaurusFix.less index 7bd238c38..6732d958e 100644 --- a/dev/Styles/_InputosaurusFix.less +++ b/dev/Styles/_InputosaurusFix.less @@ -1,77 +1,10 @@ .inputosaurus-container { - width: 99%; - line-height: 20px; - padding: 2px; - border: 1px solid #cccccc; - border-radius: 3px; - - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - transition: border linear .2s, box-shadow linear .2s; - &.inputosaurus-focused { background-color: #fff; border: @rlInputBorderSize solid darken(@inputBorder, 20%); box-shadow: none; } - li { - max-width: 500px; - background-color: #eee; - border: 1px solid #aaa; - line-height: 18px; - padding: 2px 15px 2px 5px; - margin: 2px 2px 2px; - color: #555; - z-index: 100; - - position: relative; - - a { - color: #999; - font-size: 12px; - position: absolute; - top: 1px; - right: 2px; - - &:hover { - color: #666; - } - } - - span { - padding-right: 3px; - } - - &.inputosaurus-required { - padding-right: 5px; - } - - &.inputosaurus-selected { - background-color: #ddd; - } - - &.pgp { - background-color: #E5F3E2; - } - } - - .inputosaurus-input { - - margin: 1px 10px 1px 0; - height: 22px; - - input { - border: 0; - height : 21px; - padding-left: 0; - } - } -} - -.inputosaurus-fake-span { - position: absolute; - top: 0; - left: -5000px; } diff --git a/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js index fb49c3dc5..832dcf995 100644 --- a/dev/View/Popup/Compose.js +++ b/dev/View/Popup/Compose.js @@ -26,7 +26,6 @@ import { format as momentorFormat } from 'Common/Momentor'; import { getMessageFlagsFromCache, setMessageFlagsToCache, setFolderHash } from 'Common/Cache'; import { HtmlEditor } from 'Common/HtmlEditor'; -import { bMobileDevice } from 'Common/Globals'; import AppStore from 'Stores/User/App'; import SettingsStore from 'Stores/User/Settings'; @@ -1080,17 +1079,16 @@ class ComposePopupView extends AbstractViewNext { } setFocusInPopup() { - if (!bMobileDevice) { - setTimeout(() => { - if (!this.to()) { - this.to.focused(true); - } else if (this.oEditor) { - if (!this.to.focused()) { - this.oEditor.focus(); - } +// rl.settings.app('mobile') || + setTimeout(() => { + if (!this.to()) { + this.to.focused(true); + } else if (this.oEditor) { + if (!this.to.focused()) { + this.oEditor.focus(); } - }, 100); - } + } + }, 100); } tryToClosePopup() { diff --git a/dev/View/Popup/Contacts.js b/dev/View/Popup/Contacts.js index 1850b2e19..cc9e32aa1 100644 --- a/dev/View/Popup/Contacts.js +++ b/dev/View/Popup/Contacts.js @@ -18,7 +18,6 @@ import { } from 'Common/Utils'; import { CONTACTS_PER_PAGE } from 'Common/Consts'; -import { bMobileDevice } from 'Common/Globals'; import { Selector } from 'Common/Selector'; import { exportContactsVcf, exportContactsCsv, uploadContacts } from 'Common/Links'; @@ -58,7 +57,6 @@ class ContactsPopupView extends AbstractViewNext { this.allowContactsSync = ContactStore.allowContactsSync; this.enableContactsSync = ContactStore.enableContactsSync; - this.allowExport = !bMobileDevice; this.search = ko.observable(''); this.contactsCount = ko.observable(0); diff --git a/dev/View/Popup/Filter.js b/dev/View/Popup/Filter.js index fcb7f03d6..98ca26c3e 100644 --- a/dev/View/Popup/Filter.js +++ b/dev/View/Popup/Filter.js @@ -1,7 +1,6 @@ import ko from 'ko'; import { FiltersAction, FilterConditionField, FilterConditionType } from 'Common/Enums'; -import { bMobileDevice } from 'Common/Globals'; import { defautOptionsAfterRender } from 'Common/Utils'; import { i18n, initOnStartOrLangChange } from 'Common/Translator'; @@ -163,7 +162,7 @@ class FilterPopupView extends AbstractViewNext { } onShowWithDelay() { - if (this.isNew() && this.filter() && !bMobileDevice) { + if (this.isNew() && this.filter()/* && !rl.settings.app('mobile')*/) { this.filter().name.focused(true); } } diff --git a/dev/View/Popup/FolderCreate.js b/dev/View/Popup/FolderCreate.js index 8f5522b46..aaf2d7bcc 100644 --- a/dev/View/Popup/FolderCreate.js +++ b/dev/View/Popup/FolderCreate.js @@ -2,7 +2,6 @@ import ko from 'ko'; import { Notification } from 'Common/Enums'; import { UNUSED_OPTION_VALUE } from 'Common/Consts'; -import { bMobileDevice } from 'Common/Globals'; import { defautOptionsAfterRender, folderListOptionsBuilder } from 'Common/Utils'; import FolderStore from 'Stores/User/Folder'; @@ -74,9 +73,8 @@ class FolderCreateView extends AbstractViewNext { } onShowWithDelay() { - if (!bMobileDevice) { - this.folderName.focused(true); - } +// rl.settings.app('mobile') || + this.folderName.focused(true); } } diff --git a/dev/View/Popup/Identity.js b/dev/View/Popup/Identity.js index a4bc0921b..cee7d3083 100644 --- a/dev/View/Popup/Identity.js +++ b/dev/View/Popup/Identity.js @@ -1,7 +1,6 @@ import ko from 'ko'; import { StorageResultType, Notification } from 'Common/Enums'; -import { bMobileDevice } from 'Common/Globals'; import { fakeMd5 } from 'Common/Utils'; import { getNotification } from 'Common/Translator'; @@ -164,7 +163,7 @@ class IdentityPopupView extends AbstractViewNext { } onShowWithDelay() { - if (!this.owner() && !bMobileDevice) { + if (!this.owner()/* && !rl.settings.app('mobile')*/) { this.email.focused(true); } } diff --git a/dev/View/Popup/TwoFactorTest.js b/dev/View/Popup/TwoFactorTest.js index dc66c3865..80809177f 100644 --- a/dev/View/Popup/TwoFactorTest.js +++ b/dev/View/Popup/TwoFactorTest.js @@ -1,7 +1,6 @@ import ko from 'ko'; import { StorageResultType } from 'Common/Enums'; -import { bMobileDevice } from 'Common/Globals'; import Remote from 'Remote/User/Fetch'; @@ -54,9 +53,8 @@ class TwoFactorTestPopupView extends AbstractViewNext { } onShowWithDelay() { - if (!bMobileDevice) { - this.code.focused(true); - } +// rl.settings.app('mobile') || + this.code.focused(true); } } diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index 8cec129c3..3caeca8bf 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -13,7 +13,7 @@ import { import { UNUSED_OPTION_VALUE } from 'Common/Consts'; -import { bMobileDevice, leftPanelDisabled, moveAction } from 'Common/Globals'; +import { leftPanelDisabled, moveAction } from 'Common/Globals'; import { computedPagenatorHelper, friendlySize } from 'Common/Utils'; @@ -736,7 +736,7 @@ class MessageListMailBoxUserView extends AbstractViewNext { this.initUploaderForAppend(); this.initShortcuts(); - if (!bMobileDevice && ifvisible && Settings.capa(Capa.Prefetch)) { + if (ifvisible && !rl.settings.app('mobile') && Settings.capa(Capa.Prefetch)) { ifvisible.idle(this.prefetchNextTick.bind(this)); } } diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php index c9f36e7e9..495ad20d7 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -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); } diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php index 474269c12..10537fddf 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Plugins/Manager.php @@ -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; diff --git a/rainloop/v/0.0.0/app/templates/Themes/template.less b/rainloop/v/0.0.0/app/templates/Themes/template.less index a7bdadaa4..92152bcb6 100644 --- a/rainloop/v/0.0.0/app/templates/Themes/template.less +++ b/rainloop/v/0.0.0/app/templates/Themes/template.less @@ -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; diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminLogin.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminLogin.html index 55aeb5a6d..86dfd5aba 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminLogin.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminLogin.html @@ -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" /> - + diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomainAlias.html b/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomainAlias.html index 44ba3fc12..9185b9aa1 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomainAlias.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/PopupsDomainAlias.html @@ -1,4 +1,4 @@ -