var crit = c.criteria;
switch (c.element) {
+ case 'IMP_Search_Element_Bulk':
+ this.insertFilter('bulk', crit);
+ break;
+
case 'IMP_Search_Element_Date':
this.insertDate(this.data.constants.index(crit.t), new Date(crit.d));
break;
this.insertWithin(val);
break;
+ case 'filter':
+ this.insertFilter(val);
+ break;
+
case 'flag':
this.insertFlag(val);
break;
tmp[1].activate();
},
+ insertFilter: function(id, not)
+ {
+ var tmp = [
+ new Element('EM').insert(this.getLabel(id)),
+ new Element('SPAN').insert(new Element('INPUT', { checked: Boolean(not), className: 'checkbox', type: 'checkbox' })).insert(this.text.not_match)
+ ];
+ this.criteria[this.insertCriteria(tmp)] = { t: id };
+ },
+
insertFlag: function(id, not)
{
var tmp = [
data.push(this.criteria[c]);
break;
+ case 'filter':
+ this.criteria[c].n = Number(Boolean($F($(c).down('INPUT[type=checkbox]'))));
+ data.push(this.criteria[c]);
+ break;
+
case 'flag':
this.criteria[c].n = Number(Boolean($F($(c).down('INPUT[type=checkbox]'))));
data.push({
*/
public function serialize()
{
- return empty($this->_data)
- ? null
- : json_encode(array(
- self::VERSION,
- $this->_data
- ));
+ return json_encode(array(
+ self::VERSION,
+ $this->_data
+ ));
}
/**
*/
public function unserialize($data)
{
- if (empty($data)) {
- return;
- }
-
$data = json_decode($data);
if (!is_array($data) ||
!isset($data[0]) ||
),
);
+$filters = array(
+ 'bulk' => array(
+ 'label' => _("Bulk Messages"),
+ 'type' => 'filter'
+ ),
+);
+
/* Define some constants. */
$constants = array(
'date' => array(
$c_list[] = new IMP_Search_Element_Or();
break;
+ case 'bulk':
+ $c_list[] = new IMP_Search_Element_Bulk(
+ $val->n
+ );
+ break;
+
case 'flag':
/* Flag search. */
$formdata = $imp_flags->parseFormId($val->v);
}
}
+/* Create the criteria list. */
$c_list = $types = array();
foreach ($criteria as $key => $val) {
$c_list[] = array(
}
$t->set('clist', $c_list);
-/* Create the flag_list. */
+/* Create the filter list. These are all-or-nothing searches. */
+$f_list = array();
+foreach ($filters as $key => $val) {
+ $f_list[] = array(
+ 'val' => $key,
+ 'label' => htmlspecialchars($val['label'])
+ );
+ $types[$key] = 'filter';
+}
+$t->set('filterlist', $f_list);
+
+/* Create the flag list. */
$flag_set = array();
foreach ($flist['set'] as $val) {
$flag_set[] = array(
<input class="hidden" name="criteria_form" id="criteria_form" value="" />
<h1 class="header">
- <strong><if:edit_query_vfolder><gettext>Edit Virtual Folder</gettext><else:edit_query_vfolder><gettext>Search</gettext></else:edit_query_vfolder></if:edit_query_vfolder></strong>
+ <strong>
+<if:edit_query_vfolder>
+ <gettext>Edit Virtual Folder</gettext>
+<else:edit_query_vfolder>
+ <gettext>Search</gettext>
+</else:edit_query_vfolder></if:edit_query_vfolder>
+ </strong>
</h1>
<div id="recent_searches_div" class="smallheader leftAlign" style="display:none">
<option value="<tag:clist.val />"><tag:clist.label /></option>
</loop:clist>
<option value="" disabled="disabled">- - - - - - - - -</option>
+<loop:filterlist>
+ <option value="<tag:filterlist.val />"><tag:filterlist.label /></option>
+</loop:filterlist>
+ <option value="" disabled="disabled">- - - - - - - - -</option>
<loop:flist>
<option value="<tag:flist.val />"><tag:flist.label /></option>
</loop:flist>
<div class="item">
<label for="search_type"><gettext>Type:</gettext></label>
<select id="search_type" name="search_type">
+ <option value="filter"><gettext>Filter</gettext></option>
<option value="vfolder"><gettext>Virtual Folder</gettext></option>
</select>
</div>