From 11c2b773e6ae71f7287b4ff7eff673f1115af589 Mon Sep 17 00:00:00 2001 From: vti Date: Sun, 19 Oct 2008 04:28:34 +0200 Subject: [PATCH] init_value method. --- .../lib/Common/Form/Processor/Model/RDBO/I18N.pm | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Common-Form-Processor-Model-RDBO-I18N/lib/Common/Form/Processor/Model/RDBO/I18N.pm b/Common-Form-Processor-Model-RDBO-I18N/lib/Common/Form/Processor/Model/RDBO/I18N.pm index 8a51368..fd9db8a 100644 --- a/Common-Form-Processor-Model-RDBO-I18N/lib/Common/Form/Processor/Model/RDBO/I18N.pm +++ b/Common-Form-Processor-Model-RDBO-I18N/lib/Common/Form/Processor/Model/RDBO/I18N.pm @@ -81,6 +81,37 @@ sub update_from_form { return $item; } +sub init_value { + my ( $self) = shift; + my ( $field, $item ) = @_; + + my @values = $self->SUPER::init_value(@_); + + return @values if scalar @values; + + my $column = $field->name; + + $item ||= $self->item; + + return unless $item->i18n; + + return + unless $item + && $item->isa( 'Rose::DB::Object' ) + && $item->i18n->can( $column ); + + # @options can be a collection of RDBO objects (has_many) or a + # RDBO objects get turned into IDs. Should also check that it's not a compound + # primary key. + + @values = + map { ref $_ && $_->isa( 'Rose::DB::Object' ) ? $_->id : $_ } + $item->i18n->$column; + + return @values; + +} + =head1 AUTHOR vti -- 2.11.4.GIT