1 package Koha::Plugin::Test;
3 ## It's good practice to use Modern::Perl
6 use Koha::Exceptions::Exception;
7 use Koha::Plugins::Tab;
9 use Mojo::JSON qw( decode_json );
11 ## Required for all plugins
12 use base qw(Koha::Plugins::Base);
16 name => 'Test Plugin',
17 author => 'Kyle M Hall',
18 description => 'Test plugin',
19 date_authored => '2013-01-14',
20 date_updated => '2013-01-14',
21 minimum_version => '3.11',
22 maximum_version => undef,
24 my_example_tag => 'find_me',
27 ## This is the minimum code required for a plugin's 'new' method
28 ## More can be added, but none should be removed
30 my ( $class, $args ) = @_;
31 $args->{'metadata'} = $metadata;
32 my $self = $class->SUPER::new($args);
37 my ( $self, $args ) = @_;
38 return "Koha::Plugin::Test::report";
42 my ( $self, $args ) = @_;
43 return "Koha::Plugin::Test::tool";
47 my ( $self, $args ) = @_;
48 return "Koha::Plugin::Test::to_marc";
51 sub intranet_catalog_biblio_enhancements_toolbar_button {
52 my ( $self, $args ) = @_;
53 return "Koha::Plugin::Test::intranet_catalog_biblio_enhancements_toolbar_button";
56 sub intranet_catalog_biblio_enhancements {
57 my ( $self, $args ) = @_;
58 return "Koha::Plugin::Test::intranet_catalog_biblio_enhancements";
61 sub opac_online_payment {
62 my ( $self, $args ) = @_;
63 return "Koha::Plugin::Test::opac_online_payment";
66 sub opac_online_payment_begin {
67 my ( $self, $args ) = @_;
68 return "Koha::Plugin::Test::opac_online_payment_begin";
71 sub opac_online_payment_end {
72 my ( $self, $args ) = @_;
73 return "Koha::Plugin::Test::opac_online_payment_end";
77 my ( $self, $args ) = @_;
78 return "Koha::Plugin::Test::opac_head";
82 my ( $self, $args ) = @_;
83 return "Koha::Plugin::Test::opac_js";
87 my ( $self, $args ) = @_;
88 return "Koha::Plugin::Test::intranet_head";
92 my ( $self, $args ) = @_;
93 return "Koha::Plugin::Test::intranet_js";
96 sub item_barcode_transform {
97 my ( $self, $barcode ) = @_;
98 my $param = $$barcode;
99 if ( Scalar::Util::looks_like_number( $$barcode ) ) {
100 $$barcode = $$barcode * 2
102 Koha::Exceptions::Exception->throw("item_barcode_transform called with parameter: $param");
105 sub patron_barcode_transform {
106 my ( $self, $barcode ) = @_;
108 Koha::Exceptions::Exception->throw("patron_barcode_transform called with parameter: $$barcode");
112 my ( $self, $args ) = @_;
113 return "Koha::Plugin::Test::configure";
117 my ( $self, $args ) = @_;
118 return "Koha::Plugin::Test::install";
122 my ( $self, $args ) = @_;
123 return "Koha::Plugin::Test::upgrade";
127 my ( $self, $args ) = @_;
128 return "Koha::Plugin::Test::uninstall";
133 $self->output( '¡Hola output!', 'json' );
136 sub test_output_html {
138 $self->output_html( '¡Hola output_html!' );
145 sub after_hold_create {
146 my ( $self, $param ) = @_;
147 Koha::Exceptions::Exception->throw("after_hold_create called with parameter " . ref($param) );
150 sub after_biblio_action {
151 my ( $self, $params ) = @_;
152 my $action = $params->{action} // '';
153 my $biblio = $params->{biblio};
154 my $biblio_id = $params->{biblio_id};
156 if ( $action ne 'delete' ) {
157 Koha::Exceptions::Exception->throw("after_biblio_action called with action: $action, ref: " . ref($biblio) );
160 Koha::Exceptions::Exception->throw("after_biblio_action called with action: $action, id: $biblio_id") if $biblio_id;
164 sub after_item_action {
165 my ( $self, $params ) = @_;
166 my $action = $params->{action} // '';
167 my $item = $params->{item};
168 my $item_id = $params->{item_id};
170 if ( $action ne 'delete' ) {
171 my $itemnumber_defined = (defined $item->itemnumber) ? 'yes' : 'no';
172 my $item_id_defined = (defined $item_id) ? 'yes' : 'no';
173 Koha::Exceptions::Exception->throw("after_item_action called with action: $action, ref: " . ref($item) . " ".
174 "item_id defined: $item_id_defined ".
175 "itemnumber defined: $itemnumber_defined" );
178 Koha::Exceptions::Exception->throw("after_item_action called with action: $action, id: $item_id" ) if $item_id;
182 sub after_authority_action {
183 my ( $self, $params ) = @_;
184 my $action = $params->{action} // q{};
185 my $id = $params->{authority_id} // 0;
186 Koha::Exceptions::Exception->throw("after_authority_action called with action: $action, id: $id");
189 sub after_circ_action {
190 my ( $self, $params ) = @_;
192 my $action = $params->{action};
193 my $checkout = $params->{payload}->{checkout};
194 my $payload = $params->{payload};
196 my $type = $payload->{type};
198 if ( $action eq 'renewal' ) {
199 Koha::Exceptions::Exception->throw("after_circ_action called with action: $action, ref: " . ref($checkout));
201 elsif ( $action eq 'checkout') {
202 Koha::Exceptions::Exception->throw("after_circ_action called with action: $action, ref: " . ref($checkout) . " type: $type");
204 elsif ( $action eq 'checkin' ) {
205 Koha::Exceptions::Exception->throw("after_circ_action called with action: $action, ref: " . ref($checkout));
209 sub after_hold_action {
210 my ( $self, $params ) = @_;
212 my $action = $params->{action};
213 my $hold = $params->{payload}->{hold};
215 Koha::Exceptions::Exception->throw(
216 "after_hold_action called with action: $action, ref: " . ref($hold) );
220 my ( $self, $args ) = @_;
226 "x-mojo-to": "Test::Controller#bother",
227 "operationId": "BotherPatron",
234 "description": "A bothered patron",
239 "description": "If the patron has been bothered",
246 "description": "An error occurred",
251 "description": "An explanation for the error",
258 "x-koha-authorization": {
265 "/public/patrons/bother": {
267 "x-mojo-to": "Test::Controller#bother",
268 "operationId": "PubliclyBotherPatron",
275 "description": "A bothered patron",
280 "description": "If the patron has been bothered",
287 "description": "Authentication required",
292 "description": "An explanation for the error",
304 return decode_json($spec);
308 my ( $self, $args ) = @_;
310 my $password = $args->{'password'};
311 if ( $password && $password =~ m/^\d{4}$/ ) {
312 return { error => 0 };
317 msg => "PIN should be four digits"
322 sub intranet_catalog_biblio_tab {
325 Koha::Plugins::Tab->new(
328 content => 'This is content for tab 1'
333 Koha::Plugins::Tab->new(
336 content => 'This is content for tab 2'