From: Eileen McNaughton Date: Thu, 26 Jan 2023 00:41:03 +0000 (+1300) Subject: Fix fieldSeparator field missing / notice regression X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=cc260683a305a1dc6f833a4362ff621f176a94dd;p=civicrm-core.git Fix fieldSeparator field missing / notice regression --- diff --git a/CRM/Contact/Import/Form/DataSource.php b/CRM/Contact/Import/Form/DataSource.php index 3a0d52336e..3c65435a90 100644 --- a/CRM/Contact/Import/Form/DataSource.php +++ b/CRM/Contact/Import/Form/DataSource.php @@ -93,8 +93,6 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Import_Form_DataSource { $this->addElement('checkbox', 'doGeocodeAddress', ts('Geocode addresses during import?')); } - $this->addElement('text', 'fieldSeparator', ts('Import Field Separator'), ['size' => 2]); - if (Civi::settings()->get('address_standardization_provider') === 'USPS') { $this->addElement('checkbox', 'disableUSPS', ts('Disable USPS address validation during import?')); } diff --git a/CRM/Import/DataSource/CSV.php b/CRM/Import/DataSource/CSV.php index 17a57912dd..bc87dcbba4 100644 --- a/CRM/Import/DataSource/CSV.php +++ b/CRM/Import/DataSource/CSV.php @@ -41,7 +41,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * It should add all fields necessary to get the data * uploaded to the temporary table in the DB. * - * @param CRM_Core_Form $form + * @param CRM_Contact_Import_Form_DataSource|\CRM_Import_Form_DataSourceConfig $form * * @throws \CRM_Core_Exception */ @@ -56,6 +56,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { $uploadSize = round(($uploadFileSize / (1024 * 1024)), 2); $form->assign('uploadSize', $uploadSize); $form->add('File', 'uploadFile', ts('Import Data File'), NULL, TRUE); + $form->addElement('text', 'fieldSeparator', ts('Import Field Separator'), ['size' => 2]); $form->setMaxFileSize($uploadFileSize); $form->addRule('uploadFile', ts('File size should be less than %1 MBytes (%2 bytes)', [ 1 => $uploadSize, @@ -63,7 +64,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { ]), 'maxfilesize', $uploadFileSize); $form->addRule('uploadFile', ts('Input file must be in CSV format'), 'utf8File'); $form->addRule('uploadFile', ts('A valid file must be uploaded.'), 'uploadedfile'); - + $form->setDataSourceDefaults($this->getDefaultValues()); $form->addElement('checkbox', 'skipColumnHeader', ts('First row contains column headers')); } @@ -260,4 +261,17 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { return preg_replace("/^(\u{a0})+|(\u{a0})+$/", '', $string); } + /** + * Get default values for csv dataSource fields. + * + * @return array + */ + public function getDefaultValues(): array { + return [ + 'fieldSeparator' => CRM_Core_Config::singleton()->fieldSeparator, + 'skipColumnHeader' => 1, + ]; + + } + } diff --git a/CRM/Import/Form/DataSource.php b/CRM/Import/Form/DataSource.php index 5be9b595fe..29008b234a 100644 --- a/CRM/Import/Form/DataSource.php +++ b/CRM/Import/Form/DataSource.php @@ -96,11 +96,10 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms { } public function setDefaultValues() { - return [ + return array_merge($this->dataSourceDefaults, [ 'dataSource' => $this->getDefaultDataSource(), 'onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP, - 'fieldSeparator' => CRM_Core_Config::singleton()->fieldSeparator, - ]; + ]); } @@ -191,4 +190,23 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms { $this->getDataSourceObject()->initialize(); } + /** + * Default values for datasource fields. + * + * @var array + */ + protected $dataSourceDefaults = []; + + /** + * Set dataSource default values. + * + * @param array $dataSourceDefaults + * + * @return self + */ + public function setDataSourceDefaults(array $dataSourceDefaults): self { + $this->dataSourceDefaults = $dataSourceDefaults; + return $this; + } + } diff --git a/CRM/Import/Form/DataSourceConfig.php b/CRM/Import/Form/DataSourceConfig.php index 697de6c997..b8bd425ba4 100644 --- a/CRM/Import/Form/DataSourceConfig.php +++ b/CRM/Import/Form/DataSourceConfig.php @@ -20,6 +20,25 @@ */ class CRM_Import_Form_DataSourceConfig extends CRM_Import_Forms { + /** + * Default values for datasource fields. + * + * @var array + */ + protected $dataSourceDefaults = []; + + /** + * Set dataSource default values. + * + * @param array $dataSourceDefaults + * + * @return CRM_Import_Form_DataSourceConfig + */ + public function setDataSourceDefaults(array $dataSourceDefaults): CRM_Import_Form_DataSourceConfig { + $this->dataSourceDefaults = $dataSourceDefaults; + return $this; + } + /** * Set variables up before form is built. * @@ -57,6 +76,9 @@ class CRM_Import_Form_DataSourceConfig extends CRM_Import_Forms { $defaults[$fieldName] = $this->getSubmittedValue($fieldName); } } + else { + $defaults = array_merge($this->dataSourceDefaults, $defaults); + } return $defaults; } diff --git a/templates/CRM/Contact/Import/Form/CSV.tpl b/templates/CRM/Contact/Import/Form/CSV.tpl index 59c0cdee9a..18c838740d 100644 --- a/templates/CRM/Contact/Import/Form/CSV.tpl +++ b/templates/CRM/Contact/Import/Form/CSV.tpl @@ -22,5 +22,9 @@
{ts}Check this box if the first row of your file consists of field names (Example: 'First Name','Last Name','Email'){/ts}
+ + {$form.fieldSeparator.label} {help id='id-fieldSeparator' file='CRM/Contact/Import/Form/DataSource'} + {$form.fieldSeparator.html} + diff --git a/templates/CRM/Import/Form/DataSource.tpl b/templates/CRM/Import/Form/DataSource.tpl index 7aef23417d..5da2f56a9f 100644 --- a/templates/CRM/Import/Form/DataSource.tpl +++ b/templates/CRM/Import/Form/DataSource.tpl @@ -61,10 +61,6 @@ {$form.multipleCustomData.html} {/if} - - {$form.fieldSeparator.label} {help id='id-fieldSeparator' file='CRM/Contact/Import/Form/DataSource'} - {$form.fieldSeparator.html} - {include file="CRM/Core/Date.tpl"} {if array_key_exists('savedMapping', $form)}