Remember search modifiers in user prefs (#1486146) + bring back the old defaults
| | |
| | | CHANGELOG RoundCube Webmail |
| | | =========================== |
| | | |
| | | - Remember search modifiers in user prefs (#1486146) |
| | | - Added force_7bit option to force MIME encoding of plain/text messages (#1486510) |
| | | - Use case sensitive check when checking for default folders (#1486346) |
| | | - Fix checking for new mail: now checks unseen count of inbox (#1485794) |
| | |
| | | if (this.message_list) { |
| | | this.message_list.clear(); |
| | | if (this.env.search_mods) { |
| | | var mods = this.env.search_mods[this.env.mailbox] ? this.env.search_mods[this.env.mailbox] : this.env.search_mods['*']; |
| | | if (mods) { |
| | | var head_arr = new Array(); |
| | | for (var n in this.env.search_mods) |
| | | for (var n in mods) |
| | | head_arr.push(n); |
| | | addurl += '&_headers='+head_arr.join(','); |
| | | } |
| | | } |
| | | } else if (this.contact_list) { |
| | | this.contact_list.clear(true); |
| | | this.show_contentframe(false); |
| | |
| | | return -1; |
| | | } |
| | | |
| | | // recursively copy an object |
| | | function rcube_clone_object(obj) |
| | | { |
| | | var out = {}; |
| | | |
| | | for (var key in obj) { |
| | | if (obj[key] && typeof obj[key] == 'object') |
| | | out[key] = clone_object(obj[key]); |
| | | else |
| | | out[key] = obj[key]; |
| | | } |
| | | |
| | | return out; |
| | | } |
| | | |
| | | // make a string URL safe |
| | | function urlencode(str) |
| | |
| | | |
| | | */ |
| | | |
| | | // setup some global vars used by mail steps |
| | | $SENT_MBOX = $RCMAIL->config->get('sent_mbox'); |
| | | $DRAFTS_MBOX = $RCMAIL->config->get('drafts_mbox'); |
| | | $SEARCH_MODS_DEFAULT = array('*' => array('subject'=>1, 'from'=>1), $SENT_MBOX => array('subject'=>1, 'to'=>1), $DRAFTS_MBOX => array('subject'=>1, 'to'=>1)); |
| | | |
| | | $EMAIL_ADDRESS_PATTERN = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9][a-z0-9\-\.]*\\.[a-z]{2,5})'; |
| | | |
| | | // actions that do not require imap connection |
| | |
| | | $OUTPUT->set_env('search_request', $search_request); |
| | | } |
| | | |
| | | $OUTPUT->set_env('search_mods', $_SESSION['search_mods'] ? $_SESSION['search_mods'] : array('subject'=>'subject')); |
| | | $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT); |
| | | $OUTPUT->set_env('search_mods', $search_mods); |
| | | |
| | | // make sure the message count is refreshed (for default view) |
| | | $IMAP->messagecount($mbox_name, 'ALL', true); |
| | | } |
| | |
| | | else if(trim($str)) |
| | | { |
| | | if ($headers) { |
| | | $headers = explode(',', $headers); |
| | | foreach($headers as $header) |
| | | foreach(explode(',', $headers) as $header) |
| | | switch ($header) { |
| | | case 'text': $subject['text'] = 'TEXT'; break; |
| | | default: $subject[$header] = 'HEADER '.$header; |
| | | default: $subject[$header] = 'HEADER '.strtoupper($header); |
| | | } |
| | | |
| | | // save search modifiers for the current folder to user prefs |
| | | $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT); |
| | | $search_mods[$mbox] = array_fill_keys(array_keys($subject), 1); |
| | | $RCMAIL->user->save_prefs(array('search_mods' => $search_mods)); |
| | | console($search_mods); |
| | | } else { |
| | | // search in subject by default |
| | | $subject['subject'] = 'HEADER SUBJECT'; |
| | |
| | | $search_str .= str_repeat(' OR', count($subject)-1); |
| | | foreach ($subject as $sub) |
| | | $search_str .= sprintf(" %s {%d}\r\n%s", $sub, strlen($search), $search); |
| | | $_SESSION['search_mods'] = $subject; |
| | | } |
| | | |
| | | $search_str = trim($search_str); |
| | |
| | | if (show && ref) { |
| | | var pos = $(ref).offset(); |
| | | this.searchmenu.css({ left:pos.left, top:(pos.top + ref.offsetHeight + 2)}); |
| | | this.searchmenu.find(":checked").attr('checked', false); |
| | | |
| | | if (rcmail.env.search_mods) { |
| | | for (var n in rcmail.env.search_mods) { |
| | | box = rcube_find_object('s_mod_' + n); |
| | | box.checked = 'checked'; |
| | | } |
| | | var search_mods = rcmail.env.search_mods[rcmail.env.mailbox] ? rcmail.env.search_mods[rcmail.env.mailbox] : rcmail.env.search_mods['*']; |
| | | for (var n in search_mods) |
| | | $('#s_mod_' + n).attr('checked', true); |
| | | } |
| | | } |
| | | this.searchmenu[show?'show':'hide'](); |
| | |
| | | if (!rcmail.env.search_mods) |
| | | rcmail.env.search_mods = new Object(); |
| | | |
| | | if (!rcmail.env.search_mods[rcmail.env.mailbox]) |
| | | rcmail.env.search_mods[rcmail.env.mailbox] = rcube_clone_object(rcmail.env.search_mods['*']); |
| | | |
| | | if (!elem.checked) |
| | | delete(rcmail.env.search_mods[elem.value]); |
| | | delete(rcmail.env.search_mods[rcmail.env.mailbox][elem.value]); |
| | | else |
| | | rcmail.env.search_mods[elem.value] = elem.value; |
| | | rcmail.env.search_mods[rcmail.env.mailbox][elem.value] = elem.value; |
| | | }, |
| | | |
| | | body_mouseup: function(evt, p) |