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

raeburn raeburn at source.lon-capa.org
Mon Nov 21 15:12:36 EST 2011


raeburn		Mon Nov 21 20:12:36 2011 EDT

  Modified files:              
    /loncom/interface/statistics	lonstudentsubmissions.pm 
  Log:
  - Bug 6492.
   - Selections in the multiple select box for "Student Data" generated from 
     &Apache::lonstatistics::StudentDataSelect() are now displayed in the
     output for all Output Formats (HTML, CSV, Excel).
  
  
Index: loncom/interface/statistics/lonstudentsubmissions.pm
diff -u loncom/interface/statistics/lonstudentsubmissions.pm:1.64 loncom/interface/statistics/lonstudentsubmissions.pm:1.65
--- loncom/interface/statistics/lonstudentsubmissions.pm:1.64	Fri Nov 18 21:08:22 2011
+++ loncom/interface/statistics/lonstudentsubmissions.pm	Mon Nov 21 20:12:36 2011
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstudentsubmissions.pm,v 1.64 2011/11/18 21:08:22 raeburn Exp $
+# $Id: lonstudentsubmissions.pm,v 1.65 2011/11/21 20:12:36 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -35,6 +35,7 @@
 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 @@
     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$/, at 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">\ </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 @@
     $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
@@ -956,8 +943,12 @@
             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'));
@@ -1106,12 +1097,7 @@
     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;
@@ -1124,7 +1110,7 @@
     # 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);
@@ -1215,9 +1201,15 @@
         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').'"';
             }
@@ -1364,6 +1356,20 @@
     return $Str;
 }
 
+sub get_student_columns {
+    my ($show_named) = @_; 
+    my @student_columns;
+    if ($show_named) {
+        @student_columns = @Apache::lonstatistics::SelectedStudentData;
+        if (grep(/^all$/, at student_columns)) {
+            @student_columns = qw(fullname username domain id section status groups comments);
+        }
+    } else {
+        @student_columns = ('username');
+    }
+    return @student_columns;
+} 
+
 1;
 
 __END__




More information about the LON-CAPA-cvs mailing list