![]() 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/cartforge.co/pub/static/frontend/Magento/blank/en_US/mage/adminhtml/ |
/** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /* global MediabrowserUtility, FORM_KEY, tinyMceEditors */ /* eslint-disable strict */ define([ 'jquery', 'wysiwygAdapter', 'Magento_Ui/js/modal/prompt', 'Magento_Ui/js/modal/confirm', 'Magento_Ui/js/modal/alert', 'underscore', 'Magento_Ui/js/modal/modal', 'jquery/ui', 'jquery/jstree/jquery.jstree', 'mage/mage' ], function ($, wysiwyg, prompt, confirm, alert, _) { window.MediabrowserUtility = { windowId: 'modal_dialog_message', modalLoaded: false, targetElementId: false, pathId: '', /** * @return {Number} */ getMaxZIndex: function () { var max = 0, cn = document.body.childNodes, i, el, zIndex; for (i = 0; i < cn.length; i++) { el = cn[i]; zIndex = el.nodeType == 1 ? parseInt(el.style.zIndex, 10) || 0 : 0; //eslint-disable-line eqeqeq if (zIndex < 10000) { max = Math.max(max, zIndex); } } return max + 10; }, /** * @param {*} url * @param {*} width * @param {*} height * @param {*} title * @param {Object} options */ openDialog: function (url, width, height, title, options) { var windowId = this.windowId, content = '<div class="popup-window" id="' + windowId + '"></div>'; if (this.modalLoaded) { if (!_.isUndefined(options)) { this.modal.modal('option', 'closed', options.closed); } this.modal.modal('openModal'); this.setTargetElementId(options, url); this.setPathId(url); $(window).trigger('reload.MediaGallery'); return; } this.modal = $(content).modal($.extend({ title: title || 'Insert File...', modalClass: 'magento', type: 'slide', buttons: [] }, options)); this.modal.modal('openModal'); $.ajax({ url: url, type: 'get', context: $(this), showLoader: true }).done(function (data) { this.modal.html(data).trigger('contentUpdated'); this.modalLoaded = true; this.setTargetElementId(options, url); this.setPathId(url); }.bind(this)); }, /** * Setter for endcoded path id */ setPathId: function (url) { this.pathId = url.match(/(&|\/|%26)current_tree_path(=|\/)([\s\S].*?)(\/|$)/)[3]; }, /** * Setter for targetElementId property * * @param {Object} options * @param {String} url */ setTargetElementId: function (options, url) { this.targetElementId = options && options.targetElementId ? options.targetElementId : url.match(/\/target_element_id\/([\s\S].*?)\//)[1]; }, /** * Close dialog. */ closeDialog: function () { this.modal.modal('closeModal'); } }; $.widget('mage.mediabrowser', { eventPrefix: 'mediabrowser', options: { contentsUrl: null, onInsertUrl: null, newFolderUrl: null, deleteFolderUrl: null, deleteFilesUrl: null, headerText: null, tree: null, currentNode: null, storeId: null, showBreadcrumbs: null, hidden: 'no-display' }, /** * Proxy creation * @protected */ _create: function () { this._on({ 'click [data-row=file]': 'selectFile', 'dblclick [data-row=file]': 'insert', 'click #new_folder': 'newFolder', 'click #delete_folder': 'deleteFolder', 'click #delete_files': 'deleteFiles', 'click #insert_files': 'insertSelectedFiles', 'fileuploaddone': '_uploadDone', 'click [data-row=breadcrumb]': 'selectFolder' }); $(window).on('reload.MediaGallery', $.proxy(this.reload, this)); this.activeNode = null; //tree dont use event bubbling this.tree = this.element.find('[data-role=tree]'); this.tree.on('select_node.jstree', $.proxy(this._selectNode, this)); }, /** * @param {jQuery.Event} event * @param {Object} data * @private */ _selectNode: function (event, data) { var node = data.node; this.activeNode = node; this.element.find('#delete_files, #insert_files').toggleClass(this.options.hidden, true); this.element.find('#contents').toggleClass(this.options.hidden, false); this.element.find('#delete_folder') .toggleClass(this.options.hidden, node.id === 'root'); //eslint-disable-line eqeqeq this.element.find('#content_header_text') .html(node.id === 'root' ? this.headerText : node.text); //eslint-disable-line eqeqeq this.drawBreadcrumbs(data); this.loadFileList(node); }, /** * @return {*} */ reload: function (uploaded) { return this.loadFileList(this.activeNode, uploaded); }, /** * @param {Object} element * @param {*} value */ insertAtCursor: function (element, value) { var sel, startPos, endPos, scrollTop; if ('selection' in document) { //For browsers like Internet Explorer element.focus(); sel = document.selection.createRange(); sel.text = value; element.focus(); } else if (element.selectionStart || element.selectionStart == '0') { //eslint-disable-line eqeqeq //For browsers like Firefox and Webkit based startPos = element.selectionStart; endPos = element.selectionEnd; scrollTop = element.scrollTop; element.value = element.value.substring(0, startPos) + value + element.value.substring(startPos, endPos) + element.value.substring(endPos, element.value.length); element.focus(); element.selectionStart = startPos + value.length; element.selectionEnd = startPos + value.length + element.value.substring(startPos, endPos).length; element.scrollTop = scrollTop; } else { element.value += value; element.focus(); } }, /** * @param {Object} node */ loadFileList: function (node, uploaded) { var contentBlock = this.element.find('#contents'); return $.ajax({ url: this.options.contentsUrl, type: 'GET', dataType: 'html', data: { 'form_key': FORM_KEY, node: node ? node.id : null }, context: contentBlock, showLoader: true }).done(function (data) { contentBlock.html(data).trigger('contentUpdated'); if (uploaded) { contentBlock.find('.filecnt:last').trigger('click'); } }); }, /** * @param {jQuery.Event} event */ selectFolder: function (event) { this.element.find('[data-id="' + $(event.currentTarget).data('node').id + '"]>a').trigger('click'); }, /** * Insert selected files. */ insertSelectedFiles: function () { this.element.find('[data-row=file].selected').trigger('dblclick'); }, /** * @param {jQuery.Event} event */ selectFile: function (event) { var fileRow = $(event.currentTarget); fileRow.toggleClass('selected'); this.element.find('[data-row=file]').not(fileRow).removeClass('selected'); this.element.find('#delete_files, #insert_files') .toggleClass(this.options.hidden, !fileRow.is('.selected')); fileRow.trigger('selectfile'); }, /** * @private */ _uploadDone: function () { this.element.find('.file-row').remove(); this.reload(true); }, /** * @param {jQuery.Event} event * @return {Boolean} */ insert: function (event) { var fileRow = $(event.currentTarget), targetEl; if (!fileRow.prop('id')) { return false; } targetEl = this.getTargetElement(); if (!targetEl.length) { MediabrowserUtility.closeDialog(); throw 'Target element not found for content update'; } return $.ajax({ url: this.options.onInsertUrl, data: { filename: fileRow.attr('id'), node: this.activeNode.id, store: this.options.storeId, 'as_is': typeof targetEl !== 'function' && targetEl.is('textarea') ? 1 : 0, 'force_static_path': typeof targetEl !== 'function' && targetEl.data('force_static_path') ? 1 : 0, 'form_key': FORM_KEY }, context: this, showLoader: true }).done($.proxy(function (data) { if (typeof targetEl === 'function') { targetEl(data, {text: fileRow.find('img').attr('alt')}); } else if (targetEl.is('textarea')) { this.insertAtCursor(targetEl.get(0), data); } else { targetEl .val(data) .data('size', fileRow.data('size')) .data('mime-type', fileRow.data('mime-type')); } MediabrowserUtility.closeDialog(); if (typeof targetEl !== 'function') { targetEl.focus(); jQuery(targetEl).trigger('change'); } }, this)); }, /** * Find document target element in next order: * in acive file browser opener: * - input field with ID: "src" in opener window * - input field with ID: "href" in opener window * in document: * - element with target ID * * return {HTMLElement|null} */ getTargetElement: function () { var mediaBrowser = window.MediabrowserUtility; if (!_.isUndefined(wysiwyg) && wysiwyg.get(mediaBrowser.targetElementId)) { return this.getMediaBrowserOpener() || window; } return $('#' + mediaBrowser.targetElementId); }, /** * Return opener Window object if it exists, not closed and editor is active * * return {Object|null} */ getMediaBrowserOpener: function () { var targetElementId = window.MediabrowserUtility.targetElementId; if (!_.isUndefined(wysiwyg) && wysiwyg.get(targetElementId) && !_.isUndefined(tinyMceEditors)) { return tinyMceEditors.get(targetElementId).getMediaBrowserOpener(); } return null; }, /** * New folder. */ newFolder: function () { var self = this; prompt({ title: this.options.newFolderPrompt, actions: { /** * @param {*} folderName */ confirm: function (folderName) { $.ajax({ url: self.options.newFolderUrl, dataType: 'json', data: { name: folderName, node: self.activeNode.id, store: self.options.storeId, 'form_key': FORM_KEY }, context: self.element, showLoader: true }).done($.proxy(function (data) { if (data.error) { alert({ content: data.message }); } else { self.tree.jstree( 'refresh_node', self.element.find('[data-id="' + self.activeNode.id + '"]') ); } }, this)); return true; } } }); }, /** * Delete folder. */ deleteFolder: function () { var self = this; confirm({ content: this.options.deleteFolderConfirmationMessage, actions: { /** * Confirm. */ confirm: function () { return $.ajax({ url: self.options.deleteFolderUrl, dataType: 'json', data: { node: self.activeNode.id, store: self.options.storeId, 'form_key': FORM_KEY }, context: self.element, showLoader: true }).done($.proxy(function (data) { if (data.error) { alert({ content: data.message }); } else { self.tree.jstree('refresh', self.activeNode.id); self.reload(); $(window).trigger('fileDeleted.mediabrowser', { ids: self.activeNode.id }); } }, this)); }, /** * @return {Boolean} */ cancel: function () { return false; } } }); }, /** * Delete files. */ deleteFiles: function () { var self = this; confirm({ content: this.options.deleteFileConfirmationMessage, actions: { /** * Confirm. */ confirm: function () { var selectedFiles = self.element.find('[data-row=file].selected'), ids = selectedFiles.map(function () { return $(this).attr('id'); }).toArray(); return $.ajax({ url: self.options.deleteFilesUrl, data: { files: ids, store: self.options.storeId, 'form_key': FORM_KEY }, context: self.element, showLoader: true }).done($.proxy(function (data) { if (data.error) { alert({ content: data.message }); } else { self.reload(); self.element.find('#delete_files, #insert_files').toggleClass( self.options.hidden, true ); $(window).trigger('fileDeleted.mediabrowser', { ids: ids }); } }, this)); }, /** * @return {Boolean} */ cancel: function () { return false; } } }); }, /** * @param {Object} data */ drawBreadcrumbs: function (data) { var node, breadcrumbs; if (this.element.find('#breadcrumbs').length) { this.element.find('#breadcrumbs').remove(); } node = data.node; if (node.id === 'root') { //eslint-disable-line eqeqeq return; } breadcrumbs = $('<ul class="breadcrumbs" id="breadcrumbs"></ul>'); // jscs:disable requireCamelCaseOrUpperCaseIdentifiers data.instance.get_path(node).each(function (name, index) { if (index > 0) { breadcrumbs.append($('<li>\/</li>')); //eslint-disable-line } breadcrumbs.append($('<li />').attr('data-row', 'breadcrumb').text(name)); }); // jscs:enable requireCamelCaseOrUpperCaseIdentifiers breadcrumbs.insertAfter(this.element.find('#content_header')); } }); return window.MediabrowserUtility; });