--- loncom/interface/statistics/lonstudentsubmissions.pm	2011/09/19 04:02:20	1.63
+++ loncom/interface/statistics/lonstudentsubmissions.pm	2011/12/21 21:25:51	1.66
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstudentsubmissions.pm,v 1.63 2011/09/19 04:02:20 raeburn Exp $
+# $Id: lonstudentsubmissions.pm,v 1.66 2011/12/21 21:25:51 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -35,6 +35,7 @@ use Apache::loncoursedata();
 use Apache::lonstatistics;
 use Apache::lonlocal;
 use Apache::lonstathelpers;
+use Apache::lonmsgdisplay();
 use HTML::Entities();
 use Time::Local();
 use Spreadsheet::WriteExcel();
@@ -324,25 +325,16 @@ sub prepare_html_output {
     my @extra_resp_headers = &get_extra_response_headers($show_named);
     #
     # Create the table header
-    my @student_columns;
-    if ($show_named) {
-        @student_columns = @Apache::lonstatistics::SelectedStudentData;
-        if (grep(/^all$/,@student_columns)) {
-            @student_columns = qw(fullname username domain id section status groups comments);
-        }
-    } else {
-        @student_columns = ('username');
-    }
-    #
+    my @student_columns = &get_student_columns($show_named);
     my %headers;
     my $student_column_count = scalar(@student_columns);
     $headers{'problem'} = qq{<th colspan="$student_column_count">\&nbsp;</th>};
-    foreach (@student_columns) {
-        $headers{'student'}.= '<th>'.ucfirst($_).'</th>';
+    foreach my $field (@student_columns) {
+        $headers{'student'}.= '<th>'.ucfirst($field).'</th>';
     }
     #
     # we put the headers into the %headers hash
-    my $total_col = scalar(@student_columns);
+    my $total_col = $student_column_count;
     my $nonempty_part_headers = 0;
     #
     my %problem_analysis;
@@ -839,14 +831,9 @@ sub prepare_excel_output {
     $worksheet->write($partid_row,0,'Part ID',$format->{'bold'});
     $worksheet->write($respid_row,0,'Response ID',$format->{'bold'});
     # Student headers
-    my @StudentColumns;
-    if ($show_named) {
-        @StudentColumns = qw(username domain id section);
-    } else {
-         @StudentColumns = qw(username);
-    }
-    foreach (@StudentColumns) {
-        $worksheet->write($header_row,$cols_output++,ucfirst($_),
+    my @StudentColumns = &get_student_columns($show_named);
+    foreach my $field (@StudentColumns) {
+        $worksheet->write($header_row,$cols_output++,ucfirst($field),
                           $format->{'bold'});
     }
     # Problem headers
@@ -888,18 +875,12 @@ sub prepare_excel_output {
     }
     #
     # Populate the worksheet with the student data
-    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
-        ($r,'Excel File Compilation Status',
-         'Excel File Compilation Progress', 
-         scalar(@$Students),'inline',undef,'Statistics','stats_status');
+    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$Students));
     my $max_row = $rows_output;
     foreach my $student (@$Students) {
         last if ($c->aborted());
         $cols_output = 0;
         my $student_row = $max_row;
-        foreach my $field (@StudentColumns) {
-            $cols_output ++;
-        }
         foreach my $prob (@$Problems) {
             my $symb = $prob->symb();
             foreach my $partid (@{$prob->parts}) {
@@ -959,16 +940,19 @@ sub prepare_excel_output {
             my $cols = 0;
             foreach my $field (@StudentColumns) {
                 if ($show_named) {
-                    $worksheet->write($row,$cols++,
-                                      $student->{$field});
+                    my $value = $student->{$field};
+                    if ($field eq 'comments') {
+                        $value = &Apache::lonmsgdisplay::retrieve_instructor_comments
+                                 ($student->{'username'},$student->{'domain'});
+                    }
+                    $worksheet->write($row,$cols++,$value);
                 } else {
                     $worksheet->write($row,$cols++,
                                       &mt('Anonymized'));
                 }
             }
         }
-        &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
-                                                 'last student');
+        &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,'last student');
     }
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
     #
@@ -1081,10 +1065,7 @@ sub prepare_csv_output {
               &mt('Generating CSV report of student responses').'</h2>');
     #
     # Progress window
-    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
-        ($r,'CSV File Compilation Status',
-         'CSV File Compilation Progress', 
-         scalar(@$students),'inline',undef,'Statistics','stats_status');
+    my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$students));
     
     $r->rflush();
     #
@@ -1109,12 +1090,7 @@ sub prepare_csv_output {
     my @extra_resp_headers = &get_extra_response_headers($show_named);
     #
     # Create the table header
-    my @student_columns = ('username','domain','id','section');
-    if ($show_named) {
-        @student_columns = qw(username domain id section);
-    } else {
-        @student_columns = qw(username);
-    }
+    my @student_columns = &get_student_columns($show_named);
     my $student_column_count = scalar(@student_columns);
     #
     my %headers;
@@ -1127,7 +1103,7 @@ sub prepare_csv_output {
     # we put the headers into the %headers hash
     my %problem_analysis;
     my %start_col;
-    my $max_column = scalar(@student_columns);
+    my $max_column = $student_column_count;
     foreach my $prob (@$problems) {
         my $symb = $prob->symb();
         my %analysis = &Apache::lonstathelpers::get_problem_data($prob->src);
@@ -1218,9 +1194,15 @@ sub prepare_csv_output {
         foreach my $row (@rows) {
             my $student_row_data = '';
             if ($show_named) {
-                $student_row_data = '"'.join('","',
-                                        map { $student->{$_}; }
-                                        @student_columns).'"';
+                foreach my $field (@student_columns) {
+                    my $value = $student->{$field};
+                    if ($field eq 'comments') {
+                        $value = &Apache::lonmsgdisplay::retrieve_instructor_comments
+                                 ($student->{'username'},$student->{'domain'});
+                    }
+                    $student_row_data .= '"'.&Apache::loncommon::csv_translate($value).'",';
+                }
+                $student_row_data =~ s/,$//;
             } else {
                 $student_row_data = '"'.&mt('Anonymized').'"';
             }
@@ -1233,8 +1215,7 @@ sub prepare_csv_output {
             print $outputfile $/;
         }
         undef(@rows);
-        &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
-                                                 'last student');
+        &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,'last student');
     }
     close($outputfile);
     #
@@ -1358,15 +1339,23 @@ sub CreateInterface {
     $Str .= &Apache::loncommon::end_data_table_row();
     $Str .= &Apache::loncommon::end_data_table();
     #
-    $Str .= '<p><span class="LC_nobreak">'
-           .&mt('Status: [_1]',
-                    '<input type="text" name="stats_status"'
-                   .' size="60" value="" readonly="readonly" />')
-           .'</span></p>';
-    ##
     return $Str;
 }
 
+sub get_student_columns {
+    my ($show_named) = @_; 
+    my @student_columns;
+    if ($show_named) {
+        @student_columns = @Apache::lonstatistics::SelectedStudentData;
+        if (grep(/^all$/,@student_columns)) {
+            @student_columns = qw(fullname username domain id section status groups comments);
+        }
+    } else {
+        @student_columns = ('username');
+    }
+    return @student_columns;
+} 
+
 1;
 
 __END__