Showing all messages in inbox, but sorting by date DESC and highlighting new ones...
authorDan Karran <dan@karran.net>
Fri, 17 Aug 2007 18:05:09 +0000 (18:05 +0000)
committerDan Karran <dan@karran.net>
Fri, 17 Aug 2007 18:05:09 +0000 (18:05 +0000)
app/controllers/message_controller.rb
app/models/user.rb
app/views/message/_message_summary.rhtml
app/views/message/inbox.rhtml
app/views/message/read.rhtml

index 26102cc639faa8ef547566e8ce754b741e600fb1..9b678e274aa06b526471811cd56c7a5d39847c2e 100644 (file)
@@ -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
index 054695e5b8f74089bb5a822ac192272690bf9da0..908ef3d517b6016287e7793661cc404462acb608 100644 (file)
@@ -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"
index f572c8990e205f798de66db1885e8cd358fc0d15..1aca68014b14b5f030e05b1fca0eeb6fff637cbe 100644 (file)
@@ -1,11 +1,13 @@
 <tr>
   <td><%= link_to message_summary.sender.display_name , :controller => 'user', :action => message_summary.sender.display_name %></td>
-  <td><%= link_to  message_summary.title , :controller => 'message', :action => 'read', :message_id => message_summary.id  %></td>
+  <td><%= "<b>" if not message_summary.message_read? %>
+      <%= link_to  message_summary.title , :controller => 'message', :action => 'read', :message_id => message_summary.id  %>
+      <%= "</b>" if not message_summary.message_read? %></td>
   <td><%= message_summary.sent_on %></td>
   <% if message_summary.message_read? %>
-    <td>Message read</td>
+    <td><%= button_to 'Mark as unread', :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread' %></td>
   <% else %>
-    <td><%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => message_summary.id %> </td>
+    <td><%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %></td>
   <% end %>
-  <td><%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => message_summary.from_user_id %> </td>
+  <td><%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => message_summary.from_user_id %></td>
 </tr>
index 1c17ae18f22572b33d9431170f4b3b6d2853e70f..aa20327e3f18a1dd717878e4e198884c618eb1d6 100644 (file)
@@ -2,7 +2,7 @@
 
 <p>You have <%= @user.new_messages.size %> new messages and <%= @user.messages.size -  @user.new_messages.size %> old messages</p> 
 
-<% if (params[:all] and @user.messages.size > 0) or (@user.new_messages.size > 0) %>
+<% if @user.messages.size > 0 %>
   <div id="messages">
     <table class="messages">
       <tr>
         <th></th>
         <th></th>
       </tr>
-      <% 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 %>
     </table>
   </div>
-<% end %>
-
-<br />
-
-<% 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 %>
+         <div id="messages">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 %>?</div>
+<% end %>
\ No newline at end of file
index a8bd2e73311a56a6ccd0fe9a30bbdb4b16a21b2c..b84fea4c7c60f7b0e2606c7235297d755b623601 100644 (file)
@@ -24,6 +24,7 @@
 <table>
   <tr>
     <td><%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => @message.from_user_id %></td>
-    <td><%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => @message.id %></td>
+    <td><%= button_to 'Mark as unread', :controller => 'message', :action => 'mark', :message_id => @message.id, :mark => 'unread' %></td>
+    <td><%= link_to 'Back to inbox', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %></td>
   </tr>
 </table>