--- loncom/interface/spreadsheet/Spreadsheet.pm	2003/12/08 19:43:03	1.32
+++ loncom/interface/spreadsheet/Spreadsheet.pm	2004/02/24 20:47:14	1.36
@@ -1,5 +1,5 @@
 #
-# $Id: Spreadsheet.pm,v 1.32 2003/12/08 19:43:03 matthew Exp $
+# $Id: Spreadsheet.pm,v 1.36 2004/02/24 20:47:14 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -86,6 +86,12 @@ sub new {
     my ($stype) = ($class =~ /Apache::(.*)$/);
     #
     my ($name,$domain,$filename,$usymb)=@_;
+    if (! defined($name) || $name eq '') {
+        $name = $ENV{'user.name'};
+    }
+    if (! defined($domain) || $domain eq '') {
+        $domain = $ENV{'user.domain'};
+    }
     #
     my $self = {
         name     => $name,
@@ -160,7 +166,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'};
@@ -614,7 +621,6 @@ parametername should be a string such as
 sub MINPARM {
     my ($expression) = @_;
     my $min = undef;
-    study($expression);
     foreach $parameter (keys(%c)) {
         next if ($parameter !~ /$expression/);
         if ((! defined($min)) || ($min > $c{$parameter})) {
@@ -639,7 +645,6 @@ parametername should be a string such as
 sub MAXPARM {
     my ($expression) = @_;
     my $max = undef;
-    study($expression);
     foreach $parameter (keys(%c)) {
         next if ($parameter !~ /$expression/);
         if ((! defined($min)) || ($max < $c{$parameter})) {
@@ -845,7 +850,6 @@ sub expandnamed {
         my @matches = ();
         my @values = ();
         $#matches = -1;
-        study $expression;
         while (my($parameter,$value) = each(%{$self->{'constants'}})) {
             next if ($parameter !~ /$expression/);
             push(@matches,$parameter);
@@ -1209,6 +1213,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 +1363,8 @@ sub output_options {
               description => 'HTML'},
              {value       => 'excel',
               description => 'Excel'},
+#             {value       => 'xml',
+#              description => 'XML'},
              {value       => 'csv',
               description => 'Comma Separated Values'},);
 }
@@ -1551,17 +1560,20 @@ sub outsheet_xml   {
     ## But not on this day
     my $Str = '<spreadsheet type="'.$self->{'type'}.'">'."\n";
     while (my ($cell,$formula) = each(%{$self->{'formulas'}})) {
-        if ($cell =~ /^template_(\d+)/) {
+        if ($cell =~ /^template_(\w+)/) {
             my $col = $1;
             $Str .= '<template col="'.$col.'">'.$formula.'</template>'."\n";
         } else {
-            my ($row,$col) = ($cell =~ /^([A-z])(\d+)/);
+            my ($col,$row) = ($cell =~ /^([A-z])(\d+)/);
             next if (! defined($row) || ! defined($col));
-            $Str .= '<field row="'.$row.'" col="'.$col.'" >'.$formula.'</cell>'
+            next if ($row != 0);
+            $Str .= 
+                '<field row="'.$row.'" col="'.$col.'" >'.$formula.'</field>'
                 ."\n";
         }
     }
     $Str.="</spreadsheet>";
+    $r->print("<pre>\n\n\n".$Str."\n\n\n</pre>");
     return $Str;
 }
 
@@ -1588,8 +1600,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');
             }
@@ -1643,7 +1654,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));