| HTML-TurboForm documentation | Contained in the HTML-TurboForm distribution. |
Representation class for HTMl SelectBox element.
Straight forward so no need for much documentation. See HTML::TurboForm doku for mopre details.
Arguments: $options
returns HTML Code for select element.
Thorsten Domsch, tdomsch@gmx.de
| HTML-TurboForm documentation | Contained in the HTML-TurboForm distribution. |
package HTML::TurboForm::Element::Select; use warnings; use strict; use base qw(HTML::TurboForm::Element); __PACKAGE__->mk_accessors( qw/ default first optionstext/ ); sub render{ my ($self, $options, $view)=@_; if ($view) { $self->{view}=$view; } my $request=$self->request; my $result=''; my $disabled=''; my $class='form_select'; $self->label(' ') if (!$self->label); $class=$self->{class} if exists($self->{class}); my $name=' name="'.$self->name.'" '; my $id=' id="'.$self->name.'" '; my $checked=''; $self->{submitted} = 1 if ($request->{ $self->name }); if ($self->{submitted} == 0){ $request->{ $self->name } = $self->default if($self->default); } if ($options->{frozen}){ $disabled=' disabled ' if ($options->{frozen} == 1); } if ($self->dbdata and $self->dbid and $self->dblabel){ my @t = @{ $self->dbdata }; foreach (@t){ my $label_method = $self->dblabel; my $value_method = $self->dbid; my $l=$_->$label_method; my $v=$_->$value_method; $self->options->{$l}=$v; } } $result.='<select class="'.$class.'" '.$self->get_attr().$disabled.$id.$name.'>'; my $result2=''; if (($self->options)or ($self->optionsnum)or ($self->optionstext)){ my $optiontags =''; my $first = ''; if ($self->optionstext){ my $values = $request->{ $self->name }; $values = [ $values ] unless ref( $values ) =~ /ARRAY/; $checked=''; $optiontags=$self->optionstext; my $tmptext=$optiontags; foreach (@{$values}){ $optiontags=~s/value=\"$_\"/value=\"$_\" selected /g if ($_); } #$result2.='<input type="hidden" '.$id.$name.' value="'.$value.'">' if (($disabled ne '')&& ( $checked ne '')); } if ($self->optionsnum){ foreach (@{$self->optionsnum}){ while( my ($key, $value) = each %$_ ) { my $values = $request->{ $self->name }; $values = [ $values ] unless ref( $values ) =~ /ARRAY/; $checked=''; if ( @{ $values } && $value) { if ( grep { $_ eq $value if ($_) } @{ $values } ){ $checked=' selected '; } } if ($self->first) { if ($value ne $self->first){ $optiontags.='<option '.$checked.' value="'.$value.'">'.$key.'</option>'; } else { $first = '<option '.$checked.' value="'.$value.'">'.$key.'</option>'; } } else { $optiontags.='<option '.$checked.' value="'.$value.'">'.$key.'</option>'; } $result2.='<input type="hidden" '.$id.$name.' value="'.$value.'">' if (($disabled ne '')&& ( $checked ne '')); } } } if ($self->options){ foreach my $key(sort keys %{$self->options}){ my $value = $self->options->{$key}; $value="" if (!$value); my $values = $request->{ $self->name }; $values = [ $values ] unless ref( $values ) =~ /ARRAY/; $checked=''; if (@{ $values } && $value) { foreach (@{$values}){ #if ( grep { $_ eq $value } @{ $values } ){ if ($_){ $checked=' selected ' if $_ eq $value; } } } $self->first('') if (!$self->first); if ($value ne $self->first){ $optiontags.='<option '.$checked.' value="'.$value.'">'.$key.'</option>'; } else { $first = '<option '.$checked.' value="'.$value.'">'.$key.'</option>'; } $result2.='<input type="hidden" '.$id.$name.' value="'.$value.'">' if (($disabled ne '')&& ( $checked ne '')); } } $result .= $first.$optiontags; } $result.='</select>'; return $self->vor($options).$result.$result2.$self->nach if ($self->{pure}); return $self->vor($options).$result.$result2.$self->nach; } sub get_value{ my ($self) = @_; my $result=''; $result=$self->{request}->{$self->name} if exists($self->{request}->{$self->name}); $result='' if ($result eq '-1'); return $result; } 1; __END__