Diff for /loncom/interface/spreadsheet/Spreadsheet.pm between versions 1.57 and 1.64

version 1.57, 2005/10/12 21:48:32 version 1.64, 2006/03/05 21:35:10
Line 378  Calls the system EXT function to determi Line 378  Calls the system EXT function to determi
   
 #-------------------------------------------------------  #-------------------------------------------------------
 sub EXT {  sub EXT {
     my ($parameter) = @_;      my ($parameter,$specific_symb) = @_;
     return '' if (! defined($parameter) || $parameter eq '');      return '' if (! defined($parameter) || $parameter eq '');
     $parameter =~ s/^parameter\./resource\./;      $parameter =~ s/^parameter\./resource\./;
     my $value = &Apache::lonnet::EXT($parameter,$symb,$domain,$name,$usection);      if ($specific_symb eq '') { $specific_symb = $symb; }
       my $value = &Apache::lonnet::EXT($parameter,$specific_symb,$domain,$name,
        $usection);
     return $value;      return $value;
 }  }
   
Line 697  sub get_values { Line 699  sub get_values {
  }   }
  return \@values;   return \@values;
     } else {      } else {
  $num = '(\d+)';   $num = '([1-9]\d*)';
     }      }
     if (($la eq '*') || ($ua eq '*')) {      if (($la eq '*') || ($ua eq '*')) {
         $alpha='[A-z]';          $alpha='[A-z]';
Line 720  sub calc { Line 722  sub calc {
  $notfinished=0;   $notfinished=0;
         while (my ($cell,$value) = each(%t)) {          while (my ($cell,$value) = each(%t)) {
             my $old=$sheet_values{$cell};              my $old=$sheet_values{$cell};
             $sheet_values{$cell}=eval $value;              #$sheet_values{$cell}=eval $value;
 #            $errorlog .= $cell.' = '.$old.'->'.$sheet_values{$cell}."\n";  #            $errorlog .= $cell.' = '.$old.'->'.$sheet_values{$cell}."\n";
     if ($@) {      if ($@) {
  undef %sheet_values;   undef %sheet_values;
Line 806  sub expandnamed { Line 808  sub expandnamed {
                 $result.=$thissum.'+';                  $result.=$thissum.'+';
             }               } 
             $result=~s/\+$//;              $result=~s/\+$//;
             return $result;              return '('.$result.')';
         } else {          } else {
     return 0;      return 0;
         }          }
Line 1193  sub display { Line 1195  sub display {
             last;              last;
         }          }
     }      }
       $self->{outputmode} = $outputmode;
     if ($outputmode eq 'html') {      if ($outputmode eq 'html') {
         $self->compute($r);          $self->compute($r);
         $self->outsheet_html($r);          $self->outsheet_html($r);
     } elsif ($outputmode eq 'htmlclasslist') {      } elsif ($outputmode eq 'htmlclasslist') {
         # No computation neccessary...  This is kludgy          # No computation neccessary...  This is kludgy
         $self->outsheet_htmlclasslist($r);          $self->outsheet_htmlclasslist($r);
       } elsif ($outputmode eq 'source') {
           # No computation necessary. Rumor has it that this is some
           # sort of kludge w.r.t. not "computing". It's also
           # a bit of of a kludge that we call "outsheet_html" and 
           # let the 'outputmode' cause the outputting of source.
           $self->outsheet_html($r);
     } elsif ($outputmode eq 'excel') {      } elsif ($outputmode eq 'excel') {
         $self->compute($r);          $self->compute($r);
         $self->outsheet_excel($r);          $self->outsheet_excel($r);
Line 1238  sub html_export_row { Line 1247  sub html_export_row {
     foreach my $cell (@rowdata) {      foreach my $cell (@rowdata) {
         if ($cell->{'name'} =~ /^[A-Z]/) {          if ($cell->{'name'} =~ /^[A-Z]/) {
     $row_html .= '<td bgcolor="'.$color.'">'.      $row_html .= '<td bgcolor="'.$color.'">'.
                 &html_editable_cell($cell,$color,$allowed).'</td>';                  &html_editable_cell($cell,$color,$allowed,
                                       $self->{outputmode} eq 'source').'</td>';
         } else {          } else {
     $row_html .= '<td bgcolor="#DDCCFF">'.      $row_html .= '<td bgcolor="#DDCCFF">'.
                 &html_editable_cell($cell,'#DDCCFF',$allowed).'</td>';                  &html_editable_cell($cell,'#DDCCFF',$allowed,
                                       $self->{outputmode} eq 'source').'</td>';
         }          }
     }      }
     return $row_html;      return $row_html;
Line 1261  sub html_template_row { Line 1272  sub html_template_row {
                 &html_uneditable_cell($cell,'#FFDDDD',$allowed).'</td>';                  &html_uneditable_cell($cell,'#FFDDDD',$allowed).'</td>';
         } else {          } else {
     $row_html .= '<td bgcolor="#EOFFDD">'.      $row_html .= '<td bgcolor="#EOFFDD">'.
                 &html_editable_cell($cell,'#EOFFDD',$allowed).'</td>';                  &html_editable_cell($cell,'#EOFFDD',$allowed,
                                       $self->{outputmode} eq 'source').'</td>';
         }          }
     }      }
     return $row_html;      return $row_html;
 }  }
   
 sub html_editable_cell {  sub html_editable_cell {
     my ($cell,$bgcolor,$allowed) = @_;      my ($cell,$bgcolor,$allowed,$showsource) = @_;
     my $result;      my $result;
     my ($name,$formula,$value);      my ($name,$formula,$value);
     if (defined($cell)) {      if (defined($cell)) {
Line 1278  sub html_editable_cell { Line 1290  sub html_editable_cell {
     }      }
     $name    = '' if (! defined($name));      $name    = '' if (! defined($name));
     $formula = '' if (! defined($formula));      $formula = '' if (! defined($formula));
     if (! defined($value)) {      if ($showsource)
       {
           if (!defined($formula) || $formula =~ /^\s*$/) {
               $value = '<font color="'.$bgcolor.'">#</font>';
           } else {
               $value = &HTML::Entities::encode($formula, '<>&"');
           }
       }
       elsif (! defined($value)) {
         $value = '<font color="'.$bgcolor.'">#</font>';          $value = '<font color="'.$bgcolor.'">#</font>';
         if ($formula ne '') {          if ($formula ne '') {
             $value = '<i>undefined value</i>';              $value = '<i>undefined value</i>';
Line 1331  sub html_row { Line 1351  sub html_row {
     $row_html .= &html_uneditable_cell($cell,'#FFDDDD');      $row_html .= &html_uneditable_cell($cell,'#FFDDDD');
  } else {   } else {
     $row_html .= '<td bgcolor="#EOFFDD">';      $row_html .= '<td bgcolor="#EOFFDD">';
     $row_html .= &html_editable_cell($cell,'#E0FFDD',$allowed);      $row_html .= &html_editable_cell($cell,'#E0FFDD',$allowed,
                                                $self->{outputmode} eq 'source');
  }   }
  $row_html .= '</td>';   $row_html .= '</td>';
     }      }
Line 1355  sub output_options { Line 1376  sub output_options {
               description => 'HTML'},                description => 'HTML'},
              {value       => 'excel',               {value       => 'excel',
               description => 'Excel'},                description => 'Excel'},
                {value       => 'source',
                 description => 'Show Source'},
 #             {value       => 'xml',  #             {value       => 'xml',
 #              description => 'XML'},  #              description => 'XML'},
              {value       => 'csv',               {value       => 'csv',
Line 1665  sub load { Line 1688  sub load {
   
 sub cache_sheet {  sub cache_sheet {
     my $self = shift;      my $self = shift;
     my $formulas=(@_);      my ($formulas) = @_;
     my $stype = $self->{'type'};      my $stype = $self->{'type'};
     my $cnum  = $self->{'cnum'};      my $cnum  = $self->{'cnum'};
     my $cdom  = $self->{'cdom'};      my $cdom  = $self->{'cdom'};
Line 1673  sub cache_sheet { Line 1696  sub cache_sheet {
     my $filename = $self->filename();      my $filename = $self->filename();
     my $cachekey = join('_',($cnum,$cdom,$stype,$filename));      my $cachekey = join('_',($cnum,$cdom,$stype,$filename));
   
     if (ref($self->{'formulas'}) eq 'HASH') {      if (ref($formulas) eq 'HASH') {
  %{$spreadsheets{$cachekey}->{'formulas'}} = %{$formulas};   %{$spreadsheets{$cachekey}->{'formulas'}} = %{$formulas};
     }      }
     if (ref($self->{'row_source'})) {      if (ref($self->{'row_source'})) {

Removed from v.1.57  
changed lines
  Added in v.1.64


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