--- 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{\ }; - 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 +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').''); # # 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 .= '

' - .&mt('Status: [_1]', - '') - .'

'; - ## 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__