Nest likes and comments routes in the post route

This commit is contained in:
Raphael Sofaer 2011-07-10 21:39:38 -07:00
parent 875eaffd42
commit 2fb0fce1a8
9 changed files with 25 additions and 25 deletions

View file

@ -9,7 +9,7 @@ class LikesController < ApplicationController
respond_to :html, :mobile, :json
def create
target = current_user.find_visible_post_by_id params[:status_message_id]
target = current_user.find_visible_post_by_id params[:post_id]
positive = (params[:positive] == 'true') ? true : false
if target
@like = current_user.build_like(:positive => positive, :post => target)
@ -32,7 +32,7 @@ class LikesController < ApplicationController
end
def destroy
if @like = Like.where(:id => params[:id], :author_id => current_user.person.id, :post_id => params[:status_message_id]).first
if @like = Like.where(:id => params[:id], :author_id => current_user.person.id, :post_id => params[:post_id]).first
current_user.retract(@like)
else
respond_to do |format|
@ -43,7 +43,7 @@ class LikesController < ApplicationController
end
def index
if target = current_user.find_visible_post_by_id(params[:status_message_id])
if target = current_user.find_visible_post_by_id(params[:post_id])
@likes = target.likes.includes(:author => :profile)
render :layout => false
else

View file

@ -10,9 +10,9 @@ module LikesHelper
def like_action(post, current_user=current_user)
if current_user.liked?(post)
link_to t('shared.stream_element.unlike'), status_message_like_path(post, current_user.like_for(post)), :method => :delete, :class => 'unlike', :remote => true
link_to t('shared.stream_element.unlike'), post_like_path(post, current_user.like_for(post)), :method => :delete, :class => 'unlike', :remote => true
else
link_to t('shared.stream_element.like'), status_message_likes_path(post, :positive => 'true'), :method => :post, :class => 'like', :remote => true
link_to t('shared.stream_element.like'), post_likes_path(post, :positive => 'true'), :method => :post, :class => 'like', :remote => true
end
end
end

View file

@ -5,7 +5,7 @@
%li.comment.posted{:data=>{:guid => comment.id}, :class => ("hidden" if(defined? hidden))}
- if current_user && (current_user.owns?(comment) || current_user.owns?(post))
.right.controls
= link_to image_tag('deletelabel.png'), comment_path(comment), :confirm => t('are_you_sure'), :method => :delete, :remote => true, :class => "delete comment_delete", :title => t('delete')
= link_to image_tag('deletelabel.png'), post_comment_path(comment.post_id, comment), :confirm => t('are_you_sure'), :method => :delete, :remote => true, :class => "delete comment_delete", :title => t('delete')
= person_image_link(comment.author)
.content
%span.from

View file

@ -2,12 +2,11 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
= form_tag( comments_path, :id => "new_comment_on_#{post_id}", :class => 'new_comment', :remote => true) do
= form_tag( post_comments_path(post_id), :id => "new_comment_on_#{post_id}", :class => 'new_comment', :remote => true) do
= person_image_tag(current_user)
%p
= label_tag "comment_text_on_#{post_id}", t('.comment')
= text_area_tag :text, nil, :rows => 2, :class => "comment_box",:id => "comment_text_on_#{post_id}"
= hidden_field_tag :post_id, post_id, :id => "post_id_on_#{post_id}"
.submit_button
= submit_tag t('.comment'), :id => "comment_submit_#{post_id}", :class => "comment_submit button creation", :disable_with => t('.commenting')

View file

@ -2,7 +2,7 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
= form_tag( comments_path, :id => "new_comment_on_#{post_id}", :class => 'new_comment') do
= form_tag( post_comments_path(post_id), :id => "new_comment_on_#{post_id}", :class => 'new_comment') do
= hidden_field_tag :post_id, post_id, :id => "post_id_on_#{post_id}"
= text_area_tag :text, nil, :rows => 2, :class => "comment_box",:id => "comment_text_on_#{post_id}"

View file

@ -6,7 +6,7 @@
.likes_container
.likes
= image_tag('icons/heart.svg')
= link_to t('likes.likes.people_like_this', :count => likes_count), status_message_likes_path(post_id), :class => "expand_likes"
= link_to t('likes.likes.people_like_this', :count => likes_count), post_likes_path(post_id), :class => "expand_likes"
%span.hidden.likes_list
/= render 'likes/likes', :likes => likes

View file

@ -12,11 +12,12 @@ Diaspora::Application.routes.draw do
end
resources :status_messages, :only => [:new, :create] do
resources :likes, :only => [:create, :destroy, :index]
end
resources :comments, :only => [:create, :destroy]
resources :posts, :only => [:show, :destroy]
resources :posts, :only => [:show, :destroy] do
resources :likes, :only => [:create, :destroy, :index]
resources :comments, :only => [:create, :destroy]
end
get 'bookmarklet' => 'status_messages#bookmarklet'
get 'p/:id' => 'publics#post', :as => 'public_post'

View file

@ -80,13 +80,13 @@ describe CommentsController do
it 'lets the user delete his comment' do
alice.should_receive(:retract).with(@comment)
delete :destroy, :format => "js", :id => @comment.id
delete :destroy, :format => "js", :post_id => 1, :id => @comment.id
response.status.should == 204
end
it "lets the user destroy other people's comments" do
alice.should_receive(:retract).with(@comment2)
delete :destroy, :format => "js", :id => @comment2.id
delete :destroy, :format => "js", :post_id => 1, :id => @comment2.id
response.status.should == 204
end
end
@ -101,18 +101,18 @@ describe CommentsController do
it 'let the user delete his comment' do
alice.should_receive(:retract).with(@comment)
delete :destroy, :format => "js", :id => @comment.id
delete :destroy, :format => "js", :post_id => 1, :id => @comment.id
response.status.should == 204
end
it 'does not let the user destroy comments he does not own' do
alice.should_not_receive(:retract).with(@comment2)
delete :destroy, :format => "js", :id => @comment3.id
delete :destroy, :format => "js", :post_id => 1, :id => @comment3.id
response.status.should == 403
end
end
it 'renders nothing and 404 on a nonexistent comment' do
delete :destroy, :id => 343415
delete :destroy, :post_id => 1, :id => 343415
response.status.should == 404
response.body.strip.should be_empty
end

View file

@ -18,11 +18,11 @@ describe LikesController do
describe '#create' do
let(:like_hash) {
{:positive => 1,
:status_message_id => "#{@post.id}"}
:post_id => "#{@post.id}"}
}
let(:dislike_hash) {
{:positive => 0,
:status_message_id => "#{@post.id}"}
:post_id => "#{@post.id}"}
}
context "on my own post" do
@ -77,19 +77,19 @@ describe LikesController do
end
it 'returns a 404 for a post not visible to the user' do
sign_in eve
get :index, :status_message_id => @message.id
get :index, :post_id => @message.id
end
it 'returns an array of likes for a post' do
like = bob.build_like(:positive => true, :post => @message)
like.save!
get :index, :status_message_id => @message.id
get :index, :post_id => @message.id
assigns[:likes].map(&:id).should == @message.likes.map(&:id)
end
it 'returns an empty array for a post with no likes' do
get :index, :status_message_id => @message.id
get :index, :post_id => @message.id
assigns[:likes].should == []
end
end
@ -103,7 +103,7 @@ describe LikesController do
it 'lets a user destroy their like' do
expect {
delete :destroy, :format => "js", :status_message_id => @like.post_id, :id => @like.id
delete :destroy, :format => "js", :post_id => @like.post_id, :id => @like.id
}.should change(Like, :count).by(-1)
response.status.should == 200
end
@ -113,7 +113,7 @@ describe LikesController do
like2.save
expect {
delete :destroy, :format => "js", :status_message_id => like2.post_id, :id => like2.id
delete :destroy, :format => "js", :post_id => like2.post_id, :id => like2.id
}.should_not change(Like, :count)
response.status.should == 403