]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/messages_controller.rb
Merge remote-tracking branch 'upstream/pull/4324'
[rails.git] / app / controllers / messages_controller.rb
index 22d0c88ba5e868e374f6c5f553c21245975e5d7e..2ca86fc028dca2dbe9af4c0a8ec14b71665c3ca9 100644 (file)
@@ -1,4 +1,6 @@
 class MessagesController < ApplicationController
 class MessagesController < ApplicationController
+  include UserMethods
+
   layout "site"
 
   before_action :authorize_web
   layout "site"
 
   before_action :authorize_web
@@ -45,7 +47,7 @@ class MessagesController < ApplicationController
       render :action => "new"
     elsif @message.save
       flash[:notice] = t ".message_sent"
       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"
       redirect_to :action => :inbox
     else
       @title = t "messages.new.title"
@@ -55,7 +57,7 @@ class MessagesController < ApplicationController
 
   # Destroy the message.
   def destroy
 
   # Destroy the message.
   def destroy
-    @message = Message.where("to_user_id = ? OR from_user_id = ?", current_user.id, current_user.id).find(params[:id])
+    @message = Message.where(:recipient => current_user).or(Message.where(:sender => current_user.id)).find(params[:id])
     @message.from_user_visible = false if @message.sender == current_user
     @message.to_user_visible = false if @message.recipient == current_user
     if @message.save && !request.xhr?
     @message.from_user_visible = false if @message.sender == current_user
     @message.to_user_visible = false if @message.recipient == current_user
     if @message.save && !request.xhr?
@@ -105,9 +107,16 @@ class MessagesController < ApplicationController
     @title = t ".title"
   end
 
     @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
   # Set the message as being read or unread.
   def mark
-    @message = Message.where("to_user_id = ? OR from_user_id = ?", current_user.id, current_user.id).find(params[:message_id])
+    @message = Message.where(:recipient => current_user).or(Message.where(:sender => current_user)).find(params[:message_id])
     if params[:mark] == "unread"
       message_read = false
       notice = t ".as_unread"
     if params[:mark] == "unread"
       message_read = false
       notice = t ".as_unread"
@@ -125,6 +134,23 @@ class MessagesController < ApplicationController
     render :action => "no_such_message", :status => :not_found
   end
 
     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
 
   ##
   private
 
   ##