--- loncom/homework/edit.pm	2007/02/18 02:00:59	1.105
+++ loncom/homework/edit.pm	2008/10/24 16:22:54	1.116
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # edit mode helpers
 #
-# $Id: edit.pm,v 1.105 2007/02/18 02:00:59 albertel Exp $
+# $Id: edit.pm,v 1.116 2008/10/24 16:22:54 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -61,7 +61,7 @@ sub tag_start {
 	    if (!$description) { $description="<$tag>"; }
 	}
 	$result.= &start_table($token)."<tr><td>$description</td>
-                      <td>Delete".
+                      <td>".&mt('Delete?').' '.
 		      &deletelist($target,$token)
 		      ."</td>
                        <td>".
@@ -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>';          }
 
@@ -145,7 +145,7 @@ sub deletelist {
     my ($target,$token) = @_;
     my $result = "<select name=\"delete_$Apache::lonxml::curdepth\">
 <option></option>
-<option>Yes</option>
+<option>".&mt('yes')."</option>
 </select>";
     return $result;
 }
@@ -215,7 +215,7 @@ sub innerinsertlist {
     if ($target eq 'edit') {
 	my $optionlist= &get_insert_list($tagname);
 	if ($optionlist) {
-	    $result = "Insert:
+	    $result = &mt('Insert:')."
             <select name=\"insert$after\_$Apache::lonxml::curdepth\">
                   $optionlist
             </select>"
@@ -324,6 +324,56 @@ sub insert_customresponse_answer {
 ';
 }
 
+sub insert_customhint {
+    return '
+        <customhint>
+            <answer type="loncapa/perl">
+            </answer>
+        </customhint>';
+}
+
+sub insert_customhint_answer {
+    return '
+            <answer type="loncapa/perl">
+            </answer>
+';
+}
+
+sub insert_mathresponse {
+    return '
+<mathresponse>
+    <answer>
+    </answer>
+    <textline />
+    <hintgroup>
+        <startouttext />
+        <endouttext />
+    </hintgroup>
+</mathresponse>';
+}
+
+sub insert_mathresponse_answer {
+    return '
+    <answer>
+    </answer>
+';
+}
+
+sub insert_mathhint {
+    return '
+        <mathhint>
+            <answer>
+            </answer>
+        </mathhint>';
+}
+
+sub insert_mathhint_answer {
+    return '
+            <answer>
+            </answer>
+';
+}
+
 sub insert_stringresponse {
     return '
 <stringresponse answer="" type="">
@@ -527,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 {
@@ -547,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
@@ -569,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);
@@ -622,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;
@@ -636,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.=' />';
@@ -683,11 +740,11 @@ sub checked_arg {
 	    $text=$option;
 	    $value='value="'.$option.'"';
 	}
-	$result.="<nobr><label><input type='checkbox' $value name='".
-	    &html_element_name($name)."'";
+	$result.="<nobr><label><input type=\"checkbox\" $value name=\"".
+	    &html_element_name($name)."\"";
 	foreach my $selected (split(/,/,$allselected)) {
 	    if ( $selected eq $option ) {
-		$result.=" checked='checked' ";
+		$result.=" checked=\"checked\" ";
 		last;
 	    }
 	}
@@ -723,12 +780,12 @@ sub select_arg {
 	    $value='value="'.&HTML::Entities::encode($option,'\'"&<>').'"';
 	}
 	if ( $selected eq $option ) {
-	    $optionlist.="<option $value selected=\"selected\">$text</option>\n";
+	    $optionlist.="<option $value selected=\"selected\">".&mt($text)."</option>\n";
 	} else {
-	    $optionlist.="<option $value >$text</option>\n";
+	    $optionlist.="<option $value >".&mt($text)."</option>\n";
 	}
     }
-    $result.='<nobr>'.$description.'&nbsp;<select name="'.
+    $result.='<nobr>'.&mt($description).'&nbsp;<select name="'.
 	&html_element_name($name).'" '.&element_change_detection().' >
        '.$optionlist.'
       </select></nobr>';
@@ -823,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;
@@ -856,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>';
@@ -870,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') {
@@ -881,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>