version 1.7, 2005/03/18 00:20:44
|
version 1.13, 2006/05/30 12:46:50
|
Line 27
|
Line 27
|
package Apache::lonsurveyreports; |
package Apache::lonsurveyreports; |
|
|
use strict; |
use strict; |
use Apache::lonnet(); |
use Apache::lonnet; |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::loncoursedata(); |
use Apache::loncoursedata(); |
Line 37 use Apache::lonstathelpers;
|
Line 37 use Apache::lonstathelpers;
|
use Spreadsheet::WriteExcel; |
use Spreadsheet::WriteExcel; |
use HTML::Entities(); |
use HTML::Entities(); |
use Time::Local(); |
use Time::Local(); |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
|
|
|
my @SubmitButtons = ( |
my @SubmitButtons = ( |
{ name => 'break'}, |
{ name => 'break'}, |
Line 77 sub BuildSurveyReportsPage {
|
Line 80 sub BuildSurveyReportsPage {
|
&Apache::lonstathelpers::manage_caches($r,'Statistics','stats_status'); |
&Apache::lonstathelpers::manage_caches($r,'Statistics','stats_status'); |
$r->rflush(); |
$r->rflush(); |
# |
# |
if (exists($ENV{'form.problemchoice'}) && |
if (exists($env{'form.problemchoice'}) && |
! exists($ENV{'form.SelectAnother'})) { |
! exists($env{'form.SelectAnother'})) { |
$r->print(' 'x3); |
$r->print(' 'x3); |
foreach my $button (@SubmitButtons) { |
foreach my $button (@SubmitButtons) { |
if ($button->{'name'} eq 'break') { |
if ($button->{'name'} eq 'break') { |
Line 102 sub BuildSurveyReportsPage {
|
Line 105 sub BuildSurveyReportsPage {
|
# |
# |
# Determine which problem we are to analyze |
# Determine which problem we are to analyze |
my $current_problem = &Apache::lonstathelpers::get_target_from_id |
my $current_problem = &Apache::lonstathelpers::get_target_from_id |
($ENV{'form.problemchoice'}); |
($env{'form.problemchoice'}); |
# |
# |
my ($navmap,$prev,$curr,$next) = |
my ($navmap,$prev,$curr,$next) = |
&Apache::lonstathelpers::get_prev_curr_next($current_problem, |
&Apache::lonstathelpers::get_prev_curr_next($current_problem, |
'.', |
'.', |
'part_survey', |
'part_survey', |
); |
); |
if (exists($ENV{'form.PrevProblem'}) && defined($prev)) { |
if (exists($env{'form.PrevProblem'}) && defined($prev)) { |
$current_problem = $prev; |
$current_problem = $prev; |
} elsif (exists($ENV{'form.NextProblem'}) && defined($next)) { |
} elsif (exists($env{'form.NextProblem'}) && defined($next)) { |
$current_problem = $next; |
$current_problem = $next; |
} else { |
} else { |
$current_problem = $curr; |
$current_problem = $curr; |
} |
} |
# |
# |
# Store the current problem choice and send it out in the form |
# 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); |
&Apache::lonstathelpers::make_target_id($current_problem); |
$r->print('<input type="hidden" name="problemchoice" value="'. |
$r->print('<input type="hidden" name="problemchoice" value="'. |
$ENV{'form.problemchoice'}.'" />'); |
$env{'form.problemchoice'}.'" />'); |
# |
# |
if (! defined($current_problem->{'resource'})) { |
if (! defined($current_problem->{'resource'})) { |
$r->print('resource is undefined'); |
$r->print('resource is undefined'); |
Line 129 sub BuildSurveyReportsPage {
|
Line 132 sub BuildSurveyReportsPage {
|
my $resource = $current_problem->{'resource'}; |
my $resource = $current_problem->{'resource'}; |
$r->print('<h1>'.$resource->compTitle.'</h1>'); |
$r->print('<h1>'.$resource->compTitle.'</h1>'); |
$r->print('<h3>'.$resource->src.'</h3>'); |
$r->print('<h3>'.$resource->src.'</h3>'); |
if ($ENV{'form.renderprob'} eq 'true') { |
if ($env{'form.renderprob'} eq 'true') { |
$r->print(&Apache::lonstathelpers::render_resource($resource)); |
$r->print(&Apache::lonstathelpers::render_resource($resource)); |
} |
} |
$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($r,$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') { |
} elsif ($env{'form.output'} eq 'TXT') { |
&make_text_report($r,$current_problem,\%Data,\@Students); |
&make_text_report($r,$current_problem,\%Data,\@Students); |
} |
} |
} |
} |
Line 197 sub SurveyProblemSelector {
|
Line 200 sub SurveyProblemSelector {
|
respid=>undef, |
respid=>undef, |
resptype=>undef}); |
resptype=>undef}); |
my $checked = ''; |
my $checked = ''; |
if ($ENV{'form.problemchoice'} eq $value) { |
if ($env{'form.problemchoice'} eq $value) { |
$checked = 'checked '; |
$checked = 'checked '; |
} |
} |
my $link = $problem->{'res'}->src. |
my $link = $problem->{'res'}->src. |
'?symb='.&Apache::lonnet::escape($problem->{'res'}->symb); |
'?symb='.&escape($problem->{'res'}->symb); |
$Str .= '<tr><td>'. |
$Str .= '<tr><td>'. |
'<input type="radio" name="problemchoice" id="'.$id.'" '. |
'<input type="radio" name="problemchoice" id="'.$id.'" '. |
'value="'.$value.'" '.$checked.'/>'.'</td>'. |
'value="'.$value.'" '.$checked.'/>'.'</td>'. |
'<td><nobr>'. |
'<td><nobr>'. |
'<label for="'.$id.'">'.$problem->{'res'}->compTitle.'('.$problem->{'seq'}->compTitle.')'.'</lablel>'. |
'<label for="'.$id.'">'.$problem->{'res'}->compTitle.'('.$problem->{'seq'}->compTitle.')'.'</label>'. |
(' 'x2). |
(' 'x2). |
qq{<a target="preview" href="$link">view</a>}.'</td></tr>'.$/; |
qq{<a target="preview" href="$link">view</a>}.'</td></tr>'.$/; |
} |
} |
Line 249 sub compile_student_answers {
|
Line 252 sub compile_student_answers {
|
foreach my $response (@responses) { |
foreach my $response (@responses) { |
my ($foilid,$option) = |
my ($foilid,$option) = |
map { |
map { |
&Apache::lonnet::unescape($_); |
&unescape($_); |
} split('=',$response); |
} split('=',$response); |
$data->{'foil_count'}->{$foilid}++; |
$data->{'foil_count'}->{$foilid}++; |
$data->{'foil_responses'}->{$foilid}->{$option}++; |
$data->{'foil_responses'}->{$foilid}->{$option}++; |
} |
} |
} elsif ($resptype =~ /^(radiobutton)$/) { |
} elsif ($resptype =~ /^(radiobutton)$/) { |
my ($foil,$value) = map { &Apache::lonnet::unescape($_); } split('=',$student_response); |
my ($foil,$value) = map { &unescape($_); } split('=',$student_response); |
$value += 1; # explicitly increment it... |
$value += 1; # explicitly increment it... |
$data->{'foil_responses'}->{$foil}++; |
$data->{'foil_responses'}->{$foil}++; |
$data->{'foil_values'}->{$value}++; |
$data->{'foil_values'}->{$value}++; |
Line 357 sub make_Excel_report {
|
Line 360 sub make_Excel_report {
|
# |
# |
my $rows_output=0; |
my $rows_output=0; |
$worksheet->write($rows_output++,0, |
$worksheet->write($rows_output++,0, |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}, |
$env{'course.'.$env{'request.course.id'}.'.description'}, |
$format->{'h1'}); |
$format->{'h1'}); |
$rows_output++; |
$rows_output++; |
# |
# |
Line 483 sub make_HTML_report {
|
Line 486 sub make_HTML_report {
|
$Str .= '<tr>'. |
$Str .= '<tr>'. |
'<td><b>'.&mt('Total').'</b></td>'. |
'<td><b>'.&mt('Total').'</b></td>'. |
'<td>'.$data->{'_count'}.'</td>'. |
'<td>'.$data->{'_count'}.'</td>'. |
'<td>'.&mt('Part [_1], Response [_2]',$partid,$respid).'</td>'. |
'<td>'.&mt('Part [_1], Response [_2]', |
|
$resource->part_display($partid),$respid).'</td>'. |
'</tr>'; |
'</tr>'; |
if (exists($data->{'responses'}) && |
if (exists($data->{'responses'}) && |
ref($data->{'responses'}) eq 'ARRAY') { |
ref($data->{'responses'}) eq 'ARRAY') { |
Line 591 sub CreateInterface {
|
Line 595 sub CreateInterface {
|
## Environment variable initialization |
## Environment variable initialization |
my $Str = ''; |
my $Str = ''; |
my $output_selector = '<select name="output" size="5">'.$/; |
my $output_selector = '<select name="output" size="5">'.$/; |
if (! exists($ENV{'form.output'})) { |
if (! exists($env{'form.output'})) { |
$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)") }, |
{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'; |
} |
} |
$output_selector.= '>'.$output_format->{'text'}.'</option>'.$/; |
$output_selector.= '>'.$output_format->{'text'}.'</option>'.$/; |
} |
} |
$output_selector .= '</select>'.$/; |
$output_selector .= '</select>'.$/; |
$Str .= &Apache::lonhtmlcommon::breadcrumbs |
$Str .= &Apache::lonhtmlcommon::breadcrumbs('Student Submission Reports'); |
(undef,'Student Submission Reports'); |
|
$Str .= '<p>'; |
$Str .= '<p>'; |
$Str .= '<table cellspacing="5">'."\n"; |
$Str .= '<table cellspacing="5">'."\n"; |
$Str .= '<tr>'; |
$Str .= '<tr>'; |
$Str .= '<th>'.&mt('Sections').'</th>'; |
$Str .= '<th>'.&mt('Sections').'</th>'; |
|
$Str .= '<th>'.&mt('Groups').'</th>'; |
$Str .= '<th>'.&mt('Enrollment Status').'</th>'; |
$Str .= '<th>'.&mt('Enrollment Status').'</th>'; |
$Str .= '<th>'.&mt('Output Format').'</th>'; |
$Str .= '<th>'.&mt('Output Format').'</th>'; |
$Str .= '<th>'.' '.'</th>'; |
$Str .= '<th>'.' '.'</th>'; |
Line 620 sub CreateInterface {
|
Line 624 sub CreateInterface {
|
$Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); |
$Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); |
$Str .= '</td>'; |
$Str .= '</td>'; |
# |
# |
|
$Str .= '<td align="center">'."\n"; |
|
$Str .= &Apache::lonstatistics::GroupSelect('Group','multiple',5); |
|
$Str .= '</td>'; |
|
# |
$Str .= '<td align="center">'; |
$Str .= '<td align="center">'; |
$Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); |
$Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); |
$Str .= '</td>'; |
$Str .= '</td>'; |
Line 628 sub CreateInterface {
|
Line 636 sub CreateInterface {
|
# |
# |
# Render problem checkbox |
# Render problem checkbox |
my $prob_checkbox = '<input type="checkbox" name="renderprob" '; |
my $prob_checkbox = '<input type="checkbox" name="renderprob" '; |
if (exists($ENV{'form.renderprob'}) && $ENV{'form.renderprob'} eq 'true') { |
if (exists($env{'form.renderprob'}) && $env{'form.renderprob'} eq 'true') { |
$prob_checkbox .= 'checked '; |
$prob_checkbox .= 'checked '; |
} |
} |
$prob_checkbox .= 'value="true" />'; |
$prob_checkbox .= 'value="true" />'; |