From 59478e06c25303a790a0840ab2ac30662c4ef781 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Tue, 5 Aug 2014 16:46:22 +0200 Subject: c'est la merde.. --- plugins/compose_addressbook/compose_addressbook.js | 224 +++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 plugins/compose_addressbook/compose_addressbook.js (limited to 'plugins/compose_addressbook/compose_addressbook.js') diff --git a/plugins/compose_addressbook/compose_addressbook.js b/plugins/compose_addressbook/compose_addressbook.js new file mode 100644 index 000000000..de5d95276 --- /dev/null +++ b/plugins/compose_addressbook/compose_addressbook.js @@ -0,0 +1,224 @@ +var compose_addressbook_fetched = false; + +if(window.rcmail) { + rcmail.addEventListener('init', function(evt) { + + // mode of operation. configure this in config.php + var mode = rcmail.env.compose_addressbook_mode; + + // to be able to have translated buttons, we need to predefine the buttons array + var cab_to = rcmail.gettext('to'); + var cab_cc = rcmail.gettext('cc'); + var cab_bcc = rcmail.gettext('bcc'); + + var buttons = {}; + buttons[cab_bcc] = function() { + compose_addressbook_add_recipients('_bcc'); + $('.ui-dialog-buttonpane button').removeClass('ui-state-focus'); + } + buttons[cab_cc] = function() { + compose_addressbook_add_recipients('_cc'); + $('.ui-dialog-buttonpane button').removeClass('ui-state-focus'); + } + buttons[cab_to] = function() { + compose_addressbook_add_recipients('_to'); + $('.ui-dialog-buttonpane button').removeClass('ui-state-focus'); + } + + // bind the dialog functionality to the dialog div + $("#compose_addressbook_dialog").dialog({ + autoOpen: false, + modal: false, + resizable: false, + width: 285, + height: 500, + minHeight: 400, + buttons: buttons, + position: [$(window).width()-400,50] + }); + + // register the command associated with the toolbar button + rcmail.register_command('plugin.compose_addressbook', compose_addressbook_start , true); + + // add the command to the list of compose commands + rcmail.env.compose_commands.push('plugin.compose_addressbook'); + + // register the callback function + rcmail.addEventListener('plugin.compose_addressbook_receive', compose_addressbook_receive); + + // register the callback function for the group expander + rcmail.addEventListener('plugin.compose_addressbook_receive_expand', compose_addressbook_receive_expand); + + // create an rc list object + if(rcmail.gui_objects.compose_addressbook_list) { + rcmail.compose_addressbook_list = new rcube_list_widget(rcmail.gui_objects.compose_addressbook_list, {multiselect:true, draggable:false, keyboard:false}); + + // add a listener for double click + rcmail.compose_addressbook_list.addEventListener('dblclick', function(o){ compose_address_dblclick(o); }); + + // initialize the list + rcmail.compose_addressbook_list.init(); + } + + // each mode of operation has a different key handler + if(mode == 'full') { + // bind keyevent handler to the search box + $('#compose_addressbook_filter').bind('keyup', function(evt) { + var search = $('#compose_addressbook_filter').val(); + var regexp = new RegExp(search, 'i'); + $('#compose_addressbook_table').find('td').each(function() { + var content = $(this).attr('title'); + if(regexp.test(content)) { + $(this).parent().show(); + } else { + $(this).parent().hide(); + } + }); + }); + } else { + $('#compose_addressbook_filter').bind((bw.safari || bw.ie ? 'keydown' : 'keypress'), function(evt) { + var key = rcube_event.get_keycode(evt); + if(key == 13) { + var search = $('#compose_addressbook_filter').val(); + $('#compose_addressbook_filter').val(''); + compose_addressbook_search(search); + return false; + } + }); + } + + // bind click event to clear function + $("#compose_addressbook_searchreset").bind('click', function(e) { + $('#compose_addressbook_filter').val(''); + $('#compose_addressbook_filter').focus(); + $('#compose_addressbook_table').find('tr').each(function() { + $(this).show(); + }); + }); + }); +} + +function compose_addressbook_start() +{ + compose_addressbook_fetch(); + $('#compose_addressbook_dialog').dialog('open'); +} + +function compose_addressbook_fetch() +{ + if(!compose_addressbook_fetched) { + lock = rcmail.set_busy(true, 'loading'); + rcmail.http_post('plugin.get_addressbook', '', lock); + compose_addressbook_fetched = true; + } +} + +function compose_addressbook_search(search) +{ + rcmail.compose_addressbook_list.clear(); + lock = rcmail.set_busy(true, 'loading'); + rcmail.http_post('plugin.get_addressbook', '_search='+urlencode(search), lock); +} + +function compose_addressbook_receive(data) +{ + var addresses = data.addresses; + var name; + var email; + + // save the addresses for later use + rcmail.compose_addressbook_addresses = addresses; + + for(var j=0; j 0) { + lock = rcmail.set_busy(true, 'loading'); + rcmail.http_request('plugin.expand_groups', '_groupids='+urlencode(group_ids.join(','))+'&_groupsources='+urlencode(group_sources.join(','))+'&_target='+target, lock); + } +} + +function compose_addressbook_receive_expand(data) { + var form = '[name="'+data.target+'"]'; + + for(var j in data.members) { + $(form).attr('value', $(form).val() + data.members[j]+", "); + } +} -- cgit v1.2.3