From: miker Date: Fri, 14 Nov 2008 05:44:50 +0000 (+0000) Subject: add configurable tag browser wrapper; register record browsing methods in supercat X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=765b2f6a4b5fc51743d68eef5d49d6848095ebfa;p=Evergreen.git add configurable tag browser wrapper; register record browsing methods in supercat git-svn-id: svn://svn.open-ils.org/ILS/trunk@11181 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm b/Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm index bcefba86e9..b8060b2be9 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm @@ -394,6 +394,93 @@ Returns the XML representation of the requested bibliographic record's holdings ); +sub general_browse { + my $self = shift; + my $client = shift; + return tag_sf_browse($self, $client, $self->{tag}, $self->{subfield}, @_); +} +__PACKAGE__->register_method( + method => 'general_browse', + api_name => 'open-ils.supercat.title.browse', + tag => '245', subfield => 'a', + api_level => 1, + argc => 1, + signature => + { desc => "Returns a list of the requested org-scoped record ids held" + params => + [ { name => 'value', desc => 'The target title', type => 'string' }, + { name => 'org_unit', desc => 'The org unit shortname (or "-" or undef for global) to browse', type => 'string' }, + { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' }, + { name => 'page', desc => 'The page of records retrieve, calculated based on page_size. Can be positive, negative or 0.', type => 'number' }, ], + 'return' => { desc => 'Record IDs that have copies at the relevant org units', type => 'array' } + } +); +__PACKAGE__->register_method( + method => 'general_browse', + api_name => 'open-ils.supercat.author.browse', + tag => [qw/100 110 111/], subfield => 'a', + api_level => 1, + argc => 1, + signature => + { desc => "Returns a list of the requested org-scoped record ids held" + params => + [ { name => 'value', desc => 'The target author', type => 'string' }, + { name => 'org_unit', desc => 'The org unit shortname (or "-" or undef for global) to browse', type => 'string' }, + { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' }, + { name => 'page', desc => 'The page of records retrieve, calculated based on page_size. Can be positive, negative or 0.', type => 'number' }, ], + 'return' => { desc => 'Record IDs that have copies at the relevant org units', type => 'array' } + } +); +__PACKAGE__->register_method( + method => 'general_browse', + api_name => 'open-ils.supercat.subject.browse', + tag => [qw/600 610 611 630 648 650 651 653 655 656 662 690 691 696 697 698 699/], subfield => 'a', + api_level => 1, + argc => 1, + signature => + { desc => "Returns a list of the requested org-scoped record ids held" + params => + [ { name => 'value', desc => 'The target subject', type => 'string' }, + { name => 'org_unit', desc => 'The org unit shortname (or "-" or undef for global) to browse', type => 'string' }, + { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' }, + { name => 'page', desc => 'The page of records retrieve, calculated based on page_size. Can be positive, negative or 0.', type => 'number' }, ], + 'return' => { desc => 'Record IDs that have copies at the relevant org units', type => 'array' } + } +); +__PACKAGE__->register_method( + method => 'general_browse', + api_name => 'open-ils.supercat.topic.browse', + tag => [qw/650 690/], subfield => 'a', + api_level => 1, + argc => 1, + signature => + { desc => "Returns a list of the requested org-scoped record ids held" + params => + [ { name => 'value', desc => 'The target topical subject', type => 'string' }, + { name => 'org_unit', desc => 'The org unit shortname (or "-" or undef for global) to browse', type => 'string' }, + { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' }, + { name => 'page', desc => 'The page of records retrieve, calculated based on page_size. Can be positive, negative or 0.', type => 'number' }, ], + 'return' => { desc => 'Record IDs that have copies at the relevant org units', type => 'array' } + } +); +__PACKAGE__->register_method( + method => 'general_browse', + api_name => 'open-ils.supercat.series.browse', + tag => [qw/440 490 800 810 811 830/], subfield => 'a', + api_level => 1, + argc => 1, + signature => + { desc => "Returns a list of the requested org-scoped record ids held" + params => + [ { name => 'value', desc => 'The target series', type => 'string' }, + { name => 'org_unit', desc => 'The org unit shortname (or "-" or undef for global) to browse', type => 'string' }, + { name => 'page_size', desc => 'Count of records to retrieve, default is 9', type => 'number' }, + { name => 'page', desc => 'The page of records retrieve, calculated based on page_size. Can be positive, negative or 0.', type => 'number' }, ], + 'return' => { desc => 'Record IDs that have copies at the relevant org units', type => 'array' } + } +); + + sub tag_sf_browse { my $self = shift; my $client = shift; diff --git a/Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm b/Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm index bfb3aae267..d720483f49 100644 --- a/Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm +++ b/Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm @@ -139,6 +139,26 @@ sub child_init { $cn_browse_xslt = $xslt->parse_stylesheet( $cn_browse_xslt ); + my $list = $supercat + ->request("open-ils.supercat.record.formats") + ->gather(1); + + for my $record_browse_format ( @$list ) { + for my $browse_axis ( qw/title author subject topic series/ ) { + $browse_types{$browse_axis}{$record_browse_format} = sub { + my $record_list = shift; + my $prev = shift; + my $next = shift; + + my $feed = create_record_feed( 'record', $record_browse_format, $record_list, undef, undef, 0 ); + + return ( + "Content-type: ". $feed->type ."; charset=utf-8\n\n", + $feed->toString + ); + }; + } + } } sub oisbn {