Make default format options in ImportExportBehaviour configurable (#4200)

Credit to @alxy.

If the default format mode is selected, there is no chance to configure the format options for delimiter, enclosure, escape and encoding. This considers a new config file item `defaultFormatOptions` and falls back to `null` if it is not specified.

To keep things consistent, the old default values remain untouched.
This commit is contained in:
Alexander Guth 2019-04-02 03:00:41 +08:00 committed by Luke Towers
parent dadb3e2c01
commit b3eb95bb62
1 changed files with 8 additions and 6 deletions

View File

@ -601,8 +601,9 @@ class ImportExportController extends ControllerBehavior
*/ */
$defaultOptions = [ $defaultOptions = [
'fileName' => $this->exportFileName, 'fileName' => $this->exportFileName,
'delimiter' => ',', 'delimiter' => $this->getConfig('defaultFormatOptions[delimiter]', ','),
'enclosure' => '"' 'enclosure' => $this->getConfig('defaultFormatOptions[enclosure]', '"'),
'escape' => $this->getConfig('defaultFormatOptions[escape]', '\\'),
]; ];
$options = array_merge($defaultOptions, $options); $options = array_merge($defaultOptions, $options);
@ -615,6 +616,7 @@ class ImportExportController extends ControllerBehavior
$csv = CsvWriter::createFromFileObject(new SplTempFileObject); $csv = CsvWriter::createFromFileObject(new SplTempFileObject);
$csv->setDelimiter($options['delimiter']); $csv->setDelimiter($options['delimiter']);
$csv->setEnclosure($options['enclosure']); $csv->setEnclosure($options['enclosure']);
$csv->setEscape($options['escape']);
/* /*
* Add headers * Add headers
@ -815,10 +817,10 @@ class ImportExportController extends ControllerBehavior
$presetMode = post('format_preset'); $presetMode = post('format_preset');
$options = [ $options = [
'delimiter' => null, 'delimiter' => $this->getConfig('defaultFormatOptions[delimiter]'),
'enclosure' => null, 'enclosure' => $this->getConfig('defaultFormatOptions[enclosure]'),
'escape' => null, 'escape' => $this->getConfig('defaultFormatOptions[escape]'),
'encoding' => null 'encoding' => $this->getConfig('defaultFormatOptions[encoding]'),
]; ];
if ($presetMode == 'custom') { if ($presetMode == 'custom') {