From: deb.monish Date: Wed, 14 Jun 2017 20:09:46 +0000 (+0530) Subject: CRM-20673: Tag and group edit form: implement Select2 for tags X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=a52a8469b5c1c71ceb391480354d7101016367b1;p=civicrm-core.git CRM-20673: Tag and group edit form: implement Select2 for tags --- diff --git a/CRM/Contact/Form/Contact.php b/CRM/Contact/Form/Contact.php index 0a1c077b62..0c9eb8fbc8 100644 --- a/CRM/Contact/Form/Contact.php +++ b/CRM/Contact/Form/Contact.php @@ -992,6 +992,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { if (array_key_exists('TagsAndGroups', $this->_editOptions)) { //add contact to tags + $params['tag'] = array_flip(explode(',', $params['tag'])); CRM_Core_BAO_EntityTag::create($params['tag'], 'civicrm_contact', $params['contact_id']); //save free tags diff --git a/CRM/Contact/Form/Edit/TagsAndGroups.php b/CRM/Contact/Form/Edit/TagsAndGroups.php index def736d726..87b5d41891 100644 --- a/CRM/Contact/Form/Edit/TagsAndGroups.php +++ b/CRM/Contact/Form/Edit/TagsAndGroups.php @@ -128,7 +128,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups { 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', 'style' => 'width: 310px') ); $form->assign('groupCount', count($groupsOptions)); } @@ -145,72 +145,17 @@ class CRM_Contact_Form_Edit_TagsAndGroups { } 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); - - $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)); + $tags = CRM_Core_BAO_Tag::getColorTags('civicrm_contact'); - 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 - $parentNames = CRM_Core_BAO_Tag::getTagSet('civicrm_contact'); - CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_contact', $contactId, FALSE, TRUE); } - $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; + // build tag widget + $parentNames = CRM_Core_BAO_Tag::getTagSet('civicrm_contact'); + CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_contact', $contactId, FALSE, TRUE); + $form->assign('tagGroup', $form->_tagGroup); } /** @@ -249,17 +194,8 @@ class CRM_Contact_Form_Edit_TagsAndGroups { } 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')); + CRM_Core_Error::debug_var('tag', $defaults['tag']); } } diff --git a/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl b/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl index 9e2da5f8f6..2c14b4ef98 100644 --- a/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl +++ b/templates/CRM/Contact/Form/Edit/TagsAndGroups.tpl @@ -87,38 +87,36 @@
{$title}
{/if} -
- {if !$type || $type eq 'group'} -
- {if $title} -
{$form.group.label}
- {/if} - {if $groupElementType eq 'select'} -
{$form.group.html}
- {else} - {foreach key=key item=item from=$tagGroup.group} -
- {$form.group.$key.html} - {if $item.description} - {$item.description} + + + {if !$type || $type eq 'tag'} + + {/if} + {if !$type || $type eq 'group'} + + {/if} + + {if !$type || $type eq 'tag'} + {/if} -
- {include file="CRM/Contact/Form/Edit/Tagtree.tpl" level=1} -
- - {include file="CRM/common/Tagset.tpl"} - {/if} - +
+ {if $title}{$form.tag.label}{/if}
+ {$form.tag.html} +
+ {if $groupElementType eq 'select'} + {if $title}{$form.group.label}{/if} + {$form.group.html} + {else} + {foreach key=key item=item from=$tagGroup.group} +
+ {$form.group.$key.html} + {if $item.description} +
{$item.description}
+ {/if} +
+ {/foreach} {/if} - - {/foreach} - {/if} - - {/if} - {if (!$type || $type eq 'tag') && $tree} -
- {if $title} -
{$form.tag.label}
+
{include file="CRM/common/Tagset.tpl"}
{if $title}
diff --git a/templates/CRM/common/Tagset.tpl b/templates/CRM/common/Tagset.tpl index 94da2ab0ac..930ed44337 100644 --- a/templates/CRM/common/Tagset.tpl +++ b/templates/CRM/common/Tagset.tpl @@ -41,8 +41,8 @@ {else}
-
{$form.$elemName.$parID.label}
-
{$form.$elemName.$parID.html}
+ {$form.$elemName.$parID.label} + {$form.$elemName.$parID.html}
{/if}