Fix gmail imap mails count

This commit is contained in:
RainLoop Team 2014-05-27 16:54:41 +04:00
parent 57221d9a8e
commit 348cb25dbc
10 changed files with 91 additions and 30 deletions

View file

@ -87,6 +87,15 @@ html.rl-no-preview-pane {
} }
} }
.line-loading {
position: absolute;
left: 0;
right: 0;
z-index: 102;
height: 0px;
top: 50px;
}
.mainDelimiter { .mainDelimiter {
position: absolute; position: absolute;
left: 0; left: 0;
@ -530,6 +539,10 @@ html.ssm-state-desktop-large {
} }
} }
html.cssanimations.rl-anim .messageList .line-loading {
height: 5px !important;
}
.draggablePlace { .draggablePlace {
z-index: 10002; z-index: 10002;
color: #fff; color: #fff;

View file

@ -392,7 +392,7 @@ html.rl-no-preview-pane .messageView {
} }
} }
html.cssanimations.rl-anim .line-loading { html.cssanimations.rl-anim .messageItem .line-loading {
height: 5px !important; height: 5px !important;
} }

View file

@ -716,6 +716,12 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
} }
}); });
// check mail
key('ctrl+r, command+r', [Enums.KeyState.FolderList, Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
self.reloadCommand();
return false;
});
// check all // check all
key('ctrl+a, command+a', Enums.KeyState.MessageList, function () { key('ctrl+a, command+a', Enums.KeyState.MessageList, function () {
self.checkAll(!(self.checkAll() && !self.isIncompleteChecked())); self.checkAll(!(self.checkAll() && !self.isIncompleteChecked()));

View file

@ -692,13 +692,16 @@ class MailClient
$sUidNext = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT]) $sUidNext = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT])
? (string) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT] : '0'; ? (string) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT] : '0';
if ($this->IsGmail())
if (0 === \strpos($sFolderName, '[Gmail]/'))
{ {
$oFolder = $this->oImapClient->FolderCurrentInformation(); $oFolder = $this->oImapClient->FolderCurrentInformation();
if ($oFolder && null !== $oFolder->Exists) if ($oFolder && null !== $oFolder->Exists && $oFolder->FolderName === $sFolderName)
{ {
$iCount = (int) $oFolder->Exists; $iSubCount = (int) $oFolder->Exists;
if (0 < $iSubCount && $iSubCount < $iCount)
{
$iCount = $iSubCount;
}
} }
} }
} }
@ -802,9 +805,20 @@ class MailClient
public function FolderInformation($sFolderName, $sPrevUidNext = '', $aUids = array()) public function FolderInformation($sFolderName, $sPrevUidNext = '', $aUids = array())
{ {
$aFlags = array(); $aFlags = array();
if (\is_array($aUids) && 0 < \count($aUids))
$bSelect = false;
if ($this->IsGmail())
{ {
$this->oImapClient->FolderExamine($sFolderName); $this->oImapClient->FolderExamine($sFolderName);
$bSelect = true;
}
if (\is_array($aUids) && 0 < \count($aUids))
{
if (!$bSelect)
{
$this->oImapClient->FolderExamine($sFolderName);
}
$aFetchResponse = $this->oImapClient->Fetch(array( $aFetchResponse = $this->oImapClient->Fetch(array(
\MailSo\Imap\Enumerations\FetchType::INDEX, \MailSo\Imap\Enumerations\FetchType::INDEX,
@ -863,6 +877,17 @@ class MailClient
return self::GenerateHash($sFolderName, $iCount, $iUnseenCount, $sUidNext); return self::GenerateHash($sFolderName, $iCount, $iUnseenCount, $sUidNext);
} }
/**
* @param string $sSearch
* @param bool $bDetectGmail = true
*
* @return string
*/
public function IsGmail()
{
return 'ssl://imap.gmail.com' === \strtolower($this->oImapClient->GetConnectedHost());
}
/** /**
* @param string $sSearch * @param string $sSearch
* @param bool $bDetectGmail = true * @param bool $bDetectGmail = true
@ -871,9 +896,8 @@ class MailClient
*/ */
private function escapeSearchString($sSearch, $bDetectGmail = true) private function escapeSearchString($sSearch, $bDetectGmail = true)
{ {
return ($bDetectGmail && !\MailSo\Base\Utils::IsAscii($sSearch) && return ($bDetectGmail && !\MailSo\Base\Utils::IsAscii($sSearch) && $this->IsGmail())
'ssl://imap.gmail.com' === \strtolower($this->oImapClient->GetConnectedHost())) ? '{'.\strlen($sSearch).'+}'."\r\n".$sSearch : $this->oImapClient->EscapeString($sSearch);
? '{'.\strlen($sSearch).'+}'."\r\n".$sSearch : $this->oImapClient->EscapeString($sSearch);
} }
/** /**

View file

@ -125,6 +125,7 @@
<i class="checkboxCkeckAll" data-bind="css: checkAll() ? (isIncompleteChecked() ? 'icon-checkbox-partial' : 'icon-checkbox-checked') : 'icon-checkbox-unchecked'"></i> <i class="checkboxCkeckAll" data-bind="css: checkAll() ? (isIncompleteChecked() ? 'icon-checkbox-partial' : 'icon-checkbox-checked') : 'icon-checkbox-unchecked'"></i>
</div> </div>
</div> </div>
<div class="line-loading e-strip-animation" data-bind="visible: messageListCompleteLoadingThrottle"></div>
<div class="mainDelimiter toolbarDelimiter"></div> <div class="mainDelimiter toolbarDelimiter"></div>
<div class="b-content" data-bind="nano: true, initDom: dragOverBodyArea"> <div class="b-content" data-bind="nano: true, initDom: dragOverBodyArea">
<div class="content g-scrollbox"> <div class="content g-scrollbox">

View file

@ -637,7 +637,7 @@
border-radius: 8px; border-radius: 8px;
} }
/*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */ /*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */
/* ============================================================================= /* =============================================================================
@ -1142,7 +1142,7 @@ table {
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
} }
@charset "UTF-8"; @charset "UTF-8";
@font-face { @font-face {
@ -1513,7 +1513,7 @@ table {
.icon-resize-out:before { .icon-resize-out:before {
content: "\e06d"; content: "\e06d";
} }
/** initial setup **/ /** initial setup **/
.nano { .nano {
/* /*
@ -1630,7 +1630,7 @@ table {
.nano > .pane2:hover > .slider2, .nano > .pane2.active > .slider2 { .nano > .pane2:hover > .slider2, .nano > .pane2.active > .slider2 {
background-color: rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.4);
} }
/* Magnific Popup CSS */ /* Magnific Popup CSS */
.mfp-bg { .mfp-bg {
top: 0; top: 0;
@ -1995,7 +1995,7 @@ img.mfp-img {
right: 0; right: 0;
padding-top: 0; } padding-top: 0; }
/* overlay at start */ /* overlay at start */
.mfp-fade.mfp-bg { .mfp-fade.mfp-bg {
@ -2041,7 +2041,7 @@ img.mfp-img {
-moz-transform: translateX(50px); -moz-transform: translateX(50px);
transform: translateX(50px); transform: translateX(50px);
} }
.simple-pace { .simple-pace {
-webkit-pointer-events: none; -webkit-pointer-events: none;
pointer-events: none; pointer-events: none;
@ -2112,7 +2112,7 @@ img.mfp-img {
@keyframes simple-pace-stripe-animation { @keyframes simple-pace-stripe-animation {
0% { transform: none; transform: none; } 0% { transform: none; transform: none; }
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); } 100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
} }
.inputosaurus-container { .inputosaurus-container {
background-color:#fff; background-color:#fff;
border:1px solid #bcbec0; border:1px solid #bcbec0;
@ -2180,7 +2180,7 @@ img.mfp-img {
box-shadow:none; box-shadow:none;
} }
.inputosaurus-input-hidden { display:none; } .inputosaurus-input-hidden { display:none; }
.flag-wrapper { .flag-wrapper {
width: 24px; width: 24px;
height: 16px; height: 16px;
@ -2224,7 +2224,7 @@ img.mfp-img {
.flag.flag-pt-br {background-position: -192px -11px} .flag.flag-pt-br {background-position: -192px -11px}
.flag.flag-cn, .flag.flag-zh-tw, .flag.flag-zh-cn, .flag.flag-zh-hk {background-position: -208px -22px} .flag.flag-cn, .flag.flag-zh-tw, .flag.flag-zh-cn, .flag.flag-zh-hk {background-position: -208px -22px}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */ /* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
.clearfix { .clearfix {
*zoom: 1; *zoom: 1;
@ -7644,6 +7644,14 @@ html.rl-no-preview-pane .messageList.message-selected {
.messageList .second-toolbar .checkboxCkeckAll { .messageList .second-toolbar .checkboxCkeckAll {
margin: 5px 0; margin: 5px 0;
} }
.messageList .line-loading {
position: absolute;
left: 0;
right: 0;
z-index: 102;
height: 0px;
top: 50px;
}
.messageList .mainDelimiter { .messageList .mainDelimiter {
position: absolute; position: absolute;
left: 0; left: 0;
@ -8021,6 +8029,9 @@ html.ssm-state-desktop-large .messageList .b-content .messageListItem {
html.ssm-state-desktop-large .messageList .b-content .messageListItem .dateParent { html.ssm-state-desktop-large .messageList .b-content .messageListItem .dateParent {
font-size: 13px; font-size: 13px;
} }
html.cssanimations.rl-anim .messageList .line-loading {
height: 5px !important;
}
.draggablePlace { .draggablePlace {
z-index: 10002; z-index: 10002;
color: #fff; color: #fff;
@ -8382,7 +8393,7 @@ html.rl-no-preview-pane .messageView .b-content .buttonUnFull,
html.rl-no-preview-pane .messageView .b-content .buttonFull { html.rl-no-preview-pane .messageView .b-content .buttonFull {
top: 70px; top: 70px;
} }
html.cssanimations.rl-anim .line-loading { html.cssanimations.rl-anim .messageItem .line-loading {
height: 5px !important; height: 5px !important;
} }
html.rl-message-fullscreen #rl-left, html.rl-message-fullscreen #rl-left,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -13165,6 +13165,12 @@ MailBoxMessageListViewModel.prototype.initShortcuts = function ()
} }
}); });
// check mail
key('ctrl+r, command+r', [Enums.KeyState.FolderList, Enums.KeyState.MessageList, Enums.KeyState.MessageView], function () {
self.reloadCommand();
return false;
});
// check all // check all
key('ctrl+a, command+a', Enums.KeyState.MessageList, function () { key('ctrl+a, command+a', Enums.KeyState.MessageList, function () {
self.checkAll(!(self.checkAll() && !self.isIncompleteChecked())); self.checkAll(!(self.checkAll() && !self.isIncompleteChecked()));

File diff suppressed because one or more lines are too long