CRM-13981, handling profile selector for mixed profile types in Edit and Copy case
authormonishdeb <monish.deb@webaccess.co.in>
Sat, 18 Jan 2014 20:19:54 +0000 (01:49 +0530)
committerkurund <kurund@civicrm.org>
Fri, 17 Jan 2014 23:39:21 +0000 (15:39 -0800)
----------------------------------------
* CRM-13981: Migrate "In Honor of" to Soft Credits
  http://issues.civicrm.org/jira/browse/CRM-13981

CRM/Contribute/Form/ContributionPage/Settings.php
CRM/UF/Page/ProfileEditor.php
js/model/crm.uf.js
js/view/crm.designer.js

index 33e2dbd3a427ed1937825d4bd6b024e8172efd8f..876952da2410d9334fe4aff4c0e5f9eee6ae991d 100644 (file)
@@ -205,6 +205,9 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_
 
     $entities = array(
       array('entity_name' => 'contact_1',
+        'entity_type' => 'ContactModel'
+      ),
+      array('entity_name' => 'individual_1',
         'entity_type' => 'IndividualModel'
       ),
       array('entity_name' => 'organization_1',
index f7cb404a947701796b97ff6425985cb256bf508d..22184127f6c8bdfd45f78ac80e5e59df8b171202 100644 (file)
@@ -106,6 +106,13 @@ class CRM_UF_Page_ProfileEditor extends CRM_Core_Page {
         //dpm($availableFields);
       }
       switch ($entityType) {
+        case 'ContactModel':
+          $civiSchema[$entityType] = self::convertCiviModelToBackboneModel(
+            'Contact',
+            ts('Contact'),
+            $availableFields
+          );
+          break;
         case 'IndividualModel':
           $civiSchema[$entityType] = self::convertCiviModelToBackboneModel(
             'Individual',
index d956c2b79f9bc257f2fb4081849f75753405f9cd..1a01ac9560507d2a0f778dc9a0f88e6d6f95b19e 100644 (file)
@@ -76,8 +76,9 @@
   CRM.UF.guessEntityName = function(field_type) {
     switch (field_type) {
       case 'Contact':
-      case 'Individual':
         return 'contact_1';
+      case 'Individual':
+        return 'individual_1';
       case 'Organization':
         return 'organization_1';
       case 'Household':
index 0098ca9b1e65201989765c0aaaf80a451a587ca6..43abe18831e7c8ef87287b94beac0d3a7b6f70d8 100644 (file)
       var paletteFieldsByEntitySection = this.model.getRel('paletteFieldCollection').getFieldsByEntitySection();
 
       paletteView.model.getRel('ufEntityCollection').each(function(ufEntityModel){
+         var ufGroupTypes = [];
+
+         if (typeof paletteView.model.attributes.group_type == 'undefined'){
+             //Case 'Copy' where we don't get the group_type directly
+             //TODO: extract the group_type from it and split to carry forward the normal functionality
+             //as in case of Edit
+             CRM.api('UFGroup', 'getsingle' , {'name': paletteView.model.previousAttributes().name}, {
+                 success: function(data) {
+                     ufGroupTypes.push(data.group_type.split(','));
+                 }
+             });
+             //console.log(ufGroupTypes['']);
+         }
+         else {
+             ufGroupTypes = paletteView.model.attributes.group_type.split(',');
+         }
+
+         var allowedEntityNames = [];
+         for(key in ufGroupTypes) {
+             allowedEntityNames[key] = CRM.UF.guessEntityName(ufGroupTypes[key]);
+         }
         _.each(ufEntityModel.getSections(), function(section, sectionKey){
-          var entitySection = ufEntityModel.get('entity_name') + '-' + sectionKey;
+           var entitySection = null;
+           if ($.inArray(ufEntityModel.get('entity_name'), allowedEntityNames) != -1 || !ufGroupTypes) {
+               entitySection = ufEntityModel.get('entity_name') + '-' + sectionKey;
+           }
           var items = [];
-          if (paletteFieldsByEntitySection[entitySection]) {
-            _.each(paletteFieldsByEntitySection[entitySection], function(paletteFieldModel, k) {
-              items.push({data: paletteFieldModel.getLabel(), attr: {'class': 'crm-designer-palette-field', 'data-plm-cid': paletteFieldModel.cid}});
-            });
-          }
-          if (section.is_addable) {
-            items.push({data: ts('+ Add New Field'), attr: {'class': 'crm-designer-palette-add'}});
-          }
-          if (items.length > 0) {
-            treeData.push({
-              data: section.title,
-              children: items,
-              state: _.contains(paletteView.openTreeNodes, sectionKey) ? 'open' : 'closed',
-              attr: {
-                'class': 'crm-designer-palette-section',
-                'data-section': sectionKey,
-                'data-entity': ufEntityModel.get('entity_name')
-              }
-            });
-          }
+          if (entitySection) {
+            if (paletteFieldsByEntitySection[entitySection]) {
+              _.each(paletteFieldsByEntitySection[entitySection], function(paletteFieldModel, k) {
+                items.push({data: paletteFieldModel.getLabel(), attr: {'class': 'crm-designer-palette-field', 'data-plm-cid': paletteFieldModel.cid}});
+              });
+            }
+            if (section.is_addable) {
+              items.push({data: ts('+ Add New Field'), attr: {'class': 'crm-designer-palette-add'}});
+            }
+            if (items.length > 0) {
+             treeData.push({
+                data: section.title,
+                children: items,
+                state: _.contains(paletteView.openTreeNodes, sectionKey) ? 'open' : 'closed',
+                attr: {
+                  'class': 'crm-designer-palette-section',
+                  'data-section': sectionKey,
+                  'data-entity': ufEntityModel.get('entity_name')
+               }
+              });
+            }
+         }
         })
       });