Add basic structures for UserMute and Message muting logic
Including models, migration, controllers, views & locales.
This commit is contained in:
parent
6eb29bf6d4
commit
efc61f1315
18 changed files with 346 additions and 12 deletions
|
@ -47,7 +47,7 @@ class MessagesController < ApplicationController
|
|||
render :action => "new"
|
||||
elsif @message.save
|
||||
flash[:notice] = t ".message_sent"
|
||||
UserMailer.message_notification(@message).deliver_later
|
||||
UserMailer.message_notification(@message).deliver_later if @message.notify_recipient?
|
||||
redirect_to :action => :inbox
|
||||
else
|
||||
@title = t "messages.new.title"
|
||||
|
@ -107,6 +107,13 @@ class MessagesController < ApplicationController
|
|||
@title = t ".title"
|
||||
end
|
||||
|
||||
# Display the list of muted messages received by the user.
|
||||
def muted
|
||||
@title = t ".title"
|
||||
|
||||
redirect_to inbox_messages_path if current_user.muted_messages.none?
|
||||
end
|
||||
|
||||
# Set the message as being read or unread.
|
||||
def mark
|
||||
@message = Message.where(:recipient => current_user).or(Message.where(:sender => current_user)).find(params[:message_id])
|
||||
|
@ -127,6 +134,23 @@ class MessagesController < ApplicationController
|
|||
render :action => "no_such_message", :status => :not_found
|
||||
end
|
||||
|
||||
# Moves message into Inbox by unsetting the muted-flag
|
||||
def unmute
|
||||
message = current_user.muted_messages.find(params[:message_id])
|
||||
|
||||
if message.unmute
|
||||
flash[:notice] = t(".notice")
|
||||
else
|
||||
flash[:error] = t(".error")
|
||||
end
|
||||
|
||||
if current_user.muted_messages.none?
|
||||
redirect_to inbox_messages_path
|
||||
else
|
||||
redirect_to muted_messages_path
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
##
|
||||
|
|
45
app/controllers/user_mutes_controller.rb
Normal file
45
app/controllers/user_mutes_controller.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
class UserMutesController < ApplicationController
|
||||
include UserMethods
|
||||
|
||||
layout "site"
|
||||
|
||||
before_action :authorize_web
|
||||
before_action :set_locale
|
||||
|
||||
authorize_resource
|
||||
|
||||
before_action :lookup_user, :only => [:create, :destroy]
|
||||
before_action :check_database_readable
|
||||
before_action :check_database_writable, :only => [:create, :destroy]
|
||||
|
||||
def index
|
||||
@muted_users = current_user.muted_users
|
||||
@title = t ".title"
|
||||
|
||||
redirect_to edit_account_path unless @muted_users.any?
|
||||
end
|
||||
|
||||
def create
|
||||
user_mute = current_user.mutes.build(:subject => @user)
|
||||
|
||||
if user_mute.save
|
||||
flash[:notice] = t(".notice", :name => user_mute.subject.display_name)
|
||||
else
|
||||
flash[:error] = t(".error", :name => user_mute.subject.display_name, :full_message => user_mute.errors.full_messages.to_sentence.humanize)
|
||||
end
|
||||
|
||||
redirect_back_or_to user_mutes_path(current_user)
|
||||
end
|
||||
|
||||
def destroy
|
||||
user_mute = current_user.mutes.find_by!(:subject => @user)
|
||||
|
||||
if user_mute.destroy
|
||||
flash[:notice] = t(".notice", :name => user_mute.subject.display_name)
|
||||
else
|
||||
flash[:error] = t(".error")
|
||||
end
|
||||
|
||||
redirect_back_or_to user_mutes_path(current_user)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue