version 1.25, 2003/10/02 17:07:41
|
version 1.28, 2003/11/11 15:36:28
|
Line 55 use HTML::Entities();
|
Line 55 use HTML::Entities();
|
use Spreadsheet::WriteExcel; |
use Spreadsheet::WriteExcel; |
use GDBM_File; |
use GDBM_File; |
use Time::HiRes; |
use Time::HiRes; |
|
use Apache::lonlocal; |
|
|
@Apache::assesscalc::ISA = ('Apache::Spreadsheet'); |
@Apache::assesscalc::ISA = ('Apache::Spreadsheet'); |
|
|
Line 398 sub get_title {
|
Line 399 sub get_title {
|
join(' ',@userenv{'firstname','middlename','lastname','generation'}); |
join(' ',@userenv{'firstname','middlename','lastname','generation'}); |
$name =~ s/\s+$//; |
$name =~ s/\s+$//; |
push (@title,$name); |
push (@title,$name); |
push (@title,scalar(localtime(time))); |
push (@title,&Apache::lonlocal::locallocaltime(time)); |
return @title; |
return @title; |
} |
} |
|
|
Line 407 sub parent_link {
|
Line 408 sub parent_link {
|
my $link .= '<p><a href="/adm/studentcalc?'. |
my $link .= '<p><a href="/adm/studentcalc?'. |
'sname='.$self->{'name'}. |
'sname='.$self->{'name'}. |
'&sdomain='.$self->{'domain'}.'">'. |
'&sdomain='.$self->{'domain'}.'">'. |
'Student level sheet</a></p>'."\n"; |
&mt('Student level sheet').'</a></p>'."\n"; |
return $link; |
return $link; |
} |
} |
|
|
Line 421 sub outsheet_html {
|
Line 422 sub outsheet_html {
|
my $exportcolor = '#FFFFAA'; |
my $exportcolor = '#FFFFAA'; |
my $num_uneditable = 1; |
my $num_uneditable = 1; |
my $num_left = 52-$num_uneditable; |
my $num_left = 52-$num_uneditable; |
|
my %lt=&Apache::lonlocal::texthash( |
|
'as' => 'Assessment', |
|
'ca' => 'Calculations', |
|
); |
my $tableheader =<<"END"; |
my $tableheader =<<"END"; |
<table border="2"> |
<table border="2"> |
<tr> |
<tr> |
<th colspan="2" rowspan="2"><font size="+2">Assessment</font></th> |
<th colspan="2" rowspan="2"><font size="+2">$lt{'as'}</font></th> |
<td bgcolor="$importcolor" colspan="$num_uneditable"> </td> |
<td bgcolor="$importcolor" colspan="$num_uneditable"> </td> |
<td colspan="$num_left"> |
<td colspan="$num_left"> |
<b><font size="+1">Calculations</font></b></td> |
<b><font size="+1">$lt{'ca'}</font></b></td> |
</tr><tr> |
</tr><tr> |
END |
END |
my $label_num = 0; |
my $label_num = 0; |
Line 469 END
|
Line 474 END
|
# |
# |
my $num_output = 0; |
my $num_output = 0; |
foreach my $rownum (sort {$a <=> $b} ($self->rows())) { |
foreach my $rownum (sort {$a <=> $b} ($self->rows())) { |
|
if (! $self->parameter_part_is_valid( |
|
$self->{'formulas'}->{'A'.$rownum} |
|
)) { |
|
next; |
|
} |
if ($num_output++ % 50 == 0) { |
if ($num_output++ % 50 == 0) { |
$r->print("</table>\n".$tableheader); |
$r->print("</table>\n".$tableheader); |
} |
} |
Line 517 sub csv_rows {
|
Line 527 sub csv_rows {
|
# |
# |
# Write a header row |
# Write a header row |
$self->csv_output_row($filehandle,undef, |
$self->csv_output_row($filehandle,undef, |
('Parameter','Description','Value')); |
(&mt('Parameter'),&mt('Description'),&mt('Value'))); |
# |
# |
# Write each row |
# Write each row |
foreach my $rownum (sort {$a <=> $b} ($self->rows())) { |
foreach my $rownum (sort {$a <=> $b} ($self->rows())) { |
Line 541 sub excel_rows {
|
Line 551 sub excel_rows {
|
# Write a header row |
# Write a header row |
$cols_output = 0; |
$cols_output = 0; |
foreach my $value ('Parameter','Description','Value') { |
foreach my $value ('Parameter','Description','Value') { |
$worksheet->write($rows_output,$cols_output++,$value); |
$worksheet->write($rows_output,$cols_output++,&mt($value)); |
} |
} |
$rows_output++; |
$rows_output++; |
# |
# |
Line 632 sub get_problem_state {
|
Line 642 sub get_problem_state {
|
return %student_parameters; |
return %student_parameters; |
} |
} |
|
|
|
sub determine_parts { |
|
my $self = shift; |
|
if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { |
|
return; |
|
} |
|
my (undef,undef,$url) = &Apache::lonnet::decode_symb($self->{'symb'}); |
|
my $src = &Apache::lonnet::clutter($url); |
|
return if (! defined($src)); |
|
my %Parts; |
|
my $metadata = &Apache::lonnet::metadata($src,'packages'); |
|
foreach (split(',',$metadata)) { |
|
my ($part) = (/^part_(.*)$/); |
|
if (defined($part) && |
|
! &Apache::loncommon::check_if_partid_hidden |
|
($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) |
|
) { |
|
$Parts{$part}++; |
|
} |
|
} |
|
# Make sure part 0 is defined. |
|
$Parts{'0'}++; |
|
$self->{'Parts'} = \%Parts; |
|
return; |
|
} |
|
|
|
sub parameter_part_is_valid { |
|
my $self = shift; |
|
my ($parameter) = @_; |
|
return 1 if ($parameter eq 'timestamp'); |
|
if (! defined($self->{'Parts'}) || |
|
! ref ($self->{'Parts'}) || |
|
ref($self->{'Parts'}) ne 'HASH') { |
|
return 1; |
|
} |
|
# |
|
my (undef,$part) = |
|
($parameter =~ m/^(resource|stores|parameter)_([^_]+)_.*/); |
|
if (exists($self->{'Parts'}) && |
|
exists($self->{'Parts'}->{$part}) && |
|
$self->{'Parts'}->{$part} ) { |
|
return 1; |
|
} else { |
|
return 0; |
|
} |
|
} |
|
|
sub compute { |
sub compute { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
Line 683 sub compute {
|
Line 739 sub compute {
|
$parameters{$parm} = $value; |
$parameters{$parm} = $value; |
} |
} |
# |
# |
|
# Clean out any bad parameters |
|
$self->determine_parts(); |
|
foreach my $param (keys(%parameters)) { |
|
if (! $self->parameter_part_is_valid($param)) { |
|
delete ($parameters{$param}); |
|
} |
|
} |
|
# |
# Set up the formulas and parameter values |
# Set up the formulas and parameter values |
my %f=$self->formulas(); |
my %f=$self->formulas(); |
my %c; |
my %c; |
Line 705 sub compute {
|
Line 769 sub compute {
|
if ($connection->aborted()) { $self->cleanup(); return; } |
if ($connection->aborted()) { $self->cleanup(); return; } |
# |
# |
# Move the parameters into the spreadsheet |
# Move the parameters into the spreadsheet |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
while (my ($parm,$value) = each(%parameters)) { |
while (my ($parm,$value) = each(%parameters)) { |
my $cell = 'A'.$self->get_row_number_from_key($parm); |
my $cell = 'A'.$self->get_row_number_from_key($parm); |
$f{$cell} = $parm; |
$f{$cell} = $parm; |