');
$r->rflush();
#
# Determine which problem we are to analyze
my $current_problem = &Apache::lonstathelpers::get_target_from_id
- ($ENV{'form.problemchoice'});
+ ($env{'form.problemchoice'});
#
my ($navmap,$prev,$curr,$next) =
&Apache::lonstathelpers::get_prev_curr_next($current_problem,
'.',
'part_survey',
);
- if (exists($ENV{'form.PrevProblem'}) && defined($prev)) {
+ if (exists($env{'form.PrevProblem'}) && defined($prev)) {
$current_problem = $prev;
- } elsif (exists($ENV{'form.NextProblem'}) && defined($next)) {
+ } elsif (exists($env{'form.NextProblem'}) && defined($next)) {
$current_problem = $next;
} else {
$current_problem = $curr;
}
#
# Store the current problem choice and send it out in the form
- $ENV{'form.problemchoice'} =
+ $env{'form.problemchoice'} =
&Apache::lonstathelpers::make_target_id($current_problem);
$r->print('');
+ $env{'form.problemchoice'}.'" />');
#
if (! defined($current_problem->{'resource'})) {
$r->print('resource is undefined');
@@ -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);
- if ($ENV{'form.output'} eq 'HTML' ||
- ! defined($ENV{'form.output'})) {
+ &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') {
+ } 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('');
@@ -185,7 +197,7 @@ sub SurveyProblemSelector {
respid=>undef,
resptype=>undef});
my $checked = '';
- if ($ENV{'form.problemchoice'} eq $value) {
+ if ($env{'form.problemchoice'} eq $value) {
$checked = 'checked ';
}
my $link = $problem->{'res'}->src.
@@ -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('