version 1.6, 2005/03/17 19:02:45
|
version 1.7, 2005/03/18 00:20:44
|
Line 38 use Spreadsheet::WriteExcel;
|
Line 38 use Spreadsheet::WriteExcel;
|
use HTML::Entities(); |
use HTML::Entities(); |
use Time::Local(); |
use Time::Local(); |
|
|
my @SubmitButtons = ({ name => 'PrevProblem', |
my @SubmitButtons = ( |
|
{ name => 'break'}, |
|
{ name => 'PrevProblem', |
text => 'Previous Survey' }, |
text => 'Previous Survey' }, |
{ name => 'NextProblem', |
{ name => 'NextProblem', |
text => 'Next Survey' }, |
text => 'Next Survey' }, |
{ name => 'break'}, |
|
{ name => 'SelectAnother', |
{ name => 'SelectAnother', |
text => 'Choose a different Survey Problem' }, |
text => 'Choose a different Survey' }, |
|
{ name => 'break'}, |
{ name => 'Generate', |
{ name => 'Generate', |
text => 'Generate Report'}, |
text => 'Generate Report'}, |
); |
); |
Line 77 sub BuildSurveyReportsPage {
|
Line 79 sub BuildSurveyReportsPage {
|
# |
# |
if (exists($ENV{'form.problemchoice'}) && |
if (exists($ENV{'form.problemchoice'}) && |
! exists($ENV{'form.SelectAnother'})) { |
! exists($ENV{'form.SelectAnother'})) { |
|
$r->print(' 'x3); |
foreach my $button (@SubmitButtons) { |
foreach my $button (@SubmitButtons) { |
if ($button->{'name'} eq 'break') { |
if ($button->{'name'} eq 'break') { |
$r->print("<br />\n"); |
$r->print("<br />\n"); |
Line 92 sub BuildSurveyReportsPage {
|
Line 95 sub BuildSurveyReportsPage {
|
# |
# |
$r->print('<hr />'); |
$r->print('<hr />'); |
$r->print('<h4>'. |
$r->print('<h4>'. |
|
&Apache::lonlocal::locallocaltime(time).','. |
&Apache::lonstatistics::section_and_enrollment_description(). |
&Apache::lonstatistics::section_and_enrollment_description(). |
'</h4>'); |
'</h4>'); |
$r->rflush(); |
$r->rflush(); |
Line 131 sub BuildSurveyReportsPage {
|
Line 135 sub BuildSurveyReportsPage {
|
$r->rflush(); |
$r->rflush(); |
my %Data = &Apache::lonstathelpers::get_problem_data |
my %Data = &Apache::lonstathelpers::get_problem_data |
($resource->src); |
($resource->src); |
&Compile_Student_Answers($current_problem,\%Data,\@Students); |
&compile_student_answers($r,$current_problem,\%Data,\@Students); |
if ($ENV{'form.output'} eq 'HTML' || |
if ($ENV{'form.output'} eq 'HTML' || |
! defined($ENV{'form.output'})) { |
! defined($ENV{'form.output'})) { |
&make_HTML_report($r,$current_problem,\%Data,\@Students); |
&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); |
&make_Excel_report($r,$current_problem,\%Data,\@Students); |
|
} elsif ($ENV{'form.output'} eq 'TXT') { |
|
&make_text_report($r,$current_problem,\%Data,\@Students); |
} |
} |
} |
} |
$r->print('<hr />'); |
$r->print('<hr />'); |
Line 215 sub SurveyProblemSelector {
|
Line 221 sub SurveyProblemSelector {
|
## |
## |
######################################################### |
######################################################### |
######################################################### |
######################################################### |
sub Compile_Student_Answers { |
sub compile_student_answers { |
my ($problem,$ProblemData,$Students) = @_; |
my ($r,$problem,$ProblemData,$Students) = @_; |
my $resource = $problem->{'resource'}; |
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 $student (@$Students) { |
foreach my $partid (@{$resource->parts}) { |
foreach my $partid (@{$resource->parts}) { |
my @response_ids = $resource->responseIds($partid); |
my @response_ids = $resource->responseIds($partid); |
Line 258 sub Compile_Student_Answers {
|
Line 268 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('<script>'. |
|
'window.document.Statistics.stats_status.value="'. |
|
&mt('Building text document.'). |
|
'";</script>'); |
|
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('<p><a href="'.$filename.'">'. |
|
&mt('Your text file.'). |
|
'</a></p>'."\n"); |
|
$r->print('<script>'. |
|
'window.document.Statistics.stats_status.value="'. |
|
&mt('Done compiling text file. See link below to download.'). |
|
'";</script>'); |
|
} else { |
|
$r->print('<h2>'. |
|
&mt("There is no essay or string response data to output for this survey.").'</h2>'); |
|
} |
|
$r->rflush(); |
return; |
return; |
} |
} |
|
|
|
|
######################################################### |
######################################################### |
######################################################### |
######################################################### |
## |
## |
Line 519 sub CreateInterface {
|
Line 595 sub CreateInterface {
|
$ENV{'form.output'} = 'HTML'; |
$ENV{'form.output'} = 'HTML'; |
} |
} |
foreach my $output_format ( {name=>'HTML',text=>&mt("HTML") }, |
foreach my $output_format ( {name=>'HTML',text=>&mt("HTML") }, |
{name=>'Excel',text=>&mt("Excel") }) { |
{name=>'Excel',text=>&mt("Excel") }, |
|
{name=>'TXT',text=>&mt("Text (essays only)") }, |
|
) { |
$output_selector.='<option value="'.$output_format->{'name'}.'"'; |
$output_selector.='<option value="'.$output_format->{'name'}.'"'; |
if ($ENV{'form.output'} eq $output_format->{'name'}) { |
if ($ENV{'form.output'} eq $output_format->{'name'}) { |
$output_selector.=' selected'; |
$output_selector.=' selected'; |