Diff for /loncom/interface/spreadsheet/studentcalc.pm between versions 1.34 and 1.38

version 1.34, 2005/08/05 20:06:22 version 1.38, 2006/04/06 20:24:13
Line 271  END Line 271  END
     }      }
     foreach my $Sequence (@Sequences) {      foreach my $Sequence (@Sequences) {
  $r->print("<h3>".$Sequence->compTitle."</h3>\n");   $r->print("<h3>".$Sequence->compTitle."</h3>\n");
   
           my @resources = &get_resources($Sequence);
           my $first_rownum =
               $self->get_row_number_from_key($resources[0]->symb);
           my $last_rownum = 
               $self->get_row_number_from_key($resources[-1]->symb);
           $r->print(&assess_file_selector([$first_rownum, $last_rownum],
                                           undef, \@AssessFileNames));
   
   $r->print($tableheader);    $r->print($tableheader);
  foreach my $resource (&get_resources($Sequence)) {   foreach my $resource (@resources) {
     my $rownum = $self->get_row_number_from_key($resource->symb);      my $rownum = $self->get_row_number_from_key($resource->symb);
             my $assess_filename = $self->{'row_source'}->{$rownum};              my $assess_filename = $self->{'row_source'}->{$rownum};
             my $row_output = '<tr>';              my $row_output = '<tr>';
Line 328  sub assess_file_selector { Line 337  sub assess_file_selector {
         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;
       my $source_row = $row;
       if (ref($row)) {
           my ($first_rownum, $last_rownum) = @$row;
           $element_name = "FileSelect_${first_rownum}_${last_rownum}";
           $source_row = "${first_rownum}:${last_rownum}";
       } else {
           $element_name = 'FileSelect_'.$row;
       }
     my $load_dialog = '<select size="1" name="'.$element_name.'" '.      my $load_dialog = '<select size="1" name="'.$element_name.'" '.
         'onchange="'.          'onchange="'.
         "document.sheet.cell.value='source_$row';".          "document.sheet.cell.value='source_${source_row}';".
         "document.sheet.newformula.value=document.sheet.$element_name\.value;".          "document.sheet.newformula.value=document.sheet.$element_name\.value;".
         'document.sheet.submit()" '.'>'."\n";          'document.sheet.submit()" '.'>'."\n";
       if (ref($row)) {
           $load_dialog .= '    <option name="" value="">' .
               &mt("Select spreadsheet for entire sequence")
               . "</option>\n";
       }
     foreach my $file (@{$AssessFiles}) {      foreach my $file (@{$AssessFiles}) {
         $load_dialog .= '    <option name="'.$file.'"';          $load_dialog .= '    <option name="'.$file.'"';
         $load_dialog .= ' selected' if ($default eq $file);          $load_dialog .= ' selected' if ($default eq $file);
Line 346  sub assess_file_selector { Line 368  sub assess_file_selector {
 sub modify_cell {  sub modify_cell {
     my $self = shift;      my $self = shift;
     my ($cell,$formula) = @_;      my ($cell,$formula) = @_;
     if ($cell =~ /^source_(\d+)$/) {  
         # Need to make sure $formula is a valid filename....      my $set_row = sub {
         my $row = $1;          my $row = shift;
         $cell = 'A'.$row;          my $formula = shift;
           my $cell = 'A' . $row;
         $self->{'row_source'}->{$row} = $formula;          $self->{'row_source'}->{$row} = $formula;
         my $original_source = $self->formula($cell);          my $original_source = $self->formula($cell);
         if ($original_source =~ /__&&&__/) {          if ($original_source =~ /__&&&__/) {
             ($original_source,undef) = split('__&&&__',$original_source);              ($original_source,undef) = split('__&&&__',$original_source);
         }          }
         $formula = $original_source.'__&&&__'.$formula;          $formula = $original_source.'__&&&__'.$formula;
           $self->set_formula($cell,$formula);
       };
   
       if ($cell =~ /^source_(\d+):(\d+)$/) {
           my $first_row = $1;
           my $last_row = $2;
           for my $row ($first_row..$last_row) {
               $set_row->($row, $formula);
           }
       } elsif ($cell =~ /^source_(\d+)$/) {
           # Need to make sure $formula is a valid filename....
           my $row = $1;
           $set_row->($row, $formula);
     } elsif ($cell =~ /([A-z])\-/) {      } elsif ($cell =~ /([A-z])\-/) {
         $cell = 'template_'.$1;          $cell = 'template_'.$1;
           $self->set_formula($cell,$formula);
     } elsif ($cell !~ /^([A-z](\d+)|template_[A-z])$/) {      } elsif ($cell !~ /^([A-z](\d+)|template_[A-z])$/) {
         return;          return;
     }      }
     $self->set_formula($cell,$formula);  
     $self->rebuild_stats();      $self->rebuild_stats();
     return;      return;
 }  }
Line 534  sub compute { Line 570  sub compute {
                 $assessSheet = Apache::assesscalc->new($self->{'name'},                  $assessSheet = Apache::assesscalc->new($self->{'name'},
                                                        $self->{'domain'},                                                         $self->{'domain'},
                                                        $assess_filename,                                                         $assess_filename,
                                                        $resource->symb);                                                         $resource->symb,
          $self->{'section'},
                                                          $self->{'group'});
             my @exportdata = $assessSheet->export_data($r);              my @exportdata = $assessSheet->export_data($r);
             #              #
             if ($assessSheet->badcalc()) {              if ($assessSheet->badcalc()) {
Line 585  sub compute { Line 623  sub compute {
   
 sub set_row_sources {  sub set_row_sources {
     my $self = shift;      my $self = shift;
       $self->check_formulas_loaded();
     while (my ($cell,$value) = each(%{$self->{'formulas'}})) {      while (my ($cell,$value) = each(%{$self->{'formulas'}})) {
         next if ($cell !~ /^A(\d+)$/ || $1 < 1);          next if ($cell !~ /^A(\d+)$/ || $1 < 1);
         my $row = $1;          my $row = $1;
Line 597  sub set_row_sources { Line 636  sub set_row_sources {
   
 sub set_row_numbers {  sub set_row_numbers {
     my $self = shift;      my $self = shift;
       $self->check_formulas_loaded();
     while (my ($cell,$formula) = each(%{$self->{'formulas'}})) {      while (my ($cell,$formula) = each(%{$self->{'formulas'}})) {
         next if ($cell !~ /^A(\d+)/);          next if ($cell !~ /^A(\d+)/);
         my $row = $1;          my $row = $1;

Removed from v.1.34  
changed lines
  Added in v.1.38


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