17 |
=cut |
=cut |
18 |
|
|
19 |
use Data::Dump qw/dump/; |
use Data::Dump qw/dump/; |
|
|
|
20 |
use Data::UUID; |
use Data::UUID; |
21 |
use Moose; |
use Moose; |
22 |
with 'Continuity::Coro::Moose'; |
with 'Continuity::Coro::Moose'; |
107 |
} |
} |
108 |
|
|
109 |
sub set_from_hash { |
sub set_from_hash { |
110 |
my ($self, $f, $callback) = @_; |
my ($self, $f) = @_; |
111 |
my %attrmap = %{ $self->meta->get_attribute_map }; |
my %attrmap = %{ $self->meta->get_attribute_map }; |
112 |
my $hash; |
my $hash; |
113 |
while( my ($name, $attr) = each %attrmap ) { |
while( my ($name, $attr) = each %attrmap ) { |
118 |
$hash->{ $name } = $f->{$field_name}; |
$hash->{ $name } = $f->{$field_name}; |
119 |
} |
} |
120 |
} |
} |
121 |
warn "# hash = ",dump( $hash ); |
warn "# set_from_hash ", $self->uuid," produced hash = ",dump( $hash ) if $hash; |
122 |
$callback->( $hash ) if defined $hash && defined $callback; |
return $hash; |
123 |
} |
} |
124 |
|
|
125 |
sub add_button { |
sub add_button { |
127 |
$self->callback->{$name} = $callback; |
$self->callback->{$name} = $callback; |
128 |
} |
} |
129 |
|
|
130 |
|
sub remove_button { |
131 |
|
my ( $self, $name ) = @_; |
132 |
|
delete( $self->callback->{$name} ); |
133 |
|
} |
134 |
|
|
135 |
sub render_buttons { |
sub render_buttons { |
136 |
my ($self) = @_; |
my ($self) = @_; |
137 |
my $out = ''; |
my $out = ''; |
138 |
foreach my $name (keys %{$self->callback}) { |
foreach my $name (keys %{$self->callback}) { |
139 |
my $btn_name = $self->field_name($name); |
my $btn_name = $self->field_name($name); |
140 |
$out .= qq{ |
$out .= qq{ |
|
<br> |
|
141 |
<input type="submit" name="@{[$btn_name]}" value="$name"> |
<input type="submit" name="@{[$btn_name]}" value="$name"> |
142 |
}; |
}; |
143 |
} |
} |