version 1.11, 2003/05/29 13:39:38
|
version 1.12, 2003/05/29 18:31:27
|
Line 97 sub new {
|
Line 97 sub new {
|
chome => $ENV{'course.'.$ENV{'request.course.id'}.'.home'}, |
chome => $ENV{'course.'.$ENV{'request.course.id'}.'.home'}, |
coursedesc => $ENV{'course.'.$ENV{'request.course.id'}.'.description'}, |
coursedesc => $ENV{'course.'.$ENV{'request.course.id'}.'.description'}, |
coursefilename => $ENV{'request.course.fn'}, |
coursefilename => $ENV{'request.course.fn'}, |
temporary => '', |
# |
|
# Flags |
|
temporary => 0, # true if this sheet has been modified but not saved |
|
new_rows => 0, # true if this sheet has new rows |
# |
# |
# blackout is used to determine if any data needs to be hidden from the |
# blackout is used to determine if any data needs to be hidden from the |
# student. |
# student. |
Line 1555 sub set_row_sources {
|
Line 1558 sub set_row_sources {
|
return; |
return; |
} |
} |
|
|
|
sub set_row_numbers { |
|
my $self = shift; |
|
while (my ($cell,$value) = each(%{$self->{'formulas'}})) { |
|
next if ($cell !~ /^A(\d+)$/); |
|
next if (! defined($value)); |
|
$self->{'row_numbers'}->{$value} = $1; |
|
$self->{'maxrow'} = $1 if ($1 > $self->{'maxrow'}); |
|
} |
|
} |
|
|
## |
## |
## exportrow is *not* used to get the export row from a computed sub-sheet. |
## exportrow is *not* used to get the export row from a computed sub-sheet. |
## |
## |
Line 1579 sub save {
|
Line 1592 sub save {
|
my $cnum = $self->{'cnum'}; |
my $cnum = $self->{'cnum'}; |
my $cdom = $self->{'cdom'}; |
my $cdom = $self->{'cdom'}; |
my $chome = $self->{'chome'}; |
my $chome = $self->{'chome'}; |
my $fn = $self->{'filename'}; |
my $filename = $self->{'filename'}; |
|
my $cachekey = join('_',($cnum,$cdom,$stype,$filename)); |
# Cache new sheet |
# Cache new sheet |
$spreadsheets{$cnum.'_'.$cdom.'_'.$stype.'_'.$fn}=join('___;___',%f); |
%{$spreadsheets{$cachekey}}=%f; |
# Write sheet |
# Write sheet |
foreach (keys(%f)) { |
foreach (keys(%f)) { |
delete($f{$_}) if ($f{$_} eq 'import'); |
delete($f{$_}) if ($f{$_} eq 'import'); |
} |
} |
my $reply = &Apache::lonnet::put($fn,\%f,$cdom,$cnum); |
my $reply = &Apache::lonnet::put($filename,\%f,$cdom,$cnum); |
return $reply if ($reply ne 'ok'); |
return $reply if ($reply ne 'ok'); |
$reply = &Apache::lonnet::put($stype.'_spreadsheets', |
$reply = &Apache::lonnet::put($stype.'_spreadsheets', |
{$fn => $ENV{'user.name'}.'@'.$ENV{'user.domain'}}, |
{$filename => $ENV{'user.name'}.'@'.$ENV{'user.domain'}}, |
$cdom,$cnum); |
$cdom,$cnum); |
return $reply if ($reply ne 'ok'); |
return $reply if ($reply ne 'ok'); |
if ($makedef) { |
if ($makedef) { |
$reply = &Apache::lonnet::put('environment', |
$reply = &Apache::lonnet::put('environment', |
{'spreadsheet_default_'.$stype => $fn }, |
{'spreadsheet_default_'.$stype => $filename }, |
$cdom,$cnum); |
$cdom,$cnum); |
return $reply if ($reply ne 'ok'); |
return $reply if ($reply ne 'ok'); |
} |
} |
Line 1727 sub get_template_row {
|
Line 1741 sub get_template_row {
|
return @cols; |
return @cols; |
} |
} |
|
|
sub set_row_numbers { |
sub need_to_save { |
my $self = shift; |
my $self = shift; |
my %f=$self->formulas(); |
if ($self->{'new_rows'} && ! $self->temporary()) { |
while (my ($cell,$value) = each(%{$self->{'formulas'}})) { |
return 1; |
next if ($cell !~ /^A(\d+)$/); |
|
next if (! defined($value)); |
|
$self->{'row_numbers'}->{$value} = $1; |
|
} |
} |
|
return 0; |
} |
} |
|
|
sub get_row_number_from_key { |
sub get_row_number_from_key { |
Line 1746 sub get_row_number_from_key {
|
Line 1758 sub get_row_number_from_key {
|
# may not be the key we need to save |
# may not be the key we need to save |
$self->{'maxrow'}++; |
$self->{'maxrow'}++; |
$self->{'row_numbers'}->{$key} = $self->{'maxrow'}; |
$self->{'row_numbers'}->{$key} = $self->{'maxrow'}; |
|
$self->{'new_rows'} = 1; |
} |
} |
return $self->{'row_numbers'}->{$key}; |
return $self->{'row_numbers'}->{$key}; |
} |
} |