X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FHelper%2FGetModels%2FBase.pm;h=ee69c8316bddce3142bab6d428b4175b80bd3ae3;hb=124e72be4112c79f697b538a46c9435ffd0c72f3;hp=3d28de5d14d7fedb304002a8db2420c286d455bf;hpb=ec3a4636c1d58339915614120cd82759150d7641;p=kivitendo-erp.git diff --git a/SL/Controller/Helper/GetModels/Base.pm b/SL/Controller/Helper/GetModels/Base.pm index 3d28de5d1..ee69c8316 100644 --- a/SL/Controller/Helper/GetModels/Base.pm +++ b/SL/Controller/Helper/GetModels/Base.pm @@ -4,11 +4,15 @@ use strict; use parent 'Rose::Object'; use Scalar::Util qw(weaken); - use Rose::Object::MakeMethods::Generic ( - scalar => [ qw(get_models) ], + scalar => [ qw(get_models disabled finalized) ], ); +# phase stubs +sub read_params { die 'implement me' } + +sub finalize { die 'implement me' } + sub set_get_models { $_[0]->get_models($_[1]); @@ -23,7 +27,72 @@ sub merge_args { $final_args->{$field} = [ map { @{ $_->{$field} || [] } } @args ]; } + for my $field (qw(page per_page sort_by)) { + for my $arg (@args) { + next unless defined $arg->{$field}; + $final_args->{$field} //= $arg->{$field}; + } + } + return %$final_args; } +sub is_enabled { + my ($self) = @_; + return !$self->disabled; +} + 1; + +__END__ + +=encoding utf-8 + +=head1 NAME + +SL::Controller::Helper::GetModels::Base - base class for GetModels plugins + +=head1 SYNOPSIS + + package SL::Controller::Helper::Getmodels::...; + use parent 'SL::Controller::Helper::Getmodels::Base' + + sub read_params { ... } + + sub finalize { ... } + +=head1 DESCRIPTION + +This is a base class for plugins of the GetModels framework for controllers. It +provides some common ground. + +=head1 FUNCTIONS + +=over 4 + +=item read_params + +This will be called when GetModels transitions to C phase. +Make sure that you don't need anything from source after that. + +=item finalize + +This will be called when GetModels transitions to C phase. Make sure +that no internal state or configuration gets changed after this. + +=item merge_args + +Common function to merge the output of various callbacks. + +=back + +=head1 BUGS AND CAVEATS + +None yet :) + +=head1 AUTHOR + +Sven Schöling Es.schoeling@linet-services.deE + +=cut +