version 1.6, 2003/05/23 21:03:29
|
version 1.11, 2003/05/29 13:39:38
|
Line 142 sub filename {
|
Line 142 sub filename {
|
if (@_) { |
if (@_) { |
my ($newfilename) = @_; |
my ($newfilename) = @_; |
if (! defined($newfilename) || $newfilename eq 'Default' || |
if (! defined($newfilename) || $newfilename eq 'Default' || |
$newfilename !~ /\w/ || $newfilename =~ /\W/) { |
$newfilename !~ /\w/) { |
my %tmphash = &Apache::lonnet::get('environment', |
my %tmphash = &Apache::lonnet::get('environment', |
['spreadsheet_default_'. |
['spreadsheet_default_'. |
$self->{'type'}], |
$self->{'type'}], |
Line 152 sub filename {
|
Line 152 sub filename {
|
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
$newfilename=$tmphash{'spreadsheet_default_'.$self->{'type'}}; |
$newfilename=$tmphash{'spreadsheet_default_'.$self->{'type'}}; |
} |
} |
} |
if (! defined($newfilename) || |
if (! defined($newfilename) || |
$newfilename !~ /\w/ || |
$newfilename !~ /\w/ || |
$newfilename =~ /^\W*$/) { |
$newfilename =~ /^\W*$/) { |
$newfilename = 'default.'.$self->{'type'}; |
$newfilename = 'default.'.$self->{'type'}; |
} |
} else { |
} elsif ($newfilename !~ /^\/res\/.*\.spreadsheet/ && |
|
$newfilename !~ /^default\.$self->{'type'}$/ ) { |
my $regexp = '_'.$self->{'type'}.'$'; |
my $regexp = '_'.$self->{'type'}.'$'; |
if ($newfilename !~ /$regexp/) { |
if ($newfilename !~ /$regexp/) { |
$newfilename .= '_'.$self->{'type'}; |
$newfilename .= '_'.$self->{'type'}; |
Line 221 sub is_default {
|
Line 222 sub is_default {
|
return 0; |
return 0; |
} |
} |
|
|
|
sub initialize { |
|
# This method is here to remind you that it will be overridden by |
|
# the descendents of the spreadsheet class. |
|
} |
|
|
sub initialize_spreadsheet_package { |
sub initialize_spreadsheet_package { |
&load_spreadsheet_expirationdates(); |
&load_spreadsheet_expirationdates(); |
&clear_spreadsheet_definition_cache(); |
&clear_spreadsheet_definition_cache(); |
Line 815 sub expandnamed {
|
Line 821 sub expandnamed {
|
push @matches,$parameter if ($parameter =~ /$expression/); |
push @matches,$parameter if ($parameter =~ /$expression/); |
} |
} |
if (scalar(@matches) == 0) { |
if (scalar(@matches) == 0) { |
$returnvalue = 'unmatched parameter: '.$parameter; |
$returnvalue = '""';#'"unmatched parameter: '.$parameter.'"'; |
} elsif (scalar(@matches) == 1) { |
} elsif (scalar(@matches) == 1) { |
# why do we not do this lookup here, instead of delaying it? |
# why do we not do this lookup here, instead of delaying it? |
$returnvalue = '$c{\''.$matches[0].'\'}'; |
$returnvalue = '$c{\''.$matches[0].'\'}'; |
Line 831 sub expandnamed {
|
Line 837 sub expandnamed {
|
} else { |
} else { |
# There was a negative number of matches, which indicates |
# There was a negative number of matches, which indicates |
# something is wrong with reality. Better warn the user. |
# something is wrong with reality. Better warn the user. |
$returnvalue = 'bizzare parameter: '.$parameter; |
$returnvalue = '"bizzare parameter: '.$parameter.'"'; |
} |
} |
return $returnvalue; |
return $returnvalue; |
} |
} |
Line 1158 sub html_template_row {
|
Line 1164 sub html_template_row {
|
for (my $i = 0; $i<=$#rowdata; $i++) { |
for (my $i = 0; $i<=$#rowdata; $i++) { |
my $cell = $rowdata[$i]; |
my $cell = $rowdata[$i]; |
if ($i < $num_uneditable) { |
if ($i < $num_uneditable) { |
$row_html .= '<td bgcolor="#DDCCFF">'. |
$row_html .= '<td bgcolor="#FFDDDD">'. |
&html_editable_cell($cell,'#DDCCFF',$allowed).'</td>'; |
&html_uneditable_cell($cell,'#FFDDDD',$allowed).'</td>'; |
} else { |
} else { |
$row_html .= '<td bgcolor="#EOFFDD">'. |
$row_html .= '<td bgcolor="#EOFFDD">'. |
&html_editable_cell($cell,'#EOFFDD',$allowed).'</td>'; |
&html_editable_cell($cell,'#EOFFDD',$allowed).'</td>'; |
Line 1497 sub load {
|
Line 1503 sub load {
|
$sheetxml='<field row="0" col="A"></field>'; |
$sheetxml='<field row="0" col="A"></field>'; |
} |
} |
($formulas,undef) = &parse_sheet(\$sheetxml); |
($formulas,undef) = &parse_sheet(\$sheetxml); |
} elsif($self->filename() =~ /^\/*\.spreadsheet$/) { |
} elsif($self->filename() =~ /^\/res\/.*\.spreadsheet$/) { |
# Load a spreadsheet definition file |
# Load a spreadsheet definition file |
my $sheetxml=&Apache::lonnet::getfile |
my $sheetxml=&Apache::lonnet::getfile |
(&Apache::lonnet::filelocation('',$filename)); |
(&Apache::lonnet::filelocation('',$filename)); |
Line 1604 sub save {
|
Line 1610 sub save {
|
|
|
sub save_tmp { |
sub save_tmp { |
my $self = shift; |
my $self = shift; |
my $fn=$ENV{'user.name'}.'_'. |
my $filename=$ENV{'user.name'}.'_'. |
$ENV{'user.domain'}.'_spreadsheet_'.$self->{'usymb'}.'_'. |
$ENV{'user.domain'}.'_spreadsheet_'.$self->{'usymb'}.'_'. |
$self->{'filename'}; |
$self->{'filename'}; |
$fn=~s/\W/\_/g; |
$filename=~s/\W/\_/g; |
$fn=$Apache::lonnet::tmpdir.$fn.'.tmp'; |
$filename=$Apache::lonnet::tmpdir.$filename.'.tmp'; |
$self->temporary(1); |
$self->temporary(1); |
my $fh; |
my $fh; |
if ($fh=Apache::File->new('>'.$fn)) { |
if ($fh=Apache::File->new('>'.$filename)) { |
my %f = $self->formulas(); |
my %f = $self->formulas(); |
while( my ($cell,$formula) = each(%f)) { |
while( my ($cell,$formula) = each(%f)) { |
next if ($formula eq 'import'); |
next if ($formula eq 'import'); |
Line 1653 sub temporary {
|
Line 1659 sub temporary {
|
if (@_) { |
if (@_) { |
($self->{'temporary'})= @_; |
($self->{'temporary'})= @_; |
} |
} |
$self->logthis('temporary = '.$self->{'temporary'}); |
|
return $self->{'temporary'}; |
return $self->{'temporary'}; |
} |
} |
|
|