--- loncom/homework/edit.pm	2002/03/06 20:15:35	1.29
+++ loncom/homework/edit.pm	2002/07/17 18:06:18	1.35
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # edit mode helpers
 #
-# $Id: edit.pm,v 1.29 2002/03/06 20:15:35 matthew Exp $
+# $Id: edit.pm,v 1.35 2002/07/17 18:06:18 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -31,7 +31,8 @@
 package Apache::edit; 
 
 use strict;
-use Apache::lonnet;
+use Apache::lonnet();
+use HTML::Entities();
 
 # Global Vars
 # default list of colors to use in editing
@@ -164,9 +165,12 @@ sub get_insert_list {
     }
   }
   if (@tagnums) {
+    my %options;
     foreach my $tagnum (@tagnums) {
-      $result.='<option value="'.$tagnum.'">'.$Apache::lonxml::insertlist{"$tagnum.description"}."</option>\n";
+      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;
@@ -301,6 +305,18 @@ sub textarea_sizes {
   return ($rows,$cols);
 }
 
+sub editline {
+    my ($tag,$data,$description,$size)=@_;
+    $data=&HTML::Entities::encode($data);
+    if ($description) { $description="<br />".$description."<br />"; }
+    my $result = <<"END";
+$description
+<input type="text" name="homework_edit_$Apache::lonxml::curdepth" 
+       value="$data" size="$size" />
+END
+    return $result;
+}
+
 sub editfield {
   my ($tag,$data,$description,$minwidth,$minheight)=@_;
 
@@ -309,7 +325,9 @@ sub editfield {
   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."\">$data</textarea>\n";
+  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 {
@@ -408,7 +426,7 @@ sub select_or_text_arg {
     }
   }
   $optionlist.="<option value=\"TYPEDINVALUE\">Type in value</option>\n";
-  if ($found) {
+  if (($found) || (!$selected)) {
     $result.=$description.'<select name="'."$Apache::lonxml::curdepth.$name".'">
        '.$optionlist.'
       </select>';
@@ -421,14 +439,28 @@ sub select_or_text_arg {
 #----------------------------------------------------- browse
 sub browse {
     # insert a link to call up the filesystem browser (lonindexer)
+    $_ = shift;
     my $form    = 'lonhomework';
-    my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.bgimg");
+    my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$_");
     my $result = <<"ENDBUTTON";
 <a href=\"javascript:openbrowser('$form','$element')\"\>Browse</a>
 ENDBUTTON
     return $result;
 }
 
+#----------------------------------------------------- browse
+sub search {
+    # insert a link to call up the filesystem browser (lonindexer)
+    $_ = shift;
+    my $form    = 'lonhomework';
+    my $element = &Apache::lonnet::escape("$Apache::lonxml::curdepth.$_");
+    my $result = <<"ENDBUTTON";
+<a href=\"javascript:opensearcher('$form','$element')\"\>Search</a>
+ENDBUTTON
+    return $result;
+}
+
+
 1;
 __END__
 
@@ -533,6 +565,16 @@ browse($elementname) : provide a link wh
 browser (lonindexer) and, once a file is selected, place the result in
 the form element $elementname.
 
+=item *
+search($elementname) : provide a link which will open up the filesystem
+searcher (lonsearchcat) and, once a file is selected, place the result in
+the form element $elementname.
+
+=item *
+editline(tag,data,description,size): Provide a <input type="text" ../> for
+single-line text entry.  This is to be used for text enclosed by tags, not
+arguements/parameters associated with a tag.
+
 =back
 
 incomplete...