|
7 | 7 | <?php
|
8 | 8 | /** @var $block \Magento\ImportExport\Block\Adminhtml\Import\Edit\Before */
|
9 | 9 | /** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
|
| 10 | +$fieldNameSourceFile = \Magento\ImportExport\Model\Import::FIELD_NAME_SOURCE_FILE; |
| 11 | +$uploaderErrorMessage = $block->escapeHtml( |
| 12 | + __('Content of uploaded file was changed, please re-upload the file') |
| 13 | +); |
10 | 14 | ?>
|
11 | 15 |
|
12 | 16 | <?php $scriptString = <<<script
|
@@ -49,6 +53,12 @@ require([
|
49 | 53 | */
|
50 | 54 | sampleFilesBaseUrl: '{$block->escapeJs($block->getUrl('*/*/download/', ['filename' => 'entity-name']))}',
|
51 | 55 |
|
| 56 | + /** |
| 57 | + * Loaded file last modified |
| 58 | + * @type {int|null} |
| 59 | + */ |
| 60 | + loadedFileLastModified: null, |
| 61 | +
|
52 | 62 | /**
|
53 | 63 | * Reset selected index
|
54 | 64 | * @param {string} elementId
|
@@ -162,11 +172,50 @@ require([
|
162 | 172 | }
|
163 | 173 | },
|
164 | 174 |
|
| 175 | + /** |
| 176 | + * Refresh loaded file last modified |
| 177 | + */ |
| 178 | + refreshLoadedFileLastModified: function(e) { |
| 179 | + if (jQuery(e)[0].files.length > 0) { |
| 180 | + this.loadedFileLastModified = jQuery(e)[0].files[0].lastModified; |
| 181 | + } else { |
| 182 | + this.loadedFileLastModified = null; |
| 183 | + } |
| 184 | + }, |
| 185 | +
|
165 | 186 | /**
|
166 | 187 | * Post form data to dynamic iframe.
|
167 | 188 | * @param {string} newActionUrl OPTIONAL Change form action to this if specified
|
168 | 189 | */
|
169 | 190 | postToFrame: function(newActionUrl) {
|
| 191 | + var fileUploader = document.getElementById('{$fieldNameSourceFile}'); |
| 192 | +
|
| 193 | + if (fileUploader.files.length > 0) { |
| 194 | + var file = fileUploader.files[0], |
| 195 | + ifrElName = this.ifrElemName, |
| 196 | + reader = new FileReader(); |
| 197 | +
|
| 198 | + reader.readAsText(file, "UTF-8"); |
| 199 | +
|
| 200 | + reader.onerror = function () { |
| 201 | + jQuery('body').loader('hide'); |
| 202 | + alert({ |
| 203 | + content: '{$uploaderErrorMessage}' |
| 204 | + }); |
| 205 | + fileUploader.value = null; |
| 206 | + jQuery('iframe#' + ifrElName).remove(); |
| 207 | + return; |
| 208 | + } |
| 209 | +
|
| 210 | + if (file.lastModified !== this.loadedFileLastModified) { |
| 211 | + alert({ |
| 212 | + content: '{$uploaderErrorMessage}' |
| 213 | + }); |
| 214 | + fileUploader.value = null; |
| 215 | + return; |
| 216 | + } |
| 217 | + } |
| 218 | +
|
170 | 219 | if (!jQuery('[name="' + this.ifrElemName + '"]').length) {
|
171 | 220 | jQuery('body').append('<iframe name="' + this.ifrElemName + '" id="' + this.ifrElemName + '"/>');
|
172 | 221 | jQuery('iframe#' + this.ifrElemName).attr('display', 'none');
|
|
0 commit comments