From e189f7bc43e06727472ea856ee20cf4e49f1a78c Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Fri, 12 Jun 2009 12:43:33 -0600 Subject: [PATCH] Allow on-demand filter application (if filter backend supports) in DIMP. --- imp/ajax.php | 1 + imp/docs/CHANGES | 1 + imp/js/src/DimpBase.js | 18 ++++++++++++++++++ imp/lib/Views/ListMessages.php | 7 ++++--- imp/templates/index/index-dimp.inc | 3 +++ imp/templates/javascript_defs_dimp.php | 1 + 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/imp/ajax.php b/imp/ajax.php index a68eb620f..4d2cd5054 100644 --- a/imp/ajax.php +++ b/imp/ajax.php @@ -67,6 +67,7 @@ function _changed($mbox, $compare, $rw = null) function _getListMessages($mbox, $change) { $args = array( + 'applyfilter' => Horde_Util::getPost('applyfilter'), 'cached' => Horde_Util::getPost('cached'), 'cacheid' => Horde_Util::getPost('cacheid'), 'mbox' => $mbox, diff --git a/imp/docs/CHANGES b/imp/docs/CHANGES index 552cfe8e3..9bb8565fc 100644 --- a/imp/docs/CHANGES +++ b/imp/docs/CHANGES @@ -2,6 +2,7 @@ v5.0-git -------- +[mms] Allow on-demand filter application (if filter backend supports) in DIMP. [mms] Add full IMAP subscription support to DIMP. [mms] Add message information to preview screen (DIMP). [mms] Add Alt + PGUP/PGDN shortcut to scroll through preview message (DIMP). diff --git a/imp/js/src/DimpBase.js b/imp/js/src/DimpBase.js index bef77ebd0..a2c7f0bb6 100644 --- a/imp/js/src/DimpBase.js +++ b/imp/js/src/DimpBase.js @@ -547,6 +547,17 @@ var DimpBase = { if (this.folderswitch) { this.folderswitch = false; + tmp = $('applyfilterlink'); + if (tmp) { + if (this.isSearch() || + (!DIMP.conf.filter_any && + this.folder.toUpperCase() != 'INBOX')) { + tmp.hide(); + } else { + tmp.show(); + } + } + if (this.folder == DIMP.conf.spam_mbox) { if (!DIMP.conf.spam_spammbox && $('button_spam')) { [ $('button_spam').up(), $('ctx_message_spam') ].invoke('hide'); @@ -1555,6 +1566,13 @@ var DimpBase = { e.stop(); return; + case 'applyfilterlink': + if (this.viewport) { + this.viewport.reload({ applyfilter: 1 }); + } + e.stop(); + return; + case 'appportal': case 'appoptions': this.go(id.substring(3)); diff --git a/imp/lib/Views/ListMessages.php b/imp/lib/Views/ListMessages.php index 525438466..beb363dfa 100644 --- a/imp/lib/Views/ListMessages.php +++ b/imp/lib/Views/ListMessages.php @@ -15,7 +15,7 @@ class IMP_Views_ListMessages /** * Returns a list of messages for use with ViewPort. * - * @var array $args TODO + * @var array $args TODO (applyfilter) * * @return array TODO */ @@ -45,8 +45,9 @@ class IMP_Views_ListMessages /* Run filters now. */ if (!empty($_SESSION['imp']['filteravail']) && - ($mbox == 'INBOX') && - $GLOBALS['prefs']->getValue('filter_on_display')) { + !empty($args['applyfilter']) || + (($mbox == 'INBOX') && + $GLOBALS['prefs']->getValue('filter_on_display'))) { $imp_filter = new IMP_Filter(); $imp_filter->filter($mbox); } diff --git a/imp/templates/index/index-dimp.inc b/imp/templates/index/index-dimp.inc index a50a7ec85..946ab7155 100644 --- a/imp/templates/index/index-dimp.inc +++ b/imp/templates/index/index-dimp.inc @@ -64,6 +64,9 @@ function _simpleButton($id, $text, $image, $imagedir = null) + + +