--- loncom/interface/spreadsheet/assesscalc.pm	2003/05/23 14:08:40	1.6
+++ loncom/interface/spreadsheet/assesscalc.pm	2003/05/23 21:03:29	1.9
@@ -1,5 +1,5 @@
 #
-# $Id: assesscalc.pm,v 1.6 2003/05/23 14:08:40 matthew Exp $
+# $Id: assesscalc.pm,v 1.9 2003/05/23 21:03:29 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -313,18 +313,30 @@ sub parmval {
     return '';
 }
 
+sub get_html_title {
+    my $self = shift;
+    my ($assess_title,$name,$time) = $self->get_title();
+    my $title = '<h1>'.$assess_title.'</h1>'.
+        '<h2>'.$name.', '.
+        &Apache::loncommon::aboutmewrapper
+                         ($self->{'name'}.'@'.$self->{'domain'},
+                          $self->{'name'},$self->{'domain'});
+    $title .= '<h3>'.$time.'</h3>';
+    return $title;
+}
+
 sub get_title {
     my $self = shift;
-    my $title;
+    my @title = ();
     if (($self->{'usymb'} eq '_feedback') ||
         ($self->{'usymb'} eq '_evaluation') ||
         ($self->{'usymb'} eq '_discussion') ||
         ($self->{'usymb'} eq '_tutoring')) {
-        $title = $self->{'usymb'};
-        $title =~ s/^_//;
-        $title = '<h1>'.ucfirst($title)."</h1>\n";
+        my $assess_title = ucfirst($self->{'usymb'});
+        $assess_title =~ s/^_//;
+        push(@title,$assess_title);
     } else {
-        $title = '<h1>'.&Apache::lonnet::gettitle($self->{'symb'})."</h1>\n";
+        push(@title,&Apache::lonnet::gettitle($self->{'symb'}));
     }
     # Look up the users identifying information
     # Get the users information
@@ -333,13 +345,9 @@ sub get_title {
     my $name = 
         join(' ',@userenv{'firstname','middlename','lastname','generation'});
     $name =~ s/\s+$//;
-    $title .= '<h2>'.$name.', '.
-        &Apache::loncommon::aboutmewrapper($self->{'name'}.'@'.$self->{'domain'},
-                                           $self->{'name'},$self->{'domain'}).
-                                           "</h2>\n";
-    $title .= '<h3>'.localtime(time).'</h3>';
-    #
-    return $title;
+    push (@title,$name);
+    push (@title,scalar(localtime(time)));
+    return @title;
 }
 
 sub parent_link {
@@ -405,7 +413,7 @@ END
     }
     #
     my $num_output = 0;
-    foreach my $rownum ($self->rows()) {
+    foreach my $rownum (sort {$a <=> $b} ($self->rows())) {
 	if ($num_output++ % 50 == 0) {
 	    $r->print("</table>\n".$tableheader);
 	}
@@ -419,7 +427,6 @@ END
 sub assess_html_row {
     my $self = shift();
     my ($num_uneditable,$row) = @_;
-    my $requester_is_student = ($ENV{'request.role'} =~ /^st\./);
     my $parameter_name = $self->{'formulas'}->{'A'.$row};
     my @rowdata = $self->get_row($row);
     my $num_cols_output = 0;
@@ -432,34 +439,60 @@ sub assess_html_row {
         $row_html .= '<td>'.$parameter_name.'</td>';
     }
     foreach my $cell (@rowdata) {
-	if ($requester_is_student || 
-	    $num_cols_output++ < $num_uneditable) {
-	    $row_html .= '<td bgcolor="#FFDDDD">';
-	    $row_html .= &Apache::Spreadsheet::html_uneditable_cell($cell,'#FFDDDD');
-	} else {
-	    $row_html .= '<td bgcolor="#EOFFDD">';
-	    $row_html .= &Apache::Spreadsheet::html_editable_cell($cell,'#E0FFDD');
-	}
+        $row_html .= '<td bgcolor="#EOFFDD">';
+        $row_html .= &Apache::Spreadsheet::html_editable_cell($cell,'#E0FFDD');
 	$row_html .= '</td>';
     }
     return $row_html;
 }
 
-sub outsheet_csv {
-    my $self = shift;
-    my ($r)=@_;
-}
-
-sub outsheet_excel {
-    my $self = shift;
-    my ($r)=@_;
+sub csv_rows {
+    # writes the meat of the spreadsheet to an excel worksheet.  Called
+    # by Spreadsheet::outsheet_excel;
+    my $self = shift;
+    my ($filehandle) = @_;
+    #
+    # Write a header row
+    $self->csv_output_row($filehandle,undef,
+                          ('Parameter','Description','Value'));
+    #
+    # Write each row
+    foreach my $rownum (sort {$a <=> $b} ($self->rows())) {
+        my $parameter_name = $self->{'formulas'}->{'A'.$rownum};
+        my $description = '';
+        if (exists($nice_parameter_name{$parameter_name})) {
+            $description = $nice_parameter_name{$parameter_name};
+        }
+        $self->csv_output_row($filehandle,$rownum,
+                              $parameter_name,$description);
+    }
+    return;
 }
 
-sub display {
-    my $self = shift;
-    my ($r) = @_;
-    $self->compute();
-    $self->outsheet_html($r);
+sub excel_rows {
+    # writes the meat of the spreadsheet to an excel worksheet.  Called
+    # by Spreadsheet::outsheet_excel;
+    my $self = shift;
+    my ($worksheet,$cols_output,$rows_output) = @_;
+    #
+    # Write a header row
+    $cols_output = 0;
+    foreach my $value ('Parameter','Description','Value') {
+        $worksheet->write($rows_output,$cols_output++,$value);
+    }
+    $rows_output++;    
+    #
+    # Write each row
+    foreach my $rownum (sort {$a <=> $b} ($self->rows())) {
+        my $parameter_name = $self->{'formulas'}->{'A'.$rownum};
+        my $description = '';
+        if (exists($nice_parameter_name{$parameter_name})) {
+            $description = $nice_parameter_name{$parameter_name};
+        }
+        $self->excel_output_row($worksheet,$rownum,$rows_output++,
+                                $parameter_name,$description);
+    }
+    return;
 }
 
 sub compute {
@@ -697,6 +730,7 @@ Writes the export data for this spreadsh
 #############################################
 sub save_export_data {
     my $self = shift;
+    return if ($self->temporary());
     my $student = $self->{'name'}.':'.$self->{'domain'};
     my $symb    = $self->{'symb'};
     if (! exists($Exportrows{$symb}) ||