From 9f822d1e3c679fb3fdf16175c965d4535b5b784f Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Wed, 30 Jan 2013 15:55:17 +1300 Subject: [PATCH] FIX Not calling updateFromNode on re-opening an image Inside mediaform updateFromEditor we called $(this).updateFromNode, but this wasnt pointing to anything useful after a refactor, which resulted in the fields not being filled in with current data when editing an already-inserted image --- javascript/HtmlEditorField.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/javascript/HtmlEditorField.js b/javascript/HtmlEditorField.js index 5c2e505a2..6d526be28 100644 --- a/javascript/HtmlEditorField.js +++ b/javascript/HtmlEditorField.js @@ -790,8 +790,8 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE; // TODO Depends on managed mime type if(node.is('img')) { - this.showFileView(node.data('url') || node.attr('src')).complete(function() { - $(this).updateFromNode(node); + this.showFileView(node.data('url') || node.attr('src')).done(function(filefield) { + filefield.updateFromNode(node); self.toggleCloseButton(); self.redraw(); }); @@ -834,25 +834,29 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE; getFileView: function(idOrUrl) { return this.find('.ss-htmleditorfield-file[data-id=' + idOrUrl + ']'); }, - showFileView: function(idOrUrl, successCallback) { - var self = this, params = (Number(idOrUrl) == idOrUrl) ? {ID: idOrUrl} : {FileURL: idOrUrl}, - item = $('
'); + showFileView: function(idOrUrl) { + var self = this, params = (Number(idOrUrl) == idOrUrl) ? {ID: idOrUrl} : {FileURL: idOrUrl}; - item.addClass('loading'); + var item = $('
'); this.find('.content-edit').append(item); - return $.ajax({ - // url: this.data('urlViewfile') + '?ID=' + id, + + var dfr = $.Deferred(); + + $.ajax({ url: $.path.addSearchParams(this.attr('action').replace(/MediaForm/, 'viewfile'), params), success: function(html, status, xhr) { - var newItem = $(html); + var newItem = $(html).filter('.ss-htmleditorfield-file'); item.replaceWith(newItem); self.redraw(); - if(successCallback) successCallback.call(newItem, html, status, xhr); + dfr.resolve(newItem); }, error: function() { item.remove(); + dfr.reject(); } }); + + return dfr.promise(); } }); @@ -941,7 +945,7 @@ ss.editorWrappers['default'] = ss.editorWrappers.tinyMCE; if (urlField.validate()) { container.addClass('loading'); - form.showFileView('http://' + urlField.val()).complete(function() { + form.showFileView('http://' + urlField.val()).done(function() { container.removeClass('loading'); }); form.redraw();