From 078301a780ebb9e624cf11d2f5d2d2b72ce03e78 Mon Sep 17 00:00:00 2001 From: Nick Black Date: Sat, 5 May 2007 12:29:44 +0000 Subject: [PATCH] messaging stuff --- app/controllers/message_controller.rb | 23 +++++++++++++++++++++++ app/controllers/user_controller.rb | 13 ++++--------- app/models/message.rb | 1 + app/models/user.rb | 18 ++++++++++++++++++ app/views/user/view.rhtml | 22 +++++++++++++++++++++- config/routes.rb | 4 ++++ db/migrate.sql | 10 +++++----- 7 files changed, 76 insertions(+), 15 deletions(-) diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index 629d3301f..c266582f5 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -1,2 +1,25 @@ class MessageController < ApplicationController + layout 'site' + # before_filter :authorize + before_filter :authorize_web + before_filter :require_user + + def new + if params[:message] + 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.from_user_id = @user.id + message.sent_on = Time.now + if message.save + flash[:notice] = 'Message sent' + else + @message.errors.add("Sending message failed") + end + + end + end end diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 354e8c66f..6895d0f9c 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -53,7 +53,7 @@ class UserController < ApplicationController end def lost_password - if params['user']['email'] + if params[:user][:email] user = User.find_by_email(params['user']['email']) if user user.token = User.make_token @@ -162,15 +162,10 @@ class UserController < ApplicationController def diary @this_user = User.find_by_display_name(params[:display_name]) end - - def contact_others(user_id, message_body) - @to = User.find_by_id(user_id) - @to.messages.new = body - if @to.save - flash[:notice] = Message sent + + def make_friend + if params[:display_name] end - - #Send a message to other users - maybe there's a rails messaging plugin end end diff --git a/app/models/message.rb b/app/models/message.rb index 590e3e357..2c176a26d 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -1,2 +1,3 @@ class Message < ActiveRecord::Base + belongs_to :user end diff --git a/app/models/user.rb b/app/models/user.rb index 1ecc3f710..ce12755df 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -4,6 +4,7 @@ class User < ActiveRecord::Base has_many :traces has_many :diary_entries + has_many :messages, :foreign_key => :to_user_id validates_confirmation_of :pass_crypt, :message => 'Password must match the confirmation password' validates_uniqueness_of :display_name, :allow_nil => true @@ -64,6 +65,23 @@ class User < ActiveRecord::Base return nearby 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") + return messages + end + + def get_all_messages + messages = Message.find(:all, :conditions => "message_read = 0") + return messages + end end diff --git a/app/views/user/view.rhtml b/app/views/user/view.rhtml index 4c97257d2..8a50ae321 100644 --- a/app/views/user/view.rhtml +++ b/app/views/user/view.rhtml @@ -1,8 +1,28 @@

<%= @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.

+ + + + + + + +<%end%> +
from +title +received on + + +<% @user.get_new_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 %>
+<%end%> +
+ <%= link_to 'go to your account page', :controller => 'user', :action => 'account', :display_name => @user.display_name %>

<% else %> - <%= link_to 'send message', :controller => 'user', :action => 'message', :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 %> diff --git a/config/routes.rb b/config/routes.rb index 407e102d6..bca61fd89 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -79,6 +79,10 @@ ActionController::Routing::Routes.draw do |map| map.connect '/geocoder/search/', :controller => 'geocoder', :action => 'search' map.connect '/geocoder/results/', :controller => 'geocoder', :action => 'results' map.connect '/postcode/:postcode/', :controller => 'geocoder', :action => 'search' + + # messages + + map.connect '/message/new/:display_name', :controller => 'message', :action => 'new' # fall through map.connect ':controller/:id/:action' diff --git a/db/migrate.sql b/db/migrate.sql index db2129f56..72c71232b 100644 --- a/db/migrate.sql +++ b/db/migrate.sql @@ -39,10 +39,10 @@ create table diary_entries(id bigint not null auto_increment, user_id bigint not alter table diary_entries add created_at datetime; alter table diary_entries add updated_at datetime; -alter table users add column (home_lat double default 1); -alter table users add column (home_lon double default 1); +alter table users add column (home_lat double default 0); +alter table users add column (home_lon double default 0); alter table users add column home_zoom int(2) default 3); -alter table users add column within_lon double default null; -alter table users add column within_lat double default null; +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, 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, title varchar(255), body text, sent_on datetime, message_read boolean default 0, primary key(id)); -- 2.43.2