--- loncom/interface/statistics/lonstudentassessment.pm 2008/09/12 14:35:45 1.147
+++ loncom/interface/statistics/lonstudentassessment.pm 2009/09/22 14:28:56 1.157
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonstudentassessment.pm,v 1.147 2008/09/12 14:35:45 bisitz Exp $
+# $Id: lonstudentassessment.pm,v 1.157 2009/09/22 14:28:56 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -248,14 +248,14 @@ sub next_and_previous_buttons {
if (defined($previous)) {
my $sname = $previous->{'username'}.':'.$previous->{'domain'};
$previousbutton .= ' ';
} else {
$previousbutton .= ' ';
+ &mt('Previous Student').'" disabled="disabled" />';
}
#
# Build the next student link
@@ -264,19 +264,19 @@ sub next_and_previous_buttons {
if (defined($next)) {
my $sname = $next->{'username'}.':'.$next->{'domain'};
$nextbutton .= ' ';
} else {
$nextbutton .= ' ';
+ &mt('Next Student').'" disabled="disabled" />';
}
#
# Build the 'all students' button
my $all = '';
- $all .= ' ';
$Str .= $previousbutton.(' 'x5).$all.(' 'x5).$nextbutton;
@@ -327,7 +327,7 @@ sub CreateInterface {
'';
$Str .= '
'.&mt('Groups').' '.
' ';
- $Str .= ''.&mt('Student Data ').
+ $Str .= ''.&mt('Student Data').' '.
&Apache::loncommon::help_open_topic("Chart_Student_Data").
' ';
$Str .= ''.&mt('Access Status').' '.
@@ -361,19 +361,19 @@ sub CreateInterface {
$Str .= &CreateAndParseOutputDataSelector();
$Str .= ' '."\n";
$Str .= ''."\n";
- $Str .= ' ';
- $Str .= ' 'x5;
+ $Str .= ''
+ .&mt('Status:').' '
+ .' '
+ .'
';
$Str .= ' ';
$Str .= ' 'x5;
$Str .= ' ';
- $Str .= ' 'x5;
- $Str .=
- &mt('Status [_1]',
- ' ');
- $Str .= ' ';
+ $Str .= ''
+ .' '
+ .'
';
return $Str;
}
@@ -546,7 +546,7 @@ my @OutputDataOptions =
summary_table => 1,
maximum_row => 0,
ignore_weight => 1,
- shortdesc => 'Number of Problem Parts completed successfully.',
+ shortdesc => 'Number of Problem Parts completed successfully',
longdesc => 'The Number of Problem Parts completed successfully and '.
'the maximum possible for each student',
},
@@ -554,7 +554,7 @@ my @OutputDataOptions =
sub HTMLifyOutputDataDescriptions {
my $Str = '';
- $Str .= "Output Data \n";
+ $Str .= "'.&mt('Output Data').' \n";
$Str .= "\n";
foreach my $option (@OutputDataOptions) {
$Str .= ' '.$option->{'name'}.' ';
@@ -663,9 +663,9 @@ sub html_initialize {
&Apache::lonstatistics::selected_sequences_with_assessments();
if (! ref($navmap)) {
# Unable to get data, so bail out
- $r->print("".
- &mt('Unable to retrieve course information.').
- ' ');
+ $r->print(''
+ .&mt('Unable to retrieve course information.')
+ .'
');
}
# If we're showing links, show a checkbox to open in new
@@ -675,14 +675,14 @@ sub html_initialize {
$r->print(<new_window = true;
$labeltext
-
+
NEW_WINDOW_CHECKBOX
}
#
$r->print("".$env{'course.'.$env{'request.course.id'}.'.description'}.
- " ".localtime(time)." ");
+ " ".&Apache::lonlocal::locallocaltime(time)."");
#
if ($chosen_output->{'base'} !~ /^final table/) {
$r->print("".&mt($chosen_output->{'shortdesc'})." ");
@@ -713,8 +713,8 @@ NEW_WINDOW_CHECKBOX
$width{$symb}->{'width_sum'} += 1;
}
$total_count += &count_parts($navmap,$seq);
- # Use 3 digits for the sum
- $width{$symb}->{'width_sum'} += 3;
+ # Use 6 digits for the sum
+ $width{$symb}->{'width_sum'} += 6;
}
# Compute width of maximum
if ($chosen_output->{'sequence_max'}) {
@@ -722,8 +722,8 @@ NEW_WINDOW_CHECKBOX
# One digit for the '/'
$width{$symb}->{'width_sum'} +=1;
}
- # Use 3 digits for the total
- $width{$symb}->{'width_sum'}+=3;
+ # Use 6 digits for the total
+ $width{$symb}->{'width_sum'}+=6;
}
#
if ($chosen_output->{'every_problem'}) {
@@ -849,10 +849,13 @@ sub html_outputstudent {
} else {
my $error = $1;
if (scalar(@tmp) < 1) {
- $Str .= 'No Course Data '."\n";
+ $Str .= ''
+ .&mt('No Course Data')
+ .' '."\n";
} else {
- $Str .= 'Error getting student data ('.
- $error.') '."\n";
+ $Str .= ''
+ .&mt('Error getting student data ([_1])',$error)
+ .' '."\n";
}
$nodata_count++;
$r->print($Str);
@@ -882,16 +885,17 @@ sub html_outputstudent {
$ratio .= ' ';
}
if ($chosen_output->{'sequence_sum'} && $score ne ' ') {
- my $score .= sprintf("%3.0f",$score);
- $ratio .= (' 'x(3-length($score))).$score;
+ my $score .= sprintf("%3.2f",$score);
+ $ratio .= (' 'x(6-length($score))).$score;
} elsif($chosen_output->{'sequence_sum'}) {
- $ratio .= ' 'x3;
+ $ratio .= ' 'x6;
}
if ($chosen_output->{'sequence_max'}) {
if ($chosen_output->{'sequence_sum'}) {
$ratio .= '/';
}
- $ratio .= sprintf("%3.0f",$seq_max);
+ my $sequence_total=sprintf("%3.2f",$seq_max);
+ $ratio .= $sequence_total.(' 'x(6-length($sequence_total)));
}
#
if (! $chosen_output->{'every_problem'}) {
@@ -925,8 +929,8 @@ sub html_outputstudent {
if (! defined($score)) {
$score = ' ' x $total_sum_width;
} else {
- $score = sprintf("%.0f",$score);
- $score = (' 'x(3-length($score))).$score;
+ $score = sprintf("%.2f",$score);
+ $score = (' 'x(6-length($score))).$score;
}
$Str .= ' '.' 'x($total_sum_width-length($score)).$score.' / '.$max;
$Str .= " \n";
@@ -959,12 +963,12 @@ sub html_finish {
sub StudentAverageTotal {
my $Str = ''.&mt('Summary Tables').' '.$/;
- $Str .= ''."\n";
- $Str .= ''.
+ $Str .= &Apache::loncommon::start_data_table();
+ $Str .= &Apache::loncommon::start_data_table_header_row().
''.&mt('Title').' '.
''.&mt('Average').' '.
''.&mt('Maximum').' '.
- ' '.$/;
+ &Apache::loncommon::end_data_table_header_row().$/;
foreach my $seq (@sequences) {
my $symb = $seq->symb;
my $ave;
@@ -978,46 +982,53 @@ sub StudentAverageTotal {
}
my $max = $Statistics->{$symb}->{'max'};
$ave = sprintf("%.2f",$ave);
- $Str .= ''.$seq->compTitle.' '.
+ $Str .= &Apache::loncommon::start_data_table_row().
+ ''.$seq->compTitle.' '.
''.$ave.' '.
- ''.$max.' '.' '."\n";
+ ''.$max.' '.' '.
+ &Apache::loncommon::end_data_table_row()."\n";
}
- $Str .= "
\n";
+ $Str .= &Apache::loncommon::end_data_table()."\n";
return $Str;
}
sub SingleStudentTotal {
return if (! defined($navmap));
my $student = &Apache::lonstatistics::current_student();
- my $Str = ''.&mt('Summary table for [_1] ([_2]@[_3])',
+ my $Str = ''.&mt('Summary table for [_1] ([_2])',
$student->{'fullname'},
- $student->{'username'},$student->{'domain'}).' ';
+ $student->{'username'}.':'.$student->{'domain'}).' ';
$Str .= $/;
- $Str .= ''."\n";
+ $Str .= &Apache::loncommon::start_data_table()."\n";
$Str .=
- ''.
+ &Apache::loncommon::start_data_table_header_row().
''.&mt('Sequence or Folder').' ';
if ($chosen_output->{'base'} eq 'tries') {
$Str .= ''.&mt('Parts Correct').' ';
} else {
$Str .= ''.&mt('Score').' ';
}
- $Str .= ''.&mt('Maximum').' '." \n";
+ $Str .= ''.&mt('Maximum').' '.
+ &Apache::loncommon::end_data_table_header_row()."\n";
my $total = 0;
my $total_max = 0;
foreach my $seq (@sequences) {
my $value = $Statistics->{$seq->symb}->{'score'};
my $max = $Statistics->{$seq->symb}->{'max'};
- $Str .= ''.&HTML::Entities::encode($seq->compTitle).' '.
+ $Str .= &Apache::loncommon::start_data_table_row().
+ ''.&HTML::Entities::encode($seq->compTitle).' '.
''.$value.' '.
- ''.$max.' '."\n";
+ ''.$max.' '.
+ &Apache::loncommon::end_data_table_row()."\n";
$total += $value;
$total_max +=$max;
}
- $Str .= ''.&mt('Total').' '.
+ $Str .= &Apache::loncommon::start_data_table_row().
+ ''.&mt('Total').' '.
''.$total.' '.
- ''.$total_max." \n";
- $Str .= "
\n";
+ ''.$total_max.' '.
+ &Apache::loncommon::end_data_table_row()."\n";
+ $Str .= &Apache::loncommon::end_data_table()."\n";
return $Str;
}
@@ -1167,11 +1178,11 @@ sub excel_initialize {
#
# Put the date in there too
$excel_sheet->write($header_row,$cols_output++,
- 'Compiled on '.localtime(time),$format->{'h3'});
+ &mt('Compiled on [_1]',&Apache::lonlocal::locallocaltime(time)),$format->{'h3'});
#
$cols_output = 0;
$excel_sheet->write($description_row,$cols_output++,
- $chosen_output->{'shortdesc'},
+ &mt($chosen_output->{'shortdesc'}),
$format->{'b'});
#
$cols_output = 0;
@@ -1249,17 +1260,17 @@ sub excel_initialize {
$formula_data{$symb}->{'Excel:scorecol'}=$cols_output;
if ($chosen_output->{'base'} eq 'parts correct total') {
$excel_sheet->write($resource_name_row,$cols_output++,
- 'parts correct',
+ &mt('parts correct'),
$format->{'bold'});
} elsif ($chosen_output->{'sequence_sum'}) {
if ($chosen_output->{'correct'}) {
# Only reporting the number correct, so do not call it score
$excel_sheet->write($resource_name_row,$cols_output++,
- 'sum',
+ &mt('sum'),
$format->{'bold'});
} else {
$excel_sheet->write($resource_name_row,$cols_output++,
- 'score',
+ &mt('score'),
$format->{'bold'});
}
}
@@ -1269,7 +1280,7 @@ sub excel_initialize {
($first_data_row,$cols_output-1);
if ($chosen_output->{'sequence_max'}) {
$excel_sheet->write($resource_name_row,$cols_output,
- 'maximum',
+ &mt('maximum'),
$format->{'bold'});
$formula_data{$symb}->{'Excel:maxcell'} =
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell
@@ -1283,11 +1294,11 @@ sub excel_initialize {
}
}
if ($chosen_output->{'grand_total'}) {
- $excel_sheet->write($resource_name_row,$cols_output++,'Total',
+ $excel_sheet->write($resource_name_row,$cols_output++,&mt('Total'),
$format->{'bold'});
}
if ($chosen_output->{'grand_maximum'}) {
- $excel_sheet->write($resource_name_row,$cols_output++,'Max. Total',
+ $excel_sheet->write($resource_name_row,$cols_output++,&mt('Max. Total'),
$format->{'bold'});
}
$total_formula = $excel_sheet->store_formula($total_formula_string);
@@ -1378,17 +1389,17 @@ sub excel_initialize {
if ($chosen_output->{'summary_table'}) {
$cols_output = 0;
$excel_sheet->write($summary_header_row,$cols_output++,
- 'Summary Table',$format->{'bold'});
+ &mt('Summary Table'),$format->{'bold'});
if ($chosen_output->{'maximum_row'}) {
$excel_sheet->write($summary_header_row,$cols_output++,
- 'Maximum',$format->{'bold'});
+ &mt('Maximum'),$format->{'bold'});
}
$excel_sheet->write($summary_header_row,$cols_output++,
- 'Average',$format->{'bold'});
+ &mt('Average'),$format->{'bold'});
$excel_sheet->write($summary_header_row,$cols_output++,
- 'Median',$format->{'bold'});
+ &mt('Median'),$format->{'bold'});
$excel_sheet->write($summary_header_row,$cols_output++,
- 'Std Dev',$format->{'bold'});
+ &mt('Std Dev'),$format->{'bold'});
my $row = $summary_header_row+1;
foreach my $seq (@sequences) {
my $symb = $seq->symb;
@@ -1428,14 +1439,10 @@ sub excel_initialize {
if ($env{'form.SelectedStudent'}) {
$studentcount = '1';
}
- if ($studentcount > 1) {
- $r->print(''.&mt('Compiling Excel spreadsheet for [_1] students',
- $studentcount)." \n");
- } else {
- $r->print(''.
- &mt('Compiling Excel spreadsheet for 1 student').
- " \n");
- }
+ $r->print(''
+ .&mt('Compiling Excel spreadsheet for [quant,_1,student]...',$studentcount)
+ ."
\n"
+ );
$r->rflush();
#
# Initialize progress window
@@ -1583,7 +1590,7 @@ sub excel_finish {
#
# Tell the user where to get their excel file
$r->print(' '.
- 'Your Excel spreadsheet. '."\n");
+ ''.&mt('Your Excel spreadsheet').' '."\n");
$r->rflush();
&excel_cleanup();
return;
@@ -1706,23 +1713,23 @@ END
$sequence_row.='"",'x$count;
if ($chosen_output->{'sequence_sum'}) {
if($chosen_output->{'correct'}) {
- $resource_row .= '"sum",';
+ $resource_row .= '"'.&mt('sum').'",';
} else {
- $resource_row .= '"score",';
+ $resource_row .= '"'.&mt('score').'",';
}
}
if ($chosen_output->{'sequence_max'}) {
$sequence_row.= '"",';
- $resource_row .= '"maximum possible",';
+ $resource_row .= '"'.&mt('maximum possible').'",';
}
}
if ($chosen_output->{'grand_total'}) {
$sequence_row.= '"",';
- $resource_row.= '"Total",';
+ $resource_row.= '"'.&mt('Total').'",';
}
if ($chosen_output->{'grand_maximum'}) {
$sequence_row.= '"",';
- $resource_row.= '"Maximum",';
+ $resource_row.= '"'.&mt('Maximum').'",';
}
chomp($sequence_row);
chomp($resource_row);
@@ -1958,7 +1965,7 @@ sub student_tries_on_sequence {
if ( ($links eq 'yes' && $symbol ne ' ') ||
($links eq 'all')) {
my $link = '/adm/grades'.
- '?symb='.&escape($resource->symb).
+ '?symb='.&escape($resource->shown_symb).
'&student='.$student->{'username'}.
'&userdom='.$student->{'domain'}.
'&command=submission';
@@ -2113,7 +2120,7 @@ sub student_performance_on_sequence {
#
if ( ($links eq 'yes' && $symbol ne ' ') || ($links eq 'all')) {
my $link = '/adm/grades' .
- '?symb='.&escape($symb).
+ '?symb='.&escape($resource->shown_symb).
'&student='.$student->{'username'}.
'&userdom='.$student->{'domain'}.
'&command=submission';