Bugzilla – Attachment 53867 Details for
Bug 7520
JSON script to return advanced search types
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
bug_7520 Added Meta handler to API v1 for metadata lists
bug7520-Added-Meta-handler-to-API-v1-for-metadata-.patch (text/plain), 7.20 KB, created by
Srdjan Jankovic
on 2016-08-02 01:44:59 UTC
(
hide
)
Description:
bug_7520 Added Meta handler to API v1 for metadata lists
Filename:
MIME Type:
Creator:
Srdjan Jankovic
Created:
2016-08-02 01:44:59 UTC
Size:
7.20 KB
patch
obsolete
>From fdd757a447644c74b7e22ea9c59686ad56012405 Mon Sep 17 00:00:00 2001 >From: Srdjan <srdjan@catalyst.net.nz> >Date: Tue, 2 Aug 2016 13:40:12 +1200 >Subject: [PATCH] bug_7520 Added Meta handler to API v1 for metadata lists > >Useful for building drop-downs etc. > >Kick off with /meta/advanced-search-types >--- > Koha/REST/V1/Meta.pm | 52 ++++++++++++++++++++++++++++ > api/v1/swagger.json | 49 ++++++++++++++++++++++++++ > t/db_dependent/api/v1/meta.t | 82 ++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 183 insertions(+) > create mode 100644 Koha/REST/V1/Meta.pm > create mode 100644 t/db_dependent/api/v1/meta.t > >diff --git a/Koha/REST/V1/Meta.pm b/Koha/REST/V1/Meta.pm >new file mode 100644 >index 0000000..2ad54d8 >--- /dev/null >+++ b/Koha/REST/V1/Meta.pm >@@ -0,0 +1,52 @@ >+package Koha::REST::V1::Meta; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 3 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Mojo::Base 'Mojolicious::Controller'; >+ >+use Koha::ItemTypes; >+use C4::Koha; >+ >+sub advanced_search_types { >+ my ($self, $args, $cb) = @_; >+ >+ my $advanced_search_types = $self->syspref("AdvancedSearchTypes"); >+ my ($ccl, @typesloop); >+ if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') { >+ my $itemtypes = Koha::ItemTypes->unblessed; >+ my $itype_or_itemtype = ($self->syspref("item-level_itypes"))?'itype':'itemtype'; >+ @typesloop = map { >+ code => $_->{itemtype}, >+ description => $_->{description}, >+ imageurl => getitemtypeimagelocation( 'opac', $_->{imageurl} ), >+ }, sort {$a->{description} cmp $b->{description} } @$itemtypes; >+ $ccl = "$itype_or_itemtype,phr"; >+ } else { >+ my $advsearchtypes = GetAuthorisedValues($advanced_search_types, 'OPAC'); >+ @typesloop = map { >+ code => $_->{authorised_value}, >+ description => $_->{lib}, >+ imageurl => getitemtypeimagelocation( 'opac', $_->{imageurl} ), >+ }, @$advsearchtypes; >+ $ccl = $advanced_search_types; >+ } >+ >+ return $self->$cb({ ccl => $ccl, types => \@typesloop }, 200); >+} >+ >+1; >diff --git a/api/v1/swagger.json b/api/v1/swagger.json >index b3f30f8..94933a3 100644 >--- a/api/v1/swagger.json >+++ b/api/v1/swagger.json >@@ -332,6 +332,55 @@ > } > } > } >+ }, >+ "/meta/advanced-search-types": { >+ "get": { >+ "operationId": "advanced_search_typesMeta", >+ "tags": ["meta"], >+ "produces": [ >+ "application/json" >+ ], >+ "responses": { >+ "200": { >+ "description": "Advanced search types list", >+ "schema": { >+ "type": "object", >+ "required": [ >+ "ccl", >+ "types" >+ ], >+ "properties": { >+ "ccl": { >+ "type": "string" >+ }, >+ "types": { >+ "type": "array", >+ "items": { >+ "type": "object", >+ "required": [ >+ "code", >+ "description", >+ "imageurl" >+ ], >+ "properties": { >+ "code": { >+ "type": "string" >+ }, >+ "description": { >+ "type": "string" >+ }, >+ "imageurl": { >+ "type": "string", >+ "format": "uri" >+ } >+ } >+ } >+ } >+ } >+ } >+ } >+ } >+ } > } > }, > "definitions": { >diff --git a/t/db_dependent/api/v1/meta.t b/t/db_dependent/api/v1/meta.t >new file mode 100644 >index 0000000..7c8f905 >--- /dev/null >+++ b/t/db_dependent/api/v1/meta.t >@@ -0,0 +1,82 @@ >+#!/usr/bin/env perl >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 3 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along >+# with Koha; if not, write to the Free Software Foundation, Inc., >+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. >+ >+use Modern::Perl; >+ >+use Test::More; >+use Test::Mojo; >+use t::lib::TestBuilder; >+use t::lib::Mocks; >+ >+use C4::Auth; >+use C4::Context; >+ >+use Koha::Database; >+use Koha::Patron; >+use Koha::AuthorisedValues; >+ >+my $builder = t::lib::TestBuilder->new(); >+ >+my $dbh = C4::Context->dbh; >+$dbh->{AutoCommit} = 0; >+$dbh->{RaiseError} = 1; >+ >+my $t = Test::Mojo->new('Koha::REST::V1'); >+ >+my $categorycode = Koha::Database->new()->schema()->resultset('Category')->first()->categorycode(); >+my $branchcode = Koha::Database->new()->schema()->resultset('Branch')->first()->branchcode(); >+ >+my $borrower = $builder->build({ source => 'Borrower' }); >+ >+my $session = C4::Auth::get_session(''); >+$session->param('number', $borrower->{borrowernumber}); >+$session->param('id', $borrower->{userid}); >+$session->param('ip', '127.0.0.1'); >+$session->param('lasttime', time()); >+$session->flush; >+ >+my $advanced_search_types = C4::Context->preference("AdvancedSearchTypes"); >+ >+my %cat = map { $_ => 1 } Koha::AuthorisedValues->categories; >+foreach (qw/CCODE LOC/) { >+ next unless $cat{$_}; >+ >+ t::lib::Mocks::mock_preference('AdvancedSearchTypes', $_); >+ my $tx = $t->ua->build_tx(GET => '/api/v1/meta/advanced-search-types'); >+ $tx->req->cookies({name => 'CGISESSID', value => $session->id}); >+ $tx->req->env({REMOTE_ADDR => '127.0.0.1'}); >+ $t->request_ok($tx) >+ ->status_is(200) >+ ->json_is('/ccl' => $_) >+ ->json_has('/types/0/code') >+ ->json_has('/types/0/description') >+ ->json_has('/types/0/imageurl'); >+} >+ >+t::lib::Mocks::mock_preference('AdvancedSearchTypes', 'itemtypes'); >+my $tx = $t->ua->build_tx(GET => '/api/v1/meta/advanced-search-types'); >+$tx->req->cookies({name => 'CGISESSID', value => $session->id}); >+$tx->req->env({REMOTE_ADDR => '127.0.0.1'}); >+$t->request_ok($tx) >+ ->status_is(200) >+ ->json_like('/ccl' => qr/\w+/) >+ ->json_has('/types/0/code') >+ ->json_has('/types/0/description') >+ ->json_has('/types/0/imageurl'); >+ >+$dbh->rollback; >+done_testing(); >-- >2.7.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7520
:
7556
|
7605
|
7606
|
7611
|
7613
|
53865
|
53867
|
60538
|
60539