--- loncom/interface/spreadsheet/assesscalc.pm 2003/10/02 17:07:41 1.25 +++ loncom/interface/spreadsheet/assesscalc.pm 2003/11/11 15:36:28 1.28 @@ -1,5 +1,5 @@ # -# $Id: assesscalc.pm,v 1.25 2003/10/02 17:07:41 matthew Exp $ +# $Id: assesscalc.pm,v 1.28 2003/11/11 15:36:28 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -55,6 +55,7 @@ use HTML::Entities(); use Spreadsheet::WriteExcel; use GDBM_File; use Time::HiRes; +use Apache::lonlocal; @Apache::assesscalc::ISA = ('Apache::Spreadsheet'); @@ -398,7 +399,7 @@ sub get_title { join(' ',@userenv{'firstname','middlename','lastname','generation'}); $name =~ s/\s+$//; push (@title,$name); - push (@title,scalar(localtime(time))); + push (@title,&Apache::lonlocal::locallocaltime(time)); return @title; } @@ -407,7 +408,7 @@ sub parent_link { my $link .= '

'. - 'Student level sheet

'."\n"; + &mt('Student level sheet').'

'."\n"; return $link; } @@ -421,13 +422,17 @@ sub outsheet_html { my $exportcolor = '#FFFFAA'; my $num_uneditable = 1; my $num_left = 52-$num_uneditable; + my %lt=&Apache::lonlocal::texthash( + 'as' => 'Assessment', + 'ca' => 'Calculations', + ); my $tableheader =<<"END"; - + + $lt{'ca'} END my $label_num = 0; @@ -469,6 +474,11 @@ END # my $num_output = 0; foreach my $rownum (sort {$a <=> $b} ($self->rows())) { + if (! $self->parameter_part_is_valid( + $self->{'formulas'}->{'A'.$rownum} + )) { + next; + } if ($num_output++ % 50 == 0) { $r->print("
Assessment$lt{'as'}   - Calculations
\n".$tableheader); } @@ -517,7 +527,7 @@ sub csv_rows { # # Write a header row $self->csv_output_row($filehandle,undef, - ('Parameter','Description','Value')); + (&mt('Parameter'),&mt('Description'),&mt('Value'))); # # Write each row foreach my $rownum (sort {$a <=> $b} ($self->rows())) { @@ -541,7 +551,7 @@ sub excel_rows { # Write a header row $cols_output = 0; foreach my $value ('Parameter','Description','Value') { - $worksheet->write($rows_output,$cols_output++,$value); + $worksheet->write($rows_output,$cols_output++,&mt($value)); } $rows_output++; # @@ -632,6 +642,52 @@ sub get_problem_state { return %student_parameters; } +sub determine_parts { + my $self = shift; + if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { + return; + } + my (undef,undef,$url) = &Apache::lonnet::decode_symb($self->{'symb'}); + my $src = &Apache::lonnet::clutter($url); + return if (! defined($src)); + my %Parts; + my $metadata = &Apache::lonnet::metadata($src,'packages'); + foreach (split(',',$metadata)) { + my ($part) = (/^part_(.*)$/); + if (defined($part) && + ! &Apache::loncommon::check_if_partid_hidden + ($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) + ) { + $Parts{$part}++; + } + } + # Make sure part 0 is defined. + $Parts{'0'}++; + $self->{'Parts'} = \%Parts; + return; +} + +sub parameter_part_is_valid { + my $self = shift; + my ($parameter) = @_; + return 1 if ($parameter eq 'timestamp'); + if (! defined($self->{'Parts'}) || + ! ref ($self->{'Parts'}) || + ref($self->{'Parts'}) ne 'HASH') { + return 1; + } + # + my (undef,$part) = + ($parameter =~ m/^(resource|stores|parameter)_([^_]+)_.*/); + if (exists($self->{'Parts'}) && + exists($self->{'Parts'}->{$part}) && + $self->{'Parts'}->{$part} ) { + return 1; + } else { + return 0; + } +} + sub compute { my $self = shift; my ($r) = @_; @@ -683,6 +739,14 @@ sub compute { $parameters{$parm} = $value; } # + # Clean out any bad parameters + $self->determine_parts(); + foreach my $param (keys(%parameters)) { + if (! $self->parameter_part_is_valid($param)) { + delete ($parameters{$param}); + } + } + # # Set up the formulas and parameter values my %f=$self->formulas(); my %c; @@ -705,7 +769,6 @@ sub compute { if ($connection->aborted()) { $self->cleanup(); return; } # # Move the parameters into the spreadsheet - if ($connection->aborted()) { $self->cleanup(); return; } while (my ($parm,$value) = each(%parameters)) { my $cell = 'A'.$self->get_row_number_from_key($parm); $f{$cell} = $parm;