--- loncom/interface/lonparmset.pm 2016/01/31 21:25:38 1.555 +++ loncom/interface/lonparmset.pm 2016/03/02 14:14:06 1.556 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.555 2016/01/31 21:25:38 raeburn Exp $ +# $Id: lonparmset.pm,v 1.556 2016/03/02 14:14:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -54,21 +54,25 @@ Inputs: $what - a parameter spec (inclu $id - a bighash Id number $def - the resource's default value 'stupid emacs -Returns: A list, the first item is the index into the remaining list of items of parm valuse that is the active one, the list consists of parm values at the 14 possible levels +Returns: A list, the first item is the index into the remaining list of items of parm values that is the active one, the list consists of parm values at the 18 possible levels -14- General Course -13- Map or Folder level in course -12- resource default -11- map default -10- resource level in course -9 - General for section -8 - Map or Folder level for section -7 - resource level in section -6 - General for group -5 - Map or Folder level for group -4 - resource level in group -3 - General for specific student -2 - Map or Folder level for specific student +18 - General Course +17 - Map or Folder level in course (recursive) +16 - Map or Folder level in course (non-recursive) +15 - resource default +14 - map default +13 - resource level in course +12 - General for section +11 - Map or Folder level for section (recursive) +10 - Map or Folder level for section (non-recursive) +9 - resource level in section +8 - General for group +7 - Map or Folder level for group (recursive) +6 - Map or Folder level for group (non-recursive) +5 - resource level in group +4 - General for specific student +3 - Map or Folder level for specific student (recursive) +2 - Map or Folder level for specific student (non-recursive) 1 - resource level for specific student =item parmval_by_symb() @@ -369,84 +373,106 @@ sub parmval_by_symb { $map = &Apache::lonnet::deversion($map); my $symbparm=$symb.'.'.$what; + my $recurseparm=$map.'___(rec).'.$what; my $mapparm=$map.'___(all).'.$what; my $grplevel=$env{'request.course.id'}.'.['.$cgroup.'].'.$what; my $grplevelr=$env{'request.course.id'}.'.['.$cgroup.'].'.$symbparm; + my $grpleveli=$env{'request.course.id'}.'.['.$cgroup.'].'.$recurseparm; my $grplevelm=$env{'request.course.id'}.'.['.$cgroup.'].'.$mapparm; my $seclevel=$env{'request.course.id'}.'.['.$csec.'].'.$what; my $seclevelr=$env{'request.course.id'}.'.['.$csec.'].'.$symbparm; + my $secleveli=$env{'request.course.id'}.'.['.$csec.'].'.$recurseparm; my $seclevelm=$env{'request.course.id'}.'.['.$csec.'].'.$mapparm; my $courselevel=$env{'request.course.id'}.'.'.$what; my $courselevelr=$env{'request.course.id'}.'.'.$symbparm; + my $courseleveli=$env{'request.course.id'}.'.'.$recurseparm; my $courselevelm=$env{'request.course.id'}.'.'.$mapparm; # --------------------------------------------------------- first, check course if (defined($$courseopt{$courselevel})) { - $outpar[14]=$$courseopt{$courselevel}; - $result=14; + $outpar[18]=$$courseopt{$courselevel}; + $result=18; + } + + if (defined($$courseopt{$courseleveli})) { + $outpar[17]=$$courseopt{$courseleveli}; + $result=17; } if (defined($$courseopt{$courselevelm})) { - $outpar[13]=$$courseopt{$courselevelm}; - $result=13; + $outpar[16]=$$courseopt{$courselevelm}; + $result=16; } # ------------------------------------------------------- second, check default - if (defined($def)) { $outpar[12]=$def; $result=12; } + if (defined($def)) { $outpar[15]=$def; $result=15; } # ------------------------------------------------------ third, check map parms + my $thisparm=&parmhash($symbparm); - if (defined($thisparm)) { $outpar[11]=$thisparm; $result=11; } + if (defined($thisparm)) { $outpar[14]=$thisparm; $result=14; } if (defined($$courseopt{$courselevelr})) { - $outpar[10]=$$courseopt{$courselevelr}; - $result=10; + $outpar[13]=$$courseopt{$courselevelr}; + $result=13; } # ------------------------------------------------------ fourth, back to course if ($csec ne '') { if (defined($$courseopt{$seclevel})) { - $outpar[9]=$$courseopt{$seclevel}; - $result=9; - } + $outpar[12]=$$courseopt{$seclevel}; + $result=12; + } + if (defined($$courseopt{$secleveli})) { + $outpar[11]=$$courseopt{$secleveli}; + $result=11; + } if (defined($$courseopt{$seclevelm})) { - $outpar[8]=$$courseopt{$seclevelm}; - $result=8; - } - + $outpar[10]=$$courseopt{$seclevelm}; + $result=10; + } if (defined($$courseopt{$seclevelr})) { - $outpar[7]=$$courseopt{$seclevelr}; - $result=7; - } + $outpar[9]=$$courseopt{$seclevelr}; + $result=9; + } } # ------------------------------------------------------ fifth, check course group if ($cgroup ne '') { if (defined($$courseopt{$grplevel})) { - $outpar[6]=$$courseopt{$grplevel}; - $result=6; + $outpar[8]=$$courseopt{$grplevel}; + $result=8; + } + if (defined($$courseopt{$grpleveli})) { + $outpar[7]=$$courseopt{$grpleveli}; + $result=7; } if (defined($$courseopt{$grplevelm})) { - $outpar[5]=$$courseopt{$grplevelm}; - $result=5; + $outpar[6]=$$courseopt{$grplevelm}; + $result=6; } if (defined($$courseopt{$grplevelr})) { - $outpar[4]=$$courseopt{$grplevelr}; - $result=4; + $outpar[5]=$$courseopt{$grplevelr}; + $result=5; } } -# ---------------------------------------------------------- fifth, check user +# ---------------------------------------------------------- sixth, check user if ($uname ne '') { if (defined($$useropt{$courselevel})) { - $outpar[3]=$$useropt{$courselevel}; + $outpar[4]=$$useropt{$courselevel}; + $result=4; + } + + if (defined($$useropt{$courseleveli})) { + $outpar[3]=$$useropt{$courseleveli}; $result=3; } @@ -686,30 +712,37 @@ sub storeparm_by_symb_inner { $map = &Apache::lonnet::deversion($map); my $symbparm=$symb.'.'.$spnam; + my $recurseparm=$map.'___(rec).'.$spnam; my $mapparm=$map.'___(all).'.$spnam; my $grplevel=$env{'request.course.id'}.'.['.$cgroup.'].'.$spnam; my $grplevelr=$env{'request.course.id'}.'.['.$cgroup.'].'.$symbparm; + my $grpleveli=$env{'request.course.id'}.'.['.$cgroup.'].'.$recurseparm; my $grplevelm=$env{'request.course.id'}.'.['.$cgroup.'].'.$mapparm; my $seclevel=$env{'request.course.id'}.'.['.$csec.'].'.$spnam; my $seclevelr=$env{'request.course.id'}.'.['.$csec.'].'.$symbparm; + my $secleveli=$env{'request.course.id'}.'.['.$csec.'].'.$recurseparm; my $seclevelm=$env{'request.course.id'}.'.['.$csec.'].'.$mapparm; my $courselevel=$env{'request.course.id'}.'.'.$spnam; my $courselevelr=$env{'request.course.id'}.'.'.$symbparm; + my $courseleveli=$env{'request.course.id'}.'.'.$recurseparm; my $courselevelm=$env{'request.course.id'}.'.'.$mapparm; my $storeunder=''; - if (($snum==14) || ($snum==3)) { $storeunder=$courselevel; } - if (($snum==13) || ($snum==2)) { $storeunder=$courselevelm; } - if (($snum==10) || ($snum==1)) { $storeunder=$courselevelr; } - if ($snum==9) { $storeunder=$seclevel; } - if ($snum==8) { $storeunder=$seclevelm; } - if ($snum==7) { $storeunder=$seclevelr; } - if ($snum==6) { $storeunder=$grplevel; } - if ($snum==5) { $storeunder=$grplevelm; } - if ($snum==4) { $storeunder=$grplevelr; } + if (($snum==18) || ($snum==4)) { $storeunder=$courselevel; } + if (($snum==17) || ($snum==3)) { $storeunder=$courseleveli; } + if (($snum==16) || ($snum==2)) { $storeunder=$courselevelm; } + if (($snum==13) || ($snum==1)) { $storeunder=$courselevelr; } + if ($snum==12) { $storeunder=$seclevel; } + if ($snum==11) { $storeunder=$secleveli; } + if ($snum==10) { $storeunder=$seclevelm; } + if ($snum==9) { $storeunder=$seclevelr; } + if ($snum==8) { $storeunder=$grplevel; } + if ($snum==7) { $storeunder=$grpleveli; } + if ($snum==6) { $storeunder=$grplevelm; } + if ($snum==5) { $storeunder=$grplevelr; } my $delete; @@ -717,16 +750,17 @@ sub storeparm_by_symb_inner { my %storecontent = ($storeunder => $nval, $storeunder.'.type' => $ntype); my $reply=''; - if ($snum>3) { + if ($snum>4) { # ---------------------------------------------------------------- Store Course # my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; # Expire sheets &Apache::lonnet::expirespread('','','studentcalc'); - if (($snum==10) || ($snum==7) || ($snum==4)) { + if (($snum==13) || ($snum==9) || ($snum==5)) { &Apache::lonnet::expirespread('','','assesscalc',$symb); - } elsif (($snum==11) || ($snum==8) || ($snum==5)) { +#FIXME + } elsif (($snum==14) || ($snum==10) || ($snum==6)) { &Apache::lonnet::expirespread('','','assesscalc',$map); } else { &Apache::lonnet::expirespread('','','assesscalc'); @@ -1158,7 +1192,7 @@ sub print_row { $$defaulttype{$which},$uname,$udom,$csec,$cgroup,$courseopt); # cascade down manually my $cascadetype=$$defaulttype{$which}; - for (my $i=14;$i>0;$i--) { + for (my $i=18;$i>0;$i--) { if ($typeoutpar[$i]) { $cascadetype=$typeoutpar[$i]; } else { @@ -1187,24 +1221,27 @@ sub print_row { if ($parmlev eq 'general') { if ($uname) { - &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,4,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } elsif ($cgroup) { - &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); + &print_td($r,8,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); } elsif ($csec) { - &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,12,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } else { - &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,18,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } } elsif ($parmlev eq 'map') { - if ($uname) { - &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } elsif ($cgroup) { - &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); + &print_td($r,7,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); + &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); } elsif ($csec) { - &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,11,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,10,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } else { - &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,17,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,16,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } } else { if ($uname) { @@ -1213,7 +1250,7 @@ sub print_row { ($coursereply,$othergrp,$grp_parm,$controlgrp) = &print_usergroups($r,$$part{$which}.'.'.$$name{$which}, $rid,$cgroup,$defbgone,$usersgroups,$result,$courseopt); - if ($coursereply && $result > 3) { + if ($coursereply && $result > 4) { if (defined($controlgrp)) { if ($cgroup ne $controlgrp) { $effective_parm = $grp_parm; @@ -1224,28 +1261,32 @@ sub print_row { } } - &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,18,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,17,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,16,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,15,'#FFDDDD',$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,14,'#FFDDDD',$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); - &print_td($r,12,'#FFDDDD',$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); - &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); - &print_td($r,10,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); if ($csec) { + &print_td($r,12,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,11,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); + &print_td($r,10,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); - &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); - &print_td($r,7,$defbgtwo,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); } if ($cgroup) { + &print_td($r,8,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); + &print_td($r,7,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); - &print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display,$noeditgrp); } if ($uname) { if ($othergrp) { $r->print($othergrp); } + &print_td($r,4,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$which,\@typeoutpar,$display); @@ -1272,16 +1313,16 @@ sub print_td { $r->print('
'.&Apache::loncommon::start_data_table() .&Apache::loncommon::start_data_table_header_row() .'