Diff for /loncom/interface/spreadsheet/assesscalc.pm between versions 1.13 and 1.17.2.3

version 1.13, 2003/06/12 21:17:11 version 1.17.2.3, 2003/12/05 22:24:20
Line 48  use Apache::Constants qw(:common :http); Line 48  use Apache::Constants qw(:common :http);
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::Spreadsheet;  use Apache::Spreadsheet;
   use Apache::loncoursedata();
 use HTML::Entities();  use HTML::Entities();
 use Spreadsheet::WriteExcel;  use Spreadsheet::WriteExcel;
 use GDBM_File;  use GDBM_File;
Line 125  sub clear_package { Line 126  sub clear_package {
   
 sub initialize {  sub initialize {
     &clear_package();      &clear_package();
       &Apache::loncoursedata::clear_internal_caches();
 }  }
   
 ########################################################  ########################################################
Line 148  sub initialize_package { Line 150  sub initialize_package {
     }      }
     &load_cached_export_rows();      &load_cached_export_rows();
     &load_parameter_caches();      &load_parameter_caches();
       &Apache::loncoursedata::clear_internal_caches();
 }  }
   
 ########################################################  ########################################################
Line 247  this user and course. Line 250  this user and course.
 ##################################################  ##################################################
 sub parmval {  sub parmval {
     my $self = shift;      my $self = shift;
     my ($what,$symb,$uname,$udom,$csec)=@_;      my ($what,$symb,$uname,$udom,$csec,$recurse)=@_;
     $uname = $self->{'name'}    if (! defined($uname));      $uname = $self->{'name'}    if (! defined($uname));
     $udom  = $self->{'domain'}  if (! defined($udom));      $udom  = $self->{'domain'}  if (! defined($udom));
     $csec  = $self->{'section'} if (! defined($csec));      $csec  = $self->{'section'} if (! defined($csec));
Line 312  sub parmval { Line 315  sub parmval {
  if ($part eq '') { $part='0'; }   if ($part eq '') { $part='0'; }
  my $newwhat=$rwhat;   my $newwhat=$rwhat;
  $newwhat=~s/\Q$space\E/$part/;   $newwhat=~s/\Q$space\E/$part/;
  my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec);   my $partgeneral=$self->parmval($newwhat,$symb,$uname,$udom,$csec,1);
  if (defined($partgeneral)) { return $partgeneral; }   if (defined($partgeneral)) { return $partgeneral; }
     }      }
       if ($recurse) { return undef; }
       my $pack_def=&Apache::lonnet::packages_tab_default($fn,'resource.'.$what);
       if (defined($pack_def)) { return $pack_def; }
     #nothing defined      #nothing defined
     return '';      return '';
 }  }
Line 334  sub get_html_title { Line 340  sub get_html_title {
 sub get_title {  sub get_title {
     my $self = shift;      my $self = shift;
     my @title = ();      my @title = ();
     if (($self->{'usymb'} eq '_feedback') ||      if (($self->{'symb'} eq '_feedback') ||
         ($self->{'usymb'} eq '_evaluation') ||          ($self->{'symb'} eq '_evaluation') ||
         ($self->{'usymb'} eq '_discussion') ||          ($self->{'symb'} eq '_discussion') ||
         ($self->{'usymb'} eq '_tutoring')) {          ($self->{'symb'} eq '_tutoring')) {
         my $assess_title = ucfirst($self->{'usymb'});          my $assess_title = ucfirst($self->{'symb'});
         $assess_title =~ s/^_//;          $assess_title =~ s/^_//;
         push(@title,$assess_title);          push(@title,$assess_title);
     } else {      } else {
Line 368  sub parent_link { Line 374  sub parent_link {
 sub outsheet_html {  sub outsheet_html {
     my $self = shift;      my $self = shift;
     my ($r) = @_;      my ($r) = @_;
       ####################################
       # Report any calculation errors    #
       ####################################
       $r->print($self->html_report_error());
     ###################################      ###################################
     # Determine table structure      # Determine table structure
     ###################################      ###################################
       my $importcolor = '#FFFFFF';
       my $exportcolor = '#FFFFAA';
     my $num_uneditable = 1;      my $num_uneditable = 1;
     my $num_left = 52-$num_uneditable;      my $num_left = 52-$num_uneditable;
     my $tableheader =<<"END";      my $tableheader =<<"END";
 <table border="2">  <table border="2">
 <tr>  <tr>
   <th colspan="2" rowspan="2"><font size="+2">Assessment</font></th>    <th colspan="2" rowspan="2"><font size="+2">Assessment</font></th>
   <td bgcolor="#FFDDDD" colspan="$num_uneditable">&nbsp;</td>    <td bgcolor="$importcolor" colspan="$num_uneditable">&nbsp;</td>
   <td colspan="$num_left">    <td colspan="$num_left">
       <b><font size="+1">Calculations</font></b></td>        <b><font size="+1">Calculations</font></b></td>
 </tr><tr>  </tr><tr>
Line 385  END Line 397  END
     my $label_num = 0;      my $label_num = 0;
     foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){      foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){
         if ($label_num<$num_uneditable) {           if ($label_num<$num_uneditable) { 
             $tableheader .= '<td bgcolor="#FFDDDD">';              $tableheader .= '<td bgcolor="'.$importcolor.'">';
         } else {          } else {
             $tableheader .= '<td>';              $tableheader .= '<td>';
         }          }
Line 398  END Line 410  END
     #      #
     # Print out template row      # Print out template row
     $r->print('<tr><td>Template</td><td>&nbsp;</td>'.      $r->print('<tr><td>Template</td><td>&nbsp;</td>'.
       $self->html_template_row($num_uneditable)."</tr>\n");        $self->html_template_row($num_uneditable,$importcolor).
                 "</tr>\n");
     #      #
     # Print out summary/export row      # Print out summary/export row
     $r->print('<tr><td>Export</td><td>0</td>'.      $r->print('<tr><td>Export</td><td>0</td>'.
       $self->html_export_row()."</tr>\n");        $self->html_export_row($exportcolor)."</tr>\n");
     #      #
     # Prepare to output rows      # Prepare to output rows
     $tableheader =<<"END";      $tableheader =<<"END";
Line 411  END Line 424  END
 END  END
     foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){      foreach (split(//,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')){
  if ($label_num<$num_uneditable) {    if ($label_num<$num_uneditable) { 
             $tableheader.='<th bgcolor="#FFDDDD">';              $tableheader.='<th bgcolor="'.$importcolor.'">';
         } else {          } else {
             $tableheader.='<th>';              $tableheader.='<th>';
         }          }
Line 424  END Line 437  END
     $r->print("</table>\n".$tableheader);      $r->print("</table>\n".$tableheader);
  }   }
  $r->print('<tr><td>'.$rownum.'</td>'.   $r->print('<tr><td>'.$rownum.'</td>'.
                   $self->assess_html_row($rownum)."</tr>\n");                    $self->assess_html_row($rownum,$importcolor)."</tr>\n");
     }      }
     $r->print("</table>\n");      $r->print("</table>\n");
     return;      return;
Line 432  END Line 445  END
   
 sub assess_html_row {  sub assess_html_row {
     my $self = shift();      my $self = shift();
     my ($row) = @_;      my ($row,$importcolor) = @_;
     my $parameter_name = $self->{'formulas'}->{'A'.$row};      my $parameter_name = $self->{'formulas'}->{'A'.$row};
     my @rowdata = $self->get_row($row);      my @rowdata = $self->get_row($row);
     my $num_cols_output = 0;      my $num_cols_output = 0;
Line 446  sub assess_html_row { Line 459  sub assess_html_row {
     }      }
     foreach my $cell (@rowdata) {      foreach my $cell (@rowdata) {
         if ($num_cols_output < 1) {          if ($num_cols_output < 1) {
             $row_html .= '<td bgcolor="#FFDDDD">';              $row_html .= '<td bgcolor="'.$importcolor.'">';
             $row_html .= &Apache::Spreadsheet::html_uneditable_cell($cell,              $row_html .= &Apache::Spreadsheet::html_uneditable_cell($cell,
                                                                     '#FFDDDD');                                                                      '#FFDDDD');
         } else {          } else {
Line 588  sub compute { Line 601  sub compute {
         while (my ($parm,$value) = each(%parameters)) {          while (my ($parm,$value) = each(%parameters)) {
             last if ($self->blackout());              last if ($self->blackout());
             next if ($parm !~ /^(parameter_.*)_problemstatus$/);              next if ($parm !~ /^(parameter_.*)_problemstatus$/);
             next if ($parameters{$1.'_answerdate'}<time);      if ($parameters{$1.'_answerdate'} ne '' &&
    $parameters{$1.'_answerdate'} < time) {
    next;
       }
             if (lc($value) eq 'no') {              if (lc($value) eq 'no') {
                 # We must blackout this sheet                  # We must blackout this sheet
                 $self->blackout(1);                  $self->blackout(1);
Line 732  sub export_data { Line 748  sub export_data {
         ! defined($Exportrows{$symb}->{$self->{'filename'}})) {          ! defined($Exportrows{$symb}->{$self->{'filename'}})) {
         $self->compute();          $self->compute();
     }      }
     my @Data = @{$Exportrows{$symb}->{$self->{'filename'}}};      my @Data;
     if ($Data[0] =~ /^(.*)___=___/) {      if ($self->badcalc()) {
         $self->{'sheetname'} = $1;          @Data = ();
         $Data[0] =~ s/^(.*)___=___//;      } else {
     }          @Data = @{$Exportrows{$symb}->{$self->{'filename'}}};
     for (my $i=0;$i<$#Data;$i++) {          if ($Data[0] =~ /^(.*)___=___/) {
         $Data[$i]="'".$Data[$i]."'" if ($Data[$i]=~/\D/ && defined($Data[$i]));              $self->{'sheetname'} = $1;
               $Data[0] =~ s/^(.*)___=___//;
           }
           for (my $i=0;$i<$#Data;$i++) {
               if ($Data[$i]=~/\D/ && defined($Data[$i])) {
                   $Data[$i]="'".$Data[$i]."'";
               }
           }
     }      }
     return @Data;      return @Data;
 }  }
Line 761  sub save_export_data { Line 784  sub save_export_data {
     return if ($self->temporary());      return if ($self->temporary());
     my $student = $self->{'name'}.':'.$self->{'domain'};      my $student = $self->{'name'}.':'.$self->{'domain'};
     my $symb    = $self->{'symb'};      my $symb    = $self->{'symb'};
       if ($self->badcalc()){
           # do not save data away when calculations have not been done properly.
           delete($Exportrows{$symb});
           return;
       }
     if (! exists($Exportrows{$symb}) ||       if (! exists($Exportrows{$symb}) || 
         ! exists($Exportrows{$symb}->{$self->{'filename'}})) {          ! exists($Exportrows{$symb}->{$self->{'filename'}})) {
         return;          return;

Removed from v.1.13  
changed lines
  Added in v.1.17.2.3


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