From e9a9f2f6c52e41f3e85fc3ab0ee93afecd080892 Mon Sep 17 00:00:00 2001 From: alecpl Date: Fri, 3 Jun 2011 11:03:13 +0000 Subject: - Added addressbook advanced search --- program/js/app.js | 93 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 33 deletions(-) (limited to 'program/js') diff --git a/program/js/app.js b/program/js/app.js index 405a12fc8..48f058eaf 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -326,11 +326,12 @@ function rcube_webmail() } } - if ((this.env.action == 'add' || this.env.action == 'edit') && this.gui_objects.editform) { + if (this.gui_objects.editform) { this.enable_command('save', true); - this.init_contact_form(); + if (this.env.action == 'add' || this.env.action == 'edit') + this.init_contact_form(); } - else if (this.gui_objects.qsearchbox) { + if (this.gui_objects.qsearchbox) { this.enable_command('search', 'reset-search', 'moveto', true); $(this.gui_objects.qsearchbox).select(); } @@ -338,7 +339,7 @@ function rcube_webmail() if (this.contact_list && this.contact_list.rowcount > 0) this.enable_command('export', true); - this.enable_command('list', 'listgroup', true); + this.enable_command('list', 'listgroup', 'advanced-search', true); break; @@ -587,7 +588,7 @@ function rcube_webmail() // common commands used in multiple tasks case 'show': - if (this.task=='mail') { + if (this.task == 'mail') { var uid = this.get_single_uid(); if (uid && (!this.env.uid || uid != this.env.uid)) { if (this.env.mailbox == this.env.drafts_mailbox) @@ -596,17 +597,17 @@ function rcube_webmail() this.show_message(uid); } } - else if (this.task=='addressbook') { + else if (this.task == 'addressbook') { var cid = props ? props : this.get_single_cid(); - if (cid && !(this.env.action=='show' && cid==this.env.cid)) + if (cid && !(this.env.action == 'show' && cid == this.env.cid)) this.load_contact(cid, 'show'); } break; case 'add': - if (this.task=='addressbook') + if (this.task == 'addressbook') this.load_contact(0, 'add'); - else if (this.task=='settings') { + else if (this.task == 'settings') { this.identity_list.clear_selection(); this.load_identity(0, 'add-identity'); } @@ -625,27 +626,29 @@ function rcube_webmail() break; case 'save': - if (this.gui_objects.editform) { - var input_pagesize = $("input[name='_pagesize']"); - var input_name = $("input[name='_name']"); - var input_email = $("input[name='_email']"); - + var input, form = this.gui_objects.editform; + if (form) { + // adv. search + if (this.env.action == 'search') { + } // user prefs - if (input_pagesize.length && isNaN(parseInt(input_pagesize.val()))) { + else if ((input = $("input[name='_pagesize']", form)) && input.length && isNaN(parseInt(input.val()))) { alert(this.get_label('nopagesizewarning')); - input_pagesize.focus(); + input.focus(); break; } // contacts/identities else { - if (input_name.length && input_name.val() == '') { + if ((input = $("input[name='_name']", form)) &&input.length && input.val() == '') { alert(this.get_label('nonamewarning')); - input_name.focus(); + input.focus(); break; } - else if (this.task == 'settings' && input_email.length && (this.env.identities_level % 2) == 0 && !rcube_check_email(input_email.val())) { + else if (this.task == 'settings' && (this.env.identities_level % 2) == 0 && + (input = $("input[name='_email']", form)) && input.length&& !rcube_check_email(input.val()) + ) { alert(this.get_label('noemailwarning')); - input_email.focus(); + input.focus(); break; } @@ -653,7 +656,7 @@ function rcube_webmail() $('input.placeholder').each(function(){ if (this.value == this._placeholder) this.value = ''; }); } - this.gui_objects.editform.submit(); + form.submit(); } break; @@ -3348,8 +3351,7 @@ function rcube_webmail() if (mods) mods = mods[mbox] ? mods[mbox] : mods['*']; } else if (this.contact_list) { - this.contact_list.clear(true); - this.show_contentframe(false); + this.list_contacts_clear(); } if (mods) { @@ -3715,9 +3717,7 @@ function rcube_webmail() this.list_contacts_remote = function(src, group, page) { // clear message list first - this.contact_list.clear(true); - this.show_contentframe(false); - this.enable_command('delete', 'compose', false); + this.list_contacts_clear(); // send request to server var url = (src ? '_source='+urlencode(src) : '') + (page ? (src?'&':'') + '_page='+page : ''), @@ -3736,6 +3736,13 @@ function rcube_webmail() this.http_request('list', url, lock); }; + this.list_contacts_clear = function() + { + this.contact_list.clear(true); + this.show_contentframe(false); + this.enable_command('delete', 'compose', false); + }; + // load contact record this.load_contact = function(cid, action, framed) { @@ -4077,7 +4084,7 @@ function rcube_webmail() else { var lastelem = $('.ff_'+col), appendcontainer = $('#contactsection'+section+' .contactcontroller'+col); - + if (!appendcontainer.length) appendcontainer = $('
').addClass('contactfieldgroup contactcontroller'+col).insertAfter($('#contactsection'+section+' .contactfieldgroup').last()); @@ -4086,7 +4093,7 @@ function rcube_webmail() row = $('
').addClass('row'), cell = $('
').addClass('contactfieldcontent data'), label = $('
').addClass('contactfieldlabel label'); - + if (colprop.subtypes_select) label.html(colprop.subtypes_select); else @@ -4120,7 +4127,7 @@ function rcube_webmail() .addClass('ff_'+col) .attr('name', '_'+col+name_suffix) .appendTo(cell); - + var options = input.attr('options'); options[options.length] = new Option('---', ''); if (colprop.options) @@ -4134,10 +4141,10 @@ function rcube_webmail() .html(this.env.delbutton) .click(function(){ ref.delete_edit_field(this); return false }) .appendTo(cell); - + row.append(label).append(cell).appendTo(appendcontainer.show()); input.first().focus(); - + // disable option if limit reached if (!colprop.count) colprop.count = 0; if (++colprop.count == colprop.limit && colprop.limit) @@ -4153,7 +4160,7 @@ function rcube_webmail() colprop = this.env.coltypes[col], fieldset = $(elem).parents('fieldset.contactfieldgroup'), addmenu = fieldset.parent().find('select.addfieldmenu'); - + // just clear input but don't hide the last field if (--colprop.count <= 0 && colprop.visible) $(elem).parent().children('input').val('').blur(); @@ -4163,7 +4170,7 @@ function rcube_webmail() if (!fieldset.children('div.row').length) fieldset.hide(); } - + // enable option in add-field selector or insert it if necessary if (addmenu.length) { var option = addmenu.children('option[value="'+col+'"]'); @@ -4213,6 +4220,26 @@ function rcube_webmail() this.enable_command('delete-photo', this.env.coltypes.photo && id != '-del-'); }; + // load advanced search page + this.advanced_search = function() + { + var add_url = '&_form=1', target = window; + + if (this.env.contentframe && window.frames && window.frames[this.env.contentframe]) { + add_url += '&_framed=1'; + target = window.frames[this.env.contentframe]; + this.contact_list.clear_selection(); + } + else if (framed) + return false; + + this.location_href(this.env.comm_path+'&_action=search'+add_url + +'&_source='+urlencode(this.env.source) + +(this.env.group ? '&_gid='+urlencode(this.env.group) : ''), target); + + return true; + }; + /*********************************************************/ /********* user settings methods *********/ -- cgit v1.2.3