[LON-CAPA-cvs] cvs: loncom /interface lonspreadsheet.pm

matthew lon-capa-cvs@mail.lon-capa.org
Fri, 22 Nov 2002 19:21:59 -0000


matthew		Fri Nov 22 14:21:59 2002 EDT

  Modified files:              
    /loncom/interface	lonspreadsheet.pm 
  Log:
  Fix a bug which caused the links in student B's spreadsheet to be to 
  student A's assessment spreadsheets.  This required adding the ubiquitous
  $sheet as a parameter to all the format_????_rowlabel functions.
  
  
Index: loncom/interface/lonspreadsheet.pm
diff -u loncom/interface/lonspreadsheet.pm:1.148 loncom/interface/lonspreadsheet.pm:1.149
--- loncom/interface/lonspreadsheet.pm:1.148	Thu Nov 21 14:50:49 2002
+++ loncom/interface/lonspreadsheet.pm	Fri Nov 22 14:21:59 2002
@@ -1,5 +1,5 @@
 #
-# $Id: lonspreadsheet.pm,v 1.148 2002/11/21 19:50:49 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.149 2002/11/22 19:21:59 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1317,7 +1317,7 @@
     # 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 @@
     # 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 @@
             '</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 @@
             }
             $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 @@
     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 @@
     #   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 @@
         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,15 +2052,16 @@
 ##                  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);
@@ -2079,12 +2080,13 @@
 }
 
 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') {
@@ -2100,12 +2102,13 @@
 }
 
 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') {
@@ -2217,7 +2220,7 @@
         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)) {
@@ -2230,8 +2233,7 @@
                     &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);