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