[LON-CAPA-cvs] cvs: loncom /homework edit.pm

albertel lon-capa-cvs@mail.lon-capa.org
Mon, 08 Sep 2003 21:22:15 -0000


This is a MIME encoded message

--albertel1063056135
Content-Type: text/plain

albertel		Mon Sep  8 17:22:15 2003 EDT

  Modified files:              
    /loncom/homework	edit.pm 
  Log:
  - retabinate
  
  
--albertel1063056135
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20030908172215.txt"

Index: loncom/homework/edit.pm
diff -u loncom/homework/edit.pm:1.62 loncom/homework/edit.pm:1.63
--- loncom/homework/edit.pm:1.62	Mon Sep  8 17:17:54 2003
+++ loncom/homework/edit.pm	Mon Sep  8 17:22:15 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # edit mode helpers
 #
-# $Id: edit.pm,v 1.62 2003/09/08 21:17:54 albertel Exp $
+# $Id: edit.pm,v 1.63 2003/09/08 21:22:15 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -45,85 +45,85 @@
 $Apache::edit::bgimgsrccurdepth='';
 
 sub initialize_edit {
-  $Apache::edit::colordepth=0;
-  @Apache::edit::inserttag=();
+    $Apache::edit::colordepth=0;
+    @Apache::edit::inserttag=();
 }
 
 sub tag_start {
-  my ($target,$token,$description) = @_;
-  my $result='';
-  if ($target eq "edit") {
-    my $tag=$token->[1];
-    if (!$description) {
-      $description=&Apache::lonxml::description($token);
-      if (!$description) { $description="<$tag>"; }
-    }
-    $result.= &start_table($token)."<tr><td>$description</td>
-<td>Delete".
-  &deletelist($target,$token)
-  ."</td>
-<td>".
-    &insertlist($target,$token);
+    my ($target,$token,$description) = @_;
+    my $result='';
+    if ($target eq "edit") {
+	my $tag=$token->[1];
+	if (!$description) {
+	    $description=&Apache::lonxml::description($token);
+	    if (!$description) { $description="&lt;$tag&gt;"; }
+	}
+	$result.= &start_table($token)."<tr><td>$description</td>
+                      <td>Delete".
+		      &deletelist($target,$token)
+		      ."</td>
+                       <td>".
+		       &insertlist($target,$token);
 #<td>". 
 #  &movebuttons($target,$token).
 #    "</tr><tr><td colspan=\"3\">\n";
-    my @help;# = Apache::lonxml::helpinfo($token);
-    if ($help[0]) {
-	$result .= '<td align="right" valign="top">' .
-	    Apache::loncommon::help_open_topic(@help) .
-	    '</td>';
-    } else { $result .= "<td>&nbsp;</td>"; }
-    $result .= &end_row().&start_spanning_row();
-  }
-  return $result;
+	my @help;# = Apache::lonxml::helpinfo($token);
+	if ($help[0]) {
+	    $result .= '<td align="right" valign="top">' .
+		Apache::loncommon::help_open_topic(@help) .
+		'</td>';
+	} else { $result .= "<td>&nbsp;</td>"; }
+	$result .= &end_row().&start_spanning_row();
+    }
+    return $result;
 }
 
 sub tag_end {
-  my ($target,$token,$description) = @_;
-  my $result='';
-  if ($target eq 'edit') {
-    $result.="</td></tr>".&end_table()."\n";
-  }
-  return $result;
+    my ($target,$token,$description) = @_;
+    my $result='';
+    if ($target eq 'edit') {
+	$result.="</td></tr>".&end_table()."\n";
+    }
+    return $result;
 }
 
 sub start_table {
-  my ($token)=@_;
-  my $tag = $token->[1];
-  my $tagnum;
-  foreach my $namespace (reverse @Apache::lonxml::namespace) {
-    my $testtag=$namespace.'::'.$tag;
-    $tagnum=$Apache::lonxml::insertlist{"$testtag.num"};
-    if (defined($tagnum)) { last; }
-  }
-  if (!defined ($tagnum)) { $tagnum=$Apache::lonxml::insertlist{"$tag.num"}; }
-  my $color = $Apache::lonxml::insertlist{"$tagnum.color"};
-  if (!defined($color)) {
-    $color = $Apache::edit::colorlist[$Apache::edit::colordepth];
-  }
-  $Apache::edit::colordepth++;
-  push(@Apache::edit::inserttag,$token->[1]);
-  my $result='<div align="right">';
-  $result.='<table bgcolor="'.$color.'" width="97%" border="0" cellspacing="5" cellpadding="3">';
-  return $result;
+    my ($token)=@_;
+    my $tag = $token->[1];
+    my $tagnum;
+    foreach my $namespace (reverse @Apache::lonxml::namespace) {
+	my $testtag=$namespace.'::'.$tag;
+	$tagnum=$Apache::lonxml::insertlist{"$testtag.num"};
+	if (defined($tagnum)) { last; }
+    }
+    if (!defined ($tagnum)) {$tagnum=$Apache::lonxml::insertlist{"$tag.num"};}
+    my $color = $Apache::lonxml::insertlist{"$tagnum.color"};
+    if (!defined($color)) {
+	$color = $Apache::edit::colorlist[$Apache::edit::colordepth];
+    }
+    $Apache::edit::colordepth++;
+    push(@Apache::edit::inserttag,$token->[1]);
+    my $result='<div align="right">';
+    $result.='<table bgcolor="'.$color.'" width="97%" border="0" cellspacing="5" cellpadding="3">';
+    return $result;
 }
 
 sub end_table {
-  $Apache::edit::colordepth--;
-  my $result='</table></div>';
-  $result.="<table><tr><td>";
-
-  my ($tagname,$closingtag);
-  if (defined($Apache::edit::inserttag[-2])) {
-    $tagname=$Apache::edit::inserttag[-2];
-  } else {$tagname='problem';}
-  if (defined($Apache::edit::inserttag[-1])) {
-    $closingtag=$Apache::edit::inserttag[-1];
-  }
-  $result.=&innerinsertlist('edit',$tagname,$closingtag).
-    "</td></tr></table>";
-  pop(@Apache::edit::inserttag);
-  return $result;
+    $Apache::edit::colordepth--;
+    my $result='</table></div>';
+    $result.="<table><tr><td>";
+
+    my ($tagname,$closingtag);
+    if (defined($Apache::edit::inserttag[-2])) {
+	$tagname=$Apache::edit::inserttag[-2];
+    } else {$tagname='problem';}
+    if (defined($Apache::edit::inserttag[-1])) {
+	$closingtag=$Apache::edit::inserttag[-1];
+    }
+    $result.=&innerinsertlist('edit',$tagname,$closingtag).
+	"</td></tr></table>";
+    pop(@Apache::edit::inserttag);
+    return $result;
 }
 
 sub start_spanning_row { return '<tr><td colspan="4" bgcolor="#DDDDDD">';}
@@ -131,154 +131,155 @@
 sub end_row            { return '</td></tr>';          }
 
 sub movebuttons {
-  my ($target,$token) = @_;
-  my $result='<input type="submit" name="moveup.'.
-    $Apache::lonxml::curdepth.'" value="Move Up" />';
-  $result.='<input type="submit" name="movedown.'.
-    $Apache::lonxml::curdepth.'" value="Move Down" />';
-  return $result;
+    my ($target,$token) = @_;
+    my $result='<input type="submit" name="moveup.'.
+	$Apache::lonxml::curdepth.'" value="Move Up" />';
+    $result.='<input type="submit" name="movedown.'.
+	$Apache::lonxml::curdepth.'" value="Move Down" />';
+    return $result;
 }
 
 sub deletelist {
-  my ($target,$token) = @_;
-  my $result = "<select name=\"delete_$Apache::lonxml::curdepth\">
+    my ($target,$token) = @_;
+    my $result = "<select name=\"delete_$Apache::lonxml::curdepth\">
 <option></option>
 <option>Yes</option>
 </select>";
-  return $result;
+    return $result;
 }
 
 sub handle_delete {
-  if (!$ENV{"form.delete_$Apache::lonxml::curdepth"}) { return ''; }
-  my ($space,$target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-  my $result=0;
-  if ($space) {
-    my $sub1="$space\:\:delete_$token->[1]";
-    {
-      no strict 'refs';
-      if (defined &$sub1) {
-	$result=&$sub1($target,$token,$tagstack,$parstack,$parser,$safeeval,$style);
-      }
-    }
-  }
-  if (!$result) {
-    my $endtag='/'.$token->[1];
-    my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser);
-    $$parser['-1']->get_token();
-    &Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]");
-    &Apache::lonxml::end_tag($tagstack,$parstack,$token);
-  }
-  return 1;
+    if (!$ENV{"form.delete_$Apache::lonxml::curdepth"}) { return ''; }
+    my ($space,$target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+    my $result=0;
+    if ($space) {
+	my $sub1="$space\:\:delete_$token->[1]";
+	{
+	    no strict 'refs';
+	    if (defined &$sub1) {
+		$result=&$sub1($target,$token,$tagstack,$parstack,$parser,$safeeval,$style);
+	    }
+	}
+    }
+    if (!$result) {
+	my $endtag='/'.$token->[1];
+	my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser);
+	$$parser['-1']->get_token();
+	&Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]");
+	&Apache::lonxml::end_tag($tagstack,$parstack,$token);
+    }
+    return 1;
 }
 
 sub get_insert_list {
-  my ($tagname) = @_;
-  my $result='';
-  my @tagnums= ();
-  #&Apache::lonxml::debug("keys ".join("\n",sort(keys(%Apache::lonxml::insertlist))));
-  if ($Apache::lonxml::insertlist{"$tagname.which"}) {
-    push (@tagnums, @{ $Apache::lonxml::insertlist{"$tagname.which"} });
-  }
-  foreach my $namespace (@Apache::lonxml::namespace) {
-    if ($Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"}) {
-      push (@tagnums, @{ $Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"} });
-    }
-  }
-  if (@tagnums) {
-    my %options;
-    foreach my $tagnum (@tagnums) {
-      my $descrip=$Apache::lonxml::insertlist{"$tagnum.description"};
-      $options{$descrip} ="<option value=\"$tagnum\">".$descrip."</option>\n";
-    }
-    foreach my $option (sort(keys(%options))) { $result.=$options{$option}; }
-    if ($result) { $result='<option selected="on"></option>'.$result; }
-  }
-  return $result;
+    my ($tagname) = @_;
+    my $result='';
+    my @tagnums= ();
+    #&Apache::lonxml::debug("keys ".join("\n",sort(keys(%Apache::lonxml::insertlist))));
+    if ($Apache::lonxml::insertlist{"$tagname.which"}) {
+	push (@tagnums, @{ $Apache::lonxml::insertlist{"$tagname.which"} });
+    }
+    foreach my $namespace (@Apache::lonxml::namespace) {
+	if ($Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"}) {
+	    push (@tagnums, @{ $Apache::lonxml::insertlist{"$namespace".'::'."$tagname.which"} });
+	}
+    }
+    if (@tagnums) {
+	my %options;
+	foreach my $tagnum (@tagnums) {
+	    my $descrip=$Apache::lonxml::insertlist{"$tagnum.description"};
+	    $options{$descrip} ="<option value=\"$tagnum\">".
+		$descrip."</option>\n";
+	}
+	foreach my $option (sort(keys(%options))) {$result.=$options{$option};}
+	if ($result) { $result='<option selected="on"></option>'.$result; }
+    }
+    return $result;
 }
 
 sub insertlist {
-  my ($target,$token) = @_;
-  return &innerinsertlist($target,$token->[1]);
+    my ($target,$token) = @_;
+    return &innerinsertlist($target,$token->[1]);
 }
 
 sub innerinsertlist {
-  my ($target,$tagname,$closingtag) = @_;
-  my $result;
-  my $after='';
-  if ($closingtag) {
-     $after='_after_'.$closingtag; 
-  }
-  if ($target eq 'edit') {
-    my $optionlist= &get_insert_list($tagname);
-    if ($optionlist) {
-      $result = "Insert:
-<select name=\"insert$after\_$Apache::lonxml::curdepth\">
-$optionlist
-</select>"
-    } else {
-      $result="&nbsp;";
+    my ($target,$tagname,$closingtag) = @_;
+    my $result;
+    my $after='';
+    if ($closingtag) {
+	$after='_after_'.$closingtag; 
+    }
+    if ($target eq 'edit') {
+	my $optionlist= &get_insert_list($tagname);
+	if ($optionlist) {
+	    $result = "Insert:
+            <select name=\"insert$after\_$Apache::lonxml::curdepth\">
+                  $optionlist
+            </select>"
+	} else {
+	    $result="&nbsp;";
+	}
     }
-  }
-  return $result;
+    return $result;
 }
 
 sub handle_insert {
-  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"};
-  if ($func eq 'default') {
-    my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
-    my $namespace;
-    if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
-    $result.="\n<$newtag>\n</$newtag>";
-  } else {
-    if (defined(&$func)) {
-      {
-	no strict 'refs';
-	$result.=&$func();
-      }
+    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"};
+    if ($func eq 'default') {
+	my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
+	my $namespace;
+	if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
+	$result.="\n<$newtag>\n</$newtag>";
     } else {
-      my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
-      &Apache::lonxml::error("Unable to insert tag $newtag, $func was not defined.");
+	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;
+    return $result;
 }
 
 sub handle_insertafter {
-  my $tagname=shift;
-  if ($ENV{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"} eq '')
-     { return ''; }
-  my $result;
-  my $tagnum =$ENV{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"};
-  my $func=$Apache::lonxml::insertlist{"$tagnum.function"};
-  if ($func eq 'default') {
-    my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
-    my $namespace;
-    if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
-    $result.="\n<$newtag>\n</$newtag>";
-  } else {
-    if (defined(&$func)) {
-      {
-	no strict 'refs';
-	$result.=&$func();
-      }
+    my $tagname=shift;
+    if ($ENV{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"} eq '')
+    { return ''; }
+    my $result;
+    my $tagnum =$ENV{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"};
+    my $func=$Apache::lonxml::insertlist{"$tagnum.function"};
+    if ($func eq 'default') {
+	my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
+	my $namespace;
+	if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
+	$result.="\n<$newtag>\n</$newtag>";
     } else {
-      my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
-      &Apache::lonxml::error("Unable to insert (after) tag $newtag, $func was not defined. ($tagname $tagnum)");
+	if (defined(&$func)) {
+	    {
+		no strict 'refs';
+		$result.=&$func();
+	    }
+	} else {
+	    my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
+	    &Apache::lonxml::error("Unable to insert (after) tag $newtag, $func was not defined. ($tagname $tagnum)");
+	}
     }
-  }
-  return $result;
+    return $result;
 }
 
 sub insert_responseparam {
-  return '
+    return '
     <responseparam />';
 }
 
 sub insert_formularesponse {
-  return '
+    return '
 <formularesponse answer="" samples="">
     <textline />
     <hintgroup>
@@ -287,7 +288,7 @@
 }
 
 sub insert_numericalresponse {
-  return '
+    return '
 <numericalresponse answer="">
     <textline />
     <hintgroup>
@@ -296,7 +297,7 @@
 }
 
 sub insert_stringresponse {
-  return '
+    return '
 <stringresponse answer="" type="">
     <textline />
     <hintgroup>
@@ -305,14 +306,14 @@
 }
 
 sub insert_essayresponse {
-  return '
+    return '
 <essayresponse>
     <textfield></textfield>
 </essayresponse>';
 }
 
 sub insert_imageresponse {
-  return '
+    return '
 <imageresponse max="1">
     <foilgroup>
     </foilgroup>
@@ -322,7 +323,7 @@
 }
 
 sub insert_optionresponse {
-  return '
+    return '
 <optionresponse max="10">
     <foilgroup options="">
     </foilgroup>
@@ -332,7 +333,7 @@
 }
 
 sub insert_radiobuttonresponse {
-  return '
+    return '
 <radiobuttonresponse max="10">
     <foilgroup>
     </foilgroup>
@@ -342,7 +343,7 @@
 }
 
 sub insert_rankresponse {
-  return '
+    return '
 <rankresponse max="10">
     <foilgroup options="">
     </foilgroup>
@@ -352,7 +353,7 @@
 }
 
 sub insert_matchresponse {
-  return '
+    return '
 <matchresponse max="10">
     <foilgroup options="">
       <itemgroup>
@@ -366,7 +367,7 @@
 sub insert_displayduedate { return '<displayduedate />'; }
 sub insert_displaytitle   { return '<displaytitle />'; }
 sub insert_hintpart {
-  return '
+    return '
 <hintpart on="default">
     <startouttext/>
     <endouttext />
@@ -374,55 +375,55 @@
 }
 
 sub insert_numericalhint {
-  return '
+    return '
 <numericalhint>
 </numericalhint>';
 }
 
 sub insert_stringhint {
-  return '
+    return '
 <stringhint>
 </stringhint>';
 }
 
 sub insert_formulahint {
-  return '
+    return '
 <formulahint>
 </formulahint>';
 }
 
 sub insert_radiobuttonhint {
-  return '
+    return '
 <radiobuttonhint>
 </radiobuttonhint>';
 }
 
 sub insert_optionhint {
-  return '
+    return '
 <optionhint>
 </optionhint>';
 }
 
 sub insert_startouttext {
-  return "<startouttext />\n<endouttext />";
+    return "<startouttext />\n<endouttext />";
 }
 
 sub insert_script {
-  return "\n<script type=\"loncapa/perl\">\n</script>";
+    return "\n<script type=\"loncapa/perl\">\n</script>";
 }
 
 sub textarea_sizes {
-  my ($data)=@_;
-  my $count=0;
-  my $maxlength=-1;
-  foreach (split ("\n", $$data)) {
-      $count+=int(length($_)/79);
-      $count++;
-      if (length($_) > $maxlength) { $maxlength = length($_); }
-  }
-  my $rows = $count;
-  my $cols = $maxlength;
-  return ($rows,$cols);
+    my ($data)=@_;
+    my $count=0;
+    my $maxlength=-1;
+    foreach (split ("\n", $$data)) {
+	$count+=int(length($_)/79);
+	$count++;
+	if (length($_) > $maxlength) { $maxlength = length($_); }
+    }
+    my $rows = $count;
+    my $cols = $maxlength;
+    return ($rows,$cols);
 }
 
 sub editline {
@@ -438,28 +439,29 @@
 }
 
 sub editfield {
-  my ($tag,$data,$description,$minwidth,$minheight)=@_;
+    my ($tag,$data,$description,$minwidth,$minheight)=@_;
 
-  my ($rows,$cols)=&textarea_sizes(\$data);
-  if ($cols > 80) { $cols = 80; }
-  if ($cols < $minwidth ) { $cols = $minwidth; }
-  if ($rows < $minheight) { $rows = $minheight; }
-  if ($description) { $description="<br />".$description."<br />"; }
-  return $description."\n".'&nbsp;&nbsp;&nbsp;<textarea rows="'.$rows.
-    '" cols="'.$cols.'" name="homework_edit_'.$Apache::lonxml::curdepth.'">'.
-      &HTML::Entities::encode($data).'</textarea>'."\n";
+    my ($rows,$cols)=&textarea_sizes(\$data);
+    if ($cols > 80) { $cols = 80; }
+    if ($cols < $minwidth ) { $cols = $minwidth; }
+    if ($rows < $minheight) { $rows = $minheight; }
+    if ($description) { $description="<br />".$description."<br />"; }
+    return $description."\n".'&nbsp;&nbsp;&nbsp;<textarea rows="'.$rows.
+	'" cols="'.$cols.'" name="homework_edit_'.
+	$Apache::lonxml::curdepth.'">'.
+	&HTML::Entities::encode($data).'</textarea>'."\n";
 }
 
 sub modifiedfield {
-  my ($token) = @_;
-  my $result;
+    my ($token) = @_;
+    my $result;
 #  foreach my $envkey (sort keys %ENV) {
 #    &Apache::lonxml::debug("$envkey ---- $ENV{$envkey}");
 #  }
 #  &Apache::lonxml::debug("I want homework_edit_$Apache::lonxml::curdepth");
 #  &Apache::lonxml::debug($ENV{"form.homework_edit_$Apache::lonxml::curdepth"});
-  $result=$ENV{"form.homework_edit_$Apache::lonxml::curdepth"};
-  return $result;
+    $result=$ENV{"form.homework_edit_$Apache::lonxml::curdepth"};
+    return $result;
 }
 
 # Returns a 1 if the token has been modified and you should rebuild the tag
@@ -468,44 +470,44 @@
     my ($token,$parstack,$safeeval,@args)=@_;
     my $rebuild=0;
     foreach my $arg (@args) {
-    #just want the string that it was set to
-    my $value=$token->[2]->{$arg};
-    my $element=&html_element_name($arg);
-    my $newvalue=$ENV{"form.$element"};
-    &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:");
-    if (defined($newvalue) && $value ne $newvalue) {
-	if (ref($newvalue) eq 'ARRAY') {
-	    $token->[2]->{$arg}=join(',',@$newvalue);
-	} else {
-	    $token->[2]->{$arg}=$newvalue;
+	#just want the string that it was set to
+	my $value=$token->[2]->{$arg};
+	my $element=&html_element_name($arg);
+	my $newvalue=$ENV{"form.$element"};
+	&Apache::lonxml::debug("for:$arg: cur is :$value: new is :$newvalue:");
+	if (defined($newvalue) && $value ne $newvalue) {
+	    if (ref($newvalue) eq 'ARRAY') {
+		$token->[2]->{$arg}=join(',',@$newvalue);
+	    } else {
+		$token->[2]->{$arg}=$newvalue;
+	    }
+	    $rebuild=1;
 	}
-	$rebuild=1;
     }
-  }
-  return $rebuild;
+    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:^\s+|\s+$::g;
-      $val=~s:"::g; #"
-      &Apache::lonxml::debug("setting :$key: to  :$val:");
-      $result.=' '.$key.'="'.$val.'"';
-    }
-    if ($token->[4] =~ m:/>$:) {
-      $result.=' />';
-    } else {
-      $result.='>';
+    my ($token) = @_;
+    my $result;
+    if ($token->[0] eq 'S') {
+	$result = '<'.$token->[1];
+	while (my ($key,$val)= each(%{$token->[2]})) {
+	    $val=~s:^\s+|\s+$::g;
+	    $val=~s:"::g; #"
+	    &Apache::lonxml::debug("setting :$key: to  :$val:");
+	    $result.=' '.$key.'="'.$val.'"';
+	}
+	if ($token->[4] =~ m:/>$:) {
+	    $result.=' />';
+	} else {
+	    $result.='>';
+	}
+    } elsif ( $token->[0] eq 'E' ) {
+	$result = '</'.$token->[1].'>';
     }
-  } elsif ( $token->[0] eq 'E' ) {
-    $result = '</'.$token->[1].'>';
-  }
-  return $result;
+    return $result;
 }
 
 sub html_element_name {
@@ -552,13 +554,13 @@
 }
 
 sub text_arg {
-  my ($description,$name,$token,$size) = @_;
-  my $result;
-  if (!defined $size) { $size=20; }
-  my $arg=$token->[2]{$name};
-  $result=$description.'&nbsp;<input name="'.&html_element_name($name).
-    '" type="text" value="'.$arg.'" size="'.$size.'" />';
-  return '<nobr>'.$result.'</nobr>';
+    my ($description,$name,$token,$size) = @_;
+    my $result;
+    if (!defined $size) { $size=20; }
+    my $arg=$token->[2]{$name};
+    $result=$description.'&nbsp;<input name="'.&html_element_name($name).
+	'" type="text" value="'.$arg.'" size="'.$size.'" />';
+    return '<nobr>'.$result.'</nobr>';
 }
 
 sub select_arg {

--albertel1063056135--