protected $_context;
protected $_blockNo;
protected $_prefix;
+ protected $returnExtra = array();
/**
* Pre processing work done here.
//set the prefix
$this->_prefix = CRM_Utils_Request::retrieve('prefix', 'String', $this);
+ // Fields for the EntityRef widget
+ $returnExtra = CRM_Utils_Request::retrieve('returnExtra', 'String', $this);
+ $this->returnExtra = $returnExtra ? explode(',', $returnExtra) : array();
+
$this->assign('context', $this->_context);
if ($this->_blockNo) {
public function postProcess() {
parent::postProcess();
- $displayName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_id, 'display_name');
- $sortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_id, 'sort_name');
- $this->ajaxResponse['label'] = $sortName;
+ // Send back data for the EntityRef widget
+ $contact = civicrm_api3('Contact', 'getsingle', array(
+ 'id' => $this->_id,
+ 'return' => array_merge(array('sort_name'), $this->returnExtra),
+ ));
+ $this->ajaxResponse['label'] = $contact['sort_name'];
+ foreach ($this->returnExtra as $field) {
+ $this->ajaxResponse['extra'][$field] = CRM_Utils_Array::value($field, $contact);
+ }
// When saving (not deleting) and not in an ajax popup
if (empty($_POST[$this->_deleteButtonName]) && $this->_context != 'dialog') {
$('#select2-drop')
.off('.crmEntity')
.on('click.crmEntity', 'a.crm-add-entity', function(e) {
+ var extra = $el.data('api-params').extra,
+ formUrl = $(this).attr('href') + (extra ? ('&returnExtra=' + extra) : '');
$el.select2('close');
- CRM.loadForm($(this).attr('href'), {
+ CRM.loadForm(formUrl, {
dialog: {width: 500, height: 220}
}).on('crmFormSuccess', function(e, data) {
if (data.status === 'success' && data.id) {