Class-DBI-FromForm-0.04/0000755000200400020040000000000010401776463015423 5ustar marcusmarcus00000000000000Class-DBI-FromForm-0.04/MANIFEST0000644000200400020040000000023410301306444016536 0ustar marcusmarcus00000000000000Changes FromForm.pm Makefile.PL MANIFEST This list of files README test.pl META.yml Module meta-data (added by MakeMaker) Class-DBI-FromForm-0.04/META.yml0000644000200400020040000000057410401776463016702 0ustar marcusmarcus00000000000000# http://module-build.sourceforge.net/META-spec.html #XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX# name: Class-DBI-FromForm version: 0.04 version_from: FromForm.pm installdirs: site requires: Class::DBI: 0 Data::FormValidator: 0 distribution_type: module generated_by: ExtUtils::MakeMaker version 6.17 Class-DBI-FromForm-0.04/FromForm.pm0000644000200400020040000000540110370102455017475 0ustar marcusmarcus00000000000000package Class::DBI::FromForm; use strict; use vars qw/$VERSION @EXPORT/; use base 'Exporter'; $VERSION = 0.04; @EXPORT = qw/update_from_form create_from_form/; =head1 NAME Class::DBI::FromForm - Update Class::DBI data using Data::FormValidator or HTML Widget =head1 SYNOPSIS package Film; use Class::DBI::FromForm; use base 'Class::DBI'; my $results = Data::FormValidator->check( ... ); my $film = Film->retrieve('Fahrenheit 911'); $film->update_from_form($results); my $new_film = Film->create_from_form($results); =head1 DESCRIPTION Create and update L objects from L or L. =head2 METHODS =head3 create_from_form Create a new object. =cut sub create_from_form { my $class = shift; die "create_from_form can only be called as a class method" if ref $class; __PACKAGE__->_run_create( $class, @_ ); } =head3 update_from_form Update object. =cut sub update_from_form { my $self = shift; die "update_from_form cannot be called as a class method" unless ref $self; __PACKAGE__->_run_update( $self, @_ ); } sub _run_create { my ( $me, $class, $results ) = @_; my $them = bless {}, $class; my $cols = {}; foreach my $col ( $them->columns('All') ) { if($results->isa('HTML::Widget::Result')) { $cols->{$col} = $results->param($col); } else { $cols->{$col} = $results->valid($col); } } return $class->create($cols); } sub _run_update { my ( $me, $them, $results ) = @_; my @cols = ( $results->isa('HTML::Widget::Result') ? $results->valid : keys %{ $results->valid } ); foreach my $col ( @cols ) { if ( $them->can($col) ) { next if $col eq $them->primary_column; if($results->isa('HTML::Widget::Result')) { $them->$col( $results->param($col)); } else { $them->$col( $results->valid($col)); } } } $them->update; return 1; } =head1 fill_widget This only applies to L>. Fills the form from a CDBI object. =cut sub fill_widget { my ($me ,$widget)=@_; foreach my $element ( @{ $widget->{_elements} } ) { my $name=$element->name; next unless $name && $me->can($name); $element->value($me->$name); } } =head1 SEE ALSO L, L, L =head1 AUTHOR Sebastian Riedel, C =head1 LICENSE This library is free software . You can redistribute it and/or modify it under the same terms as perl itself. =cut 1; Class-DBI-FromForm-0.04/test.pl0000644000200400020040000000012010301306444016713 0ustar marcusmarcus00000000000000use strict; use Test::More tests => 1; BEGIN { use_ok 'Class::DBI::FromForm' } Class-DBI-FromForm-0.04/Changes0000644000200400020040000000056310401776427016722 0ustar marcusmarcus00000000000000Revision history for Perl extension Class::DBI::FromForm 0.04 Fri Mar 03 09:23:00 - Add support for HTML::Widget - Added a fill_widget for HTML::Widget 0.03 Mon May 09 08:00:00 2005 - allow undef (Andy Grundman) 0.02 Mon Mar 21 08:00:00 2005 - allow 0 values (adtim@mail.ru) 0.01 Thu Jan 04 00:00:00 2005 - initial release Class-DBI-FromForm-0.04/README0000644000200400020040000000142710301306444016272 0ustar marcusmarcus00000000000000NAME Class::DBI::FromForm - Update Class::DBI data using Data::FormValidator SYNOPSIS package Film; use Class::DBI::FromForm; use base 'Class::DBI'; my $results = Data::FormValidator->check( ... ); my $film = Film->retrieve('Fahrenheit 911'); $film->update_from_form($results); my $new_film = Film->create_from_form($results); DESCRIPTION Create and update Class::DBI objects from Data::FormValidator. METHODS create_from_form Create a new object. update_from_form Update object. SEE ALSO Class::DBI, Class::DBI::FromCGI, Data::FormValidator AUTHOR Sebastian Riedel, "sri@oook.de" LICENSE This library is free software . You can redistribute it and/or modify it under the same terms as perl itself. Class-DBI-FromForm-0.04/Makefile.PL0000644000200400020040000000034110301306444017356 0ustar marcusmarcus00000000000000use ExtUtils::MakeMaker; WriteMakefile( 'NAME' => 'Class::DBI::FromForm', 'VERSION_FROM' => 'FromForm.pm', 'PREREQ_PM' => { Class::DBI => 0, Data::FormValidator => 0 }, );