--- loncom/interface/statistics/lonsurveyreports.pm 2006/05/30 12:46:50 1.13 +++ loncom/interface/statistics/lonsurveyreports.pm 2011/12/21 21:25:51 1.26 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonsurveyreports.pm,v 1.13 2006/05/30 12:46:50 www Exp $ +# $Id: lonsurveyreports.pm,v 1.26 2011/12/21 21:25:51 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,6 +30,7 @@ use strict; use Apache::lonnet; use Apache::loncommon(); use Apache::lonhtmlcommon(); +use Apache::lonquickgrades(); use Apache::loncoursedata(); use Apache::lonstatistics; use Apache::lonlocal; @@ -63,17 +64,20 @@ sub BuildSurveyReportsPage { ); &Apache::loncommon::store_course_settings('survey_reports', \%Saveable_Parameters); - &Apache::loncommon::restore_course_settings('survey_resports', + &Apache::loncommon::restore_course_settings('survey_reports', \%Saveable_Parameters); # &Apache::lonstatistics::PrepareClasslist(); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Student Submission Reports')); + &Apache::lonquickgrades::startGradeScreen($r,'statistics'); + # $r->print(&CreateInterface()); # my @Students = @Apache::lonstatistics::Students; # if (@Students < 1) { - $r->print('

There are no students in the sections selected

'); + $r->print('

'.&mt('There are no students in the sections selected.').'

'); } # my @CacheButtonHTML = @@ -98,7 +102,7 @@ sub BuildSurveyReportsPage { # $r->print('
'); $r->print('

'. - &Apache::lonlocal::locallocaltime(time).','. + &Apache::lonlocal::locallocaltime(time).', '. &Apache::lonstatistics::section_and_enrollment_description(). '

'); $r->rflush(); @@ -133,7 +137,10 @@ sub BuildSurveyReportsPage { $r->print('

'.$resource->compTitle.'

'); $r->print('

'.$resource->src.'

'); if ($env{'form.renderprob'} eq 'true') { - $r->print(&Apache::lonstathelpers::render_resource($resource)); + $r->print('
' + .&Apache::lonstathelpers::render_resource($resource) + .'
' + ); } $r->rflush(); my %Data = &Apache::lonstathelpers::get_problem_data @@ -174,7 +181,7 @@ sub SurveyProblemSelector { my @resources = &Apache::lonstathelpers::get_resources($navmap,$seq); foreach my $res (@resources) { foreach my $part (@{$res->parts}) { - if ($res->is_survey($part)) { + if (($res->is_survey($part)) || ($res->is_anonsurvey($part))) { push(@SurveyProblems,{res=>$res,seq=>$seq,part=>$part}); last; } @@ -182,9 +189,9 @@ sub SurveyProblemSelector { } } if (! scalar(@SurveyProblems)) { - $Str = '

'. - &mt('There are no survey problems in this course'). - '

'.$/; + $Str = '

'. + &mt('There are no survey problems in this course.'). + '

'.$/; return $Str; } $Str .= ''.$/; @@ -201,17 +208,17 @@ sub SurveyProblemSelector { resptype=>undef}); my $checked = ''; if ($env{'form.problemchoice'} eq $value) { - $checked = 'checked '; + $checked = 'checked="checked" '; } - my $link = $problem->{'res'}->src. - '?symb='.&escape($problem->{'res'}->symb); + my $link = $problem->{'res'}->link. + '?symb='.&escape($problem->{'res'}->shown_symb); $Str .= ''. - ''.$/; + ''.&mt('View survey').''.$/; } $Str .= '
'. ''.''. - ''. + ''. + ''. (' 'x2). - qq{view}.'
'; return $Str; @@ -227,10 +234,7 @@ sub SurveyProblemSelector { 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'); + my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$Students)); foreach my $student (@$Students) { foreach my $partid (@{$resource->parts}) { my @response_ids = $resource->responseIds($partid); @@ -264,6 +268,7 @@ sub compile_student_answers { $data->{'foil_values'}->{$value}++; if (! exists($data->{'map'}->{$value})) { $data->{'map'}->{$value} = $foil; + $data->{'map_fv'}->{$foil} = $value; } } else { # Variable stuff (essays, raw numbers, strings) go here @@ -271,8 +276,7 @@ sub compile_student_answers { } } } - &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); return; @@ -325,16 +329,17 @@ sub make_text_report { } close($file); if($something_has_been_output) { - $r->print('

'. - &mt('Your text file.'). + $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->print('

' + .&mt('There is no essay or string response data to output for this survey.') + .'

'); } $r->rflush(); return; @@ -385,8 +390,8 @@ sub make_Excel_report { my $warned_about_size = 0; foreach my $data (@{$data->{'responses'}}) { if (length($data) > 255 && ! $warned_about_size) { - $r->print('

'. - &mt('[_1]:[_2] responses to [_3] may be too long to fit Excel spreadsheet.', + $r->print('

'. + &mt('[_1]:[_2] responses to [_3] may be too long to fit Excel spreadsheet.', $resource->compTitle, $resource->part_display($partid), $respid). @@ -404,7 +409,7 @@ sub make_Excel_report { $worksheet->write_row($rows_output++,0, \@rowdata,$format->{'h4'}); # - my @foils = sort(keys(%{$data->{'foil_responses'}})); + my @foils = sort(keys(%{$respdata->{'_Foils'}})); foreach my $foilid (@foils) { my $foil_count = $data->{'foil_count'}->{$foilid}; my $foiltext = $respdata->{'_Foils'}->{$foilid}->{'text'}; @@ -432,9 +437,10 @@ sub make_Excel_report { my @rowdata = ('Foil Name','Foil Text','Frequency'); $worksheet->write_row($rows_output++,0, \@rowdata,$format->{'h4'}); - foreach my $value (sort(keys(%{$data->{'foil_values'}}))) { + my @foils = sort(keys(%{$respdata->{'_Foils'}})); + foreach my $foilid (@foils) { undef(@rowdata); - my $foilid = $data->{'map'}->{$value}; + my $value = $data->{'map_fv'}->{$foilid}; push(@rowdata,$respdata->{'_Foils'}->{$foilid}->{'name'}); push(@rowdata,$respdata->{'_Foils'}->{$foilid}->{'text'}); push(@rowdata,$data->{'foil_values'}->{$value}); @@ -445,12 +451,12 @@ sub make_Excel_report { } #response ids } # partids $workbook->close(); - $r->print('

'. + $r->print('

'. &mt('Your Excel spreadsheet.'). '

'."\n"); $r->print(''); $r->rflush(); return; @@ -504,22 +510,25 @@ sub make_HTML_report { } } elsif (exists($data->{'foil_count'}) && exists($data->{'foil_responses'})) { - $Str.=''. - ''; + $Str.='' + .''; - my @foils = sort(keys(%{$data->{'foil_responses'}})); + &mt('Percent'))).'' + .&Apache::loncommon::end_data_table_header_row(); + my @foils = sort(keys(%{$ProblemData->{$partid.'.'.$respid}->{'_Foils'}})); foreach my $foilid (@foils) { my $prob_data = $ProblemData->{$partid.'.'.$respid}; my $foil_count = $data->{'foil_count'}->{$foilid}; my $foiltext = $prob_data->{'_Foils'}->{$foilid}->{'text'}; my $foilname = $prob_data->{'_Foils'}->{$foilid}->{'name'}; my $rowspan = scalar(@{$prob_data->{'_Options'}}); - my $preamble = ''. + my $preamble = &Apache::loncommon::start_data_table_row(). ''. ''. ''.$/; - $preamble = ''; + ''.&Apache::loncommon::end_data_table_row().$/; + $preamble = &Apache::loncommon::continue_data_table_row(); #&Apache::loncommon::start_data_table_row(); } } - $Str.=$tmp.'
' + .&Apache::loncommon::start_data_table() + .&Apache::loncommon::start_data_table_header_row(); my $tmp = ''.join('', (&mt('Foil Name'), &mt('Foil Text'), &mt('Option'), &mt('Frequency'), - &mt('Percent'))).'
'. $foilname.''. @@ -532,11 +541,12 @@ sub make_HTML_report { ''.$count.''. sprintf('%.2f',100*$count/$foil_count).'%'. - '
'; + $Str.=$tmp.&Apache::loncommon::end_data_table() + .''; } elsif (exists($data->{'_count'}) && exists($data->{'foil_values'}) && exists($data->{'map'})) { @@ -544,28 +554,35 @@ sub make_HTML_report { my $total = $data->{'_count'}; my $sum = 0; my $tmp; - foreach my $value (sort(keys(%{$data->{'foil_values'}}))) { + my @foils = sort(keys(%{$ProblemData->{$partid.'.'.$respid} + ->{'_Foils'}})); + foreach my $foilid (@foils) { + my $value = $data->{'map_fv'}->{$foilid}; my $count = $data->{'foil_values'}->{$value}; - my $foilid = $data->{'map'}->{$value}; my $foiltext = $ProblemData->{$partid.'.'.$respid}->{'_Foils'}->{$foilid}->{'text'}; my $foilname = $ProblemData->{$partid.'.'.$respid}->{'_Foils'}->{$foilid}->{'name'}; - $tmp .= ''. + $tmp .= &Apache::loncommon::start_data_table_row(). ''.$foilname.''. ''.$foiltext.''. ''.$count.''. ''. sprintf("%.2f",$count/$total*100).'%'. - ''.$/; + &Apache::loncommon::end_data_table_row().$/; } - $Str .= ''. - ''.&mt('Foil Name').''. - ''.&mt('Text').''. - ''.&mt('Freq').''. - ''.&mt('Percent').''. - ''.$/. - $tmp; + $Str.='' + .'' + .&Apache::loncommon::start_data_table() + .&Apache::loncommon::start_data_table_header_row() + .''.&mt('Foil Name').'' + .''.&mt('Text').'' + .''.&mt('Frequency').'' + .''.&mt('Percent').'' + .&Apache::loncommon::end_data_table_header_row().$/ + .$tmp + .&Apache::loncommon::end_data_table() + .''; } - $Str.= '
'; + $Str.= ''; $r->print($Str); $r->rflush(); } @@ -604,23 +621,23 @@ sub CreateInterface { ) { $output_selector.=''.$/; } $output_selector .= ''.$/; - $Str .= &Apache::lonhtmlcommon::breadcrumbs('Student Submission Reports'); $Str .= '

'; - $Str .= ''."\n"; - $Str .= ''; + $Str .= &Apache::loncommon::start_data_table(); + $Str .= &Apache::loncommon::start_data_table_header_row(); $Str .= ''; $Str .= ''; - $Str .= ''; + $Str .= ''; $Str .= ''; - $Str .= ''; - $Str .= ''."\n"; + $Str .= ''; + $Str .= &Apache::loncommon::end_data_table_header_row(); # - $Str .= ''; # @@ -637,22 +654,20 @@ sub CreateInterface { # Render problem checkbox my $prob_checkbox = ''. - &mt('Show problem [_1]',$prob_checkbox).'
'. - ''."\n"; - $Str .= '
'.&mt('Sections').''.&mt('Groups').''.&mt('Enrollment Status').''.&mt('Access Status').''.&mt('Output Format').''.' '.'
'.&mt('Options').'
'."\n"; + $Str .= &Apache::loncommon::start_data_table_row(); + $Str .= ''."\n"; $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); $Str .= '
'."\n"; - # - $Str .= ''.&mt('Status: [_1]', - ''). - ''.'

'; + $Str .= + '' + .'' + .''; + # + $Str .= &Apache::loncommon::end_data_table_row(); + $Str .= &Apache::loncommon::end_data_table(); + # + $Str .= '

'; ## return $Str; }