File Coverage

lib/HTML/FormWidgets/Button.pm
Criterion Covered Total %
statement 22 22 100.0
branch 4 8 50.0
condition 4 12 33.3
subroutine 5 5 100.0
pod 2 2 100.0
total 37 49 75.5


line stmt bran cond sub pod time code
1             package HTML::FormWidgets::Button;
2              
3 1     1   898 use strict;
  1         3  
  1         51  
4 1     1   5 use warnings;
  1         1  
  1         45  
5 1     1   6 use parent 'HTML::FormWidgets';
  1         1  
  1         9  
6              
7             __PACKAGE__->mk_accessors( qw( button_name config src value ) );
8              
9             my $TTS = ' ~ ';
10              
11             # Private methods
12             my $_image_button = sub {
13                my ($self, $args) = @_; my $hacc = $self->hacc;
14              
15                my $src = 'http:' eq (substr $self->src, 0, 5)
16                          ? $self->src : ($self->options->{assets} // q()).$self->src;
17                my $image = $hacc->img( { alt => ucfirst $self->name,
18                                          class => 'button',
19                                          src => $src } );
20              
21                $args->{class} = $self->class || 'image_button submit';
22                $args->{name } = $self->button_name;
23                $args->{value} = $self->value // $self->name;
24              
25                return $hacc->button( $args, $image );
26             };
27              
28             my $_markup_button = sub {
29                my ($self, $args) = @_; my $hacc = $self->hacc; my $html;
30              
31                my $class = $self->src->{class} // 'button_replacement';
32              
33                for my $char (split m{}m, $self->src->{content} || 'Button') {
34                   $html .= $hacc->span( { class => $class }, $char );
35                }
36              
37                $args->{class} = $self->class || 'markup_button submit';
38              
39                return $hacc->span( $args, $html );
40             };
41              
42             my $_reset_button = sub {
43                my ($self, $args) = @_;
44              
45                $args->{type } = 'reset';
46                $args->{class} = $self->class || 'reset_button';
47                $args->{value} = $self->value // $self->name;
48              
49                return $self->hacc->button( $args, ucfirst $self->name );
50             };
51              
52             my $_submit_button = sub {
53                my ($self, $args) = @_;
54              
55                $args->{type } = 'submit';
56                $args->{class} = $self->class || 'submit_button submit';
57                $args->{name } = $self->button_name;
58                $args->{value} = $self->value // $self->name;
59              
60                return $self->hacc->button( $args, ucfirst $self->name );
61             };
62              
63             # Public methods
64             sub init {
65 1     1 1 2    my ($self, $args) = @_;
66              
67 1         3    $self->button_name( '_method' );
68 1         6    $self->config ( undef );
69 1         10    $self->container ( 0 );
70 1         7    $self->src ( q() );
71 1         9    $self->tiptype ( 'normal' );
72 1         7    $self->value ( undef );
73 1         5    return;
74             }
75              
76             sub render_field {
77 1     1 1 2    my $self = shift; my $args = {}; my $src = $self->src;
  1         3  
  1         3  
78              
79 1 50 33     7    $self->id and $args->{id} = $self->id and $self->config
      33        
80                   and $self->add_literal_js( 'anchors', $self->id, $self->config );
81              
82 1 50 33     38    return $src && ref $src eq 'HASH' ? $self->$_markup_button( $args )
    50 33        
    50          
83                     : $src && $src eq 'reset' ? $self->$_reset_button ( $args )
84                     : $src ? $self->$_image_button ( $args )
85                                                   : $self->$_submit_button( $args );
86             }
87              
88             1;
89              
90             # Local Variables:
91             # mode: perl
92             # tab-width: 3
93             # End:
94              
95