--- trunk/lib/Frey/Action.pm 2008/12/06 00:25:19 731
+++ trunk/lib/Frey/Action.pm 2008/12/09 20:31:43 783
@@ -26,6 +26,14 @@
default => sub { {} },
);
+has 'input_step_size' => (
+ documentation => 'Resize input fields by this step',
+ is => 'rw',
+ isa => 'Int',
+# required => 1,
+ default => 20,
+);
+
=head2 required
my @required_attributes = $self->required;
@@ -106,13 +114,51 @@
sub select_values {
my ( $name, $attr_type, $values ) = @_;
- my $options = join("\n",
- map {
- my $v = ref($_) eq 'HASH' ? $_->{$name} : $_;
- qq|| if $v;
- } @$values
- );
- qq|| if $options;
+
+ my $max_value_len = 0;
+ my @values;
+ my $html = '';
+
+ foreach ( @$values ) {
+ my $v = ref($_) eq 'HASH' ? $_->{$name} : $_;
+ warn "## value '$v'";
+ push @values, $v;
+ $max_value_len = length($v) if length($v) > $max_value_len;
+ }
+
+ warn "# max_value_len: $max_value_len";
+
+ if ( $#values > 3 ) {
+ my $options = join("\n",
+ map {
+ qq||;
+ } @values
+ );
+ # onchange="alert(this.options[this.selectedIndex].value);"
+ $html = qq|
+
+ | if $options;
+ } else {
+ my $delimiter = $max_value_len > $self->input_step_size ? qq|
| : '';
+ my $radio =
+# $delimiter .
+ join("\n",
+ map { strip(qq|
+
+
+ $_
+
+ $delimiter
+ |) } @values
+ );
+ $html = qq|