DataForms logs an error when it cannot load the requested form type. Fixes bug #10954.

This commit is contained in:
Colin Kuskie 2009-09-16 19:19:46 -07:00
parent 3049435e28
commit f4d19c41f7
3 changed files with 78 additions and 12 deletions

View file

@ -45,6 +45,7 @@
- fixed #10987: EMS Schedule -- No Permission Check
- fixed #10924: Calendar event in last day of month does not display in month/day view
- fixed #10901: Calendar More Button/Display Box IE8 error.
- fixed #10954: DataForm fails silently
7.7.19
- fixed #10838: Forwarded forum post email to new CS adds reply to original thread

View file

@ -51,22 +51,24 @@ These methods are available from this class:
#-------------------------------------------------------------------
sub _createForm {
my $self = shift;
my $data = shift;
my $value = shift;
my $self = shift;
my $data = shift;
my $value = shift;
my $session = $self->session;
# copy select entries
my %param = map { $_ => $data->{$_} } qw(name width extras vertical defaultValue options);
$param{value} = $value;
$param{size} = $param{width};
my %param = map { $_ => $data->{$_} } qw(name width extras vertical defaultValue options);
$param{value} = $value;
$param{size} = $param{width};
$param{height} = $data->{rows};
WebGUI::Macro::process($self->session, \( $param{defaultValue} ));
WebGUI::Macro::process($session, \( $param{defaultValue} ));
my $type = "\u$data->{type}";
my $type = ucfirst $data->{type};
my $class = "WebGUI::Form::$type";
eval {
WebGUI::Pluggable::load("WebGUI::Form::$type");
} || return undef;
if (! eval { WebGUI::Pluggable::load("WebGUI::Form::$type"); } ) {
$session->log->error( "Unable to load form control - $type" );
return undef;
}
if ($type eq "Checkbox") {
$param{defaultValue} = ($param{defaultValue} =~ /checked/i);
}
@ -76,7 +78,7 @@ sub _createForm {
elsif ( $type eq 'HTMLArea' && $data->{htmlAreaRichEditor} ne '**Use_Default_Editor**') {
$param{richEditId} = $data->{htmlAreaRichEditor} ;
}
return $class->new($self->session, \%param);
return $class->new($session, \%param);
}
#-------------------------------------------------------------------

View file

@ -0,0 +1,63 @@
# vim:syntax=perl
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#------------------------------------------------------------------
# This tests the moveField functions of the DataForm
#
#
use FindBin;
use strict;
use lib "$FindBin::Bin/../../lib";
use Test::More;
use Test::Deep;
use WebGUI::Test; # Must use this before any other WebGUI modules
use WebGUI::Asset;
use WebGUI::Asset::Wobject::DataForm;
use WebGUI::VersionTag;
use WebGUI::Session;
#----------------------------------------------------------------------------
# Init
my $session = WebGUI::Test->session;
# Create a DataForm
my $df = WebGUI::Asset->getImportNode( $session )
->addChild( {
className => "WebGUI::Asset::Wobject::DataForm",
mailData => 0,
fieldConfiguration => '[]',
} );
my $versionTag = WebGUI::VersionTag->getWorking($session);
WebGUI::Test->tagsToRollback($versionTag);
$versionTag->commit;
#----------------------------------------------------------------------------
# Tests
plan tests => 1; # Increment this number for each test you create
#----------------------------------------------------------------------------
# _createForm
WebGUI::Test->interceptLogging;
$df->_createForm(
{
name => 'test field',
type => 'MASSIVE FORM FAILURE',
},
'some value'
);
is($WebGUI::Test::logger_error, "Unable to load form control - MASSIVE FORM FAILURE", '_createForm logs when it cannot load a form type');
#vim:ft=perl