tweaked message 'read' system

This commit is contained in:
MrYummy
2017-06-16 21:14:09 +02:00
parent dd193e740a
commit 2bb75bb0b6
9 changed files with 11 additions and 7 deletions

View File

@@ -16,7 +16,6 @@ class MessagerepliesController < ApplicationController
@reply.user_author = current_user @reply.user_author = current_user
@reply.message = message @reply.message = message
if @reply.save if @reply.save
@reply.message.update_attributes(user_hidden: nil, read: false)
if false if false
@reply.send_new_message_reply_mail @reply.send_new_message_reply_mail
end end

View File

@@ -17,7 +17,7 @@ class MessagesController < ApplicationController
end end
def show def show
Message.find(@message.id).update_attributes(read: true) if !@message.read && @message.user_target.is?(current_user) Message.find(@message.id).update_attributes(user_unread: nil) if @message.user_unread && @message.user_target.is?(current_user)
@replies = @message.replies.page(params[:page]) @replies = @message.replies.page(params[:page])
end end
@@ -54,6 +54,7 @@ class MessagesController < ApplicationController
end end
@message = Message.new(message_params) @message = Message.new(message_params)
@message.user_target = User.find(@message.user_target_id) @message.user_target = User.find(@message.user_target_id)
@message.user_unread = User.find(@message.user_unread_id) if @message.user_unread_id
if @message.save if @message.save
@message.send_new_message_mail @message.send_new_message_mail
flash[:notice] = "Message sent!" flash[:notice] = "Message sent!"
@@ -111,7 +112,8 @@ class MessagesController < ApplicationController
params[:message][:user_target_id] = User.find_by(ign: params[:message][:user_target].strip).try(:id) params[:message][:user_target_id] = User.find_by(ign: params[:message][:user_target].strip).try(:id)
params[:message][:user_sender_id] = User.find_by(ign: params[:message][:user_sender]).id params[:message][:user_sender_id] = User.find_by(ign: params[:message][:user_sender]).id
params[:message][:user_hidden_id] = User.find_by(ign: params[:message][:user_hidden]).try(:id) params[:message][:user_hidden_id] = User.find_by(ign: params[:message][:user_hidden]).try(:id)
params.require(:message).permit([:subject, :text, :user_target_id, :user_sender_id]) params[:message][:user_unread_id] = User.find_by(ign: params[:message][:user_unread]).try(:id)
params.require(:message).permit([:subject, :text, :user_target_id, :user_sender_id, :user_hidden_id, :user_unread_id])
end end
private private

View File

@@ -6,6 +6,7 @@ class Message < ActiveRecord::Base
belongs_to :user_target, class_name: "User", foreign_key: "user_target_id" belongs_to :user_target, class_name: "User", foreign_key: "user_target_id"
belongs_to :user_editor, class_name: "User", foreign_key: "user_editor_id" belongs_to :user_editor, class_name: "User", foreign_key: "user_editor_id"
belongs_to :user_hidden, class_name: "User", foreign_key: "user_hidden_id" belongs_to :user_hidden, class_name: "User", foreign_key: "user_hidden_id"
belongs_to :user_unread, class_name: "User", foreign_key: "user_unread_id"
validates_presence_of :user_sender, :user_target, :text, :subject validates_presence_of :user_sender, :user_target, :text, :subject

View File

@@ -1,5 +1,6 @@
<%= form_for [reply.get_message, reply] do |f| %> <%= form_for [reply.get_message, reply] do |f| %>
<%= render partial: "md_editor", locals: {name: "messagereply[text]", content: reply.text} %> <%= render partial: "md_editor", locals: {name: "messagereply[text]", content: reply.text} %>
<%= f.hidden_field :user_unread, value: current_user %>
<p><%= f.submit "Reply", class: "btn blue" %></p> <p><%= f.submit "Reply", class: "btn blue" %></p>
<% end %> <% end %>

View File

@@ -26,7 +26,7 @@
<%= render partial: "users/username", locals: { user: user } %> <%= render partial: "users/username", locals: { user: user } %>
<span style="font-size:16px"> <span style="font-size:16px">
&nbsp; &nbsp;
<span class="<%= "bold" unless message.user_sender.is?(current_user) || message.read%>"><%= link_to message.subject, message %></span> <span class="<%= "bold" if message.user_unread && message.user_unread != current_user %>"><%= link_to message.subject, message %></span>
&nbsp; | &nbsp; &nbsp; | &nbsp;
</span> </span>
<%= ago message.created_at %> <%= ago message.created_at %>

View File

@@ -20,6 +20,7 @@
</tr> </tr>
</table> </table>
<%= f.hidden_field :user_sender, value: current_user %> <%= f.hidden_field :user_sender, value: current_user %>
<%= f.hidden_field :user_unread, value: current_user %>
<br> <br>
<p><%= f.submit "Send Message", class: "btn blue left" %></p> <p><%= f.submit "Send Message", class: "btn blue left" %></p>
<% end %> <% end %>

View File

@@ -11,7 +11,7 @@
<%= link_to "edit profile", edit_user_path(@user), :class => "btn blue" %> <%= link_to "edit profile", edit_user_path(@user), :class => "btn blue" %>
<% end %> <% end %>
<% if @user.is?(current_user) %> <% if @user.is?(current_user) %>
<%= link_to "Private Messages (#{Message.where(read: false).count})", messages_path, :class => "btn blue" %> <%= link_to "Private Messages (#{Message.where.not(user_unread: current_user).count})", messages_path, :class => "btn blue" %>
<% elsif current_user %> <% elsif current_user %>
<%= link_to "Send this user a message", new_message_path(user_target: @user.ign), :class => "btn blue" %> <%= link_to "Send this user a message", new_message_path(user_target: @user.ign), :class => "btn blue" %>
<% end %> <% end %>

View File

@@ -6,7 +6,7 @@ class CreateMessages < ActiveRecord::Migration
t.references :user_target t.references :user_target
t.references :user_editor t.references :user_editor
t.references :user_hidden t.references :user_hidden
t.boolean :read, default: false t.references :user_unread
t.timestamps null: true t.timestamps null: true
end end

View File

@@ -91,7 +91,7 @@ ActiveRecord::Schema.define(version: 20170613021450) do
t.integer "user_target_id", limit: 4 t.integer "user_target_id", limit: 4
t.integer "user_editor_id", limit: 4 t.integer "user_editor_id", limit: 4
t.integer "user_hidden_id", limit: 4 t.integer "user_hidden_id", limit: 4
t.boolean "read", default: false t.integer "user_unread_id", limit: 4
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
t.string "subject", limit: 191 t.string "subject", limit: 191