Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiyad Preukschas <riyad@informatik.uni-bremen.de>2012-12-03 23:35:09 +0400
committerRiyad Preukschas <riyad@informatik.uni-bremen.de>2012-12-04 01:51:57 +0400
commit7978f8dd2b62baacb0d045b65282b758a76da118 (patch)
tree66914e4449c230fd1a47c01ee99ee1d10ef8c36d /app/assets/javascripts/notes.js
parentc1ffee4e65601a42c5d40ec5f3ddddb51a93251f (diff)
Fix handling form errors.
Diffstat (limited to 'app/assets/javascripts/notes.js')
-rw-r--r--app/assets/javascripts/notes.js66
1 files changed, 55 insertions, 11 deletions
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index c9137c887b9..8c4577bd1fc 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -69,12 +69,10 @@ var NoteList = {
".js-note-delete",
NoteList.removeNote);
- // clean up previews for forms
- $(document).on("ajax:complete", ".js-main-target-form", function(){
- $(this).find('.error').remove();
- $(this).find('.js-note-text').val("");
- $(this).show();
- });
+ // clean up previews for main target form
+ $(document).on("ajax:complete",
+ ".js-main-target-form",
+ NoteList.cleanupMainTargetForm);
},
@@ -84,6 +82,26 @@ var NoteList = {
/**
+ *
+ */
+ cleanupMainTargetForm: function(){
+ var form = $(this);
+
+ // remove validation errors
+ form.find(".js-errors").remove();
+
+ // reset text and preview
+ var previewContainer = form.find(".js-toggler-container.note_text_and_preview");
+ if (previewContainer.is(".on")) {
+ previewContainer.removeClass("on");
+ }
+ form.find(".js-note-text").val("").trigger("input");
+
+ // re-enable submit button
+ form.find(".js-comment-button").enable();
+ },
+
+ /**
* Called when clicking on the "add a comment" button on the side of a diff line.
*
* Inserts a temporary row for the form below the line.
@@ -219,6 +237,27 @@ var NoteList = {
/**
+ * Called in response to creating a note failing validation.
+ *
+ * Adds the rendered errors to the respective form.
+ * If "discussionId" is null or undefined, the main target form is assumed.
+ */
+ errorsOnForm: function(errorsHtml, discussionId) {
+ // find the form
+ if (discussionId) {
+ var form = $("form[rel='"+discussionId+"']");
+ } else {
+ var form = $(".js-main-target-form");
+ }
+
+ form.find(".js-errors").remove();
+ form.prepend(errorsHtml);
+
+ form.find(".js-note-text").focus();
+ },
+
+
+ /**
* Shows the diff/discussion form and does some setup on it.
*
* Sets some hidden fields in the form.
@@ -235,8 +274,6 @@ var NoteList = {
NoteList.setupNoteForm(form);
- // cleanup after successfully creating a diff/discussion note
- form.on("ajax:success", NoteList.removeDiscussionNoteForm);
},
/**
@@ -449,19 +486,26 @@ var NoteList = {
/**
* Adds a single discussion note to #notes-list.
+ *
+ * Also removes the corresponding form.
*/
appendNewDiscussionNote: function(discussionId, diffRowHtml, noteHtml) {
+ var form = $("form[rel='"+discussionId+"']");
+ var row = form.closest("tr");
+
// is this the first note of discussion?
- var row = $("form[rel='"+discussionId+"']").closest("tr");
if (row.is(".js-temp-notes-holder")) {
- // insert the note and the reply button after it
+ // insert the note and the reply button after the temp row
row.after(diffRowHtml);
- // will be added again below
+ // remove the note (will be added again below)
row.next().find(".note").remove();
}
// append new note to all matching discussions
$(".notes[rel='"+discussionId+"']").append(noteHtml);
+
+ // cleanup after successfully creating a diff/discussion note
+ $.proxy(NoteList.removeDiscussionNoteForm, form).call();
},
/**