package Embperl::MyForm ; use Embperl::Form ; use Embperl::Inline ; use base 'Embperl::Form' ; # --------------------------------------------------------------------------- sub form_id { 'topdiv' } # --------------------------------------------------------------------------- sub setup_form_obj { my ($self, $options, $fields) = @_ ; my $key = ref $self ; return if (ref $self && $self -> {id}) ; return $epreq->{forms}{$key} if (exists $epreq->{forms}{$key}) ; $options ||= {} ; $self = $self -> new ($fields, { formname => 'myform', valign => 'top', jsnamespace => 'top', language => 'de', %$options}, $self -> form_id) ; $self -> layout ; $key = ref $self ; return $epreq->{forms}{$key} = $self ; } # --------------------------------------------------------------------------- sub on_prepare_fdat { my ($self, $epreq) = @_ ; $self = $self -> setup_form_obj ; $self -> prepare_fdat ($Embperl::req); } # --------------------------------------------------------------------------- sub showfields { my ($self, $fields, $options) = @_ ; $self = $self -> setup_form_obj($options, $fields) ; $self -> init_data ($Embperl::req) ; $self -> show_controls ($Embperl::req); } # --------------------------------------------------------------------------- # # get_control_packages # # returns an array ref with packges where to search for controls # sub get_control_packages { my ($self) = @_ ; my $packages = $self ->SUPER::get_control_packages ; unshift @$packages, 'Embperl::MyForm::Control' ; return $packages ; } # --------------------------------------------------------------------------- # # get_datasrc_packages # # returns an array ref with packges where to search for data source classes # sub get_datasrc_packages { my ($self) = @_ ; my $packages = $self ->SUPER::get_datasrc_packages ; unshift @$packages, 'Embperl::MyForm::DataSource' ; return $packages ; } 1 ; __END__ ##--> the following can be used to translate form content... #------------------------------------------------------------------------------------------ # # convert_label # # converts the label of a control to the text that should be outputed. # By default does return the text or name paramter of the control. # Can be overwritten to allow for example internationalization. # # in $ctrl Embperl::Form::Control object # $name optional: name to translate, if not given take $ctrl -> {name} # sub convert_label { my ($self, $ctrl, $name, $text) = @_ ; my $prefix = $ctrl -> {nameprefix} ; return _t ($prefix . ($name || $ctrl->{basename})) if ($prefix =~ /:/) ; return _t ('attr:' . $prefix . ($name || $ctrl->{basename})) ; } #------------------------------------------------------------------------------------------ # # convert_text # # converts the text of a control to the text that should be outputed. # By default does return the text or name paramter of the control. # Can be overwritten to allow for example internationalization. # # in $ctrl Embperl::Form::Control object # sub convert_text { my ($self, $ctrl, $value, $text) = @_ ; my $prefix = $ctrl -> {nameprefix} ; $value ||= $ctrl->{basename} ; return _t ($value) if ($value =~ /:/) ; return _t ($prefix . $value) if ($prefix =~ /:/) ; return _t ('info:' . $prefix . $value) ; } #------------------------------------------------------------------------------------------ # # convert_options # # converts the values of a control to the text that should be outputed. # By default does nothing. # Can be overwritten to allow for example internationalization. # # in $ctrl Embperl::Form::Control object # $values values of the control i.e. values that are submitted # $options options of the control i.e. text that should be displayed # sub convert_options { my ($self, $ctrl, $values, $options) = @_ ; my @options ; my $prefix = $ctrl -> {nameprefix} ; my $prefix1 = "val:$ctrl->{nameprefix}$ctrl->{basename}:" ; my $prefix2 = $prefix =~ /:/?$prefix:"val:" ; foreach my $val (@$values) { my $value = ref $val?$val -> [0]:$val ; my $val1 = $prefix1 . $value ; my $val2 = $prefix2 . $value ; my $opt = _t ($val1) ; $opt = _t ($val2) if ($opt eq $val1) ; push @options, $opt eq $val2?"$val1 | $val2":$opt ; } return \@options ; } 1;