NAME

HTML::Widget::Factory - churn out HTML widgets

VERSION

version 0.070

SYNOPSIS

my $factory = HTML::Widget::Factory->new();

my $html = $factory->select({
  name    => 'flavor',
  options => [
    [ minty => 'Peppermint',     ],
    [ perky => 'Fresh and Warm', ],
    [ super => 'Red and Blue',   ],
  ],
  value   => 'minty',
});

DESCRIPTION

HTML::Widget::Factory provides a simple, pluggable system for constructing HTML form controls.

METHODS

Most of the useful methods in an HTML::Widget::Factory object will be installed there by its plugins. Consult the documentation for the HTML::Widget::Plugin modules.

new

my $factory = HTML::Widget::Factory->new(\%arg);

This constructor returns a new widget factory.

The only valid arguments are plugins and extra_plugins, which provide arrayrefs of plugins to be used. If plugins is not given, the default plugin list is used; this is generated by finding all modules beginning with HTML::Widget::Plugin. The plugins in extra_plugins are loaded in addition to these.

provides_widget

if ($factory->provides_widget($name)) { ... }

This method returns true if the given name is a widget provided by the factory. This, and not can should be used to determine whether a factory can provide a given widget.

provided_widgets

for my $name ($fac->provided_widgets) { ... }

This method returns an unordered list of the names of the widgets provided by this factory.

plugins

This returns a list of the plugins loaded by the factory.

TODO

  • fixed_args for args that are fixed, like (type => 'checkbox')

  • a simple way to say "only include this output if you haven't before"

    This will make it easy to do JavaScript inclusions: if you've already made a calendar (or whatever) widget, don't bother including this hunk of JS, for example.

  • giving the constructor a data store

    Create a factory that has a CGI.pm object and let it default values to the param that matches the passed name.

  • include id attribute where needed

  • optional labels (before or after control, or possibly return a list)

SEE ALSO

HTML::Widget::Plugin
HTML::Widget::Plugin::Input
HTML::Widget::Plugin::Submit
HTML::Widget::Plugin::Image
HTML::Widget::Plugin::Password
HTML::Widget::Plugin::Select
HTML::Widget::Plugin::Multiselect
HTML::Widget::Plugin::Checkbox
HTML::Widget::Plugin::Radio
HTML::Widget::Plugin::Button
HTML::Widget::Plugin::Textarea
HTML::Element

AUTHOR

Ricardo SIGNES <rjbs @ cpan.org>

Development was sponsored by Listbox and Pobox between 2005 and 2007.

COPYRIGHT

Copyright (C) 2005-2007, Ricardo SIGNES. This is free software, released under the same terms as perl itself.