Diff for /loncom/interface/spreadsheet/studentcalc.pm between versions 1.29 and 1.32

version 1.29, 2005/03/10 17:33:57 version 1.32, 2005/05/15 03:06:59
Line 74  sub initialize { Line 74  sub initialize {
 }  }
   
 sub initialize_package {  sub initialize_package {
     $current_course = $ENV{'request.course.id'};      $current_course = $env{'request.course.id'};
     &initialize_sequence_cache();      &initialize_sequence_cache();
     &load_cached_export_rows();      &load_cached_export_rows();
 }  }
   
 sub ensure_correct_sequence_data {  sub ensure_correct_sequence_data {
     if ($current_course ne $ENV{'request.course.id'}) {      if ($current_course ne $env{'request.course.id'}) {
         &initialize_sequence_cache();          &initialize_sequence_cache();
         $current_course = $ENV{'request.course.id'};          $current_course = $env{'request.course.id'};
     }      }
     return;      return;
 }  }
Line 101  sub initialize_sequence_cache { Line 101  sub initialize_sequence_cache {
     for my $sequence ($navmap->getById('0.0'), @all_sequences) {      for my $sequence ($navmap->getById('0.0'), @all_sequences) {
  if ($navmap->hasResource($sequence,sub { shift->is_problem(); }, 0)){   if ($navmap->hasResource($sequence,sub { shift->is_problem(); }, 0)){
             push(@Sequences,$sequence);              push(@Sequences,$sequence);
       &get_resources($sequence);
         }          }
     }      }
 }  }
   
   my %res_memoize;
 sub get_resources {  sub get_resources {
     my ($seq) = @_;      my ($seq) = @_;
       if (exists($res_memoize{$seq->symb()})) {
    return @{$res_memoize{$seq->symb()}};
       }
     return () if (! defined($navmap) || ! ref($navmap));      return () if (! defined($navmap) || ! ref($navmap));
     my @resources = $navmap->retrieveResources($seq,      my @resources = $navmap->retrieveResources($seq,
                                                sub { shift->is_problem(); },                                                 sub { shift->is_problem(); },
                                                0,0,0);                                                 0,0,0);
       $res_memoize{$seq->symb()}=\@resources;
     return @resources;      return @resources;
 }  }
   
 sub clear_package {  sub clear_package {
     undef(@Sequences);      undef(@Sequences);
     undef(%Exportrows);      undef(%Exportrows);
       undef(%res_memoize);
     &Apache::assesscalc::clear_package();      &Apache::assesscalc::clear_package();
 }  }
   
Line 137  sub get_html_title { Line 144  sub get_html_title {
     my $self = shift;      my $self = shift;
     my ($name,$desc,$time) = $self->get_title();      my ($name,$desc,$time) = $self->get_title();
     my $title = '<h1>'.$name;      my $title = '<h1>'.$name;
     if ($ENV{'user.name'} ne $self->{'name'} &&       if ($env{'user.name'} ne $self->{'name'} && 
         $ENV{'user.domain'} ne $self->{'domain'}) {          $env{'user.domain'} ne $self->{'domain'}) {
         $title .= ' '.&Apache::loncommon::aboutmewrapper          $title .= ' '.&Apache::loncommon::aboutmewrapper
                                     ($self->{'name'}.'@'.$self->{'domain'},                                      ($self->{'name'}.'@'.$self->{'domain'},
                                      $self->{'name'},$self->{'domain'});                                       $self->{'name'},$self->{'domain'});
Line 173  sub outsheet_html { Line 180  sub outsheet_html {
     ####################################      ####################################
     my @AssessFileNames = $self->othersheets('assesscalc');      my @AssessFileNames = $self->othersheets('assesscalc');
     my $editing_is_allowed = &Apache::lonnet::allowed('mgr',      my $editing_is_allowed = &Apache::lonnet::allowed('mgr',
                                                 $ENV{'request.course.id'});                                                  $env{'request.course.id'});
     ####################################      ####################################
     # Report any calculation errors    #      # Report any calculation errors    #
     ####################################      ####################################
Line 221  END Line 228  END
         $r->print($tableheader);          $r->print($tableheader);
         #          #
         # Print out template row          # Print out template row
         if (exists($ENV{'request.role.adv'}) && $ENV{'request.role.adv'}) {          if (exists($env{'request.role.adv'}) && $env{'request.role.adv'}) {
             $r->print('<tr><td>Template</td><td>&nbsp;</td>'.              $r->print('<tr><td>Template</td><td>&nbsp;</td>'.
                       $self->html_template_row($num_uneditable,                        $self->html_template_row($num_uneditable,
                                                $importcolor)."</tr>\n");                                                 $importcolor)."</tr>\n");
Line 234  END Line 241  END
     $r->print("</table>\n");      $r->print("</table>\n");
     #      #
     # Prepare to output rows      # Prepare to output rows
     if (exists($ENV{'request.role.adv'}) && $ENV{'request.role.adv'}) {      if (exists($env{'request.role.adv'}) && $env{'request.role.adv'}) {
         $tableheader =<<"END";          $tableheader =<<"END";
 </p><p>  </p><p>
 <table border="2">  <table border="2">
Line 319  sub assess_file_selector { Line 326  sub assess_file_selector {
     if (!defined($AssessFiles) || ! @$AssessFiles) {      if (!defined($AssessFiles) || ! @$AssessFiles) {
         return '';          return '';
     }      }
     return '' if (! &Apache::lonnet::allowed('mgr',$ENV{'request.course.id'}));      return '' if (! &Apache::lonnet::allowed('mgr',$env{'request.course.id'}));
     my $element_name = 'FileSelect_'.$row;      my $element_name = 'FileSelect_'.$row;
     my $load_dialog = '<select size="1" name="'.$element_name.'" '.      my $load_dialog = '<select size="1" name="'.$element_name.'" '.
         'onchange="'.          'onchange="'.
Line 496  END Line 503  END
 sub compute {  sub compute {
     my $self = shift;      my $self = shift;
     my ($r) = @_;      my ($r) = @_;
     my $connection = $r->connection();  
     if ($connection->aborted()) { $self->cleanup; return; }  
     if (! defined($current_course) ||      if (! defined($current_course) ||
         $current_course ne $ENV{'request.course.id'} ||          $current_course ne $env{'request.course.id'} ||
         ! @Sequences ) {          ! @Sequences ) {
         $current_course = $ENV{'request.course.id'};          $current_course = $env{'request.course.id'};
         &clear_package();          &clear_package();
         &initialize_sequence_cache();          &initialize_sequence_cache();
     }      }
Line 515  sub compute { Line 520  sub compute {
     my %c = $self->constants();      my %c = $self->constants();
     foreach my $seq (@Sequences) {      foreach my $seq (@Sequences) {
         foreach my $resource (&get_resources($seq)) {          foreach my $resource (&get_resources($seq)) {
             if ($connection->aborted()) { $self->cleanup(); return; }  
             my $rownum = $self->get_row_number_from_key($resource->symb);              my $rownum = $self->get_row_number_from_key($resource->symb);
             my $cell = 'A'.$rownum;              my $cell = 'A'.$rownum;
             my $assess_filename = 'Default';              my $assess_filename = 'Default';
Line 525  sub compute { Line 529  sub compute {
                 $self->{'row_source'}->{$rownum} = $assess_filename;                  $self->{'row_source'}->{$rownum} = $assess_filename;
             }              }
             $f{$cell} = $resource->symb.'__&&&__'.$assess_filename;              $f{$cell} = $resource->symb.'__&&&__'.$assess_filename;
             if ($connection->aborted()) { $self->cleanup(); return; }  
             my $assessSheet;              my $assessSheet;
                 $assessSheet = Apache::assesscalc->new($self->{'name'},                  $assessSheet = Apache::assesscalc->new($self->{'name'},
                                                        $self->{'domain'},                                                         $self->{'domain'},
Line 539  sub compute { Line 542  sub compute {
                 $assessSheet->get_title(),$rownum,$assessSheet->calcerror()));                  $assessSheet->get_title(),$rownum,$assessSheet->calcerror()));
             }              }
             #              #
             if ($connection->aborted()) { $self->cleanup(); return; }  
             if ($assessSheet->blackout()) {              if ($assessSheet->blackout()) {
                 $self->blackout(1);                  $self->blackout(1);
                 $self->{'blackout_rows'}->{$rownum} = 1;                  $self->{'blackout_rows'}->{$rownum} = 1;
Line 632  These rows are saved in the courses dire Line 634  These rows are saved in the courses dire
 sub load_cached_export_rows {  sub load_cached_export_rows {
     undef(%Exportrows);      undef(%Exportrows);
     my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets',      my @tmp = &Apache::lonnet::dump('nohist_calculatedsheets',
      $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},       $env{'course.'.$env{'request.course.id'}.'.domain'},
      $ENV{'course.'.$ENV{'request.course.id'}.'.num'},undef);       $env{'course.'.$env{'request.course.id'}.'.num'},undef);
     my %Selected_Assess_Sheet;      my %Selected_Assess_Sheet;
     if ($tmp[0] =~ /^error/) {      if ($tmp[0] =~ /^error/) {
         &Apache::lonnet::logthis('unable to read cached student export rows '.          &Apache::lonnet::logthis('unable to read cached student export rows '.
                                  'for course '.$ENV{'request.course.id'});                                   'for course '.$env{'request.course.id'});
         return;          return;
     }      }
     my %tmp = @tmp;      my %tmp = @tmp;

Removed from v.1.29  
changed lines
  Added in v.1.32


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