Skip to content

Commit

Permalink
Merge pull request #12971 from mattwire/entityfields_metadatadescription
Browse files Browse the repository at this point in the history
Use description from schema if available when using entityForm
  • Loading branch information
eileenmcnaughton authored Oct 25, 2018
2 parents cd82575 + d5e4784 commit b965352
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 4 deletions.
8 changes: 7 additions & 1 deletion CRM/Admin/Form/RelationshipType.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class CRM_Admin_Form_RelationshipType extends CRM_Admin_Form {
* Fields may have keys
* - name (required to show in tpl from the array)
* - description (optional, will appear below the field)
* Auto-added by setEntityFieldsMetadata unless specified here (use description => '' to hide)
* - not-auto-addable - this class will not attempt to add the field using addField.
* (this will be automatically set if the field does not have html in it's metadata
* or is not a core field on the form's entity).
Expand All @@ -70,11 +71,16 @@ protected function setEntityFields() {
'name' => 'label_b_a',
'description' => ts("Label for the relationship from Contact B to Contact A. EXAMPLE: Contact B is 'Child of' Contact A. You may leave this blank for relationships where the name is the same in both directions (e.g. Spouse).")
],
'description' => ['name' => 'description'],
'description' => [
'name' => 'description',
'description' => ''
],
'contact_types_a' => ['name' => 'contact_types_a', 'not-auto-addable' => TRUE],
'contact_types_b' => ['name' => 'contact_types_b', 'not-auto-addable' => TRUE],
'is_active' => ['name' => 'is_active'],
];

self::setEntityFieldsMetadata();
}

/**
Expand Down
2 changes: 1 addition & 1 deletion CRM/Core/Form.php
Original file line number Diff line number Diff line change
Expand Up @@ -1292,7 +1292,7 @@ public function addDateRange($name, $from = '_from', $to = '_to', $label = 'From
*
* Return string
*/
private function getApiAction() {
protected function getApiAction() {
$action = $this->getAction();
if ($action & (CRM_Core_Action::UPDATE + CRM_Core_Action::ADD)) {
return 'create';
Expand Down
23 changes: 21 additions & 2 deletions CRM/Core/Form/EntityFormTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,11 @@
*/

trait CRM_Core_Form_EntityFormTrait {

/**
* Get entity fields for the entity to be added to the form.
*
* @var array
* @return array
*/
public function getEntityFields() {
return $this->entityFields;
Expand All @@ -51,7 +52,7 @@ public function getDefaultContext() {
/**
* Get entity fields for the entity to be added to the form.
*
* @var array
* @return string
*/
public function getDeleteMessage() {
return $this->deleteMessage;
Expand Down Expand Up @@ -221,4 +222,22 @@ protected function isDeleteContext() {
return ($this->_action & CRM_Core_Action::DELETE);
}

protected function setEntityFieldsMetadata() {
foreach ($this->entityFields as $field => &$props) {
if (!empty($props['not-auto-addable'])) {
// We can't load this field using metadata
continue;
}
// Resolve action.
if (empty($props['action'])) {
$props['action'] = $this->getApiAction();
}
$fieldSpec = civicrm_api3($this->getDefaultEntity(), 'getfield', $props);
$fieldSpec = $fieldSpec['values'];
if (!isset($props['description']) && isset($fieldSpec['description'])) {
$props['description'] = $fieldSpec['description'];
}
}
}

}

0 comments on commit b965352

Please sign in to comment.