--- loncom/interface/spreadsheet/Spreadsheet.pm 2005/09/01 21:52:56 1.56 +++ loncom/interface/spreadsheet/Spreadsheet.pm 2005/10/12 21:48:32 1.57 @@ -1,5 +1,5 @@ # -# $Id: Spreadsheet.pm,v 1.56 2005/09/01 21:52:56 albertel Exp $ +# $Id: Spreadsheet.pm,v 1.57 2005/10/12 21:48:32 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1623,7 +1623,7 @@ sub load { $self->{'row_source'}=$spreadsheets{$cachekey}->{'row_source'}; $self->{'row_numbers'}=$spreadsheets{$cachekey}->{'row_numbers'}; $self->{'maxrow'}=$spreadsheets{$cachekey}->{'maxrow'}; - } else { + } else { # Not cached, need to read if (! defined($filename)) { $formulas = $self->load_system_default_sheet(); @@ -1656,24 +1656,33 @@ sub load { $formulas = $self->load_system_default_sheet(); } } - $filename=$self->filename(); # filename may have changed - $cachekey = join('_',($cnum,$cdom,$stype,$filename)); - if (ref($formulas) eq 'HASH') { - %{$spreadsheets{$cachekey}->{'formulas'}} = %{$formulas}; - } $self->formulas($formulas); $self->set_row_sources(); $self->set_row_numbers(); - if (ref($self->{'row_source'})) { - %{$spreadsheets{$cachekey}->{'row_source'}} = - %{$self->{'row_source'}}; - } - if (ref($self->{'row_numbers'})) { - %{$spreadsheets{$cachekey}->{'row_numbers'}} = - %{$self->{'row_numbers'}}; - } - $spreadsheets{$cachekey}->{'maxrow'} = $self->{'maxrow'}; + $self->cache_sheet($formulas); + } +} + +sub cache_sheet { + my $self = shift; + my $formulas=(@_); + my $stype = $self->{'type'}; + my $cnum = $self->{'cnum'}; + my $cdom = $self->{'cdom'}; + # + my $filename = $self->filename(); + my $cachekey = join('_',($cnum,$cdom,$stype,$filename)); + + if (ref($self->{'formulas'}) eq 'HASH') { + %{$spreadsheets{$cachekey}->{'formulas'}} = %{$formulas}; + } + if (ref($self->{'row_source'})) { + %{$spreadsheets{$cachekey}->{'row_source'}} =%{$self->{'row_source'}}; + } + if (ref($self->{'row_numbers'})) { + %{$spreadsheets{$cachekey}->{'row_numbers'}}=%{$self->{'row_numbers'}}; } + $spreadsheets{$cachekey}->{'maxrow'} = $self->{'maxrow'}; } sub set_row_sources { @@ -1725,9 +1734,8 @@ sub save { my $cnum = $self->{'cnum'}; my $cdom = $self->{'cdom'}; my $filename = $self->{'filename'}; - my $cachekey = join('_',($cnum,$cdom,$stype,$filename)); # Cache new sheet - %{$spreadsheets{$cachekey}->{'formulas'}}=%f; + $self->cache_sheet(\%f); # Write sheet foreach (keys(%f)) { delete($f{$_}) if ($f{$_} eq 'import');