diff --git a/CRM/Contact/Form/Contact.php b/CRM/Contact/Form/Contact.php
index 0a1c077b62c1..7102c404d9c3 100644
--- a/CRM/Contact/Form/Contact.php
+++ b/CRM/Contact/Form/Contact.php
@@ -992,7 +992,10 @@ public function postProcess() {
if (array_key_exists('TagsAndGroups', $this->_editOptions)) {
//add contact to tags
- CRM_Core_BAO_EntityTag::create($params['tag'], 'civicrm_contact', $params['contact_id']);
+ if (isset($params['tag']) && !empty($params['tag'])) {
+ $params['tag'] = array_flip(explode(',', $params['tag']));
+ CRM_Core_BAO_EntityTag::create($params['tag'], 'civicrm_contact', $params['contact_id']);
+ }
//save free tags
if (isset($params['contact_taglist']) && !empty($params['contact_taglist'])) {
diff --git a/CRM/Contact/Form/Edit/TagsAndGroups.php b/CRM/Contact/Form/Edit/TagsAndGroups.php
index def736d726e8..1518c2a119e0 100644
--- a/CRM/Contact/Form/Edit/TagsAndGroups.php
+++ b/CRM/Contact/Form/Edit/TagsAndGroups.php
@@ -128,7 +128,7 @@ public static function buildQuickForm(
if ($groupElementType == 'select' && !empty($groupsOptions)) {
$form->add('select', $fName, $groupName, $groupsOptions, FALSE,
- array('id' => $fName, 'multiple' => 'multiple', 'class' => 'crm-select2')
+ array('id' => $fName, 'multiple' => 'multiple', 'class' => 'crm-select2 twenty')
);
$form->assign('groupCount', count($groupsOptions));
}
@@ -145,40 +145,10 @@ public static function buildQuickForm(
}
if ($type & self::TAG) {
- $fName = 'tag';
- if ($fieldName) {
- $fName = $fieldName;
- }
- $form->_tagGroup[$fName] = 1;
-
- // get the list of all the categories
- $tags = new CRM_Core_BAO_Tag();
- $tree = $tags->getTree('civicrm_contact', TRUE);
- // let's not load jstree if there are not children. This also fixes blank
- // display at the beginning of checkboxes
- $loadJsTree = CRM_Utils_Array::retrieveValueRecursive($tree, 'children');
- $form->assign('loadjsTree', FALSE);
- if (!empty($loadJsTree)) {
- // CODE FROM CRM/Tag/Form/Tag.php //
- CRM_Core_Resources::singleton()
- ->addScriptFile('civicrm', 'packages/jquery/plugins/jstree/jquery.jstree.js', 0, 'html-header', FALSE)
- ->addStyleFile('civicrm', 'packages/jquery/plugins/jstree/themes/default/style.css', 0, 'html-header');
- $form->assign('loadjsTree', TRUE);
- }
-
- $elements = array();
- self::climbtree($form, $tree, $elements);
+ $tags = CRM_Core_BAO_Tag::getColorTags('civicrm_contact');
- $form->addGroup($elements, $fName, $tagName, '
');
- $form->assign('tagCount', count($elements));
- $form->assign('tree', $tree);
- $form->assign('tag', $tree);
- $form->assign('entityID', $contactId);
- $form->assign('entityTable', 'civicrm_contact');
- $form->assign('allTags', CRM_Core_BAO_Tag::getTagsUsedFor('civicrm_contact', FALSE));
-
- if ($isRequired) {
- $form->addRule($fName, ts('%1 is a required field.', array(1 => $tagName)), 'required');
+ if (!empty($tags)) {
+ $form->add('select2', 'tag', ts('Tag(s)'), $tags, FALSE, array('class' => 'huge', 'placeholder' => ts('- select -'), 'multiple' => TRUE));
}
// build tag widget
@@ -188,31 +158,6 @@ public static function buildQuickForm(
$form->assign('tagGroup', $form->_tagGroup);
}
- /**
- * Climb tree.
- *
- * @param $form
- * @param $tree
- * @param $elements
- *
- * @return mixed
- */
- public static function climbtree($form, $tree, &$elements) {
- foreach ($tree as $tagID => $varValue) {
- $tagAttribute = array(
- 'onclick' => "return changeRowColor(\"rowidtag_$tagID\")",
- 'id' => "tag_{$tagID}",
- );
-
- $elements[$tagID] = $form->createElement('checkbox', $tagID, '', $varValue['name'], $tagAttribute);
-
- if (array_key_exists('children', $varValue)) {
- self::climbtree($form, $varValue['children'], $elements);
- }
- }
- return $elements;
- }
-
/**
* Set defaults for relevant form elements.
*
@@ -249,17 +194,7 @@ public static function setDefaults($id, &$defaults, $type = self::ALL, $fieldNam
}
if ($type & self::TAG) {
- $fName = 'tag';
- if ($fieldName) {
- $fName = $fieldName;
- }
-
- $contactTag = CRM_Core_BAO_EntityTag::getTag($id);
- if ($contactTag) {
- foreach ($contactTag as $tag) {
- $defaults[$fName . '[' . $tag . ']'] = 1;
- }
- }
+ $defaults['tag'] = implode(',', CRM_Core_BAO_EntityTag::getTag($id, 'civicrm_contact'));
}
}
diff --git a/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl b/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl
index df271f19d194..e13c4c50d23f 100644
--- a/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl
+++ b/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl
@@ -23,65 +23,6 @@
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
*}
-{literal}
-
-
-
{if $title}
+
+ {if $title}{$form.tag.label}{/if}
+ {$form.tag.html}
+
+ {if $context NEQ 'profile'}
+ {include file="CRM/common/Tagset.tpl"}
+ {/if}
+ |
+ {/if}
{if !$type || $type eq 'group'}
{if $groupElementType eq 'select'}
- {if $title}{$form.group.label}{/if}
+
+ {if $title}{$form.group.label}{/if}
{$form.group.html}
+
{else}
{foreach key=key item=item from=$tagGroup.group}
@@ -106,14 +60,6 @@
{/if}
|
{/if}
- {if (!$type || $type eq 'tag') && $tree}
- {if $title}{$form.tag.label}{/if}
-
- {include file="CRM/Contact/Form/Edit/Tagtree.tpl" level=1}
-
- |
-
{include file="CRM/common/Tagset.tpl"} |