--- loncom/homework/edit.pm 2001/05/04 21:22:05 1.4 +++ loncom/homework/edit.pm 2001/06/11 16:15:37 1.9 @@ -7,19 +7,19 @@ use strict; use Apache::lonnet; sub tag_start { - my ($token,$target) = @_; + my ($target,$token,$description) = @_; my $result=''; - if ($target eq "web") { + if ($target eq "edit") { my $tag=$token->[1]; - $result.="<table width=\"100%\" border=\"2\"><tr><td><$tag></td> -<td>Delete: -<select name=\"delete_$Apache::lonxml::curdepth\"> -<option>Nothing</option> -<option>Tag</option> -<option>Subtags</option> -</select></td> +# my $color = sprintf("#%06lx",(hex("ffffff")) >> scalar(split(/_/,$Apache::lonxml::curdepth))); + my $color = sprintf("#%02lxffff",33* scalar(split(/_/,$Apache::lonxml::curdepth))); + if (!$description) { $description="<$tag>"; } + $result.="<table bgcolor=\"$color\" width=\"100%\" border=\"2\"><tr><td>$description</td> +<td>Delete:". + &deletelist($target,$token) + ."</td> <td>". - &insertlist($token,$target). + &insertlist($target,$token). "</td> </tr><tr><td colspan=\"3\">\n"; } @@ -27,31 +27,98 @@ sub tag_start { } sub tag_end { - my ($token,$target) = @_; + my ($target,$token,$description) = @_; my $result=''; if ($target eq 'edit') { my $tag=$token->[1]; - $result.="</td></tr><tr><td></$tag></td></tr></table>\n"; + if (!defined($description)) { + $result.="</td></tr><tr><td></$tag>"; + } else { + if ($description ne '') { $result.="</td></tr><tr><td>$description"; } + } + $result.="</td></tr></table>\n"; + } + return $result; +} + +sub deletelist { + my ($target,$token) = @_; + my $result = "<select name=\"delete_$Apache::lonxml::curdepth\"> +<option>Nothing</option> +<option>Tag</option> +<option>Subtags</option> +</select>"; + return $result; +} + +sub get_insert_list { + my ($token) = @_; + my $result=''; + my @tagnums= (); + #&Apache::lonxml::debug("keys ".join("\n",sort(keys(%Apache::lonxml::insertlist)))); + if ($Apache::lonxml::insertlist{"$token->[1].which"}) { + &Apache::lonxml::debug("Adding1 $token->[1].which"); + push (@tagnums, @{ $Apache::lonxml::insertlist{"$token->[1].which"} }); + } + foreach my $namespace (@Apache::lonxml::namespace) { + if ($Apache::lonxml::insertlist{"$namespace".'::'."$token->[1].which"}) { + &Apache::lonxml::debug("Adding2 $namespace".'::'."$token->[1].which"); + push (@tagnums, @{ $Apache::lonxml::insertlist{"$namespace".'::'."$token->[1].which"} }); + } + } + if (@tagnums) { + foreach my $tagnum (@tagnums) { + $result.='<option value="'.$tagnum.'">'.$Apache::lonxml::insertlist{"$tagnum.description"}."</option>\n"; + } + if ($result) { $result='<option selected="on"></option>'.$result; } } return $result; } sub insertlist { - my ($token,$target) = @_; + my ($target,$token) = @_; my $result; if ($target eq 'edit') { - $result = "Insert: + my $optionlist= &get_insert_list($token); + if ($optionlist) { + $result = "Insert: <select name=\"insert_$Apache::lonxml::curdepth\"> -<option>Nothing</option> -<option>Text Block</option> -<option>Script Block</option> +$optionlist </select>" + } + } + return $result; +} + +sub handle_insert { + if (!$ENV{"form.insert_$Apache::lonxml::curdepth"}) { return ''; } + my $result; + my $tagnum = $ENV{"form.insert_$Apache::lonxml::curdepth"}; + my $func=$Apache::lonxml::insertlist{"$tagnum.function"}; + if ($func eq 'default') { + my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"}; + my $namespace; + if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); } + $result.="\n<$newtag>\n</$newtag>"; + } else { + { + no strict 'refs'; + $result.=&$func(); + } } return $result; } +sub insert_optionresponse { + return ' +<optionresponse max="10"> + <foilgroup options=""> + </foilgroup> +</optionresponse>'; +} + sub editfield { - my ($tag,$data,$description)=@_; + my ($tag,$data,$description,$minwidth,$minheight)=@_; my $count=0; my $maxlength=-1; @@ -59,10 +126,12 @@ sub editfield { if (length($_) > $maxlength) { $maxlength = length ($_); } } split ("\n", $data); if ($maxlength > 80) { $maxlength = 80; } - if ($description) { - $description="<br />".$description; + if ($maxlength < $minwidth) { $maxlength = $minwidth; } + if ( $count < $minheight) { $count = $minheight; } + if ($description) { + $description="<br />".$description."<br />"; } - return "$description<br />\n <textarea rows=\"$count\" cols=\"$maxlength\" name=homework_edit_".$Apache::lonxml::curdepth.">$data</textarea>\n"; + return "$description\n <textarea rows=\"$count\" cols=\"$maxlength\" name=homework_edit_".$Apache::lonxml::curdepth.">$data</textarea>\n"; # return "<br />\n<$tag><br />\n <textarea rows=\"$count\" cols=\"$maxlength\" name=homework_edit_".$Apache::lonxml::curdepth.">$data</textarea><br />\n</$tag><br />\n"; } @@ -85,5 +154,9 @@ sub modifiedfield { return $result; } +sub insert_startouttext { + return "\n<startouttext />\n<endouttext />"; +} + 1; __END__