class Message < ActiveRecord::Base
- belongs_to :user
+ belongs_to :sender, :class_name => "User", :foreign_key => :from_user_id
+ belongs_to :recipient, :class_name => "User", :foreign_key => :to_user_id
end
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 :friends
validates_confirmation_of :pass_crypt, :message => 'Password must match the confirmation password'
return OSM::GreatCircle.new(self.home_lat, self.home_lon).distance(nearby_user.home_lat, nearby_user.home_lon)
end
- def self.has_messages?
- if Message.fdhjklsafind_by_to_user_id(self.id)
- return true
- else
- return false
- end
- end
-
- def get_new_messages
- messages = Message.find(:all, :conditions => "message_read = 0 and to_user_id = #{self.id}")
- return messages
- end
-
- def get_all_messages
- messages = Message.find(:all, :conditions => "to_user_id = #{self.id}")
- return messages
- end
-
def is_friends_with?(new_friend)
res = false
@new_friend = new_friend
<span id="greeting">
<% if @user and @user.id %>
Welcome, <%= link_to @user.display_name, {:controller => 'user', :action => 'view', :display_name => @user.display_name}%> |
- <% @inbox_weight = 'bold' if @user.get_new_messages.length > 0 %>
+ <% @inbox_weight = 'bold' if @user.new_messages.size > 0 %>
<% if !@user.home_lon.nil? and !@user.home_lat.nil? %>
<%= link_to 'home', {:controller => 'site', :action => 'index', :lon => @user.home_lon, :lat => @user.home_lat, :zoom => '10'} %> |
<% end %>
- <%= link_to "inbox (#{@user.get_new_messages.length})", {:controller => 'message', :action => 'inbox', :display_name => @user.display_name}, {:style => "font-weight: #{@inbox_weight};" } %> |
+ <%= link_to "inbox (#{@user.new_messages.size})", {:controller => 'message', :action => 'inbox', :display_name => @user.display_name}, {:style => "font-weight: #{@inbox_weight};" } %> |
<%= link_to 'logout', {:controller => 'user', :action => 'logout', :referer => request.request_uri}, {:id => 'logoutanchor'}%>
<% else %>
<%= link_to 'log in', {:controller => 'user', :action => 'login', :referer => request.request_uri}, {:id => 'loginanchor'}%> |
--- /dev/null
+<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><%= message_summary.sent_on %></td>
+ <% if message_summary.message_read? %>
+ <td>Message read</td>
+ <% else %>
+ <td><%= button_to 'Mark as read', :controller => 'message', :action => 'mark', :message_id => message_summary.id %> </td>
+ <% end %>
+ <td><%= button_to 'Reply', :controller => 'message', :action => 'new', :user_id => message_summary.from_user_id %> </td>
+</tr>
<h2>My inbox</h2>
-<p>You have <%=@user.get_new_messages.length %> new messages and <%=@user.get_all_messages.length - @user.get_new_messages.length %> old messages</p>
+<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.get_all_messages.length > 0) or (@user.get_new_messages.length > 0) %>
+<% if (params[:all] and @user.messages.size > 0) or (@user.new_messages.size > 0) %>
<div id="messages">
- <table class="messages">
- <tr><th>from</th>
- <th>title</th>
- <th>received on</th>
- <th></th>
- <th></th></tr>
+ <table class="messages">
+ <tr>
+ <th>From</th>
+ <th>Subject</th>
+ <th>Date</th>
+ <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 %>
+ </table>
+ </div>
+<% end %>
- <% if params[:all] %>
- <% @user.get_all_messages.each do |message| %>
- <tr><td><%= link_to User.find(message.from_user_id).display_name , :controller => 'user', :action => User.find(message.from_user_id).display_name %></td>
- <td><%= link_to message.title , :controller => 'message', :action => 'read', :message_id => message.id %></td>
- <td><%= message.sent_on %></td>
- <% if message.message_read = 0 %>
- <td><%= link_to 'mark as read', :controller => 'message', :action => 'mark', :message_id => message.id %> </td>
- <%else%>
- <td>message read</td>
- <%end%>
- <td><%= link_to 'reply', :controller => 'message', :action => 'new', :user_id => message.from_user_id %> </td>
- </tr>
- <%end%>
-
- <%else%>
-
- <% @user.get_new_messages.each do |message| %>
- <tr><td><%= link_to User.find(message.from_user_id).display_name , :controller => 'user', :action => User.find(message.from_user_id).display_name %></td>
- <td><%= link_to message.title , :controller => 'message', :action => 'read', :message_id => message.id %></td>
- <td><%= message.sent_on %></td>
- <% if message.message_read = 0 %>
- <td><%= link_to 'mark as read', :controller => 'message', :action => 'mark', :message_id => message.id %> </td>
- <%else%>
- <td>message read</td>
- <%end%>
- </tr>
- <%end%>
- <%end%>
-
-</table>
-</div>
-<%end%>
+<br />
<% if params[:all] %>
- <%= link_to 'show new messages', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %>
+ <%= 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 %>
\ No newline at end of file
+ <%= link_to 'Show all messages', :controller => 'message', :action => 'inbox', :display_name => @user.display_name, :all => true %>
+<% end %>
<h2>Reading your messages</h2>
<table>
-<th>from</th>
-<th>message</th>
-<th>date</th>
-<th>reply</th>
-<tr><td><%= (User.find_by_id(@message.from_user_id)).display_name %></td>
-<td><%= @message.body %></td>
-<td><%= @message.sent_on %></td>
-<td><%= link_to 'reply', :controller => 'message', :action => 'new', :user_id => @message.from_user_id %></td>
+ <tr>
+ <th>From</th>
+ <td><%= link_to @message.sender.display_name, :controller => 'user', :action => 'view', :display_name => @message.sender.display_name %></td>
+ </tr>
+ <tr>
+ <th>Subject</th>
+ <td><%= @message.title %></td>
+ </tr>
+ <tr>
+ <th>Date</th>
+ <td><%= @message.sent_on %></td>
+ </tr>
+ <tr>
+ <th>Message</th>
+ <td><%= @message.body %></td>
+ </tr>
</table>
-<% form_tag :controller => 'message', :action => 'mark', :message_id => @message.id do %>
-<%= submit_tag 'Mark as read' %>
-<% end %>
+<br />
+
+<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>
+ </tr>
+</table>