diff --git a/js/mage/adminhtml/browser.js b/js/mage/adminhtml/browser.js index 6f3d2fb9a62..a0095f15b9c 100644 --- a/js/mage/adminhtml/browser.js +++ b/js/mage/adminhtml/browser.js @@ -165,15 +165,14 @@ Mediabrowser.prototype = { return false; } var targetEl = this.getTargetElement(); - if (! targetEl) { + if (!targetEl) { alert("Target element not found for content update"); Windows.close('browser_window'); return; } var params = {filename:div.id, node:this.currentNode.id, store:this.storeId}; - - if (targetEl.tagName.toLowerCase() == 'textarea') { + if (targetEl.tagName && targetEl.tagName.toLowerCase() == 'textarea') { params.as_is = 1; } @@ -182,17 +181,14 @@ Mediabrowser.prototype = { onSuccess: function(transport) { try { this.onAjaxSuccess(transport); - if (this.getMediaBrowserOpener()) { + if (this.getMediaBrowserCallback()) { self.blur(); } Windows.close('browser_window'); - if (targetEl.tagName.toLowerCase() == 'input') { + if (targetEl.tagName && targetEl.tagName.toLowerCase() == 'input') { targetEl.value = transport.responseText; } else { - updateElementAtCursor(targetEl, transport.responseText); - if (varienGlobalEvents) { - varienGlobalEvents.fireEvent('tinymceChange'); - } + targetEl(transport.responseText); } } catch (e) { alert(e.message); @@ -213,9 +209,8 @@ Mediabrowser.prototype = { */ getTargetElement: function() { if (typeof(tinyMCE) != 'undefined' && tinyMCE.get(this.targetElementId)) { - if ((opener = this.getMediaBrowserOpener())) { - var targetElementId = tinyMceEditors[this.targetElementId].getMediaBrowserTargetElementId(); - return opener.document.getElementById(targetElementId); + if ((callbak = this.getMediaBrowserCallback())) { + return callbak; } else { return null; } @@ -225,19 +220,13 @@ Mediabrowser.prototype = { }, /** - * Return opener Window object if it exists, not closed and editor is active - * - * return object | null + * return object|null */ - getMediaBrowserOpener: function() { - if (typeof(tinyMCE) != 'undefined' - && tinyMCE.get(this.targetElementId) - && typeof(tinyMceEditors) != 'undefined' - && ! tinyMceEditors[this.targetElementId].getMediaBrowserOpener().closed) { - return tinyMceEditors[this.targetElementId].getMediaBrowserOpener(); - } else { - return null; - } + getMediaBrowserCallback: function() { + if (typeof(tinyMCE) != 'undefined' && tinyMCE.get(this.targetElementId) && typeof(tinyMceEditors) != 'undefined') { + return tinyMceEditors[this.targetElementId].getMediaBrowserCallback(); + } + return null; }, newFolder: function() { diff --git a/js/mage/adminhtml/wysiwyg/tinymce/setup.js b/js/mage/adminhtml/wysiwyg/tinymce/setup.js index 830a3927afc..c1157cd9dbb 100644 --- a/js/mage/adminhtml/wysiwyg/tinymce/setup.js +++ b/js/mage/adminhtml/wysiwyg/tinymce/setup.js @@ -15,8 +15,9 @@ var tinyMceWysiwygSetup = Class.create(); tinyMceWysiwygSetup.prototype = { - mediaBrowserOpener: null, - mediaBrowserTargetElementId: null, + mediaBrowserCallback: null, + mediaBrowserMetal: null, + mediaBrowserValue: null, initialize: function(htmlId, config) { @@ -27,9 +28,9 @@ tinyMceWysiwygSetup.prototype = this.selector = 'textarea#' + htmlId; this.config = config; this.automatic_uploads = false; - this.file_picker_callback = function(fieldName, url, objectType, w) { - varienGlobalEvents.fireEvent("open_browser_callback", {win:w, type:objectType, field:fieldName}); - }; + this.file_picker_callback = (callback, value, meta) => { + varienGlobalEvents.fireEvent("open_browser_callback", {callback:callback, value:value, meta:meta}); + } varienGlobalEvents.attachEventHandler('tinymceChange', this.onChangeContent.bind(this)); if (typeof tinyMceEditors == 'undefined') { tinyMceEditors = []; @@ -408,12 +409,13 @@ tinyMceWysiwygSetup.prototype = 'target_element_id/' + this.id + '/' + 'store/' + storeId + '/'; - this.mediaBrowserOpener = o.win; - this.mediaBrowserTargetElementId = o.field; + this.mediaBrowserCallback = o.callback; + this.mediaBrowserMeta = o.meta; + this.mediaBrowserValue = o.value; - if (typeof(o.type) != 'undefined' && o.type != "") { - typeTitle = 'image' == o.type ? this.translate('Insert Image...') : this.translate('Insert Media...'); - wUrl = wUrl + "type/" + o.type + "/"; + if (typeof(o.meta.filetype) != 'undefined' && o.meta.filetype == "image") { + typeTitle = 'image' == o.meta.filetype ? this.translate('Insert Image...') : this.translate('Insert Media...'); + wUrl = wUrl + "type/" + o.meta.filetype + "/"; } else { typeTitle = this.translate('Insert File...'); } @@ -429,14 +431,6 @@ tinyMceWysiwygSetup.prototype = return 'undefined' != typeof(Translator) ? Translator.translate(string) : string; }, - getMediaBrowserOpener: function() { - return this.mediaBrowserOpener; - }, - - getMediaBrowserTargetElementId: function() { - return this.mediaBrowserTargetElementId; - }, - getToggleButton: function() { return document.getElementById('toggle' + this.id); }, @@ -583,5 +577,9 @@ tinyMceWysiwygSetup.prototype = widgetPlaceholderExist: function(filename) { return this.config.widget_placeholders.indexOf(filename) != -1; + }, + + getMediaBrowserCallback: function() { + return this.mediaBrowserCallback; } };