// during contact editing : if no address is filled
// required custom data must not produce 'required' form rule error
// more handling done in formRule func
- if (!$inlineEdit) {
- CRM_Contact_Form_Edit_Address::storeRequiredCustomDataInfo($form, $groupTree);
- }
+ CRM_Contact_Form_Edit_Address::storeRequiredCustomDataInfo($form, $groupTree);
$template = CRM_Core_Smarty::singleton();
$tplGroupTree = $template->get_template_vars('address_groupTree');
}
// DETACH 'required' form rule error to
- // custom data only if address data not exists upon submission
- if (!empty($customDataRequiredFields) && !CRM_Core_BAO_Address::dataExists($addressValues)) {
+ // custom data if address data not exists upon submission
+ // or if master address is selected
+ if (!empty($customDataRequiredFields) && (!CRM_Core_BAO_Address::dataExists($addressValues) || !empty($addressValues['master_id']))) {
foreach ($customDataRequiredFields as $customElementName) {
$elementName = "address[$instance][$customElementName]";
if ($self->getElementError($elementName)) {
* @param array $groupTree
*/
public static function storeRequiredCustomDataInfo(&$form, $groupTree) {
- if (CRM_Utils_System::getClassName($form) == 'CRM_Contact_Form_Contact') {
+ if (in_array(CRM_Utils_System::getClassName($form), array('CRM_Contact_Form_Contact', 'CRM_Contact_Form_Inline_Address'))) {
$requireOmission = NULL;
foreach ($groupTree as $csId => $csVal) {
// only process Address entity fields
public function buildQuickForm() {
parent::buildQuickForm();
CRM_Contact_Form_Edit_Address::buildQuickForm($this, $this->_locBlockNo, TRUE, TRUE);
+ $this->addFormRule(array('CRM_Contact_Form_Edit_Address', 'formRule'), $this);
}
/**
);
}
}
+ $idValue = $currentAddressBlock['address'][$locBlockNo]['id'];
+ if (!empty($currentAddressBlock['address'][$locBlockNo]['master_id'])) {
+ $idValue = $currentAddressBlock['address'][$locBlockNo]['master_id'];
+ }
// add custom data of type address
$groupTree = CRM_Core_BAO_CustomGroup::getTree('Address',
- $this, $currentAddressBlock['address'][$locBlockNo]['id']
+ $this, $idValue
);
// we setting the prefix to dnc_ below so that we don't overwrite smarty's grouptree var.