--- loncom/interface/statistics/lonstudentsubmissions.pm 2011/11/18 21:56:19 1.63.2.2
+++ 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.2.2 2011/11/18 21:56:19 raeburn Exp $
+# $Id: lonstudentsubmissions.pm,v 1.66 2011/12/21 21:25:51 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -30,10 +30,12 @@ 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();
@@ -61,6 +63,8 @@ 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;
@@ -321,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;
@@ -836,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
@@ -885,10 +875,7 @@ 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());
@@ -953,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);
#
@@ -1075,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();
#
@@ -1103,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;
@@ -1121,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);
@@ -1212,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').'"';
}
@@ -1227,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);
#
@@ -1273,7 +1260,6 @@ 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();
@@ -1353,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__