From d0711892f690acd1462dcf01f0f3c50a4d5fb83c Mon Sep 17 00:00:00 2001 From: joshua stein Date: Wed, 19 Feb 2014 13:31:48 -0600 Subject: [PATCH] messages: implement batch-delete function closes #119 --- app/controllers/messages_controller.rb | 25 ++++++++++++ app/views/messages/index.html.erb | 55 +++++++++++++++++--------- config/routes.rb | 2 + 3 files changed, 63 insertions(+), 19 deletions(-) diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 6c80d60..ffc5538 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -87,6 +87,31 @@ class MessagesController < ApplicationController end end + def batch_delete + deleted = 0 + + params.each do |k,v| + if v.to_s == "1" && m = k.match(/^delete_(.+)$/) + if (message = Message.where(:short_id => m[1]).first) + if message.author_user_id == @user.id + message.deleted_by_author = true + elsif message.recipient_user_id == @user.id + message.deleted_by_recipient = true + else + next + end + + message.save! + deleted += 1 + end + end + end + + flash[:success] = "Deleted #{deleted} message#{deleted == 1 ? "" : "s"}." + + return redirect_to "/messages" + end + def keep_as_new @message.has_been_read = false @message.save diff --git a/app/views/messages/index.html.erb b/app/views/messages/index.html.erb index 4f97f49..d36a5b1 100644 --- a/app/views/messages/index.html.erb +++ b/app/views/messages/index.html.erb @@ -1,3 +1,12 @@ + +
<% if @direction == :out %> @@ -14,27 +23,35 @@
<% if @messages.any? %> - - - - - - - <% @messages.includes(:author, :recipient).each do |message| %> - "> - - - + <%= form_tag batch_delete_messages_url do %> +
<%= @direction == :in ? "From" : "To" %><%= @direction == :in ? "Received" : "Sent" %>Subject
<% if @direction == :in %> - <%= - message.author.username %> - <% else %> - <%= - message.recipient.username %> - <% end %><%= raw(time_ago_in_words_label(message.created_at)) %> ago<%= message.subject - %>
+ + + + + + <% @messages.includes(:author, :recipient).each do |message| %> + "> + + + + + + <% end %> +
<%= check_box_tag "delete_all", + :id => "delete_all" %><%= @direction == :in ? "From" : "To" %><%= @direction == :in ? "Received" : "Sent" %>Subject
<%= check_box_tag "delete_#{message.short_id}" %><% if @direction == :in %> + <%= + message.author.username %> + <% else %> + <%= + message.recipient.username %> + <% end %><%= raw(time_ago_in_words_label(message.created_at)) %> ago<%= message.subject + %>
+

+ <%= submit_tag "Delete Selected" %> +

<% end %> - <% else %>

You do not have any <%= @direction == :in ? "" : "sent" %> private diff --git a/config/routes.rb b/config/routes.rb index cb90e6d..e7f7d25 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -61,6 +61,8 @@ Lobsters::Application.routes.draw do get "/comments/page/:page" => "comments#index" get "/messages/sent" => "messages#sent" + post "/messages/batch_delete" => "messages#batch_delete", + :as => "batch_delete_messages" resources :messages do post "keep_as_new" end