dev/core#691 Make default country optional on setting form
authoreileen <emcnaughton@wikimedia.org>
Mon, 4 Feb 2019 02:06:37 +0000 (15:06 +1300)
committereileen <emcnaughton@wikimedia.org>
Wed, 13 Feb 2019 04:22:24 +0000 (17:22 +1300)
This includes removing the default of 'United States'.... ahem!

CRM/Admin/Form/SettingTrait.php
settings/Localization.setting.php
tests/phpunit/CRM/Contact/Import/Parser/ContactTest.php
tests/phpunit/api/v3/ProfileTest.php

index f124ef72e65aec4fd41dd6c3853d181fd1f0fb47..81fb55fa08c4527852e838cab7ea5484bedb4ad9 100644 (file)
@@ -177,6 +177,12 @@ trait CRM_Admin_Form_SettingTrait {
           $options = civicrm_api3('Setting', 'getoptions', [
             'field' => $setting,
           ])['values'];
+          if ($props['html_type'] === 'Select' && isset($props['is_required']) && $props['is_required'] === FALSE && !isset($options[''])) {
+            // If the spec specifies the field is not required add a null option.
+            // Why not if empty($props['is_required']) - basically this has been added to the spec & might not be set to TRUE
+            // when it is true.
+            $options = ['' => ts('None')] + $options;
+          }
         }
         if ($props['type'] === 'Boolean') {
           $options = [$props['title'] => $props['name']];
index 54f05b29716a72f36476338cc2ba0d1fb5ddb24f..3d15ee0f2278abfbdb54d14e7f7eaf5e30aca0bb 100644 (file)
@@ -156,11 +156,11 @@ return array(
     'html_attributes' => array(
       //'class' => 'crm-select2',
     ),
-    'default' => '1228',
     'add' => '4.4',
     'title' => 'Default Country',
     'is_domain' => 1,
     'is_contact' => 0,
+    'is_required' => FALSE,
     'description' => 'This value is selected by default when adding a new contact address.',
     'help_text' => NULL,
     'pseudoconstant' => array(
index 0f059129d66de6d8d4839ea7aaaf95c516012676..e1312ea1d8e0135c21e7242bb5cbbd8dcb31f7d5 100644 (file)
@@ -509,6 +509,7 @@ class CRM_Contact_Import_Parser_ContactTest extends CiviUnitTestCase {
    * CRM-19888 default country should be used if ambigous.
    */
   public function testImportAmbiguousStateCountry() {
+    $this->callAPISuccess('Setting', 'create', ['defaultContactCountry' => 1228]);
     $countries = CRM_Core_PseudoConstant::country(FALSE, FALSE);
     $this->callAPISuccess('Setting', 'create', array('countryLimit' => array(array_search('United States', $countries), array_search('Guyana', $countries), array_search('Netherlands', $countries))));
     $this->callAPISuccess('Setting', 'create', array('provinceLimit' => array(array_search('United States', $countries), array_search('Guyana', $countries), array_search('Netherlands', $countries))));
index d7551c484ca3481d6859b86cd3af5289614edf65..ce7af69fdf7dd3650dc977e3bc53dc004e8da971 100644 (file)
@@ -198,7 +198,7 @@ class api_v3_ProfileTest extends CiviUnitTestCase {
    * Get Billing empty contact - this will return generic defaults
    */
   public function testProfileGetBillingEmptyContact() {
-
+    $this->callAPISuccess('Setting', 'create', ['defaultContactCountry' => 1228]);
     $params = array(
       'profile_id' => array('Billing'),
     );