--- loncom/interface/spreadsheet/assesscalc.pm 2003/05/16 20:55:11 1.1 +++ loncom/interface/spreadsheet/assesscalc.pm 2003/05/22 21:16:35 1.5 @@ -1,5 +1,5 @@ # -# $Id: assesscalc.pm,v 1.1 2003/05/16 20:55:11 matthew Exp $ +# $Id: assesscalc.pm,v 1.5 2003/05/22 21:16:35 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,6 +46,7 @@ package Apache::assesscalc; use strict; use Apache::Constants qw(:common :http); use Apache::lonnet; +use Apache::loncommon; use Apache::Spreadsheet; use HTML::Entities(); use Spreadsheet::WriteExcel; @@ -171,7 +172,7 @@ sub load_parameter_caches { my $id = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; my %Tmp = &Apache::lonnet::dump('resourcedata',$dom,$id); while (my ($name,$value) = each(%Tmp)) { - $courseopt{$userprefix.$name}=$value; + $courseopt{$name}=$value; } } if (! %useropt) { @@ -198,7 +199,6 @@ sub load_parameter_caches { ######################################################## ######################################################## - sub ensure_current_parameter_caches { my $self = shift; if (! defined($current_course) || @@ -258,20 +258,25 @@ sub parmval { # my $symbparm = $symb.'.'.$what; my $mapparm = $mapname.'___(all).'.$what; + my $courseprefix = $self->{'cid'}; my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; # - my $seclevel = $usercourseprefix.'.['.$csec.'].'.$what; - my $seclevelr = $usercourseprefix.'.['.$csec.'].'.$symbparm; - my $seclevelm = $usercourseprefix.'.['.$csec.'].'.$mapparm; - # - my $courselevel = $usercourseprefix.'.'.$what; - my $courselevelr = $usercourseprefix.'.'.$symbparm; - my $courselevelm = $usercourseprefix.'.'.$mapparm; + my $seclevel = $courseprefix.'.['.$csec.'].'.$what; + my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; + my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; + # + my $courselevel = $courseprefix.'.'.$what; + my $courselevelr = $courseprefix.'.'.$symbparm; + my $courselevelm = $courseprefix.'.'.$mapparm; + # + my $ucourselevel = $usercourseprefix.'.'.$what; + my $ucourselevelr = $usercourseprefix.'.'.$symbparm; + my $ucourselevelm = $usercourseprefix.'.'.$mapparm; # check user if (defined($uname)) { - return $useropt{$courselevelr} if (defined($useropt{$courselevelr})); - return $useropt{$courselevelm} if (defined($useropt{$courselevelm})); - return $useropt{$courselevel} if (defined($useropt{$courselevel})); + return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); + return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); + return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); } # check section if (defined($csec)) { @@ -321,7 +326,17 @@ sub get_title { } else { $title = '

'.&Apache::lonnet::gettitle($self->{'symb'})."

\n"; } - $title .= '

'.$self->{'name'}.'@'.$self->{'domain'}."

\n"; + # Look up the users identifying information + # Get the users information + my %userenv = &Apache::loncoursedata::GetUserName($self->{'name'}, + $self->{'domain'}); + my $name = + join(' ',@userenv{'firstname','middlename','lastname','generation'}); + $name =~ s/\s+$//; + $title .= '

'.$name.', '. + &Apache::loncommon::aboutmewrapper($self->{'name'}.'@'.$self->{'domain'}, + $self->{'name'},$self->{'domain'}). + "

\n"; $title .= '

'.localtime(time).'

'; # return $title; @@ -479,7 +494,7 @@ sub compute { if (tie(%parmhash,'GDBM_File', $self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { foreach my $parmname (keys(%parameters)) { - my $value = $self->parmval($parmname); + my $value = $self->parmval($parmname); $parameters{$parmname} =$value; } untie(%parmhash); @@ -508,10 +523,27 @@ sub compute { my %f=$self->formulas(); my %c; # + # Check for blackout requirements + if ((!exists($ENV{'request.role.adv'}) || !$ENV{'request.role.adv'})) { + while (my ($parm,$value) = each(%parameters)) { + last if ($self->blackout()); + next if ($parm !~ /^(parameter_.*)_problemstatus$/); + next if ($parameters{$1.'_answerdate'}blackout(1); + } + } + } + # + # Move the parameters into the spreadsheet while (my ($parm,$value) = each(%parameters)) { my $cell = 'A'.$self->get_row_number_from_key($parm); $f{$cell} = $parm; - $c{$parm} = $value; + $c{$parm} = ''; + if ($value ne '') { + $c{$parm} = '"'.$value.'"'; + } } $self->formulas(%f); $self->constants(%c); @@ -593,7 +625,6 @@ These rows are saved in the students dir ######################################################## sub load_cached_export_rows { %Exportrows = undef; - &Apache::lonnet::logthis("loading cached assess sheets for $current_name $current_domain"); my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets_'. $ENV{'request.course.id'}, $current_domain,$current_name,undef); @@ -635,7 +666,8 @@ spreadsheet only if necessary. sub export_data { my $self = shift; my $symb = $self->{'symb'}; - if (! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || + if (! exists($ENV{'request.role.adv'}) || ! $ENV{'request.role.adv'} || + ! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || ! $self->check_expiration_time($Exportrows{$symb}->{'time'}) || ! exists($Exportrows{$symb}->{$self->{'filename'}}) || ! defined($Exportrows{$symb}->{$self->{'filename'}})) {