--- loncom/interface/statistics/lonproblemstatistics.pm 2009/03/05 09:12:14 1.117
+++ loncom/interface/statistics/lonproblemstatistics.pm 2014/03/03 20:45:05 1.122.2.3
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemstatistics.pm,v 1.117 2009/03/05 09:12:14 bisitz Exp $
+# $Id: lonproblemstatistics.pm,v 1.122.2.3 2014/03/03 20:45:05 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -73,6 +73,14 @@ my %SeqStat; # keys are symbs, values
## header for plots created with Graph.pm, both of which more than likely do
## not support localization.
##
+## Additional Notes:
+## Localization can be done and is done before passing the phrases
+## to the output.
+## This might conflict with special characters, e.g. German Umlaute or
+## chinese characters. Do not use such characters in this case.
+## If this failed, consider that the sequence and folder names
+## are also passed to the output and would fail the same way.
+##
#
#
##
@@ -84,7 +92,7 @@ my %SeqStat; # keys are symbs, values
## title yes any scalar This is what the user sees to identify
## the field. Passed through &mt().
## long_title yes any scalar Used as graph heading and in excel
-## output. NOT translated
+## output. Passed through &mt().
## align no (left|right|center) HTML cell contents alignment
## color yes html color HTML cell background color
## used to visually group statistics
@@ -174,7 +182,7 @@ my @Fields = (
format => '%d',
sortable => 'yes',
graphable => 'yes',
- long_title => 'Minumum Number of Tries',
+ long_title => 'Minimum Number of Tries',
selectable => 'yes',
defaultselected => 'yes',
},
@@ -274,7 +282,7 @@ my @Fields = (
sortable => 'yes',
graphable => 'yes',
long_title => 'Degree of Difficulty'.
- '[ 1 - ((#YES+#yes) / Tries) ]',
+ ' ~[ 1 - ((#YES+#yes) / Tries) ~]',
selectable => 'yes',
defaultselected => 'yes',
},
@@ -430,7 +438,7 @@ my @SeqFields = (
format => '%4.2f',
sortable => 'no',
graphable => 'no',
- long_title => 'Minumum Sequence Score',
+ long_title => 'Minimum Sequence Score',
selectable => 'yes',
defaultselected => 'no',
},
@@ -485,7 +493,7 @@ my @SeqFields = (
format => '%4.2f',
sortable => 'no',
graphable => 'no',
- long_title => 'Minumum Number of Correct Problems',
+ long_title => 'Minimum Number of Correct Problems',
selectable => 'yes',
defaultselected => 'no',
},
@@ -578,14 +586,14 @@ sub parse_field_selection {
sub field_selection_input {
my $Str = '\n";
}
@@ -610,9 +618,6 @@ sub CreateInterface {
&parse_field_selection();
#
my $Str = '';
- $Str .= &Apache::lonhtmlcommon::breadcrumbs('Overall Problem Statistics',
- 'Statistics_Overall_Key');
- $Str .= '
".&mt('Compiled on [_1]',
- &Apache::lonlocal::locallocaltime(time))."
";
+ $Str .= "
".&mt('Compiled on [_1]',
+ &Apache::lonlocal::locallocaltime(time))."
";
return $Str;
}
@@ -900,7 +898,7 @@ sub statistics_html_table_data {
foreach my $field (@Fields) {
next if ($options =~ /no $field->{'name'}/);
next if ($field->{'selected'} ne 'yes');
- $row .= '
{'color'}.'"';
if (exists($field->{'align'})) {
$row .= ' align="'.$field->{'align'}.'"';
}
@@ -928,14 +926,16 @@ sub statistics_table_header {
next if ($options =~ /no $field->{'name'}/);
next if ($field->{'selected'} ne 'yes');
$header_row .= '
';
+ my $Str .= &Apache::loncommon::start_data_table_header_row();
foreach my $field (@SeqFields) {
# next if ($field->{'selected'} ne 'yes');
$Str .= '
".&Apache::loncommon::DrawBarGraph($title,
- 'Problem Number',
+ &mt('Problem Number'),
$yaxis,
$max,
undef, # colors
@@ -1112,10 +1112,14 @@ sub degrees_plot {
my $diffdata .= ''.join(',',@Labels).''.$/.
''.join(',',@Diff).''.$/;
#
- my $title = 'Degree of Discrimination\nand Degree of Difficulty';
+ my $title = &mt('Degree of Discrimination[_1]and Degree of Difficulty','\n');
if ($xmax > 50) {
- $title = 'Degree of Discrimination and Degree of Difficulty';
+ $title = &mt('Degree of Discrimination and Degree of Difficulty');
}
+ my %lt = &Apache::lonlocal::texthash(
+ 'alttag' => 'Degree of Discrimination and Degree of Difficulty Plot',
+ 'xlabel' => 'Problem Number',
+ );
#
$plot=<<"END";
$title
- Problem Number
+ $lt{'xlabel'}'.join(',',@Mean).''.$/.
''.join(',',@STD).''.$/;
#
- my $title = 'Mean and S.D. of Tries';
- if ($xmax > 25) {
- $title = 'Mean and Standard Deviation of Tries';
+ my $title = &mt('Mean and S.D. of Tries');
+ if ($xmax > 30) {
+ $title = &mt('Mean and Standard Deviation of Tries');
}
#
+ my %lt = &Apache::lonlocal::texthash(
+ 'alttag' => 'Mean and S.D of Tries Plot',
+ 'xlabel' => 'Problem Number',
+ 'ylabel' => 'Number of Tries',
+ );
$plot=<<"END";
$title
- Problem Number
- Number of Tries
+ $lt{'xlabel'}
+ $lt{'ylabel'}';
$Str .= ''."\n";
- $Str .= ''."\n";
+ $Str .= ''."\n";
foreach my $field (@Additional_Plots,@Fields) {
if (! exists($field->{'graphable'}) ||
$field->{'graphable'} ne 'yes') {
@@ -1271,9 +1281,11 @@ sub plot_dropdown {
}
$Str .= ''."\n";
+ $title = &mt($field->{'long_title'});
+ $title = &mt($field->{'title'}) if (!$title);
+ $Str.= '>'.$title.''."\n";
}
$Str .= ''."\n";
return $Str;
@@ -1331,16 +1343,17 @@ sub Excel_output {
# Time restrictions
my $time_string;
if (defined($starttime)) {
- # call localtime but not lonlocal:locallocaltime because excel probably
- # cannot handle localized text. Probably.
- $time_string .= 'Data collected from '.localtime($time_string);
if (defined($endtime)) {
- $time_string .= ' to '.localtime($endtime);
+ $time_string .= &mt('Data collected from [_1] to [_2]',
+ &Apache::lonlocal::locallocaltime($starttime),
+ &Apache::lonlocal::locallocaltime($endtime));
+ } else {
+ $time_string .= &mt('Data collected from [_1]',
+ &Apache::lonlocal::locallocaltime($starttime));
}
- $time_string .= '.';
} elsif (defined($endtime)) {
- # See note above about lonlocal:locallocaltime
- $time_string .= 'Data collected before '.localtime($endtime).'.';
+ $time_string .= &mt('Data collected before [_1]',
+ &Apache::lonlocal::locallocaltime($endtime));
}
if (defined($time_string)) {
$excel_sheet->write($rows_output,$cols_output++,$time_string);
@@ -1349,7 +1362,7 @@ sub Excel_output {
#
# Put the date in there too
$excel_sheet->write($rows_output,$cols_output++,
- 'Compiled on '.localtime(time));
+ &mt('Compiled on [_1]',&Apache::lonlocal::locallocaltime(time)));
#
$rows_output++;
$cols_output=0;
@@ -1457,7 +1470,7 @@ sub compute_statistics_on_sequence {
my @Data;
foreach my $res (&Apache::lonstathelpers::get_resources($navmap,$seq)) {
foreach my $part (@{$res->parts}) {
- next if ($res->is_survey($part));
+ next if (($res->is_survey($part)) || ($res->is_anonsurvey($part))) ;
#
# This is where all the work happens
my $data = &get_statistics($seq,$res,$part,scalar(@StatsArray)+1);
@@ -1592,7 +1605,6 @@ sub get_statistics {
$data->{'sections'}=$sections;
$data->{'course'} = $env{'request.course.id'};
my $urlres=(&Apache::lonnet::decode_symb($resource->symb))[2];
- $data->{'urlres'}=$urlres;
my %storestats =
&LONCAPA::lonmetadata::dynamic_metadata_storage($data);
my ($dom,$user) = ($urlres=~m{^($LONCAPA::domain_re)/($LONCAPA::username_re)});