Merge remote-tracking branch 'upstream/pull/5458'
This commit is contained in:
commit
44ec0e02fc
9 changed files with 128 additions and 107 deletions
|
@ -42,7 +42,7 @@ class Ability
|
|||
can :update, DiaryEntry, :user => user
|
||||
can [:create], DiaryComment
|
||||
can [:make_friend, :remove_friend], Friendship
|
||||
can [:read, :create, :reply, :inbox, :outbox, :muted, :mark, :unmute, :destroy], Message
|
||||
can [:read, :create, :mark, :unmute, :destroy], Message
|
||||
can [:close, :reopen], Note
|
||||
can [:read, :update], :preference
|
||||
can :update, :profile
|
||||
|
|
50
app/controllers/messages/replies_controller.rb
Normal file
50
app/controllers/messages/replies_controller.rb
Normal file
|
@ -0,0 +1,50 @@
|
|||
module Messages
|
||||
class RepliesController < ApplicationController
|
||||
layout "site"
|
||||
|
||||
before_action :authorize_web
|
||||
before_action :set_locale
|
||||
|
||||
authorize_resource :class => Message
|
||||
|
||||
before_action :check_database_readable
|
||||
before_action :check_database_writable
|
||||
|
||||
allow_thirdparty_images
|
||||
|
||||
# Allow the user to reply to another message.
|
||||
def new
|
||||
message = Message.find(params[:message_id])
|
||||
|
||||
if message.recipient == current_user
|
||||
message.update(:message_read => true)
|
||||
|
||||
@message = Message.new(
|
||||
:recipient => message.sender,
|
||||
:title => "Re: #{message.title.sub(/^Re:\s*/, '')}",
|
||||
:body => "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}"
|
||||
)
|
||||
|
||||
@title = @message.title
|
||||
|
||||
render "messages/new"
|
||||
elsif message.sender == current_user
|
||||
@message = Message.new(
|
||||
:recipient => message.recipient,
|
||||
:title => "Re: #{message.title.sub(/^Re:\s*/, '')}",
|
||||
:body => "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}"
|
||||
)
|
||||
|
||||
@title = @message.title
|
||||
|
||||
render "messages/new"
|
||||
else
|
||||
flash[:notice] = t ".wrong_user", :user => current_user.display_name
|
||||
redirect_to login_path(:referer => request.fullpath)
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
@title = t "messages.no_such_message.title"
|
||||
render "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, :reply, :mark, :destroy]
|
||||
before_action :check_database_writable, :only => [:new, :create, :mark, :destroy]
|
||||
|
||||
allow_thirdparty_images :only => [:new, :create, :show]
|
||||
|
||||
|
@ -73,41 +73,6 @@ class MessagesController < ApplicationController
|
|||
render :action => "no_such_message", :status => :not_found
|
||||
end
|
||||
|
||||
# Allow the user to reply to another message.
|
||||
def reply
|
||||
message = Message.find(params[:message_id])
|
||||
|
||||
if message.recipient == current_user
|
||||
message.update(:message_read => true)
|
||||
|
||||
@message = Message.new(
|
||||
:recipient => message.sender,
|
||||
:title => "Re: #{message.title.sub(/^Re:\s*/, '')}",
|
||||
:body => "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}"
|
||||
)
|
||||
|
||||
@title = @message.title
|
||||
|
||||
render :action => "new"
|
||||
elsif message.sender == current_user
|
||||
@message = Message.new(
|
||||
:recipient => message.recipient,
|
||||
:title => "Re: #{message.title.sub(/^Re:\s*/, '')}",
|
||||
:body => "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}"
|
||||
)
|
||||
|
||||
@title = @message.title
|
||||
|
||||
render :action => "new"
|
||||
else
|
||||
flash[:notice] = t ".wrong_user", :user => current_user.display_name
|
||||
redirect_to login_path(:referer => request.fullpath)
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
@title = t "messages.no_such_message.title"
|
||||
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])
|
||||
|
|
|
@ -78,7 +78,7 @@ class UserMailer < ApplicationMailer
|
|||
@text = message.body
|
||||
@title = message.title
|
||||
@readurl = message_url(message)
|
||||
@replyurl = message_reply_url(message)
|
||||
@replyurl = new_message_reply_url(message)
|
||||
@author = @from_user
|
||||
|
||||
attach_user_avatar(message.sender)
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<div class="richtext text-break"><%= @message.body.to_html %></div>
|
||||
|
||||
<div>
|
||||
<%= link_to t(".reply_button"), message_reply_path(@message), :class => "btn btn-primary" %>
|
||||
<%= link_to t(".reply_button"), new_message_reply_path(@message), :class => "btn btn-primary" %>
|
||||
<% if current_user == @message.recipient %>
|
||||
<%= link_to t(".unread_button"), message_mark_path(@message, :mark => "unread"), :method => "post", :class => "btn btn-primary" %>
|
||||
<%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue