From 979d9d7fb492dfe1516889d5c315fee62e4e1ff0 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Fri, 25 Feb 2011 16:11:19 -0800 Subject: [PATCH] added delete actions for private messages --- ...private_message_visibilities_controller.rb | 19 ++++++++++ app/views/private_messages/index.haml | 31 ++++++++++------ app/views/private_messages/new.haml | 2 +- app/views/private_messages/show.haml | 9 +++++ config/routes.rb | 6 +++- ...te_message_visibilities_controller_spec.rb | 35 +++++++++++++++++++ 6 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 app/controllers/private_message_visibilities_controller.rb create mode 100644 spec/controllers/private_message_visibilities_controller_spec.rb diff --git a/app/controllers/private_message_visibilities_controller.rb b/app/controllers/private_message_visibilities_controller.rb new file mode 100644 index 000000000..706f7a866 --- /dev/null +++ b/app/controllers/private_message_visibilities_controller.rb @@ -0,0 +1,19 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. +# + +class PrivateMessageVisibilitiesController < ApplicationController + before_filter :authenticate_user! + + def destroy + @vis = PrivateMessageVisibility.where(:person_id => current_user.person.id, + :private_message_id => params[:private_message_id]).first + if @vis + if @vis.destroy + flash[:notice] = "Message successfully removed" + end + end + redirect_to private_messages_path + end +end diff --git a/app/views/private_messages/index.haml b/app/views/private_messages/index.haml index 57780c302..a2e91d8c1 100644 --- a/app/views/private_messages/index.haml +++ b/app/views/private_messages/index.haml @@ -3,15 +3,26 @@ -# the COPYRIGHT file. -= link_to 'new message', new_private_message_path +.span-12.last -%br -%br -%br + %h2 + .right + = link_to 'new message', new_private_message_path, :class => 'button' + Message Inbox -- for message in @messages - %b - = message.author.name - %br - = link_to message.message, message - %hr + + - if @messages.count > 0 + .stream + - for message in @messages + .stream_element + .right + = link_to image_tag('deletelabel.png'), private_message_private_message_visibility_path(message), :method => 'delete', :confirm => t('are_you_sure') + + .from + = message.author.name + %p + = link_to message.message, message + + - else + %i + You have no messages diff --git a/app/views/private_messages/new.haml b/app/views/private_messages/new.haml index ccc945125..8bff8af7a 100644 --- a/app/views/private_messages/new.haml +++ b/app/views/private_messages/new.haml @@ -15,5 +15,5 @@ message = private_message.text_area :message, :rows => 5 - = link_to 'cancel', private_messages_path = private_message.submit :send + = link_to 'cancel', private_messages_path diff --git a/app/views/private_messages/show.haml b/app/views/private_messages/show.haml index b80ca5e12..43d5baecd 100644 --- a/app/views/private_messages/show.haml +++ b/app/views/private_messages/show.haml @@ -27,3 +27,12 @@ %h4 message = @message.message + +%br +%br +%br +%br + += link_to t('delete'), private_message_private_message_visibility_path(@message), :method => 'delete', :confirm => t('are_you_sure') + + diff --git a/config/routes.rb b/config/routes.rb index 508e9a5a6..881ebec5e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ # the COPYRIGHT file. Diaspora::Application.routes.draw do - resources :private_messages + resources :status_messages, :only => [:create, :destroy, :show] resources :comments, :only => [:create] @@ -26,6 +26,10 @@ Diaspora::Application.routes.draw do resources :contacts resources :aspect_memberships, :only => [:destroy, :create] + resources :private_messages do + resource :private_message_visibility, :only => [:destroy], :path => '/visibility/' + end + resources :people, :except => [:edit, :update] do resources :status_messages resources :photos diff --git a/spec/controllers/private_message_visibilities_controller_spec.rb b/spec/controllers/private_message_visibilities_controller_spec.rb new file mode 100644 index 000000000..2dc6c21da --- /dev/null +++ b/spec/controllers/private_message_visibilities_controller_spec.rb @@ -0,0 +1,35 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + +require 'spec_helper' + +describe PrivateMessageVisibilitiesController do + render_views + + before do + @user1 = alice + sign_in :user, @user1 + + @create_hash = { :participant_ids => [@user1.contacts.first.person.id, @user1.person.id], + :author => @user1.person, :message => "cool stuff" } + @message = PrivateMessage.create(@create_hash) + end + + describe '#destroy' do + it 'deletes the visibility' do + lambda { + delete :destroy, :private_message_id => @message.id + }.should change(PrivateMessageVisibility, :count).by(-1) + end + + it 'does not let a user destroy a visibility that is not theirs' do + user2 = eve + sign_in :user, user2 + + lambda { + delete :destroy, :private_message_id => @message.id + }.should_not change(PrivateMessageVisibility, :count) + end + end +end