version 1.160.6.93, 2019/07/30 11:14:53
|
version 1.160.6.97, 2019/08/17 19:24:29
|
Line 363 sub handler {
|
Line 363 sub handler {
|
modify => \&modify_usermodification, |
modify => \&modify_usermodification, |
}, |
}, |
'scantron' => |
'scantron' => |
{ text => 'Bubblesheet format file', |
{ text => 'Bubblesheet format', |
help => 'Domain_Configuration_Scantron_Format', |
help => 'Domain_Configuration_Scantron_Format', |
header => [ {col1 => 'Item', |
header => [ {col1 => 'Bubblesheet format file', |
col2 => '', |
col2 => ''}, |
}], |
{col1 => 'Bubblesheet data upload formats', |
|
col2 => 'Settings'}], |
print => \&print_scantron, |
print => \&print_scantron, |
modify => \&modify_scantron, |
modify => \&modify_scantron, |
}, |
}, |
Line 534 END
|
Line 535 END
|
if (grep(/^contacts$/,@actions)) { |
if (grep(/^contacts$/,@actions)) { |
$js .= &contacts_javascript(); |
$js .= &contacts_javascript(); |
} |
} |
|
if (grep(/^scantron$/,@actions)) { |
|
$js .= &scantron_javascript(); |
|
} |
&Apache::lonconfigsettings::display_settings($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,$js); |
&Apache::lonconfigsettings::display_settings($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,$js); |
} else { |
} else { |
# check if domconfig user exists for the domain. |
# check if domconfig user exists for the domain. |
Line 722 sub print_config_box {
|
Line 726 sub print_config_box {
|
$output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal); |
} elsif ($action eq 'coursecategories') { |
} elsif ($action eq 'coursecategories') { |
$output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal); |
$output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal); |
|
} elsif ($action eq 'scantron') { |
|
$output .= $item->{'print'}->($r,'top',$dom,$confname,$settings,\$rowtotal); |
} elsif ($action eq 'login') { |
} elsif ($action eq 'login') { |
if ($numheaders == 4) { |
if ($numheaders == 4) { |
$colspan = ' colspan="2"'; |
$colspan = ' colspan="2"'; |
Line 777 sub print_config_box {
|
Line 783 sub print_config_box {
|
($action eq 'defaults') || ($action eq 'directorysrch') || |
($action eq 'defaults') || ($action eq 'directorysrch') || |
($action eq 'helpsettings')) { |
($action eq 'helpsettings')) { |
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
|
} elsif ($action eq 'scantron') { |
|
$output .= $item->{'print'}->($r,'bottom',$dom,$confname,$settings,\$rowtotal); |
} elsif ($action eq 'login') { |
} elsif ($action eq 'login') { |
if ($numheaders == 4) { |
if ($numheaders == 4) { |
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).' |
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).' |
Line 935 sub print_config_box {
|
Line 943 sub print_config_box {
|
} elsif (($action eq 'autoenroll') || ($action eq 'autocreate') || |
} elsif (($action eq 'autoenroll') || ($action eq 'autocreate') || |
($action eq 'serverstatuses') || ($action eq 'loadbalancing')) { |
($action eq 'serverstatuses') || ($action eq 'loadbalancing')) { |
$output .= $item->{'print'}->($dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->($dom,$settings,\$rowtotal); |
} elsif ($action eq 'scantron') { |
|
$output .= &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal); |
|
} |
} |
} |
} |
$output .= ' |
$output .= ' |
Line 4440 sub print_loadbalancing {
|
Line 4446 sub print_loadbalancing {
|
my $numinrow = 1; |
my $numinrow = 1; |
my $datatable; |
my $datatable; |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my (%currbalancer,%currtargets,%currrules,%existing); |
my (%currbalancer,%currtargets,%currrules,%existing,%currcookies); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
%existing = %{$settings}; |
%existing = %{$settings}; |
} |
} |
if ((keys(%servers) > 1) || (keys(%existing) > 0)) { |
if ((keys(%servers) > 1) || (keys(%existing) > 0)) { |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
\%currtargets,\%currrules); |
\%currtargets,\%currrules,\%currcookies); |
} else { |
} else { |
return; |
return; |
} |
} |
Line 4523 sub print_loadbalancing {
|
Line 4529 sub print_loadbalancing {
|
my %hostherechecked = ( |
my %hostherechecked = ( |
no => ' checked="checked"', |
no => ' checked="checked"', |
); |
); |
|
my %balcookiechecked = ( |
|
no => ' checked="checked"', |
|
); |
foreach my $sparetype (@sparestypes) { |
foreach my $sparetype (@sparestypes) { |
my $targettable; |
my $targettable; |
for (my $i=0; $i<$numspares; $i++) { |
for (my $i=0; $i<$numspares; $i++) { |
Line 4578 sub print_loadbalancing {
|
Line 4587 sub print_loadbalancing {
|
} |
} |
} |
} |
} |
} |
|
if ($currcookies{$lonhost}) { |
|
%balcookiechecked = ( |
|
yes => ' checked="checked"', |
|
); |
|
} |
$datatable .= &mt('Hosting on balancer itself').'<br />'. |
$datatable .= &mt('Hosting on balancer itself').'<br />'. |
'<label><input type="radio" name="loadbalancing_target_'.$balnum.'_hosthere" value="no"'. |
'<label><input type="radio" name="loadbalancing_target_'.$balnum.'_hosthere" value="no"'. |
$hostherechecked{'no'}.' />'.&mt('No').'</label><br />'; |
$hostherechecked{'no'}.' />'.&mt('No').'</label><br />'; |
Line 4586 sub print_loadbalancing {
|
Line 4600 sub print_loadbalancing {
|
'value="'.$sparetype.'"'.$hostherechecked{$sparetype}.' /><i>'.$typetitles{$sparetype}. |
'value="'.$sparetype.'"'.$hostherechecked{$sparetype}.' /><i>'.$typetitles{$sparetype}. |
'</i></label><br />'; |
'</i></label><br />'; |
} |
} |
$datatable .= '</div></td></tr>'. |
$datatable .= &mt('Use balancer cookie').'<br />'. |
|
'<label><input type="radio" name="loadbalancing_cookie_'.$balnum.'" value="1"'. |
|
$balcookiechecked{'yes'}.' />'.&mt('Yes').'</label><br />'. |
|
'<label><input type="radio" name="loadbalancing_cookie_'.$balnum.'" value="0"'. |
|
$balcookiechecked{'no'}.' />'.&mt('No').'</label><br />'. |
|
'</div></td></tr>'. |
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost}, |
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost}, |
$othertitle,$usertypes,$types,\%servers, |
$othertitle,$usertypes,$types,\%servers, |
\%currbalancer,$lonhost, |
\%currbalancer,$lonhost, |
Line 4600 sub print_loadbalancing {
|
Line 4619 sub print_loadbalancing {
|
} |
} |
|
|
sub get_loadbalancers_config { |
sub get_loadbalancers_config { |
my ($servers,$existing,$currbalancer,$currtargets,$currrules) = @_; |
my ($servers,$existing,$currbalancer,$currtargets,$currrules,$currcookies) = @_; |
return unless ((ref($servers) eq 'HASH') && |
return unless ((ref($servers) eq 'HASH') && |
(ref($existing) eq 'HASH') && (ref($currbalancer) eq 'HASH') && |
(ref($existing) eq 'HASH') && (ref($currbalancer) eq 'HASH') && |
(ref($currtargets) eq 'HASH') && (ref($currrules) eq 'HASH')); |
(ref($currtargets) eq 'HASH') && (ref($currrules) eq 'HASH') && |
|
(ref($currcookies) eq 'HASH')); |
if (keys(%{$existing}) > 0) { |
if (keys(%{$existing}) > 0) { |
my $oldlonhost; |
my $oldlonhost; |
foreach my $key (sort(keys(%{$existing}))) { |
foreach my $key (sort(keys(%{$existing}))) { |
Line 4622 sub get_loadbalancers_config {
|
Line 4642 sub get_loadbalancers_config {
|
$currbalancer->{$key} = 1; |
$currbalancer->{$key} = 1; |
$currtargets->{$key} = $existing->{$key}{'targets'}; |
$currtargets->{$key} = $existing->{$key}{'targets'}; |
$currrules->{$key} = $existing->{$key}{'rules'}; |
$currrules->{$key} = $existing->{$key}{'rules'}; |
|
if ($existing->{$key}{'cookie'}) { |
|
$currcookies->{$key} = 1; |
|
} |
} |
} |
} |
} |
} else { |
} else { |
Line 5542 sub noninst_users {
|
Line 5565 sub noninst_users {
|
} |
} |
$output .= '</td>'."\n"; |
$output .= '</td>'."\n"; |
} |
} |
} |
|
$output .= "</tr></table></td></tr>\n"; |
$output .= "</tr></table></td></tr>\n"; |
return $output; |
return $output; |
} |
} |
Line 6004 sub defaults_titles {
|
Line 6026 sub defaults_titles {
|
return (\%titles); |
return (\%titles); |
} |
} |
|
|
|
sub print_scantron { |
|
my ($r,$position,$dom,$confname,$settings,$rowtotal) = @_; |
|
if ($position eq 'top') { |
|
return &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal); |
|
} else { |
|
return &print_scantronconfig($dom,$settings,\$rowtotal); |
|
} |
|
} |
|
|
|
sub scantron_javascript { |
|
return <<"ENDSCRIPT"; |
|
|
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
|
function toggleScantron(form) { |
|
var csvfieldset = new Array(); |
|
if (document.getElementById('scantroncsv_cols')) { |
|
csvfieldset.push(document.getElementById('scantroncsv_cols')); |
|
} |
|
if (document.getElementById('scantroncsv_options')) { |
|
csvfieldset.push(document.getElementById('scantroncsv_options')); |
|
} |
|
if (csvfieldset.length) { |
|
if (document.getElementById('scantronconfcsv')) { |
|
var scantroncsv = document.getElementById('scantronconfcsv'); |
|
if (scantroncsv.checked) { |
|
for (var i=0; i<csvfieldset.length; i++) { |
|
csvfieldset[i].style.display = 'block'; |
|
} |
|
} else { |
|
for (var i=0; i<csvfieldset.length; i++) { |
|
csvfieldset[i].style.display = 'none'; |
|
} |
|
var csvselects = document.getElementsByClassName('scantronconfig_csv'); |
|
if (csvselects.length) { |
|
for (var j=0; j<csvselects.length; j++) { |
|
csvselects[j].selectedIndex = 0; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
// ]]> |
|
</script> |
|
|
|
ENDSCRIPT |
|
|
|
} |
|
|
sub print_scantronformat { |
sub print_scantronformat { |
my ($r,$dom,$confname,$settings,$rowtotal) = @_; |
my ($r,$dom,$confname,$settings,$rowtotal) = @_; |
my $itemcount = 1; |
my $itemcount = 1; |
Line 6030 sub print_scantronformat {
|
Line 6104 sub print_scantronformat {
|
if ($configuserok eq 'ok') { |
if ($configuserok eq 'ok') { |
if ($author_ok eq 'ok') { |
if ($author_ok eq 'ok') { |
my %legacyfile = ( |
my %legacyfile = ( |
default => $Apache::lonnet::perlvar{'lonTabDir'}.'/default_scantronformat.tab', |
default => $Apache::lonnet::perlvar{'lonTabDir'}.'/default_scantronformat.tab', |
custom => $Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab', |
custom => $Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab', |
); |
); |
my %md5chk; |
my %md5chk; |
foreach my $type (keys(%legacyfile)) { |
foreach my $type (keys(%legacyfile)) { |
Line 6040 sub print_scantronformat {
|
Line 6114 sub print_scantronformat {
|
} |
} |
if ($md5chk{'default'} ne $md5chk{'custom'}) { |
if ($md5chk{'default'} ne $md5chk{'custom'}) { |
foreach my $type (keys(%legacyfile)) { |
foreach my $type (keys(%legacyfile)) { |
($scantronurls{$type},my $error) = |
($scantronurls{$type},my $error) = |
&legacy_scantronformat($r,$dom,$confname, |
&legacy_scantronformat($r,$dom,$confname, |
$type,$legacyfile{$type}, |
$type,$legacyfile{$type}, |
$scantronurls{$type}, |
$scantronurls{$type}, |
Line 6051 sub print_scantronformat {
|
Line 6125 sub print_scantronformat {
|
} |
} |
if (keys(%error) == 0) { |
if (keys(%error) == 0) { |
$is_custom = 1; |
$is_custom = 1; |
$confhash{'scantron'}{'scantronformat'} = |
$confhash{'scantron'}{'scantronformat'} = |
$scantronurls{'custom'}; |
$scantronurls{'custom'}; |
my $putresult = |
my $putresult = |
&Apache::lonnet::put_dom('configuration', |
&Apache::lonnet::put_dom('configuration', |
\%confhash,$dom); |
\%confhash,$dom); |
if ($putresult ne 'ok') { |
if ($putresult ne 'ok') { |
$error{'custom'} = |
$error{'custom'} = |
'<span class="LC_error">'. |
'<span class="LC_error">'. |
&mt('An error occurred updating the domain configuration: [_1]',$putresult).'</span>'; |
&mt('An error occurred updating the domain configuration: [_1]',$putresult).'</span>'; |
} |
} |
Line 6177 sub legacy_scantronformat {
|
Line 6251 sub legacy_scantronformat {
|
return ($url,$error); |
return ($url,$error); |
} |
} |
|
|
|
sub print_scantronconfig { |
|
my ($dom,$settings,$rowtotal) = @_; |
|
my $itemcount = 2; |
|
my $is_checked = ' checked="checked"'; |
|
my %optionson = ( |
|
hdr => ' checked="checked"', |
|
pad => ' checked="checked"', |
|
rem => ' checked="checked"', |
|
); |
|
my %optionsoff = ( |
|
hdr => '', |
|
pad => '', |
|
rem => '', |
|
); |
|
my $currcsvsty = 'none'; |
|
my ($datatable,%csvfields,%checked,%onclick,%csvoptions); |
|
my @fields = &scantroncsv_fields(); |
|
my %titles = &scantronconfig_titles(); |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{config}) eq 'HASH') { |
|
if ($settings->{config}->{dat}) { |
|
$checked{'dat'} = $is_checked; |
|
} |
|
if (ref($settings->{config}->{csv}) eq 'HASH') { |
|
if (ref($settings->{config}->{csv}->{fields}) eq 'HASH') { |
|
%csvfields = %{$settings->{config}->{csv}->{fields}}; |
|
if (keys(%csvfields) > 0) { |
|
$checked{'csv'} = $is_checked; |
|
$currcsvsty = 'block'; |
|
} |
|
} |
|
if (ref($settings->{config}->{csv}->{options}) eq 'HASH') { |
|
%csvoptions = %{$settings->{config}->{csv}->{options}}; |
|
foreach my $option (keys(%optionson)) { |
|
unless ($csvoptions{$option}) { |
|
$optionsoff{$option} = $optionson{$option}; |
|
$optionson{$option} = ''; |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
$checked{'dat'} = $is_checked; |
|
} |
|
} else { |
|
$checked{'dat'} = $is_checked; |
|
} |
|
$onclick{'csv'} = ' onclick="toggleScantron(this.form);"'; |
|
my $css_class = $itemcount%2? ' class="LC_odd_row"':''; |
|
$datatable = '<tr '.$css_class.'><td>'.&mt('Supported formats').'</td>'. |
|
'<td class="LC_left_item" valign="top"><span class="LC_nobreak">'; |
|
foreach my $item ('dat','csv') { |
|
my $id; |
|
if ($item eq 'csv') { |
|
$id = 'id="scantronconfcsv" '; |
|
} |
|
$datatable .= '<label><input type="checkbox" name="scantronconfig" '.$id.'value="'.$item.'"'.$checked{$item}.$onclick{$item}.' />'. |
|
$titles{$item}.'</label>'.(' 'x3); |
|
if ($item eq 'csv') { |
|
$datatable .= '<fieldset style="display:'.$currcsvsty.'" id="scantroncsv_cols">'. |
|
'<legend>'.&mt('CSV Column Mapping').'</legend>'. |
|
'<table><tr><th>'.&mt('Field').'</th><th>'.&mt('Location').'</th></tr>'."\n"; |
|
foreach my $col (@fields) { |
|
my $selnone; |
|
if ($csvfields{$col} eq '') { |
|
$selnone = ' selected="selected"'; |
|
} |
|
$datatable .= '<tr><td>'.$titles{$col}.'</td>'. |
|
'<td><select name="scantronconfig_csv_'.$col.'" class="scantronconfig_csv">'. |
|
'<option value=""'.$selnone.'></option>'; |
|
for (my $i=0; $i<20; $i++) { |
|
my $shown = $i+1; |
|
my $sel; |
|
unless ($selnone) { |
|
if (exists($csvfields{$col})) { |
|
if ($csvfields{$col} == $i) { |
|
$sel = ' selected="selected"'; |
|
} |
|
} |
|
} |
|
$datatable .= '<option value="'.$i.'"'.$sel.'>'.$shown.'</option>'; |
|
} |
|
$datatable .= '</select></td></tr>'; |
|
} |
|
$datatable .= '</table></fieldset>'. |
|
'<fieldset style="display:'.$currcsvsty.'" id="scantroncsv_options">'. |
|
'<legend>'.&mt('CSV Options').'</legend>'; |
|
foreach my $option ('hdr','pad','rem') { |
|
$datatable .= '<span class="LC_nobreak">'.$titles{$option}.':'. |
|
'<label><input type="radio" name="scantroncsv_'.$option.'" value="1"'.$optionson{$option}.' />'. |
|
&mt('Yes').'</label>'.(' 'x2)."\n". |
|
'<label><input type="radio" name="scantroncsv_'.$option.'" value="0"'.$optionsoff{$option}.' />'.&mt('No').'</label></span><br />'; |
|
} |
|
$datatable .= '</fieldset>'; |
|
$itemcount ++; |
|
} |
|
} |
|
$datatable .= '</td></tr>'; |
|
$$rowtotal ++; |
|
return $datatable; |
|
} |
|
|
|
sub scantronconfig_titles { |
|
return &Apache::lonlocal::texthash( |
|
dat => 'Standard format (.dat)', |
|
csv => 'Comma separated values (.csv)', |
|
hdr => 'Remove first line in file (contains column titles)', |
|
pad => 'Prepend 0s to PaperID', |
|
rem => 'Remove leading spaces (except Question Response columns)', |
|
CODE => 'CODE', |
|
ID => 'Student ID', |
|
PaperID => 'Paper ID', |
|
FirstName => 'First Name', |
|
LastName => 'Last Name', |
|
FirstQuestion => 'First Question Response', |
|
Section => 'Section', |
|
); |
|
} |
|
|
|
sub scantroncsv_fields { |
|
return ('PaperID','LastName','FirstName','ID','Section','CODE','FirstQuestion'); |
|
} |
|
|
sub print_coursecategories { |
sub print_coursecategories { |
my ($position,$dom,$hdritem,$settings,$rowtotal) = @_; |
my ($position,$dom,$hdritem,$settings,$rowtotal) = @_; |
my $datatable; |
my $datatable; |
Line 9654 sub modify_contacts {
|
Line 9851 sub modify_contacts {
|
my (%others,%to,%bcc,%includestr,%includeloc); |
my (%others,%to,%bcc,%includestr,%includeloc); |
my @contacts = ('supportemail','adminemail'); |
my @contacts = ('supportemail','adminemail'); |
my @mailings = ('errormail','packagesmail','helpdeskmail','otherdomsmail', |
my @mailings = ('errormail','packagesmail','helpdeskmail','otherdomsmail', |
'lonstatusmail','requestsmail','updatesmail','idconflictsmail',hostipmail'); |
'lonstatusmail','requestsmail','updatesmail','idconflictsmail','hostipmail'); |
my @toggles = ('reporterrors','reportupdates'); |
my @toggles = ('reporterrors','reportupdates'); |
my ($fields,$fieldtitles,$fieldoptions,$possoptions) = &helpform_fields(); |
my ($fields,$fieldtitles,$fieldoptions,$possoptions) = &helpform_fields(); |
foreach my $type (@mailings) { |
foreach my $type (@mailings) { |
Line 11476 sub modify_scantron {
|
Line 11673 sub modify_scantron {
|
my $custom = 'custom.tab'; |
my $custom = 'custom.tab'; |
my $default = 'default.tab'; |
my $default = 'default.tab'; |
my $servadm = $r->dir_config('lonAdmEMail'); |
my $servadm = $r->dir_config('lonAdmEMail'); |
my ($configuserok,$author_ok,$switchserver) = |
my ($configuserok,$author_ok,$switchserver) = |
&config_check($dom,$confname,$servadm); |
&config_check($dom,$confname,$servadm); |
if ($env{'form.scantronformat.filename'} ne '') { |
if ($env{'form.scantronformat.filename'} ne '') { |
my $error; |
my $error; |
Line 11511 sub modify_scantron {
|
Line 11708 sub modify_scantron {
|
if ($env{'form.scantronformat_del'}) { |
if ($env{'form.scantronformat_del'}) { |
$confhash{'scantron'}{'scantronformat'} = ''; |
$confhash{'scantron'}{'scantronformat'} = ''; |
$changes{'scantronformat'} = 1; |
$changes{'scantronformat'} = 1; |
|
} else { |
|
$confhash{'scantron'}{'scantronformat'} = $domconfig{'scantron'}{'scantronformat'}; |
|
} |
|
} |
|
} |
|
my @options = ('hdr','pad','rem'); |
|
my @fields = &scantroncsv_fields(); |
|
my %titles = &scantronconfig_titles(); |
|
my @formats = &Apache::loncommon::get_env_multiple('form.scantronconfig'); |
|
my ($newdat,$currdat,%newcol,%currcol); |
|
if (grep(/^dat$/,@formats)) { |
|
$confhash{'scantron'}{config}{dat} = 1; |
|
$newdat = 1; |
|
} else { |
|
$newdat = 0; |
|
} |
|
if (grep(/^csv$/,@formats)) { |
|
my %bynum; |
|
foreach my $field (@fields) { |
|
if ($env{'form.scantronconfig_csv_'.$field} =~ /^(\d+)$/) { |
|
my $posscol = $1; |
|
if (($posscol < 20) && (!$bynum{$posscol})) { |
|
$confhash{'scantron'}{config}{csv}{fields}{$field} = $posscol; |
|
$bynum{$posscol} = $field; |
|
$newcol{$field} = $posscol; |
|
} |
|
} |
|
} |
|
if (keys(%newcol)) { |
|
foreach my $option (@options) { |
|
if ($env{'form.scantroncsv_'.$option}) { |
|
$confhash{'scantron'}{config}{csv}{options}{$option} = 1; |
|
} |
|
} |
|
} |
|
} |
|
$currdat = 1; |
|
if (ref($domconfig{'scantron'}) eq 'HASH') { |
|
if (ref($domconfig{'scantron'}{'config'}) eq 'HASH') { |
|
unless (exists($domconfig{'scantron'}{'config'}{'dat'})) { |
|
$currdat = 0; |
|
} |
|
if (ref($domconfig{'scantron'}{'config'}{'csv'}) eq 'HASH') { |
|
if (ref($domconfig{'scantron'}{'config'}{'csv'}{'fields'}) eq 'HASH') { |
|
%currcol = %{$domconfig{'scantron'}{'config'}{'csv'}{'fields'}}; |
|
} |
|
} |
|
} |
|
} |
|
if ($currdat != $newdat) { |
|
$changes{'config'} = 1; |
|
} else { |
|
foreach my $field (@fields) { |
|
if ($currcol{$field} ne '') { |
|
if ($currcol{$field} ne $newcol{$field}) { |
|
$changes{'config'} = 1; |
|
last; |
|
} |
|
} elsif ($newcol{$field} ne '') { |
|
$changes{'config'} = 1; |
|
last; |
} |
} |
} |
} |
} |
} |
Line 11521 sub modify_scantron {
|
Line 11779 sub modify_scantron {
|
if (keys(%changes) > 0) { |
if (keys(%changes) > 0) { |
if (ref($confhash{'scantron'}) eq 'HASH') { |
if (ref($confhash{'scantron'}) eq 'HASH') { |
$resulttext = &mt('Changes made:').'<ul>'; |
$resulttext = &mt('Changes made:').'<ul>'; |
if ($confhash{'scantron'}{'scantronformat'} eq '') { |
if ($changes{'scantronformat'}) { |
$resulttext .= '<li>'.&mt('[_1] bubblesheet format file removed; [_2] file will be used for courses in this domain.',$custom,$default).'</li>'; |
if ($confhash{'scantron'}{'scantronformat'} eq '') { |
} else { |
$resulttext .= '<li>'.&mt('[_1] bubblesheet format file removed; [_2] file will be used for courses in this domain.',$custom,$default).'</li>'; |
$resulttext .= '<li>'.&mt('Custom bubblesheet format file ([_1]) uploaded for use with courses in this domain.',$custom).'</li>'; |
} else { |
|
$resulttext .= '<li>'.&mt('Custom bubblesheet format file ([_1]) uploaded for use with courses in this domain.',$custom).'</li>'; |
|
} |
|
} |
|
if ($changes{'config'}) { |
|
if (ref($confhash{'scantron'}{'config'}) eq 'HASH') { |
|
if ($confhash{'scantron'}{'config'}{'dat'}) { |
|
$resulttext .= '<li>'.&mt('Bubblesheet data upload formats includes .dat format').'</li>'; |
|
} |
|
if (ref($confhash{'scantron'}{'config'}{'csv'}) eq 'HASH') { |
|
if (ref($confhash{'scantron'}{'config'}{'csv'}{'fields'}) eq 'HASH') { |
|
if (keys(%{$confhash{'scantron'}{'config'}{'csv'}{'fields'}})) { |
|
$resulttext .= '<li>'.&mt('Bubblesheet data upload formats includes .csv format, with following fields/column numbers supported:').'<ul>'; |
|
foreach my $field (@fields) { |
|
if ($confhash{'scantron'}{'config'}{'csv'}{'fields'}{$field} ne '') { |
|
my $showcol = $confhash{'scantron'}{'config'}{'csv'}{'fields'}{$field} + 1; |
|
$resulttext .= '<li>'.$titles{$field}.': '.$showcol.'</li>'; |
|
} |
|
} |
|
$resulttext .= '</ul></li>'; |
|
if (ref($confhash{'scantron'}{'config'}{'csv'}{'options'}) eq 'HASH') { |
|
if (keys(%{$confhash{'scantron'}{'config'}{'csv'}{'options'}})) { |
|
$resulttext .= '<li>'.&mt('Bubblesheet data upload formats includes .csv format, with following options:').'<ul>'; |
|
foreach my $option (@options) { |
|
if ($confhash{'scantron'}{'config'}{'csv'}{'options'}{$option} ne '') { |
|
$resulttext .= '<li>'.$titles{$option}.'</li>'; |
|
} |
|
} |
|
$resulttext .= '</ul></li>'; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
$resulttext .= '<li>'.&mt('No bubblesheet data upload formats set -- will default to assuming .dat format').'</li>'; |
|
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
} else { |
} else { |
$resulttext = &mt('Changes made to bubblesheet format file.'); |
$resulttext = &mt('Changes made to bubblesheet format file.'); |
} |
} |
$resulttext .= '</ul>'; |
|
&Apache::loncommon::devalidate_domconfig_cache($dom); |
&Apache::loncommon::devalidate_domconfig_cache($dom); |
if (ref($lastactref) eq 'HASH') { |
if (ref($lastactref) eq 'HASH') { |
$lastactref->{'domainconfig'} = 1; |
$lastactref->{'domainconfig'} = 1; |
} |
} |
} else { |
} else { |
$resulttext = &mt('No changes made to bubblesheet format file'); |
$resulttext = &mt('No changes made to bubblesheet format settings'); |
} |
} |
} else { |
} else { |
$resulttext = '<span class="LC_error">'. |
$resulttext = '<span class="LC_error">'. |
&mt('An error occurred: [_1]',$putresult).'</span>'; |
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
} else { |
} else { |
$resulttext = &mt('No changes made to bubblesheet format file'); |
$resulttext = &mt('No changes made to bubblesheet format settings'); |
} |
} |
if ($errors) { |
if ($errors) { |
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
Line 13238 sub modify_loadbalancing {
|
Line 13531 sub modify_loadbalancing {
|
my @sparestypes = ('primary','default'); |
my @sparestypes = ('primary','default'); |
my %typetitles = &sparestype_titles(); |
my %typetitles = &sparestype_titles(); |
my $resulttext; |
my $resulttext; |
my (%currbalancer,%currtargets,%currrules,%existing); |
my (%currbalancer,%currtargets,%currrules,%existing,%currcookies); |
if (ref($domconfig{'loadbalancing'}) eq 'HASH') { |
if (ref($domconfig{'loadbalancing'}) eq 'HASH') { |
%existing = %{$domconfig{'loadbalancing'}}; |
%existing = %{$domconfig{'loadbalancing'}}; |
} |
} |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
&get_loadbalancers_config(\%servers,\%existing,\%currbalancer, |
\%currtargets,\%currrules); |
\%currtargets,\%currrules,\%currcookies); |
my ($saveloadbalancing,%defaultshash,%changes); |
my ($saveloadbalancing,%defaultshash,%changes); |
my ($alltypes,$othertypes,$titles) = |
my ($alltypes,$othertypes,$titles) = |
&loadbalancing_titles($dom,$intdom,$usertypes,$types); |
&loadbalancing_titles($dom,$intdom,$usertypes,$types); |
Line 13295 sub modify_loadbalancing {
|
Line 13588 sub modify_loadbalancing {
|
} |
} |
$defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype} = \@offloadto; |
$defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype} = \@offloadto; |
} |
} |
|
if ($env{'form.loadbalancing_cookie_'.$i}) { |
|
$defaultshash{'loadbalancing'}{$balancer}{'cookie'} = 1; |
|
if (exists($currbalancer{$balancer})) { |
|
unless ($currcookies{$balancer}) { |
|
$changes{'curr'}{$balancer}{'cookie'} = 1; |
|
} |
|
} |
|
} elsif (exists($currbalancer{$balancer})) { |
|
if ($currcookies{$balancer}) { |
|
$changes{'curr'}{$balancer}{'cookie'} = 1; |
|
} |
|
} |
if (ref($currtargets{$balancer}) eq 'HASH') { |
if (ref($currtargets{$balancer}) eq 'HASH') { |
foreach my $sparetype (@sparestypes) { |
foreach my $sparetype (@sparestypes) { |
if (ref($currtargets{$balancer}{$sparetype}) eq 'ARRAY') { |
if (ref($currtargets{$balancer}{$sparetype}) eq 'ARRAY') { |
Line 13448 sub modify_loadbalancing {
|
Line 13753 sub modify_loadbalancing {
|
} |
} |
} |
} |
} |
} |
|
if ($changes{'curr'}{$balancer}{'cookie'}) { |
|
$resulttext .= '<li>'.&mt('Load Balancer: [_1] -- cookie use enabled', |
|
$balancer).'</li>'; |
|
} |
if (keys(%toupdate)) { |
if (keys(%toupdate)) { |
my %thismachine; |
my %thismachine; |
my $updatedhere; |
my $updatedhere; |
Line 13677 sub lonbalance_targets_js {
|
Line 13986 sub lonbalance_targets_js {
|
} |
} |
push(@alltypes,'default','_LC_adv','_LC_author','_LC_internetdom','_LC_external'); |
push(@alltypes,'default','_LC_adv','_LC_author','_LC_internetdom','_LC_external'); |
$allinsttypes = join("','",@alltypes); |
$allinsttypes = join("','",@alltypes); |
my (%currbalancer,%currtargets,%currrules,%existing); |
my (%currbalancer,%currtargets,%currrules,%existing,%currcookies); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
%existing = %{$settings}; |
%existing = %{$settings}; |
} |
} |
&get_loadbalancers_config($servers,\%existing,\%currbalancer, |
&get_loadbalancers_config($servers,\%existing,\%currbalancer, |
\%currtargets,\%currrules); |
\%currtargets,\%currrules,\%currcookies); |
my $balancers = join("','",sort(keys(%currbalancer))); |
my $balancers = join("','",sort(keys(%currbalancer))); |
return <<"END"; |
return <<"END"; |
|
|