From 3c79240a6ab23e4103826dd1cec7a12a19e948db Mon Sep 17 00:00:00 2001 From: Dan Karran Date: Fri, 17 Aug 2007 18:05:09 +0000 Subject: [PATCH] Showing all messages in inbox, but sorting by date DESC and highlighting new ones. Adding link from message reading page back to inbox. Mark as read/unread. --- app/controllers/message_controller.rb | 13 +++++++++++-- app/models/user.rb | 4 ++-- app/views/message/_message_summary.rhtml | 10 ++++++---- app/views/message/inbox.rhtml | 18 ++++-------------- app/views/message/read.rhtml | 3 ++- 5 files changed, 25 insertions(+), 23 deletions(-) diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index 26102cc63..9b678e274 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -32,6 +32,8 @@ class MessageController < ApplicationController if params[:message_id] id = params[:message_id] @message = Message.find_by_id(id) + @message.message_read = 1 + @message.save end end @@ -47,9 +49,16 @@ class MessageController < ApplicationController if params[:message_id] id = params[:message_id] message = Message.find_by_id(id) - message.message_read = 1 + if params[:mark] == 'unread' + message_read = 0 + mark_type = 'unread' + else + message_read = 1 + mark_type = 'read' + end + message.message_read = message_read if message.save - flash[:notice] = 'Message marked as read' + flash[:notice] = "Message marked as #{mark_type}" redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name end end diff --git a/app/models/user.rb b/app/models/user.rb index 054695e5b..908ef3d51 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -3,8 +3,8 @@ class User < ActiveRecord::Base has_many :traces has_many :diary_entries, :order => 'created_at DESC' - has_many :messages, :foreign_key => :to_user_id - has_many :new_messages, :class_name => "Message", :foreign_key => :to_user_id, :conditions => "message_read = 0" + has_many :messages, :foreign_key => :to_user_id, :order => 'sent_on DESC' + has_many :new_messages, :class_name => "Message", :foreign_key => :to_user_id, :conditions => "message_read = 0", :order => 'sent_on DESC' has_many :friends has_many :tokens, :class_name => "UserToken" has_many :preferences, :class_name => "UserPreference" diff --git a/app/views/message/_message_summary.rhtml b/app/views/message/_message_summary.rhtml index f572c8990..1aca68014 100644 --- a/app/views/message/_message_summary.rhtml +++ b/app/views/message/_message_summary.rhtml @@ -1,11 +1,13 @@ <%= link_to message_summary.sender.display_name , :controller => 'user', :action => message_summary.sender.display_name %> - <%= link_to message_summary.title , :controller => 'message', :action => 'read', :message_id => message_summary.id %> + <%= "" if not message_summary.message_read? %> + <%= link_to message_summary.title , :controller => 'message', :action => 'read', :message_id => message_summary.id %> + <%= "" if not message_summary.message_read? %> <%= message_summary.sent_on %> <% if message_summary.message_read? %> - Message read + <%= button_to 'Mark as unread', :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread' %> <% else %> - <%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => message_summary.id %> + <%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %> <% end %> - <%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => message_summary.from_user_id %> + <%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => message_summary.from_user_id %> diff --git a/app/views/message/inbox.rhtml b/app/views/message/inbox.rhtml index 1c17ae18f..aa20327e3 100644 --- a/app/views/message/inbox.rhtml +++ b/app/views/message/inbox.rhtml @@ -2,7 +2,7 @@

You have <%= @user.new_messages.size %> new messages and <%= @user.messages.size - @user.new_messages.size %> old messages

-<% if (params[:all] and @user.messages.size > 0) or (@user.new_messages.size > 0) %> +<% if @user.messages.size > 0 %>
@@ -12,19 +12,9 @@ - <% if params[:all] %> - <%= render :partial => "message_summary", :collection => @user.messages %> - <% else %> - <%= render :partial => "message_summary", :collection => @user.new_messages %> - <% end %> + <%= render :partial => "message_summary", :collection => @user.messages %>
-<% end %> - -
- -<% if params[:all] %> - <%= link_to 'Show new messages', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %> <% else %> - <%= link_to 'Show all messages', :controller => 'message', :action => 'inbox', :display_name => @user.display_name, :all => true %> -<% end %> +
You have no messages yet. Why not get in touch with some of the <%= link_to 'people mapping nearby', :controller => 'user', :action => 'view', :display_name => @user.display_name %>?
+<% end %> \ No newline at end of file diff --git a/app/views/message/read.rhtml b/app/views/message/read.rhtml index a8bd2e733..b84fea4c7 100644 --- a/app/views/message/read.rhtml +++ b/app/views/message/read.rhtml @@ -24,6 +24,7 @@ - + +
<%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => @message.from_user_id %><%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => @message.id %><%= button_to 'Mark as unread', :controller => 'message', :action => 'mark', :message_id => @message.id, :mark => 'unread' %><%= link_to 'Back to inbox', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %>
-- 2.43.2