| 1 | diff -NaurbwB base-trunk-no-svn/roundcubemail/program/js/app.js trunk-tmp/roundcubemail/program/js/app.js |
|---|
| 2 | --- base-trunk-no-svn/roundcubemail/program/js/app.js 2008-01-28 17:39:29.926197912 +0100 |
|---|
| 3 | +++ trunk-tmp/roundcubemail/program/js/app.js 2008-01-29 20:15:08.120381079 +0100 |
|---|
| 4 | @@ -150,6 +150,11 @@ |
|---|
| 5 | // enable mail commands |
|---|
| 6 | this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', true); |
|---|
| 7 | |
|---|
| 8 | + if (this.env.search_text != null && document.getElementById('quicksearchbox') != null) |
|---|
| 9 | + { |
|---|
| 10 | + document.getElementById('quicksearchbox').value = this.env.search_text; |
|---|
| 11 | + } |
|---|
| 12 | + |
|---|
| 13 | if (this.env.action=='show' || this.env.action=='preview') |
|---|
| 14 | { |
|---|
| 15 | this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'viewsource', 'print', 'load-attachment', true); |
|---|
| 16 | @@ -497,7 +503,7 @@ |
|---|
| 17 | case 'list': |
|---|
| 18 | if (this.task=='mail') |
|---|
| 19 | { |
|---|
| 20 | - if (this.env.search_request<0 || (this.env.search_request && props != this.env.mailbox)) |
|---|
| 21 | + if (this.env.search_request<0 || ( props != '' && (this.env.search_request && props != this.env.mailbox))) |
|---|
| 22 | this.reset_qsearch(); |
|---|
| 23 | |
|---|
| 24 | this.list_mailbox(props); |
|---|
| 25 | @@ -1199,6 +1205,10 @@ |
|---|
| 26 | if (safe) |
|---|
| 27 | add_url = '&_safe=1'; |
|---|
| 28 | |
|---|
| 29 | + // also send search request to get the right messages |
|---|
| 30 | + if (this.env.search_request) |
|---|
| 31 | + add_url += '&_search='+this.env.search_request; |
|---|
| 32 | + |
|---|
| 33 | if (id) |
|---|
| 34 | { |
|---|
| 35 | var url = '&_action='+action+'&_uid='+id+'&_mbox='+urlencode(this.env.mailbox)+add_url; |
|---|
| 36 | diff -NaurbwB base-trunk-no-svn/roundcubemail/program/steps/mail/func.inc trunk-tmp/roundcubemail/program/steps/mail/func.inc |
|---|
| 37 | --- base-trunk-no-svn/roundcubemail/program/steps/mail/func.inc 2008-01-28 17:39:30.319530170 +0100 |
|---|
| 38 | +++ trunk-tmp/roundcubemail/program/steps/mail/func.inc 2008-01-29 20:15:08.993713617 +0100 |
|---|
| 39 | @@ -48,7 +48,12 @@ |
|---|
| 40 | |
|---|
| 41 | // set message set for search result |
|---|
| 42 | if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) |
|---|
| 43 | + { |
|---|
| 44 | $IMAP->set_search_set($_SESSION['search'][$_REQUEST['_search']]); |
|---|
| 45 | + // set message set for search result |
|---|
| 46 | + $OUTPUT->set_env('search_request', $_REQUEST['_search']); |
|---|
| 47 | + $OUTPUT->set_env('search_text', $_SESSION['last_text_search']); |
|---|
| 48 | + } |
|---|
| 49 | |
|---|
| 50 | |
|---|
| 51 | // define url for getting message parts |
|---|
| 52 | diff -NaurbwB base-trunk-no-svn/roundcubemail/program/steps/mail/search.inc trunk-tmp/roundcubemail/program/steps/mail/search.inc |
|---|
| 53 | --- base-trunk-no-svn/roundcubemail/program/steps/mail/search.inc 2008-01-28 17:39:30.332897781 +0100 |
|---|
| 54 | +++ trunk-tmp/roundcubemail/program/steps/mail/search.inc 2008-01-29 20:15:08.993713617 +0100 |
|---|
| 55 | @@ -89,6 +89,7 @@ |
|---|
| 56 | if ($result_h != NULL) |
|---|
| 57 | { |
|---|
| 58 | $_SESSION['search'][$search_request] = $IMAP->get_search_set(); |
|---|
| 59 | + $_SESSION['last_text_search'] = $str; |
|---|
| 60 | rcmail_js_message_list($result_h); |
|---|
| 61 | $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count)); |
|---|
| 62 | } |
|---|
| 63 | diff -NaurbwB base-trunk-no-svn/roundcubemail/program/steps/mail/show.inc trunk-tmp/roundcubemail/program/steps/mail/show.inc |
|---|
| 64 | --- base-trunk-no-svn/roundcubemail/program/steps/mail/show.inc 2008-01-28 17:39:30.312862946 +0100 |
|---|
| 65 | +++ trunk-tmp/roundcubemail/program/steps/mail/show.inc 2008-01-29 20:15:08.993713617 +0100 |
|---|
| 66 | @@ -80,10 +82,17 @@ |
|---|
| 67 | $OUTPUT->set_env('mdn_request', true); |
|---|
| 68 | } |
|---|
| 69 | |
|---|
| 70 | - $next = $prev = -1; |
|---|
| 71 | + // set message set for search result |
|---|
| 72 | + if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) |
|---|
| 73 | + { |
|---|
| 74 | + $IMAP->set_search_set($_SESSION['search'][$_REQUEST['_search']]); |
|---|
| 75 | + $OUTPUT->set_env('search_request', $_REQUEST['_search']); |
|---|
| 76 | + } |
|---|
| 77 | + |
|---|
| 78 | + $next = $prev = $first = $last = -1; |
|---|
| 79 | // get previous, first, next and last message UID |
|---|
| 80 | - if (!($_SESSION['sort_col'] == 'date' && $_SESSION['sort_order'] == 'DESC') && |
|---|
| 81 | - $IMAP->get_capability('sort')) |
|---|
| 82 | + if ((!($_SESSION['sort_col'] == 'date' && $_SESSION['sort_order'] == 'DESC') && |
|---|
| 83 | + $IMAP->get_capability('sort') ) && !(!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) ) |
|---|
| 84 | { |
|---|
| 85 | // Only if we use custom sorting |
|---|
| 86 | $a_msg_index = $IMAP->message_index(NULL, $_SESSION['sort_col'], $_SESSION['sort_order']); |
|---|
| 87 | @@ -94,6 +104,31 @@ |
|---|
| 88 | $next = isset($a_msg_index[$MESSAGE['index']+1]) ? $a_msg_index[$MESSAGE['index']+1] : -1 ; |
|---|
| 89 | $last = count($a_msg_index)>0 ? $a_msg_index[count($a_msg_index)-1] : -1; |
|---|
| 90 | } |
|---|
| 91 | + elseif (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) |
|---|
| 92 | + { |
|---|
| 93 | + $search_data = $_SESSION['search'][$_REQUEST['_search']]; |
|---|
| 94 | + |
|---|
| 95 | + $result = $IMAP->search(NULL, $search_data[0], $search_data[1],$search_data[3]); |
|---|
| 96 | + |
|---|
| 97 | + $result = array_reverse($result); |
|---|
| 98 | + |
|---|
| 99 | + foreach ($result as $key=>$rid) |
|---|
| 100 | + { |
|---|
| 101 | + $result[$key] = $IMAP->get_uid($rid); |
|---|
| 102 | + |
|---|
| 103 | + if ($MESSAGE['UID'] == $result[$key]) |
|---|
| 104 | + $seq = $key; |
|---|
| 105 | + |
|---|
| 106 | + } |
|---|
| 107 | + |
|---|
| 108 | + $prev = isset($result[$seq-1]) ? $result[$seq-1] : -1 ; |
|---|
| 109 | + $first = count($result)>0 ? $result[0] : -1; |
|---|
| 110 | + $next = isset($result[$seq+1]) ? $result[$seq+1] : -1 ; |
|---|
| 111 | + $last = count($result)>0 ? $result[count($result)-1] : -1; |
|---|
| 112 | + |
|---|
| 113 | + $MESSAGE['index'] = $seq; |
|---|
| 114 | + |
|---|
| 115 | + } |
|---|
| 116 | else |
|---|
| 117 | { |
|---|
| 118 | // this assumes that we are sorted by date_DESC |
|---|