![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-media-gallery-ui/view/adminhtml/web/js/ |
/** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ define([ 'uiComponent', 'jquery', 'underscore', 'Magento_Ui/js/lib/validation/validator', 'mage/translate', 'jquery/file-uploader' ], function (Component, $, _, validator, $t) { 'use strict'; return Component.extend({ defaults: { imageUploadInputSelector: '#image-uploader-form', directoriesPath: 'media_gallery_listing.media_gallery_listing.media_gallery_directories', actionsPath: 'media_gallery_listing.media_gallery_listing.media_gallery_columns.thumbnail_url', messagesPath: 'media_gallery_listing.media_gallery_listing.messages', imageUploadUrl: '', acceptFileTypes: '', allowedExtensions: '', maxFileSize: '', maxFileNameLength: 90, loader: false, modules: { directories: '${ $.directoriesPath }', actions: '${ $.actionsPath }', mediaGridMessages: '${ $.messagesPath }', sortBy: '${ $.sortByName }', listingPaging: '${ $.listingPagingName }' } }, /** * Init component * * @return {exports} */ initialize: function () { this._super().observe( [ 'loader', 'count' ] ); return this; }, /** * Initializes file upload library */ initializeFileUpload: function () { $(this.imageUploadInputSelector).fileupload({ url: this.imageUploadUrl, acceptFileTypes: this.acceptFileTypes, allowedExtensions: this.allowedExtensions, maxFileSize: this.maxFileSize, /** * Extending the form data * * @param {Object} form * @returns {Array} */ formData: function (form) { return form.serializeArray().concat( [{ name: 'isAjax', value: true }, { name: 'form_key', value: window.FORM_KEY }, { name: 'target_folder', value: this.getTargetFolder() }] ); }.bind(this), add: function (e, data) { if (!this.isSizeExceeded(data.files[0]).passed) { this.addValidationErrorMessage( $t('Cannot upload "%1". File exceeds maximum file size limit.') .replace('%1', data.files[0].name) ); return; } else if (!this.isFileNameLengthExceeded(data.files[0]).passed) { this.addValidationErrorMessage( $t('Cannot upload "%1". Filename is too long, must be 90 characters or less.') .replace('%1', data.files[0].name) ); return; } this.showLoader(); this.count(1); data.submit(); }.bind(this), stop: function () { this.openNewestImages(); this.mediaGridMessages().scheduleCleanup(); }.bind(this), start: function () { this.mediaGridMessages().clear(); }.bind(this), done: function (e, data) { var response = data.jqXHR.responseJSON; if (!response) { this.showErrorMessage(data, $t('Could not upload the asset.')); return; } if (!response.success) { this.showErrorMessage(data, response.message); return; } this.showSuccessMessage(data); this.hideLoader(); this.actions().reloadGrid(); }.bind(this) }); }, /** * Add error message after validation error. * * @param {String} message */ addValidationErrorMessage: function (message) { this.mediaGridMessages().add('error', message); this.count() < 2 || this.mediaGridMessages().scheduleCleanup(); }, /** * Checks if size of provided file exceeds * defined in configuration size limits. * * @param {Object} file - File to be checked. * @returns {Boolean} */ isSizeExceeded: function (file) { return validator('validate-max-size', file.size, this.maxFileSize); }, /** * Checks if name length of provided file exceeds * defined in configuration size limits. * * @param {Object} file - File to be checked. * @returns {Boolean} */ isFileNameLengthExceeded: function (file) { return validator('max_text_length', file.name, this.maxFileNameLength); }, /** * Go to recently uploaded images if at least one uploaded successfully */ openNewestImages: function () { this.mediaGridMessages().get().each(function (message) { if (message.code === 'success') { this.actions().deselectImage(); this.sortBy().selectDefaultOption(); this.listingPaging().goFirst(); return false; } }.bind(this)); }, /** * Show error meassages with file name. * * @param {Object} data * @param {String} message */ showErrorMessage: function (data, message) { data.files.each(function (file) { this.mediaGridMessages().add( 'error', file.name + ': ' + $t(message) ); }.bind(this)); this.hideLoader(); }, /** * Show success message, and files counts */ showSuccessMessage: function () { this.mediaGridMessages().messages.remove(function (item) { return item.code === 'success'; }); this.mediaGridMessages().add('success', $t('Assets have been successfully uploaded!')); this.count(this.count() + 1); }, /** * Gets Media Gallery selected folder * * @returns {String} */ getTargetFolder: function () { if (_.isUndefined(this.directories().activeNode()) || _.isNull(this.directories().activeNode())) { return '/'; } return this.directories().activeNode(); }, /** * Shows spinner loader */ showLoader: function () { this.loader(true); }, /** * Hides spinner loader */ hideLoader: function () { this.loader(false); } }); });