--- loncom/interface/lonparmset.pm 2005/03/03 06:11:11 1.184
+++ loncom/interface/lonparmset.pm 2005/03/18 15:17:36 1.189
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.184 2005/03/03 06:11:11 albertel Exp $
+# $Id: lonparmset.pm,v 1.189 2005/03/18 15:17:36 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -75,12 +75,6 @@ my %keyp;
my %maptitles;
-my $uname;
-my $udom;
-my $uhome;
-my $csec;
-my $coursename;
-
##################################################
##################################################
@@ -113,7 +107,7 @@ Returns: A list, the first item is the
##################################################
##################################################
sub parmval {
- my ($what,$id,$def)=@_;
+ my ($what,$id,$def,$uname,$udom,$csec)=@_;
my $result='';
my @outpar=();
# ----------------------------------------------------- Cascading lookup scheme
@@ -195,6 +189,104 @@ sub parmval {
return ($result,@outpar);
}
+
+##################################################
+##################################################
+#
+# Store a parameter
+#
+# Takes
+# - resource id
+# - name of parameter
+# - level
+# - new value
+# - new type
+# - username
+# - userdomain
+
+sub storeparm {
+ my ($sresid,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec)=@_;
+ $spnam=~s/\_([^\_]+)$/\.$1/;
+# ---------------------------------------------------------- Construct prefixes
+
+ my $symbparm=$symbp{$sresid}.'.'.$spnam;
+ my $mapparm=$mapp{$sresid}.'___(all).'.$spnam;
+
+ my $seclevel=$ENV{'request.course.id'}.'.['.$csec.'].'.$spnam;
+ my $seclevelr=$ENV{'request.course.id'}.'.['.$csec.'].'.$symbparm;
+ my $seclevelm=$ENV{'request.course.id'}.'.['.$csec.'].'.$mapparm;
+
+ my $courselevel=$ENV{'request.course.id'}.'.'.$spnam;
+ my $courselevelr=$ENV{'request.course.id'}.'.'.$symbparm;
+ my $courselevelm=$ENV{'request.course.id'}.'.'.$mapparm;
+
+ my $storeunder='';
+ if (($snum==11) || ($snum==3)) { $storeunder=$courselevel; }
+ if (($snum==10) || ($snum==2)) { $storeunder=$courselevelm; }
+ if (($snum==7) || ($snum==1)) { $storeunder=$courselevelr; }
+ if ($snum==6) { $storeunder=$seclevel; }
+ if ($snum==5) { $storeunder=$seclevelm; }
+ if ($snum==4) { $storeunder=$seclevelr; }
+
+ my $delete;
+ if ($nval eq '') { $delete=1;}
+ my %storecontent = ($storeunder => $nval,
+ $storeunder.'.type' => $ntype);
+ my $reply='';
+ if ($snum>3) {
+# ---------------------------------------------------------------- Store Course
+#
+# Expire sheets
+ &Apache::lonnet::expirespread('','','studentcalc');
+ if (($snum==7) || ($snum==4)) {
+ &Apache::lonnet::expirespread('','','assesscalc',$symbp{$sresid});
+ } elsif (($snum==8) || ($snum==5)) {
+ &Apache::lonnet::expirespread('','','assesscalc',$mapp{$sresid});
+ } else {
+ &Apache::lonnet::expirespread('','','assesscalc');
+ }
+# Store parameter
+ if ($delete) {
+ $reply=&Apache::lonnet::del
+ ('resourcedata',[keys(%storecontent)],
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ } else {
+ $reply=&Apache::lonnet::cput
+ ('resourcedata',\%storecontent,
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ }
+ } else {
+# ------------------------------------------------------------------ Store User
+#
+# Expire sheets
+ &Apache::lonnet::expirespread($uname,$udom,'studentcalc');
+ if ($snum==1) {
+ &Apache::lonnet::expirespread
+ ($uname,$udom,'assesscalc',$symbp{$sresid});
+ } elsif ($snum==2) {
+ &Apache::lonnet::expirespread
+ ($uname,$udom,'assesscalc',$mapp{$sresid});
+ } else {
+ &Apache::lonnet::expirespread($uname,$udom,'assesscalc');
+ }
+# Store parameter
+ if ($delete) {
+ $reply=&Apache::lonnet::del
+ ('resourcedata',[keys(%storecontent)],$udom,$uname);
+ } else {
+ $reply=&Apache::lonnet::cput
+ ('resourcedata',\%storecontent,$udom,$uname);
+ }
+ }
+
+ if ($reply=~/^error\:(.*)/) {
+ return "Write Error: $1";
+ }
+ return '';
+}
+
##################################################
##################################################
@@ -382,8 +474,21 @@ $assessparmhelp
ENDHEAD2
-}
- $r->print(<';
+ foreach ('',sort keys %sectionhash) {
+ $sections.='';
+ }
+ $sections.='';
+ }
+ $r->print(<
$lt{'captm'}
ENDHEAD3
@@ -393,13 +498,12 @@ ENDHEAD3
} else {
$r->print(<
-$lt{'sg'}:
-
-
+$sections
+
$lt{'fu'}
-
+
$lt{'oi'}
-
+
$lt{'ad'}
$chooseopt
@@ -412,16 +516,16 @@ ENDHEAD
sub print_row {
my ($r,$which,$part,$name,$rid,$default,$defaulttype,$display,$defbgone,
- $defbgtwo,$parmlev)=@_;
+ $defbgtwo,$parmlev,$uname,$udom,$csec)=@_;
# get the values for the parameter in cascading order
# empty levels will remain empty
my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},
- $rid,$$default{$which});
+ $rid,$$default{$which},$uname,$udom,$csec);
# get the type for the parameters
# problem: these may not be set for all levels
my ($typeresult,@typeoutpar)=&parmval($$part{$which}.'.'.
$$name{$which}.'.type',
- $rid,$$defaulttype{$which});
+ $rid,$$defaulttype{$which},$uname,$udom,$csec);
# cascade down manually
my $cascadetype=$$defaulttype{$which};
for (my $i=11;$i>0;$i--) {
@@ -679,8 +783,14 @@ sub assessparms {
my %allmaps=();
my %alllevs=();
+ my $uname;
+ my $udom;
+ my $uhome;
+ my $csec;
+
+ my $coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};
+
$alllevs{'Resource Level'}='full';
-# $alllevs{'Resource Level [BRIEF]'}='brief';
$alllevs{'Map Level'}='map';
$alllevs{'Course Level'}='general';
@@ -699,6 +809,7 @@ sub assessparms {
my $message='';
$csec=$ENV{'form.csec'};
+
if ($udom=$ENV{'form.udom'}) {
} elsif ($udom=$ENV{'request.role.domain'}) {
} elsif ($udom=$ENV{'user.domain'}) {
@@ -716,10 +827,6 @@ sub assessparms {
my $parmlev='';
my $trimheader='';
my $prevvisit=$ENV{'form.prevvisit'};
-
-# unless ($parmlev==$ENV{'form.parmlev'}) {
-# $parmlev = 'full';
-# }
unless ($ENV{'form.parmlev'}) {
$parmlev = 'map';
@@ -808,92 +915,17 @@ sub assessparms {
}
# --------------------------------------------------------- Get all assessments
- extractResourceInformation(\%bighash, \@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp,\%maptitles);
+ &extractResourceInformation(\%bighash, \@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp,\%maptitles);
$mapp{'0.0'} = '';
$symbp{'0.0'} = '';
# ---------------------------------------------------------- Anything to store?
if ($ENV{'form.pres_marker'}) {
- my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'});
- $spnam=~s/\_([^\_]+)$/\.$1/;
-# ---------------------------------------------------------- Construct prefixes
-
- my $symbparm=$symbp{$sresid}.'.'.$spnam;
- my $mapparm=$mapp{$sresid}.'___(all).'.$spnam;
-
- my $seclevel=$ENV{'request.course.id'}.'.['.$csec.'].'.$spnam;
- my $seclevelr=$ENV{'request.course.id'}.'.['.$csec.'].'.$symbparm;
- my $seclevelm=$ENV{'request.course.id'}.'.['.$csec.'].'.$mapparm;
-
- my $courselevel=$ENV{'request.course.id'}.'.'.$spnam;
- my $courselevelr=$ENV{'request.course.id'}.'.'.$symbparm;
- my $courselevelm=$ENV{'request.course.id'}.'.'.$mapparm;
-
- my $storeunder='';
- if (($snum==11) || ($snum==3)) { $storeunder=$courselevel; }
- if (($snum==10) || ($snum==2)) { $storeunder=$courselevelm; }
- if (($snum==7) || ($snum==1)) { $storeunder=$courselevelr; }
- if ($snum==6) { $storeunder=$seclevel; }
- if ($snum==5) { $storeunder=$seclevelm; }
- if ($snum==4) { $storeunder=$seclevelr; }
-
- my $delete;
- if ($ENV{'form.pres_value'} eq '') { $delete=1;}
- my %storecontent = ($storeunder => $ENV{'form.pres_value'},
- $storeunder.'.type' => $ENV{'form.pres_type'});
- my $reply='';
- if ($snum>3) {
-# ---------------------------------------------------------------- Store Course
-#
-# Expire sheets
- &Apache::lonnet::expirespread('','','studentcalc');
- if (($snum==7) || ($snum==4)) {
- &Apache::lonnet::expirespread('','','assesscalc',$symbp{$sresid});
- } elsif (($snum==8) || ($snum==5)) {
- &Apache::lonnet::expirespread('','','assesscalc',$mapp{$sresid});
- } else {
- &Apache::lonnet::expirespread('','','assesscalc');
- }
-# Store parameter
- if ($delete) {
- $reply=&Apache::lonnet::del
- ('resourcedata',[keys(%storecontent)],
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
- } else {
- $reply=&Apache::lonnet::cput
- ('resourcedata',\%storecontent,
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
- }
- } else {
-# ------------------------------------------------------------------ Store User
-#
-# Expire sheets
- &Apache::lonnet::expirespread($uname,$udom,'studentcalc');
- if ($snum==1) {
- &Apache::lonnet::expirespread
- ($uname,$udom,'assesscalc',$symbp{$sresid});
- } elsif ($snum==2) {
- &Apache::lonnet::expirespread
- ($uname,$udom,'assesscalc',$mapp{$sresid});
- } else {
- &Apache::lonnet::expirespread($uname,$udom,'assesscalc');
- }
-# Store parameter
- if ($delete) {
- $reply=&Apache::lonnet::del
- ('resourcedata',[keys(%storecontent)],$udom,$uname);
- } else {
- $reply=&Apache::lonnet::cput
- ('resourcedata',\%storecontent,$udom,$uname);
- }
- }
-
- if ($reply=~/^error\:(.*)/) {
- $message.="Write Error: $1";
- }
+ $message.=&storeparm(split(/\&/,$ENV{'form.pres_marker'}),
+ $ENV{'form.pres_value'},
+ $ENV{'form.pres_type'},
+ $uname,$udom,$csec);
# ---------------------------------------------------------------- Done storing
$message.=''.&mt('Changes can take up to 10 minutes before being active for all students.').&Apache::loncommon::help_open_topic('Caching').'
';
}
@@ -918,9 +950,9 @@ sub assessparms {
if ($fcat eq '') {
$a<=>$b;
} else {
- my ($result,@outpar)=&parmval($fcat,$a,$defp{$a});
+ my ($result,@outpar)=&parmval($fcat,$a,$defp{$a},$uname,$udom,$csec);
my $aparm=$outpar[$result];
- ($result,@outpar)=&parmval($fcat,$b,$defp{$b});
+ ($result,@outpar)=&parmval($fcat,$b,$defp{$b},$uname,$udom,$csec);
my $bparm=$outpar[$result];
1*$aparm<=>1*$bparm;
}
@@ -989,9 +1021,9 @@ sub assessparms {
$r->print('');
}
- $r->print(' print(' |
|
');
+ $r->print(' name="showoptions" value="show" />'.&mt('Show More Options').'
');
# $r->print("Show: $showoptions |
");
# $r->print("pscat: @pscat |
");
# $r->print("psprt: @psprt |
");
@@ -1257,7 +1289,7 @@ ENDTABLEHEADFOUR
&print_row($r,$_,\%part,\%name,$rid,\%default,
\%type,\%display,$defbgone,$defbgtwo,
- $parmlev);
+ $parmlev,$uname,$udom,$csec);
}
}
}
@@ -1365,7 +1397,7 @@ ENDMAPONE
$r->print('');
&print_row($r,$_,\%part,\%name,$mapid,\%default,
\%type,\%display,$defbgone,$defbgtwo,
- $parmlev);
+ $parmlev,$uname,$udom,$csec);
# $r->print("
resource.$part{$_}.$name{$_},$symbp{$mapid} |
\n");
}
$r->print("");
@@ -1442,7 +1474,7 @@ ENDMAPONE
foreach (sort keys %name) {
$r->print('');
&print_row($r,$_,\%part,\%name,$mapid,\%default,
- \%type,\%display,$defbgone,$defbgtwo,$parmlev);
+ \%type,\%display,$defbgone,$defbgtwo,$parmlev,$uname,$udom,$csec);
# $r->print("
resource.$part{$_}.$name{$_},$symbp{$mapid} |
\n");
}
$r->print("");
@@ -2062,8 +2094,6 @@ sub handler {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
-
- $coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};
if (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {
# ---------------------------------------------- This is for course environment