diff --git a/app/assets/javascripts/wall.js.coffee b/app/assets/javascripts/wall.js.coffee new file mode 100644 index 0000000000000000000000000000000000000000..43d50b6ba293fe5369ea74b0d469261a2475a07b --- /dev/null +++ b/app/assets/javascripts/wall.js.coffee @@ -0,0 +1,46 @@ +@Wall = + note_ids: [] + notes_path: null + notes_params: null + project_id: null + + init: (project_id) -> + Wall.project_id = project_id + Wall.notes_path = "/api/" + gon.api_version + "/projects/" + project_id + "/notes.json" + Wall.getContent() + Wall.initRefresh() + + # + # Gets an initial set of notes. + # + getContent: -> + $.ajax + url: Wall.notes_path, + data: + private_token: gon.api_token + gfm: true + recent: true + dataType: "json" + success: (notes) -> + notes.sort (a, b) -> + return a.id - b.id + $.each notes, (i, note)-> + if $.inArray(note.id, Wall.note_ids) == -1 + Wall.note_ids.push(note.id) + Wall.renderNote(note) + + complete: -> + $('.js-notes-busy').removeClass("loading") + beforeSend: -> + $('.js-notes-busy').addClass("loading") + + renderNote: (note) -> + author = '' + note.author.name + ':  ' + html = '
  • ' + author + note.body + '
  • ' + $('ul.notes').append(html) + + initRefresh: -> + setInterval("Wall.refresh()", 10000) + + refresh: -> + Wall.getContent() diff --git a/lib/api/notes.rb b/lib/api/notes.rb index 097cc7ea4752d215bf4a287b2a7b31aa6fe917c7..450faae535a8f351dff30616d5083a0e29cc9388 100644 --- a/lib/api/notes.rb +++ b/lib/api/notes.rb @@ -14,6 +14,10 @@ module Gitlab # GET /projects/:id/notes get ":id/notes" do @notes = user_project.notes.common + + # Get recent notes if recent = true + @notes = @notes.order('id DESC') if params[:recent] + present paginate(@notes), with: Entities::Note end