Fix error handling for datatable fields.

agranig/1_0_subfix
Andreas Granig 12 years ago
parent ba235d629e
commit 47a7b3bf24

@ -1,5 +1,5 @@
package NGCP::Panel::Field::DataTable;
use Moose;
use HTML::FormHandler::Moose;
use Template;
extends 'HTML::FormHandler::Field';
@ -26,6 +26,7 @@ sub render_element {
ajax_src => $self->ajax_src,
table_fields => $self->table_fields,
table_titles => $self->table_titles,
errors => $self->errors,
};
my $t = new Template({});
@ -34,22 +35,23 @@ sub render_element {
return $output;
}
sub render {
my ( $self, $result ) = @_;
$result ||= $self->result;
die "No result for form field '" . $self->full_name . "'. Field may be inactive." unless $result;
my $output = $self->render_element( $result );
return $self->wrap_field( $result, $output );
return $self->render_element( $result );
}
sub wrap_field {
my ( $self, $result, $rendered_widget ) = @_;
return $rendered_widget;
sub validate {
my ( $self ) = @_;
return $self->add_error($self->label . " is invalid")
if($self->required and (
!defined $self->value or !length($self->value)
));
return 1;
}
1;
# vim: set tabstop=4 expandtab:

@ -35,7 +35,7 @@ sub check_form_buttons {
if($posted && $form->field('submitid')) {
my $val = $form->field('submitid')->value;
if(grep {/^$val$/} @{ $fields }) {
if(defined $val and grep {/^$val$/} @{ $fields }) {
my $target = '/'.$val;
$target =~ s/\./\//g;
if($c->session->{redirect_targets}) {

@ -10,6 +10,10 @@ div.modal .table thead tr th, div.modal .table tbody tr td {
padding-bottom: 4px;
}
div.modal .help-inline {
clear: both;
float: left;
}
div.dataTables_length label {
width: 460px;

@ -48,8 +48,8 @@ $(document).ready(function() {
} );
</script>
<div class="control-group">
<div class="control-group [% IF errors.size %]error[% END %]">
<label class="control-label" for="[% table_id %]">[% label %]</label>
<div class="controls">
<input type="hidden" name="[% field_name %]" value="[% value %]" id="[% hidden_id %]"></input>
@ -68,6 +68,11 @@ $(document).ready(function() {
</tr>
</tbody>
</table>
[% IF errors.size -%]
<span class="help-inline">
[% errors.join('<br/>') %]
</span>
[% END -%]
</div>
</div>
[% # vim: set tabstop=4 syntax=html expandtab: -%]

Loading…
Cancel
Save