Skip to content

Commit

Permalink
Merge pull request #23645 from jmcclelland/profile-require-tag
Browse files Browse the repository at this point in the history
Enable ability to require tags in profiles
  • Loading branch information
demeritcowboy authored Jun 8, 2022
2 parents f7dd524 + e661b0f commit c1939ae
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 1 deletion.
2 changes: 1 addition & 1 deletion CRM/Contact/Form/Edit/TagsAndGroups.php
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ public static function buildQuickForm(
$tags = CRM_Core_BAO_Tag::getColorTags('civicrm_contact');

if (!empty($tags)) {
$form->add('select2', 'tag', ts('Tag(s)'), $tags, FALSE, ['class' => 'huge', 'placeholder' => ts('- select -'), 'multiple' => TRUE]);
$form->add('select2', 'tag', ts('Tag(s)'), $tags, $isRequired, ['class' => 'huge', 'placeholder' => ts('- select -'), 'multiple' => TRUE]);
}

// build tag widget
Expand Down
58 changes: 58 additions & 0 deletions tests/phpunit/CRM/Profile/Form/EditTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,62 @@ public function testProfileUrl(): void {
$this->assertEquals('civicrm/Mr. Anthony Anderson II', CRM_Core_Session::singleton()->popUserContext());
}

/**
* Test that requiring tags on a profile works.
*
* @throws \API_Exception
*/
public function testProfileRequireTag(): void {
$ufGroupParams = [
'group_type' => 'Individual,Contact',
'name' => 'test_individual_contact_tag_profile',
'title' => 'Gimme a tag',
'api.uf_field.create' => [
[
'field_name' => 'first_name',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Individual',
'label' => 'First Name',
],
[
'field_name' => 'last_name',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Individual',
'label' => 'Last Name',
],
[
'field_name' => 'tag',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'label' => 'Tag',
],
],
];

$profile = $this->callAPISuccess('uf_group', 'create', $ufGroupParams);
$profileID = $profile['id'];

// Configure the profile to be used as a standalone profile for data entry.
UFJoin::create(FALSE)->setValues([
'module' => 'Profile',
'uf_group_id' => $profileID,
])->execute();

// Populate the form.
$formParams = [
'first_name' => 'Foo',
'last_name' => 'McGoo',
'gid' => $profileID,
'tag' => [],
];
$form = $this->getFormObject('CRM_Profile_Form_Edit', $formParams);
$form->set('gid', $profileID);
$form->preProcess();
$form->buildQuickForm();
$this->assertFalse($form->validate(), 'Ensure tags can be required on a form.');
}

}

0 comments on commit c1939ae

Please sign in to comment.