--- loncom/interface/statistics/lonstudentsubmissions.pm 2011/09/19 04:02:20 1.63 +++ 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 2011/09/19 04:02:20 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 # @@ -30,11 +30,11 @@ use strict; use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon(); -use Apache::lonquickgrades(); use Apache::loncoursedata(); use Apache::lonstatistics; use Apache::lonlocal; use Apache::lonstathelpers; +use Apache::lonmsgdisplay(); use HTML::Entities(); use Time::Local(); use Spreadsheet::WriteExcel(); @@ -62,8 +62,6 @@ sub BuildStudentSubmissionsPage { # &Apache::lonstatistics::PrepareClasslist(); # - $r->print( &Apache::lonhtmlcommon::breadcrumbs('Student Submission Reports')); - &Apache::lonquickgrades::startGradeScreen($r,'statistics'); $r->print(&CreateInterface()); # my @Students = @Apache::lonstatistics::Students; @@ -324,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; @@ -839,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 @@ -897,9 +881,6 @@ sub prepare_excel_output { 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,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')); @@ -1109,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; @@ -1127,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); @@ -1218,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').'"'; } @@ -1279,6 +1265,7 @@ sub CreateInterface { ## ## Environment variable initialization my $Str = ''; + $Str .= &Apache::lonhtmlcommon::breadcrumbs('Student Submission Reports'); $Str .= '
'; $Str .= &Apache::loncommon::start_data_table(); $Str .= &Apache::loncommon::start_data_table_header_row(); @@ -1367,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__