MT#8299 Use extended form for device model

Define x, y, linepos via HFH instead of validating it manually.
gjungwirth/email_test
Andreas Granig 11 years ago
parent 4596002eca
commit a5b0aaee2c

@ -256,23 +256,6 @@ sub POST :Allow {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid range definition inside linerange parameter, all must be hash");
return;
}
my $valid = [qw/x y line_index labelpos/];
foreach my $elem(@{ $valid }) {
unless(exists $label->{$elem}) {
$c->log->error("missing mandatory attribute '$elem' in a linerange.keys element");
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid keys definition inside linerange.keys parameter, missing attribute '$elem'");
return;
}
}
foreach my $k(keys %{ $label }) {
delete $label->{$k} unless $k ~~ $valid;
}
my $pos = [qw/top bottom left right/];
unless($label->{labelpos} ~~ $pos) {
$c->log->error("invalid value '$$label{labelpos}' for attribute 'labelpos', must be one of " . (join ', ', @{ $pos }));
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid value '$$label{labelpos}' for attribute 'labelpos', must be one of " . (join ', ', @{ $pos }));
return;
}
$label->{position} = delete $label->{labelpos};
$r->annotations->create($label);
}

@ -156,23 +156,12 @@ has_field 'linerange.can_blf' => (
},
);
has_field 'linerange.keys' => (
type => 'Hidden',
label => 'Key Definition',
required => 1,
element_attr => {
rel => ['tooltip'],
title => ['The position of the keys on the front image. Attributes are x, y, labelpos (how the label for the key is displayed in the web interface, relative to the given coordinates; one of top, bottom, left, right).'],
},
);
=pod
has_field 'linerange.keys' => (
type => 'Repeatable',
label => 'Key Definition',
setup_for_js => 1,
do_wrapper => 1,
do_label => 1,
required => 1,
tags => {
controls_div => 1,
},
@ -187,6 +176,45 @@ has_field 'linerange.keys.id' => (
type => 'Hidden',
);
has_field 'linerange.keys.x' => (
type => 'PosInteger',
label => 'x',
default => 0,
required => 1,
element_attr => {
rel => ['tooltip'],
title => ['Position of label in frontimage in px from left.'],
},
);
has_field 'linerange.keys.y' => (
type => 'PosInteger',
label => 'y',
default => 0,
required => 1,
element_attr => {
rel => ['tooltip'],
title => ['Position of label in frontimage in px from top.'],
},
);
has_field 'linerange.keys.labelpos' => (
type => 'Select',
label => 'Orientation',
default => 'top',
required => 1,
options => [
{ label => 'top', value => 'top' },
{ label => 'bottom', value => 'bottom' },
{ label => 'left', value => 'left' },
{ label => 'right', value => 'right' },
],
element_attr => {
rel => ['tooltip'],
title => ['Position of label text relative to label arrow.'],
},
);
has_field 'linerange.keys.rm' => (
type => 'RmElement',
value => 'Remove Key',
@ -196,11 +224,10 @@ has_field 'linerange.keys.rm' => (
has_field 'linerange.keys_add' => (
type => 'AddElement',
repeatable => 'linerange.keys',
repeatable => 'keys',
value => 'Add another Key Definition',
element_class => [qw/btn btn-primary pull-right/],
);
=cut
has_field 'linerange.rm' => (
type => 'RmElement',

Loading…
Cancel
Save