Form::Processor::Field::Multiple - Select one or more options


Form-Processor documentation Contained in the Form-Processor distribution.

Index


Code Index:

METHODS

Top

options

This options methods will re-arrange the opitions list to display the currently selected items on top.

NAME

Top

Form::Processor::Field::Multiple - Select one or more options

SYNOPSIS

Top

See Form::Processor

DESCRIPTION

Top

This inherits from the Select field, which just provides options. and sets the "multiple" flag true to accept multiple options. If a field inherits from Select but you want to use it as a multiple select then just define the file as such.

This also will arrange the currently selected items to the top of the list.

Widget

Fields can be given a widget type that is used as a hint for the code that renders the field.

This field's widget type is: "select".

Subclass

Fields may inherit from other fields. This field inherits from: "Select".

AUTHORS

Top

Bill Moseley

COPYRIGHT

Top

SUPPORT / WARRANTY

Top

Form::Processor is free software and is provided WITHOUT WARRANTY OF ANY KIND. Users are expected to review software for fitness and usability.


Form-Processor documentation Contained in the Form-Processor distribution.
package Form::Processor::Field::Multiple;
use strict;
use warnings;
use base 'Form::Processor::Field::Select';
our $VERSION = '0.03';


sub init_multiple { 1 } # allow multiple values.

sub init_size { 5 } # default to showing five items if showing in a select list.


sub options {
    my $self = shift;
    my @options = $self->SUPER::options( @_ );
    my $value = $self->value;


    # This places the currently selected options at the top of the list
    # Makes the drop down lists a bit nicer

    if ( @options && defined $value ) {
        my %selected = map { $_ => 1 } ref($value) eq 'ARRAY' ? @$value : ($value);

        my @out =  grep {   $selected{ $_->{value} }  } @options;
        push @out, grep {  !$selected{ $_->{value} }  } @options;

        return wantarray ? @out : \@out;
    }

    return wantarray ? @options : \@options;
}



1;