From: Michael M Slusarz Date: Tue, 10 Feb 2009 05:19:43 +0000 (-0700) Subject: Update search javascript X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=86c1689104614bdea149d34ea6bc865d9167ccd9;p=horde.git Update search javascript --- diff --git a/imp/js/search.js b/imp/js/search.js index a8395d5c2..a33e8b578 100644 --- a/imp/js/search.js +++ b/imp/js/search.js @@ -1 +1 @@ -function toggleAll(a){$("search").getInputs(null,"search_folders[]").each(function(b){b.checked=a})}function dateCheck(b){var a=$("search_"+b+"_month"),c=$("search_"+b+"_day"),e=$("search_"+b+"_year");if(a.selectedIndex==0){a.selectedIndex=search_month}if(c.selectedIndex==0){c.selectedIndex=search_day}if(e.value==""){e.value=search_year}}function formCheck(){if(not_search&&(!$("preselected_folders")||!$F("preselected_folders"))){if(!Form.getInputs("search",null,"search_folders[]").detect(function(a){return a.checked})){alert(IMP.text.search_select);return false}}$("actionID").setValue("do_search");return true}function search_reset(){$("actionID").setValue("reset_search");$("search").submit();return true}function saveCache(){$("edit_query").setValue($F("save_cache"));$("search").submit()}function delete_field(a){$("delete_field_id").setValue(a);$("actionID").setValue("delete_field");$("search").submit();return true}function show_subscribed(a){$("show_subscribed_only").setValue(a);$("search").submit();return false}; \ No newline at end of file +var ImpSearch={_toggleAll:function(a){$("search").getInputs(null,"search_folders[]").each(function(b){b.checked=a})},_dateCheck:function(b){var a=$("search_"+b+"_month"),c=$("search_"+b+"_day"),e=$("search_"+b+"_year");if(a.selectedIndex==0){a.selectedIndex=this.search_date.m}if(c.selectedIndex==0){c.selectedIndex=this.search_date.d}if(e.value==""){e.value=this.search_date.y}},_formCheck:function(){if(this.not_search&&(!$("preselected_folders")||!$F("preselected_folders"))){if(!Form.getInputs("search",null,"search_folders[]").detect(function(a){return a.checked})){alert(IMP.text.search_select);return}}$("actionID").setValue("do_search")},_reset:function(){$("actionID").setValue("reset_search");$("search").submit()},_saveCache:function(){$("edit_query").setValue($F("save_cache"));$("search").submit()},_deleteField:function(a){$("delete_field_id").setValue(a);$("actionID").setValue("delete_field");$("search").submit()},_showSubscribed:function(a){$("show_subscribed_only").setValue(a);$("search").submit()},changeHandler:function(a){var b=a.element().readAttribute("id");switch(b){case"save_cache":this._saveCache();break;default:if(b.startsWith("field_")){$("search").submit()}else{if(b.startsWith("search_date_")){this._dateCheck("on")}}break}},clickHandler:function(b){var a=b.element();if(a.hasClassName("searchSubmit")){this._formCheck()}else{if(a.hasClassName("searchReset")){this._reset()}else{if(a.hasClassName("searchDelete")){this._deleteField(a.readAttribute("fid"))}else{switch(a.readAttribute("id")){case"link_sel_all":this._toggleAll(true);break;case"link_sel_none":this._toggleAll(false);break;case"link_sub":this._showSubscribed(this.inverse_sub);break;case"search_match_and":case"search_match_or":if($("field_1")){$("search").submit()}break}}}}}};document.observe("change",ImpSearch.changeHandler.bind(ImpSearch));document.observe("click",ImpSearch.clickHandler.bind(ImpSearch)); \ No newline at end of file diff --git a/imp/js/src/search.js b/imp/js/src/search.js index 0a27ec58e..bcbe57ea8 100644 --- a/imp/js/src/search.js +++ b/imp/js/src/search.js @@ -1,72 +1,132 @@ /** - * Provides the javascript for the search.php script + * Provides the javascript for the search.php script (standard view). * * See the enclosed file COPYING for license information (GPL). If you * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. */ -function toggleAll(checked) -{ - $('search').getInputs(null, 'search_folders[]').each(function(e) { - e.checked = checked; - }); -} +var ImpSearch = { + // The following variables are defined in search.php: + // inverse_sub, not_search, search_date -function dateCheck(field) -{ - var m = $('search_' + field + '_month'), d = $('search_' + field + '_day'), y = $('search_' + field + '_year'); + _toggleAll: function(checked) + { + $('search').getInputs(null, 'search_folders[]').each(function(e) { + e.checked = checked; + }); + }, - if (m.selectedIndex == 0) { - m.selectedIndex = search_month; - } + _dateCheck: function(field) + { + var m = $('search_' + field + '_month'), + d = $('search_' + field + '_day'), + y = $('search_' + field + '_year'); - if (d.selectedIndex == 0) { - d.selectedIndex = search_day; - } + if (m.selectedIndex == 0) { + m.selectedIndex = this.search_date.m; + } - if (y.value == "") { - y.value = search_year; - } -} - -function formCheck() -{ - if (not_search && - (!$('preselected_folders') || !$F('preselected_folders'))) { - if (!Form.getInputs('search', null, 'search_folders[]').detect(function(e) { return e.checked; })) { - alert(IMP.text.search_select); - return false; + if (d.selectedIndex == 0) { + d.selectedIndex = this.search_date.d; + } + + if (y.value == "") { + y.value = this.search_date.y; + } + }, + + _formCheck: function() + { + if (this.not_search && + (!$('preselected_folders') || !$F('preselected_folders'))) { + if (!Form.getInputs('search', null, 'search_folders[]').detect(function(e) { return e.checked; })) { + alert(IMP.text.search_select); + return; + } + } + + $('actionID').setValue('do_search'); + }, + + _reset: function() + { + $('actionID').setValue('reset_search'); + $('search').submit(); + }, + + _saveCache: function() + { + $('edit_query').setValue($F('save_cache')); + $('search').submit(); + }, + + _deleteField: function(i) + { + $('delete_field_id').setValue(i); + $('actionID').setValue('delete_field'); + $('search').submit(); + }, + + _showSubscribed: function(i) + { + $('show_subscribed_only').setValue(i); + $('search').submit(); + }, + + changeHandler: function(e) + { + var id = e.element().readAttribute('id'); + + switch (id) { + case 'save_cache': + this._saveCache(); + break; + + default: + if (id.startsWith('field_')) { + $('search').submit(); + } else if (id.startsWith('search_date_')) { + this._dateCheck('on'); + } + break; + } + }, + + clickHandler: function(e) + { + var elt = e.element(); + + if (elt.hasClassName('searchSubmit')) { + this._formCheck(); + } else if (elt.hasClassName('searchReset')) { + this._reset(); + } else if (elt.hasClassName('searchDelete')) { + this._deleteField(elt.readAttribute('fid')); + } else { + switch (elt.readAttribute('id')) { + case 'link_sel_all': + this._toggleAll(true); + break; + + case 'link_sel_none': + this._toggleAll(false); + break; + + case 'link_sub': + this._showSubscribed(this.inverse_sub); + break; + + case 'search_match_and': + case 'search_match_or': + if ($('field_1')) { + $('search').submit(); + } + break; + } } } - $('actionID').setValue('do_search'); - return true; -} - -function search_reset() -{ - $('actionID').setValue('reset_search'); - $('search').submit(); - return true; -} - -function saveCache() -{ - $('edit_query').setValue($F('save_cache')); - $('search').submit(); -} - -function delete_field(i) -{ - $('delete_field_id').setValue(i); - $('actionID').setValue('delete_field'); - $('search').submit(); - return true; -} - -function show_subscribed(i) -{ - $('show_subscribed_only').setValue(i); - $('search').submit(); - return false -} +}; + +document.observe('change', ImpSearch.changeHandler.bind(ImpSearch)); +document.observe('click', ImpSearch.clickHandler.bind(ImpSearch)); diff --git a/imp/search.php b/imp/search.php index cde4248fe..7529acff0 100644 --- a/imp/search.php +++ b/imp/search.php @@ -26,6 +26,8 @@ $search_mailbox = Util::getFormData('search_mailbox'); $imp_search_fields = $imp_search->searchFields(); +$charset = NLS::getCharset(); + /* Get URL parameter data. */ $search = array(); if (Util::getFormData('no_match')) { @@ -155,7 +157,6 @@ if (!$edit_query_vfolder) { } } $t->set('search_help', Help::link('imp', 'search')); -$t->set('field_end', $search['field_end'] > 0); $t->set('match_or', $search['match'] == 'or'); $t->set('label_or', Horde::label('search_match_or', _("Match Any Query"))); $t->set('match_and', ($search['match'] == null) || ($search['match'] == 'and')); @@ -213,7 +214,7 @@ for ($i = 0; $i <= $search['field_end']; $i++) { $fields[$i]['s_fields'][$curr]['sel'] = true; if (in_array($imp_search_fields[$curr]['type'], array(IMP_Search::HEADER, IMP_Search::BODY, IMP_Search::TEXT, IMP_Search::SIZE))) { $fields[$i]['search_text'] = true; - $fields[$i]['search_text_val'] = (!empty($search['text'][$i])) ? @htmlspecialchars($search['text'][$i], ENT_COMPAT, NLS::getCharset()) : null; + $fields[$i]['search_text_val'] = (!empty($search['text'][$i])) ? @htmlspecialchars($search['text'][$i], ENT_COMPAT, $charset) : null; if ($retrieve_search && ($imp_search_fields[$curr]['type'] == IMP_Search::SIZE)) { $fields[$i]['search_text_val'] /= 1024; @@ -291,7 +292,7 @@ $t->set('mbox', htmlspecialchars($search['mbox'])); $t->set('virtualfolder', $_SESSION['imp']['protocol'] != 'pop'); if ($t->get('virtualfolder')) { $t->set('save_vfolder', !empty($search['save_vfolder'])); - $t->set('vfolder_label', !empty($search['vfolder_label']) ? htmlspecialchars($search['vfolder_label'], ENT_COMPAT, NLS::getCharset()) : null); + $t->set('vfolder_label', !empty($search['vfolder_label']) ? htmlspecialchars($search['vfolder_label'], ENT_COMPAT, $charset) : null); } if (empty($search['mbox'])) { @@ -332,17 +333,17 @@ if (empty($search['mbox'])) { } $title = _("Message Search"); -Horde::addScriptFile('stripe.js', 'horde', true); Horde::addScriptFile('prototype.js', 'horde', true); +Horde::addScriptFile('stripe.js', 'horde', true); Horde::addScriptFile('search.js', 'imp', true); require IMP_TEMPLATES . '/common-header.inc'; IMP::menu(); IMP::status(); + IMP::addInlineScript(array( - 'var search_month = \'' . date('m') . '\'', - 'var search_day = \'' . date('d') . '\'', - 'var search_year = \'' . date('Y') . '\'', - 'var not_search = ' . intval(empty($search['mbox'])), + 'ImpSearch.search_date = ' . Horde_Serialize::serialize(array('m' => date('m'), 'd' => date('d'), 'y' => date('Y')), SERIALIZE_JSON, $charset), + 'ImpSearch.not_search = ' . intval(empty($search['mbox'])), + 'ImpSearch.inverse_sub = ' . intval($t->get('inverse_subscribe')), )); echo $t->fetch(IMP_TEMPLATES . '/search/search.html'); require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/imp/templates/search/search.html b/imp/templates/search/search.html index 2fd9aaf2c..d97beaca2 100644 --- a/imp/templates/search/search.html +++ b/imp/templates/search/search.html @@ -22,8 +22,8 @@
- - + +
@@ -33,7 +33,7 @@
- @@ -47,9 +47,9 @@
- onchange="$('search').submit();return true;" onclick="$('search').submit();return true;" checked="checked" /> + checked="checked" /> - onchange="$('search').submit();return true;" onclick="$('search').submit();return true;" checked="checked" /> + checked="checked" /> @@ -63,7 +63,7 @@ - + @@ -138,10 +138,10 @@ @@ -179,7 +179,7 @@
- - + +
- @@ -97,13 +97,13 @@ - - @@ -125,7 +125,7 @@