Diff for /loncom/interface/spreadsheet/studentcalc.pm between versions 1.35 and 1.42

version 1.35, 2005/08/26 20:46:46 version 1.42, 2006/12/21 02:54:19
Line 59  use Apache::assesscalc(); Line 59  use Apache::assesscalc();
 use HTML::Entities();  use HTML::Entities();
 use Time::HiRes;  use Time::HiRes;
 use Apache::lonlocal;  use Apache::lonlocal;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
    
   
 @Apache::studentcalc::ISA = ('Apache::Spreadsheet');  @Apache::studentcalc::ISA = ('Apache::Spreadsheet');
   
Line 271  END Line 274  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 283  END Line 295  END
                     '<a href="/adm/assesscalc?sname='.$self->{'name'}.                      '<a href="/adm/assesscalc?sname='.$self->{'name'}.
                     '&sdomain='.$self->{'domain'}.                      '&sdomain='.$self->{'domain'}.
                     '&filename='.$assess_filename.                      '&filename='.$assess_filename.
                     '&usymb='.&Apache::lonnet::escape($resource->symb).                      '&usymb='.&escape($resource->symb).
                     '">'.$resource->compTitle.'</a><br />';                      '">'.$resource->compTitle.'</a><br />';
                 $row_output .= &assess_file_selector($rownum,                  $row_output .= &assess_file_selector($rownum,
                                                      $assess_filename,                                                       $assess_filename,
Line 291  END Line 303  END
                                                          '</td>';                                                           '</td>';
             } else {              } else {
                 $row_output .= '<td><a href="'.$resource->src.'?symb='.                  $row_output .= '<td><a href="'.$resource->src.'?symb='.
                     &Apache::lonnet::escape($resource->symb).                      &escape($resource->symb).
                     '">Go&nbsp;To</a>';                      '">Go&nbsp;To</a>';
                 $row_output .= '</td><td>'.$resource->compTitle.'</td>';                  $row_output .= '</td><td>'.$resource->compTitle.'</td>';
             }              }
Line 328  sub assess_file_selector { Line 340  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 371  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;
       } else {
           $self->set_formula($cell,$formula);
     }      }
     $self->set_formula($cell,$formula);  
     $self->rebuild_stats();      $self->rebuild_stats();
     return;      return;
 }  }
Line 513  sub compute { Line 554  sub compute {
     }      }
     $self->initialize_safe_space();      $self->initialize_safe_space();
     &Apache::assesscalc::initialize_package($self->{'name'},$self->{'domain'},      &Apache::assesscalc::initialize_package($self->{'name'},$self->{'domain'},
                                             $navmap);                                              $navmap,$self);
     my %f = $self->formulas();      my %f = $self->formulas();
     #      #
     # Process the formulas list -       # Process the formulas list - 
Line 534  sub compute { Line 575  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->{'groups'});
             my @exportdata = $assessSheet->export_data($r);              my @exportdata = $assessSheet->export_data($r);
             #              #
             if ($assessSheet->badcalc()) {              if ($assessSheet->badcalc()) {

Removed from v.1.35  
changed lines
  Added in v.1.42


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