X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FForm%2FEdit%2FTagsAndGroups.php;h=d7b91d266ebd7683ef061809b045f2d41d02c5a7;hb=d3c71b2f4fb869348bdaf270fc02fdc4f29b8641;hp=21a4f2f74e6cfd37a14a81367a0dd91db05c3269;hpb=4014394ebf74035cc7cc8bee5b37e8057f2c96b2;p=civicrm-core.git
diff --git a/CRM/Contact/Form/Edit/TagsAndGroups.php b/CRM/Contact/Form/Edit/TagsAndGroups.php
index 21a4f2f74e..d7b91d266e 100644
--- a/CRM/Contact/Form/Edit/TagsAndGroups.php
+++ b/CRM/Contact/Form/Edit/TagsAndGroups.php
@@ -35,7 +35,7 @@
class CRM_Contact_Form_Edit_TagsAndGroups {
/**
- * constant to determine which forms we are generating
+ * Constant to determine which forms we are generating
*
* Used by both profile and edit contact
*/
@@ -45,7 +45,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups {
* This function is to build form elements
* params object $form object of the form
*
- * @param Object $form the form object that we are operating on
+ * @param CRM_Core_Form $form the form object that we are operating on
* @param int $contactId contact id
* @param int $type what components are we interested in
* @param boolean $visibility visibility of the field
@@ -142,21 +142,30 @@ class CRM_Contact_Form_Edit_TagsAndGroups {
}
if ($type & self::TAG) {
+ // 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');
+
$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);
+
$elements = array();
- $tag = CRM_Core_BAO_Tag::getTags();
+ self::climbtree($form, $tree, $elements);
- foreach ($tag as $id => $name) {
- $elements[] = $form->createElement('checkbox', $id, NULL, $name);
- }
- if (!empty($elements)) {
- $form->addGroup($elements, $fName, $tagName, '
');
- $form->assign('tagCount', count($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');
if ($isRequired) {
$form->addRule($fName, ts('%1 is a required field.', array(1 => $tagName)), 'required');
@@ -164,14 +173,29 @@ class CRM_Contact_Form_Edit_TagsAndGroups {
// build tag widget
$parentNames = CRM_Core_BAO_Tag::getTagSet('civicrm_contact');
-
- CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_contact', $contactId, TRUE, TRUE);
+ CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_contact', $contactId, FALSE, TRUE);
}
$form->assign('tagGroup', $form->_tagGroup);
}
+ 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, '', '', $tagAttribute);
+
+ if (array_key_exists('children', $varValue)) {
+ self::climbtree($form, $varValue['children'], $elements);
+ }
+ }
+ return $elements;
+ }
+
/**
- * set defaults for relevant form elements
+ * Set defaults for relevant form elements
*
* @param int $id the contact id
* @param array $defaults the defaults array to store the values in
@@ -221,12 +245,12 @@ class CRM_Contact_Form_Edit_TagsAndGroups {
}
/**
- * This function sets the default values for the form. Note that in edit/view mode
+ * Set default values for the form. Note that in edit/view mode
* the default values are retrieved from the database
*
* @access public
*
- * @param $form
+ * @param CRM_Core_Form $form
* @param $defaults
*
* @return void