Create message read_mark resource
This commit is contained in:
parent
8cf77a2f36
commit
cc3bccb9b3
9 changed files with 179 additions and 116 deletions
39
app/controllers/messages/read_marks_controller.rb
Normal file
39
app/controllers/messages/read_marks_controller.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
module Messages
|
||||
class ReadMarksController < ApplicationController
|
||||
layout "site"
|
||||
|
||||
before_action :authorize_web
|
||||
before_action :set_locale
|
||||
|
||||
authorize_resource :message
|
||||
|
||||
before_action :check_database_readable
|
||||
before_action :check_database_writable
|
||||
|
||||
def create
|
||||
mark true
|
||||
end
|
||||
|
||||
def destroy
|
||||
mark false
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def mark(message_read)
|
||||
@message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
|
||||
@message.message_read = message_read
|
||||
if @message.save
|
||||
flash[:notice] = t ".notice"
|
||||
if @message.muted?
|
||||
redirect_to messages_muted_inbox_path, :status => :see_other
|
||||
else
|
||||
redirect_to messages_inbox_path, :status => :see_other
|
||||
end
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
@title = t "messages.no_such_message.title"
|
||||
render :template => "messages/no_such_message", :status => :not_found
|
||||
end
|
||||
end
|
||||
end
|
|
@ -10,7 +10,7 @@ class MessagesController < ApplicationController
|
|||
|
||||
before_action :lookup_user, :only => [:new, :create]
|
||||
before_action :check_database_readable
|
||||
before_action :check_database_writable, :only => [:new, :create, :mark, :destroy]
|
||||
before_action :check_database_writable, :only => [:new, :create, :destroy]
|
||||
|
||||
allow_thirdparty_images :only => [:new, :create, :show]
|
||||
|
||||
|
@ -73,30 +73,6 @@ class MessagesController < ApplicationController
|
|||
render :action => "no_such_message", :status => :not_found
|
||||
end
|
||||
|
||||
# Set the message as being read or unread.
|
||||
def mark
|
||||
@message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
|
||||
if params[:mark] == "unread"
|
||||
message_read = false
|
||||
notice = t ".as_unread"
|
||||
else
|
||||
message_read = true
|
||||
notice = t ".as_read"
|
||||
end
|
||||
@message.message_read = message_read
|
||||
if @message.save
|
||||
flash[:notice] = notice
|
||||
if @message.muted?
|
||||
redirect_to messages_muted_inbox_path, :status => :see_other
|
||||
else
|
||||
redirect_to messages_inbox_path, :status => :see_other
|
||||
end
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
@title = t "messages.no_such_message.title"
|
||||
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])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue