From b062e9b1902b701fc28f4675432d2fb966857d8c Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Thu, 16 Apr 2015 21:55:13 +0400 Subject: [PATCH] Composer fixes --- dev/Common/Enums.js | 1 + dev/Common/HtmlEditor.js | 55 +++++++------------ dev/External/ko.js | 29 ++++++---- dev/Model/Attachment.js | 12 +++- dev/View/Admin/Login.js | 1 - dev/View/Popup/Compose.js | 2 + dev/View/User/Login.js | 4 -- .../app/libraries/MailSo/Mail/MailClient.php | 20 ++++++- .../0.0.0/app/libraries/RainLoop/Actions.php | 23 ++++++-- 9 files changed, 86 insertions(+), 61 deletions(-) diff --git a/dev/Common/Enums.js b/dev/Common/Enums.js index 36c56ad5e..e08450a44 100644 --- a/dev/Common/Enums.js +++ b/dev/Common/Enums.js @@ -22,6 +22,7 @@ 'Sheet': 'sheet', 'Presentation': 'presentation', 'Certificate': 'certificate', + 'CertificateBin': 'certificate-bin', 'Archive': 'archive' }; diff --git a/dev/Common/HtmlEditor.js b/dev/Common/HtmlEditor.js index 8e9f25c69..842702c51 100644 --- a/dev/Common/HtmlEditor.js +++ b/dev/Common/HtmlEditor.js @@ -32,7 +32,6 @@ this.resize = _.throttle(_.bind(this.resize, this), 100); this.__inited = false; - this.__initedData = null; this.init(); } @@ -206,10 +205,6 @@ this.focus(); } } - else - { - this.__initedData = [true, sHtml, bFocus]; - } }; HtmlEditor.prototype.setPlain = function (sPlain, bFocus) @@ -233,10 +228,6 @@ this.focus(); } } - else - { - this.__initedData = [false, sPlain, bFocus]; - } }; HtmlEditor.prototype.init = function () @@ -318,37 +309,29 @@ self.focusTrigger(); }); - if (self.fOnReady) - { - self.editor.on('instanceReady', function () { + self.editor.on('instanceReady', function () { - if (self.editor.removeMenuItem) - { - self.editor.removeMenuItem('cut'); - self.editor.removeMenuItem('copy'); - self.editor.removeMenuItem('paste'); - } + if (self.editor.removeMenuItem) + { + self.editor.removeMenuItem('cut'); + self.editor.removeMenuItem('copy'); + self.editor.removeMenuItem('paste'); + } - self.editor.setKeystroke(window.CKEDITOR.CTRL + 65 /* A */, 'selectAll'); + self.editor.setKeystroke(window.CKEDITOR.CTRL + 65 /* A */, 'selectAll'); + + self.__resizable = true; + self.__inited = true; + + self.resize(); + + if (self.fOnReady) + { self.fOnReady(); - self.__resizable = true; - self.__inited = true; - self.resize(); - - if (self.__initedData) - { - if (self.__initedData[0]) - { - self.setHtml(self.__initedData[1], self.__initedData[2]); - } - else - { - self.setPlain(self.__initedData[1], self.__initedData[2]); - } - } - }); - } + } + + }); } ; diff --git a/dev/External/ko.js b/dev/External/ko.js index b2e1e4712..04315255f 100644 --- a/dev/External/ko.js +++ b/dev/External/ko.js @@ -24,32 +24,41 @@ 'init': function (oElement, fValueAccessor) { var - fValue = fValueAccessor(), oEditor = null, + fValue = fValueAccessor(), + fUpdateEditorValue = function () { - if (oEditor) + if (fValue && fValue.__editor) { - oEditor.setHtmlOrPlain(fValue()); + fValue.__editor.setHtmlOrPlain(fValue()); } }, + fUpdateKoValue = function () { - if (oEditor && oEditor.__inited) + if (fValue && fValue.__editor) { - fValue(oEditor.getDataWithHtmlMark()); + fValue(fValue.__editor.getDataWithHtmlMark()); } }, + + fOnReady = function () { + fValue.__editor = oEditor; + fUpdateEditorValue(); + }, + HtmlEditor = require('Common/HtmlEditor') ; - if (fValue) + if (ko.isObservable(fValue) && HtmlEditor) { - oEditor = new HtmlEditor(oElement, fUpdateKoValue, fUpdateEditorValue, fUpdateKoValue); - fValue.__editor = oEditor; + oEditor = new HtmlEditor(oElement, fUpdateKoValue, fOnReady, fUpdateKoValue); + fValue.__fetchEditorValue = fUpdateKoValue; - fValue.__updateEditorValue = fUpdateEditorValue; fValue.subscribe(fUpdateEditorValue); - fUpdateEditorValue(); + +// ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { +// }); } } }; diff --git a/dev/Model/Attachment.js b/dev/Model/Attachment.js index d4dc6911e..0534494c1 100644 --- a/dev/Model/Attachment.js +++ b/dev/Model/Attachment.js @@ -189,7 +189,8 @@ */ AttachmentModel.prototype.hasPreview = function () { - return this.isImage() || (this.isPdf() && Globals.bAllowPdfPreview) || this.isText() || this.isFramed(); + return this.isImage() || (this.isPdf() && Globals.bAllowPdfPreview) || + this.isText() || this.isFramed(); }; /** @@ -370,12 +371,17 @@ sResult = Enums.FileType.Pdf; break; case -1 < Utils.inArray(sMimeType, [ - 'application/pgp-signature', 'application/pkcs7-signature', 'application/pgp-keys' + 'application/pgp-signature', 'application/pgp-keys' ]) || -1 < Utils.inArray(sExt, [ 'asc', 'pem', 'ppk' ]): sResult = Enums.FileType.Certificate; break; + case -1 < Utils.inArray(sMimeType, ['application/pkcs7-signature']) || + -1 < Utils.inArray(sExt, ['p7s']): + + sResult = Enums.FileType.CertificateBin; + break; case -1 < Utils.inArray(aMimeTypeParts[1], [ 'rtf', 'msword', 'vnd.msword', 'vnd.openxmlformats-officedocument.wordprocessingml.document', 'vnd.openxmlformats-officedocument.wordprocessingml.template', @@ -447,6 +453,7 @@ sClass = 'icon-file-zip'; break; case Enums.FileType.Certificate: + case Enums.FileType.CertificateBin: sClass = 'icon-file-certificate'; break; case Enums.FileType.Sheet: @@ -509,6 +516,7 @@ sClass = 'icon-file-zip'; break; case Enums.FileType.Certificate: + case Enums.FileType.CertificateBin: sClass = 'icon-file-certificate'; break; case Enums.FileType.Sheet: diff --git a/dev/View/Admin/Login.js b/dev/View/Admin/Login.js index e6a64c8ec..84d506e86 100644 --- a/dev/View/Admin/Login.js +++ b/dev/View/Admin/Login.js @@ -87,7 +87,6 @@ { if (oData.Result) { - this.formHidden(true); require('App/Admin').loginAndLogoutReload(true); } else if (oData.ErrorCode) diff --git a/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js index 42b8bf4ab..68acf1632 100644 --- a/dev/View/Popup/Compose.js +++ b/dev/View/Popup/Compose.js @@ -1,4 +1,6 @@ +/* global require, module */ + (function () { 'use strict'; diff --git a/dev/View/User/Login.js b/dev/View/User/Login.js index f2ea8c45b..e5e7111b1 100644 --- a/dev/View/User/Login.js +++ b/dev/View/User/Login.js @@ -213,12 +213,10 @@ } else if (oData.Admin) { - this.formHidden(true); require('App/User').redirectToAdminPanel(); } else { - this.formHidden(true); require('App/User').loginAndLogoutReload(false); } } @@ -382,8 +380,6 @@ if (0 === iErrorCode) { self.submitRequest(true); - self.formHidden(true); - require('App/User').loginAndLogoutReload(false); } else diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index ce428e586..f3f0041a1 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -1921,6 +1921,7 @@ class MailClient * @param bool $bUseSortIfSupported = false * @param bool $bUseThreadSortIfSupported = false * @param bool $bUseESearchOrESortRequest = false + * @param string $sThreadUid = '' * * @return \MailSo\Mail\MessageCollection * @@ -1929,7 +1930,8 @@ class MailClient * @throws \MailSo\Imap\Exceptions\Exception */ public function MessageList($sFolderName, $iOffset = 0, $iLimit = 10, $sSearch = '', $sPrevUidNext = '', $oCacher = null, - $bUseSortIfSupported = false, $bUseThreadSortIfSupported = false, $bUseESearchOrESortRequest = false) + $bUseSortIfSupported = false, $bUseThreadSortIfSupported = false, $bUseESearchOrESortRequest = false, + $sThreadUid = '') { $sSearch = \trim($sSearch); if (!\MailSo\Base\Validator::RangeInt($iOffset, 0) || @@ -1958,6 +1960,11 @@ class MailClient $bUseThreadSortIfSupported = $bUseThreadSortIfSupported ? ($this->oImapClient->IsSupported('THREAD=REFS') || $this->oImapClient->IsSupported('THREAD=REFERENCES') || $this->oImapClient->IsSupported('THREAD=ORDEREDSUBJECT')) : false; + if (!empty($sThreadUid) && !$bUseThreadSortIfSupported) + { + throw new \MailSo\Base\Exceptions\InvalidArgumentException(); + } + if (!$oCacher || !($oCacher instanceof \MailSo\Cache\CacheClient)) { $oCacher = null; @@ -1986,6 +1993,12 @@ class MailClient $bIndexAsUid = false; $aIndexOrUids = array(); +// $mThreads = $this->MessageListThreadsMap($sFolderName, $sFolderHash, array(), $oCacher, true); +// if (\is_array($mThreads)) +// { +// +// } + if (0 < \strlen($sSearch)) { $aIndexOrUids = $this->getSearchUidsResult($sSearch, @@ -2263,7 +2276,10 @@ class MailClient { $aSubscribedFolders = $this->oImapClient->FolderSubscribeList($sParent, $sListPattern); } - catch (\Exception $oException) {} + catch (\Exception $oException) + { + unset($oException); + } } $aImapSubscribedFoldersHelper = null; 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 713062acf..46e8f5524 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -2640,7 +2640,7 @@ class Actions \sleep(1); return $this->TrueResponse(__FUNCTION__); } - + /** * @return array * @@ -5509,11 +5509,12 @@ class Actions $sSearch = ''; $sUidNext = ''; $bUseThreads = false; + $sThreadUid = ''; $sRawKey = $this->GetActionParam('RawKey', ''); $aValues = $this->getDecodedClientRawKeyValue($sRawKey, 9); - if (\is_array($aValues) && 9 === \count($aValues)) + if (\is_array($aValues) && 7 < \count($aValues)) { $sFolder =(string) $aValues[0]; $iOffset = (int) $aValues[1]; @@ -5522,6 +5523,11 @@ class Actions $sUidNext = (string) $aValues[6]; $bUseThreads = (bool) $aValues[7]; + if ($bUseThreads) + { + $sThreadUid = ''; // TODO + } + $this->verifyCacheByKey($sRawKey); } else @@ -5532,6 +5538,11 @@ class Actions $sSearch = $this->GetActionParam('Search', ''); $sUidNext = $this->GetActionParam('UidNext', ''); $bUseThreads = '1' === (string) $this->GetActionParam('UseThreads', '0'); + + if ($bUseThreads) + { + $sThreadUid = (string) $this->GetActionParam('ThreadUid', ''); + } } if (0 === strlen($sFolder)) @@ -5552,8 +5563,8 @@ class Actions $sFolder, $iOffset, $iLimit, $sSearch, $sUidNext, $this->cacherForUids(), !!$this->Config()->Get('labs', 'use_imap_sort', false), - $bUseThreads, - !!$this->Config()->Get('labs', 'use_imap_esearch_esort', false) + $bUseThreads, !!$this->Config()->Get('labs', 'use_imap_esearch_esort', false), + $sThreadUid ); } catch (\Exception $oException) @@ -7724,10 +7735,10 @@ class Actions $iUid = (int) (isset($aValues['Uid']) ? $aValues['Uid'] : 0); $sMimeIndex = (string) (isset($aValues['MimeIndex']) ? $aValues['MimeIndex'] : ''); - header('Content-Type: text/plain', true); + \header('Content-Type: text/plain', true); return $this->MailClient()->MessageMimeStream(function ($rResource) { - if (is_resource($rResource)) + if (\is_resource($rResource)) { \MailSo\Base\Utils::FpassthruWithTimeLimitReset($rResource); }