From c4a7824a8c6487b24379f7f85c26f182bbc1dee9 Mon Sep 17 00:00:00 2001 From: Riyad Preukschas Date: Thu, 22 Nov 2012 02:57:22 +0100 Subject: [PATCH] Fix wall notes --- app/assets/javascripts/notes.js | 20 ++++++++++++++++++-- app/controllers/notes_controller.rb | 3 ++- app/helpers/notes_helper.rb | 3 ++- app/models/note.rb | 4 ++++ app/views/notes/_create_common_note.js.haml | 3 +++ 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js index 3952ee29..da356b2e 100644 --- a/app/assets/javascripts/notes.js +++ b/app/assets/javascripts/notes.js @@ -267,6 +267,7 @@ var NoteList = { NoteList.bottom_id = newNoteIds.last(); $("#notes-list").html(html); + // for the wall if (NoteList.reversed) { // init infinite scrolling NoteList.initLoadMore(); @@ -352,6 +353,8 @@ var NoteList = { /** * Initializes getting new notes every n seconds. + * + * Note: only used on wall. */ initRefreshNew: function() { setInterval("NoteList.getNew()", 10000); @@ -359,6 +362,8 @@ var NoteList = { /** * Gets the new set of notes. + * + * Note: only used on wall. */ getNew: function() { $.ajax({ @@ -371,6 +376,8 @@ var NoteList = { /** * Called in response to getNew(). * Replaces the content of #new-notes-list with the given html. + * + * Note: only used on wall. */ replaceNewNotes: function(newNoteIds, html) { $("#new-notes-list").html(html); @@ -378,7 +385,7 @@ var NoteList = { }, /** - * Adds a single common note to #(new-)notes-list. + * Adds a single common note to #notes-list. */ appendNewNote: function(id, html) { $("#notes-list").append(html); @@ -386,7 +393,7 @@ var NoteList = { }, /** - * Adds a single discussion note to #(new-)notes-list. + * Adds a single discussion note to #notes-list. */ appendNewDiscussionNote: function(discussionId, diffRowHtml, noteHtml) { // is this the first note of discussion? @@ -402,6 +409,15 @@ var NoteList = { $(".notes[rel='"+discussionId+"']").append(noteHtml); }, + /** + * Adds a single wall note to #new-notes-list. + * + * Note: only used on wall. + */ + appendNewWallNote: function(id, html) { + $("#new-notes-list").prepend(html); + }, + /** * Recalculates the votes and updates them (if they are displayed at all). * diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index e04a61b2..000c7bbb 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -71,6 +71,7 @@ class NotesController < ProjectResourceController # Helps to distinguish e.g. commit notes in mr notes list def note_for_main_target?(note) - @target_type.camelize == note.noteable_type && !note.for_diff_line? + note.for_wall? || + (@target_type.camelize == note.noteable_type && !note.for_diff_line?) end end diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb index e82537a3..fd920e23 100644 --- a/app/helpers/notes_helper.rb +++ b/app/helpers/notes_helper.rb @@ -1,7 +1,8 @@ module NotesHelper # Helps to distinguish e.g. commit notes in mr notes list def note_for_main_target?(note) - @target_type.camelize == note.noteable_type && !note.for_diff_line? + note.for_wall? || + (@target_type.camelize == note.noteable_type && !note.for_diff_line?) end def note_target_fields diff --git a/app/models/note.rb b/app/models/note.rb index 48916951..0027c57b 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -115,6 +115,10 @@ class Note < ActiveRecord::Base for_merge_request? && for_diff_line? end + def for_wall? + noteable_type.blank? + end + # override to return commits, which are not active record def noteable if for_commit? diff --git a/app/views/notes/_create_common_note.js.haml b/app/views/notes/_create_common_note.js.haml index 57c768b8..20bc0756 100644 --- a/app/views/notes/_create_common_note.js.haml +++ b/app/views/notes/_create_common_note.js.haml @@ -1,4 +1,7 @@ - if note.valid? + - if note.for_wall? + NoteList.appendNewWallNote(#{note.id}, "#{escape_javascript(render "notes/note", note: note)}"); + - else NoteList.appendNewNote(#{note.id}, "#{escape_javascript(render "notes/note", note: note)}"); - else