--- test/html-webhacc/WebHACC/Output.pm 2008/08/14 15:50:42 1.15 +++ test/html-webhacc/WebHACC/Output.pm 2008/08/15 05:53:23 1.16 @@ -55,6 +55,18 @@ return $_[0]->{handle}; } # handle +sub has_error ($;$) { + if (@_ > 1) { + if (defined $_[1]) { + $_[0]->{has_error} = 1; + } else { + delete $_[0]->{has_error}; + } + } + + return $_[0]->{has_error}; +} # has_error + sub set_utf8 ($) { binmode shift->{handle}, ':utf8'; } # set_utf8 @@ -207,33 +219,48 @@ } elsif ($opt{role} eq 'structure-errors') { $opt{id} ||= 'document-errors-list'; delete $opt{role}; + } elsif ($opt{role} eq 'transfer-errors') { + $opt{id} ||= 'transfer-errors-list'; + delete $opt{role}; } } $self->start_tag ('dl', %opt); + + delete $self->{has_error}; # reset } # start_error_list sub end_error_list ($%) { my ($self, %opt) = @_; + my $no_error_message = 'No error found.'; + if (defined $opt{role}) { if ($opt{role} eq 'parse-errors') { - delete $opt{role}; $self->end_tag ('dl'); ## NOTE: For parse error list, the |add_source_to_parse_error_list| ## method is invoked at the end of |generate_source_string_section|, ## since that generation method is invoked after the error list ## is generated. + $no_error_message = 'No parse error found.'; } elsif ($opt{role} eq 'structure-errors') { - delete $opt{role}; $self->end_tag ('dl'); $self->add_source_to_parse_error_list ('document-errors-list'); + $no_error_message = 'No structural error found.'; + } elsif ($opt{role} eq 'transfer-errors') { + $self->end_tag ('dl'); + $no_error_message = 'No transfer error found.'; } else { $self->end_tag ('dl'); } } else { $self->end_tag ('dl'); } + + unless ($self->{has_error}) { + $self->start_tag ('p', class => 'no-errors'); + $self->nl_text ($no_error_message); + } } # end_error_list sub add_source_to_parse_error_list ($$) { @@ -481,6 +508,15 @@ sub generate_input_section ($$) { my ($out, $cgi) = @_; + require Encode; + my $decode = sub ($) { + if (defined $_[0]) { + return Encode::decode ('utf-8', $_[0]); + } else { + return undef; + } + }; # $decode + my $options = sub ($) { my $context = shift; @@ -554,7 +590,7 @@ $out->nl_text ('Setting innerHTML'); $out->text (': '); $out->start_tag ('input', name => 'e', - value => scalar $cgi->get_parameter ('e')); + value => $decode->(scalar $cgi->get_parameter ('e'))); $out->end_tag ('label'); } @@ -578,7 +614,7 @@ $out->start_tag ('input', name => 'uri', type => 'url', - value => $cgi->get_parameter ('uri')); + value => $decode->(scalar $cgi->get_parameter ('uri'))); $out->end_tag ('label'); $out->start_tag ('p'); @@ -609,7 +645,7 @@ $out->start_tag ('br'); $out->start_tag ('textarea', name => 's'); - my $s = $cgi->get_parameter ('s'); + my $s = $decode->($cgi->get_parameter ('s')); $out->html ($htescape_value->($s)) if defined $s; $out->end_tag ('textarea'); $out->end_tag ('label');