| HTML-Widget documentation | Contained in the HTML-Widget distribution. |
HTML::Widget::Element::Block - Block Level Element
my $e = $widget->element( 'Block', 'div' );
$e->value('bar');
Block Level Element. Base class for HTML::Widget::Element::Fieldset
Returns a new Block element. Not usually required, use $widget->element() or $block->element() to create a new Block element within an existing widget or element.
Default value is div, to create a <div> container. Can be changed to create a tag of any type.
Add a new element, nested within this Block. See element in HTML::Widget for full documentation.
Add previously-created elements to the end of this block's elements.
Add previously-created elements to the start of this block's elements.
Creates a new block container object of type $self->block_container_class. Defaults to HTML::Widget::BlockContainer.
Sets the class to be used by $self->block_container. Can be called as a class or instance method.
Containerize the block and all its contained elements for later rendering. Uses HTML::Widget::BlockContainer by default, but this can be over-ridden on a class or instance basis via block_container_class.
my @elements = $self->get_elements;
my @elements = $self->get_elements( type => 'Textfield' );
my @elements = $self->get_elements( name => 'username' );
Returns a list of all elements added to the widget.
If a 'type' argument is given, only returns the elements of that type.
If a 'name' argument is given, only returns the elements with that name.
my $element = $self->get_element;
my $element = $self->get_element( type => 'Textfield' );
my $element = $self->get_element( name => 'username' );
Similar to get_elements(), but only returns the first element in the list.
Accepts the same arguments as get_elements().
Similar to get_elements(), and has the same alternate forms, but performs a recursive search through itself and child elements.
Michael Gray, mjg@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-Widget documentation | Contained in the HTML-Widget distribution. |
package HTML::Widget::Element::Block; use warnings; use strict; use base 'HTML::Widget::Element::NullContainer'; use NEXT; use Carp qw/croak/; __PACKAGE__->mk_classaccessor( block_container_class => 'HTML::Widget::BlockContainer' ); __PACKAGE__->mk_accessors(qw/type wrap_sub/);
sub new { return shift->NEXT::new(@_)->type('div'); }
sub block_container { my ( $self, $attributes ) = @_; my $class = $self->block_container_class || 'HTML::Widget::BlockContainer'; my $file = $class . ".pm"; $file =~ s{::}{/}g; eval { require $file }; croak "Unable to load block container class $class: $@" if $@; return $class->new( { passive => $self->passive, %$attributes } ); }
sub block_container_class { my ($self) = shift; if ( not $_[0] and @_ >= 1 ) { delete $self->{block_container_class}; } return $self->_block_container_class_accessor(@_); }
sub containerize { my ( $self, $w, $value, $error, $args ) = @_; # NB: block-level HTML::Element generated here my %attrs; unless ( $self->{_anonymous} ) { $attrs{id} = $self->id($w); } my $e = HTML::Element->new( $self->type, %attrs ); my @pre_content = $self->_pre_content_elements($w); my @post_content = $self->_post_content_elements($w); local $w->{attributes}->{id} = $self->id($w); my @content = $w->_containerize_elements( $self->content, $args ); $e->attr( $_ => ${ $self->attributes }{$_} ) for ( keys %{ $self->attributes } ); return $self->block_container( { element => $e, content => \@content, pre_content => \@pre_content, post_content => \@post_content, wrap_sub => $self->wrap_sub, name => $self->name, } ); } sub _pre_content_elements { return (); } sub _post_content_elements { return (); }
1;