version 1.58, 2008/06/30 03:47:12
|
version 1.62, 2008/07/09 21:34:27
|
Line 41 use LONCAPA;
|
Line 41 use LONCAPA;
|
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
use File::Copy; |
use File::Copy; |
use Locale::Language; |
use Locale::Language; |
|
use DateTime::TimeZone; |
|
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
Line 396 sub print_config_box {
|
Line 397 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[0]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[0]->{'col1'}).'</td> |
<td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[0]->{'col2'}).'</td> |
</tr>'; |
</tr>'; |
$rowtotal ++; |
$rowtotal ++; |
if ($action eq 'autoupdate') { |
if ($action eq 'autoupdate') { |
Line 419 sub print_config_box {
|
Line 420 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[1]->{'col1'}.'</td>'; |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[1]->{'col1'}).'</td>'; |
my $colspan = ($action eq 'coursecategories')?' colspan="2"':''; |
my $colspan = ($action eq 'coursecategories')?' colspan="2"':''; |
$output .= ' |
$output .= ' |
<td class="LC_right_item"'.$colspan.'>'.$item->{'header'}->[1]->{'col2'}.'</td> |
<td class="LC_right_item"'.$colspan.'>'.&mt($item->{'header'}->[1]->{'col2'}).'</td> |
</tr>'; |
</tr>'; |
$rowtotal ++; |
$rowtotal ++; |
if ($action eq 'autoupdate') { |
if ($action eq 'autoupdate') { |
Line 436 sub print_config_box {
|
Line 437 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[2]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_right_item">'.$item->{'header'}->[2]->{'col2'}.'</td> </tr>'. |
<td class="LC_right_item">'.&mt($item->{'header'}->[2]->{'col2'}).'</td> </tr>'. |
&print_usercreation('bottom',$dom,$settings,\$rowtotal); |
&print_usercreation('bottom',$dom,$settings,\$rowtotal); |
$rowtotal ++; |
$rowtotal ++; |
} elsif ($action eq 'usermodification') { |
} elsif ($action eq 'usermodification') { |
Line 453 sub print_config_box {
|
Line 454 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[2]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_right_item">'.$item->{'header'}->[2]->{'col2'}.'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[2]->{'col2'}).'</td> |
</tr>'. |
</tr>'. |
&print_rolecolors($phase,'author',$dom,$confname,$settings,\$rowtotal).' |
&print_rolecolors($phase,'author',$dom,$confname,$settings,\$rowtotal).' |
</table> |
</table> |
Line 464 sub print_config_box {
|
Line 465 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[3]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[3]->{'col1'}).'</td> |
<td class="LC_right_item">'.$item->{'header'}->[3]->{'col2'}.'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[3]->{'col2'}).'</td> |
</tr>'. |
</tr>'. |
&print_rolecolors($phase,'admin',$dom,$confname,$settings,\$rowtotal); |
&print_rolecolors($phase,'admin',$dom,$confname,$settings,\$rowtotal); |
$rowtotal += 2; |
$rowtotal += 2; |
Line 478 sub print_config_box {
|
Line 479 sub print_config_box {
|
<tr class="LC_info_row">'; |
<tr class="LC_info_row">'; |
if (($action eq 'login') || ($action eq 'directorysrch')) { |
if (($action eq 'login') || ($action eq 'directorysrch')) { |
$output .= ' |
$output .= ' |
<td class="LC_left_item" colspan="2">'.$item->{'header'}->[0]->{'col1'}.'</td>'; |
<td class="LC_left_item" colspan="2">'.&mt($item->{'header'}->[0]->{'col1'}).'</td>'; |
} else { |
} else { |
$output .= ' |
$output .= ' |
<td class="LC_left_item">'.$item->{'header'}->[0]->{'col1'}.'</td>'; |
<td class="LC_left_item">'.&mt($item->{'header'}->[0]->{'col1'}).'</td>'; |
} |
} |
$output .= ' |
$output .= ' |
<td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[0]->{'col2'}).'</td> |
</tr>'; |
</tr>'; |
$rowtotal ++; |
$rowtotal ++; |
if ($action eq 'login') { |
if ($action eq 'login') { |
Line 1847 sub defaults_titles {
|
Line 1848 sub defaults_titles {
|
sub print_scantronformat { |
sub print_scantronformat { |
my ($r,$dom,$confname,$settings,$rowtotal) = @_; |
my ($r,$dom,$confname,$settings,$rowtotal) = @_; |
my $itemcount = 1; |
my $itemcount = 1; |
my ($datatable,$css_class,$scantronurl,$is_custom,%error,%scantronurls); |
my ($datatable,$css_class,$scantronurl,$is_custom,%error,%scantronurls, |
|
%confhash); |
my $switchserver = &check_switchserver($dom,$confname); |
my $switchserver = &check_switchserver($dom,$confname); |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
default => 'Default scantron format file error', |
default => 'Default scantron format file error', |
Line 1874 sub print_scantronformat {
|
Line 1876 sub print_scantronformat {
|
); |
); |
my %md5chk; |
my %md5chk; |
foreach my $type (keys(%legacyfile)) { |
foreach my $type (keys(%legacyfile)) { |
$md5chk{$type} = split(/ /,`md5sum $legacyfile{$type}`); |
($md5chk{$type}) = split(/ /,`md5sum $legacyfile{$type}`); |
chop($md5chk{$type}); |
chomp($md5chk{$type}); |
} |
} |
if ($md5chk{'default'} ne $md5chk{'custom'}) { |
if ($md5chk{'default'} ne $md5chk{'custom'}) { |
foreach my $type (keys(%legacyfile)) { |
foreach my $type (keys(%legacyfile)) { |
($scantronurls{$type},$error{$type}) = |
($scantronurls{$type},my $error) = |
&legacy_scantronformat($r,$dom,$confname, |
&legacy_scantronformat($r,$dom,$confname, |
$type,$legacyfile{$type}, |
$type,$legacyfile{$type}, |
$scantronurls{$type}, |
$scantronurls{$type}, |
$scantronfiles{$type}); |
$scantronfiles{$type}); |
|
if ($error ne '') { |
|
$error{$type} = $error; |
|
} |
|
} |
|
if (keys(%error) == 0) { |
|
$is_custom = 1; |
|
$confhash{'scantron'}{'scantronformat'} = |
|
$scantronurls{'custom'}; |
|
my $putresult = |
|
&Apache::lonnet::put_dom('configuration', |
|
\%confhash,$dom); |
|
if ($putresult ne 'ok') { |
|
$error{'custom'} = |
|
'<span class="LC_error">'. |
|
&mt('An error occurred updating the domain configuration: [_1]',$putresult).'</span>'; |
|
} |
} |
} |
} else { |
} else { |
($scantronurls{'default'},$error{'default'}) = |
($scantronurls{'default'},my $error) = |
&legacy_scantronformat($r,$dom,$confname, |
&legacy_scantronformat($r,$dom,$confname, |
'default',$legacyfile{'default'}, |
'default',$legacyfile{'default'}, |
$scantronurls{'default'}, |
$scantronurls{'default'}, |
$scantronfiles{'default'}); |
$scantronfiles{'default'}); |
|
if ($error eq '') { |
|
$confhash{'scantron'}{'scantronformat'} = ''; |
|
my $putresult = |
|
&Apache::lonnet::put_dom('configuration', |
|
\%confhash,$dom); |
|
if ($putresult ne 'ok') { |
|
$error{'default'} = |
|
'<span class="LC_error">'. |
|
&mt('An error occurred updating the domain configuration: [_1]',$putresult).'</span>'; |
|
} |
|
} else { |
|
$error{'default'} = $error; |
|
} |
} |
} |
} |
} |
} |
} |
Line 1911 sub print_scantronformat {
|
Line 1942 sub print_scantronformat {
|
$scantronurl = $scantronurls{'default'}; |
$scantronurl = $scantronurls{'default'}; |
} |
} |
} else { |
} else { |
$scantronurl = $scantronurls{'default'}; |
if ($is_custom) { |
|
$scantronurl = $scantronurls{'custom'}; |
|
} else { |
|
$scantronurl = $scantronurls{'default'}; |
|
} |
} |
} |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'; |
$datatable .= '<tr'.$css_class.'>'; |
Line 1923 sub print_scantronformat {
|
Line 1958 sub print_scantronformat {
|
} else { |
} else { |
$datatable = &mt('File unavailable for display'); |
$datatable = &mt('File unavailable for display'); |
} |
} |
$datatable .= '</td><td valign="bottom">'.&mt('Upload:').'<br />'; |
$datatable .= '</td>'; |
|
if (keys(%error) == 0) { |
|
$datatable .= '<td valign="bottom">'; |
|
if (!$switchserver) { |
|
$datatable .= &mt('Upload:').'<br />'; |
|
} |
|
} else { |
|
my $errorstr; |
|
foreach my $key (sort(keys(%error))) { |
|
$errorstr .= $lt{$key}.': '.$error{$key}.'<br />'; |
|
} |
|
$datatable .= '<td>'.$errorstr; |
|
} |
} else { |
} else { |
if (keys(%error) > 0) { |
if (keys(%error) > 0) { |
my $errorstr; |
my $errorstr; |
foreach my $key (sort(keys(%error))) { |
foreach my $key (sort(keys(%error))) { |
$errorstr .= $lt{$key}.': '.$error{$key}.'<br />'; |
$errorstr .= $lt{$key}.': '.$error{$key}.'<br />'; |
} |
} |
$datatable .= '<td>'.$errorstr.'</td><td>'; |
$datatable .= '<td>'.$errorstr.'</td><td> '; |
} elsif ($scantronurl) { |
} elsif ($scantronurl) { |
$datatable .= '<td><a href="'.$scantronurl.'" target="_blank">' .&mt('Custom scantron format file').'</a>' |
$datatable .= '<td><a href="'.$scantronurl.'" target="_blank">' |
|
.&mt('Custom scantron format file').'</a>' |
.'<span class="LC_nobreak"><label>' |
.'<span class="LC_nobreak"><label>' |
.'<input type="checkbox" name="scantronformat_del"' |
.'<input type="checkbox" name="scantronformat_del"' |
.'" value="1" />'.&mt('Delete?').'</label></td>' |
.'" value="1" />'.&mt('Delete?').'</label></td>' |
Line 1990 sub print_coursecategories {
|
Line 2038 sub print_coursecategories {
|
); |
); |
my %level = &Apache::lonlocal::texthash ( |
my %level = &Apache::lonlocal::texthash ( |
dom => 'Set in "Modify Course" (Domain)', |
dom => 'Set in "Modify Course" (Domain)', |
crs => 'Set in "Parameters" (Course)', |
crs => 'Set in "Modify Parameters" (Course)', |
); |
); |
$datatable = '<tr class="LC_odd_row">'. |
$datatable = '<tr class="LC_odd_row">'. |
'<td>'.$title{'togglecats'}.'</td>'. |
'<td>'.$title{'togglecats'}.'</td>'. |
Line 2081 sub print_coursecategories {
|
Line 2129 sub print_coursecategories {
|
} |
} |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
} |
} |
$datatable .= '</select></span></td><td colspan="2">'.&mt('New:').' ' |
$datatable .= '</select></span></td><td colspan="2">'.&mt('Add category:').' ' |
.'<input type="text" size="20" name="addcategory_name" value="" /></td>' |
.'<input type="text" size="20" name="addcategory_name" value="" /></td>' |
.'</tr>'."\n"; |
.'</tr>'."\n"; |
$itemcount ++; |
$itemcount ++; |
Line 2282 sub build_category_rows {
|
Line 2330 sub build_category_rows {
|
pop(@{$path}); |
pop(@{$path}); |
} |
} |
} else { |
} else { |
$text .= &mt('New:').' </span><input type="textbox" size="20" name="addcategory_name_'; |
$text .= &mt('Add subcategory:').' </span><input type="textbox" size="20" name="addcategory_name_'; |
if ($j == $numchildren) { |
if ($j == $numchildren) { |
$text .= $name; |
$text .= $name; |
} else { |
} else { |
Line 4161 sub modify_defaults {
|
Line 4209 sub modify_defaults {
|
} |
} |
} elsif ($item eq 'timezone_def') { |
} elsif ($item eq 'timezone_def') { |
if ($newvalues{$item} ne '') { |
if ($newvalues{$item} ne '') { |
my @timezones = &DateTime::TimeZone->all_names; |
if (!DateTime::TimeZone->is_valid_name($newvalues{$item})) { |
if (!grep(/^\Q$newvalues{$item}\E/,@timezones)) { |
|
push(@errors,$item); |
push(@errors,$item); |
} |
} |
} |
} |