version 1.685, 2008/09/11 21:05:19
|
version 1.688, 2008/09/29 22:53:20
|
Line 69 use Apache::lontexconvert();
|
Line 69 use Apache::lontexconvert();
|
use Apache::lonclonecourse(); |
use Apache::lonclonecourse(); |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
use DateTime::TimeZone; |
use DateTime::TimeZone; |
|
use DateTime::Locale::Catalog; |
|
|
# ---------------------------------------------- Designs |
# ---------------------------------------------- Designs |
use vars qw(%defaultdesign); |
use vars qw(%defaultdesign); |
Line 658 sub select_timezone {
|
Line 659 sub select_timezone {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub select_datelocale { |
|
my ($name,$selected,$onchange,$includeempty)=@_; |
|
my $output='<select name="'.$name.'" '.$onchange.'>'."\n"; |
|
if ($includeempty) { |
|
$output .= '<option value=""'; |
|
if ($selected eq '') { |
|
$output .= ' selected="selected" '; |
|
} |
|
$output .= '> </option>'; |
|
} |
|
my (@possibles,%locale_names); |
|
my @locales = DateTime::Locale::Catalog::Locales; |
|
foreach my $locale (@locales) { |
|
if (ref($locale) eq 'HASH') { |
|
my $id = $locale->{'id'}; |
|
if ($id ne '') { |
|
my $en_terr = $locale->{'en_territory'}; |
|
my $native_terr = $locale->{'native_territory'}; |
|
my @languages = &preferred_languages(); |
|
if (grep(/^en$/,@languages) || !@languages) { |
|
if ($en_terr ne '') { |
|
$locale_names{$id} = '('.$en_terr.')'; |
|
} elsif ($native_terr ne '') { |
|
$locale_names{$id} = $native_terr; |
|
} |
|
} else { |
|
if ($native_terr ne '') { |
|
$locale_names{$id} = $native_terr.' '; |
|
} elsif ($en_terr ne '') { |
|
$locale_names{$id} = '('.$en_terr.')'; |
|
} |
|
} |
|
push (@possibles,$id); |
|
} |
|
} |
|
} |
|
foreach my $item (sort(@possibles)) { |
|
$output.= '<option value="'.$item.'"'; |
|
if ($item eq $selected) { |
|
$output.=' selected="selected"'; |
|
} |
|
$output.=">$item"; |
|
if ($locale_names{$item} ne '') { |
|
$output.=" $locale_names{$item}</option>\n"; |
|
} |
|
$output.="</option>\n"; |
|
} |
|
$output.="</select>"; |
|
return $output; |
|
} |
|
|
=pod |
=pod |
|
|
=item * &linked_select_forms(...) |
=item * &linked_select_forms(...) |
Line 2988 sub preferred_languages {
|
Line 3040 sub preferred_languages {
|
} |
} |
} |
} |
} |
} |
|
return &get_genlanguages(@languages); |
|
} |
|
|
|
sub get_genlanguages { |
|
my (@languages) = @_; |
# turn "en-ca" into "en-ca,en" |
# turn "en-ca" into "en-ca,en" |
my @genlanguages; |
my @genlanguages; |
foreach my $lang (@languages) { |
foreach my $lang (@languages) { |
unless ($lang=~/\w/) { next; } |
unless ($lang=~/\w/) { next; } |
push(@genlanguages,$lang); |
push(@genlanguages,$lang); |
if ($lang=~/(\-|\_)/) { |
if ($lang=~/(\-|\_)/) { |
push(@genlanguages,(split(/(\-|\_)/,$lang))[0]); |
push(@genlanguages,(split(/(\-|\_)/,$lang))[0]); |
} |
} |
} |
} |
#uniqueify the languages list |
#uniqueify the languages list |
my %count; |
my %count; |
Line 3349 sub pprmlink {
|
Line 3406 sub pprmlink {
|
|
|
|
|
sub timehash { |
sub timehash { |
my @ltime=localtime(shift); |
my ($thistime) = @_; |
return ( 'seconds' => $ltime[0], |
my $timezone = &Apache::lonlocal::gettimezone(); |
'minutes' => $ltime[1], |
my $dt = DateTime->from_epoch(epoch => $thistime) |
'hours' => $ltime[2], |
->set_time_zone($timezone); |
'day' => $ltime[3], |
my $wday = $dt->day_of_week(); |
'month' => $ltime[4]+1, |
if ($wday == 7) { $wday = 0; } |
'year' => $ltime[5]+1900, |
return ( 'second' => $dt->second(), |
'weekday' => $ltime[6], |
'minute' => $dt->minute(), |
'dayyear' => $ltime[7]+1, |
'hour' => $dt->hour(), |
'dlsav' => $ltime[8] ); |
'day' => $dt->day_of_month(), |
|
'month' => $dt->month(), |
|
'year' => $dt->year(), |
|
'weekday' => $wday, |
|
'dayyear' => $dt->day_of_year(), |
|
'dlsav' => $dt->is_dst() ); |
} |
} |
|
|
sub utc_string { |
sub utc_string { |
Line 3368 sub utc_string {
|
Line 3430 sub utc_string {
|
|
|
sub maketime { |
sub maketime { |
my %th=@_; |
my %th=@_; |
|
my ($epoch_time,$timezone,$dt); |
|
$timezone = &Apache::lonlocal::gettimezone(); |
|
eval { |
|
$dt = DateTime->new( year => $th{'year'}, |
|
month => $th{'month'}, |
|
day => $th{'day'}, |
|
hour => $th{'hour'}, |
|
minute => $th{'minute'}, |
|
second => $th{'second'}, |
|
time_zone => $timezone, |
|
); |
|
}; |
|
if (!$@) { |
|
$epoch_time = $dt->epoch; |
|
if ($epoch_time) { |
|
return $epoch_time; |
|
} |
|
} |
return POSIX::mktime( |
return POSIX::mktime( |
($th{'seconds'},$th{'minutes'},$th{'hours'}, |
($th{'seconds'},$th{'minutes'},$th{'hours'}, |
$th{'day'},$th{'month'}-1,$th{'year'}-1900,0,0,-1)); |
$th{'day'},$th{'month'}-1,$th{'year'}-1900,0,0,-1)); |
Line 8324 sub build_recipient_list {
|
Line 8404 sub build_recipient_list {
|
} elsif ($origmail ne '') { |
} elsif ($origmail ne '') { |
push(@recipients,$origmail); |
push(@recipients,$origmail); |
} |
} |
if ($defmail ne '') { |
if (defined($defmail)) { |
push(@recipients,$defmail); |
if ($defmail ne '') { |
|
push(@recipients,$defmail); |
|
} |
} |
} |
if ($otheremails) { |
if ($otheremails) { |
my @others; |
my @others; |