--- loncom/interface/spreadsheet/studentcalc.pm	2003/05/23 21:03:29	1.7
+++ loncom/interface/spreadsheet/studentcalc.pm	2003/05/29 18:31:27	1.9
@@ -1,5 +1,5 @@
 #
-# $Id: studentcalc.pm,v 1.7 2003/05/23 21:03:29 matthew Exp $
+# $Id: studentcalc.pm,v 1.9 2003/05/29 18:31:27 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -64,12 +64,24 @@ my %Exportrows = ();
 
 my $current_course;
 
+sub initialize {
+    &initialize_sequence_cache();
+}
+
 sub initialize_package {
     $current_course = $ENV{'request.course.id'};
     &initialize_sequence_cache();
     &load_cached_export_rows();
 }
 
+sub ensure_correct_sequence_data {
+    if ($current_course ne $ENV{'request.course.id'}) {
+        &initialize_sequence_cache();
+        $current_course = $ENV{'request.course.id'};
+    }
+    return;
+}
+
 sub initialize_sequence_cache {
     #
     # Set up the sequences and assessments
@@ -373,18 +385,6 @@ sub outsheet_recursive_excel {
     my ($r) = @_;
 } 
 
-sub set_row_sources {
-    my $self = shift;
-    while (my ($cell,$value) = each(%{$self->{'formulas'}})) {
-        next if ($cell !~ /^A(\d+)/ && $1 > 0);
-        my $row = $1;
-        (undef,$value) = split('__&&&__',$value);
-        $value = 'Default' if (! defined($value));
-        $self->{'row_source'}->{$row} = $value;
-    }
-    return;
-}
-
 sub compute {
     my $self = shift;
     $self->logthis('computing');
@@ -462,6 +462,20 @@ sub compute {
     $Exportrows{$student}->{'data'} = \@exportarray;
     # save export row
     $self->save_export_data();
+    #
+    $self->save() if ($self->need_to_save());
+    return;
+}
+
+sub set_row_sources {
+    my $self = shift;
+    while (my ($cell,$value) = each(%{$self->{'formulas'}})) {
+        next if ($cell !~ /^A(\d+)/ && $1 > 0);
+        my $row = $1;
+        (undef,$value) = split('__&&&__',$value);
+        $value = 'Default' if (! defined($value));
+        $self->{'row_source'}->{$row} = $value;
+    }
     return;
 }
 
@@ -473,6 +487,7 @@ sub set_row_numbers {
         next if ($row == 0);
         my ($symb,undef) = split('__&&&__',$formula);
         $self->{'row_numbers'}->{$symb} = $row;
+        $self->{'maxrow'} = $1 if ($1 > $self->{'maxrow'});
     }
 }