HTML-FormHandler
view release on metacpan or search on metacpan
lib/HTML/FormHandler/Widget/Wrapper/Simple.pm view on Meta::CPAN
package HTML::FormHandler::Widget::Wrapper::Simple;
# ABSTRACT: simple field wrapper
$HTML::FormHandler::Widget::Wrapper::Simple::VERSION = '0.40068';
use Moose::Role;
use namespace::autoclean;
use HTML::FormHandler::Render::Util ('process_attrs');
with 'HTML::FormHandler::Widget::Wrapper::Base';
sub wrap_field {
my ( $self, $result, $rendered_widget ) = @_;
my $output;
# get wrapper tag if set
my $label_tag = $self->label_tag || '';
my $wrapper_tag;
if( $self->do_wrapper ) {
$output .= $self->get_tag('before_wrapper');
$wrapper_tag = $self->get_tag('wrapper_tag');
# default wrapper tags
$wrapper_tag ||= $self->has_flag('is_repeatable') ? 'fieldset' : 'div';
# get attribute string
my $attrs = process_attrs( $self->wrapper_attributes($result) );
# write wrapper tag
$output .= qq{\n<$wrapper_tag$attrs>};
$label_tag = 'legend' if $wrapper_tag eq 'fieldset';
}
# write label; special processing for checkboxes
$rendered_widget = $self->wrap_checkbox($result, $rendered_widget)
if ( lc $self->widget eq 'checkbox' );
$output .= "\n" . $self->do_render_label($result, $label_tag)
if $self->do_label;
# append 'before_element'
$output .= $self->get_tag('before_element');
# start controls div
if ( $self->get_tag('controls_div') ) {
$output .= qq{\n<div class="controls">};
}
elsif ( $self->has_element_wrapper_class ) {
my $ew_attr = $self->element_wrapper_attributes($result);
my $element_wrapper_attrs = process_attrs( $ew_attr );
$output .= qq{\n<div$element_wrapper_attrs>};
}
# the input element itself
$output .= "\n$rendered_widget";
# close controls div
if ( $self->get_tag('controls_div') || $self->has_element_wrapper_class ) {
# end control div
$output .= "\n</div>";
}
# the 'after_element'
$output .= $self->get_tag('after_element');
# the error messages
unless( $self->get_tag('no_errors') ) {
my $error_class = $self->get_tag('error_class') || 'error_message';
$output .= qq{\n<span class="$error_class">$_</span>}
for $result->all_errors;
# warnings (incompletely implemented - only on field itself)
my $warning_class = $self->get_tag('warning_class') || 'warning_message';
$output .= qq{\n<span class="warning_message">$_</span>}
for $result->all_warnings;
}
if( $self->do_wrapper ) {
$output .= "\n</$wrapper_tag>";
$output .= $self->get_tag('after_wrapper');
}
return "$output";
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
HTML::FormHandler::Widget::Wrapper::Simple - simple field wrapper
( run in 0.903 second using v1.01-cache-2.11-cpan-39bf76dae61 )