--- loncom/interface/domainprefs.pm 2008/07/23 02:50:57 1.67 +++ loncom/interface/domainprefs.pm 2008/09/19 03:27:04 1.68 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.67 2008/07/23 02:50:57 raeburn Exp $ +# $Id: domainprefs.pm,v 1.68 2008/09/19 03:27:04 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,6 +42,7 @@ use LONCAPA::Enrollment; use File::Copy; use Locale::Language; use DateTime::TimeZone; +use DateTime::Locale; sub handler { my $r=shift; @@ -1823,7 +1824,8 @@ sub print_usermodification { sub print_defaults { my ($dom,$rowtotal) = @_; - my @items = ('auth_def','auth_arg_def','lang_def','timezone_def'); + my @items = ('auth_def','auth_arg_def','lang_def','timezone_def', + 'datelocale_def'); my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); my $titles = &defaults_titles(); my $rownum = 0; @@ -1858,6 +1860,9 @@ sub print_defaults { } elsif ($item eq 'timezone_def') { my $includeempty = 1; $datatable .= &Apache::loncommon::select_timezone($item,$domdefaults{$item},undef,$includeempty); + } elsif ($item eq 'datelocale_def') { + my $includeempty = 1; + $datatable .= &Apache::loncommon::select_datelocale($item,$domdefaults{$item},undef,$includeempty); } else { $datatable .= ''; @@ -1875,6 +1880,7 @@ sub defaults_titles { 'auth_arg_def' => 'Default authentication argument', 'lang_def' => 'Default language', 'timezone_def' => 'Default timezone', + 'datelocale_def' => 'Default locale for dates', ); return (\%titles); } @@ -4251,7 +4257,7 @@ sub modify_defaults { my ($dom,$r) = @_; my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors); my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); - my @items = ('auth_def','auth_arg_def','lang_def','timezone_def'); + my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def'); my @authtypes = ('internal','krb4','krb5','localauth'); foreach my $item (@items) { $newvalues{$item} = $env{'form.'.$item}; @@ -4278,6 +4284,13 @@ sub modify_defaults { push(@errors,$item); } } + } elsif ($item eq 'datelocale_def') { + if ($newvalues{$item} ne '') { + my @datelocale_ids = DateTime::Locale->ids(); + if (!grep(/^\Q$newvalues{$item}\E$/,@datelocale_ids)) { + push(@errors,$item); + } + } } if (grep(/^\Q$item\E$/,@errors)) { $newvalues{$item} = $domdefaults{$item}; @@ -4290,6 +4303,7 @@ sub modify_defaults { auth_arg_def => $newvalues{'auth_arg_def'}, lang_def => $newvalues{'lang_def'}, timezone_def => $newvalues{'timezone_def'}, + datelocale_def => $newvalues{'datelocale_def'}, } ); my $title = &defaults_titles(); @@ -4322,7 +4336,7 @@ sub modify_defaults { my $cachetime = 24*60*60; &Apache::lonnet::do_cache_new('domdefaults',$dom, $defaults_hash{'defaults'},$cachetime); - if ($changes{'auth_def'} || $changes{'auth_arg_def'} || $changes{'lang_def'}) { + if ($changes{'auth_def'} || $changes{'auth_arg_def'} || $changes{'lang_def'} || $changes{'datelocale_def'}) { my $sysmail = $r->dir_config('lonSysEMail'); &Apache::lonmsg::sendemail($sysmail,"LON-CAPA Domain Settings Change - $dom",$mailmsgtext); }