--- loncom/homework/edit.pm	2003/04/30 19:40:47	1.47
+++ loncom/homework/edit.pm	2003/05/10 23:04:58	1.51
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # edit mode helpers
 #
-# $Id: edit.pm,v 1.47 2003/04/30 19:40:47 matthew Exp $
+# $Id: edit.pm,v 1.51 2003/05/10 23:04:58 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -40,6 +40,9 @@ use HTML::Entities();
 # depth of nesting of edit
 $Apache::edit::colordepth=0;
 @Apache::edit::inserttag=();
+# image-type responses: active background image and curdepth at definition
+$Apache::edit::bgimgsrc='';
+$Apache::edit::bgimgsrccurdepth='';
 
 sub initialize_edit {
   $Apache::edit::colordepth=0;
@@ -383,6 +386,12 @@ sub insert_radiobuttonhint {
 </radiobuttonhint>';
 }
 
+sub insert_optionhint {
+  return '
+<optionhint>
+</optionhint>';
+}
+
 sub insert_startouttext {
   return "<startouttext />\n<endouttext />";
 }
@@ -448,7 +457,8 @@ sub get_new_args {
   foreach my $arg (@args) {
     #just want the string that it was set to
     my $value=$token->[2]->{$arg};
-    my $newvalue=$ENV{"form.$Apache::lonxml::curdepth.$arg"};
+    my $element=&html_element_name($arg);
+    my $newvalue=$ENV{"form.$element"};
     &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:");
     if ($value ne $newvalue) {
       $token->[2]->{$arg}=$newvalue;
@@ -483,7 +493,16 @@ sub rebuild_tag {
 
 sub html_element_name {
     my ($name) = @_;
-    return $Apache::lonxml::curdepth.'.'.$name;
+    return $name.'_'.$Apache::lonxml::curdepth;
+}
+
+sub hidden_arg {
+    my ($name,$token) = @_;
+    my $result;
+    my $arg=$token->[2]{$name};
+    $result='<input name="'.&html_element_name($name).
+	'" type="hidden" value="'.$arg.'" />';
+    return $result;
 }
 
 sub text_arg {
@@ -555,6 +574,64 @@ sub select_or_text_arg {
     return $result;
 }
 
+#----------------------------------------------------- image coordinates
+# single image coordinates, x, y 
+sub entercoords {
+    my ($idx,,$idy,$mode,$width,$height) = @_;
+    unless ($Apache::edit::bgimgsrc) { return ''; }
+    if ($idx) { $idx.='_'; }
+    if ($idy) { $idy.='_'; }
+    my $bgfile=&Apache::lonnet::escape($Apache::edit::bgimgsrc);
+    my $form    = 'lonhomework';
+    my $element;
+    if (! defined($mode) || $mode eq 'attribute') {
+        $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth");
+    } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
+        $element = &Apache::lonnet::escape('homework_edit_'.
+                                           $Apache::lonxml::curdepth);
+    }
+    my $formheight='';
+    if ($height) {
+	$formheight='&formheight='.$height.'_'.$Apache::edit::bgimgsrccurdepth;
+    }
+    my $formwidth='';
+    if ($width) {
+	$formwidth='&formwidth='.$width.'_'.$Apache::edit::bgimgsrccurdepth;
+    }
+    my $result = <<"ENDBUTTON";
+<a href="/cgi-bin/imagechoice.pl?formname=$form&file=$bgfile&formx=$idx$element&formy=$idy$element$formheight$formwidth"
+target="imagechoice">Click Coordinates</a>
+ENDBUTTON
+    return $result;
+}
+
+# coordinate pair (x1,y1)-(x2,y2)
+sub entercoordpair {
+    my ($id,$mode,$width,$height) = @_;
+    unless ($Apache::edit::bgimgsrc) { return ''; }
+    my $bgfile=&Apache::lonnet::escape($Apache::edit::bgimgsrc);
+    my $form    = 'lonhomework';
+    my $element;
+    if (! defined($mode) || $mode eq 'attribute') {
+        $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");
+    } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
+        $element = &Apache::lonnet::escape('homework_edit_'.
+                                           $Apache::lonxml::curdepth);
+    }
+    my $formheight='';
+    if ($height) {
+	$formheight='&formheight='.$height.'_'.$Apache::edit::bgimgsrccurdepth;
+    }
+    my $formwidth='';
+    if ($width) {
+	$formwidth='&formwidth='.$width.'_'.$Apache::edit::bgimgsrccurdepth;
+    }
+    my $result = <<"ENDBUTTON";
+<a href="/cgi-bin/imagechoice.pl?mode=pair&formname=$form&file=$bgfile$formheight$formwidth&formcoord=$element"
+target="imagechoice">Click Coordinate Pair</a>
+ENDBUTTON
+    return $result;
+}
 #----------------------------------------------------- browse
 sub browse {
     # insert a link to call up the filesystem browser (lonindexer)
@@ -562,7 +639,7 @@ sub browse {
     my $form    = 'lonhomework';
     my $element;
     if (! defined($mode) || $mode eq 'attribute') {
-        $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$id");
+        $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");
     } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
         $element = &Apache::lonnet::escape('homework_edit_'.
                                            $Apache::lonxml::curdepth);
@@ -576,9 +653,15 @@ ENDBUTTON
 #----------------------------------------------------- browse
 sub search {
     # insert a link to call up the filesystem browser (lonindexer)
-    $_ = shift;
+    my ($id, $mode) = @_;
     my $form    = 'lonhomework';
-    my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$_");
+    my $element;
+    if (! defined($mode) || $mode eq 'attribute') {
+        $element = &Apache::lonnet::escape("$id\_$Apache::lonxml::curdepth");
+    } elsif ($mode eq 'textnode') {  # for data between <tag> ... </tag>
+        $element = &Apache::lonnet::escape('homework_edit_'.
+                                           $Apache::lonxml::curdepth);
+    }
     my $result = <<"ENDBUTTON";
 <a href=\"javascript:opensearcher('$form','$element')\"\>Search</a>
 ENDBUTTON