The invitation now has an optional personal message

This commit is contained in:
ilya 2010-10-18 14:35:41 -07:00
parent 41a0718fc2
commit a8bf082e35
6 changed files with 25 additions and 2 deletions

View file

@ -10,6 +10,8 @@ class InvitationsController < Devise::InvitationsController
def create
begin
params[:user][:aspect_id] = params[:user].delete(:aspects)
message = params[:user].delete(:invite_messages)
params[:user][:invite_message] = message unless message == ""
self.resource = current_user.invite_user(params[resource_name])
flash[:notice] = I18n.t 'invitations.create.sent'
rescue RuntimeError => e

View file

@ -38,6 +38,8 @@ class User
key :visible_post_ids, Array
key :visible_person_ids, Array
key :invite_messages, Hash
before_validation :strip_username, :on => :create
validates_presence_of :username
validates_uniqueness_of :username, :case_sensitive => false
@ -290,7 +292,7 @@ class User
:into => aspect_id
)
invited_user = User.invite!(:email => opts[:email], :request => request, :inviter => self)
invited_user = User.invite!(:email => opts[:email], :request => request, :inviter => self, :invite_message => opts[:invite_message])
self.invites = self.invites - 1
self.pending_requests << request
@ -313,6 +315,10 @@ class User
else
invitable.pending_requests << request
invitable.inviters << inviter
message = attributes.delete(:invite_message)
if message
invitable.invite_messages[inviter.id.to_s] = message
end
end
if invitable.new_record?

View file

@ -2,6 +2,13 @@
Hello #{@resource.email}!
%p
#{(@resource.inviters.count == 1)? ( @resource.inviters.first.real_name + " has") : (@resource.inviters.map{|inv| inv.real_name}.join(",") + " have")} invited you to #{root_url}, you can accept it through the link below.
- @resource.inviters.each do |inv|
- if @resource.invite_messages[inv.id.to_s]
= "#{inv.real_name}:"
= @resource.invite_messages[inv.id.to_s]
%p
%p= link_to 'Accept invitation', accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)
%p
If you don't want to accept the invitation, please ignore this email.

View file

@ -8,6 +8,8 @@
= invite.select(:aspects, @aspects_dropdown_array)
- else
= invite.select(:aspects, @aspects_dropdown_array, :selected => @aspect.id)
Message:
= invite.text_area :invite_messages
%p= invite.submit "Send an invitation"

View file

@ -28,7 +28,7 @@ $(document).ready(function(){
//buttons//////
$("#add_aspect_button").fancybox({ 'titleShow' : false , 'hideOnOverlayClick' : false });
$("#add_request_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });
$("#invite_user_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });
$(".invite_user_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });
$(".add_request_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });
$(".question_mark").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });

View file

@ -46,6 +46,12 @@ describe User do
invited_user.inviters.include?(inviter).should be_true
end
it 'adds an optional message' do
invited_user = inviter.invite_user(:email => "marcy@example.com", :invite_message => "How've you been?",:aspect_id => aspect.id)
invited_user.reload
invited_user.invite_messages[inviter.id.to_s].should == "How've you been?"
end
it 'adds a pending request to the invited user' do
invited_user = inviter.invite_user(:email => "marcy@example.com", :aspect_id => aspect.id)