X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPresenter%2FPart.pm;h=8131eff14ad590e4aea643e14845780ccaf0b060;hb=b75c6cbb82023b0d626ffc9996eec710cdef8357;hp=ac1bc8b7914f26da1b461d63cbb122d41176dba3;hpb=5eb166228b04d27236862de0bfc1d8df6080ba0b;p=kivitendo-erp.git diff --git a/SL/Presenter/Part.pm b/SL/Presenter/Part.pm index ac1bc8b79..8131eff14 100644 --- a/SL/Presenter/Part.pm +++ b/SL/Presenter/Part.pm @@ -5,53 +5,62 @@ use strict; use SL::DB::Part; use SL::DB::PartClassification; use SL::Locale::String qw(t8); +use SL::Presenter::EscapedText qw(escape is_escaped); +use SL::Presenter::Tag qw(input_tag html_tag name_to_id select_tag); use Exporter qw(import); -our @EXPORT = qw(part_picker part select_classification classification_abbreviation type_abbreviation separate_abbreviation typeclass_abbreviation); +our @EXPORT_OK = qw( + part_picker part select_classification classification_abbreviation + type_abbreviation separate_abbreviation typeclass_abbreviation +); +our %EXPORT_TAGS = (ALL => \@EXPORT_OK); use Carp; sub part { - my ($self, $part, %params) = @_; + my ($part, %params) = @_; $params{display} ||= 'inline'; croak "Unknown display type '$params{display}'" unless $params{display} =~ m/^(?:inline|table-cell)$/; my $text = join '', ( - $params{no_link} ? '' : '', - $self->escape($part->partnumber), + $params{no_link} ? '' : '', + escape($part->partnumber), $params{no_link} ? '' : '', ); - return $self->escaped_text($text); + + is_escaped($text); } sub part_picker { - my ($self, $name, $value, %params) = @_; + my ($name, $value, %params) = @_; $value = SL::DB::Manager::Part->find_by(id => $value) if $value && !ref $value; - my $id = $params{id} || $self->name_to_id($name); + my $id = $params{id} || name_to_id($name); my @classes = $params{class} ? ($params{class}) : (); push @classes, 'part_autocomplete'; my $ret = - $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => "@classes", type => 'hidden', id => $id, + input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => "@classes", type => 'hidden', id => $id, 'data-part-picker-data' => JSON::to_json(\%params), ) . - $self->input_tag("", ref $value ? $value->displayable_name : '', id => "${id}_name", %params); + input_tag("", ref $value ? $value->displayable_name : '', id => "${id}_name", %params); $::request->layout->add_javascripts('kivi.Part.js'); $::request->presenter->need_reinit_widgets($id); - $self->html_tag('span', $ret, class => 'part_picker'); + html_tag('span', $ret, class => 'part_picker'); } +sub picker { goto &part_picker } + # # shortcut for article type # sub type_abbreviation { - my ($self, $part_type) = @_; + my ($part_type) = @_; return $::locale->text('Assembly (typeabbreviation)') if $part_type eq 'assembly'; return $::locale->text('Part (typeabbreviation)') if $part_type eq 'part'; return $::locale->text('Assortment (typeabbreviation)') if $part_type eq 'assortment'; @@ -77,23 +86,23 @@ sub type_abbreviation { # shortcut for article type # sub classification_abbreviation { - my ($self, $id) = @_; + my ($id) = @_; SL::DB::Manager::PartClassification->cache_all(); my $obj = SL::DB::PartClassification->load_cached($id); $obj && $obj->abbreviation ? t8($obj->abbreviation) : ''; } sub typeclass_abbreviation { - my ($self, $part) = @_; + my ($part) = @_; return '' if !$part || !$part->isa('SL::DB::Part'); - return $self->type_abbreviation($part->part_type).$self->classification_abbreviation($part->classification_id); + return type_abbreviation($part->part_type) . classification_abbreviation($part->classification_id); } # # shortcut for article type # sub separate_abbreviation { - my ($self, $id) = @_; + my ($id) = @_; SL::DB::Manager::PartClassification->cache_all(); my $obj = SL::DB::PartClassification->load_cached($id); $obj && $obj->abbreviation && $obj->report_separate ? t8($obj->abbreviation) : ''; @@ -103,12 +112,16 @@ sub separate_abbreviation { # generate selection tag # sub select_classification { - my ($self, $name, %attributes) = @_; + my ($name, %attributes) = @_; + $attributes{value_key} = 'id'; $attributes{title_key} = 'description'; - my $collection = SL::DB::Manager::PartClassification->get_all_sorted(); + + my $classification_type_filter = delete $attributes{type} // []; + + my $collection = SL::DB::Manager::PartClassification->get_all_sorted( where => $classification_type_filter ); $_->description($::locale->text($_->description)) for @{ $collection }; - return $self->select_tag( $name, $collection, %attributes ); + select_tag( $name, $collection, %attributes ); } 1;