diff --git a/lib/WebGUI/Account/Friends.pm b/lib/WebGUI/Account/Friends.pm index 2849365bf..1b5a5902e 100644 --- a/lib/WebGUI/Account/Friends.pm +++ b/lib/WebGUI/Account/Friends.pm @@ -402,33 +402,37 @@ sub www_sendFriendsRequest { $var->{'user_full_name' } = $user->getWholeName; $var->{'user_member_since' } = $user->dateCreated; + $var->{'cancel_url' } = $user->getProfileUrl; + my $defaultComment = sprintf( $i18n->get('default friend comments'), $user->getFirstName, $session->user->getFirstName ); - $var->{'form_message_text'} = WebGUI::Form::textarea($session, { + + my $form = WebGUI::FormBuilder->new( $session, + name => "messageForm", + action => $self->getUrl( "module=friends;do=sendFriendsRequestSave;uid=$uid" ), + ); + $form->addField( "HTMLArea", + name => "message", + value => $defaultComment, + width => 600, + ); + + # Add an alternative to the rich editor + $var->{'form_message_text'} = WebGUI::Form::Textarea->new($session, { name =>"message", value =>$defaultComment, width =>600, height =>200 - }); + })->toHtml; - $var->{'form_message_rich'} = WebGUI::Form::HTMLArea($session, { - name => "message", - value => $defaultComment, - width => "600", - }); + $form->addField( "Submit", + name => "submit", + ); - $var->{'form_header' } = WebGUI::Form::formHeader($session,{ - action => $self->getUrl("module=friends;do=sendFriendsRequestSave;uid=$uid"), - extras => q{name="messageForm"} - }); - - $var->{'submit_button' } = WebGUI::Form::submit($session,{}); - $var->{'form_footer' } = WebGUI::Form::formFooter($session, {}); - - $var->{'cancel_url' } = $user->getProfileUrl; + $form->toTemplateVars( "form", $var ); return $self->processTemplate($var,$self->getSendRequestTemplateId); } diff --git a/share/upgrades/7.10.4-8.0.0/zzz_renameFormBuilderTemplateVars.pl b/share/upgrades/7.10.4-8.0.0/zzz_renameFormBuilderTemplateVars.pl index b121650d4..17a784b49 100644 --- a/share/upgrades/7.10.4-8.0.0/zzz_renameFormBuilderTemplateVars.pl +++ b/share/upgrades/7.10.4-8.0.0/zzz_renameFormBuilderTemplateVars.pl @@ -19,6 +19,10 @@ my %namespaces = ( submit => "form_field_submit", formFooter => "form_footer", }, + "Account/Friends/SendRequest" => { + form_message_rich => "form_field_message_field", + submit_button => "form_field_submit", + }, ); # Map of namespace => { match => replacement } diff --git a/t/Account/Friends.t b/t/Account/Friends.t index 33094350b..598a27d92 100644 --- a/t/Account/Friends.t +++ b/t/Account/Friends.t @@ -16,6 +16,7 @@ use strict; use Test::More; use WebGUI::Test; # Must use this before any other WebGUI modules use WebGUI::Session; +use WebGUI::Test::Mechanize; #---------------------------------------------------------------------------- # Init @@ -25,7 +26,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -plan tests => 7; # Increment this number for each test you create +plan tests => 11; # Increment this number for each test you create #---------------------------------------------------------------------------- # Test the creation of WebGUI::Account::Friends @@ -67,4 +68,37 @@ is( $account->getUrl( 'op=account' ), $session->url->page( 'op=account' ), 'getUrl doesnt add op=account if already exists' ); +#---------------------------------------------------------------------------- +# Test the send friend request form + +# Start a session +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok( '/' ); + +# Get our admin +my $admin = WebGUI::User->new( $mech->session, "3" ); + +# Add a user who can be a friend for admin +my $edgar_friendly = WebGUI::Test->user( username => 'edgarfriendly', ableToBeFriend => 1 ); +$edgar_friendly = WebGUI::User->new( $mech->session, $edgar_friendly->getId ); # fix the session + +# Add a user who is not very nice +my $simon_phoenix = WebGUI::Test->user( username => 'simonphoenix', ableToBeFriend => 0 ); +$simon_phoenix = WebGUI::User->new( $mech->session, $simon_phoenix->getId ); # fix the session + +$mech->session->user({ user => $admin }); + +$mech->get_ok( "/?op=account;module=friends;do=sendFriendsRequest;uid=" . $edgar_friendly->getId, "get send request form" ); +$mech->submit_form_ok( + { + form_name => "messageForm", + fields => { }, # keep the defaults + }, + "submit send request form", +); + +my $friend = WebGUI::Friends->new($mech->session); +ok( $friend->isInvited($edgar_friendly->getId), "invitation was sent" ); + + #vim:ft=perl