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:
parent
f3a4bd1b68
commit
7c240127e8
4 changed files with 91 additions and 10 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue