--- loncom/homework/edit.pm	2001/06/26 21:39:55	1.14
+++ loncom/homework/edit.pm	2001/07/10 22:06:42	1.17
@@ -146,7 +146,7 @@ $optionlist
 }
 
 sub handle_insert {
-  if (!$ENV{"form.insert_$Apache::lonxml::curdepth"}) { return ''; }
+  if ($ENV{"form.insert_$Apache::lonxml::curdepth"} eq '') { return ''; }
   my $result;
   my $tagnum = $ENV{"form.insert_$Apache::lonxml::curdepth"};
   my $func=$Apache::lonxml::insertlist{"$tagnum.function"};
@@ -156,14 +156,33 @@ sub handle_insert {
     if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
     $result.="\n<$newtag>\n</$newtag>";
   } else {
-    {
-      no strict 'refs';
-      $result.=&$func();
+    if (defined(&$func)) {
+      {
+	no strict 'refs';
+	$result.=&$func();
+      }
+    } else {
+      my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
+      &Apache::lonxml::error("Unable to insert tag $newtag, $func was not defined.");
     }
   }
   return $result;
 }
 
+sub insert_responseparam {
+  return '
+    <responseparam />';
+}
+
+sub insert_numericalresponse {
+  return '
+<numericalresponse answer="">
+    <textline />
+    <hintgroup>
+    </hintgroup>
+</numericalresponse>';
+}
+
 sub insert_optionresponse {
   return '
 <optionresponse max="10">
@@ -219,7 +238,7 @@ sub insert_script {
   return "\n<script type=\"loncapa/perl\">\n</script>";
 }
 
-# Returns a 1 if the toekn has been modified and you should rebuild the tag
+# Returns a 1 if the token has been modified and you should rebuild the tag
 # side-effects, will modify the $token if new values are found
 sub get_new_args {
   my ($token,$parstack,$safeeval,@args)=@_;
@@ -236,16 +255,22 @@ sub get_new_args {
   return $rebuild;
 }
 
+# looks for /> on start tags
 sub rebuild_tag {
   my ($token) = @_;
   my $result;
   if ($token->[0] eq 'S') {
     $result = '<'.$token->[1];
     while (my ($key,$val)= each(%{$token->[2]})) {
+      $val=~s:"::g; #"
       &Apache::lonxml::debug("setting :$key: to  :$val:");
       $result.=' '.$key.'="'.$val.'"';
     }
-    $result.=">";
+    if ($token->[4] =~ m:/>$:) {
+      $result.=' />';
+    } else {
+      $result.='>';
+    }
   } elsif ( $token->[0] eq 'E' ) {
     $result = '</'.$token->[1].'>';
   }