def new
if params[:message]
+ to_user = User.find_by_display_name(params[:display_name])
body = params[:message][:body]
title = params[:message][:title]
message = Message.new
message.body = body
message.title = title
- message.to_user_id = User.find_by_display_name(params[:display_name]).id
+ message.to_user_id = to_user.id
+ message.from_display_name = to_user.display_name
message.from_user_id = @user.id
message.sent_on = Time.now
if message.save
else
@message.errors.add("Sending message failed")
end
-
- end
+
+ end
+ end
+
+ def read
+ if params[:message_id]
+ id = params[:message_id]
+ @message = Message.find_by_id(id)
+ end
+ end
+
+ def mark
+ if params[:message_id]
+ id = params[:message_id]
+ message = Message.find_by_id(id)
+ message.message_read = 1
+ if message.save
+ flash[:notice] = 'Message Marked as read'
+ redirect_to :controller => 'user', :action => 'view', :display_name => @user.display_name
+ end
+ end
end
end
<h2><%= @this_user.display_name %></h2>
<% if @user and @this_user.id == @user.id %>
<% if @user.has_messages? %>
-<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.get_new_messages.length %> new messages and <%=@user.get_all_messages.length - @user.get_new_messages.length %> old messages:</p>
+
+<div id = "messages">
<table class="messages">
<th>from<th>
<th>title<th>
<th>received on<th>
+<th>mark as read<th>
+<th>reply<th>
<th><th>
-<% @user.get_new_messages.each do |message| %>
+<% if params[:unread] %>
+<% @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>
-<td><%= link_to 'reply', :controller => 'message', :action => 'new', :display_name => User.find(message.from_user_id).display_name %></td>
+<% if message.message_read = 0 %>
+<td><%= link_to 'mark as read', :controller => 'message', :action => 'mark', :message_id => message.id %> </td>
+<td><%= link_to 'reply', :controller => 'message', :action => 'new', :user_id => message.from_user_id %> </td>
+<%else%>
+<td>message read</td>
+<%end%>
+<%end%>
+</tr>
+
+<%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>
+
+<%else%>
+<p>You have no messages. </p>
<%end%>
+
+<br />
+<br />
+<%= link_to 'show unread messages', :controller => 'user', :action => 'view', :display_name => @user.display_name, :unread => true %>
+<br />
<br />
- <%= link_to 'go to your account page', :controller => 'user', :action => 'account', :display_name => @user.display_name %><br /><br />
+<%= link_to 'go to your account page', :controller => 'user', :action => 'account', :display_name => @user.display_name %><br /><br />
+
<% else %>
- <%= link_to 'send message', :controller => 'message', :action => 'new', :display_name => @this_user.display_name %><br /><br />
- <%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %><br /><br />
+<%= link_to 'send message', :controller => 'message', :action => 'new', :display_name => @this_user.display_name %><br /><br />
+<%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %><br /><br />
<% end %>
<%= link_to 'diary', :controller => 'user', :action => 'diary', :display_name => @this_user.display_name %><br /><br />
+
+<p><%= params[:display_name] %> says: </p>
<%= simple_format(@this_user.description) %>
alter table users add column within_lon double default 2;
alter table users add column within_lat double default 2;
-create table messages (id bigint not null auto_increment, user_id bigint(20) not null, from_user_id bigint(20) not null, title varchar(255), body text, sent_on datetime, message_read boolean default 0, primary key(id));
+create table messages (id bigint not null auto_increment, user_id bigint(20) not null, from_user_id bigint(20) not null, from_display_name varchar(255) default "", title varchar(255), body text, sent_on datetime, message_read boolean default 0, primary key(id));
+create index from_name_idx on messages(from_display_name);
create table friends (id bigint not null auto_increment, user_id bigint(20) not null, friend_user_id(20) not null, primary key(id));
create index user_id_idx on friends(friend_user_id);