CRM-15181, setdefault fixes for state/country
authorkurund <kurund@civicrm.org>
Mon, 8 Sep 2014 18:38:50 +0000 (00:08 +0530)
committerkurund <kurund@civicrm.org>
Mon, 8 Sep 2014 18:38:50 +0000 (00:08 +0530)
----------------------------------------
* CRM-15181: on behalf of profile: adv multi-select fails with preset options
  https://issues.civicrm.org/jira/browse/CRM-15181

CRM/Core/Page/AJAX/Location.php
templates/CRM/Contribute/Form/Contribution/OnBehalfOf.tpl

index 90e553da6313a7a30e9097868cd2b9c985d679f3..3ffdf59cdeb536a5717f1997e9fc8e8e7a646d4a 100644 (file)
@@ -137,12 +137,16 @@ class CRM_Core_Page_AJAX_Location {
       foreach ($addressFields as $field) {
         if (array_key_exists($field, $addressSequence)) {
           $addField = $field;
+          $type = 'Text';
           if (in_array($field, array(
             'state_province', 'country'))) {
             $addField = "{$field}_id";
+            $type = 'Select2';
           }
           $elements["onbehalf_{$field}-{$locTypeId}"] = array(
-            'type' => 'Text',
+            'fld' => $field,
+            'locTypeId' => $locTypeId,
+            'type' => $type,
             'value' =>  isset($location['address'][1]) ? $location['address'][1][$addField] : null,
           );
           unset($profileFields["{$field}-{$locTypeId}"]);
index 58e4ef82fcba347c8e62ed5c70a87836c9ca6ddc..d45327f365e6e65de65f552c82f92b65b8f058a1 100644 (file)
@@ -203,12 +203,13 @@ function setLocationDetails(contactID , reset) {
   var submittedOnBehalfInfo = {/literal}'{$submittedOnBehalfInfo}'{literal};
   if (submittedOnBehalfInfo) {
     submittedOnBehalfInfo = cj.parseJSON(submittedOnBehalfInfo);
-  }
-  if (submittedCID == contactID) {
-    cj.each(submittedOnBehalfInfo, function(key, value) {
-      cj('#onbehalf_' + key ).val(value);
-    });
-    return;
+
+    if (submittedCID == contactID) {
+      cj.each(submittedOnBehalfInfo, function(key, value) {
+        cj('#onbehalf_' + key ).val(value);
+      });
+      return;
+    }
   }
 
   resetValues();
@@ -234,6 +235,16 @@ function setLocationDetails(contactID , reset) {
             cj('#' + ele + " option[value='" + selectedOption + "']").prop('selected', true);
           }
         }
+        else if (data[ele].type == 'Select2') {
+          if (data[ele].fld == 'country') {
+            cj('#' + ele ).select2('val', data[ele].value).change(function() {
+              var stateField = 'onbehalf_state_province-' + data[ele].locTypeId;
+              if (stateField.length > 0 ) {
+                cj('#' + stateField).select2('val', data[stateField].value);
+              }
+            }).change();
+          }
+        }
         else if (data[ele].type == 'Autocomplete-Select') {
           cj('#' + ele ).val( data[ele].value );
           cj('#' + ele + '_id').val(data[ele].id);