--- loncom/interface/statistics/lonproblemstatistics.pm 2003/08/27 21:33:33 1.56 +++ loncom/interface/statistics/lonproblemstatistics.pm 2003/10/24 13:36:16 1.60 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: lonproblemstatistics.pm,v 1.56 2003/08/27 21:33:33 matthew Exp $ +# $Id: lonproblemstatistics.pm,v 1.60 2003/10/24 13:36:16 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -54,8 +54,16 @@ use Apache::lonnet(); use Apache::lonhtmlcommon; use Apache::loncoursedata; use Apache::lonstatistics; +use Apache::lonlocal; use Spreadsheet::WriteExcel; +## +## Localization notes: +## +## in @Fields[0]->{'long_title'} is placed in Excel files and is used as the +## header for plots created with Graph.pm, both of which more than likely do +## not support localization. +## my @Fields = ( { name => 'problem_num', title => 'P#', @@ -174,64 +182,6 @@ select sections, maps, and output. ############################################### ############################################### -sub CreateInterface { - my $Str = ''; - $Str .= ''."\n"; - $Str .= ''; - $Str .= ''; - $Str .= ''; - $Str .= ''; - $Str .= ''; - $Str .= ''."\n"; - # - $Str .= ''."\n"; - $Str .= '
SectionsEnrollment StatusSequences and FoldersOutput
'."\n"; - $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); - $Str .= ''; - $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); - $Str .= ''; - # - my $only_seq_with_assessments = sub { - my $s=shift; - if ($s->{'num_assess'} < 1) { - return 0; - } else { - return 1; - } - }; - $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5, - $only_seq_with_assessments); - $Str .= ''."\n"; - $Str .= &CreateAndParseOutputSelector(); - $Str .= '
'."\n"; - $Str .= ''; - $Str .= ' 'x5; - $Str .= ''; - $Str .= ' 'x5; - return $Str; -} - -####################################################### -####################################################### - -=pod - -=item &CreateAndParseOutputSelector() - -Construct a selection list of options for output and parse output selections. -The current output selected is indicated by the values of the two package -variables $output_mode and $show. @OutputOptions holds the descriptions of -the output options and the values for $output_mode and $show. - -Based on code from lonstudentassessment.pm. - -=cut - -####################################################### -####################################################### -my $output_mode; -my $show; - my @OutputOptions = ( { name => 'problem statistics grouped by sequence', @@ -255,54 +205,48 @@ my @OutputOptions = }, ); -sub OutputDescriptions { - my $Str = ''; - $Str .= "

Output Modes

\n"; - $Str .= "
\n"; - foreach my $outputmode (@OutputOptions) { - $Str .="
".$outputmode->{'name'}."
\n"; - $Str .="
".$outputmode->{'description'}."
\n"; - } - $Str .= "
\n"; - return $Str; -} - -sub CreateAndParseOutputSelector { +sub CreateInterface { my $Str = ''; - my $elementname = 'statsoutputmode'; - # - # Format for output options is 'mode, restrictions'; - my $selected = 'HTML problem statistics grouped'; - if (exists($ENV{'form.'.$elementname})) { - if (ref($ENV{'form.'.$elementname} eq 'ARRAY')) { - $selected = $ENV{'form.'.$elementname}->[0]; - } else { - $selected = $ENV{'form.'.$elementname}; - } - } + $Str .= ''."\n"; + $Str .= ''; + $Str .= ''; + $Str .= ''; + $Str .= ''; + $Str .= ''; + $Str .= ''."\n"; # - # Set package variables describing output mode - $output_mode = 'html'; - $show = 'all'; - foreach my $option (@OutputOptions) { - next if ($option->{'value'} ne $selected); - $output_mode = $option->{'mode'}; - $show = $option->{'show'}; - } + $Str .= ''."\n"; + $Str .= '
'.&mt('Sections').''.&mt('Enrollment Status').''.&mt('Sequences and Folders').''.&mt('Output').'
'."\n"; + $Str .= &Apache::lonstatistics::SectionSelect('Section','multiple',5); + $Str .= ''; + $Str .= &Apache::lonhtmlcommon::StatusOptions(undef,undef,5); + $Str .= ''; # - # Build the form element - $Str = qq/"; - return $Str; + }; + $Str .= &Apache::lonstatistics::MapSelect('Maps','multiple,all',5, + $only_seq_with_assessments); + $Str .= ''."\n"; + my ($html,$outputmode,$show) = + &Apache::lonstatistics::CreateAndParseOutputSelector( + 'statsoutputmode', + 'HTML problem statistics grouped', + @OutputOptions); + $Str .= $html; + $Str .= '
'."\n"; + $Str .= ''; + $Str .= ' 'x5; + $Str .= ''; + $Str .= ' 'x5; + return ($Str,$outputmode,$show); } ############################################### @@ -321,10 +265,8 @@ Main interface to problem statistics. sub BuildProblemStatisticsPage { my ($r,$c)=@_; # - $output_mode = 'html'; - $show = 'grouped'; - # - $r->print(&CreateInterface()); + my ($interface,$output_mode,$show) = &CreateInterface(); + $r->print($interface); $r->print(''); $r->print(''); @@ -348,10 +290,10 @@ sub BuildProblemStatisticsPage { &output_html_ungrouped($r); } } elsif ($output_mode eq 'excel') { - $r->print("

Preparing Excel Spreadsheet

"); + $r->print('

'.&mt('Preparing Excel Spreadsheet').'

'); &output_excel($r); } else { - $r->print("

Not implemented

"); + $r->print('

'.&mt('Not implemented').'

'); } return; } @@ -558,9 +500,9 @@ sub output_excel { # Check for errors if (! defined($excel_workbook)) { $r->log_error("Error creating excel spreadsheet $filename: $!"); - $r->print("Problems creating new Excel file. ". + $r->print(&mt("Problems creating new Excel file. ". "This error has been logged. ". - "Please alert your LON-CAPA administrator"); + "Please alert your LON-CAPA administrator.")); return ; } # @@ -624,6 +566,8 @@ sub output_excel { # Brief headers foreach my $field (@Fields) { next if ($field->{'name'} eq 'problem_num'); + # Use english for excel as I am not sure how well excel handles + # other character sets.... $excel_sheet->write($rows_output,$cols_output++,$field->{'title'}); } $rows_output++; @@ -657,7 +601,8 @@ sub output_excel { $excel_workbook->close(); # Tell the user where to get their excel file $r->print('
'. - 'Your Excel spreadsheet.'."\n"); + ''. + &mt('Your Excel Spreadsheet').''."\n"); $r->rflush(); return; } @@ -713,7 +658,7 @@ sub statistics_table_header { 'document.Statistics.sortby.value='."'".$field->{'name'}."'". ';document.Statistics.submit();">'; } - $header_row .= $field->{'title'}; + $header_row .= &mt($field->{'title'}); if ($options =~ /sortable/) { $header_row.= ''; } @@ -724,7 +669,7 @@ sub statistics_table_header { $header_row .= ''; - $header_row .= 'plot)'; + $header_row .= &mt('plot').')'; } $header_row .= ''; } @@ -806,8 +751,12 @@ sub plot_statistics { } } - $r->print("

".&DrawGraph(\@Data,$title,'Problem Number',$yaxis, - $Max)."

\n"); + $r->print("

".&Apache::loncommon::DrawBarGraph($title, + 'Problem Number', + $yaxis, + $Max, + undef, + \@Data)."

\n"); # # Print out the data $ENV{'form.sortby'} = 'Contents'; @@ -815,35 +764,6 @@ sub plot_statistics { return; } -############################################### -############################################### - -=pod - -=item &DrawGraph() - -=cut - -############################################### -############################################### -sub DrawGraph { - my ($values,$title,$xaxis,$yaxis,$Max)=@_; - $title = '' if (! defined($title)); - $xaxis = '' if (! defined($xaxis)); - $yaxis = '' if (! defined($yaxis)); - # - my $sendValues = join(',', @$values); - my $sendCount = scalar(@$values); - $Max =1 if ($Max < 1); - if ( int($Max) < $Max ) { - $Max++; - $Max = int($Max); - } - my @GData = ($title,$xaxis,$yaxis,$Max,$sendCount,$sendValues); - return ''; -} - sub get_statistics { my ($sequence,$resource,$part,$problem_num) = @_; # @@ -873,6 +793,8 @@ sub get_statistics { =item &ProblemStatisticsLegend() +HELP This needs to be localized, or at least generated automatically. + =cut ###############################################