* Addressbook: Add selectbox for addressbook to Add distribution list dialog

This commit is contained in:
nathangray 2020-05-22 11:58:27 -06:00
parent 82215f292d
commit d89b92f27b
3 changed files with 99 additions and 44 deletions

View File

@ -527,18 +527,19 @@ var AddressbookApp = /** @class */ (function (_super) {
*/ */
AddressbookApp.prototype._add_new_list_prompt = function (owner, contacts) { AddressbookApp.prototype._add_new_list_prompt = function (owner, contacts) {
var lists = this.et2.getWidgetById('filter2'); var lists = this.et2.getWidgetById('filter2');
et2_dialog.show_prompt(function (button, name) { var owner_options = this.et2.getArrayMgr('sel_options').getEntry('filter') || {};
var callback = function (button, values) {
if (button == et2_dialog.OK_BUTTON) { if (button == et2_dialog.OK_BUTTON) {
egw.json('addressbook.addressbook_ui.ajax_set_list', [0, name, owner, contacts], function (result) { egw.json('addressbook.addressbook_ui.ajax_set_list', [0, values.name, values.owner, contacts], function (result) {
if (typeof result == 'object') if (typeof result == 'object')
return; // This response not for us return; // This response not for us
// Update list // Update list
if (result) { if (result) {
lists.options.select_options.unshift({ value: result, label: name }); lists.options.select_options.unshift({ value: result, label: values.name });
lists.set_select_options(lists.options.select_options); lists.set_select_options(lists.options.select_options);
// Set to new list so they can see it easily // Set to new list so they can see it easily
lists.set_value(result); lists.set_value(result);
// Call cahnge event manually after setting the value // Call change event manually after setting the value
// Not sure why our selectbox does not trigger change event // Not sure why our selectbox does not trigger change event
jQuery(lists.node).change(); jQuery(lists.node).change();
} }
@ -547,12 +548,28 @@ var AddressbookApp = /** @class */ (function (_super) {
var dist_lists = null; var dist_lists = null;
if (addressbook_actions && (dist_lists = addressbook_actions.getActionById('to_list'))) { if (addressbook_actions && (dist_lists = addressbook_actions.getActionById('to_list'))) {
var id = 'to_list_' + result; var id = 'to_list_' + result;
var action = dist_lists.addAction('popup', id, name); var action = dist_lists.addAction('popup', id, values.name);
action.updateAction({ group: 1 }); action.updateAction({ group: 1 });
} }
}).sendRequest(true); }).sendRequest(true);
} }
}, this.egw.lang('Name for the distribution list'), this.egw.lang('Add a new list')); };
var dialog = et2_createWidget("dialog", {
callback: callback,
title: this.egw.lang('Add a new list'),
buttons: et2_dialog.BUTTONS_OK_CANCEL,
value: {
content: {
owner: owner
},
sel_options: {
owner: owner_options
}
},
template: egw.webserverUrl + '/addressbook/templates/default/add_list_dialog.xet',
class: "et2_prompt",
minWidth: 400
}, this.et2);
}; };
/** /**
* Rename the current distribution list selected in the nextmatch filter2 * Rename the current distribution list selected in the nextmatch filter2

View File

@ -626,47 +626,62 @@ class AddressbookApp extends EgwApp
*/ */
_add_new_list_prompt(owner, contacts) _add_new_list_prompt(owner, contacts)
{ {
var lists = this.et2.getWidgetById('filter2'); var lists = <et2_selectbox><unknown>this.et2.getWidgetById('filter2');
et2_dialog.show_prompt( let owner_options = this.et2.getArrayMgr('sel_options').getEntry('filter') || {};
function(button, name) { let callback = function(button, values) {
if(button == et2_dialog.OK_BUTTON) if(button == et2_dialog.OK_BUTTON)
{ {
egw.json('addressbook.addressbook_ui.ajax_set_list',[0, name, owner, contacts], egw.json('addressbook.addressbook_ui.ajax_set_list',[0, values.name, values.owner, contacts],
function(result) function(result)
{
if(typeof result == 'object') return; // This response not for us
// Update list
if(result)
{ {
if(typeof result == 'object') return; // This response not for us lists.options.select_options.unshift({value:result,label:values.name});
// Update list lists.set_select_options(lists.options.select_options);
if(result)
{
lists.options.select_options.unshift({value:result,label:name});
lists.set_select_options(lists.options.select_options);
// Set to new list so they can see it easily // Set to new list so they can see it easily
lists.set_value(result); lists.set_value(result);
// Call cahnge event manually after setting the value // Call change event manually after setting the value
// Not sure why our selectbox does not trigger change event // Not sure why our selectbox does not trigger change event
jQuery(lists.node).change(); jQuery(lists.node).change();
}
// Add to actions
var addressbook_actions = egw_getActionManager('addressbook',false);
var dist_lists = null;
if(addressbook_actions && (dist_lists = addressbook_actions.getActionById('to_list')))
{
var id = 'to_list_' + result;
var action = dist_lists.addAction(
'popup',
id,
name
);
action.updateAction({group: 1});
}
} }
).sendRequest(true); // Add to actions
} var addressbook_actions = egw_getActionManager('addressbook',false);
}, var dist_lists = null;
this.egw.lang('Name for the distribution list'), if(addressbook_actions && (dist_lists = addressbook_actions.getActionById('to_list')))
this.egw.lang('Add a new list') {
); var id = 'to_list_' + result;
var action = dist_lists.addAction(
'popup',
id,
values.name
);
action.updateAction({group: 1});
}
}
).sendRequest(true);
}
};
let dialog = et2_createWidget("dialog", {
callback: callback,
title: this.egw.lang('Add a new list'),
buttons: et2_dialog.BUTTONS_OK_CANCEL,
value: {
content: {
owner: owner
},
sel_options: {
owner: owner_options
}
},
template: egw.webserverUrl + '/addressbook/templates/default/add_list_dialog.xet',
class: "et2_prompt",
minWidth: 400
}, this.et2);
} }
/** /**

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE overlay PUBLIC "-//EGroupware GmbH//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
<!-- $Id$ -->
<overlay>
<template id="addressbook.add_list_dialog" template="" lang="" group="0" version="">
<grid>
<columns>
<column/>
<column/>
</columns>
<rows>
<row>
<description value="Name for the distribution list"/>
<textbox id="name"/>
</row>
<row>
<description value="Addressbook"/>
<select id="owner"/>
</row>
</rows>
</grid>
</template>
</overlay>