dev/core#1339 Dedupe screen check to carry across any data where the other contact...
authoreileen <emcnaughton@wikimedia.org>
Thu, 24 Oct 2019 03:28:29 +0000 (16:28 +1300)
committereileen <emcnaughton@wikimedia.org>
Fri, 25 Oct 2019 20:34:55 +0000 (09:34 +1300)
This change in default means that if the contact to be deleted has data in a field and the contact to be kept does not the
checkbox loads as checked by default (so it's easier to keep too much data but harder to lose some.)

https://lab.civicrm.org/dev/core/issues/1339

The user can override by unchecking - this is just what is set on screen load

CRM/Contact/Form/Merge.php
CRM/Dedupe/Merger.php

index da804021ea2ce1ab7eafde17ca6349518af0f62f..2cab779d1aa32873ee948cb4b7b969c700a02d8a 100644 (file)
@@ -225,13 +225,16 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form {
           // @todo consider enabling if it is an add & defaulting to true.
           $element[4] = array_merge((array) CRM_Utils_Array::value(4, $element, []), ['disabled' => TRUE]);
         }
-        $this->addElement($element[0],
+        $newCheckBox = $this->addElement($element[0],
           $element[1],
           array_key_exists('2', $element) ? $element[2] : NULL,
           array_key_exists('3', $element) ? $element[3] : NULL,
           array_key_exists('4', $element) ? $element[4] : NULL,
           array_key_exists('5', $element) ? $element[5] : NULL
         );
+        if (!empty($element['is_checked'])) {
+          $newCheckBox->setChecked(TRUE);
+        }
       }
 
       // add related table elements
index 339338bf2a6c055a1e59d743509cdb4b52cd7084..5eeb90c8482c3cc5a3b7f94887b5ad3f7e5a6f4e 100644 (file)
@@ -1109,12 +1109,13 @@ INNER JOIN  civicrm_membership membership2 ON membership1.membership_type_id = m
       // Display a checkbox to migrate, only if the values are different
       if ($value != $main[$field]) {
         $elements[] = [
-          'advcheckbox',
-          "move_$field",
-          NULL,
-          NULL,
-          NULL,
-          $value,
+          0 => 'advcheckbox',
+          1 => "move_$field",
+          2 => NULL,
+          3 => NULL,
+          4 => NULL,
+          5 => $value,
+          'is_checked' => (!isset($main[$field]) || $main[$field] === ''),
         ];
       }