X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FPresenter%2FPart.pm;h=1a33a463bb01bb4a8b8da7151ac17d8889855bfb;hb=35d63a9fdee45777535d7ec815bfbc76c5c1bdc9;hp=bef55a35f2f0623ed574e47728de85aa89cd346a;hpb=7a6466811399cba50ab3a55f18665b5663f6d3a5;p=kivitendo-erp.git diff --git a/SL/Presenter/Part.pm b/SL/Presenter/Part.pm index bef55a35f..1a33a463b 100644 --- a/SL/Presenter/Part.pm +++ b/SL/Presenter/Part.pm @@ -2,18 +2,21 @@ package SL::Presenter::Part; use strict; +use SL::DB::Part; + use Exporter qw(import); our @EXPORT = qw(part_picker); sub part_picker { my ($self, $name, $value, %params) = @_; - my $name_e = $self->escape($name); + + $value = SL::DB::Manager::Part->find_by(id => $value) if !ref $value; + my $id = delete($params{id}) || $self->name_to_id($name); my $ret = - $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => 'part_autocomplete', type => 'hidden') . - $self->input_tag("", delete $params{type}, id => $self->name_to_id("$name_e\_type"), type => 'hidden') . - $self->input_tag("", (ref $value && $value->can('description')) ? $value->description : '', id => $self->name_to_id("$name_e\_name"), %params) . - $self->input_tag("", delete $params{column}, id => $self->name_to_id("$name_e\_column"), type => 'hidden'); + $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => 'part_autocomplete', type => 'hidden', id => $id) . + join('', map { $params{$_} ? $self->input_tag("", delete $params{$_}, id => "${id}_${_}", type => 'hidden') : '' } qw(column type unit convertible_unit)) . + $self->input_tag("", (ref $value && $value->can('description')) ? $value->description : '', id => "${id}_name", %params); $self->html_tag('span', $ret, class => 'part_picker'); } @@ -40,25 +43,47 @@ see L =over 4 -=item C +=item C + +All-in-one picker widget for parts. The name will be both id and name +of the resulting hidden C input field (but the ID can be +overwritten with C<$params{id}>). -All-in-one picker widget for parts. The name will be both id and name of the -resulting hidden C input field. An additional dummy input will be generated -which is used to find parts. For a detailed description of it's behaviour, see -section C. +An additional dummy input will be generated which is used to find +parts. For a detailed description of it's behaviour, see section +C. -C can be an id or C instance. +C<$value> can be a parts id or a C instance. -If C contains C only parts of this type will be used for autocompletion. +If C<%params> contains C only parts of this type will be used +for autocompletion. You may comma separate multiple types as in +C. + +If C<%params> contains C only parts with this unit will be used +for autocompletion. You may comma separate multiple units as in +C. + +If C<%params> contains C only parts with a unit +that's convertible to unit will be used for autocompletion. Obsolete parts will by default not displayed for selection. However they are -accepted as default values and can persist during updates. +accepted as default values and can persist during updates. As with other +selectors though, they are not selectable once overridden. + +Currently you must include C in your controller, the +presenter can not do this from the template. =back =head1 BUGS -None yet :) +=over 4 + +=item * + +Picker icons aren't displayed with css menu, because the spritemap is not loaded. + +=back =head1 AUTHOR