Skip to content

Commit 0520960

Browse files
committed
Merge remote-tracking branch 'origin/MC-36410' into 2.4-develop-pr41
2 parents 8ddb905 + 9f166b9 commit 0520960

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ protected function _prepareForm()
226226
'title' => __('Select File to Import'),
227227
'required' => true,
228228
'class' => 'input-file',
229+
'onchange' => 'varienImport.refreshLoadedFileLastModified(this);',
229230
'note' => __(
230231
'File must be saved in UTF-8 encoding for proper import'
231232
),
@@ -282,7 +283,7 @@ protected function getDownloadSampleFileHtml()
282283
private function getImportBehaviorTooltip()
283284
{
284285
$html = '<div class="admin__field-tooltip tooltip">
285-
<a class="admin__field-tooltip-action action-help" target="_blank" title="What is this?"
286+
<a class="admin__field-tooltip-action action-help" target="_blank" title="What is this?"
286287
href="https://docs.magento.com/m2/ce/user_guide/system/data-import.html"><span>'
287288
. __('What is this?')
288289
. '</span></a></div>';

app/code/Magento/ImportExport/i18n/en_US.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,4 @@ Summary,Summary
127127
"File %1 deleted","File %1 deleted"
128128
"Please provide valid export file name","Please provide valid export file name"
129129
"%1 is not a valid file","%1 is not a valid file"
130+
"Content of uploaded file was changed, please re-upload the file","Content of uploaded file was changed, please re-upload the file"

app/code/Magento/ImportExport/view/adminhtml/templates/import/form/before.phtml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
<?php
88
/** @var $block \Magento\ImportExport\Block\Adminhtml\Import\Edit\Before */
99
/** @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+
);
1014
?>
1115

1216
<?php $scriptString = <<<script
@@ -49,6 +53,12 @@ require([
4953
*/
5054
sampleFilesBaseUrl: '{$block->escapeJs($block->getUrl('*/*/download/', ['filename' => 'entity-name']))}',
5155
56+
/**
57+
* Loaded file last modified
58+
* @type {int|null}
59+
*/
60+
loadedFileLastModified: null,
61+
5262
/**
5363
* Reset selected index
5464
* @param {string} elementId
@@ -162,11 +172,50 @@ require([
162172
}
163173
},
164174
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+
165186
/**
166187
* Post form data to dynamic iframe.
167188
* @param {string} newActionUrl OPTIONAL Change form action to this if specified
168189
*/
169190
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+
170219
if (!jQuery('[name="' + this.ifrElemName + '"]').length) {
171220
jQuery('body').append('<iframe name="' + this.ifrElemName + '" id="' + this.ifrElemName + '"/>');
172221
jQuery('iframe#' + this.ifrElemName).attr('display', 'none');

0 commit comments

Comments
 (0)