From b24db340e8f142a826d2e908d7ff6a0641f9096b Mon Sep 17 00:00:00 2001 From: Jukka Raimovaara Date: Wed, 17 Nov 2010 21:00:50 +0200 Subject: [PATCH] added #11968: use the language override in the registration form --- docs/changelog/7.x.x.txt | 1 + docs/credits.txt | 2 +- lib/WebGUI/Auth.pm | 3 +++ lib/WebGUI/ProfileField.pm | 5 +++++ t/Auth.t | 7 ++++++- t/ProfileField.t | 21 ++++++++++++++++++++- 6 files changed, 36 insertions(+), 3 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 91d063779..3f8177abf 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,5 @@ 7.10.6 + - added #11968: use the language override in the registration form (Jukka Raimovaara / Mentalhouse Oy) 7.10.5 - fixed #11950: Username set to 0 when edit user diff --git a/docs/credits.txt b/docs/credits.txt index ced4e3bb0..cbf3925dc 100644 --- a/docs/credits.txt +++ b/docs/credits.txt @@ -56,7 +56,7 @@ Contributing Developers..............C.J. Adams-Collier / Stephen Opal / Plain Black Tavis Parker / Plain Black Daniel Quinlan - Jukka Raimovaara / Axxion Oy + Jukka Raimovaara / Mentalhouse Oy Alan Ritari / DonorWare Hal Roberts / Harvard Luke Robinson / Orchard Solutions diff --git a/lib/WebGUI/Auth.pm b/lib/WebGUI/Auth.pm index 6243d8b39..17d2dda38 100644 --- a/lib/WebGUI/Auth.pm +++ b/lib/WebGUI/Auth.pm @@ -310,6 +310,9 @@ sub createAccountSave { my $userId = $u->userId; $u->username($username); $u->authMethod($self->authMethod); + if (!$profile->{'language'} && $self->session->scratch->getLanguageOverride) { + $profile->{'language'} = $self->session->scratch->getLanguageOverride; + } $u->karma($self->session->setting->get("karmaPerLogin"),"Login","Just for logging in.") if ($self->session->setting->get("useKarma")); $u->updateProfileFields($profile) if ($profile); $self->saveParams($userId,$self->authMethod,$properties); diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index 2e31d0cd3..83be2cf59 100644 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -335,6 +335,11 @@ sub formField { if(!defined $properties->{value}) { $properties->{value} = WebGUI::Operation::Shared::secureEval($session,$properties->{dataDefault}); } + if ($self->getId eq "language") { + if ($self->session->scratch->getLanguageOverride) { + $properties->{value} = $self->session->scratch->getLanguageOverride; + } + } } my $form = WebGUI::Form::DynamicField->new($session,%{$properties}); return $form if $returnObject; diff --git a/t/Auth.t b/t/Auth.t index cc328589a..35aa8db63 100644 --- a/t/Auth.t +++ b/t/Auth.t @@ -33,7 +33,7 @@ my ($request, $oldRequest, $output); #---------------------------------------------------------------------------- # Tests -plan tests => 3; # Increment this number for each test you create +plan tests => 4; # Increment this number for each test you create #---------------------------------------------------------------------------- # Test createAccountSave and returnUrl together @@ -47,7 +47,9 @@ $session->{_request} = $request; $auth = WebGUI::Auth->new( $session, $AUTH_METHOD ); my $username = $session->id->generate; +my $language = "German"; push @cleanupUsernames, $username; +$session->scratch->setLanguageOverride($language); $output = $auth->createAccountSave( $username, { }, "PASSWORD" ); WebGUI::Test->addToCleanup(sub { for my $username ( @cleanupUsernames ) { @@ -74,6 +76,8 @@ is( "returnUrl field is used to set redirect after createAccountSave", ); +is $session->user->profileField('language'), $language, 'languageOverride is taken in to account in createAccountSave'; + # Session Cleanup $session->{_request} = $oldRequest; @@ -99,6 +103,7 @@ is( ); is $output, undef, 'login returns undef when showMessageOnLogin is false'; + # Session Cleanup $session->{_request} = $oldRequest; diff --git a/t/ProfileField.t b/t/ProfileField.t index 478af2b7b..5a35f24ae 100644 --- a/t/ProfileField.t +++ b/t/ProfileField.t @@ -33,7 +33,7 @@ WebGUI::Test->addToCleanup($newUser); #---------------------------------------------------------------------------- # Tests -plan tests => 50; # Increment this number for each test you create +plan tests => 56; # Increment this number for each test you create #---------------------------------------------------------------------------- # Test the creation of ProfileField @@ -51,6 +51,11 @@ my $uilevelField; ok( $uilevelField = WebGUI::ProfileField->new( $session, 'uiLevel' ), 'field "uiLevel instantiated' ); isa_ok( $uilevelField, 'WebGUI::ProfileField' ); + +my $langField; +ok( $langField = WebGUI::ProfileField->new( $session, 'language' ), 'field "language instantiated' ); +isa_ok( $langField, 'WebGUI::ProfileField' ); + #---------------------------------------------------------------------------- # Test the formField method @@ -79,6 +84,20 @@ ok( $ff = $uilevelField->formField(undef, undef, $newUser), 'formField method re $ffvalue = $newUser->profileField('uiLevel'); like( $ff, qr/$ffvalue/, 'html returned contains value, uiLevel field, defaulted user' ); + + +$ff = undef; +$ffvalue = undef; +ok( $ff = $langField->formField, 'formField method returns something, language field, session user' ); +$ffvalue = $session->user->profileField('language'); +like( $ff, qr/value="$ffvalue"[^>]+selected/, 'html returned contains value, language field, session user' ); + +$ff = undef; +$ffvalue = "German"; +$session->scratch->setLanguageOverride($ffvalue); +ok( $ff = $langField->formField, 'formField method returns something, language field, session user, languageOverride' ); +like( $ff, qr/value="$ffvalue"[^>]+selected/, 'html returned contains value, language field, session user, languageOverride' ); + ########################################################### # # create