--- loncom/interface/statistics/lonstudentsubmissions.pm 2011/11/18 21:56:19 1.63.2.2 +++ loncom/interface/statistics/lonstudentsubmissions.pm 2011/11/22 01:34:39 1.63.2.3 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonstudentsubmissions.pm,v 1.63.2.2 2011/11/18 21:56:19 raeburn Exp $ +# $Id: lonstudentsubmissions.pm,v 1.63.2.3 2011/11/22 01:34:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,6 +34,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(); @@ -321,25 +322,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{\ }; - foreach (@student_columns) { - $headers{'student'}.= ''.ucfirst($_).''; + foreach my $field (@student_columns) { + $headers{'student'}.= ''.ucfirst($field).''; } # # 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; @@ -836,14 +828,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 @@ -953,8 +940,12 @@ 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')); @@ -1103,12 +1094,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; @@ -1121,7 +1107,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); @@ -1212,9 +1198,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').'"'; } @@ -1362,6 +1354,20 @@ sub CreateInterface { 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__