3 |
use Data::Dump qw/dump/; |
use Data::Dump qw/dump/; |
4 |
use Carp qw/carp/; |
use Carp qw/carp/; |
5 |
|
|
6 |
use Moose; |
use Moose::Role; |
7 |
extends 'Frey::Web::Button'; |
with 'Frey::Web::Field'; |
8 |
#with 'BonusTypes'; |
#with 'BonusTypes'; |
9 |
|
|
10 |
use Moose::Util::TypeConstraints; |
use Moose::Util::TypeConstraints; |
74 |
# my $reader = $attr->get_read_method; |
# my $reader = $attr->get_read_method; |
75 |
# my $val = $self->$reader || ''; |
# my $val = $self->$reader || ''; |
76 |
foreach my $name ( @{ $self->display_columns } ) { |
foreach my $name ( @{ $self->display_columns } ) { |
77 |
my $field_name = $self->field_name($name); |
$out .= $self->render_field( $name, $iterator ) |
|
my $val; |
|
|
$val = $self->fey->$name if $self->fey && $self->fey->can($name); |
|
|
$out .= $iterator->( $name, $field_name, ucfirst($name), $val ) || ''; # || '' to shut warnings |
|
78 |
} |
} |
79 |
return $out; |
return $out; |
80 |
} |
} |
81 |
|
|
82 |
|
sub render_field { |
83 |
|
my ($self, $name, $iterator) = @_; |
84 |
|
my $field_name = $self->field_name($name); |
85 |
|
my $val; |
86 |
|
$val = $self->fey->$name if $self->fey && $self->fey->can($name); |
87 |
|
$iterator->( $name, $field_name, ucfirst($name), $val ) || ''; # || '' to shut warnings |
88 |
|
} |
89 |
|
|
90 |
sub main { |
sub main { |
91 |
my ( $self ) = @_; |
my ( $self ) = @_; |
92 |
|
|
106 |
warn ">>> ",length($out),"\n"; |
warn ">>> ",length($out),"\n"; |
107 |
my $f = $self->next($out); |
my $f = $self->next($out); |
108 |
$self->set_from_hash($f); |
$self->set_from_hash($f); |
109 |
$self->exec_buttons($f); |
$self->exec_callbacks($f); |
110 |
} |
} |
111 |
}; |
}; |
112 |
|
|
141 |
|; |
|; |
142 |
}); |
}); |
143 |
|
|
144 |
return qq|<tr class="editform">$out<td>| . $self->render_buttons . qq|</td></tr>| if $self->layout eq 'columns'; |
return qq|<tr class="editform">$out<td>| . $self->render_callbacks . qq|</td></tr>| if $self->layout eq 'columns'; |
145 |
|
|
146 |
$self->render_wrapper_class( $out, 'editform' ); |
$self->render_wrapper_class( $out, 'editform' ); |
147 |
} |
} |
164 |
</div> |
</div> |
165 |
|; |
|; |
166 |
}); |
}); |
167 |
return qq|<tr>$out<td>| . $self->render_buttons . qq|</td></tr>| if $self->layout eq 'columns'; |
return qq|<tr>$out<td>| . $self->render_callbacks . qq|</td></tr>| if $self->layout eq 'columns'; |
168 |
$self->render_wrapper_class( $out, 'view' ); |
$self->render_wrapper_class( $out, 'view' ); |
169 |
} |
} |
170 |
|
|
175 |
return '<!-- no output -->'; |
return '<!-- no output -->'; |
176 |
} |
} |
177 |
$out =~ s/^\t+//mg; # XXX compress output |
$out =~ s/^\t+//mg; # XXX compress output |
178 |
return $out . qq|<tr><td colspan=2>| . $self->render_buttons . qq|</td></tr>| if $self->layout eq 'table'; |
return $out . qq|<tr><td colspan=2>| . $self->render_callbacks . qq|</td></tr>| if $self->layout eq 'table'; |
179 |
return qq|<div class="$class">| . $out . $self->render_buttons . qq|</div>|; |
return qq|<div class="$class">| . $out . $self->render_callbacks . qq|</div>|; |
180 |
} |
} |
181 |
|
|
182 |
sub _build_display_columns { |
sub _build_display_columns { |