--- loncom/interface/spreadsheet/Spreadsheet.pm 2006/05/30 12:46:26 1.69 +++ loncom/interface/spreadsheet/Spreadsheet.pm 2007/01/23 01:29:15 1.73 @@ -1,5 +1,5 @@ # -# $Id: Spreadsheet.pm,v 1.69 2006/05/30 12:46:26 www Exp $ +# $Id: Spreadsheet.pm,v 1.73 2007/01/23 01:29:15 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -172,16 +172,20 @@ sub filename { $newfilename = 'default_'.$self->{'type'}; } } - if ($newfilename !~ /\w/ || $newfilename =~ /^\W*$/) { - $newfilename = 'default_'.$self->{'type'}; - } - if ($newfilename !~ /^default\.$self->{'type'}$/ && - $newfilename !~ /^\/res\/(.*)spreadsheet$/) { - if ($newfilename !~ /_$self->{'type'}$/) { - $newfilename =~ s/[\s_]*$//; - $newfilename .= '_'.$self->{'type'}; - } - } + if ($newfilename eq &mt('LON-CAPA Standard')) { + undef($newfilename); + } else { + if ($newfilename !~ /\w/ || $newfilename =~ /^\W*$/) { + $newfilename = 'default_'.$self->{'type'}; + } + if ($newfilename !~ /^default\.$self->{'type'}$/ && + $newfilename !~ /^\/res\/(.*)spreadsheet$/) { + if ($newfilename !~ /_$self->{'type'}$/) { + $newfilename =~ s/[\s_]*$//; + $newfilename .= '_'.$self->{'type'}; + } + } + } $self->{'filename'} = $newfilename; return; } @@ -803,6 +807,8 @@ sub expandnamed { if ($expression=~/^\&/) { my ($func,$var,$formula)=($expression=~/^\&(\w+)\(([^\;]+)\;(.*)\)/); my @vars=split(/\W+/,$formula); + # make the list uniq + @vars = keys(%{{ map { $_ => 1 } @vars }}); my %values=(); foreach my $varname ( @vars ) { if ($varname=~/^(parameter|stores|timestamp)/) { @@ -1286,8 +1292,8 @@ sub html_template_row { $row_html .= ''. &html_uneditable_cell($cell,'#FFDDDD',$allowed).''; } else { - $row_html .= ''. - &html_editable_cell($cell,'#EOFFDD',$allowed, + $row_html .= ''. + &html_editable_cell($cell,'#E0FFDD',$allowed, $self->{outputmode} eq 'source').''; } } @@ -1363,7 +1369,7 @@ sub html_row { $row_html .= ''; $row_html .= &html_uneditable_cell($cell,'#FFDDDD'); } else { - $row_html .= ''; + $row_html .= ''; $row_html .= &html_editable_cell($cell,'#E0FFDD',$allowed, $self->{outputmode} eq 'source'); } @@ -1684,7 +1690,8 @@ sub load { # Load the spreadsheet definition file from the save file my %tmphash = &Apache::lonnet::dump($filename,$cdom,$cnum); my ($tmp) = keys(%tmphash); - if ($tmp !~ /^(con_lost|error|no_such_host)/i) { + if (%tmphash + && $tmp !~ /^(con_lost|error|no_such_host)/i) { while (my ($cell,$formula) = each(%tmphash)) { $formulas->{$cell}=$formula; } @@ -1881,14 +1888,13 @@ sub othersheets { my ($stype) = @_; $stype = $self->{'type'} if (! defined($stype) || $stype !~ /calc$/); # - my @alternatives=(); + my @alternatives=(&mt('Default'), &mt('LON-CAPA Standard')); my %results=&Apache::lonnet::dump($stype.'_spreadsheets', $self->{'cdom'}, $self->{'cnum'}); my ($tmp) = keys(%results); - if ($tmp =~ /^(con_lost|error|no_such_host)/i ) { - @alternatives = (&mt('Default')); - } else { - @alternatives = (&mt('Default'), sort (keys(%results))); + if (%results + && $tmp !~ /^(con_lost|error|no_such_host)/i ) { + push(@alternatives, sort(keys(%results))); } return @alternatives; }