diff --git a/modules/backend/behaviors/ImportExportController.php b/modules/backend/behaviors/ImportExportController.php index ce3d67d3d..f5e4e6f8d 100644 --- a/modules/backend/behaviors/ImportExportController.php +++ b/modules/backend/behaviors/ImportExportController.php @@ -1,8 +1,10 @@ makeConfig('~/modules/backend/behaviors/importexportcontroller/partials/fields_import.yaml'); $widgetConfig->model = $this->importGetModel(); $widgetConfig->alias = 'importUploadForm'; @@ -169,6 +169,42 @@ class ImportExportController extends ControllerBehavior return $file->getLocalPath(); } + public function onImportLoadColumnSamplePopup() + { + if (($columnId = post('file_column_id', false)) === false) { + throw new ApplicationException('Missing column identifier'); + } + + $columns = $this->getImportFileColumns(); + if (!array_key_exists($columnId, $columns)) { + throw new ApplicationException('Unknown column'); + } + + $path = $this->getImportFilePath(); + $reader = CsvReader::createFromPath($path); + + if (post('first_row_titles')) { + $reader->setOffset(1); + } + + $data = $reader->setLimit(20)->fetchColumn((int) $columnId); + + /* + * Clean up data + */ + foreach ($data as $index => $sample) { + $data[$index] = Str::limit($sample, 100); + if (!strlen($data[$index])) { + unset($data[$index]); + } + } + + $this->vars['columnName'] = array_get($columns, $columnId); + $this->vars['columnData'] = $data; + + return $this->importExportMakePartial('column_sample_popup'); + } + // // Exporting // diff --git a/modules/backend/behaviors/importexportcontroller/assets/js/october.importexport.js b/modules/backend/behaviors/importexportcontroller/assets/js/october.importexport.js index cbdd87d00..0b7649a12 100644 --- a/modules/backend/behaviors/importexportcontroller/assets/js/october.importexport.js +++ b/modules/backend/behaviors/importexportcontroller/assets/js/october.importexport.js @@ -28,7 +28,10 @@ this.loadFileColumnSample = function(el, id) { $(el).popup({ - handler: 'onImportLoadColumnSample' + handler: 'onImportLoadColumnSamplePopup', + extraData: { + file_column_id: id + } }) } } diff --git a/modules/backend/behaviors/importexportcontroller/assets/less/importexport.less b/modules/backend/behaviors/importexportcontroller/assets/less/importexport.less index 30c99989a..c075151df 100644 --- a/modules/backend/behaviors/importexportcontroller/assets/less/importexport.less +++ b/modules/backend/behaviors/importexportcontroller/assets/less/importexport.less @@ -24,7 +24,6 @@ li.dragged { position: absolute; - //opacity: 0.5; z-index: 2000; .box-shadow(0 3px 6px rgba(0,0,0,.075)); } diff --git a/modules/backend/behaviors/importexportcontroller/partials/_column_sample_popup.htm b/modules/backend/behaviors/importexportcontroller/partials/_column_sample_popup.htm new file mode 100644 index 000000000..21a870be3 --- /dev/null +++ b/modules/backend/behaviors/importexportcontroller/partials/_column_sample_popup.htm @@ -0,0 +1,31 @@ + + + \ No newline at end of file diff --git a/modules/backend/behaviors/importexportcontroller/partials/_import_file_columns.htm b/modules/backend/behaviors/importexportcontroller/partials/_import_file_columns.htm index 66438cc85..abe386b31 100644 --- a/modules/backend/behaviors/importexportcontroller/partials/_import_file_columns.htm +++ b/modules/backend/behaviors/importexportcontroller/partials/_import_file_columns.htm @@ -6,7 +6,7 @@