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}