Koha-clms/t/lib/Koha/Plugin/Test.pm

256 lines
5.6 KiB
Perl

package Koha::Plugin::Test;
## It's good practice to use Modern::Perl
use Modern::Perl;
use Koha::Exceptions::Exception;
use Koha::Plugins::Tab;
use Mojo::JSON qw(decode_json);
## Required for all plugins
use base qw(Koha::Plugins::Base);
our $VERSION = 1.01;
our $metadata = {
name => 'Test Plugin',
author => 'Kyle M Hall',
description => 'Test plugin',
date_authored => '2013-01-14',
date_updated => '2013-01-14',
minimum_version => '3.11',
maximum_version => undef,
version => $VERSION,
my_example_tag => 'find_me',
};
## This is the minimum code required for a plugin's 'new' method
## More can be added, but none should be removed
sub new {
my ( $class, $args ) = @_;
$args->{'metadata'} = $metadata;
my $self = $class->SUPER::new($args);
return $self;
}
sub report {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::report";
}
sub tool {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::tool";
}
sub to_marc {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::to_marc";
}
sub intranet_catalog_biblio_enhancements_toolbar_button {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::intranet_catalog_biblio_enhancements_toolbar_button";
}
sub intranet_catalog_biblio_enhancements {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::intranet_catalog_biblio_enhancements";
}
sub opac_online_payment {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::opac_online_payment";
}
sub opac_online_payment_begin {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::opac_online_payment_begin";
}
sub opac_online_payment_end {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::opac_online_payment_end";
}
sub opac_head {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::opac_head";
}
sub opac_js {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::opac_js";
}
sub intranet_head {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::intranet_head";
}
sub intranet_js {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::intranet_js";
}
sub configure {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::configure";;
}
sub install {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::install";
}
sub upgrade {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::upgrade";
}
sub uninstall {
my ( $self, $args ) = @_;
return "Koha::Plugin::Test::uninstall";
}
sub test_output {
my ( $self ) = @_;
$self->output( '¡Hola output!', 'json' );
}
sub test_output_html {
my ( $self ) = @_;
$self->output_html( '¡Hola output_html!' );
}
sub api_namespace {
return "testplugin";
}
sub after_biblio_action {
my ( $self, $params ) = @_;
my $action = $params->{action} // '';
my $biblio = $params->{biblio};
my $biblio_id = $params->{biblio_id};
if ( $action ne 'delete' ) {
Koha::Exceptions::Exception->throw("after_biblio_action called with action: $action, ref: " . ref($biblio) );
}
else {
Koha::Exceptions::Exception->throw("after_biblio_action called with action: $action") if $biblio_id;
}
}
sub after_item_action {
my ( $self, $params ) = @_;
my $action = $params->{action} // '';
my $item = $params->{item};
my $item_id = $params->{item_id};
if ( $action ne 'delete' ) {
Koha::Exceptions::Exception->throw("after_item_action called with action: $action, ref: " . ref($item) );
}
else {
Koha::Exceptions::Exception->throw("after_item_action called with action: $action" ) if $item_id;
}
}
sub api_routes {
my ( $self, $args ) = @_;
my $spec = qq{
{
"/patrons/{patron_id}/bother": {
"put": {
"x-mojo-to": "Koha::Plugin::Test#bother",
"operationId": "BotherPatron",
"tags": ["patrons"],
"parameters": [{
"name": "patron_id",
"in": "path",
"description": "Internal patron identifier",
"required": true,
"type": "integer"
}],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "A bothered patron",
"schema": {
"type": "object",
"properties": {
"bothered": {
"description": "If the patron has been bothered",
"type": "boolean"
}
}
}
},
"404": {
"description": "An error occurred",
"schema": {
"type": "object",
"properties": {
"error": {
"description": "An explanation for the error",
"type": "string"
}
}
}
}
},
"x-koha-authorization": {
"permissions": {
"borrowers": "1"
}
}
}
}
}
};
return decode_json($spec);
}
sub check_password {
my ( $self, $args ) = @_;
my $password = $args->{'password'};
if ( $password && $password =~ m/^\d{8}$/ ) {
return { error => 0 };
}
else {
return {
error => 1,
msg => "PIN should be four digits"
};
}
}
sub intranet_catalog_biblio_tab {
my @tabs;
push @tabs,
Koha::Plugins::Tab->new(
{
title => 'Tab 1',
content => 'This is content for tab 1'
}
);
push @tabs,
Koha::Plugins::Tab->new(
{
title => 'Tab 2',
content => 'This is content for tab 2'
}
);
return @tabs;
}
sub _private_sub {
return "";
}