version 1.39, 2005/04/07 06:56:23
|
version 1.43, 2005/05/15 02:28:23
|
Line 661 sub get_problem_state {
|
Line 661 sub get_problem_state {
|
|
|
sub determine_parts { |
sub determine_parts { |
my $self = shift; |
my $self = shift; |
|
my $check_hidden = shift; |
if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { |
if (exists($self->{'Parts'}) && ref($self->{'Parts'}) eq 'HASH') { |
return; |
return; |
} |
} |
Line 671 sub determine_parts {
|
Line 672 sub determine_parts {
|
my $metadata = &Apache::lonnet::metadata($src,'packages'); |
my $metadata = &Apache::lonnet::metadata($src,'packages'); |
foreach (split(',',$metadata)) { |
foreach (split(',',$metadata)) { |
my ($part) = (/^part_(.*)$/); |
my ($part) = (/^part_(.*)$/); |
if (defined($part) && |
if (!defined($part)) { next; } |
! &Apache::loncommon::check_if_partid_hidden |
if (!$check_hidden) { $Parts{$part}++; next; } |
($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) |
if (!&Apache::loncommon::check_if_partid_hidden |
|
($part,$self->{'symb'},$self->{'name'},$self->{'domain'}) |
) { |
) { |
$Parts{$part}++; |
$Parts{$part}++; |
} |
} |
Line 708 sub parameter_part_is_valid {
|
Line 710 sub parameter_part_is_valid {
|
sub compute { |
sub compute { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
my $connection = $r->connection(); |
|
if ($connection->aborted()) { $self->cleanup(); return; } |
|
$self->initialize_safe_space(); |
$self->initialize_safe_space(); |
######################################### |
######################################### |
######################################### |
######################################### |
Line 737 sub compute {
|
Line 737 sub compute {
|
} |
} |
# |
# |
# Get the values of the metadata fields |
# Get the values of the metadata fields |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
$self->ensure_current_caches(); |
$self->ensure_current_caches(); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
%parameters = $self->get_parameter_values(keys(%parameters)); |
%parameters = $self->get_parameter_values(keys(%parameters)); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
# |
# |
# Clean out unnecessary parameters |
# Clean out unnecessary parameters |
foreach (keys(%parameters)) { |
foreach (keys(%parameters)) { |
Line 749 sub compute {
|
Line 746 sub compute {
|
} |
} |
# |
# |
# Get the students performance data |
# Get the students performance data |
|
$self->determine_parts(($parameters{'parameter_0_hiddenparts'} ne '')); |
my %student_parameters = $self->get_problem_state(); |
my %student_parameters = $self->get_problem_state(); |
while (my ($parm,$value) = each(%student_parameters)) { |
while (my ($parm,$value) = each(%student_parameters)) { |
$parm =~ s/^resource\./stores_/; |
$parm =~ s/^resource\./stores_/; |
$parm =~ s/\./_/g; |
$parm =~ s/\./_/g; |
$parameters{$parm} = $value; |
# Clean out any bad parameters |
} |
next if (! $self->parameter_part_is_valid($parm)); |
# |
$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 |
Line 783 sub compute {
|
Line 775 sub compute {
|
} |
} |
} |
} |
} |
} |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
# |
# |
# Move the parameters into the spreadsheet |
# Move the parameters into the spreadsheet |
while (my ($parm,$value) = each(%parameters)) { |
while (my ($parm,$value) = each(%parameters)) { |
Line 797 sub compute {
|
Line 788 sub compute {
|
} |
} |
$self->formulas(\%f); |
$self->formulas(\%f); |
$self->constants(\%c); |
$self->constants(\%c); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
$self->calcsheet(); |
$self->calcsheet(); |
# |
# |
# Store export row in cache |
# Store export row in cache |
my @exportarray = $self->exportrow(); |
my @exportarray = $self->exportrow(); |
$self->deal_with_export_row(@exportarray); |
$self->deal_with_export_row(@exportarray); |
$self->save() if ($self->need_to_save()); |
$self->save() if ($self->need_to_save()); |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
return; |
return; |
} |
} |
|
|
Line 814 sub compute {
|
Line 803 sub compute {
|
sub sett { |
sub sett { |
my $self = shift; |
my $self = shift; |
my %t=(); |
my %t=(); |
|
undef(%Apache::Spreadsheet::sheet_values); |
# |
# |
# Deal with the template row by copying the template formulas into each |
# Deal with the template row by copying the template formulas into each |
# row. |
# row. |
Line 840 sub sett {
|
Line 830 sub sett {
|
next if ($cell =~ /template_/); |
next if ($cell =~ /template_/); |
if ($cell =~ /^A/ && $cell ne 'A0') { |
if ($cell =~ /^A/ && $cell ne 'A0') { |
if ($formula !~ /^\!/) { |
if ($formula !~ /^\!/) { |
$t{$cell}=$self->{'constants'}->{$formula}; |
$Apache::Spreadsheet::sheet_values{$cell}= |
|
eval($self->{'constants'}->{$formula}); |
} |
} |
} else { |
} else { |
$t{$cell}=$formula; |
$t{$cell}=$formula; |
Line 919 spreadsheet only if necessary.
|
Line 910 spreadsheet only if necessary.
|
sub export_data { |
sub export_data { |
my $self = shift; |
my $self = shift; |
my ($r) = @_; |
my ($r) = @_; |
my $connection = $r->connection(); |
|
my $symb = $self->{'symb'}; |
my $symb = $self->{'symb'}; |
if (! exists($env{'request.role.adv'}) || ! $env{'request.role.adv'} || |
if (! exists($env{'request.role.adv'}) || ! $env{'request.role.adv'} || |
! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || |
! exists($Exportrows{$symb}) || ! defined($Exportrows{$symb}) || |
Line 930 sub export_data {
|
Line 920 sub export_data {
|
) { |
) { |
$self->compute($r); |
$self->compute($r); |
} |
} |
if ($connection->aborted()) { $self->cleanup(); return; } |
|
my @Data; |
my @Data; |
if ($self->badcalc()) { |
if ($self->badcalc()) { |
@Data = (); |
@Data = (); |