mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Small fixes
This commit is contained in:
parent
d3f8fa4308
commit
0e9cffd657
10 changed files with 150 additions and 89 deletions
|
|
@ -819,11 +819,10 @@ class AppUser extends AbstractApp
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sFolderFullNameRaw
|
* @param {string} sFolderFullNameRaw
|
||||||
* @param {string|bool} mUid
|
|
||||||
* @param {number} iSetAction
|
* @param {number} iSetAction
|
||||||
* @param {Array=} messages = null
|
* @param {Array=} messages = null
|
||||||
*/
|
*/
|
||||||
messageListAction(sFolderFullNameRaw, mUid, iSetAction, messages) {
|
messageListAction(sFolderFullNameRaw, iSetAction, messages) {
|
||||||
|
|
||||||
let
|
let
|
||||||
folder = null,
|
folder = null,
|
||||||
|
|
|
||||||
|
|
@ -499,11 +499,13 @@ class RemoteUserAjax extends AbstractAjaxRemote
|
||||||
* @param {?Function} fCallback
|
* @param {?Function} fCallback
|
||||||
* @param {string} sFolderFullNameRaw
|
* @param {string} sFolderFullNameRaw
|
||||||
* @param {boolean} bSetSeen
|
* @param {boolean} bSetSeen
|
||||||
|
* @param {Array} aThreadUids = null
|
||||||
*/
|
*/
|
||||||
messageSetSeenToAll(fCallback, sFolderFullNameRaw, bSetSeen) {
|
messageSetSeenToAll(fCallback, sFolderFullNameRaw, bSetSeen, aThreadUids = null) {
|
||||||
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
|
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
|
||||||
'Folder': sFolderFullNameRaw,
|
'Folder': sFolderFullNameRaw,
|
||||||
'SetAction': bSetSeen ? '1' : '0'
|
'SetAction': bSetSeen ? '1' : '0',
|
||||||
|
'ThreadUids': aThreadUids ? aThreadUids.join(',') : ''
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,8 +149,10 @@ class MessageUserStore
|
||||||
this.messageListCheckedOrSelected = ko.computed(() => {
|
this.messageListCheckedOrSelected = ko.computed(() => {
|
||||||
const
|
const
|
||||||
checked = this.messageListChecked(),
|
checked = this.messageListChecked(),
|
||||||
selectedMessage = this.selectorMessageSelected();
|
selectedMessage = this.selectorMessageSelected(),
|
||||||
return _.union(checked, selectedMessage ? [selectedMessage] : []);
|
focusedMessage = this.selectorMessageFocused();
|
||||||
|
|
||||||
|
return _.union(checked, selectedMessage ? [selectedMessage] : [], focusedMessage ? [focusedMessage] : []);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.messageListCheckedOrSelectedUidsWithSubMails = ko.computed(() => {
|
this.messageListCheckedOrSelectedUidsWithSubMails = ko.computed(() => {
|
||||||
|
|
@ -304,7 +306,7 @@ class MessageUserStore
|
||||||
* @param {string} fromFolderFullNameRaw
|
* @param {string} fromFolderFullNameRaw
|
||||||
* @param {Array} uidForRemove
|
* @param {Array} uidForRemove
|
||||||
* @param {string=} toFolderFullNameRaw = ''
|
* @param {string=} toFolderFullNameRaw = ''
|
||||||
* @param {boolean=} bCocopypy = false
|
* @param {boolean=} copy = false
|
||||||
*/
|
*/
|
||||||
removeMessagesFromList(fromFolderFullNameRaw, uidForRemove, toFolderFullNameRaw = '', copy = false) {
|
removeMessagesFromList(fromFolderFullNameRaw, uidForRemove, toFolderFullNameRaw = '', copy = false) {
|
||||||
|
|
||||||
|
|
@ -485,13 +487,14 @@ class MessageUserStore
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} oMessageTextBody
|
* @param {Object} messageTextBody
|
||||||
|
* @param {Object} message
|
||||||
*/
|
*/
|
||||||
initOpenPgpControls(oMessageTextBody, oMessage) {
|
initOpenPgpControls(messageTextBody, message) {
|
||||||
if (oMessageTextBody && oMessageTextBody.find)
|
if (messageTextBody && messageTextBody.find)
|
||||||
{
|
{
|
||||||
oMessageTextBody.find('.b-plain-openpgp:not(.inited)').each(function() {
|
messageTextBody.find('.b-plain-openpgp:not(.inited)').each(function() {
|
||||||
PgpStore.initMessageBodyControls($(this), oMessage); // eslint-disable-line no-invalid-this
|
PgpStore.initMessageBodyControls($(this), message); // eslint-disable-line no-invalid-this
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -665,7 +668,7 @@ class MessageUserStore
|
||||||
if (message.unseen() || message.hasUnseenSubMessage())
|
if (message.unseen() || message.hasUnseenSubMessage())
|
||||||
{
|
{
|
||||||
getApp().messageListAction(
|
getApp().messageListAction(
|
||||||
message.folderFullNameRaw, message.uid, MessageSetAction.SetSeen, [message]);
|
message.folderFullNameRaw, MessageSetAction.SetSeen, [message]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNew)
|
if (isNew)
|
||||||
|
|
@ -771,7 +774,7 @@ class MessageUserStore
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array} aList
|
* @param {Array} list
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
calculateMessageListHash(list) {
|
calculateMessageListHash(list) {
|
||||||
|
|
|
||||||
|
|
@ -171,27 +171,31 @@ class LoginUserView extends AbstractViewNext
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
windowOpenFeatures(wh) {
|
||||||
|
return `left=200,top=100,width=${wh},height=${wh},menubar=no,status=no,resizable=yes,scrollbars=yes`;
|
||||||
|
}
|
||||||
|
|
||||||
@command((self) => !self.submitRequest() && self.facebookLoginEnabled())
|
@command((self) => !self.submitRequest() && self.facebookLoginEnabled())
|
||||||
facebookCommand() {
|
facebookCommand() {
|
||||||
window.open(socialFacebook(), 'Facebook', 'left=200,top=100,width=500,height=500,menubar=no,status=no,resizable=yes,scrollbars=yes');
|
window.open(socialFacebook(), 'Facebook', this.windowOpenFeatures(500));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@command((self) => !self.submitRequest() && self.googleLoginEnabled())
|
@command((self) => !self.submitRequest() && self.googleLoginEnabled())
|
||||||
googleCommand() {
|
googleCommand() {
|
||||||
window.open(socialGoogle(), 'Google', 'left=200,top=100,width=550,height=550,menubar=no,status=no,resizable=yes,scrollbars=yes');
|
window.open(socialGoogle(), 'Google', this.windowOpenFeatures(550));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@command((self) => !self.submitRequest() && self.googleFastLoginEnabled())
|
@command((self) => !self.submitRequest() && self.googleFastLoginEnabled())
|
||||||
googleFastCommand() {
|
googleFastCommand() {
|
||||||
window.open(socialGoogle(true), 'Google', 'left=200,top=100,width=550,height=550,menubar=no,status=no,resizable=yes,scrollbars=yes');
|
window.open(socialGoogle(true), 'Google', this.windowOpenFeatures(550));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@command((self) => !self.submitRequest() && self.twitterLoginEnabled())
|
@command((self) => !self.submitRequest() && self.twitterLoginEnabled())
|
||||||
twitterCommand() {
|
twitterCommand() {
|
||||||
window.open(socialTwitter(), 'Twitter', 'left=200,top=100,width=500,height=500,menubar=no,status=no,resizable=yes,scrollbars=yes');
|
window.open(socialTwitter(), 'Twitter', this.windowOpenFeatures(500));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -513,23 +513,26 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sFolderFullNameRaw
|
* @param {string} sFolderFullNameRaw
|
||||||
* @param {string|bool} mUid
|
|
||||||
* @param {number} iSetAction
|
* @param {number} iSetAction
|
||||||
* @param {Array=} aMessages = null
|
* @param {Array=} aMessages = null
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
setAction(sFolderFullNameRaw, mUid, iSetAction, aMessages) {
|
setAction(sFolderFullNameRaw, iSetAction, aMessages) {
|
||||||
getApp().messageListAction(sFolderFullNameRaw, mUid, iSetAction, aMessages);
|
getApp().messageListAction(sFolderFullNameRaw, iSetAction, aMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sFolderFullNameRaw
|
* @param {string} sFolderFullNameRaw
|
||||||
* @param {number} iSetAction
|
* @param {number} iSetAction
|
||||||
|
* @param {string} sThreadUid = ''
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
setActionForAll(sFolderFullNameRaw, iSetAction) {
|
setActionForAll(sFolderFullNameRaw, iSetAction, sThreadUid = '') {
|
||||||
if ('' !== sFolderFullNameRaw)
|
if ('' !== sFolderFullNameRaw)
|
||||||
{
|
{
|
||||||
|
let cnt = 0;
|
||||||
|
const uids = [];
|
||||||
|
|
||||||
let folder = getFolderFromCacheList(sFolderFullNameRaw);
|
let folder = getFolderFromCacheList(sFolderFullNameRaw);
|
||||||
if (folder)
|
if (folder)
|
||||||
{
|
{
|
||||||
|
|
@ -540,27 +543,64 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
if (folder)
|
if (folder)
|
||||||
{
|
{
|
||||||
_.each(MessageStore.messageList(), (message) => {
|
_.each(MessageStore.messageList(), (message) => {
|
||||||
|
if (message.unseen())
|
||||||
|
{
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
|
||||||
message.unseen(false);
|
message.unseen(false);
|
||||||
|
uids.push(message.uid);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (sThreadUid)
|
||||||
|
{
|
||||||
|
folder.messageCountUnread(folder.messageCountUnread() - cnt);
|
||||||
|
if (0 > folder.messageCountUnread())
|
||||||
|
{
|
||||||
folder.messageCountUnread(0);
|
folder.messageCountUnread(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
folder.messageCountUnread(0);
|
||||||
|
}
|
||||||
|
|
||||||
clearMessageFlagsFromCacheByFolder(sFolderFullNameRaw);
|
clearMessageFlagsFromCacheByFolder(sFolderFullNameRaw);
|
||||||
}
|
}
|
||||||
|
|
||||||
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, true);
|
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, true, sThreadUid ? uids : null);
|
||||||
break;
|
break;
|
||||||
case MessageSetAction.UnsetSeen:
|
case MessageSetAction.UnsetSeen:
|
||||||
folder = getFolderFromCacheList(sFolderFullNameRaw);
|
folder = getFolderFromCacheList(sFolderFullNameRaw);
|
||||||
if (folder)
|
if (folder)
|
||||||
{
|
{
|
||||||
_.each(MessageStore.messageList(), (message) => {
|
_.each(MessageStore.messageList(), (message) => {
|
||||||
|
if (!message.unseen())
|
||||||
|
{
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
|
||||||
message.unseen(true);
|
message.unseen(true);
|
||||||
|
uids.push(message.uid);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (sThreadUid)
|
||||||
|
{
|
||||||
|
folder.messageCountUnread(folder.messageCountUnread() + cnt);
|
||||||
|
if (folder.messageCountAll() < folder.messageCountUnread())
|
||||||
|
{
|
||||||
folder.messageCountUnread(folder.messageCountAll());
|
folder.messageCountUnread(folder.messageCountAll());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
folder.messageCountUnread(folder.messageCountAll());
|
||||||
|
}
|
||||||
|
|
||||||
clearMessageFlagsFromCacheByFolder(sFolderFullNameRaw);
|
clearMessageFlagsFromCacheByFolder(sFolderFullNameRaw);
|
||||||
}
|
}
|
||||||
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, false);
|
|
||||||
|
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, false, sThreadUid ? uids : null);
|
||||||
break;
|
break;
|
||||||
// no default
|
// no default
|
||||||
}
|
}
|
||||||
|
|
@ -571,26 +611,26 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
}
|
}
|
||||||
|
|
||||||
listSetSeen() {
|
listSetSeen() {
|
||||||
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
|
this.setAction(FolderStore.currentFolderFullNameRaw(),
|
||||||
MessageSetAction.SetSeen, MessageStore.messageListCheckedOrSelected());
|
MessageSetAction.SetSeen, MessageStore.messageListCheckedOrSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
listSetAllSeen() {
|
listSetAllSeen() {
|
||||||
this.setActionForAll(FolderStore.currentFolderFullNameRaw(), MessageSetAction.SetSeen);
|
this.setActionForAll(FolderStore.currentFolderFullNameRaw(), MessageSetAction.SetSeen, this.messageListEndThreadUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
listUnsetSeen() {
|
listUnsetSeen() {
|
||||||
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
|
this.setAction(FolderStore.currentFolderFullNameRaw(),
|
||||||
MessageSetAction.UnsetSeen, MessageStore.messageListCheckedOrSelected());
|
MessageSetAction.UnsetSeen, MessageStore.messageListCheckedOrSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
listSetFlags() {
|
listSetFlags() {
|
||||||
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
|
this.setAction(FolderStore.currentFolderFullNameRaw(),
|
||||||
MessageSetAction.SetFlag, MessageStore.messageListCheckedOrSelected());
|
MessageSetAction.SetFlag, MessageStore.messageListCheckedOrSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
listUnsetFlags() {
|
listUnsetFlags() {
|
||||||
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
|
this.setAction(FolderStore.currentFolderFullNameRaw(),
|
||||||
MessageSetAction.UnsetFlag, MessageStore.messageListCheckedOrSelected());
|
MessageSetAction.UnsetFlag, MessageStore.messageListCheckedOrSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -601,12 +641,12 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
const checkedUids = _.map(checked, (message) => message.uid);
|
const checkedUids = _.map(checked, (message) => message.uid);
|
||||||
if (0 < checkedUids.length && -1 < inArray(currentMessage.uid, checkedUids))
|
if (0 < checkedUids.length && -1 < inArray(currentMessage.uid, checkedUids))
|
||||||
{
|
{
|
||||||
this.setAction(currentMessage.folderFullNameRaw, true, currentMessage.flagged() ?
|
this.setAction(currentMessage.folderFullNameRaw, currentMessage.flagged() ?
|
||||||
MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
|
MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.setAction(currentMessage.folderFullNameRaw, true, currentMessage.flagged() ?
|
this.setAction(currentMessage.folderFullNameRaw, currentMessage.flagged() ?
|
||||||
MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [currentMessage]);
|
MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [currentMessage]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -619,12 +659,12 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
if (isUnd(bFlag))
|
if (isUnd(bFlag))
|
||||||
{
|
{
|
||||||
const flagged = _.filter(checked, (message) => message.flagged());
|
const flagged = _.filter(checked, (message) => message.flagged());
|
||||||
this.setAction(checked[0].folderFullNameRaw, true,
|
this.setAction(checked[0].folderFullNameRaw,
|
||||||
checked.length === flagged.length ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
|
checked.length === flagged.length ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.setAction(checked[0].folderFullNameRaw, true,
|
this.setAction(checked[0].folderFullNameRaw,
|
||||||
!bFlag ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
|
!bFlag ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -637,12 +677,12 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
if (isUnd(seen))
|
if (isUnd(seen))
|
||||||
{
|
{
|
||||||
const unseen = _.filter(checked, (message) => message.unseen());
|
const unseen = _.filter(checked, (message) => message.unseen());
|
||||||
this.setAction(checked[0].folderFullNameRaw, true,
|
this.setAction(checked[0].folderFullNameRaw,
|
||||||
0 < unseen.length ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen, checked);
|
0 < unseen.length ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen, checked);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.setAction(checked[0].folderFullNameRaw, true,
|
this.setAction(checked[0].folderFullNameRaw,
|
||||||
seen ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen, checked);
|
seen ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen, checked);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -676,7 +716,7 @@ class MessageListMailBoxUserView extends AbstractViewNext
|
||||||
|
|
||||||
clearListIsVisible() {
|
clearListIsVisible() {
|
||||||
return '' === this.messageListSearchDesc() && '' === this.messageListError() &&
|
return '' === this.messageListSearchDesc() && '' === this.messageListError() &&
|
||||||
'' === MessageStore.messageListEndThreadUid() &&
|
'' === this.messageListEndThreadUid() &&
|
||||||
0 < this.messageList().length && (this.isSpamFolder() || this.isTrashFolder());
|
0 < this.messageList().length && (this.isSpamFolder() || this.isTrashFolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -687,7 +687,7 @@ class MessageViewMailBoxUserView extends AbstractViewNext
|
||||||
const message = self.message();
|
const message = self.message();
|
||||||
if (message)
|
if (message)
|
||||||
{
|
{
|
||||||
getApp().messageListAction(message.folderFullNameRaw, message.uid,
|
getApp().messageListAction(message.folderFullNameRaw,
|
||||||
message.flagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [message]);
|
message.flagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [message]);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -695,8 +695,7 @@ class MessageViewMailBoxUserView extends AbstractViewNext
|
||||||
const message = ko.dataFor(this); // eslint-disable-line no-invalid-this
|
const message = ko.dataFor(this); // eslint-disable-line no-invalid-this
|
||||||
if (message && message.folder && message.uid)
|
if (message && message.folder && message.uid)
|
||||||
{
|
{
|
||||||
getApp().messageListAction(
|
getApp().messageListAction(message.folder,
|
||||||
message.folder, message.uid,
|
|
||||||
message.flagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [message]);
|
message.flagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [message]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -225,13 +225,14 @@ class MailClient
|
||||||
* @param string $sMessageFlag
|
* @param string $sMessageFlag
|
||||||
* @param bool $bSetAction = true
|
* @param bool $bSetAction = true
|
||||||
* @param bool $sSkipUnsupportedFlag = false
|
* @param bool $sSkipUnsupportedFlag = false
|
||||||
|
* @param array $aCustomUids = null
|
||||||
*
|
*
|
||||||
* @throws \MailSo\Base\Exceptions\InvalidArgumentException
|
* @throws \MailSo\Base\Exceptions\InvalidArgumentException
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
* @throws \MailSo\Mail\Exceptions\Exception
|
* @throws \MailSo\Mail\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageSetFlagToAll($sFolderName, $sMessageFlag, $bSetAction = true, $sSkipUnsupportedFlag = false)
|
public function MessageSetFlagToAll($sFolderName, $sMessageFlag, $bSetAction = true, $sSkipUnsupportedFlag = false, $aCustomUids = null)
|
||||||
{
|
{
|
||||||
$this->oImapClient->FolderSelect($sFolderName);
|
$this->oImapClient->FolderSelect($sFolderName);
|
||||||
|
|
||||||
|
|
@ -251,9 +252,19 @@ class MailClient
|
||||||
: \MailSo\Imap\Enumerations\StoreAction::REMOVE_FLAGS_SILENT
|
: \MailSo\Imap\Enumerations\StoreAction::REMOVE_FLAGS_SILENT
|
||||||
;
|
;
|
||||||
|
|
||||||
|
if (is_array($aCustomUids))
|
||||||
|
{
|
||||||
|
if (0 < count($aCustomUids))
|
||||||
|
{
|
||||||
|
$this->oImapClient->MessageStoreFlag(implode(',', $aCustomUids), true, array($sMessageFlag), $sStoreAction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$this->oImapClient->MessageStoreFlag('1:*', false, array($sMessageFlag), $sStoreAction);
|
$this->oImapClient->MessageStoreFlag('1:*', false, array($sMessageFlag), $sStoreAction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $sFolderName
|
* @param string $sFolderName
|
||||||
|
|
@ -312,14 +323,15 @@ class MailClient
|
||||||
/**
|
/**
|
||||||
* @param string $sFolderName
|
* @param string $sFolderName
|
||||||
* @param bool $bSetAction = true
|
* @param bool $bSetAction = true
|
||||||
|
* @param array $aCustomUids = null
|
||||||
*
|
*
|
||||||
* @throws \MailSo\Base\Exceptions\InvalidArgumentException
|
* @throws \MailSo\Base\Exceptions\InvalidArgumentException
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageSetSeenToAll($sFolderName, $bSetAction = true)
|
public function MessageSetSeenToAll($sFolderName, $bSetAction = true, $aCustomUids = null)
|
||||||
{
|
{
|
||||||
$this->MessageSetFlagToAll($sFolderName, \MailSo\Imap\Enumerations\MessageFlag::SEEN, $bSetAction, true);
|
$this->MessageSetFlagToAll($sFolderName, \MailSo\Imap\Enumerations\MessageFlag::SEEN, $bSetAction, true, $aCustomUids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -7211,10 +7211,12 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
|
|
||||||
$sFolder = $this->GetActionParam('Folder', '');
|
$sFolder = $this->GetActionParam('Folder', '');
|
||||||
$bSetAction = '1' === (string) $this->GetActionParam('SetAction', '0');
|
$bSetAction = '1' === (string) $this->GetActionParam('SetAction', '0');
|
||||||
|
$sThreadUids = \trim($this->GetActionParam('ThreadUids', ''));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageSetSeenToAll($sFolder, $bSetAction);
|
$this->MailClient()->MessageSetSeenToAll($sFolder, $bSetAction,
|
||||||
|
!empty($sThreadUids) ? explode(',', $sThreadUids) : null);
|
||||||
}
|
}
|
||||||
catch (\Exception $oException)
|
catch (\Exception $oException)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
<label class="i18n control-label" data-i18n="LOGIN/LABEL_EMAIL"></label>
|
<label class="i18n control-label" data-i18n="LOGIN/LABEL_EMAIL"></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<label style="margin-top: 5px;" data-bind="visible: !isNew()"><strong data-bind="text: email"></strong></label>
|
<label style="margin-top: 5px;" data-bind="visible: !isNew()"><strong data-bind="text: email"></strong></label>
|
||||||
<input type="email" class="inputEmail input-large" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
<input type="email" class="inputEmail input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand, hasfocus: emailFocus" />
|
data-bind="visible: isNew, textInput: email, onEnter: addAccountCommand, hasfocus: emailFocus" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,10 @@
|
||||||
'SPL' => function_exists('spl_autoload_register')
|
'SPL' => function_exists('spl_autoload_register')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (version_compare(PHP_VERSION, '5.3.0', '<'))
|
if (version_compare(PHP_VERSION, '5.4.0', '<'))
|
||||||
{
|
{
|
||||||
echo '<p style="color: red">';
|
echo '<p style="color: red">';
|
||||||
echo '[301] Your PHP version ('.PHP_VERSION.') is lower than the minimal required 5.3.0!';
|
echo '[301] Your PHP version ('.PHP_VERSION.') is lower than the minimal required 5.4.0!';
|
||||||
echo '</p>';
|
echo '</p>';
|
||||||
exit(301);
|
exit(301);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue