--- loncom/homework/edit.pm	2011/02/06 18:43:10	1.134
+++ loncom/homework/edit.pm	2013/05/06 16:07:29	1.144
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # edit mode helpers
 #
-# $Id: edit.pm,v 1.134 2011/02/06 18:43:10 www Exp $
+# $Id: edit.pm,v 1.144 2013/05/06 16:07:29 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -401,10 +401,8 @@ sub insert_functionplotresponse {
     return '
 <functionplotresponse>
 <functionplotelements>
-<spline />
 </functionplotelements>
 <functionplotruleset>
-<functionplotrule />
 </functionplotruleset>
 </functionplotresponse>';
 }
@@ -419,11 +417,51 @@ sub insert_backgroundplot {
 <backgroundplot />';
 }
 
+sub insert_plotobject {
+    return '
+<plotobject />';
+}
+
+sub insert_plotvector {
+    return '
+<plotvector />';
+}
+
+sub insert_drawvectorsum {
+    return '
+<drawvectorsum />';
+}
+
+
 sub insert_functionplotrule {
     return '
 <functionplotrule />';
 }
 
+sub insert_functionplotvectorrule {
+    return '
+<functionplotvectorrule />';
+}
+
+sub insert_functionplotvectorsumrule {
+    return '
+<functionplotvectorsumrule />';
+}
+
+sub insert_functionplotcustomrule {
+    return '
+<functionplotcustomrule>
+<answer type="loncapa/perl">
+# &fpr_val("label"), &fpr_f($x), &fpr_dfdx($x), &fpr_d2fdx2($x)
+# ($xs,$xe,$ys,$ye)=&fpr_vectorcoords("Name"), ($x,$y)=&fpr_objectcoords("Name")
+# &fpr_vectorlength("Name"), &fpr_vectorangle("Name")
+ 
+# Return 0 or 1
+return 1;
+</answer>
+</functionplotcustomrule>';
+}
+
 sub insert_functionplotruleset {
     return '
 <functionplotruleset>
@@ -706,6 +744,7 @@ sub js_change_detection {
     my $unsaved=&mt("There are unsaved changes");
     return (<<SCRIPT);
 <script type="text/javascript">
+// <![CDATA[
 var clean = true;
 var is_submit = false;
 var still_ask = false;
@@ -724,6 +763,7 @@ function unClean() {
      clean=false;
 }
 window.onbeforeunload = compareForm;
+// ]]>
 </script>
 SCRIPT
 }
@@ -788,20 +828,20 @@ sub editfield {
     if ($cols > 80) { $cols = 80; }
     if ($cols < $minwidth ) { $cols = $minwidth; }
     if ($rows < $minheight) { $rows = $minheight; }
-    if ($description) { $description=$description."<br />"; }
+    if ($description) { $description='<br />'.&mt($description).'<br />'; }
 
     # remove typesetting whitespace from between data and the end tag
     # to make the edit look prettier
     $data =~ s/\n?[ \t]*$//;
 
-    return $description."\n".'<textarea style="width:100%" rows="'.$rows.
+    return $description."\n".'<textarea style="width:99%" rows="'.$rows.
 	'" cols="'.$cols.'" name="homework_edit_'.
 	$Apache::lonxml::curdepth.'" id="homework_edit_'.
 	$Apache::lonxml::curdepth.'" '.&element_change_detection().
         $textareaclass.'>'.
 	&HTML::Entities::encode($data,'<>&"').'</textarea>'.
-	($usehtmlarea?&Apache::lonhtmlcommon::spelllink('lonhomework',
-			 'homework_edit_'.$Apache::lonxml::curdepth):'')."\n";
+        ($usehtmlarea?'<br />'.&Apache::lonhtmlcommon::spelllink('lonhomework',
+                                   'homework_edit_'.$Apache::lonxml::curdepth):'')."\n";
 }
 
 sub modifiedfield {
@@ -906,7 +946,7 @@ sub checked_arg {
 	    $text=$option;
 	    $value='value="'.$option.'"';
 	}
-	$result.='<span class="LC_nobreak"><label><input type="checkbox" '.$value.' name="'.
+        $result.=' <span class="LC_edit_opt"><label><input type="checkbox" '.$value.' name="'.
 	    &html_element_name($name).'"';
 	foreach my $selected (split(/,/,$allselected)) {
 	    if ( $selected eq $option ) {
@@ -920,14 +960,17 @@ sub checked_arg {
 }
 
 sub text_arg {
-    my ($description,$name,$token,$size) = @_;
+    my ($description,$name,$token,$size, $class) = @_;
     my $result;
     if (!defined $size) { $size=20; }
     my $arg=$token->[2]{$name};
     $result=&mt($description).'&nbsp;<input name="'.&html_element_name($name).
-	'" type="text" value="'.$arg.'" size="'.$size.'" '.
-	&element_change_detection().'/>';
-    return '<span class="LC_nobreak">'.$result.'</span>';
+	'" type="text" value="'.$arg.'" size="'.$size.'" ';
+    if (defined $class) {
+	$result .= 'class="' . $class . '" ';
+    }
+    $result .=	&element_change_detection().'/>';
+    return ' <span class="LC_edit_opt">'.$result.'</span>';
 }
 
 sub select_arg {
@@ -953,7 +996,7 @@ sub select_arg {
 	    }
         }
     }
-    $result.='<span class="LC_nobreak">'.&mt($description).'&nbsp;<select name="'.
+    $result.=' <span class="LC_edit_opt">'.&mt($description).'&nbsp;<select name="'.
 	&html_element_name($name).'" '.&element_change_detection().' >
        '.$optionlist.'
       </select></span>';
@@ -1004,7 +1047,7 @@ sub select_or_text_arg {
     $description=&mt($description);
 #
     return (<<ENDSELECTORTYPE);
-<span class="LC_nobreak">
+ <span class="LC_edit_opt">
 $description
 &nbsp;<select name="$selectelement"
 onChange="if ($selectedvalue!='TYPEDINVALUE') { $hiddenvalue=$selectedvalue; $typedinvalue=''; }" >