diff --git a/spec/images.spec.js b/spec/images.spec.js index 1d1364da7..451a0fd71 100644 --- a/spec/images.spec.js +++ b/spec/images.spec.js @@ -59,6 +59,26 @@ describe('Images addon', function () { expect(this.$el.find('.medium-insert-images img').attr('src')).toEqual('test.jpg'); }); + it('replaces preview by uploaded image, with user built url', function () { + var stubbedImage = jasmine.createSpy('image'); + spyOn(this.addon, 'getDOMImage').and.returnValue(stubbedImage); + spyOn(this.addon.options, 'returnURLFromUploadResult').and.callFake(function (result) { + return result.success[0].id; + }); + this.$el.prepend('
'); + + this.addon.uploadDone(null, { + context: this.$el.find('figure'), + result: { + success: [ + { id: 'test-image-url.jpg' } + ] + } + }); + stubbedImage.onload(); + expect(this.$el.find('.medium-insert-images img').attr('src')).toEqual('test-image-url.jpg'); + }); + it('uploads without preview when it is set like this in options', function (done) { var $p = this.$el.find('p'); diff --git a/src/js/images.js b/src/js/images.js index 4de62ebc3..d3e70fb64 100644 --- a/src/js/images.js +++ b/src/js/images.js @@ -72,6 +72,9 @@ messages: { acceptFileTypesError: 'This file is not in a supported format: ', maxFileSizeError: 'This file is too big: ' + }, + returnURLFromUploadResult: function (result) { + return result.files[0].url; } // uploadError: function($el, data) {} // uploadCompleted: function ($el, data) {} @@ -361,7 +364,16 @@ */ Images.prototype.uploadDone = function (e, data) { - $.proxy(this, 'showImage', data.result.files[0].url, data)(); + + var url = ''; + + if (typeof this.options.returnURLFromUploadResult === 'function') { + url = this.options.returnURLFromUploadResult(data.result); + } else { + url = defaults.returnURLFromUploadResult(data.result); + } + + $.proxy(this, 'showImage', url, data)(); this.core.clean(); this.sorting();