Add selected contacts to new distribution list when you create it via context menu

This commit is contained in:
nathangray 2016-12-20 08:47:33 -07:00
parent fb17c19161
commit 123f902f43
2 changed files with 26 additions and 3 deletions

View File

@ -937,9 +937,10 @@ window.egw_LAB.wait(function() {
* @param int $list_id ID of existing list, or 0 for a new one * @param int $list_id ID of existing list, or 0 for a new one
* @param string $new_name List name * @param string $new_name List name
* @param int $_owner List owner, or empty for current user * @param int $_owner List owner, or empty for current user
* @param string[] [$contacts] List of contacts to add to the array
* @return boolean|string * @return boolean|string
*/ */
function ajax_set_list($list_id, $new_name, $_owner = false) function ajax_set_list($list_id, $new_name, $_owner = false, $contacts = array())
{ {
// Set owner to current user, if not set // Set owner to current user, if not set
$owner = $_owner ? $_owner : $GLOBALS['egw_info']['user']['account_id']; $owner = $_owner ? $_owner : $GLOBALS['egw_info']['user']['account_id'];
@ -974,6 +975,10 @@ window.egw_LAB.wait(function() {
$new_id = $this->add_list(array('list_id' => (int)$list_id), $list['list_owner'],array(),$list); $new_id = $this->add_list(array('list_id' => (int)$list_id), $list['list_owner'],array(),$list);
if($contacts)
{
$this->add2list($contacts,$new_id);
}
Api\Json\Response::get()->apply('egw.message', array( Api\Json\Response::get()->apply('egw.message', array(
$new_id == $list_id ? lang('Distribution list renamed') : lang('List created'), $new_id == $list_id ? lang('Distribution list renamed') : lang('List created'),
'success' 'success'

View File

@ -556,7 +556,13 @@ app.classes.addressbook = AppJS.extend(
} }
}, },
add_new_list: function(owner) /**
* Add a new mailing list. If any contacts are selected, they will be added.
*
* @param {egwAction} owner
* @param {egwActionObject[]} selected
*/
add_new_list: function(owner, selected)
{ {
if(!owner || typeof owner == 'object') if(!owner || typeof owner == 'object')
{ {
@ -564,11 +570,23 @@ app.classes.addressbook = AppJS.extend(
owner = filter.getValue()||egw.preference('add_default','addressbook'); owner = filter.getValue()||egw.preference('add_default','addressbook');
} }
var lists = this.et2.getWidgetById('filter2'); var lists = this.et2.getWidgetById('filter2');
var contacts = [];
if(selected && selected.length)
{
for(var i = 0; i < selected.length; i++)
{
// Remove UID prefix for just contact_id
var ids = selected[i].id.split('::');
ids.shift();
ids = ids.join('::');
contacts.push(ids);
}
}
et2_dialog.show_prompt( et2_dialog.show_prompt(
function(button, name) { function(button, name) {
if(button == et2_dialog.OK_BUTTON) if(button == et2_dialog.OK_BUTTON)
{ {
egw.json('addressbook.addressbook_ui.ajax_set_list',[0, name, owner], egw.json('addressbook.addressbook_ui.ajax_set_list',[0, name, owner, contacts],
function(result) function(result)
{ {
if(typeof result == 'object') return; // This response not for us if(typeof result == 'object') return; // This response not for us