summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2008-06-11 19:26:08 +0000
committeralecpl <alec@alec.pl>2008-06-11 19:26:08 +0000
commitd87fc29fee9e629fad49d956a449ae647c0bc142 (patch)
tree89e1736a554e2b9e38899f979de029d8bbb26741
parent287227502a35aa895c6ec218f3ead6b8bbf27926 (diff)
- don't call expunge and don't remove message row after message move
if flag_for_deletion is set to true (#1485002)
-rw-r--r--CHANGELOG5
-rw-r--r--program/include/rcube_imap.php10
-rw-r--r--program/js/app.js25
3 files changed, 32 insertions, 8 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 63bf46cc1..caa676012 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,11 @@
CHANGELOG RoundCube Webmail
---------------------------
+2008/06/11 (alec)
+----------
+- Don't call expunge and don't remove message row after message move
+ if flag_for_deletion is set to true (#1485002)
+
2008/06/08 (alec)
----------
- Added option to disable autocompletion from selected LDAP address books (#1484922)
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 9d8f6d314..7f3fd9a1b 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1419,9 +1419,13 @@ class rcube_imap
// send expunge command in order to have the moved message
// really deleted from the source mailbox
if ($moved) {
- $this->_expunge($from_mbox, FALSE);
- $this->_clear_messagecount($from_mbox);
- $this->_clear_messagecount($to_mbox);
+ // but only when flag_for_deletion is set to false
+ if (!rcmail::get_instance()->config->get('flag_for_deletion', false))
+ {
+ $this->_expunge($from_mbox, FALSE);
+ $this->_clear_messagecount($from_mbox);
+ $this->_clear_messagecount($to_mbox);
+ }
}
// moving failed
else if (rcmail::get_instance()->config->get('delete_always', false)) {
diff --git a/program/js/app.js b/program/js/app.js
index 71545e892..96c9ec39d 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1397,13 +1397,13 @@ function rcube_webmail()
lock = true;
this.set_busy(true, 'movingmessage');
}
- else
+ else if (!this.env.flag_for_deletion)
this.show_contentframe(false);
// Hide message command buttons until a message is selected
this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', false);
- this._with_selected_messages('moveto', lock, add_url);
+ this._with_selected_messages('moveto', lock, add_url, (this.env.flag_for_deletion ? false : true));
};
// delete selected messages from the current mailbox
@@ -1453,12 +1453,12 @@ function rcube_webmail()
return;
this.show_contentframe(false);
- this._with_selected_messages('delete', false, '&_from='+(this.env.action ? this.env.action : ''));
+ this._with_selected_messages('delete', false, '&_from='+(this.env.action ? this.env.action : ''), true);
};
// Send a specifc request with UIDs of all selected messages
// @private
- this._with_selected_messages = function(action, lock, add_url)
+ this._with_selected_messages = function(action, lock, add_url, remove)
{
var a_uids = new Array();
@@ -1467,13 +1467,28 @@ function rcube_webmail()
else
{
var selection = this.message_list.get_selection();
+ var rows = this.message_list.rows;
var id;
for (var n=0; n<selection.length; n++)
{
id = selection[n];
a_uids[a_uids.length] = id;
- this.message_list.remove_row(id, (n == selection.length-1));
+ if (remove)
+ this.message_list.remove_row(id, (n == selection.length-1));
+ else
+ {
+ rows[id].deleted = true;
+
+ if (rows[id].classname.indexOf('deleted')<0)
+ {
+ rows[id].classname += ' deleted';
+ this.set_classname(rows[id].obj, 'deleted', true);
+ }
+
+ if (rows[id].icon && this.env.deletedicon)
+ rows[id].icon.src = this.env.deletedicon;
+ }
}
}