Merged in iss81 (pull request #43)

Отправлять форму не аяксом, если выбран файл; Fixes #81
This commit is contained in:
isqua 2015-02-07 20:16:07 +03:00
commit 4615113a44

View file

@ -38,12 +38,25 @@ AjaxComments.prototype.listenFirstComments = function() {
*/ */
AjaxComments.prototype.onSubmit = function(event) { AjaxComments.prototype.onSubmit = function(event) {
var $form = $(event.target); var $form = $(event.target);
var proc;
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
if ($form.hasClass('reply-form')) { if ($form.hasClass('reply-form')) {
this.submit($form);
}
};
/**
* Проверяет, выбран ли файл. Если да отправляет форму с перезагрузкой, иначе аяксом 
* @param {jQuery} $form Элемент формы
*/
AjaxComments.prototype.submit = function($form) {
var proc;
if (this.isFileSelected($form)) {
$form.submit();
} else {
proc = new AjaxCommentProcessor($form); proc = new AjaxCommentProcessor($form);
} }
}; };
@ -63,7 +76,7 @@ AjaxComments.prototype.onKeypress = function(event) {
$form = $(event.target).closest('.reply-form'); $form = $(event.target).closest('.reply-form');
if ($form.length) { if ($form.length) {
proc = new AjaxCommentProcessor($form); this.submit($form);
} }
} }
}; };
@ -77,6 +90,16 @@ AjaxComments.prototype.isProperKeys = function(event) {
return (event.keyCode === 10 || event.keyCode === 13) && (event.ctrlKey || event.metaKey); return (event.keyCode === 10 || event.keyCode === 13) && (event.ctrlKey || event.metaKey);
}; };
/**
* @param {jQuery} $form
* @return {Boolean} Выбран ли файл
*/
AjaxComments.prototype.isFileSelected = function($form) {
var files = $form.get(0).elements.attach.files;
return Boolean(files && files.length);
};
/** /**
* Создаётся при каждой отправке комментария * Создаётся при каждой отправке комментария
* @param {jQuery} $form Элемент формы, на которой это произошло * @param {jQuery} $form Элемент формы, на которой это произошло
@ -139,8 +162,9 @@ AjaxCommentProcessor.prototype.onSuccess = function(data, textStatus) {
var $textarea = this._$textarea; var $textarea = this._$textarea;
if (textStatus === 'success') { if (textStatus === 'success') {
this.hideForm(); if (data.error) {
this.onError(null, null, data.error);
} else {
// Creating the comment HTML // Creating the comment HTML
create_comment_elements({ create_comment_elements({
id: data.comment_id, id: data.comment_id,
@ -151,10 +175,13 @@ AjaxCommentProcessor.prototype.onSuccess = function(data, textStatus) {
fadeOut: true fadeOut: true
}, this.insertComment.bind(this)); }, this.insertComment.bind(this));
this.hideForm();
// Cleaning textarea // Cleaning textarea
$textarea.val(''); $textarea.val('');
this.setProgress(false); this.setProgress(false);
} }
}
}; };
/** /**