1 |
package Frey::Action; |
package Frey::Action; |
2 |
use Moose; |
use Moose; |
3 |
extends 'Frey::PPI'; |
extends 'Frey::PPI'; |
4 |
with 'Frey::Web'; |
with 'Frey::Web', 'Frey::Config'; |
|
with 'Frey::Config'; |
|
5 |
|
|
6 |
use Clone qw/clone/; |
use Clone qw/clone/; |
7 |
use Data::Dump qw/dump/; |
use Data::Dump qw/dump/; |
132 |
warn "# max_value_len: $max_value_len"; |
warn "# max_value_len: $max_value_len"; |
133 |
#my $render = eval $class . '->render_' . $name; |
#my $render = eval $class . '->render_' . $name; |
134 |
my $call = 'render_' . $name; |
my $call = 'render_' . $name; |
135 |
my $render = $self->class->$call; |
my $render = $self->class->$call if $self->class->can($call); |
136 |
warn "## render $@"; |
warn "## render $@"; |
137 |
|
|
138 |
if ( $#values > 3 && $render !~ m{radio} ) { |
if ( $#values > 3 && $render !~ m{radio} ) { |
262 |
} elsif ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) { |
} elsif ( $attr->has_type_constraint && $attr->type_constraint->can('values') ) { |
263 |
$value_html = $self->select_values( $name, $attr_type, $attr->type_constraint->values ); |
$value_html = $self->select_values( $name, $attr_type, $attr->type_constraint->values ); |
264 |
} elsif ( $class->can( $name . '_available' ) ) { |
} elsif ( $class->can( $name . '_available' ) ) { |
265 |
my $available = $class->$name . '_available'; |
my $available = $name . '_available'; |
266 |
|
$available = $class->$available; |
267 |
confess $@ if $@; |
confess $@ if $@; |
268 |
$available =~ s/^\s+//gs; |
$available =~ s/^\s+//gs; |
269 |
$available =~ s/\s+$//gs; |
$available =~ s/\s+$//gs; |
292 |
$label_title .= qq| class="required"|; |
$label_title .= qq| class="required"|; |
293 |
$value_html =~ s{(<\S+)\s}{$1 class=required }; |
$value_html =~ s{(<\S+)\s}{$1 class=required }; |
294 |
} |
} |
|
$label =~ s/_/ /g; |
|
295 |
|
|
296 |
my $set = $name; |
my $set = $name; |
297 |
$set =~ s{_[^_]+$}{}; |
$set =~ s{_[^_]+$}{}; |
309 |
</fieldset> |
</fieldset> |
310 |
|; |
|; |
311 |
} |
} |
312 |
$label =~ s{^\Q$set\E\s+}{}; |
$label =~ s{^\Q$set\E_+}{}; |
313 |
} |
} |
314 |
|
|
315 |
|
$label = $self->_label( $label ); |
316 |
$form .= qq|$before<label for="$name"$label_title>$label</label>$value_html $after|; |
$form .= qq|$before<label for="$name"$label_title>$label</label>$value_html $after|; |
317 |
my $ll = length($label); |
my $ll = length($label); |
318 |
$label_width = $ll if $ll > $label_width; |
$label_width = $ll if $ll > $label_width; |
386 |
return $html; |
return $html; |
387 |
} |
} |
388 |
|
|
389 |
|
sub _label { |
390 |
|
my ($self,$name) = @_; |
391 |
|
my $labels = $self->class->form_labels if $self->class->can('form_labels'); |
392 |
|
my $label = $labels->{$name}; |
393 |
|
if ( ! defined $label ) { |
394 |
|
$label = $name; |
395 |
|
$label =~ s{_}{ }g; |
396 |
|
} |
397 |
|
return $label; |
398 |
|
} |
399 |
|
|
400 |
=head1 SEE ALSO |
=head1 SEE ALSO |
401 |
|
|
402 |
L<http://www.quirksmode.org/css/forms.html> for info on CSS2 forms |
L<http://www.quirksmode.org/css/forms.html> for info on CSS2 forms |
403 |
|
|
404 |
=cut |
=cut |
405 |
|
|
406 |
|
__PACKAGE__->meta->make_immutable; |
407 |
|
no Moose; |
408 |
|
|
409 |
1; |
1; |