diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js index 2485f707..f5005ec2 100644 --- a/app/assets/javascripts/notes.js +++ b/app/assets/javascripts/notes.js @@ -4,7 +4,6 @@ var NoteList = { target_params: null, target_id: 0, target_type: null, - loading_more_disabled: false, init: function(tid, tt, path) { NoteList.notes_path = path + ".js"; diff --git a/app/assets/javascripts/wall.js.coffee b/app/assets/javascripts/wall.js.coffee index 43d50b6b..dca071e3 100644 --- a/app/assets/javascripts/wall.js.coffee +++ b/app/assets/javascripts/wall.js.coffee @@ -9,6 +9,7 @@ Wall.notes_path = "/api/" + gon.api_version + "/projects/" + project_id + "/notes.json" Wall.getContent() Wall.initRefresh() + Wall.initForm() # # Gets an initial set of notes. @@ -28,6 +29,7 @@ if $.inArray(note.id, Wall.note_ids) == -1 Wall.note_ids.push(note.id) Wall.renderNote(note) + Wall.scrollDown() complete: -> $('.js-notes-busy').removeClass("loading") @@ -35,8 +37,15 @@ $('.js-notes-busy').addClass("loading") renderNote: (note) -> - author = '' + note.author.name + ':  ' - html = '
  • ' + author + note.body + '
  • ' + author = '' + note.author.name + '' + body = '' + note.body + '' + file = '' + + if note.attachment + file = '' + note.attachment + '' + + html = '
  • ' + author + body + file + '
  • ' + $('ul.notes').append(html) initRefresh: -> @@ -44,3 +53,33 @@ refresh: -> Wall.getContent() + + scrollDown: -> + notes = $('ul.notes') + $('body').scrollTop(notes.height()) + + initForm: -> + form = $('.new_note') + form.find("#target_type").val('wall') + + # remove unnecessary fields and buttons + form.find("#note_line_code").remove() + form.find(".js-close-discussion-note-form").remove() + form.find('.js-notify-commit-author').remove() + + form.on 'ajax:success', -> + Wall.refresh() + form.find(".js-note-text").val("").trigger("input") + + form.on 'ajax:complete', -> + form.find(".js-comment-button").removeAttr('disabled') + form.find(".js-comment-button").removeClass('disabled') + + form.on "click", ".js-choose-note-attachment-button", -> + form.find(".js-note-attachment-input").click() + + form.on "change", ".js-note-attachment-input", -> + filename = $(this).val().replace(/^.*[\\\/]/, '') + form.find(".js-attachment-filename").text(filename) + + form.show() diff --git a/app/assets/stylesheets/sections/wall.scss b/app/assets/stylesheets/sections/wall.scss index ea663742..31b25309 100644 --- a/app/assets/stylesheets/sections/wall.scss +++ b/app/assets/stylesheets/sections/wall.scss @@ -10,10 +10,20 @@ padding: 3px; padding-bottom: 25px; border: 1px solid #DDD; - display: block; } .notes { margin-bottom: 160px; + + .wall-author { + color: #666; + margin-right: 10px; + border-right: 1px solid #CCC; + padding-right: 5px + } + + .wall-file { + float: right; + } } } diff --git a/app/views/layouts/project_resource.html.haml b/app/views/layouts/project_resource.html.haml index 56869335..ca2f6e9a 100644 --- a/app/views/layouts/project_resource.html.haml +++ b/app/views/layouts/project_resource.html.haml @@ -40,7 +40,7 @@ = link_to 'Wiki', project_wiki_path(@project, :home) - if @project.wall_enabled - = nav_link(path: 'projects#wall') do + = nav_link(controller: :walls) do = link_to 'Wall', project_wall_path(@project) - if @project.snippets_enabled diff --git a/app/views/walls/show.html.haml b/app/views/walls/show.html.haml index 525cb2da..ed52e3d8 100644 --- a/app/views/walls/show.html.haml +++ b/app/views/walls/show.html.haml @@ -3,7 +3,8 @@ .notes-busy.js-notes-busy .js-main-target-form - = render "notes/form" + - if can? current_user, :write_note, @project + = render "notes/form" :javascript $(function(){ diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 42dae53b..3fe4abc3 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -95,6 +95,7 @@ module Gitlab class Note < Grape::Entity expose :id expose :note, as: :body + expose :attachment_identifier, as: :attachment expose :author, using: Entities::UserBasic expose :created_at end