2

I want to store an email address (or phone or address) in a custom group when they are deleted. So if for contact John Doe the email address [email protected] is deleted, it is stored in the custom group Former Communication Stuff. This works nicely on the pre and post hook but the custom group (which is Tab with table) tab is not refreshed when an email is deleted. And I would want the tab for the custom group refreshed when I delete an email address.

I have seen related questions here, notably Can I update/requery a custom field that got changed via another field on the same page?. However, this solution does not work for this case. I do not see any ID I can use in jQuery on the custom data tab, and if I do try to use one I get an error (just keeps running) either when adding the email again or when deleting the email.

I have one solution, which is to do a location.reload on the inline edit form, but that seems pretty rough. Any suggestions for another solution? And this is a going to be a generic extension, so anything that uses the random ID "#ui-id-17" does not work because the number could be different in many installs?

2 Answers 2

3

I think you can set something in postProcess hook to reload the tabs possibly below code but not sure, it does work for us when we update something in a form we update the contribution tab using below code

$form->ajaxResponse['updateTabs']['#tab_contribute'] = 1;

HTH

Pradeep

3
  • I will try! I did try the $form->ajaxResponse with a jQuery ID but that did not work. Commented Apr 11, 2019 at 12:36
  • I have found a #tab_custom_<custom_group_id>, will see if that does the trick. Thanks anyway @Pradeep Commented Apr 11, 2019 at 12:45
  • And it works, thanks Pradeep! Commented Apr 11, 2019 at 13:14
2

So to enhance on the answer from Pradeep, here is what I have done:

function myextension_civicrm_postProcess($formName, &$form) {
  if ($form instanceof CRM_Contact_Form_Inline_Email) {
    $form->ajaxResponse['updateTabs']['#tab_custom_32'] = 1;
  }
}

Where the 32 is the ID of my custom group, so I will obviously change that so it will retrieve the id in the specific environment.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.