--- loncom/interface/spreadsheet/Spreadsheet.pm 2003/11/21 21:51:28 1.31 +++ loncom/interface/spreadsheet/Spreadsheet.pm 2004/01/15 21:20:07 1.34 @@ -1,5 +1,5 @@ # -# $Id: Spreadsheet.pm,v 1.31 2003/11/21 21:51:28 matthew Exp $ +# $Id: Spreadsheet.pm,v 1.34 2004/01/15 21:20:07 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -160,7 +160,8 @@ sub filename { if ($newfilename !~ /\w/ || $newfilename =~ /^\W*$/) { $newfilename = 'default_'.$self->{'type'}; } - if ($newfilename !~ /^default\.$self->{'type'}$/ ) { + if ($newfilename !~ /^default\.$self->{'type'}$/ && + $newfilename !~ /^\/res\/(.*)spreadsheet$/) { if ($newfilename !~ /_$self->{'type'}$/) { $newfilename =~ s/[\s_]*$//; $newfilename .= '_'.$self->{'type'}; @@ -1209,6 +1210,9 @@ sub display { } elsif ($outputmode eq 'csv') { $self->compute($r); $self->outsheet_csv($r); + } elsif ($outputmode eq 'xml') { +# $self->compute($r); + $self->outsheet_xml($r); } $self->cleanup(); return; @@ -1356,6 +1360,8 @@ sub output_options { description => 'HTML'}, {value => 'excel', description => 'Excel'}, +# {value => 'xml', +# description => 'XML'}, {value => 'csv', description => 'Comma Separated Values'},); } @@ -1437,6 +1443,10 @@ sub outsheet_excel { my $self = shift; my ($r) = @_; my $connection = $r->connection(); + # + $r->print($self->html_report_error()); + $r->rflush(); + # $r->print("

".&mt('Preparing Excel Spreadsheet')."

"); # # Create excel worksheet @@ -1479,6 +1489,10 @@ sub outsheet_csv { my $self = shift; my ($r) = @_; my $connection = $r->connection(); + # + $r->print($self->html_report_error()); + $r->rflush(); + # my $csvdata = ''; my @Values; # @@ -1543,17 +1557,20 @@ sub outsheet_xml { ## But not on this day my $Str = ''."\n"; while (my ($cell,$formula) = each(%{$self->{'formulas'}})) { - if ($cell =~ /^template_(\d+)/) { + if ($cell =~ /^template_(\w+)/) { my $col = $1; $Str .= ''."\n"; } else { - my ($row,$col) = ($cell =~ /^([A-z])(\d+)/); + my ($col,$row) = ($cell =~ /^([A-z])(\d+)/); next if (! defined($row) || ! defined($col)); - $Str .= ''.$formula.'' + next if ($row != 0); + $Str .= + ''.$formula.'' ."\n"; } } $Str.=""; + $r->print("
\n\n\n".$Str."\n\n\n
"); return $Str; } @@ -1580,8 +1597,7 @@ sub parse_sheet { $formulas{$cell} = $formula; $sources{$cell} = $source if (defined($source)); $parser->get_text('/field'); - } - if ($token->[1] eq 'template') { + } elsif ($token->[1] eq 'template') { $formulas{'template_'.$token->[2]->{'col'}}= $parser->get_text('/template'); } @@ -1635,7 +1651,7 @@ sub load { # Not cached, need to read if (! defined($filename)) { $formulas = $self->load_system_default_sheet(); - } elsif($self->filename() =~ /^\/res\/.*\.spreadsheet$/) { + } elsif($filename =~ /^\/res\/.*\.spreadsheet$/) { # Load a spreadsheet definition file my $sheetxml=&Apache::lonnet::getfile (&Apache::lonnet::filelocation('',$filename));