Merged in iss81 (pull request #43)

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

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,21 +162,25 @@ 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);
// Creating the comment HTML } else {
create_comment_elements({ // Creating the comment HTML
id: data.comment_id, create_comment_elements({
toId: this._commentId || null, id: data.comment_id,
postId: this._postId, toId: this._commentId || null,
author: $('#name h1').text(), postId: this._postId,
text: this._text, author: $('#name h1').text(),
fadeOut: true text: this._text,
}, this.insertComment.bind(this)); fadeOut: true
}, this.insertComment.bind(this));
// Cleaning textarea this.hideForm();
$textarea.val('');
this.setProgress(false); // Cleaning textarea
$textarea.val('');
this.setProgress(false);
}
} }
}; };