message outbox
authorMikel Maron <mikel_maron@yahoo.com>
Wed, 21 Nov 2007 18:24:29 +0000 (18:24 +0000)
committerMikel Maron <mikel_maron@yahoo.com>
Wed, 21 Nov 2007 18:24:29 +0000 (18:24 +0000)
app/controllers/message_controller.rb
app/models/user.rb
app/views/message/_sent_message_summary.rhtml [new file with mode: 0644]
app/views/message/inbox.rhtml
app/views/message/outbox.rhtml [new file with mode: 0644]
app/views/message/read.rhtml
config/routes.rb

index 52f38e9f6a1d3d4e166423b432b57ea9b6b4a7d7..b54fdf9d131db521ed3c8b6a40b4156393b6dc35 100644 (file)
@@ -22,8 +22,8 @@ class MessageController < ApplicationController
 
   def read
     @title = 'read message'
-    @message = Message.find(params[:message_id], :conditions => ["to_user_id = ?", @user.id])
-    @message.message_read = 1
+    @message = Message.find(params[:message_id], :conditions => ["to_user_id = ? or from_user_id = ?", @user.id, @user.id ])
+    @message.message_read = 1 if @message.to_user_id == @user.id
     @message.save
   rescue ActiveRecord::RecordNotFound
     render :nothing => true, :status => :not_found
@@ -37,6 +37,14 @@ class MessageController < ApplicationController
     end
   end
 
+  def outbox
+    @title = 'outbox'
+    if @user and params[:display_name] == @user.display_name
+    else
+      redirect_to :controller => 'message', :action => 'outbox', :display_name => @user.display_name
+    end
+  end
+
   def mark
     if params[:message_id]
       id = params[:message_id]
index 2ad45e8acd7d87ae6e63d01583548e3bfe9b9900..eccc006c2b7b5abf860e581e6f72c9e1bda774bf 100644 (file)
@@ -5,6 +5,7 @@ class User < ActiveRecord::Base
   has_many :diary_entries, :order => 'created_at DESC'
   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 :sent_messages, :class_name => "Message", :foreign_key => :from_user_id, :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/_sent_message_summary.rhtml b/app/views/message/_sent_message_summary.rhtml
new file mode 100644 (file)
index 0000000..0061c6a
--- /dev/null
@@ -0,0 +1,7 @@
+<% this_colour = cycle('lightgrey', 'white') # can only call once for some dumb reason %>
+
+<tr class="inbox-row<%= "-unread" if not sent_message_summary.message_read? %>">
+  <td class="inbox-sender" bgcolor='<%= this_colour %>'><%= link_to sent_message_summary.recipient.display_name , :controller => 'user', :action => sent_message_summary.recipient.display_name %></td>
+  <td class="inbox-subject" bgcolor='<%= this_colour %>'><%= link_to  sent_message_summary.title , :controller => 'message', :action => 'read', :message_id => sent_message_summary.id  %></td>
+ <td class="inbox-sent" bgcolor='<%= this_colour %>'><%= sent_message_summary.sent_on %></td>
+</tr>
index aa20327e3f18a1dd717878e4e198884c618eb1d6..2a64f2774788d7b81b0bfd343d82413a23bd3dce 100644 (file)
@@ -1,4 +1,4 @@
-<h2>My inbox</h2>
+<h2>My inbox/<%= link_to "outbox", url_for(:controller => "user", :action => "outbox", :id => @user.display_name) %></h2>
 
 <p>You have <%= @user.new_messages.size %> new messages and <%= @user.messages.size -  @user.new_messages.size %> old messages</p> 
 
@@ -17,4 +17,4 @@
   </div>
 <% else %>
          <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
+<% end %>
diff --git a/app/views/message/outbox.rhtml b/app/views/message/outbox.rhtml
new file mode 100644 (file)
index 0000000..6fcbdfa
--- /dev/null
@@ -0,0 +1,18 @@
+<h2>My <%= link_to "inbox", url_for(:controller => "user", :action => "inbox", :id => @user.display_name) %>/outbox</h2>
+
+<p>You have <%= @user.sent_messages.size %> sent messages
+
+<% if @user.sent_messages.size > 0 %>
+  <div id="messages">
+    <table class="messages">
+      <tr>
+        <th>To</th>
+        <th>Subject</th>
+        <th>Date</th>
+      </tr>
+      <%= render :partial => "sent_message_summary", :collection => @user.sent_messages %>
+    </table>
+  </div>
+<% else %>
+         <div id="messages">You have no sent 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 %>
index 7a0d2bbe12438a5e0fc1c6fd355a6958aae70c79..4117057d006388f48ec7a7e94de19007df541216 100644 (file)
@@ -1,3 +1,5 @@
+<% if @user == @message.recipient %>
+
 <h2>Reading your messages</h2>
 
 <table>
     <td><%= link_to 'Back to inbox', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %></td>
   </tr>
 </table>
+
+<% else %>
+
+<h2>Reading your sent messages</h2>
+
+<table>
+  <tr>
+    <th align="right">To</th>
+    <td><%= link_to @message.recipient.display_name, :controller => 'user', :action => 'view', :display_name => @message.recipient.display_name %></td>
+  </tr>
+  <tr>
+    <th align="right">Subject</th>
+    <td><%= @message.title %></td>
+  </tr>
+  <tr>
+    <th align="right">Date</th>
+    <td><%= @message.sent_on %></td>
+  </tr>
+  <tr>
+    <th></th>
+    <td><%= @message.body %></td>
+  </tr>
+</table>
+
+<br />
+
+<table>
+  <tr>
+    <td><%= link_to 'Back to outbox', :controller => 'message', :action => 'outbox', :display_name => @user.display_name %></td>
+  </tr>
+</table>
+
+<% end %>
index 758bd6492fc066dffd69b90bd59ff647bb28b2c8..dce4042de6589f8c316cc6bb5b9c8274bce904cf 100644 (file)
@@ -118,6 +118,7 @@ ActionController::Routing::Routes.draw do |map|
   # messages
 
   map.connect '/user/:display_name/inbox', :controller => 'message', :action => 'inbox'
+  map.connect '/user/:display_name/outbox', :controller => 'message', :action => 'outbox'
   map.connect '/message/new/:user_id', :controller => 'message', :action => 'new'
   map.connect '/message/read/:message_id', :controller => 'message', :action => 'read'
   map.connect '/message/mark/:message_id', :controller => 'message', :action => 'mark'