diff --git a/modules/backend/behaviors/importexportcontroller/assets/js/october.import.js b/modules/backend/behaviors/importexportcontroller/assets/js/october.import.js index dedcdaf6f..6c2eb9e2b 100644 --- a/modules/backend/behaviors/importexportcontroller/assets/js/october.import.js +++ b/modules/backend/behaviors/importexportcontroller/assets/js/october.import.js @@ -53,8 +53,6 @@ this.onDropColumn = function ($dbItem, container, _super, event) { var - dbColumnName = $dbItem.data('column-name'), - $dbItemMatchInput = $('[data-column-match-input]' , $dbItem), $fileColumns = $('#importFileColumns'), $fileItem, isMatch = $.contains($fileColumns.get(0), $dbItem.get(0)), @@ -74,21 +72,15 @@ */ if (isMatch) { $fileItem = $dbItem.closest('[data-column-id]'), - matchColumnId = $fileItem.data('column-id') - - this.toggleMatchState($fileItem) - - $dbItem.data('column-matched-id', matchColumnId) - $dbItemMatchInput.attr('name', 'column_match['+matchColumnId+'][]') - $dbItemMatchInput.attr('value', dbColumnName) + this.matchColumn($dbItem, $fileItem) } else { - $dbItem.removeData('column-matched-id') - $dbItemMatchInput.attr('name', ''); - $dbItemMatchInput.attr('value', ''); + this.unmatchColumn($dbItem) } - _super($dbItem, container) + if (_super) { + _super($dbItem, container) + } } this.toggleMatchState = function ($container) { @@ -104,11 +96,53 @@ $('#showIgnoredColumnsButton').removeClass('disabled') } - this.showIgnoredColumns = function(el) { + this.showIgnoredColumns = function() { $('#importFileColumns li.is-ignored').removeClass('is-ignored') $('#showIgnoredColumnsButton').addClass('disabled') } + this.autoMatchColumns = function() { + var self = this, + fileColumns = {}, + $this, + name + + $('#importFileColumns li').each(function() { + $this = $(this) + name = $.trim($('.column-label', $this).text()) + fileColumns[name] = $this + }) + + $('#importDbColumns li').each(function() { + $this = $(this) + name = $.trim($('> span', $this).text()) + if (fileColumns[name]) { + + $this.appendTo($('.import-column-bindings > ul', fileColumns[name])) + self.matchColumn($this, fileColumns[name]) + } + }) + } + + this.matchColumn = function($dbItem, $fileItem) { + var matchColumnId = $fileItem.data('column-id'), + dbColumnName = $dbItem.data('column-name'), + $dbItemMatchInput = $('[data-column-match-input]', $dbItem) + + this.toggleMatchState($fileItem) + + $dbItem.data('column-matched-id', matchColumnId) + $dbItemMatchInput.attr('name', 'column_match['+matchColumnId+'][]') + $dbItemMatchInput.attr('value', dbColumnName) + } + + this.unmatchColumn = function($dbItem) { + var $dbItemMatchInput = $('[data-column-match-input]', $dbItem) + + $dbItem.removeData('column-matched-id') + $dbItemMatchInput.attr('name', ''); + $dbItemMatchInput.attr('value', ''); + } } $.oc.importBehavior = new ImportBehavior; diff --git a/modules/backend/behaviors/importexportcontroller/partials/_import_toolbar.htm b/modules/backend/behaviors/importexportcontroller/partials/_import_toolbar.htm index 7d743ecd5..0cf45837f 100644 --- a/modules/backend/behaviors/importexportcontroller/partials/_import_toolbar.htm +++ b/modules/backend/behaviors/importexportcontroller/partials/_import_toolbar.htm @@ -6,4 +6,11 @@ onclick="$.oc.importBehavior.showIgnoredColumns()"> Show ignored columns + + Auto match columns + \ No newline at end of file diff --git a/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml b/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml index adee49efd..c7156fbb9 100644 --- a/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml +++ b/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml @@ -13,6 +13,7 @@ fields: mode: file span: left fileTypes: csv + useCaption: false first_row_titles: label: First row contains column titles diff --git a/modules/backend/models/ImportModel.php b/modules/backend/models/ImportModel.php index 253e5485d..d34112f8f 100644 --- a/modules/backend/models/ImportModel.php +++ b/modules/backend/models/ImportModel.php @@ -135,7 +135,7 @@ abstract class ImportModel extends Model */ protected function decodeArrayValue($value, $delimeter = '|') { - if (strpos($value, $delimeter) === false) return $value; + if (strpos($value, $delimeter) === false) return [$value]; $data = preg_split('~(?