From 2bb75bb0b6ab4a54d98005754f614d0c101b11f8 Mon Sep 17 00:00:00 2001 From: MrYummy Date: Fri, 16 Jun 2017 21:14:09 +0200 Subject: tweaked message 'read' system --- app/controllers/messagereplies_controller.rb | 1 - app/controllers/messages_controller.rb | 6 ++++-- app/models/message.rb | 1 + app/views/messagereplies/_new.html.erb | 1 + app/views/messages/index.html.erb | 2 +- app/views/messages/new.html.erb | 1 + app/views/users/show.html.erb | 2 +- db/migrate/20170524181458_create_messages.rb | 2 +- db/schema.rb | 2 +- 9 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/controllers/messagereplies_controller.rb b/app/controllers/messagereplies_controller.rb index c8272eb..193850a 100644 --- a/app/controllers/messagereplies_controller.rb +++ b/app/controllers/messagereplies_controller.rb @@ -16,7 +16,6 @@ class MessagerepliesController < ApplicationController @reply.user_author = current_user @reply.message = message if @reply.save - @reply.message.update_attributes(user_hidden: nil, read: false) if false @reply.send_new_message_reply_mail end diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 2f7357f..bcc57cc 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -17,7 +17,7 @@ class MessagesController < ApplicationController end 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]) end @@ -54,6 +54,7 @@ class MessagesController < ApplicationController end @message = Message.new(message_params) @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 @message.send_new_message_mail 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_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.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 private diff --git a/app/models/message.rb b/app/models/message.rb index 35c47ef..2bbe4cb 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -6,6 +6,7 @@ class Message < ActiveRecord::Base 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_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 diff --git a/app/views/messagereplies/_new.html.erb b/app/views/messagereplies/_new.html.erb index a7b7780..a882235 100644 --- a/app/views/messagereplies/_new.html.erb +++ b/app/views/messagereplies/_new.html.erb @@ -1,5 +1,6 @@ <%= form_for [reply.get_message, reply] do |f| %> <%= render partial: "md_editor", locals: {name: "messagereply[text]", content: reply.text} %> + <%= f.hidden_field :user_unread, value: current_user %>

<%= f.submit "Reply", class: "btn blue" %>

<% end %> diff --git a/app/views/messages/index.html.erb b/app/views/messages/index.html.erb index 8ff289d..0ce7008 100644 --- a/app/views/messages/index.html.erb +++ b/app/views/messages/index.html.erb @@ -26,7 +26,7 @@ <%= render partial: "users/username", locals: { user: user } %>   - "><%= link_to message.subject, message %> + "><%= link_to message.subject, message %>   |   <%= ago message.created_at %> diff --git a/app/views/messages/new.html.erb b/app/views/messages/new.html.erb index 80078f8..1184cad 100644 --- a/app/views/messages/new.html.erb +++ b/app/views/messages/new.html.erb @@ -20,6 +20,7 @@ <%= f.hidden_field :user_sender, value: current_user %> + <%= f.hidden_field :user_unread, value: current_user %>

<%= f.submit "Send Message", class: "btn blue left" %>

<% end %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index e2e9348..6ca1acd 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -11,7 +11,7 @@ <%= link_to "edit profile", edit_user_path(@user), :class => "btn blue" %> <% end %> <% 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 %> <%= link_to "Send this user a message", new_message_path(user_target: @user.ign), :class => "btn blue" %> <% end %> diff --git a/db/migrate/20170524181458_create_messages.rb b/db/migrate/20170524181458_create_messages.rb index c0c1fa5..e2d6c80 100644 --- a/db/migrate/20170524181458_create_messages.rb +++ b/db/migrate/20170524181458_create_messages.rb @@ -6,7 +6,7 @@ class CreateMessages < ActiveRecord::Migration t.references :user_target t.references :user_editor t.references :user_hidden - t.boolean :read, default: false + t.references :user_unread t.timestamps null: true end diff --git a/db/schema.rb b/db/schema.rb index d7221e9..476f24f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -91,7 +91,7 @@ ActiveRecord::Schema.define(version: 20170613021450) do t.integer "user_target_id", limit: 4 t.integer "user_editor_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 "updated_at" t.string "subject", limit: 191 -- cgit v1.2.3