Diff for /loncom/interface/spreadsheet/assesscalc.pm between versions 1.39 and 1.43

version 1.39, 2005/04/07 06:56:23 version 1.43, 2005/05/15 02:28:23
Line 661  sub get_problem_state { Line 661  sub get_problem_state {
   
 sub determine_parts {  sub determine_parts {
     my $self = shift;      my $self = shift;
       my $check_hidden = shift;
     if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') {      if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') {
         return;          return;
     }      }
Line 671  sub determine_parts { Line 672  sub determine_parts {
     my $metadata = &Apache::lonnet::metadata($src,'packages');      my $metadata = &Apache::lonnet::metadata($src,'packages');
     foreach (split(',',$metadata)) {      foreach (split(',',$metadata)) {
         my ($part) = (/^part_(.*)$/);          my ($part) = (/^part_(.*)$/);
         if (defined($part) &&           if (!defined($part)) { next; }
             ! &Apache::loncommon::check_if_partid_hidden          if (!$check_hidden) { $Parts{$part}++; next; }
                 ($part,$self->{'symb'},$self->{'name'},$self->{'domain'})          if (!&Apache::loncommon::check_if_partid_hidden
       ($part,$self->{'symb'},$self->{'name'},$self->{'domain'})
             ) {              ) {
             $Parts{$part}++;              $Parts{$part}++;
         }          }
Line 708  sub parameter_part_is_valid { Line 710  sub parameter_part_is_valid {
 sub compute {  sub compute {
     my $self = shift;      my $self = shift;
     my ($r) = @_;      my ($r) = @_;
     my $connection = $r->connection();  
     if ($connection->aborted()) { $self->cleanup(); return; }  
     $self->initialize_safe_space();      $self->initialize_safe_space();
     #########################################      #########################################
     #########################################      #########################################
Line 737  sub compute { Line 737  sub compute {
     }      }
     #      #
     # Get the values of the metadata fields      # Get the values of the metadata fields
     if ($connection->aborted()) { $self->cleanup(); return; }  
     $self->ensure_current_caches();      $self->ensure_current_caches();
     if ($connection->aborted()) { $self->cleanup(); return; }  
     %parameters = $self->get_parameter_values(keys(%parameters));      %parameters = $self->get_parameter_values(keys(%parameters));
     if ($connection->aborted()) { $self->cleanup(); return; }  
     #      #
     # Clean out unnecessary parameters      # Clean out unnecessary parameters
     foreach (keys(%parameters)) {      foreach (keys(%parameters)) {
Line 749  sub compute { Line 746  sub compute {
     }      }
     #      #
     # Get the students performance data      # Get the students performance data
       $self->determine_parts(($parameters{'parameter_0_hiddenparts'} ne ''));
     my %student_parameters = $self->get_problem_state();      my %student_parameters = $self->get_problem_state();
     while (my ($parm,$value) = each(%student_parameters)) {      while (my ($parm,$value) = each(%student_parameters)) {
         $parm =~ s/^resource\./stores_/;          $parm =~ s/^resource\./stores_/;
         $parm =~ s/\./_/g;          $parm =~ s/\./_/g;
         $parameters{$parm} = $value;   # Clean out any bad parameters
     }   next if (! $self->parameter_part_is_valid($parm));
     #   $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      # Set up the formulas and parameter values
Line 783  sub compute { Line 775  sub compute {
             }              }
         }          }
     }      }
     if ($connection->aborted()) { $self->cleanup(); return; }  
     #      #
     # Move the parameters into the spreadsheet      # Move the parameters into the spreadsheet
     while (my ($parm,$value) = each(%parameters)) {      while (my ($parm,$value) = each(%parameters)) {
Line 797  sub compute { Line 788  sub compute {
     }      }
     $self->formulas(\%f);      $self->formulas(\%f);
     $self->constants(\%c);      $self->constants(\%c);
     if ($connection->aborted()) { $self->cleanup(); return; }  
     $self->calcsheet();      $self->calcsheet();
     #      #
     # Store export row in cache      # Store export row in cache
     my @exportarray = $self->exportrow();      my @exportarray = $self->exportrow();
     $self->deal_with_export_row(@exportarray);      $self->deal_with_export_row(@exportarray);
     $self->save() if ($self->need_to_save());      $self->save() if ($self->need_to_save());
     if ($connection->aborted()) { $self->cleanup(); return; }  
     return;      return;
 }  }
   
Line 814  sub compute { Line 803  sub compute {
 sub sett {  sub sett {
     my $self = shift;      my $self = shift;
     my %t=();      my %t=();
       undef(%Apache::Spreadsheet::sheet_values);
     #      #
     # Deal with the template row by copying the template formulas into each      # Deal with the template row by copying the template formulas into each
     # row.      # row.
Line 840  sub sett { Line 830  sub sett {
  next if ($cell =~ /template_/);   next if ($cell =~ /template_/);
         if ($cell =~ /^A/ && $cell ne 'A0') {          if ($cell =~ /^A/ && $cell ne 'A0') {
             if ($formula !~ /^\!/) {              if ($formula !~ /^\!/) {
                 $t{$cell}=$self->{'constants'}->{$formula};   $Apache::Spreadsheet::sheet_values{$cell}=
       eval($self->{'constants'}->{$formula});
             }              }
         } else {          } else {
             $t{$cell}=$formula;              $t{$cell}=$formula;
Line 919  spreadsheet only if necessary. Line 910  spreadsheet only if necessary.
 sub export_data {  sub export_data {
     my $self = shift;      my $self = shift;
     my ($r) = @_;      my ($r) = @_;
     my $connection = $r->connection();  
     my $symb = $self->{'symb'};      my $symb = $self->{'symb'};
     if (! exists($env{'request.role.adv'}) || ! $env{'request.role.adv'} ||      if (! exists($env{'request.role.adv'}) || ! $env{'request.role.adv'} ||
         ! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb})  ||          ! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb})  ||
Line 930  sub export_data { Line 920  sub export_data {
         ) {          ) {
         $self->compute($r);          $self->compute($r);
     }      }
     if ($connection->aborted()) { $self->cleanup(); return; }  
     my @Data;      my @Data;
     if ($self->badcalc()) {      if ($self->badcalc()) {
         @Data = ();          @Data = ();

Removed from v.1.39  
changed lines
  Added in v.1.43


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>