--- loncom/interface/spreadsheet/assesscalc.pm 2006/05/15 23:44:46 1.51.2.1 +++ loncom/interface/spreadsheet/assesscalc.pm 2006/04/06 20:24:13 1.52 @@ -1,5 +1,5 @@ # -# $Id: assesscalc.pm,v 1.51.2.1 2006/05/15 23:44:46 albertel Exp $ +# $Id: assesscalc.pm,v 1.52 2006/04/06 20:24:13 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -290,7 +290,8 @@ Returns: The value of a parameter, or '' This function cascades through the possible levels searching for a value for a parameter. The levels are checked in the following order: -user, course (at section level and course level), map, and lonnet::metadata. +user, course (at group, section level and course level), map, and +lonnet::metadata. This function uses %parmhash, which must be tied prior to calling it. This function also requires %courseopt and %useropt to be initialized for this user and course. @@ -301,18 +302,18 @@ this user and course. ################################################## sub parmval { my $self = shift; - my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn)=@_; - $uname = $self->{'name'} if (! defined($uname)); - $udom = $self->{'domain'} if (! defined($udom)); - $csec = $self->{'section'} if (! defined($csec)); - $symb = $self->{'symb'} if (! defined($symb)); + my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn,$cgroup)=@_; + $uname = $self->{'name'} if (! defined($uname)); + $udom = $self->{'domain'} if (! defined($udom)); + $csec = $self->{'section'} if (! defined($csec)); + $cgroup = $self->{'group'} if (! defined($cgroup)); + $symb = $self->{'symb'} if (! defined($symb)); # my $result=''; # # This should be a if (!defined($mapname) || !defined($id) || !defined($fn)) { ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); - $mapname = &Apache::lonnet::deversion($mapname); } # Cascading lookup scheme my $rwhat=$what; @@ -324,6 +325,10 @@ sub parmval { my $courseprefix = $self->{'cid'}; my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; # + my $grplevel=$courseprefix.'.['.$cgroup.'].'.$what; + my $grplevelr=$courseprefix.'.['.$cgroup.'].'.$symbparm; + my $grplevelm=$courseprefix.'.['.$cgroup.'].'.$mapparm; + # my $seclevel = $courseprefix.'.['.$csec.'].'.$what; my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; @@ -335,12 +340,18 @@ sub parmval { my $ucourselevel = $usercourseprefix.'.'.$what; my $ucourselevelr = $usercourseprefix.'.'.$symbparm; my $ucourselevelm = $usercourseprefix.'.'.$mapparm; - # check user + # check user if (defined($uname)) { return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); } + # check group + if (defined($cgroup)) { + return $courseopt{$grplevelr} if (defined($courseopt{$grplevelr})); + return $courseopt{$grplevelm} if (defined($courseopt{$grplevelm})); + return $courseopt{$grplevel} if (defined($courseopt{$grplevel})); + } # check section if (defined($csec)) { return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr})); @@ -632,7 +643,6 @@ sub get_parameter_values { if (tie(%parmhash,'GDBM_File', $self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); - $mapname = &Apache::lonnet::deversion($mapname); foreach my $parmname (@Parameters) { my $value = $self->parmval($parmname,$self->{'symb'}, $self->{'name'},$self->{'domain'},