Skip to content

Commit

Permalink
Compatible Magento 2.4.7
Browse files Browse the repository at this point in the history
  • Loading branch information
magiccart committed May 13, 2024
1 parent 4fbe1be commit 4670507
Show file tree
Hide file tree
Showing 4 changed files with 215 additions and 8 deletions.
4 changes: 2 additions & 2 deletions Controller/Adminhtml/Index/Gallery/UploadMobile.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public function execute()
try {
$uploader = $this->_objectManager->create(
'Magento\MediaStorage\Model\File\Uploader',
['fileId' => 'image_mobile']
['fileId' => 'image']
);
$uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']);
/** @var \Magento\Framework\Image\Adapter\AdapterInterface $imageAdapter */
Expand All @@ -33,7 +33,7 @@ public function execute()
$config = $this->_objectManager->get('Magiccart\Magicslider\Model\Magicslider\Media\ConfigMobile');
$result = $uploader->save($mediaDirectory->getAbsolutePath($config->getBaseTmpMediaPath()));

unset($result['tmp_names']);
unset($result['tmp_name']);
unset($result['path']);

$result['url'] = $this->_objectManager->get('Magiccart\Magicslider\Model\Magicslider\Media\ConfigMobile')
Expand Down
20 changes: 14 additions & 6 deletions view/adminhtml/templates/media/uploader.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,31 @@
/** @var $block \Magento\Backend\Block\Media\Uploader */
?>
<?php
$maxWidth = $block->getImageUploadMaxWidth() ? $block->getImageUploadMaxWidth() : 2880;
$maxHeight = $block->getImageUploadMaxHeight() ? $block->getImageUploadMaxHeight() : 1800;
$productMetadata = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Framework\App\ProductMetadataInterface::class);
$magentoVersion = str_replace(['dev-', '-develop'], ['', '.0'], $productMetadata->getVersion());
$breakVersion = '2.4.7';
$isBreak = version_compare($magentoVersion, $breakVersion, '<');
$maxWidth = $block->getImageUploadMaxWidth() ? $block->getImageUploadMaxWidth() : 3000;
$maxHeight = $block->getImageUploadMaxHeight() ? $block->getImageUploadMaxHeight() : 2000;
?>
<div id="<?= $block->getHtmlId() ?>" class="uploader"
data-mage-init='{
"Magento_Backend/js/media-uploader" : {
"<?= $isBreak ? 'Magento_Backend' : 'Magiccart_Magicslider' ?>/js/media-uploader" : {
"maxFileSize": <?= /* @escapeNotVerified */ $block->getFileSizeService()->getMaxFileSize() ?>,
"maxWidth":<?= /* @escapeNotVerified */ $maxWidth ?> ,
"maxHeight": <?= /* @escapeNotVerified */ $maxHeight ?>
"maxHeight": <?= /* @escapeNotVerified */ $maxHeight ?>,
"isResizeEnabled": false
}
}'
>
<div class="fileinput-button form-buttons button">
<span><?= /* @escapeNotVerified */ __('Browse Files...') ?></span>
<input id="fileupload" type="file" name="<?= /* @escapeNotVerified */ $block->getConfig()->getFileField() ?>"
<?php if ($isBreak) : ?>
<input id="fileupload" type="file" name="<?= /* @escapeNotVerified */ $block->getConfig()->getFileField() ?>"
data-url="<?= /* @escapeNotVerified */ $block->getConfig()->getUrl() ?>" multiple="multiple" />
<?php else : ?>
<div class="fileUploader" id="fileUploader-<?= $block->getHtmlId() ?>" data-url="<?= $escaper->escapeHtmlAttr($block->getConfig()->getUrl()) ?>"></div>
<?php endif ?>
</div>
<div class="clear"></div>
<script id="<?= $block->getHtmlId() ?>-template" type="text/x-magento-template" data-template="uploader">
Expand All @@ -37,4 +46,3 @@
</div>
</script>
</div>

15 changes: 15 additions & 0 deletions view/adminhtml/web/css/source/_module.less
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,21 @@
display: none;
}

.image.image-placeholder .fileUploader{
border: 500px solid transparent;
bottom: 0;
cursor: pointer;
font-size: 10em;
height: 100%;
left: 0;
opacity: 0;
position: absolute;
right: 0;
top: 0;
width: 100%;
z-index: 3;
}

.magicslider-snippet{
li {
margin: 7px 10px;
Expand Down
184 changes: 184 additions & 0 deletions view/adminhtml/web/js/media-uploader.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
/**
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

/* eslint-disable no-undef */

/**
* @api
*/

/*global byteConvert*/
define([
'jquery',
'mage/template',
'Magento_Ui/js/modal/alert',
'Magento_Ui/js/form/element/file-uploader',
'mage/translate',
'jquery/uppy-core'
], function ($, mageTemplate, alert, FileUploader) {
'use strict';

let fileUploader = new FileUploader({
dataScope: '',
isMultipleFiles: true
});

fileUploader.initUploader();

$.widget('mage.mediaUploader', {

/**
*
* @private
*/
_create: function () {
let self = this,
arrayFromObj = Array.from,
progressTmpl = mageTemplate('[data-template="uploader"]'),
uploaderElement = '.fileUploader',
targetElement = this.element.find('.fileinput-button.form-buttons')[0],
uploadUrl = this.element.find(uploaderElement).attr('data-url'),
fileId = null,
allowedExt = ['jpeg', 'jpg', 'png', 'gif'],
allowedResize = false,
options = {
proudlyDisplayPoweredByUppy: false,
target: targetElement,
hideUploadButton: true,
hideRetryButton: true,
hideCancelButton: true,
inline: true,
debug:true,
showRemoveButtonAfterComplete: true,
showProgressDetails: false,
showSelectedFiles: false,
hideProgressAfterFinish: true
};
this.element.on('click', '.fileUploader' ,function (e) {
$(e.target).closest('.fileinput-button.form-buttons')
.find('.uppy-Dashboard-browse').trigger('click');
});

const uppy = new Uppy.Uppy({
autoProceed: true,

onBeforeFileAdded: (currentFile) => {
let fileSize,
tmpl;

fileSize = typeof currentFile.size == 'undefined' ?
$.mage.__('We could not detect a size.') :
byteConvert(currentFile.size);

// check if file is allowed to upload and resize
allowedResize = $.inArray(currentFile.extension, allowedExt) !== -1;

if (!allowedResize) {
fileUploader.aggregateError(currentFile.name,
$.mage.__('Disallowed file type.'));
fileUploader.onLoadingStop();
return false;
}

fileId = Math.random().toString(33).substr(2, 18);

tmpl = progressTmpl({
data: {
name: currentFile.name,
size: fileSize,
id: fileId
}
});

// code to allow duplicate files from same folder
const modifiedFile = {
...currentFile,
id: currentFile.id + '-' + fileId,
tempFileId: fileId
};

$(tmpl).appendTo(self.element);
return modifiedFile;
},

meta: {
'form_key': window.FORM_KEY,
isAjax : true
}
});

// initialize Uppy upload
uppy.use(Uppy.Dashboard, options);

// Resize Image as per configuration
if (this.options.isResizeEnabled) {
uppy.use(Uppy.Compressor, {
maxWidth: this.options.maxWidth,
maxHeight: this.options.maxHeight,
quality: 0.92,
beforeDraw() {
if (!allowedResize) {
this.abort();
}
}
});
}

// drop area for file upload
uppy.use(Uppy.DropTarget, {
target: targetElement,
onDragOver: () => {
// override Array.from method of legacy-build.min.js file
Array.from = null;
},
onDragLeave: () => {
Array.from = arrayFromObj;
}
});

// upload files on server
uppy.use(Uppy.XHRUpload, {
endpoint: uploadUrl,
fieldName: 'image'
});

uppy.on('upload-success', (file, response) => {
if (response.body && !response.body.error) {
self.element.trigger('addItem', response.body);
} else {
fileUploader.aggregateError(file.name, response.body.error);
}

self.element.find('#' + file.tempFileId).remove();
});

uppy.on('upload-progress', (file, progress) => {
let progressWidth = parseInt(progress.bytesUploaded / progress.bytesTotal * 100, 10),
progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar';

self.element.find(progressSelector).css('width', progressWidth + '%');
});

uppy.on('upload-error', (error, file) => {
let progressSelector = '#' + file.tempFileId;

self.element.find(progressSelector).removeClass('upload-progress').addClass('upload-failure')
.delay(2000)
.hide('highlight')
.remove();
});

uppy.on('complete', () => {
fileUploader.uploaderConfig.stop();
$(window).trigger('reload.MediaGallery');
Array.from = arrayFromObj;
});

}
});

return $.mage.mediaUploader;
});

0 comments on commit 4670507

Please sign in to comment.