--- loncom/homework/edit.pm 2001/06/16 18:35:27 1.11 +++ loncom/homework/edit.pm 2001/06/26 21:39:55 1.14 @@ -23,7 +23,7 @@ sub tag_start { my $tag=$token->[1]; if (!$description) { $description="<$tag>"; } $result.= &start_table($token)."$description -Delete:". +Delete". &deletelist($target,$token) ." ". @@ -40,11 +40,11 @@ sub tag_end { if ($target eq 'edit') { my $tag=$token->[1]; if (!defined($description)) { - $result.="</$tag>"; + $result.="</$tag> "; } else { - if ($description ne '') { $result.="$description"; } + if ($description ne '') { $result.="$description "; } } - $result.="  ".&end_table()."\n"; + $result.="".&end_table()."\n"; } return $result; } @@ -64,7 +64,7 @@ sub start_table { $color = $Apache::edit::colorlist[$Apache::edit::colordepth]; } $Apache::edit::colordepth++; - my $result=""; + my $result="
"; return $result; } @@ -77,13 +77,35 @@ sub end_table { sub deletelist { my ($target,$token) = @_; my $result = ""; return $result; } +sub handle_delete { + if (!$ENV{"form.delete_$Apache::lonxml::curdepth"}) { return ''; } + my ($space,$target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result=0; + if ($space) { + my $sub1="$space\:\:delete_$token->[1]"; + { + no strict 'refs'; + if (defined &$sub1) { + $result=&$sub1($target,$token,$tagstack,$parstack,$parser,$safeeval,$style); + } + } + } + if (!$result) { + my $endtag='/'.$token->[1]; + my $bodytext=&Apache::lonxml::get_all_text($endtag,$$parser[$#$parser]); + $$parser['-1']->get_token(); + &Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]"); + &Apache::lonxml::end_tag($tagstack,$parstack,$token); + } + return 1; +} + sub get_insert_list { my ($token) = @_; my $result=''; @@ -147,6 +169,8 @@ sub insert_optionresponse { + + '; } @@ -188,7 +212,72 @@ sub modifiedfield { } sub insert_startouttext { - return "\n\n"; + return "\n"; +} + +sub insert_script { + return "\n"; +} + +# Returns a 1 if the toekn has been modified and you should rebuild the tag +# side-effects, will modify the $token if new values are found +sub get_new_args { + my ($token,$parstack,$safeeval,@args)=@_; + my $rebuild=0; + foreach my $arg (@args) { + my $value=&Apache::lonxml::get_param($arg,$parstack,$safeeval); + my $newvalue=$ENV{"form.$Apache::lonxml::curdepth.$arg"}; + &Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:"); + if ($value ne $newvalue) { + $token->[2]->{$arg}=$newvalue; + $rebuild=1; + } + } + return $rebuild; +} + +sub rebuild_tag { + my ($token) = @_; + my $result; + if ($token->[0] eq 'S') { + $result = '<'.$token->[1]; + while (my ($key,$val)= each(%{$token->[2]})) { + &Apache::lonxml::debug("setting :$key: to :$val:"); + $result.=' '.$key.'="'.$val.'"'; + } + $result.=">"; + } elsif ( $token->[0] eq 'E' ) { + $result = '[1].'>'; + } + return $result; +} + +sub text_arg { + my ($description,$name,$token,$size) = @_; + my $result; + if (!defined $size) { $size=20; } + my $arg=$token->[2]{$name}; + $result=$description.''; + return $result; +} + +sub select_arg { + my ($description,$name,$list,$token) = @_; + my $result; + my $optionlist=""; + my $selected=$token->[2]{$name}; + foreach my $option (@$list) { + if ( $selected eq $option ) { + $optionlist.="\n"; + } else { + $optionlist.="\n"; + } + } + $result.=$description.'
'; + return $result; } 1;