--- test/html-webhacc/WebHACC/Output.pm 2008/07/27 10:33:46 1.9 +++ test/html-webhacc/WebHACC/Output.pm 2008/08/02 06:07:11 1.10 @@ -16,6 +16,15 @@ return $s; }; +my $htescape_value = sub ($) { + my $s = $_[0]; + $s =~ s/&/&/g; + $s =~ s//>/g; + $s =~ s/"/"/g; + return $s; +}; + sub new ($) { require WebHACC::Input; return bless {nav => [], section_rank => 1, @@ -75,20 +84,21 @@ sub start_tag ($$%) { my ($self, $tag_name, %opt) = @_; - $self->html ('<' . $htescape->($tag_name)); # escape for safety + $self->html ('<' . $htescape_value->($tag_name)); # escape for safety if (exists $opt{id}) { my $id = $self->input->id_prefix . $opt{id}; - $self->html (' id="' . $htescape->($id) . '"'); + $self->html (' id="' . $htescape_value->($id) . '"'); delete $opt{id}; } for (keys %opt) { # for safety - $self->html (' ' . $htescape->($_) . '="' . $htescape->($opt{$_}) . '"'); + $self->html (' ' . $htescape_value->($_) . '="' . + $htescape_value->($opt{$_}) . '"'); } $self->html ('>'); } # start_tag sub end_tag ($$) { - shift->html ('(shift) . '>'); + shift->html ('(shift) . '>'); } # end_tag sub start_section ($%) { @@ -296,9 +306,30 @@ return join '/', @r; }; # $get_node_path +my $get_object_path = sub ($) { + my $node = shift; + my @r; + while (defined $node) { + my $ref = ref $node; + $ref =~ /([^:]+)$/; + my $rs = $1; + my $node_name = $node->node_name; + if (defined $node_name) { + $rs .= ' ' . $htescape->($node_name) . ''; + } + $node = undef; + unshift @r, $rs; + } + return join '/', @r; +}; # $get_object_path + sub node_link ($$) { my ($self, $node) = @_; - $self->xref ($get_node_path->($node), target => 'node-' . refaddr $node); + if ($node->isa ('Message::IF::Node')) { + $self->xref ($get_node_path->($node), target => 'node-' . refaddr $node); + } else { + $self->html ($get_object_path->($node)); + } } # node_link { @@ -492,7 +523,8 @@ $out->start_section (id => 'input', title => 'Input'); $out->start_section (id => 'input-url', title => 'By URL'); - $out->start_tag ('form', action => './', 'accept-charset' => 'utf-8', + $out->start_tag ('form', action => './#result-summary', + 'accept-charset' => 'utf-8', method => 'get'); $out->start_tag ('input', type => 'hidden', name => '_charset_'); @@ -520,7 +552,8 @@ ## TODO: File upload $out->start_section (id => 'input-text', title => 'By direct input'); - $out->start_tag ('form', action => './', 'accept-charset' => 'utf-8', + $out->start_tag ('form', action => './#result-summary', + 'accept-charset' => 'utf-8', method => 'post'); $out->start_tag ('input', type => 'hidden', name => '_charset_'); @@ -532,7 +565,7 @@ $out->start_tag ('textarea', name => 's'); my $s = $cgi->get_parameter ('s'); - $out->text ($s) if defined $s; + $out->html ($htescape_value->($s)) if defined $s; $out->end_tag ('textarea'); $out->end_tag ('label');