add configurable tag browser wrapper; register record browsing methods in supercat
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 14 Nov 2008 05:44:50 +0000 (05:44 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 14 Nov 2008 05:44:50 +0000 (05:44 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@11181 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/SuperCat.pm
Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm

index bcefba8..b8060b2 100644 (file)
@@ -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;
index bfb3aae..d720483 100644 (file)
@@ -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 {