Move calculation of js for import fields WITH relationship keys to processor.
authoreileen <emcnaughton@wikimedia.org>
Thu, 5 Sep 2019 00:12:38 +0000 (12:12 +1200)
committereileen <emcnaughton@wikimedia.org>
Thu, 5 Sep 2019 02:31:35 +0000 (14:31 +1200)
As should be obvious we can collapse a lot more out with the next commit now....

CRM/Contact/Import/Form/MapField.php
CRM/Import/ImportProcessor.php

index 355bea62e8e3f717846df48c2f7f489a6dfd6dfe..0b445d84575693f71b38d59f941e161f32358c63 100644 (file)
@@ -864,32 +864,8 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
       if ($mappingName[$i] != ts('- do not import -')) {
 
         if ($processor->getRelationshipKey($i)) {
-
-          $contactDetails = strtolower(str_replace(" ", "_", $mappingName[$i]));
-          $websiteTypeId = $processor->getWebsiteTypeID($i);
-          $locationId = $processor->getLocationTypeID($i);
-          $phoneType = $processor->getPhoneTypeID($i);
-          $imProvider = $processor->getIMProviderID($i);
-
           $defaults["mapper[$i]"] = $processor->getSavedQuickformDefaultsForColumn($i);
-          if (!$websiteTypeId) {
-            if (!$locationId) {
-              $js .= "{$formName}['mapper[$i][2]'].style.display = 'none';\n";
-            }
-          }
-          // fix for edge cases, CRM-4954
-          if ($contactDetails == 'image_url') {
-            $contactDetails = str_replace('url', 'URL', $contactDetails);
-          }
-
-          if (!$contactDetails) {
-            $js .= "{$formName}['mapper[$i][1]'].style.display = 'none';\n";
-          }
-
-          if ((!$phoneType) && (!$imProvider)) {
-            $js .= "{$formName}['mapper[$i][3]'].style.display = 'none';\n";
-          }
-          //$js .= "{$formName}['mapper[$i][3]'].style.display = 'none';\n";
+          $js = $processor->getQuickFormJSForField($i);
           $jsSet = TRUE;
         }
         else {
index 035591c4465c68641662cdc923d92f13862e796b..453fe317f56c8889d7dfa81af42ad9bce1bebc32 100644 (file)
@@ -488,20 +488,32 @@ class CRM_Import_ImportProcessor {
    */
   public function getQuickFormJSForField($column) {
     $columnNumbersToHide = [];
-
-    if (!$this->getLocationTypeID($column) && !$this->getWebsiteTypeID($column)) {
-      $columnNumbersToHide[] = 1;
+    if ($this->getRelationshipKey($column)) {
+      if (!$this->getWebsiteTypeID($column) && !$this->getLocationTypeID($column)) {
+        $columnNumbersToHide[] = 2;
+      }
+      if (!$this->getFieldName($column)) {
+        $columnNumbersToHide[] = 1;
+      }
+      if (!$this->getPhoneOrIMTypeID($column)) {
+        $columnNumbersToHide[] = 3;
+      }
     }
-    if (!$this->getPhoneOrIMTypeID($column)) {
-      $columnNumbersToHide[] = 2;
+    else {
+      if (!$this->getLocationTypeID($column) && !$this->getWebsiteTypeID($column)) {
+        $columnNumbersToHide[] = 1;
+      }
+      if (!$this->getPhoneOrIMTypeID($column)) {
+        $columnNumbersToHide[] = 2;
+      }
+      $columnNumbersToHide[] = 3;
     }
-    $columnNumbersToHide[] = 3;
 
     $jsClauses = [];
     foreach ($columnNumbersToHide as $columnNumber) {
       $jsClauses[] = $this->getFormName() . "['mapper[$column][" . $columnNumber . "]'].style.display = 'none';";
     }
-    return implode("\n", $jsClauses) . "\n";
+    return empty($jsClauses) ? '' : implode("\n", $jsClauses) . "\n";
   }
 
   /**