--- loncom/interface/spreadsheet/assesscalc.pm 2003/11/17 19:55:41 1.29 +++ loncom/interface/spreadsheet/assesscalc.pm 2005/03/03 17:52:36 1.37 @@ -1,5 +1,5 @@ # -# $Id: assesscalc.pm,v 1.29 2003/11/17 19:55:41 matthew Exp $ +# $Id: assesscalc.pm,v 1.37 2005/03/03 17:52:36 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -104,6 +104,7 @@ my %nice_parameter_name; my %useropt; my %userdata; my %courseopt; +my $navmap; ######################################################## ######################################################## @@ -136,11 +137,11 @@ sub clear_package { undef(%useropt); undef(%userdata); undef(%courseopt); + undef($navmap); } sub save_cached_export_rows { my ($sname,$sdomain) = @_; - my $start = Time::HiRes::time; my $result = &Apache::lonnet::put ('nohist_calculatedsheets_'.$ENV{'request.course.id'}, $newExportrows{$sname.':'.$sdomain}, @@ -149,7 +150,15 @@ sub save_cached_export_rows { } sub initialize { + my ($in_navmap) = @_; &clear_package(); + $navmap = $in_navmap; + if (! defined($navmap)) { + $navmap = Apache::lonnavmaps::navmap->new(); + } + if (!defined($navmap)) { + &Apache::lonnet::logthis('assesscalc:Can not open Coursemap'); + } &Apache::loncoursedata::clear_internal_caches(); } @@ -165,9 +174,10 @@ sub initialize { ######################################################## ######################################################## sub initialize_package { - my ($sname,$sdomain) = @_; + my ($sname,$sdomain,$in_navmap) = @_; $current_name = $sname; $current_domain = $sdomain; + $navmap = $in_navmap; undef(%useropt); undef(%userdata); if ($current_course ne $ENV{'request.course.id'}) { @@ -337,18 +347,19 @@ sub parmval { # # check course return $courseopt{$courselevelr} if (defined($courseopt{$courselevelr})); - return $courseopt{$courselevelm} if (defined($courseopt{$courselevelm})); - return $courseopt{$courselevel} if (defined($courseopt{$courselevel})); # check map parms my $thisparm = $parmhash{$symbparm}; return $thisparm if (defined($thisparm)); # check default $thisparm = &Apache::lonnet::metadata($fn,$rwhat.'.default'); return $thisparm if (defined($thisparm)); - # + # check more course + return $courseopt{$courselevelm} if (defined($courseopt{$courselevelm})); + return $courseopt{$courselevel} if (defined($courseopt{$courselevel})); + # Cascade Up my $space=$what; - $space=~s/\.\w+$//; + $space=~s/\.[^._]+$//; if ($space ne '0') { my @parts=split(/_/,$space); my $id=pop(@parts); @@ -397,11 +408,8 @@ sub get_full_title { my @title = ($self->get_title()); # 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+$//; + my $name = &Apache::loncommon::plainname($self->{'name'}, + $self->{'domain'}); push (@title,$name); push (@title,&Apache::lonlocal::locallocaltime(time)); return @title; @@ -531,7 +539,7 @@ sub csv_rows { # writes the meat of the spreadsheet to an excel worksheet. Called # by Spreadsheet::outsheet_excel; my $self = shift; - my ($filehandle) = @_; + my ($connection,$filehandle) = @_; # # Write a header row $self->csv_output_row($filehandle,undef, @@ -554,12 +562,13 @@ sub excel_rows { # writes the meat of the spreadsheet to an excel worksheet. Called # by Spreadsheet::outsheet_excel; my $self = shift; - my ($worksheet,$cols_output,$rows_output) = @_; + my ($connection,$worksheet,$cols_output,$rows_output) = @_; + return if (! ref($worksheet)); # # Write a header row $cols_output = 0; foreach my $value ('Parameter','Description','Value') { - $worksheet->write($rows_output,$cols_output++,&mt($value)); + $worksheet->write($rows_output,$cols_output++,$value); } $rows_output++; # @@ -780,7 +789,10 @@ sub compute { while (my ($parm,$value) = each(%parameters)) { my $cell = 'A'.$self->get_row_number_from_key($parm); $f{$cell} = $parm; - $value = '"'.$value.'"' if ($value =~/[^0-9.]/); + if ($parm =~ /_submission$/ && $value =~ /(\{|\})/) { + $value = 'witheld'; + } + $value = 'q{'.$value.'}' if ($value =~/([^\d\.]|\.\.)/); $c{$parm} = $value; } $self->formulas(\%f); @@ -872,6 +884,10 @@ sub load_cached_export_rows { # We only got one key, so we will access it directly. while (my ($key,$sheetdata) = each(%tmp)) { my ($sname,$sdom,$sheettype,$symb) = split(':',$key); + if (! defined($sname) || $sname eq '' || + ! defined($sdom) || $sdom eq '' ) { + next; + } if ($symb =~ /\.time$/) { $symb =~ s/\.time$//; $Exportrows{$symb}->{'time'} = $sheetdata;