);
// Other Implicit DIMP preferences
+$_prefs['dimp_qsearch_field'] = array(
+ 'value' => 'all',
+ 'locked' => false,
+ 'shared' => false,
+ 'type' => 'implicit');
+
$_prefs['dimp_show_preview'] = array(
'value' => true,
'locked' => false,
'shared' => false,
'type' => 'implicit');
-$_prefs['dimp_toggle_headers'] = array(
+$_prefs['dimp_splitbar'] = array(
'value' => 0,
'locked' => false,
'shared' => false,
'type' => 'implicit');
-$_prefs['dimp_splitbar'] = array(
+$_prefs['dimp_toggle_headers'] = array(
'value' => 0,
'locked' => false,
'shared' => false,
v5.0-git
--------
+[mms] Make DIMP quicksearch field selection persist across sessions.
[mms] Move JS/CSS caching to Horde framework.
[mms] Add simple search function to MIMP.
[mms] DIMP now honors the 'mailbox_start' preference.
this.purgeDeleted();
break;
+ case 'ctx_qsearchopts_all':
+ case 'ctx_qsearchopts_body':
+ case 'ctx_qsearchopts_from':
+ case 'ctx_qsearchopts_subject':
+ DIMP.conf.qsearchfield = id.substring(16);
+ this._updatePrefs('dimp_qsearch_field', DIMP.conf.qsearchfield);
+ break;
+
default:
if (menu.endsWith('_setflag') || menu.endsWith('_unsetflag')) {
flag = elt.readAttribute('flag');
tmp.compact().invoke(this.viewport.getSelected().size() ? 'show' : 'hide');
break;
+ case 'ctx_qsearchopts':
+ $(ctx_id).descendants().invoke('removeClassName', 'contextSelected');
+ $(ctx_id + '_' + DIMP.conf.qsearchfield).addClassName('contextSelected');
+ break;
+
default:
parentfunc(ctx_id, baseelt);
break;
}
break;
- case 'qsearch_close':
- this.quicksearchClear();
+ case 'qsearch_icon':
+ DimpCore.DMenu.trigger($('qsearch_icon'), true);
e.stop();
return;
$('qsearch_input').focus();
break;
+ case 'qsearch_close':
+ this.quicksearchClear();
+ e.stop();
+ return;
+
default:
if (elt.hasClassName('RBFolderOk')) {
this.cfolderaction(e);
/* Add popdown menus. Check for disabled compose at the same time. */
this._addMouseEvents({ id: 'button_other', type: 'otheractions' }, $('button_other'));
this._addMouseEvents({ id: 'folderopts', type: 'folderopts' }, $('folderopts').down(1));
+ this._addMouseEvents({ id: 'qsearch_icon', left: true, type: 'qsearchopts' });
DM.addSubMenu('ctx_message_reply', 'ctx_reply');
[ 'ctx_message_', 'oa_', 'ctx_draft_' ].each(function(i) {
strlen($args['qsearchmbox'])) {
/* Create the search query. */
$query = new Horde_Imap_Client_Search_Query();
- $query->text($args['qsearch'], false);
+
+ switch ($GLOBALS['prefs']->getValue('dimp_qsearch_field')) {
+ case 'body':
+ $query->text($args['qsearch'], true);
+ break;
+
+ case 'from':
+ $query->headerText('From', $args['qsearch']);
+ break;
+
+ case 'subject':
+ $query->headerText('Subject', $args['qsearch']);
+ break;
+
+ case 'all':
+ default:
+ $query->text($args['qsearch'], false);
+ break;
+ }
/* Set the search in the IMP session. */
$GLOBALS['imp_search']->createSearchQuery($query, array($args['qsearchmbox']), array(), _("Search Results"), $mbox);
<div class="dimpActions">
<div id="qsearch">
+ <span id="qsearch_icon"></span>
<form action="#" method="post">
<input autocomplete="off" id="qsearch_input" type="text" size="25" />
</form>
- <span>
+ <span class="qsearchClose">
<?php echo Horde::img('close.png', '', array('id' => 'qsearch_close', 'style' => 'display:none', 'title' => _("Clear Search")), $hordeimg) ?>
</span>
</div>
<a id="ctx_contacts_add"><span class="contextImg"></span><?php echo _("Add to Address Book") ?></a>
</div>
+<div class="context" id="ctx_qsearchopts" style="display:none">
+ <a id="ctx_qsearchopts_all"><?php echo _("Entire Message") ?></a>
+ <a id="ctx_qsearchopts_body"><?php echo _("Body") ?></a>
+ <a id="ctx_qsearchopts_from"><?php echo _("From") ?></a>
+ <a id="ctx_qsearchopts_subject"><?php echo _("Subject") ?></a>
+</div>
+
<div style="display:none">
<span id="largeaddrspan">
<span class="largeaddrtoggle">
'popup_width' => 820,
'preview_pref' => intval($GLOBALS['prefs']->getValue('dimp_show_preview')),
'qsearchid' => IMP_Search::MBOX_PREFIX . 'dimpqsearch',
+ 'qsearchfield' => $GLOBALS['prefs']->getValue('dimp_qsearch_field'),
'refresh_time' => intval($GLOBALS['prefs']->getValue('refresh_time')),
'sortdate' => Horde_Imap_Client::SORT_DATE,
'sortthread' => Horde_Imap_Client::SORT_THREAD,
background: url("graphics/popright.png") 95% 50% no-repeat;
padding-left: 16px;
}
+.contextSelected {
+ background: yellow;
+}
/* Email Addresses. */
a.address {
/* Search-related styles */
#qsearch {
- background: #f3f3f3 url("graphics/search.png") 2px center no-repeat;
- padding: 1px 0 1px 20px;
+ padding: 1px 0 1px 1px;
float: right;
border: 1px solid #999;
cursor: default;
+ background-color: #f3f3f3;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
#qsearch form {
display: inline;
}
-#qsearch span {
+.qsearchClose {
display: -moz-inline-stack;
display: inline-block;
margin-left: -2px;
width: 17px;
}
+#qsearch_icon {
+ height: 16px;
+ width: 16px;
+ display: -moz-inline-stack;
+ display: inline-block;
+ background: #f3f3f3 url("graphics/search.png") center no-repeat;
+ vertical-align: top;
+}
#qsearch_input {
border: none;
color: #a0a0a0;
#qsearch_close {
margin-top: -1px;
}
-.qsearchFocus {
+.qsearchFocus, .qsearchFocus #qsearch_icon {
background-color: #fff !important;
}
.qsearchFocus #qsearch_input {
background-image: url("graphics/newwin.png");
}
-#qsearch {
+#qsearch_icon {
background-image: url("graphics/search.png");
}