In the site starter, allow users to pick the default language for a site based on installed language packs. Adds RFE #10727.

This commit is contained in:
Colin Kuskie 2009-11-16 09:47:54 -08:00
parent f3a4bd1b68
commit 7c240127e8
4 changed files with 91 additions and 10 deletions

View file

@ -17,6 +17,7 @@
- fixed #11217: LDAP authentication fails if user DN changes
- fixed #11228: Gallery image upload to other users folder permission denied
- added USPS International driver.
- added #10727: language choice during site adding
7.8.4
- Fixed a compatibility problem between WRE and new Spectre code.

View file

@ -112,21 +112,44 @@ The current WebGUI::Session object.
sub handler {
my $session = shift;
my $form = $session->form;
unless ($session->setting->get("specialState") eq "init") {
return undef;
}
$session->http->setCacheControl("none");
my $i18n = WebGUI::International->new($session, "WebGUI");
my ($output,$legend) = "";
if ($session->form->process("step") eq "2") {
if ($form->process("step") eq "2") {
$legend = $i18n->get('company information');
my $timezone = $form->timeZone("timeZone");
my $language = $form->selectBox("language");
##update Admin and Visitor users
my $u = WebGUI::User->new($session,"3");
$u->username($session->form->process("username","text","Admin"));
$u->profileField("email",$session->form->email("email"));
$u->profileField("timeZone",$session->form->timeZone("timeZone"));
$u->identifier(Digest::MD5::md5_base64($session->form->process("identifier","password","123qwe")));
$u->username($form->process("username","text","Admin"));
$u->profileField("email",$form->email("email"));
$u->profileField("timeZone",$timezone);
$u->profileField("language",$language);
$u->identifier(Digest::MD5::md5_base64($form->process("identifier","password","123qwe")));
$u = WebGUI::User->new($session,"1");
$u->profileField("timeZone",$session->form->timeZone("timeZone"));
$u->profileField("timeZone",$timezone);
$u->profileField("language",$language);
##update ProfileField defaults so new users the get the defaults, too
my $properties;
my $zoneField = WebGUI::ProfileField->new($session, 'timeZone');
$properties = $zoneField->get();
$properties->{dataDefault} = $timezone;
$zoneField->set($properties);
my $languageField = WebGUI::ProfileField->new($session, 'language');
$properties = $languageField->get();
$properties->{dataDefault} = $language;
$languageField->set($properties);
my $f = WebGUI::HTMLForm->new($session,action=>$session->url->gateway());
$f->hidden( name=>"step", value=>"3");
$f->text(
@ -516,9 +539,17 @@ a:visited { color: '.$form->get("visitedLinkColor").'; }
-hoverHelp=>$i18n->get('56 description'),
);
$f->timeZone(
-name=>"timeZone",
-value=>$u->profileField("timeZone"),
-label=>$i18n->get('timezone','DateTime'),
-name => "timeZone",
-value => $u->profileField("timeZone"),
-label => $i18n->get('timezone','DateTime'),
-hoverHelp => $i18n->get('timezone help'),
);
$f->selectBox(
-name => "language",
-value => $u->profileField("language"),
-label => $i18n->get('304'),
-hoverHelp => $i18n->get('language help'),
-options => $i18n->getLanguages(),
);
$f->submit;
$output .= $f->print;

View file

@ -174,6 +174,11 @@ our $I18N = {
lastUpdated => 1031514049
},
'language help' => {
message => q|Select the default language for users on the site.|,
lastUpdated => 1258340387,
},
'559' => {
message => q|On Create User (User)|,
lastUpdated => 1185738895
@ -4650,6 +4655,11 @@ Users may override this setting in their profile.
lastUpdated => 0,
},
'timezone help' => {
message => 'Set up the default time zone for the site.',
lastUpdated => 0,
},
};
1;

View file

@ -17,7 +17,7 @@ use WebGUI::Content::Setup;
# load your modules here
use Test::More tests => 2; # increment this value for each test you create
use Test::More tests => 8; # increment this value for each test you create
my $session = WebGUI::Test->session;
@ -28,3 +28,42 @@ isnt(WebGUI::Content::Setup::handler($session), undef, "Setup should return some
$session->setting->remove("specialState");
is(WebGUI::Content::Setup::handler($session), undef, "Setup shouldn't return anything when no special state is present");
$session->request->setup_body({
step => 2,
timeZone => 'America/New_York',
language => 'Spanish',
});
$session->setting->set("specialState", "init");
WebGUI::Content::Setup::handler($session);
my $admin = WebGUI::User->new($session, '3');
is($admin->get('language'), 'Spanish', 'Admin language set to Spanish');
is($admin->get('timeZone'), 'America/New_York', 'Admin timezone set to America/New_York');
my $visitor = WebGUI::User->new($session, '1');
is($visitor->get('language'), 'Spanish', 'Visitor language set to Spanish');
is($visitor->get('timeZone'), 'America/New_York', 'Visitor timezone set to America/New_York');
my $zoneField = WebGUI::ProfileField->new($session, 'timeZone');
is $zoneField->get('dataDefault'), 'America/New_York', 'timezone profile field default set to America/New_York';
my $languageField = WebGUI::ProfileField->new($session, 'language');
is $languageField->get('dataDefault'), 'Spanish', 'timezone profile field default set to Spanish';
$admin->update( { language => 'English' } );
$visitor->update({ language => 'English' } );
$admin->update( { timeZone => 'America/Chicago' } );
$visitor->update({ timeZone => 'America/Chicago' } );
my $properties;
$properties = $zoneField->get();
$properties->{dataDefault} = 'America/Chicago';
$zoneField->set($properties);
$properties = $languageField->get();
$properties->{dataDefault} = 'English';
$zoneField->set($properties);
$session->setting->remove("specialState");