version 1.57, 2002/08/08 17:03:20
|
version 1.61, 2002/08/16 20:47:26
|
Line 25
|
Line 25
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# (Handler to resolve ambiguous file locations |
################################################################### |
# |
################################################################### |
# (TeX Content Handler |
|
# |
=pod |
# YEAR=2000 |
|
# 05/29/00,05/30,10/11 Gerd Kortemeyer) |
=head1 NAME |
# |
|
# 10/11,10/12,10/16 Gerd Kortemeyer) |
lonparmset - Handler to set parameters for assessments and course |
# |
|
# 11/20,11/21,11/22,11/23,11/24,11/25,11/27,11/28, |
=head1 SYNOPSIS |
# 12/08,12/12, |
|
# YEAR=2001 |
lonparmset provides an interface to setting course parameters. |
# 16/01/01,02/08,03/20,03/23,03/24,03/26,05/09, |
|
# 07/05,07/06,08/08,08/09,09/01,09/21 Gerd Kortemeyer |
=head1 DESCRIPTION |
# 12/17 Scott Harrison |
|
# 12/19 Guy Albertelli |
This module sets coursewide and assessment parameters. |
# 12/26,12/27 Gerd Kortemeyer |
|
# |
=head1 INTERNAL SUBROUTINES |
# YEAR=2002 |
|
# 7/19 Jeremy Bowers |
=over 4 |
### |
|
|
=cut |
|
|
|
################################################################### |
|
################################################################### |
|
|
package Apache::lonparmset; |
package Apache::lonparmset; |
|
|
Line 74 my $uhome;
|
Line 78 my $uhome;
|
my $csec; |
my $csec; |
my $coursename; |
my $coursename; |
|
|
# -------------------------------------------- Figure out a cascading parameter |
################################################## |
|
################################################## |
|
|
|
=pod |
|
|
|
=item parmval |
|
|
|
Figure out a cascading parameter. |
|
|
|
Inputs: $what $id $def |
|
|
|
Returns: I am not entirely sure. |
|
|
|
=cut |
|
|
|
################################################## |
|
################################################## |
sub parmval { |
sub parmval { |
my ($what,$id,$def)=@_; |
my ($what,$id,$def)=@_; |
my $result=''; |
my $result=''; |
Line 157 sub parmval {
|
Line 176 sub parmval {
|
return ($result,@outpar); |
return ($result,@outpar); |
} |
} |
|
|
# ------------------------------------------------------------ Output for value |
################################################## |
|
################################################## |
|
|
|
=pod |
|
|
|
=item valout |
|
|
|
Format a value for output. |
|
|
|
Inputs: $value, $type |
|
|
|
Returns: $value, formatted for output. If $type indicates it is a date, |
|
localtime($value) is returned. |
|
|
|
=cut |
|
|
|
################################################## |
|
################################################## |
sub valout { |
sub valout { |
my ($value,$type)=@_; |
my ($value,$type)=@_; |
return ($value?(($type=~/^date/)?localtime($value):$value):' '); |
my $result = ''; |
|
# Values of zero are valid. |
|
if (! $value && $value ne '0') { |
|
$result = ' '; |
|
} else { |
|
if ($type=~/^date/) { |
|
$result = localtime($value); |
|
} else { |
|
$result = $value; |
|
} |
|
} |
|
return $result; |
} |
} |
|
|
# -------------------------------------------------------- Produces link anchor |
################################################## |
|
################################################## |
|
|
|
=pod |
|
|
|
=item plink |
|
|
|
Produces a link anchor. |
|
|
|
Inputs: $type,$dis,$value,$marker,$return,$call |
|
|
|
Returns: scalar with html code for a link which will envoke the |
|
javascript function 'pjump'. |
|
|
|
=cut |
|
|
|
################################################## |
|
################################################## |
sub plink { |
sub plink { |
my ($type,$dis,$value,$marker,$return,$call)=@_; |
my ($type,$dis,$value,$marker,$return,$call)=@_; |
my $winvalue=$value; |
my $winvalue=$value; |
Line 341 sub print_row {
|
Line 403 sub print_row {
|
} # end of $parmlev if/else |
} # end of $parmlev if/else |
|
|
if ($parmlev eq 'full' || $parmlev eq 'brief') { |
if ($parmlev eq 'full' || $parmlev eq 'brief') { |
$r->print('<td bgcolor=#CCCCFF align="center">'. |
$r->print('<td bgcolor=#CCCCFF align="center">'. |
&valout($outpar[$result],$$type{$which}).'</td>'); |
&valout($outpar[$result],$$type{$which}).'</td>'); |
|
} |
} |
|
my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}. |
my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}. |
'.'.$$name{$which},$symbp{$rid}); |
'.'.$$name{$which},$symbp{$rid}); |
$r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'. |
$r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'. |
Line 353 sub print_row {
|
Line 414 sub print_row {
|
$r->print('</tr>'); |
$r->print('</tr>'); |
$r->print("\n"); |
$r->print("\n"); |
} |
} |
|
|
sub print_td { |
sub print_td { |
my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$type,$display)=@_; |
my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$type,$display)=@_; |
$r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg). |
$r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg). |
Line 375 sub get_env_multiple {
|
Line 437 sub get_env_multiple {
|
return(@values); |
return(@values); |
} |
} |
|
|
|
################################################## |
|
################################################## |
|
|
|
=pod |
|
|
|
=item assessparms |
|
|
|
Show assessment data and parameters. This is a large routine that should |
|
be simplified and shortened... someday. |
|
|
|
Inputs: $r |
|
|
|
Returns: nothing |
|
|
|
=cut |
|
|
|
################################################## |
|
################################################## |
sub assessparms { |
sub assessparms { |
|
|
my $r=shift; |
my $r=shift; |
Line 491 sub assessparms {
|
Line 571 sub assessparms {
|
|
|
# ------------------------------------------------------------------- Tie hashs |
# ------------------------------------------------------------------- Tie hashs |
if (!(tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', |
if (!(tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', |
&GDBM_READER,0640))) { |
&GDBM_READER(),0640))) { |
$r->print("Unable to access course data. (File $ENV{'request.course.fn'}.db not tieable)"); |
$r->print("Unable to access course data. (File $ENV{'request.course.fn'}.db not tieable)"); |
return ; |
return ; |
} |
} |
if (!(tie(%parmhash,'GDBM_File', |
if (!(tie(%parmhash,'GDBM_File', |
$ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640))) { |
$ENV{'request.course.fn'}.'_parms.db',&GDBM_READER(),0640))) { |
$r->print("Unable to access parameter data. (File $ENV{'request.course.fn'}_parms.db not tieable)"); |
$r->print("Unable to access parameter data. (File $ENV{'request.course.fn'}_parms.db not tieable)"); |
return ; |
return ; |
} |
} |
Line 790 sub assessparms {
|
Line 870 sub assessparms {
|
$r->print('</table>'); |
$r->print('</table>'); |
|
|
my @temp_psprt; |
my @temp_psprt; |
map { |
foreach my $t (@psprt) { |
my $t = $_; |
push(@temp_psprt, grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts)); |
push(@temp_psprt, |
} |
grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts)); |
|
} @psprt; |
|
|
|
@psprt = @temp_psprt; |
@psprt = @temp_psprt; |
|
|
Line 954 ENDTABLEHEADFOUR
|
Line 1032 ENDTABLEHEADFOUR
|
|
|
#-------------------------------------------- for each map, gather information |
#-------------------------------------------- for each map, gather information |
my $mapid; |
my $mapid; |
foreach $mapid (keys %maplist) { |
foreach $mapid (sort {$maplist{$a} cmp $maplist{$b}} keys %maplist) { |
my $maptitle = $allmaps{$mapid}; |
my $maptitle = $maplist{$mapid}; |
|
|
#----------------------- loop through ids and get all parameter types for map |
#----------------------- loop through ids and get all parameter types for map |
#----------------------------------------- and associated information |
#----------------------------------------- and associated information |
Line 1121 ENDMAPONE
|
Line 1199 ENDMAPONE
|
untie(%parmhash); |
untie(%parmhash); |
} # end sub assessparms |
} # end sub assessparms |
|
|
# ------------------------------------------- Set course environment parameters |
|
|
################################################## |
|
################################################## |
|
|
|
=pod |
|
|
|
=item crsenv |
|
|
|
Show course data and parameters. This is a large routine that should |
|
be simplified and shortened... someday. |
|
|
|
Inputs: $r |
|
|
|
Returns: nothing |
|
|
|
=cut |
|
|
|
################################################## |
|
################################################## |
sub crsenv { |
sub crsenv { |
my $r=shift; |
my $r=shift; |
my $setoutput=''; |
my $setoutput=''; |
Line 1186 sub crsenv {
|
Line 1282 sub crsenv {
|
'pageseparators' => '<b>Visibly Separate Items on Pages</b><br>'. |
'pageseparators' => '<b>Visibly Separate Items on Pages</b><br>'. |
'("<tt>yes</tt>" for visible separation)', |
'("<tt>yes</tt>" for visible separation)', |
'pch.roles.denied'=> '<b>Disallow Resource Discussion for '. |
'pch.roles.denied'=> '<b>Disallow Resource Discussion for '. |
'Roles</b> ' . |
'Roles</b><br>"<tt>st</tt>": '. |
Apache::loncommon::help_open_topic("Course_Disable_Discussion") |
'student, "<tt>ta</tt>": '. |
, |
'TA, "<tt>in</tt>": '. |
|
'instructor;<br><tt>role,role,...</tt>) '. |
|
Apache::loncommon::help_open_topic("Course_Disable_Discussion"), |
'pch.users.denied' => |
'pch.users.denied' => |
'<b>Disallow Resource Discussion for Users</b><br>'. |
'<b>Disallow Resource Discussion for Users</b><br>'. |
'(<tt>user:domain,user:domain,...</tt>)', |
'(<tt>user:domain,user:domain,...</tt>)', |
Line 1281 $output
|
Line 1379 $output
|
ENDENV |
ENDENV |
} |
} |
|
|
# ================================================================ Main Handler |
################################################## |
|
################################################## |
|
|
|
=pod |
|
|
|
=item handler |
|
|
|
Main handler. Calls &assessparms and &crsenv subroutines. |
|
|
|
=cut |
|
|
|
################################################## |
|
################################################## |
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
|
|
Line 1318 sub handler {
|
Line 1427 sub handler {
|
1; |
1; |
__END__ |
__END__ |
|
|
|
=pod |
=head1 NAME |
|
|
|
Apache::lonparmset - Handler to set parameters for assessments |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked by /etc/httpd/conf/srm.conf: |
|
|
|
<Location /adm/parmset> |
|
PerlAccessHandler Apache::lonacc |
|
SetHandler perl-script |
|
PerlHandler Apache::lonparmset |
|
ErrorDocument 403 /adm/login |
|
ErrorDocument 406 /adm/roles |
|
ErrorDocument 500 /adm/errorhandler |
|
</Location> |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module sets assessment parameters. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 HANDLER SUBROUTINE |
|
|
|
This routine is called by Apache and mod_perl. |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
need to be in course |
|
|
|
=item * |
|
|
|
bring up assessment screen or course environment |
|
|
|
=back |
|
|
|
=head1 OTHER SUBROUTINES |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
parmval() : figure out a cascading parameter |
|
|
|
=item * |
|
|
|
valout() : format a value for output |
|
|
|
=item * |
|
|
|
plink() : produces link anchor |
|
|
|
=item * |
|
|
|
assessparms() : show assess data and parameters |
|
|
|
=item * |
|
|
|
crsenv() : for the course environment |
|
|
|
=back |
=back |
|
|