PayDriver now does dynamic form building through Definition.

This commit is contained in:
Colin Kuskie 2010-09-30 10:36:02 -07:00
parent 4dde0e3e07
commit ee1e896ef8
2 changed files with 82 additions and 74 deletions

View file

@ -423,7 +423,6 @@ Returns the configuration form for the options of this plugin.
sub getEditForm { sub getEditForm {
my $self = shift; my $self = shift;
my $definition = $self->definition($self->session);
my $form = WebGUI::HTMLForm->new($self->session); my $form = WebGUI::HTMLForm->new($self->session);
$form->submit; $form->submit;
@ -432,6 +431,15 @@ sub getEditForm {
name => 'className', name => 'className',
value => $self->className, value => $self->className,
); );
tie my %form_options, 'Tie::IxHash';
foreach my $property_name ($self->getProperties) {
my $property = $self->meta->find_attribute_by_name($property_name);
$form_options{$property_name} = {
value => $self->$property_name,
%{ $self->getFormProperties($property_name)},
};
}
my $definition = [ { properties => \%form_options }, ];
$form->dynamicForm($definition, 'properties', $self); $form->dynamicForm($definition, 'properties', $self);
return $form; return $form;
@ -535,9 +543,9 @@ sub processPayment {
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 processPropertiesFromFormPost ( ) =head2 processTemplate ( )
Updates pay driver with data from Form. Common code for processing a template and doing exception handling.
=cut =cut

View file

@ -176,77 +176,77 @@ isa_ok ($cart, 'WebGUI::Shop::Cart', 'getCart returns an instantiated WebGU
# #
####################################################################### #######################################################################
#my $form = $driver->getEditForm; my $form = $driver->getEditForm;
#
#isa_ok ($form, 'WebGUI::HTMLForm', 'getEditForm returns an HTMLForm object'); isa_ok ($form, 'WebGUI::HTMLForm', 'getEditForm returns an HTMLForm object');
#
#my $html = $form->print; my $html = $form->print;
#
###Any URL is fine, really ##Any URL is fine, really
#my @forms = HTML::Form->parse($html, 'http://www.webgui.org'); my @forms = HTML::Form->parse($html, 'http://www.webgui.org');
#is (scalar @forms, 1, 'getEditForm generates just 1 form'); is (scalar @forms, 1, 'getEditForm generates just 1 form');
#
#my @inputs = $forms[0]->inputs; my @inputs = $forms[0]->inputs;
#is (scalar @inputs, 11, 'getEditForm: the form has 11 controls'); is (scalar @inputs, 11, 'getEditForm: the form has 11 controls');
#
#my @interestingFeatures; my @interestingFeatures;
#foreach my $input (@inputs) { foreach my $input (@inputs) {
# my $name = $input->name; my $name = $input->name;
# my $type = $input->type; my $type = $input->type;
# push @interestingFeatures, { name => $name, type => $type }; push @interestingFeatures, { name => $name, type => $type };
#} }
#
#cmp_deeply( cmp_deeply(
# \@interestingFeatures, \@interestingFeatures,
# [ [
# { {
# name => 'webguiCsrfToken', name => 'webguiCsrfToken',
# type => 'hidden', type => 'hidden',
# }, },
# { {
# name => undef, name => undef,
# type => 'submit', type => 'submit',
# }, },
# { {
# name => 'shop', name => 'shop',
# type => 'hidden', type => 'hidden',
# }, },
# { {
# name => 'method', name => 'method',
# type => 'hidden', type => 'hidden',
# }, },
# { {
# name => 'do', name => 'do',
# type => 'hidden', type => 'hidden',
# }, },
# { {
# name => 'paymentGatewayId', name => 'paymentGatewayId',
# type => 'hidden', type => 'hidden',
# }, },
# { {
# name => 'className', name => 'className',
# type => 'hidden', type => 'hidden',
# }, },
# { {
# name => 'label', name => 'label',
# type => 'text', type => 'text',
# }, },
# { {
# name => 'enabled', name => 'enabled',
# type => 'radio', type => 'radio',
# }, },
# { {
# name => 'groupToUse', name => 'groupToUse',
# type => 'option', type => 'option',
# }, },
# { {
# name => '__groupToUse_isIn', name => '__groupToUse_isIn',
# type => 'hidden', type => 'hidden',
# }, },
# ], ],
# 'getEditForm made the correct form with all the elements' 'getEditForm made the correct form with all the elements'
#
#); );
####################################################################### #######################################################################