1 package Common
::Form
::Processor
::Model
::RDBO
::I18N
;
5 use Hash
::Merge
'merge';
6 use base
'Common::Form::Processor::Model::RDBO';
13 my $profile = merge
$self->profile,
19 [ map { { value
=> $_ } } $self->object_class->languages ]
24 croak
"Please define 'profile' method in subclass"
25 unless ref $profile eq 'HASH';
27 ### $$$ look at all keys in profile and allow keys to be Field names.
29 for my $group ( qw
/ required optional / ) {
30 my $required = 'required' eq $group;
32 $self->_build_fields( $profile->{ $group }, $required );
34 my $auto_fields = $profile->{ 'auto_' . $group } || next;
36 $self->_build_fields( $auto_fields, $required );
40 sub update_from_form
{
41 my ( $self, $params ) = @_;
43 my $item = $self->item;
45 my $defined = defined $item ?
1 : 0;
47 $params->{ orig_lang
} = $item->orig_lang if $item;
49 $item = $self->SUPER::update_from_form
($params);
53 $item->orig_lang( $self->field( 'orig_lang' )->value );
55 my $rel_name = $item->get_i18n_rel_name();
57 my $i18n = $item->meta->relationship($rel_name)->class->new();
59 my $values = { istran
=> 0 };
60 while ( my ($field, $value) = each %$params ) {
61 if ( $i18n->can( $field ) ) {
62 $values->{ $field } = $value;
65 $item->$rel_name($values);
70 : $item->i18n( [ lang
=> $params->{language
} ] );
72 return $item unless $i18n;
74 while ( my ($field, $value) = each %$params ) {
75 if ( $i18n->can( $field ) ) {
76 $item->i18n->$field( $value );
90 This library is free software, you can redistribute it and/or modify it under
91 the same terms as Perl itself.