From d736a158bee0ff17bdba30496b87e1bfe20e2910 Mon Sep 17 00:00:00 2001 From: Mikel Maron Date: Wed, 21 Nov 2007 18:24:29 +0000 Subject: [PATCH] message outbox --- app/controllers/message_controller.rb | 12 +++++-- app/models/user.rb | 1 + app/views/message/_sent_message_summary.rhtml | 7 ++++ app/views/message/inbox.rhtml | 4 +-- app/views/message/outbox.rhtml | 18 ++++++++++ app/views/message/read.rhtml | 35 +++++++++++++++++++ config/routes.rb | 1 + 7 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 app/views/message/_sent_message_summary.rhtml create mode 100644 app/views/message/outbox.rhtml diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index 52f38e9f6..b54fdf9d1 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -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] diff --git a/app/models/user.rb b/app/models/user.rb index 2ad45e8ac..eccc006c2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 index 000000000..0061c6a98 --- /dev/null +++ b/app/views/message/_sent_message_summary.rhtml @@ -0,0 +1,7 @@ +<% this_colour = cycle('lightgrey', 'white') # can only call once for some dumb reason %> + +"> + <%= link_to sent_message_summary.recipient.display_name , :controller => 'user', :action => sent_message_summary.recipient.display_name %> + <%= link_to sent_message_summary.title , :controller => 'message', :action => 'read', :message_id => sent_message_summary.id %> + <%= sent_message_summary.sent_on %> + diff --git a/app/views/message/inbox.rhtml b/app/views/message/inbox.rhtml index aa20327e3..2a64f2774 100644 --- a/app/views/message/inbox.rhtml +++ b/app/views/message/inbox.rhtml @@ -1,4 +1,4 @@ -

My inbox

+

My inbox/<%= link_to "outbox", url_for(:controller => "user", :action => "outbox", :id => @user.display_name) %>

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

@@ -17,4 +17,4 @@ <% else %>
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 +<% end %> diff --git a/app/views/message/outbox.rhtml b/app/views/message/outbox.rhtml new file mode 100644 index 000000000..6fcbdfa21 --- /dev/null +++ b/app/views/message/outbox.rhtml @@ -0,0 +1,18 @@ +

My <%= link_to "inbox", url_for(:controller => "user", :action => "inbox", :id => @user.display_name) %>/outbox

+ +

You have <%= @user.sent_messages.size %> sent messages + +<% if @user.sent_messages.size > 0 %> +

+ + + + + + + <%= render :partial => "sent_message_summary", :collection => @user.sent_messages %> +
ToSubjectDate
+
+<% else %> +
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 %>?
+<% end %> diff --git a/app/views/message/read.rhtml b/app/views/message/read.rhtml index 7a0d2bbe1..4117057d0 100644 --- a/app/views/message/read.rhtml +++ b/app/views/message/read.rhtml @@ -1,3 +1,5 @@ +<% if @user == @message.recipient %> +

Reading your messages

@@ -28,3 +30,36 @@
<%= link_to 'Back to inbox', :controller => 'message', :action => 'inbox', :display_name => @user.display_name %>
+ +<% else %> + +

Reading your sent messages

+ + + + + + + + + + + + + + + + + + +
To<%= link_to @message.recipient.display_name, :controller => 'user', :action => 'view', :display_name => @message.recipient.display_name %>
Subject<%= @message.title %>
Date<%= @message.sent_on %>
<%= @message.body %>
+ +
+ + + + + +
<%= link_to 'Back to outbox', :controller => 'message', :action => 'outbox', :display_name => @user.display_name %>
+ +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 758bd6492..dce4042de 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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' -- 2.43.2