Jifty

 view release on metacpan or  search on metacpan

lib/Jifty/Web/Form/Field/Select.pm  view on Meta::CPAN

use warnings;
use strict;
 
package Jifty::Web::Form::Field::Select;

use base qw/Jifty::Web::Form::Field/;

=head1 NAME

Jifty::Web::Form::Field::Select - Add a list/popup menu control to your forms

=head1 METHODS

=head2 render_widget

Renders the select widget.

=cut

sub _render_select_begin {
    my $self  = shift;
    my $rendered = qq! <select !;
    $rendered .= qq! name="@{[ $self->input_name ]}"!;
    $rendered .= qq! id="@{[ $self->element_id ]}"!;
    $rendered .= qq! title="@{[ $self->title ]}"! if ($self->title);
    $rendered .= $self->_widget_class;
    $rendered .= $self->javascript;
    $rendered .= q! multiple="multiple"! if $self->multiple;
    $rendered .= qq!      >\n!;
    return $rendered;
}

sub _render_select_values {
    my $self = shift;
    my $rendered = '';

    my $current_value = $self->current_value;
    for my $opt ($self->available_values) {
        my $display = ref($opt) ? $opt->{'display'} : $opt;
        my $value   = ref($opt) ? $opt->{'value'} : $opt;
        $value = "" unless defined $value;
        $rendered .= qq!<option value="@{[ Jifty->web->escape($value) ]}"!;
        $rendered .= qq! selected="selected"!
          if defined $current_value
              && (
                  ref $current_value eq 'ARRAY'
                  ? ( grep { $value eq $_ } @$current_value )
                  : $current_value eq $value );
        $rendered .= qq!>!;
        $rendered .= Jifty->web->escape(_($display)) if defined $display;
        $rendered .= qq!</option>\n!;
    }

    return $rendered;
}

sub _render_select_end {
    my $self  = shift;
    return qq!</select>\n!;
}

sub render_widget {
    my $self = shift;

    my $field = $self->_render_select_begin;
    $field .= $self->_render_select_values;
    $field .= $self->_render_select_end;

    Jifty->web->out($field);
    '';



( run in 0.849 second using v1.01-cache-2.11-cpan-364913b4093 )