CRM-15684: onbehalf profile js break fixes
authorkurund <kurund@civicrm.org>
Thu, 4 Dec 2014 11:59:50 +0000 (17:29 +0530)
committerkurund <kurund@civicrm.org>
Thu, 4 Dec 2014 11:59:50 +0000 (17:29 +0530)
----------------------------------------
* CRM-15684: Onbehalf fails to set organizations information
  https://issues.civicrm.org/jira/browse/CRM-15684

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

index a5b4002caf81bbc5779f314bd45a8a51c1917cb1..c0aac0c5337e4996952c0ce87c57504be2c07b4e 100644 (file)
@@ -157,17 +157,16 @@ class CRM_Core_Page_AJAX_Location {
 
       if (!empty($defaults)) {
         foreach ($profileFields as $key => $val) {
-
           if (array_key_exists($key, $defaults)) {
             $htmlType = CRM_Utils_Array::value('html_type', $val);
             if ($htmlType == 'Radio') {
-              $elements["onbehalf[{$key}]"]['type'] = $htmlType;
-              $elements["onbehalf[{$key}]"]['value'] = $defaults[$key];
+              $elements["onbehalf_{$key}"]['type'] = $htmlType;
+              $elements["onbehalf_{$key}"]['value'] = $defaults[$key];
             }
             elseif ($htmlType == 'CheckBox') {
+              $elements["onbehalf_{$key}"]['type'] = $htmlType;
               foreach ($defaults[$key] as $k => $v) {
-                $elements["onbehalf[{$key}][{$k}]"]['type'] = $htmlType;
-                $elements["onbehalf[{$key}][{$k}]"]['value'] = $v;
+                $elements["onbehalf_{$key}"]['value'][$k] = $v;
               }
             }
             elseif ($htmlType == 'Multi-Select') {
index 3fe53cd702dda4062aafda71de336eaee21a3243..cd216b1a8a6155c77c4780f1456c4a55ecc837f8 100644 (file)
@@ -227,12 +227,14 @@ function setLocationDetails(contactID , reset) {
         }
         if (data[ele].type == 'Radio') {
           if (data[ele].value) {
-            cj("input[name='"+ ele +"']").filter("[value=" + data[ele].value + "]").prop('checked', true);
+            var fldName = ele.replace('onbehalf_', '');
+            cj("input[name='onbehalf["+ fldName +"]']").filter("[value='" + data[ele].value + "']").prop('checked', true);
           }
         }
         else if (data[ele].type == 'CheckBox') {
-          if (data[ele].value) {
-            cj("input[name='"+ ele +"']").prop('checked','checked');
+          for (var selectedOption in data[ele].value) {
+            var fldName = ele.replace('onbehalf_', '');
+            cj("input[name='onbehalf["+ fldName+"]["+ selectedOption +"]']").prop('checked','checked');
           }
         }
         else if (data[ele].type == 'Multi-Select') {
@@ -258,7 +260,10 @@ function setLocationDetails(contactID , reset) {
           }
         }
         else {
-          cj('#' + ele ).val(data[ele].value).change();
+          // do not set defaults to file type fields
+          if (cj('#' + ele).attr('type') != 'file') {
+            cj('#' + ele ).val(data[ele].value).change();
+          }
         }
       }
     },