The invitation now has an optional personal message
This commit is contained in:
parent
41a0718fc2
commit
a8bf082e35
6 changed files with 25 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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 });
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue