migrade Survey editTest to FormBuilder
This commit is contained in:
parent
963227b571
commit
033a1b7793
3 changed files with 64 additions and 22 deletions
|
|
@ -2763,8 +2763,7 @@ sub www_editTestSuite {
|
|||
my $out = $error . $addmenu;
|
||||
$out .= $tests if $testsFound;
|
||||
|
||||
my $ac = $self->getAdminConsole;
|
||||
return $ac->render($out, 'Survey');
|
||||
return '<h1>Survey</h1>' . $out;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2800,21 +2799,20 @@ sub www_editTest {
|
|||
}
|
||||
|
||||
##Build the form
|
||||
my $form = WebGUI::HTMLForm->new($session);
|
||||
$form->hidden( name=>"func", value=>"editTestSave");
|
||||
$form->hidden( name=>"testId", value=>$testId);
|
||||
$form->hidden( name=>"assetId", value=>$self->getId);
|
||||
my $form = WebGUI::FormBuilder->new($session, action => $self->getUrl);
|
||||
$form->addField( "hidden", name=>"func", value=>"editTestSave");
|
||||
$form->addField( "hidden", name=>"testId", value=>$testId);
|
||||
$form->addField( "hidden", name=>"assetId", value=>$self->getId);
|
||||
$test->crud_form($form, $test);
|
||||
$form->submit;
|
||||
$form->addField( "submit", name => "submit" );
|
||||
|
||||
if ($testId eq 'new') {
|
||||
$test->delete;
|
||||
}
|
||||
my $ac = $self->getAdminConsole;
|
||||
my $i18n = WebGUI::International->new($session, 'Asset_Survey');
|
||||
$ac->addSubmenuItem($self->session->url->page("func=editTest;testId=$testId"), $i18n->get('edit test'));
|
||||
$ac->addSubmenuItem($self->session->url->page("func=runTest;testId=$testId"), $i18n->get('run test'));
|
||||
return $ac->render($error.$form->print, $i18n->get('edit test'));
|
||||
#$ac->addSubmenuItem($self->session->url->page("func=editTest;testId=$testId"), $i18n->get('edit test'));
|
||||
#$ac->addSubmenuItem($self->session->url->page("func=runTest;testId=$testId"), $i18n->get('run test'));
|
||||
return '<h1>' . $i18n->get('edit test') . '</h1>' . $error . $form->toHtml;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ use Clone qw/clone/;
|
|||
use WebGUI::DateTime;
|
||||
use WebGUI::Exception;
|
||||
use WebGUI::HTMLForm;
|
||||
use Scalar::Util qw( blessed );
|
||||
|
||||
has session => (
|
||||
is => 'ro',
|
||||
|
|
@ -385,11 +386,12 @@ sub crud_dropTable {
|
|||
|
||||
=head2 crud_form ( $form, [$object] )
|
||||
|
||||
A class method to populate a WebGUI::HTMLForm object with all the fields for this Cruddy object.
|
||||
A class method to populate a WebGUI::FormBuilder object with all the fields for this Cruddy object.
|
||||
|
||||
=head3 $form
|
||||
|
||||
A WebGUI::HTMLForm object
|
||||
A WebGUI::FormBuilder object, or any object that does
|
||||
FormBuilder::Role::HasFields
|
||||
|
||||
=head3 $object
|
||||
|
||||
|
|
@ -399,9 +401,14 @@ An object of this class, used to provide values to the form. It's optional.
|
|||
|
||||
sub crud_form {
|
||||
my ($class, $form, $object) = @_;
|
||||
my $properties = $class->crud_getProperties;
|
||||
my $definition = [ { properties => $properties, }];
|
||||
$form->dynamicForm($definition, 'properties', $object);
|
||||
my $properties = $class->crud_getProperties( $form->session );
|
||||
for my $propName ( keys %$properties ) {
|
||||
my $prop = $properties->{ $propName };
|
||||
$form->addField( delete $prop->{fieldType},
|
||||
%$prop,
|
||||
value => $object ? $object->get( $propName ) : undef,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -416,12 +423,21 @@ session.
|
|||
|
||||
sub crud_getProperties {
|
||||
my ($class, $session) = @_;
|
||||
# We must really have a class here
|
||||
if ( blessed $class ) {
|
||||
$class = blessed $class;
|
||||
}
|
||||
|
||||
my @property_names = $class->meta->get_all_property_list();
|
||||
my $properties = {};
|
||||
foreach my $property_name (@property_names) {
|
||||
my $property = $class->meta->find_attribute_by_name($property_name);
|
||||
my $form_properties = $property->form;
|
||||
$properties->{$property_name} = $form_properties;
|
||||
next unless $property;
|
||||
$properties->{$property_name} = {
|
||||
%{ $class->getFormProperties( $session, $property_name ) },
|
||||
name => $property_name,
|
||||
fieldType => $property->form->{fieldType},
|
||||
};
|
||||
}
|
||||
return $properties;
|
||||
}
|
||||
|
|
@ -942,9 +958,13 @@ sub updateFromFormPost {
|
|||
my $session = $self->session;
|
||||
my $form = $session->form;
|
||||
my %data;
|
||||
my $properties = $self->meta->get_all_property_list($session);
|
||||
foreach my $property ($form->param) {
|
||||
$data{$property} = $form->get($property, $properties->{$property}{fieldType}, $properties->{$property}{default});
|
||||
my @properties = $self->meta->get_all_property_list($session);
|
||||
foreach my $property_name ( @properties ) {
|
||||
my $property = $self->meta->find_attribute_by_name($property_name);
|
||||
next unless $property;
|
||||
$data{$property_name} = $form->get($property_name,
|
||||
$property->form->{fieldType}, $property->default);
|
||||
$self->session->log->warn(" SETTING $property_name to $data{$property_name}");
|
||||
}
|
||||
return $self->update(\%data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ my $session = WebGUI::Test->session;
|
|||
|
||||
#----------------------------------------------------------------------------
|
||||
# Tests
|
||||
plan tests => 51;
|
||||
plan tests => 57;
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# put your tests here
|
||||
|
|
@ -288,3 +288,27 @@ $mech->content_contains( 'uploads/temp', 'uploads link exists' );
|
|||
my $survey_json = $survey->www_loadSurvey({});
|
||||
my $survey_data = JSON::from_json($survey_json);
|
||||
unlike($survey_data->{edithtml}, qr/\^International/, 'www_loadSurvey process macros');
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# www_editTest
|
||||
my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file );
|
||||
$mech->get_ok( '/' );
|
||||
$mech->session->user({ userId => 3 });
|
||||
$mech->get_ok( $survey->getUrl( 'func=editTest' ) );
|
||||
$mech->submit_form_ok({
|
||||
fields => {
|
||||
name => 'TEST Test',
|
||||
},
|
||||
}, "Create a new test"
|
||||
);
|
||||
|
||||
use WebGUI::Asset::Wobject::Survey::Test;
|
||||
my $tests = WebGUI::Asset::Wobject::Survey::Test->getAllIds( $session, {
|
||||
constraints => [{
|
||||
'assetId = ?' => $survey->getId,
|
||||
}],
|
||||
});
|
||||
is( @$tests, 1, "test exists" );
|
||||
my $test = WebGUI::Asset::Wobject::Survey::Test->new( $session, $tests->[0] );
|
||||
ok( $test, "test exists" );
|
||||
is( $test->name, "TEST Test", "name set correctly" );
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue