diff --git a/mail/js/app.js b/mail/js/app.js index f25b73053a..528b924c4e 100644 --- a/mail/js/app.js +++ b/mail/js/app.js @@ -1943,6 +1943,9 @@ app.classes.mail = AppJS.extend( // Update cache & call callbacks - updates list dataElem.data.class = classes.join(' '); egw.dataStoreUID(msg.msg[i],dataElem.data); + + //Refresh the nm rows after we told dataComponent about all changes, since the dataComponent doesn't talk to nm, we need to do it manually + this.updateFilter_data(msg.msg[i], _action.id, msg.activeFilters); } // Notify server of changes @@ -1971,6 +1974,54 @@ app.classes.mail = AppJS.extend( //this.mail_refreshFolderStatus(); }, + /** + * Update changes on filtered mail rows in nm, triggers manual refresh + * + * @param {type} _uid mail uid + * @param {type} _actionId action id sended by nm action + * @param {type} _filters activefilters + */ + updateFilter_data: function (_uid, _actionId, _filters) + { + var uid = _uid.replace('mail::',''); + var action = ''; + switch (_actionId) + { + case 'flagged': + action = 'flagged'; + break; + case 'read': + if (_filters.filter == 'seen') + { + action = 'seen'; + } + else if (_filters.filter == 'unseen') + { + action = 'unseen'; + } + break; + case 'label1': + action = 'keyword1'; + break; + case 'label2': + action = 'keyword2'; + break; + case 'label3': + action = 'keyword3'; + break; + case 'label4': + action = 'keyword4'; + break; + case 'label4': + action = 'keyword4'; + break; + } + if (action == _filters.filter) + { + egw.refresh('','mail',uid, 'delete'); + } + }, + /** * Flag mail as 'read', 'unread', 'flagged' or 'unflagged' * @@ -2648,6 +2699,14 @@ app.classes.mail = AppJS.extend( // Update class dataElem.data.class += ' ' + _class; + // need to update flags too + switch(_class) + { + case 'unseen': + delete dataElem.data.flags.read; + break; + } + // Update record, which updates all listeners (including nextmatch) egw.dataStoreUID(mail_uid,dataElem.data); } @@ -2698,6 +2757,14 @@ app.classes.mail = AppJS.extend( classes.splice(classes.indexOf(_class),1); dataElem.data.class = classes.join(' '); + // need to update flags too + switch(_class) + { + case 'unseen': + dataElem.data.flags.read = true; + break; + } + // Update record, which updates all listeners (including nextmatch) egw.dataStoreUID(mail_uid,dataElem.data); }