--- loncom/interface/statistics/lonsurveyreports.pm 2005/03/10 00:23:15 1.4
+++ loncom/interface/statistics/lonsurveyreports.pm 2005/03/18 00:20:44 1.7
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonsurveyreports.pm,v 1.4 2005/03/10 00:23:15 matthew Exp $
+# $Id: lonsurveyreports.pm,v 1.7 2005/03/18 00:20:44 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,13 +38,15 @@ use Spreadsheet::WriteExcel;
use HTML::Entities();
use Time::Local();
-my @SubmitButtons = ({ name => 'PrevProblem',
+my @SubmitButtons = (
+ { name => 'break'},
+ { name => 'PrevProblem',
text => 'Previous Survey' },
{ name => 'NextProblem',
text => 'Next Survey' },
- { name => 'break'},
{ name => 'SelectAnother',
- text => 'Choose a different Survey Problem' },
+ text => 'Choose a different Survey' },
+ { name => 'break'},
{ name => 'Generate',
text => 'Generate Report'},
);
@@ -77,6 +79,7 @@ sub BuildSurveyReportsPage {
#
if (exists($ENV{'form.problemchoice'}) &&
! exists($ENV{'form.SelectAnother'})) {
+ $r->print(' 'x3);
foreach my $button (@SubmitButtons) {
if ($button->{'name'} eq 'break') {
$r->print("
\n");
@@ -91,6 +94,10 @@ sub BuildSurveyReportsPage {
}
#
$r->print('
');
+ $r->print(''.
+ &Apache::lonlocal::locallocaltime(time).','.
+ &Apache::lonstatistics::section_and_enrollment_description().
+ '
');
$r->rflush();
#
# Determine which problem we are to analyze
@@ -122,15 +129,20 @@ sub BuildSurveyReportsPage {
my $resource = $current_problem->{'resource'};
$r->print(''.$resource->compTitle.'
');
$r->print(''.$resource->src.'
');
- $r->print(&Apache::lonstathelpers::render_resource($resource));
+ if ($ENV{'form.renderprob'} eq 'true') {
+ $r->print(&Apache::lonstathelpers::render_resource($resource));
+ }
$r->rflush();
my %Data = &Apache::lonstathelpers::get_problem_data
($resource->src);
+ &compile_student_answers($r,$current_problem,\%Data,\@Students);
if ($ENV{'form.output'} eq 'HTML' ||
! defined($ENV{'form.output'})) {
&make_HTML_report($r,$current_problem,\%Data,\@Students);
} elsif ($ENV{'form.output'} eq 'Excel') {
&make_Excel_report($r,$current_problem,\%Data,\@Students);
+ } elsif ($ENV{'form.output'} eq 'TXT') {
+ &make_text_report($r,$current_problem,\%Data,\@Students);
}
}
$r->print('
');
@@ -209,9 +221,13 @@ sub SurveyProblemSelector {
##
#########################################################
#########################################################
-sub Compile_Student_Answers {
- my ($problem,$ProblemData,$Students) = @_;
+sub compile_student_answers {
+ my ($r,$problem,$ProblemData,$Students) = @_;
my $resource = $problem->{'resource'};
+ my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin
+ ($r,'Processing Student Submissions',
+ 'Processing Student Submissions',
+ scalar(@$Students),'inline',undef,'Statistics','stats_status');
foreach my $student (@$Students) {
foreach my $partid (@{$resource->parts}) {
my @response_ids = $resource->responseIds($partid);
@@ -252,10 +268,76 @@ sub Compile_Student_Answers {
}
}
}
+ &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
+ 'last student');
}
+ &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
return;
}
+
+#########################################################
+#########################################################
+##
+## make_text_report
+##
+#########################################################
+#########################################################
+sub make_text_report {
+ my ($r,$problem,$problem_data,$students) = @_;
+ my ($file,$filename) = &Apache::loncommon::create_text_file($r,'txt');
+ if (! defined($file)) { return '';}
+ $r->print('');
+ my $resource = $problem->{'resource'};
+ print $file $resource->compTitle.$/;
+ print $file &Apache::lonstatistics::section_and_enrollment_description().
+ ' '.&mt('Generated on [_1]',&Apache::lonlocal::locallocaltime(time)).
+ $/;
+ my $something_has_been_output = 0;
+ foreach my $partid (@{$resource->parts}) {
+ my @response_ids = $resource->responseIds($partid);
+ my @response_types = $resource->responseType($partid);
+ for (my $i=0;$i<=$#response_ids;$i++) {
+ my $respid = $response_ids[$i];
+ my $resptype = $response_types[$i];
+ my $data = $problem->{'responsedata'}->{$partid}->{$respid};
+ if (exists($data->{'responses'}) &&
+ ref($data->{'responses'}) eq 'ARRAY') {
+ # Essay type response
+ print $file ('-'x40).$/;
+ print $file
+ $resource->part_display($partid).', '.$respid.':'.$resptype.$/;
+ foreach my $submission (@{$data->{'responses'}}) {
+ print $file ('-'x20).$/;
+ $submission =~ s/(\\r\\n|\\n)/\n/g;
+ $submission =~ s/\\(\'|\"|\`)/$1/g;
+ print $file $submission.$/.$/;
+ $something_has_been_output=1;
+ }
+ }
+ }
+ }
+ close($file);
+ if($something_has_been_output) {
+ $r->print(''.
+ &mt('Your text file.').
+ '
'."\n");
+ $r->print('');
+ } else {
+ $r->print(''.
+ &mt("There is no essay or string response data to output for this survey.").'
');
+ }
+ $r->rflush();
+ return;
+}
+
+
#########################################################
#########################################################
##
@@ -265,7 +347,6 @@ sub Compile_Student_Answers {
#########################################################
sub make_Excel_report {
my ($r,$problem,$problem_data,$students) = @_;
- &Compile_Student_Answers($problem,$problem_data,$students);
my ($workbook,$filename,$format) = &Apache::loncommon::create_workbook($r);
if (! defined($workbook)) { return '';}
$r->print('