Merge pull request #4965 from ErisDS/validate-image-url

Validate urls in modal
This commit is contained in:
Matt Enlow 2015-02-28 09:49:15 -07:00
commit a6f0264bf1

View File

@ -1,5 +1,6 @@
import ModalDialog from 'ghost/components/gh-modal-dialog';
import upload from 'ghost/assets/lib/uploader';
import cajaSanitizers from 'ghost/utils/caja-sanitizers';
var UploadModal = ModalDialog.extend({
layoutName: 'components/gh-modal-dialog',
@ -8,6 +9,16 @@ var UploadModal = ModalDialog.extend({
this._super();
upload.call(this.$('.js-drop-zone'), {fileStorage: this.get('config.fileStorage')});
},
keyDown: function () {
this.setErrorState(false);
},
setErrorState: function (state) {
if (state) {
this.$('.js-upload-url').addClass('error');
} else {
this.$('.js-upload-url').removeClass('error');
}
},
confirm: {
reject: {
func: function () { // The function called on rejection
@ -18,15 +29,23 @@ var UploadModal = ModalDialog.extend({
},
accept: {
buttonClass: 'btn btn-blue right',
text: 'Save', // The accept button texttext: 'Save'
text: 'Save', // The accept button text: 'Save'
func: function () {
var imageType = 'model.' + this.get('imageType');
var imageType = 'model.' + this.get('imageType'),
value;
if (this.$('.js-upload-url').val()) {
this.set(imageType, this.$('.js-upload-url').val());
value = this.$('.js-upload-url').val();
if (!Ember.isEmpty(value) && !cajaSanitizers.url(value)) {
this.setErrorState(true);
return {message: 'Image URI is not valid'};
}
} else {
this.set(imageType, this.$('.js-upload-target').attr('src'));
value = this.$('.js-upload-target').attr('src');
}
this.set(imageType, value);
return true;
}
}
@ -37,12 +56,17 @@ var UploadModal = ModalDialog.extend({
this.sendAction();
},
confirm: function (type) {
var func = this.get('confirm.' + type + '.func');
var result,
func = this.get('confirm.' + type + '.func');
if (typeof func === 'function') {
func.apply(this);
result = func.apply(this);
}
if (!result.message) {
this.sendAction();
this.sendAction('confirm' + type);
}
this.sendAction();
this.sendAction('confirm' + type);
}
}
});