From 9d2bece0b30113e1e6873f5bac1a2d8b291896f6 Mon Sep 17 00:00:00 2001 From: David Gil Date: Tue, 11 Aug 2015 18:05:12 +0200 Subject: [PATCH 1/3] Fixes #142 --- app/assets/javascripts/comments.js.coffee | 11 +++++++---- app/views/comments/create.js.erb | 8 +++++++- spec/features/comments_spec.rb | 11 +++++++---- spec/support/common_actions.rb | 2 +- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee index 7a8743f88..452b706e7 100644 --- a/app/assets/javascripts/comments.js.coffee +++ b/app/assets/javascripts/comments.js.coffee @@ -4,10 +4,15 @@ App.Comments = $(response_html).insertAfter($("#js-comment-form-#{parent_id}")) reset_and_hide_form: (id) -> - form = $("#js-comment-form-#{id}") - form.val('') + form = $("#js-comment-form-#{id} form") + input = form.find("textarea") + input.val('') form.hide() + reset_form: (id) -> + input = $("#js-comment-form-#{id} form textarea") + input.val('') + toggle_form: (id) -> $("#js-comment-form-#{id}").toggle() @@ -16,5 +21,3 @@ App.Comments = id = $(this).data().id App.Comments.toggle_form(id) false - - diff --git a/app/views/comments/create.js.erb b/app/views/comments/create.js.erb index 9eeec3108..f2b078195 100644 --- a/app/views/comments/create.js.erb +++ b/app/views/comments/create.js.erb @@ -1,3 +1,9 @@ var parent_id = '<%= dom_id(@parent) %>'; -App.Comments.reset_and_hide_form(parent_id); + +<% if @parent.is_a?(Debate) -%> + App.Comments.reset_form(parent_id); +<% else -%> + App.Comments.reset_and_hide_form(parent_id); +<% end -%> + App.Comments.add_response(parent_id, "<%= j(render @comment) %>"); diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index 1ec6a8c10..0cc64bce1 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -59,6 +59,7 @@ feature 'Comments' do visit debate_path(debate) click_link "Reply" + within "#js-comment-form-comment_#{comment.id}" do fill_in 'comment_body', with: 'It will be done next week.' click_button 'Publish reply' @@ -67,6 +68,8 @@ feature 'Comments' do within "#comment-#{comment.id}" do expect(page).to have_content 'It will be done next week.' end + + expect(page).to have_selector("#js-comment-form-comment_#{comment.id}", visible: true) end scenario "N replies", :js do @@ -74,13 +77,13 @@ feature 'Comments' do parent = create(:comment, commentable: debate) 7.times do - create(:comment, commentable: debate). - move_to_child_of(parent) - parent = parent.children.first + create(:comment, commentable: debate). + move_to_child_of(parent) + parent = parent.children.first end visit debate_path(debate) expect(page).to have_css(".comment.comment.comment.comment.comment.comment.comment.comment") end -end \ No newline at end of file +end diff --git a/spec/support/common_actions.rb b/spec/support/common_actions.rb index b625138b0..5e56d2cea 100644 --- a/spec/support/common_actions.rb +++ b/spec/support/common_actions.rb @@ -56,4 +56,4 @@ module CommonActions SimpleCaptcha::SimpleCaptchaData.first.value end -end \ No newline at end of file +end From 44d4fa9fc422fbbeb3e5cafdef45ac4c00ff2da2 Mon Sep 17 00:00:00 2001 From: David Gil Date: Tue, 11 Aug 2015 20:27:37 +0200 Subject: [PATCH 2/3] order comments by the most recent first --- app/controllers/debates_controller.rb | 8 ++++---- app/models/comment.rb | 2 ++ app/views/comments/_comment.html.erb | 4 ++-- app/views/debates/_debate.html.erb | 2 +- app/views/debates/show.html.erb | 4 ++-- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index cca1e89a2..2c0243681 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -4,11 +4,11 @@ class DebatesController < ApplicationController def index if params[:tag] - @debates = Debate.tagged_with(params[:tag]).order("created_at DESC") - set_voted_values @debates.map(&:id) + @debates = Debate.tagged_with(params[:tag]).order(id: :desc) + set_voted_values @debates.pluck(:id) else - @debates = Debate.all.order("created_at DESC") - set_voted_values @debates.map(&:id) + @debates = Debate.all.order(id: :desc) + set_voted_values @debates.pluck(:id) end end diff --git a/app/models/comment.rb b/app/models/comment.rb index c2cf75292..d4ceb9e3e 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -8,6 +8,8 @@ class Comment < ActiveRecord::Base belongs_to :commentable, polymorphic: true belongs_to :user + scope :recent, -> { order(id: :desc) } + def self.build(commentable, user, body) new commentable: commentable, user_id: user.id, diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index f8eb903a2..4e375c540 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -22,8 +22,8 @@
- <%= render comment.children %> + <%= render comment.children.reorder('id DESC, lft') %>
- \ No newline at end of file + diff --git a/app/views/debates/_debate.html.erb b/app/views/debates/_debate.html.erb index 0bcc2e708..4620e1232 100644 --- a/app/views/debates/_debate.html.erb +++ b/app/views/debates/_debate.html.erb @@ -25,4 +25,4 @@ - \ No newline at end of file + diff --git a/app/views/debates/show.html.erb b/app/views/debates/show.html.erb index d10d0e022..28fefd085 100644 --- a/app/views/debates/show.html.erb +++ b/app/views/debates/show.html.erb @@ -43,10 +43,10 @@ <%= render 'comments/form', {parent: @debate, toggeable: false} %> <% end %> - <%= render @debate.root_comments %> + <%= render @debate.root_comments.recent %> <% if current_user && @debate.editable_by?(current_user) %> <%= link_to t("debates.show.edit_debate_link"), edit_debate_path(@debate), :class => 'button radius right' %> <% end %> - \ No newline at end of file + From 10588a989c1bc523f3e217ed4aef5b6d19a477b1 Mon Sep 17 00:00:00 2001 From: David Gil Date: Wed, 12 Aug 2015 00:02:19 +0200 Subject: [PATCH 3/3] revert using pluck to use map again --- app/controllers/debates_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 2c0243681..3b61becc2 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -5,10 +5,10 @@ class DebatesController < ApplicationController def index if params[:tag] @debates = Debate.tagged_with(params[:tag]).order(id: :desc) - set_voted_values @debates.pluck(:id) + set_voted_values @debates.map(&:id) else @debates = Debate.all.order(id: :desc) - set_voted_values @debates.pluck(:id) + set_voted_values @debates.map(&:id) end end