--- loncom/homework/edit.pm	2007/05/22 01:03:35	1.106
+++ loncom/homework/edit.pm	2008/08/26 03:18:29	1.115
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # edit mode helpers
 #
-# $Id: edit.pm,v 1.106 2007/05/22 01:03:35 albertel Exp $
+# $Id: edit.pm,v 1.115 2008/08/26 03:18:29 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -128,7 +128,7 @@ sub end_table {
     return $result;
 }
 
-sub start_spanning_row { return '<tr><td colspan="4" bgcolor="#DDDDDD">';}
+sub start_spanning_row { return '<tr><td colspan="5" bgcolor="#DDDDDD">';}
 sub start_row          { return '<tr><td bgcolor="#DDDDDD">';            }
 sub end_row            { return '</td></tr>';          }
 
@@ -577,7 +577,8 @@ sub element_change_detection {
 }
 
 sub submit_ask_anyway {
-    return ' onclick="still_ask=true;" ';
+    my ($extra_action) = @_;
+    return ' onclick="still_ask=true;'.$extra_action.'" ';
 }
 
 sub textarea_sizes {
@@ -597,7 +598,7 @@ sub textarea_sizes {
 sub editline {
     my ($tag,$data,$description,$size)=@_;
     $data=&HTML::Entities::encode($data,'<>&"');
-    if ($description) { $description="<br />".$description."<br />"; }
+    if ($description) { $description=$description."<br />"; }
     my $change_code = &element_change_detection();
     my $result = <<"END";
 $description
@@ -619,7 +620,7 @@ sub editfield {
     if ($cols > 80) { $cols = 80; }
     if ($cols < $minwidth ) { $cols = $minwidth; }
     if ($rows < $minheight) { $rows = $minheight; }
-    if ($description) { $description="<br />".$description."<br />"; }
+    if ($description) { $description=$description."<br />"; }
     if ($usehtmlarea) {
 	&Apache::lonhtmlcommon::add_htmlareafields('homework_edit_'.
 						   $Apache::lonxml::curdepth);
@@ -672,6 +673,10 @@ sub get_new_args {
 		$token->[2]->{$arg}=$newvalue;
 	    }
 	    $rebuild=1;
+	    # add new attributes to the of the attribute seq
+	    if (!grep { $arg eq $_ } (@{ $token->[3] })) {
+		push(@{ $token->[3] },$arg);
+	    }
 	} elsif (!defined($newvalue) && defined($value)) {
 	    delete($token->[2]->{$arg});
 	    $rebuild=1;
@@ -686,11 +691,13 @@ sub rebuild_tag {
     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.'"';
+	foreach my $attribute (@{ $token->[3] }) {
+	    my $value = $token->[2]{$attribute};
+	    next if ($value eq '');
+	    $value =~s/^\s+|\s+$//g;
+	    $value =~s/\"//g;
+	    &Apache::lonxml::debug("setting :$attribute: to  :$value:");
+	    $result.=' '.$attribute.'="'.$value.'"';
 	}
 	if ($token->[4] =~ m:/>$:) {
 	    $result.=' />';
@@ -873,7 +880,7 @@ sub entercoords {
 	$data{"imagechoice.$id.formwidth"}=$width.'_'.
 	    $Apache::edit::bgimgsrccurdepth;
     }
-    &Apache::lonnet::appenv(%data);
+    &Apache::lonnet::appenv(\%data);
     my $text="Click Coordinates";
     my $result='<a href="/adm/imagechoice?token='.$id.'" target="imagechoice">'.$text.'</a>';
     return $result;
@@ -906,7 +913,7 @@ sub entercoord {
 	$data{"imagechoice.$id.formwidth"}=$width.'_'.
 	    $Apache::edit::bgimgsrccurdepth;
     }
-    &Apache::lonnet::appenv(%data);
+    &Apache::lonnet::appenv(\%data);
     my $text="Enter Coordinates";
     if ($type eq 'polygon') { $text='Create Polygon Data'; }
     my $result='<a href="/adm/imagechoice?token='.$id.'" target="imagechoice">'.$text.'</a>';
@@ -920,7 +927,7 @@ sub deletecoorddata {
 #----------------------------------------------------- browse
 sub browse {
     # insert a link to call up the filesystem browser (lonindexer)
-    my ($id, $mode, $titleid) = @_;
+    my ($id, $mode, $titleid, $only) = @_;
     my $form    = 'lonhomework';
     my $element;
     if (! defined($mode) || $mode eq 'attribute') {
@@ -931,7 +938,9 @@ sub browse {
     }
     my $titleelement;
     if ($titleid) {
-	$titleelement=",'','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
+	$titleelement=",'$only','','".&escape("$titleid\_$Apache::lonxml::curdepth")."'";
+    } else {
+        $titleelement=",'$only'";
     }
     my $result = <<"ENDBUTTON";
 <a href=\"javascript:openbrowser('$form','$element'$titleelement)\"\>Select</a>