X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FModel%2FCDBI%2FAsForm.pm;h=02403e006084d86ddcb4946586725291f482fcbd;hb=8d3f7b6c5612270c10042d8e0a9e52ad4ad54a46;hp=3c35dfc5fa4b23b978cb886986cd528123f1d863;hpb=3ed98309a0852fc198f9e4d0e6f70c5510c8282f;p=maypole.git diff --git a/lib/Maypole/Model/CDBI/AsForm.pm b/lib/Maypole/Model/CDBI/AsForm.pm index 3c35dfc..02403e0 100644 --- a/lib/Maypole/Model/CDBI/AsForm.pm +++ b/lib/Maypole/Model/CDBI/AsForm.pm @@ -1,6 +1,12 @@ package Maypole::Model::CDBI::AsForm; -use 5.006; +#TODO -- + +# TESTED and Works -- +# has_many select -- $obj->to_field($has_many_col); # select one form many +# -- $class->to_field($has_many_col); # foreign inputs +# $class->search_inputs; / + use strict; use warnings; @@ -9,22 +15,22 @@ use base 'Exporter'; use Data::Dumper; use Class::DBI::Plugin::Type (); use HTML::Element; +use Carp qw/cluck/; our $OLD_STYLE = 0; # pjs -- Added new methods to @EXPORT -our @EXPORT = - qw( - to_cgi to_field _to_textarea _to_textfield _to_select +our @EXPORT = + qw( + to_cgi to_field foreign_input_delimiter search_inputs unselect_element + _field_from_how _field_from_relationship _field_from_column + _to_textarea _to_textfield _to_select _select_guts _to_foreign_inputs _to_enum_select _to_bool_select - _to_select_from_many _to_select_from_related _to_select_from_objs _to_hidden _to_link_hidden _rename_foreign_input _to_readonly _options_from_objects _options_from_arrays _options_from_hashes - _options_from_scalars - _field_from_how _field_from_relationship _field_from_column - _select_guts unselect_element search_inputs make_param_foreign + _options_from_array _options_from_hash ); -our $VERSION = '2.11'; +our $VERSION = '.95'; =head1 NAME @@ -47,50 +53,105 @@ Maypole::Model:CDBI::AsForm - Produce HTML form elements for database columns end_form; } - . . . somewhere use to_field($col, $how, $args) - package BeerDB::Pint; - __PACKAGE__->has_a('drinker', 'BeerDB::Drinker'); - __PACKAGE__->has_a('beer', 'BeerDB::Beer'); - package BeerDB::Drinker; - __PACKAGE__->has_many('pints', 'BeerDB::Pint'); - # NEED to do mapping - my $sel = BeerDB::Drinker->to_field('pints', 'select') # multiple - my $sel = $Drunk->to_field('pints', 'select'); # Already had beers selected + . . . + + # Somewhere else in a Maypole application about beer... + + + + + $beer->to_field('brewery', 'textfield', { + name => 'brewery_id', value => $beer->brewery, + # however, no need to set value since $beer is object + }); + + # Rate a beer + $beer->to_field(rating => select => { + items => [1 , 2, 3, 4, 5], + }); + + # Select a Brewery to visit in the UK + Brewery->to_field(brewery_id => { + items => [ Brewery->search_like(location => 'UK') ], + }); + + # Make a select for a boolean field + $Pub->to_field('open' , { items => [ {'Open' => 1, 'Closed' => 0 } ] }); + + $beer->to_field('brewery', { + selected => $beer->brewery, # again not necessary since caller is obj. + }); + + + $beer->to_field('brewery', 'link_hidden', {r => $r, uri => 'www.maypole.perl.org/brewery/view/'.$beer->brewery}); + # an html link that is also a hidden input to the object. R is required to + # make the uri unless you pass a uri + + + + ##################################################### + # Templates Usage + +