--- loncom/interface/Attic/lonspreadsheet.pm	2002/11/21 19:05:18	1.146
+++ loncom/interface/Attic/lonspreadsheet.pm	2002/11/26 14:58:41	1.150
@@ -1,5 +1,5 @@
 #
-# $Id: lonspreadsheet.pm,v 1.146 2002/11/21 19:05:18 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.150 2002/11/26 14:58:41 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1317,7 +1317,7 @@ END
     # Print out template row
     ####################################
     my ($rowlabel,@rowdata) = &get_row($sheet,'-');
-    my $row_html = '<tr><td>'.&format_html_rowlabel($rowlabel).'</td>';
+    my $row_html = '<tr><td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>';
     my $num_cols_output = 0;
     foreach my $cell (@rowdata) {
         if ($num_cols_output++ < $num_uneditable) {
@@ -1335,7 +1335,7 @@ END
     # Print out summary/export row
     ####################################
     my ($rowlabel,@rowdata) = &get_row($sheet,'0');
-    $row_html = '<tr><td>'.&format_html_rowlabel($rowlabel).'</td>';
+    $row_html = '<tr><td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>';
     $num_cols_output = 0;
     foreach my $cell (@rowdata) {
         if ($num_cols_output++ < 26) {
@@ -1381,11 +1381,11 @@ END
             '</font></b></td>';
         #
         if ($sheet->{'sheettype'} eq 'classcalc') {
-            $row_html.='<td>'.&format_html_rowlabel($rowlabel).'</td>';
+            $row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>';
             # Output links for each student?
             # Nope, that is already done for us in format_html_rowlabel (for now)
         } elsif ($sheet->{'sheettype'} eq 'studentcalc') {
-            $row_html.='<td>'.&format_html_rowlabel($rowlabel);
+            $row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel);
             $row_html.= '<br>'.
                 '<select name="sel_'.$rownum.'" '.
                     'onChange="changesheet('.$rownum.')">'.
@@ -1399,7 +1399,7 @@ END
             }
             $row_html.='</select></td>';
         } elsif ($sheet->{'sheettype'} eq 'assesscalc') {
-            $row_html.='<td>'.&format_html_rowlabel($rowlabel).'</td>';
+            $row_html.='<td>'.&format_html_rowlabel($sheet,$rowlabel).'</td>';
         }
         #
         my $shown_cells = 0;
@@ -1469,7 +1469,7 @@ sub outsheet_csv   {
     foreach my $rownum (@Rows) {
         my ($rowlabel,@rowdata) = &get_row($sheet,$rownum);
         next if ($rowlabel =~ /^\s*$/);
-        push (@Values,&format_csv_rowlabel($rowlabel));
+        push (@Values,&format_csv_rowlabel($sheet,$rowlabel));
         foreach my $cell (@rowdata) {
             push (@Values,'"'.$cell->{'value'}.'"');
         }
@@ -1638,7 +1638,7 @@ sub export_sheet_as_excel {
     #   Write the summary/export row   #
     ####################################
     my ($rowlabel,@rowdata) = &get_row($sheet,'0');
-    my $label = &format_excel_rowlabel($rowlabel);
+    my $label = &format_excel_rowlabel($sheet,$rowlabel);
     $cols_output = 0;
     $worksheet->write($rows_output,$cols_output++,$label);
     foreach my $cell (@rowdata) {
@@ -1655,7 +1655,7 @@ sub export_sheet_as_excel {
         my ($rowlabel,@rowdata) = &get_row($sheet,$rownum);
         next if ($rowlabel =~ /^[\s]*$/);
         $cols_output = 0;
-        my $label = &format_excel_rowlabel($rowlabel);
+        my $label = &format_excel_rowlabel($sheet,$rowlabel);
         if ( ! $ENV{'form.showall'} &&
              $sheet->{'sheettype'} =~ /^(studentcalc|classcalc)$/) {
             my $row_is_empty = 1;
@@ -2052,18 +2052,22 @@ sub parmval {
 ##                  Row label formatting routines               ##
 ##################################################################
 sub format_html_rowlabel {
+    my $sheet = shift;
     my $rowlabel = shift;
     return '' if ($rowlabel eq '');
     my ($type,$labeldata) = split(':',$rowlabel,2);
     my $result = '';
     if ($type eq 'symb') {
-        my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata);
+        my ($symb,$mapid,$resid,$title) = split(':',$labeldata);
         $symb = &Apache::lonnet::unescape($symb);
         $result = '<a href="/adm/assesscalc?usymb='.$symb.
-            '&uname='.$uname.'&udom='.$udom.
+            '&uname='.$sheet->{'uname'}.'&udom='.$sheet->{'udom'}.
                 '&mapid='.$mapid.'&resid='.$resid.'">'.$title.'</a>';
     } elsif ($type eq 'student') {
         my ($sname,$sdom,$fullname,$section,$id) = split(':',$labeldata);
+        if ($fullname =~ /^\s*$/) {
+            $fullname = $sname.'@'.$sdom;
+        }
         $result ='<a href="/adm/studentcalc?uname='.$sname.
             '&udom='.$sdom.'">';
         $result.=$section.'&nbsp;'.$id."&nbsp;".$fullname.'</a>';
@@ -2076,12 +2080,13 @@ sub format_html_rowlabel {
 }
 
 sub format_csv_rowlabel {
+    my $sheet = shift;
     my $rowlabel = shift;
     return '' if ($rowlabel eq '');
     my ($type,$labeldata) = split(':',$rowlabel,2);
     my $result = '';
     if ($type eq 'symb') {
-        my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata);
+        my ($symb,$mapid,$resid,$title) = split(':',$labeldata);
         $symb = &Apache::lonnet::unescape($symb);
         $result = $title;
     } elsif ($type eq 'student') {
@@ -2097,12 +2102,13 @@ sub format_csv_rowlabel {
 }
 
 sub format_excel_rowlabel {
+    my $sheet = shift;
     my $rowlabel = shift;
     return '' if ($rowlabel eq '');
     my ($type,$labeldata) = split(':',$rowlabel,2);
     my $result = '';
     if ($type eq 'symb') {
-        my ($symb,$uname,$udom,$mapid,$resid,$title) = split(':',$labeldata);
+        my ($symb,$mapid,$resid,$title) = split(':',$labeldata);
         $symb = &Apache::lonnet::unescape($symb);
         $result = $title;
     } elsif ($type eq 'student') {
@@ -2214,7 +2220,7 @@ sub get_student_rowlabels {
         my %assesslist;
         foreach ('Feedback','Evaluation','Tutoring','Discussion') {
             my $symb = '_'.lc($_);
-            $assesslist{$symb} = join(':',('symb',$symb,$uname,$udom,0,0,$_));
+            $assesslist{$symb} = join(':',('symb',$symb,0,0,$_));
         }
         #
         while (my ($key,$srcf) = each(%course_db)) {
@@ -2227,8 +2233,7 @@ sub get_student_rowlabels {
                     &Apache::lonnet::declutter($course_db{'map_id_'.$mapid}).
                         '___'.$resid.'___'.&Apache::lonnet::declutter($srcf);
                 $assesslist{$symb}='symb:'.&Apache::lonnet::escape($symb).':'
-                    .$uname.':'.$udom.':'.$mapid.':'.$resid.':'.
-                        $course_db{'title_'.$id};
+                    .$mapid.':'.$resid.':'.$course_db{'title_'.$id};
             }
         }
         untie(%course_db);
@@ -2316,7 +2321,8 @@ sub updatestudentassesssheet {
     $sheet->{'maxrow'} = 0;
     my %existing=();
     # Now obsolete rows
-    while (my ($cell, $formula) = each (%f)) {
+    foreach my $cell (keys(%f)) {
+        my $formula = $f{$cell};
         next if ($cell !~ /^A(\d+)/);
         $sheet->{'maxrow'} = $1 if ($1 > $sheet->{'maxrow'});
         my ($usy,$ufn)=split(/__&&&\__/,$formula);
@@ -3215,13 +3221,18 @@ ENDSCRIPT
         } 
         $r->print('>'.$mode.'</option>'."\n");
     }
-    if ($sheet->{'sheettype'} eq 'classcalc') {
-        $r->print('<option value="recursive excel"');
-        if ($ENV{'form.output'} eq 'recursive excel') {
-            $r->print(' selected ');
-        } 
-        $r->print(">Multi-Sheet Excel</option>\n");
-    }
+#
+#    Mulit-sheet excel takes too long and does not work at all for large
+#    classes.  Future inclusion of this option may be possible with the
+#    Spreadsheet::WriteExcel::Big and speed improvements.
+#
+#    if ($sheet->{'sheettype'} eq 'classcalc') {
+#        $r->print('<option value="recursive excel"');
+#        if ($ENV{'form.output'} eq 'recursive excel') {
+#            $r->print(' selected ');
+#        } 
+#        $r->print(">Multi-Sheet Excel</option>\n");
+#    }
     $r->print("</select>\n");
     #
     if ($sheet->{'sheettype'} eq 'classcalc') {