PayDriver now does dynamic form building through Definition.
This commit is contained in:
parent
4dde0e3e07
commit
ee1e896ef8
2 changed files with 82 additions and 74 deletions
|
|
@ -423,7 +423,6 @@ Returns the configuration form for the options of this plugin.
|
|||
sub getEditForm {
|
||||
my $self = shift;
|
||||
|
||||
my $definition = $self->definition($self->session);
|
||||
my $form = WebGUI::HTMLForm->new($self->session);
|
||||
$form->submit;
|
||||
|
||||
|
|
@ -432,6 +431,15 @@ sub getEditForm {
|
|||
name => '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);
|
||||
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -176,77 +176,77 @@ isa_ok ($cart, 'WebGUI::Shop::Cart', 'getCart returns an instantiated WebGU
|
|||
#
|
||||
#######################################################################
|
||||
|
||||
#my $form = $driver->getEditForm;
|
||||
#
|
||||
#isa_ok ($form, 'WebGUI::HTMLForm', 'getEditForm returns an HTMLForm object');
|
||||
#
|
||||
#my $html = $form->print;
|
||||
#
|
||||
###Any URL is fine, really
|
||||
#my @forms = HTML::Form->parse($html, 'http://www.webgui.org');
|
||||
#is (scalar @forms, 1, 'getEditForm generates just 1 form');
|
||||
#
|
||||
#my @inputs = $forms[0]->inputs;
|
||||
#is (scalar @inputs, 11, 'getEditForm: the form has 11 controls');
|
||||
#
|
||||
#my @interestingFeatures;
|
||||
#foreach my $input (@inputs) {
|
||||
# my $name = $input->name;
|
||||
# my $type = $input->type;
|
||||
# push @interestingFeatures, { name => $name, type => $type };
|
||||
#}
|
||||
#
|
||||
#cmp_deeply(
|
||||
# \@interestingFeatures,
|
||||
# [
|
||||
# {
|
||||
# name => 'webguiCsrfToken',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# {
|
||||
# name => undef,
|
||||
# type => 'submit',
|
||||
# },
|
||||
# {
|
||||
# name => 'shop',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# {
|
||||
# name => 'method',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# {
|
||||
# name => 'do',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# {
|
||||
# name => 'paymentGatewayId',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# {
|
||||
# name => 'className',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# {
|
||||
# name => 'label',
|
||||
# type => 'text',
|
||||
# },
|
||||
# {
|
||||
# name => 'enabled',
|
||||
# type => 'radio',
|
||||
# },
|
||||
# {
|
||||
# name => 'groupToUse',
|
||||
# type => 'option',
|
||||
# },
|
||||
# {
|
||||
# name => '__groupToUse_isIn',
|
||||
# type => 'hidden',
|
||||
# },
|
||||
# ],
|
||||
# 'getEditForm made the correct form with all the elements'
|
||||
#
|
||||
#);
|
||||
my $form = $driver->getEditForm;
|
||||
|
||||
isa_ok ($form, 'WebGUI::HTMLForm', 'getEditForm returns an HTMLForm object');
|
||||
|
||||
my $html = $form->print;
|
||||
|
||||
##Any URL is fine, really
|
||||
my @forms = HTML::Form->parse($html, 'http://www.webgui.org');
|
||||
is (scalar @forms, 1, 'getEditForm generates just 1 form');
|
||||
|
||||
my @inputs = $forms[0]->inputs;
|
||||
is (scalar @inputs, 11, 'getEditForm: the form has 11 controls');
|
||||
|
||||
my @interestingFeatures;
|
||||
foreach my $input (@inputs) {
|
||||
my $name = $input->name;
|
||||
my $type = $input->type;
|
||||
push @interestingFeatures, { name => $name, type => $type };
|
||||
}
|
||||
|
||||
cmp_deeply(
|
||||
\@interestingFeatures,
|
||||
[
|
||||
{
|
||||
name => 'webguiCsrfToken',
|
||||
type => 'hidden',
|
||||
},
|
||||
{
|
||||
name => undef,
|
||||
type => 'submit',
|
||||
},
|
||||
{
|
||||
name => 'shop',
|
||||
type => 'hidden',
|
||||
},
|
||||
{
|
||||
name => 'method',
|
||||
type => 'hidden',
|
||||
},
|
||||
{
|
||||
name => 'do',
|
||||
type => 'hidden',
|
||||
},
|
||||
{
|
||||
name => 'paymentGatewayId',
|
||||
type => 'hidden',
|
||||
},
|
||||
{
|
||||
name => 'className',
|
||||
type => 'hidden',
|
||||
},
|
||||
{
|
||||
name => 'label',
|
||||
type => 'text',
|
||||
},
|
||||
{
|
||||
name => 'enabled',
|
||||
type => 'radio',
|
||||
},
|
||||
{
|
||||
name => 'groupToUse',
|
||||
type => 'option',
|
||||
},
|
||||
{
|
||||
name => '__groupToUse_isIn',
|
||||
type => 'hidden',
|
||||
},
|
||||
],
|
||||
'getEditForm made the correct form with all the elements'
|
||||
|
||||
);
|
||||
|
||||
|
||||
#######################################################################
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue