From: Nick Black Date: Sat, 5 May 2007 16:05:00 +0000 (+0000) Subject: messaging stuff and home location selection X-Git-Tag: live~8478 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/20e02f42dc5d946f4650c806531b09f793abf503 messaging stuff and home location selection --- diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index c266582f5..a2245ce86 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -6,12 +6,14 @@ class MessageController < ApplicationController 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 @@ -19,7 +21,26 @@ class MessageController < ApplicationController 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 diff --git a/app/models/user.rb b/app/models/user.rb index 1261e5a18..f72fd5bfa 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -78,12 +78,12 @@ class User < ActiveRecord::Base end def get_new_messages - messages = Message.find(:all, :conditions => "message_read = 0") + 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 => "message_read = 0") + messages = Message.find(:all, :conditions => "to_user_id = #{self.id}") return messages end diff --git a/app/views/user/view.rhtml b/app/views/user/view.rhtml index 8a50ae321..6f6bdb450 100644 --- a/app/views/user/view.rhtml +++ b/app/views/user/view.rhtml @@ -1,33 +1,71 @@

<%= @this_user.display_name %>

<% if @user and @this_user.id == @user.id %> <% if @user.has_messages? %> -

You have <%=@user.get_new_messages.length %> new messages and <%=@user.get_all_messages.length - @user.get_new_messages.length %> old messages.

+

You have <%=@user.get_new_messages.length %> new messages and <%=@user.get_all_messages.length - @user.get_new_messages.length %> old messages:

+ +
- +<% if message.message_read = 0 %> + + +<%else%> + +<%end%> +<%end%> + + +<%else%> +<% @user.get_new_messages.each do |message| %> + + + +<% if message.message_read = 0 %> + +<%else%> + +<%end%> + +<%end%> + <%end%>
from title received on +mark as read +reply -<% @user.get_new_messages.each do |message| %> +<% if params[:unread] %> +<% @user.get_all_messages.each do |message| %>
<%= link_to User.find(message.from_user_id).display_name , :controller => 'user', :action => User.find(message.from_user_id).display_name %> <%= link_to message.title , :controller => 'message', :action => 'read', :message_id => message.id %> <%= message.sent_on %><%= link_to 'reply', :controller => 'message', :action => 'new', :display_name => User.find(message.from_user_id).display_name %><%= link_to 'mark as read', :controller => 'message', :action => 'mark', :message_id => message.id %> <%= link_to 'reply', :controller => 'message', :action => 'new', :user_id => message.from_user_id %> message read
<%= link_to User.find(message.from_user_id).display_name , :controller => 'user', :action => User.find(message.from_user_id).display_name %><%= link_to message.title , :controller => 'message', :action => 'read', :message_id => message.id %><%= message.sent_on %><%= link_to 'mark as read', :controller => 'message', :action => 'mark', :message_id => message.id %> message read
+
+ +<%else%> +

You have no messages.

<%end%> + +
+
+<%= link_to 'show unread messages', :controller => 'user', :action => 'view', :display_name => @user.display_name, :unread => true %> +

- <%= link_to 'go to your account page', :controller => 'user', :action => 'account', :display_name => @user.display_name %>

+<%= link_to 'go to your account page', :controller => 'user', :action => 'account', :display_name => @user.display_name %>

+ <% else %> - <%= link_to 'send message', :controller => 'message', :action => 'new', :display_name => @this_user.display_name %>

- <%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %>

+<%= link_to 'send message', :controller => 'message', :action => 'new', :display_name => @this_user.display_name %>

+<%= link_to 'Add as friend', :controller => 'user', :action => 'make_friend', :display_name => @this_user.display_name %>

<% end %> <%= link_to 'diary', :controller => 'user', :action => 'diary', :display_name => @this_user.display_name %>

+ +

<%= params[:display_name] %> says:

<%= simple_format(@this_user.description) %> diff --git a/config/routes.rb b/config/routes.rb index dd08c7815..ecfdabb30 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -83,7 +83,9 @@ ActionController::Routing::Routes.draw do |map| # messages - map.connect '/message/new/:display_name', :controller => 'message', :action => 'new' + 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' # fall through map.connect ':controller/:id/:action' diff --git a/db/migrate.sql b/db/migrate.sql index 302ad2a6c..35c5a7659 100644 --- a/db/migrate.sql +++ b/db/migrate.sql @@ -45,7 +45,8 @@ alter table users add column home_zoom int(2) default 3); 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); diff --git a/public/stylesheets/site.css b/public/stylesheets/site.css index 061887c86..54a33db41 100644 --- a/public/stylesheets/site.css +++ b/public/stylesheets/site.css @@ -124,6 +124,11 @@ body { text-decoration: none; } +#messages { + border: 1px solid #ccc; +} + + #left_menu a:visited { color: #000000; text-decoration: none;