$labeltext
+
+$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'})." ");
@@ -825,7 +829,12 @@ sub html_outputstudent {
return if (! defined($navmap));
#
if($count++ % 5 == 0 && $count > 0) {
- $r->print("");
+# $r->print(" ");
+ $r->print(' ');
+ &Apache::lonhtmlcommon::Increment_PrgWin(
+ $r,\%prog_state,'last five students',5);
+ $r->rflush();
+ $r->print('');
}
# First, the @StudentData fields need to be listed
my @to_show = &get_student_fields_to_show();
@@ -868,16 +877,18 @@ sub html_outputstudent {
my $PerformanceStr = '';
foreach my $seq (@sequences) {
my $symb = $seq->symb;
+ my $randompick = $seq->randompick();
my ($performance,$performance_length,$score,$seq_max,$rawdata);
if ($chosen_output->{'tries'}) {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_tries_on_sequence($student,\%StudentsData,
- $navmap,$seq,$show_links);
+ $navmap,$seq,$show_links,$randompick);
} else {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_performance_on_sequence($student,\%StudentsData,
$navmap,$seq,$show_links,
- $chosen_output->{ignore_weight});
+ $chosen_output->{ignore_weight},
+ $randompick);
}
my $ratio='';
if ($chosen_output->{'every_problem'} &&
@@ -937,8 +948,8 @@ sub html_outputstudent {
#
$r->print($Str);
#
- $r->rflush();
- &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,'last student');
+# $r->rflush();
+# &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,'last student');
return;
}
@@ -995,9 +1006,9 @@ sub StudentAverageTotal {
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 .= &Apache::loncommon::start_data_table()."\n";
$Str .=
@@ -1178,11 +1189,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;
@@ -1260,17 +1271,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'});
}
}
@@ -1280,7 +1291,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
@@ -1294,11 +1305,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);
@@ -1389,17 +1400,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;
@@ -1489,6 +1500,7 @@ sub excel_outputstudent {
my %maximum_cell_translation;
foreach my $seq (@sequences) {
my $symb = $seq->symb;
+ my $randompick = $seq->randompick();
$cols_output = $formula_data{$symb}->{'Excel:startcol'};
# Keep track of cells to translate in total cell
$total_cell_translation{$formula_data{$symb}->{'Excel:scorecell'}} =
@@ -1503,12 +1515,13 @@ sub excel_outputstudent {
if ($chosen_output->{'tries'} || $chosen_output->{'correct'}){
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_tries_on_sequence($student,\%StudentsData,
- $navmap,$seq,'no');
+ $navmap,$seq,'no',$randompick);
} else {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_performance_on_sequence($student,\%StudentsData,
$navmap,$seq,'no',
- $chosen_output->{ignore_weight});
+ $chosen_output->{ignore_weight},
+ $randompick);
}
if ($chosen_output->{'every_problem'}) {
if ($chosen_output->{'correct'}) {
@@ -1673,7 +1686,7 @@ END
# Datestamp
my $description = $env{'course.'.$env{'request.course.id'}.'.description'};
print $outputfile '"'.&Apache::loncommon::csv_translate($description).'",'.
- '"'.&Apache::loncommon::csv_translate(scalar(localtime(time))).'"'.
+ '"'.&Apache::loncommon::csv_translate(scalar(&Apache::lonlocal::locallocaltime(time))).'"'.
"\n";
print $outputfile '"'.
&Apache::loncommon::csv_translate
@@ -1713,23 +1726,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);
@@ -1770,16 +1783,18 @@ sub csv_outputstudent {
my $total = 0;
my $maximum = 0;
foreach my $seq (@sequences) {
+ my $randompick = $seq->randompick();
my ($performance,$performance_length,$score,$seq_max,$rawdata);
if ($chosen_output->{'tries'}){
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_tries_on_sequence($student,\%StudentsData,
- $navmap,$seq,'no');
+ $navmap,$seq,'no',$randompick);
} else {
($performance,$performance_length,$score,$seq_max,$rawdata) =
&student_performance_on_sequence($student,\%StudentsData,
$navmap,$seq,'no',
- $chosen_output->{ignore_weight});
+ $chosen_output->{ignore_weight},
+ $randompick);
}
if ($chosen_output->{'every_problem'}) {
if ($chosen_output->{'correct'}) {
@@ -1880,7 +1895,7 @@ Inputs:
#######################################################
#######################################################
sub student_tries_on_sequence {
- my ($student,$studentdata,$navmap,$seq,$links) = @_;
+ my ($student,$studentdata,$navmap,$seq,$links,$randompick) = @_;
$links = 'no' if (! defined($links));
my $Str = '';
my ($sum,$max) = (0,0);
@@ -1975,8 +1990,8 @@ sub student_tries_on_sequence {
}
$Str .= $value;
}
- if ($seq->randompick()) {
- $max = $seq->randompick();
+ if ($randompick) {
+ $max = $randompick;
}
if (! $hasdata && $sum == 0) {
$sum = ' ';
@@ -2041,7 +2056,7 @@ Inputs:
#######################################################
#######################################################
sub student_performance_on_sequence {
- my ($student,$studentdata,$navmap,$seq,$links,$awarded_only) = @_;
+ my ($student,$studentdata,$navmap,$seq,$links,$awarded_only,$randompick) = @_;
$links = 'no' if (! defined($links));
my $Str = ''; # final result string
my ($score,$max) = (0,0);
@@ -2050,9 +2065,11 @@ sub student_performance_on_sequence {
my @ScoreData = ();
my $partscore;
my $hasdata = 0; # flag, 0 if there were no submissions on the sequence
+ my %ptsfreq;
foreach my $resource (&get_resources($navmap,$seq)) {
my $symb = $resource->symb;
my $resource_data = $studentdata->{$symb};
+ my $resmax = 0;
foreach my $part (@{$resource->parts()}) {
$partscore = undef;
my $weight;
@@ -2068,6 +2085,7 @@ sub student_performance_on_sequence {
}
#
$max += $weight; # see the 'excused' branch below...
+ $resmax += $weight;
$performance_length++; # one character per part
$symbol = ' '; # default to space
#
@@ -2128,6 +2146,17 @@ sub student_performance_on_sequence {
}
$Str .= $symbol;
}
+ if ($ptsfreq{$resmax}) {
+ $ptsfreq{$resmax} ++;
+ } else {
+ $ptsfreq{$resmax} = 1;
+ }
+ }
+ if ($randompick) {
+ my @uniquetotals = keys(%ptsfreq);
+ if ((@uniquetotals = 1) && ($ptsfreq{$uniquetotals[0]} > 0)) {
+ $max = $max * $randompick/$ptsfreq{$uniquetotals[0]};
+ }
}
if (! $hasdata && $score == 0) {
$score = ' ';
500 Internal Server Error
Internal Server Error
The server encountered an internal error or
misconfiguration and was unable to complete
your request.
Please contact the server administrator at
root@localhost to inform them of the time this error occurred,
and the actions you performed just before this error.
More information about this error may be available
in the server error log.