HTML-FormBuilder
view release on metacpan or search on metacpan
lib/HTML/FormBuilder/FieldSet.pm view on Meta::CPAN
#####################################################################
sub build {
my $self = shift;
my $data = $self->{data};
#FIXME this attribute should be deleted, or it will emit to the html code
my $fieldset_group = $data->{'group'};
my $stacked = defined $data->{'stacked'} ? $data->{'stacked'} : 1;
if (not $fieldset_group) {
$fieldset_group = 'no-group';
}
my $fieldset_html = $self->_build_fieldset_foreword();
my $input_fields_html = '';
foreach my $input_field (@{$self->{'fields'}}) {
$input_fields_html .= $input_field->build({stacked => $stacked});
}
if ($stacked == 0) {
$input_fields_html = $self->_build_element_and_attributes('div', {class => $self->{classes}{'no_stack_field_parent'}}, $input_fields_html);
}
$fieldset_html .= $input_fields_html;
# message at the bottom of the fieldset
if (defined $data->{'footer'}) {
my $footer = delete $data->{'footer'};
$fieldset_html .= qq{<div class="$self->{classes}{fieldset_footer}">$footer</div>};
}
$fieldset_html = $self->_build_element_and_attributes('fieldset', $data, $fieldset_html);
if (
(not $data->{'id'} or $data->{'id'} ne 'formlayout')
and (not $data->{'class'}
or $data->{'class'} !~ /no-wrap|invisible/))
{
$fieldset_html = $self->_wrap_fieldset($fieldset_html);
}
return ($fieldset_group, $fieldset_html);
}
#####################################################################
# Usage : generate the form content for a fieldset foreword thing
# Purpose : check and parse the parameters and generate the form
# properly
# Returns : a piece of form HTML code for a fieldset foreword
# Parameters : input_field, stacked
# Comments :
# See Also :
#####################################################################
sub _build_fieldset_foreword {
my $self = shift;
my $data = $self->{data};
# fieldset legend
my $legend = '';
if (defined $data->{'legend'}) {
$legend = qq{<legend>$data->{legend}</legend>};
undef $data->{'legend'};
}
# header at the top of the fieldset
my $header = '';
if (defined $data->{'header'}) {
$header = qq{<h2>$data->{header}</h2>};
undef $data->{'header'};
}
# message at the top of the fieldset
my $comment = '';
if (defined $data->{'comment'}) {
$comment = qq{<div class="$self->{classes}{comment}"><p>$data->{comment}</p></div>};
undef $data->{'comment'};
}
return $legend . $header . $comment;
}
#####################################################################
# Usage : $self->_wrap_fieldset($fieldset_html)
# Purpose : wrap fieldset html by template
# Returns : HTML
# Comments :
# See Also :
#####################################################################
sub _wrap_fieldset {
my ($self, $fieldset_html) = @_;
my $fieldset_template = <<EOF;
<div class="rbox form">
<div class="rbox-wrap">
$fieldset_html
<span class="tl"> </span><span class="tr"> </span><span class="bl"> </span><span class="br"> </span>
</div>
</div>
EOF
return $fieldset_template;
}
1;
=head1 NAME
HTML::FormBuilder::FieldSet - FieldSet container used by HTML::FormBuilder
=head1 SYNOPSIS
my $form = HTML::FormBuilder->new(data => {id => 'testform});
my $fieldset = $form->add_fieldset({id => 'fieldset1'});
$fieldset->add_field({input => {type => 'text', value => 'Join'}});
$form->add_field($fieldset_index, {input => {type => 'text', value => 'Join'}});
=head1 Attributes
=head2 fields
The fields included by this fieldset.
=head1 Methods
=head2 build
my ($fieldset_group, $fieldset_html) = $fieldset->build();
=head2 add_field
$fieldset->add_field({input => {type => 'text', value => 'name'}});
append the field into fieldset and return that field
=head2 add_fields
( run in 1.592 second using v1.01-cache-2.11-cpan-140bd7fdf52 )