- Added quick search box menu (#1484304)

release-0.6
alecpl 15 years ago
parent 4e65a3c145
commit 30b152b194

@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Added quick search box menu (#1484304)
- Fix wrong column sort order icons (#1485823)
- Updated TinyMCE to 3.2.3 version
- Fix attachment names encoding when charset isn't specified in attachment part (#1484969)

@ -2392,19 +2392,26 @@ function rcube_webmail()
};
// send remote request to search mail or contacts
this.qsearch = function(value, addurl)
this.qsearch = function(value)
{
if (value != '')
{
if (this.message_list)
var addurl = '';
if (this.message_list) {
this.message_list.clear();
else if (this.contact_list) {
if (this.env.search_mods) {
var head_arr = new Array();
for (var n in this.env.search_mods)
head_arr.push(n);
addurl += '&_headers='+head_arr.join(',');
}
} else if (this.contact_list) {
this.contact_list.clear(true);
this.show_contentframe(false);
}
if (this.gui_objects.search_filter)
addurl = '&_filter=' + this.gui_objects.search_filter.value;
addurl += '&_filter=' + this.gui_objects.search_filter.value;
// reset vars
this.env.current_page = 1;

@ -131,6 +131,8 @@ $labels['unknown'] = 'unknown';
$labels['unlimited'] = 'unlimited';
$labels['quicksearch'] = 'Quick search';
$labels['resetsearch'] = 'Reset search';
$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Entire message';
$labels['openinextwin'] = 'Open in new window';
$labels['compose'] = 'Compose a message';
$labels['savemessage'] = 'Save this draft';

@ -161,6 +161,8 @@ $labels['unlimited'] = 'unlimited';
$labels['quicksearch'] = 'Quick search';
$labels['resetsearch'] = 'Reset search';
$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Entire message';
$labels['openinextwin'] = 'Open in new window';

@ -142,6 +142,8 @@ $labels['unknown'] = 'nieznane';
$labels['unlimited'] = 'bez limitu';
$labels['quicksearch'] = 'Szybkie wyszukiwanie';
$labels['resetsearch'] = 'Wyczyść filtr';
$labels['searchmod'] = 'Parametry wyszukiwania';
$labels['msgtext'] = 'Cała wiadomość';
$labels['openinextwin'] = 'Otwórz w nowym oknie';
$labels['compose'] = 'Utwórz wiadomość';
$labels['savemessage'] = 'Zapisz kopię roboczą';

@ -79,6 +79,7 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list')
$OUTPUT->set_env('search_request', $search_request);
}
$OUTPUT->set_env('search_mods', $_SESSION['search_mods'] ? $_SESSION['search_mods'] : array('subject'=>'subject'));
// make sure the message count is refreshed (for default view)
$IMAP->messagecount($mbox_name, 'ALL', true);
}

@ -28,6 +28,7 @@ $imap_charset = 'UTF-8';
$str = get_input_value('_q', RCUBE_INPUT_GET);
$filter = get_input_value('_filter', RCUBE_INPUT_GET);
$mbox = get_input_value('_mbox', RCUBE_INPUT_GET);
$headers = get_input_value('_headers', RCUBE_INPUT_GET);
$search_request = md5($mbox.$filter.$str);
// add list filter string
@ -39,47 +40,55 @@ $_SESSION['search_filter'] = $filter;
if (preg_match("/^from:.*/i", $str))
{
list(,$srch) = explode(":", $str);
$subject = "HEADER FROM";
$search = trim($srch);
$subject['from'] = "HEADER FROM";
}
else if (preg_match("/^to:.*/i", $str))
{
list(,$srch) = explode(":", $str);
$subject = "HEADER TO";
$search = trim($srch);
$subject['to'] = "HEADER TO";
}
else if (preg_match("/^cc:.*/i", $str))
{
list(,$srch) = explode(":", $str);
$subject = "HEADER CC";
$search = trim($srch);
$subject['cc'] = "HEADER CC";
}
else if (preg_match("/^bcc:.*/i", $str))
{
list(,$srch) = explode(":", $str);
$subject['bcc'] = "HEADER BCC";
}
else if (preg_match("/^subject:.*/i", $str))
{
list(,$srch) = explode(":", $str);
$subject = "HEADER SUBJECT";
$search = trim($srch);
$subject['subject'] = "HEADER SUBJECT";
}
else if (preg_match("/^body:.*/i", $str))
{
list(,$srch) = explode(":", $str);
$subject = "TEXT";
$search = trim($srch);
$subject['text'] = "TEXT";
}
// search in subject and sender by default
else if(trim($str))
{
$from = ($mbox == $CONFIG['sent_mbox'] || $mbox == $CONFIG['drafts_mbox']) ? "TO" : "FROM";
$subject = array("HEADER SUBJECT", "HEADER $from");
$search = trim($str);
if ($headers) {
$headers = explode(',', $headers);
foreach($headers as $header)
switch ($header) {
case 'text': $subject['text'] = 'TEXT'; break;
default: $subject[$header] = 'HEADER '.$header;
}
} else {
$subject['subject'] = 'HEADER SUBJECT';
}
}
if ($subject && !is_array($subject))
$search_str .= sprintf(" %s {%d}\r\n%s", $subject, strlen($search), $search);
else if ($subject) {
$search_str .= ' OR';
foreach($subject as $sub)
$search = $srch ? trim($srch) : trim($str);
if ($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);

@ -347,7 +347,7 @@ table.records-table tr.unfocused td
background: url('images/searchfield.gif') top left no-repeat;
}
#quicksearchbar a
#searchreset
{
position: absolute;
top: 3px;
@ -355,6 +355,13 @@ table.records-table tr.unfocused td
text-decoration: none;
}
#searchmod
{
position: absolute;
top: 3px;
right: 162px;
}
#quicksearchbar img
{
vertical-align: middle;

@ -121,6 +121,7 @@ function rcmail_init_compose_form()
function rcube_mail_ui()
{
this.markmenu = $('#markmessagemenu');
this.searchmenu = $('#searchmenu');
}
rcube_mail_ui.prototype = {
@ -137,16 +138,61 @@ show_markmenu: function(show)
this.markmenu[show?'show':'hide']();
},
show_searchmenu: function(show)
{
if (typeof show == 'undefined')
show = this.searchmenu.is(':visible') ? false : true;
var ref = rcube_find_object('searchmod');
if (show && ref) {
var pos = $(ref).offset();
this.searchmenu.css({ left:pos.left, top:(pos.top + ref.offsetHeight + 2)});
if (rcmail.env.search_mods) {
for (var n in rcmail.env.search_mods) {
box = rcube_find_object('s_mod_' + n);
box.checked = 'checked';
}
}
}
this.searchmenu[show?'show':'hide']();
},
set_searchmod: function(elem)
{
if (!rcmail.env.search_mods)
rcmail.env.search_mods = new Object();
if (!elem.checked)
delete(rcmail.env.search_mods[elem.value]);
else
rcmail.env.search_mods[elem.value] = elem.value;
},
body_mouseup: function(evt, p)
{
if (this.markmenu && this.markmenu.is(':visible') && rcube_event.get_target(evt) != rcube_find_object('markreadbutton'))
this.show_markmenu(false);
else if (this.searchmenu && this.searchmenu.is(':visible') && rcube_event.get_target(evt) != rcube_find_object('searchmod')) {
var menu = rcube_find_object('searchmenu');
var target = rcube_event.get_target(evt);
while (target.parentNode) {
if (target.parentNode == menu)
return;
target = target.parentNode;
}
this.show_searchmenu(false);
}
},
body_keypress: function(evt, p)
{
if (rcube_event.get_keycode(evt) == 27 && this.markmenu && this.markmenu.is(':visible'))
this.show_markmenu(false);
if (rcube_event.get_keycode(evt) == 27) {
if (this.markmenu && this.markmenu.is(':visible'))
this.show_markmenu(false);
if (this.searchmenu && this.searchmenu.is(':visible'))
this.show_searchmenu(false);
}
}
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 397 B

@ -45,7 +45,8 @@
padding-left: 2px;
}
#markmessagemenu
#markmessagemenu,
#searchmenu
{
position: absolute;
top: 32px;
@ -60,6 +61,11 @@
z-index: 240;
}
#searchmenu
{
width: 172px;
}
ul.toolbarmenu
{
margin: 0;
@ -89,6 +95,11 @@ ul.toolbarmenu li a.active:hover
background-color: #ddd;
}
ul.toolbarmenu li input
{
vertical-align: middle;
}
#searchfilter
{
position: absolute;

@ -41,7 +41,9 @@
</div>
<div id="quicksearchbar">
<roundcube:object name="searchform" id="quicksearchbox" /><roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
<roundcube:button name="searchmod" id="searchmod" image="/images/icons/glass.gif" />
<roundcube:object name="searchform" id="quicksearchbox" />
<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
</div>
<roundcube:if condition="count(env:address_sources) &gt; 1" />

@ -136,8 +136,21 @@
</div>
</div>
<div id="searchmenu">
<ul class="toolbarmenu">
<li><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_subject"><roundcube:label name="subject" /></label></li>
<li><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_from"><roundcube:label name="from" /></label></li>
<li><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_to"><roundcube:label name="to" /></label></li>
<li><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_cc"><roundcube:label name="cc" /></label></li>
<li><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_bcc"><roundcube:label name="bcc" /></label></li>
<li><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_text"><roundcube:label name="msgtext" /></label></li>
</ul>
</div>
<div id="quicksearchbar">
<roundcube:object name="searchform" id="quicksearchbox" /><roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
<roundcube:button name="searchmod" id="searchmod" image="/images/icons/glass.gif" onclick="rcmail_ui.show_searchmenu();return false" title="searchmod" />
<roundcube:object name="searchform" id="quicksearchbox" />
<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
</div>
</body>

Loading…
Cancel
Save