|
Lines 213-218
sub _error {
Link Here
|
| 213 |
sub _load { |
213 |
sub _load { |
| 214 |
my ($self) = @_; |
214 |
my ($self) = @_; |
| 215 |
|
215 |
|
|
|
216 |
# Try to find the class that can handle this plugin |
| 217 |
my @plugins = Koha::Plugins->new()->get_valuebuilders_installed(); |
| 218 |
|
| 219 |
foreach my $vb (@plugins) { |
| 220 |
my $plugin = $vb->{plugin}; |
| 221 |
|
| 222 |
# Check if this plugin provides the value builder we need |
| 223 |
if ( $vb->{name} eq $self->{name} ) { |
| 224 |
|
| 225 |
# Store the plugin object for later use |
| 226 |
$self->{plugin} = $plugin; |
| 227 |
|
| 228 |
# Get the builder and launcher directly from the plugin object |
| 229 |
if ( $plugin->can('builder_code') ) { |
| 230 |
$self->{builder} = sub { return $plugin->builder_code(@_); }; |
| 231 |
} |
| 232 |
|
| 233 |
if ( $plugin->can('launcher') ) { |
| 234 |
$self->{launcher} = sub { return $plugin->launcher(@_); }; |
| 235 |
} |
| 236 |
|
| 237 |
if ( !$self->{builder} && !$self->{launcher} ) { |
| 238 |
return $self->_error('Plugin does not contain builder_code nor launcher methods'); |
| 239 |
} |
| 240 |
|
| 241 |
$self->{_loaded} = 1; |
| 242 |
return 1; |
| 243 |
} |
| 244 |
} |
| 245 |
|
| 246 |
# If not found via plugin, try in standard dir |
| 216 |
my ( $rv, $file ); |
247 |
my ( $rv, $file ); |
| 217 |
return $self->_error('Plugin needs a name') if !$self->{name}; #2chk |
248 |
return $self->_error('Plugin needs a name') if !$self->{name}; #2chk |
| 218 |
$self->{path} //= _valuebuilderpath(); |
249 |
$self->{path} //= _valuebuilderpath(); |
|
Lines 291-302
sub _generate_js {
Link Here
|
| 291 |
return $self->_error('Builder sub not defined'); |
322 |
return $self->_error('Builder sub not defined'); |
| 292 |
} |
323 |
} |
| 293 |
|
324 |
|
|
|
325 |
# Make a copy of params and add the plugin object to it |
| 326 |
my $builder_params = {%$params}; |
| 327 |
|
| 328 |
# Add the value builder's plugin if available |
| 329 |
if ( $self->{name} && $self->{plugin} ) { |
| 330 |
$builder_params->{plugin} = $self->{plugin}; |
| 331 |
} |
| 332 |
|
| 294 |
my @params = $self->{oldschool} // 0 |
333 |
my @params = $self->{oldschool} // 0 |
| 295 |
? ( |
334 |
? ( |
| 296 |
$params->{dbh}, $params->{record}, $params->{tagslib}, |
335 |
$params->{dbh}, $params->{record}, $params->{tagslib}, |
| 297 |
$params->{id} |
336 |
$params->{id} |
| 298 |
) |
337 |
) |
| 299 |
: ($params); |
338 |
: ($builder_params); |
| 300 |
my @rv = &$sub(@params); |
339 |
my @rv = &$sub(@params); |
| 301 |
return $self->_error( 'Builder sub failed: ' . $@ ) if $@; |
340 |
return $self->_error( 'Builder sub failed: ' . $@ ) if $@; |
| 302 |
|
341 |
|