Bugzilla – Attachment 164323 Details for
Bug 33568
Use the REST API to display items on the staff biblio detail view
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33568: enumchron/volinfo
Bug-33568-enumchronvolinfo.patch (text/plain), 7.31 KB, created by
Jonathan Druart
on 2024-04-03 07:38:27 UTC
(
hide
)
Description:
Bug 33568: enumchron/volinfo
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2024-04-03 07:38:27 UTC
Size:
7.31 KB
patch
obsolete
>From 72cc9b4933821df36a0f5b8f020a42e3bc175a6d Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Tue, 18 Apr 2023 10:57:09 +0200 >Subject: [PATCH] Bug 33568: enumchron/volinfo >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >Signed-off-by: Owen Leonard <oleonard@myacpl.org> > >Signed-off-by: Laurence Rault <laurence.rault@biblibre.com> >Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov> >Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> >--- > Koha/Item.pm | 12 +++++++ > Koha/REST/V1/Biblios.pm | 1 + > Koha/Serial/Item.pm | 13 ++++++++ > api/v1/swagger/definitions/item.yaml | 4 +++ > api/v1/swagger/paths/biblios.yaml | 1 + > .../prog/en/modules/catalogue/detail.tt | 32 ++++++++++++++----- > 6 files changed, 55 insertions(+), 8 deletions(-) > >diff --git a/Koha/Item.pm b/Koha/Item.pm >index 6fa6bd7ae43..f677abac769 100644 >--- a/Koha/Item.pm >+++ b/Koha/Item.pm >@@ -51,6 +51,7 @@ use Koha::Plugins; > use Koha::Recalls; > use Koha::Result::Boolean; > use Koha::SearchEngine::Indexer; >+use Koha::Serial::Items; > use Koha::StockRotationItem; > use Koha::StockRotationRotas; > use Koha::TrackedLinks; >@@ -444,6 +445,17 @@ sub checkout { > return Koha::Checkout->_new_from_dbic( $checkout_rs ); > } > >+=head3 serialitem >+ >+=cut >+ >+sub serialitem { >+ my ( $self ) = @_; >+ my $rs = $self->_result->serialitem; >+ return unless $rs; >+ return Koha::Serial::Item->_new_from_dbic($rs); >+} >+ > =head3 item_group > > my $item_group = $item->item_group; >diff --git a/Koha/REST/V1/Biblios.pm b/Koha/REST/V1/Biblios.pm >index 0f66754f830..94d9ddc59ef 100644 >--- a/Koha/REST/V1/Biblios.pm >+++ b/Koha/REST/V1/Biblios.pm >@@ -302,6 +302,7 @@ sub get_items { > > my $items_rs = $biblio->items; > $items_rs = $items_rs->filter_by_bookable if $bookable_only; >+ # FIXME We need to order_by serial.publisheddate if we have _order_by=+me.serial_issue_number > my $items = $c->objects->search($items_rs); > return $c->render( > status => 200, >diff --git a/Koha/Serial/Item.pm b/Koha/Serial/Item.pm >index a68a7299940..b611eee28a8 100644 >--- a/Koha/Serial/Item.pm >+++ b/Koha/Serial/Item.pm >@@ -24,6 +24,8 @@ use Koha::Database; > > use base qw(Koha::Object); > >+use Koha::Serials; >+ > =head1 NAME > > Koha::Serial::Item - Koha Serial Item Object class >@@ -34,6 +36,17 @@ Koha::Serial::Item - Koha Serial Item Object class > > =cut > >+=head3 serial >+ >+=cut >+ >+sub serial { >+ my ($self) = @_; >+ my $rs = $self->_result->serialid; >+ return unless $rs; >+ return Koha::Serial->_new_from_dbic($rs); >+} >+ > =head3 type > > =cut >diff --git a/api/v1/swagger/definitions/item.yaml b/api/v1/swagger/definitions/item.yaml >index 5c9a0d230d4..bb5a96ffb5e 100644 >--- a/api/v1/swagger/definitions/item.yaml >+++ b/api/v1/swagger/definitions/item.yaml >@@ -238,6 +238,10 @@ properties: > type: > - object > - "null" >+ serialitem: >+ type: >+ - object >+ - "null" > _strings: > type: > - object >diff --git a/api/v1/swagger/paths/biblios.yaml b/api/v1/swagger/paths/biblios.yaml >index ff3edf6093a..a15997e3ba7 100644 >--- a/api/v1/swagger/paths/biblios.yaml >+++ b/api/v1/swagger/paths/biblios.yaml >@@ -425,6 +425,7 @@ > - +strings > - cover_image_ids > - item_group_item.item_group.description >+ - serialitem.serial > collectionFormat: csv > - $ref: "../swagger.yaml#/parameters/match" > - $ref: "../swagger.yaml#/parameters/order_by" >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index ca5b0eddec3..73499267cee 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -712,9 +712,7 @@ > <th id="[% tab | html %]_item_group" data-colname="[% tab | html %]_item_group">Item group</th> > [% END %] > <th id="[% tab | html %]_itemcallnumber" data-colname="[% tab | html %]_itemcallnumber">Call number</th> >- [% IF volinfo %] >- <th id="[% tab | html %]_enumchron" data-colname="[% tab | html %]_enumchron">Serial enumeration / chronology</th> >- [% END %] >+ <th id="[% tab | html %]_enumchron" data-colname="[% tab | html %]_enumchron">Serial enumeration / chronology</th> > <th id="[% tab | html %]_status" data-colname="[% tab | html %]_status">Status</th> > <th id="[% tab | html %]_lastseen" data-colname="[% tab | html %]_lastseen">Last seen</th> > <th id="[% tab | html %]_issues" data-colname="[% tab | html %]_issues">Checkouts</th> >@@ -2498,6 +2496,9 @@ > [% IF Koha.Preference('EnableItemGroups') %] > embed.push('item_group_item.item_group.description'); > [% END %] >+ [% IF biblio.serial %] >+ embed.push('serialitem.serial'); >+ [% END %] > let table_settings = [% TablesSettings.GetTableSettings('catalogue', 'detail','holdings_table','json') | $raw %]; > var items_table = $("#table_items").kohaTable({ > ajax: { url: table_url }, >@@ -2631,17 +2632,32 @@ > } > > }, >- [% IF volinfo %] > { >- data: "", >+ data: "me.serial_issue_number", > className: "enumchron", >- searchable: false, // FIXME >+ searchable: true, > orderable: true, > render: function (data, type, row, meta) { >- return "volinfo"; // FIXME volinfo/enumchron/serial_issue_number >+ let nodes = ""; >+ [%# FIXME Previously we displayed the column if at least one item of the biblio had an enumchron/serial_issue_number. Now it's only if one item of the ones displayed on the current page, how is that bad? How can it be fixed in an elegant way? Should we display the column only if biblio.serial? %] >+ let serial = row.serialitem ? row.serialitem.serial : null; >+ if ( row.serial_issue_number && serial && serial.serialseq ) { >+ nodes += '<span class="enum">%s</span>'.format(row.serial_issue_number); >+ if ( serial.serialseq && row.serial_issue_number != serial.serialseq ) { >+ nodes += ' <span class="sep"> -- </span>' >+ nodes += ' <span class="serialseq">%s</span>'.format(serial.serialseq); >+ } >+ } else if ( row.serial_issue_number ) { >+ nodes += ' <span class="enum">%s</span>'.format(row.serial_issue_number); >+ } else if ( serial && serial.serialseq ) { >+ nodes += '<span class="serialseq">%s</span>'.format(serial.serialseq); >+ } >+ if ( serial && serial.publisheddate ) { >+ nodes += ' <span class="pubdate">(%s)</span>'.format($date(serial.publisheddate)); >+ } >+ return nodes; > } > }, >- [% END %] > { > data: "", > className: "status", >-- >2.34.1
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 33568
:
151339
|
153791
|
164308
|
164309
|
164310
|
164311
|
164312
|
164313
|
164314
|
164315
|
164316
|
164317
|
164318
|
164319
|
164320
|
164321
|
164322
|
164323
|
164324
|
164325
|
164326
|
164327
|
164328
|
164329
|
164330
|
164331
|
164332
|
164333
|
164334
|
164335
|
164336
|
164337
|
164338
|
164339
|
164340
|
164341
|
164342
|
164343
|
164344
|
164345
|
164346
|
164347
|
164348
|
164349
|
164350
|
164351
|
164352
|
164353
|
164354
|
164355
|
164356
|
164358
|
164359
|
164360
|
164361
|
164362
|
164363
|
164364
|
164365
|
164366
|
164367
|
164368
|
164369
|
164370
|
164371
|
164372
|
164373
|
164374
|
164472
|
164480
|
164482
|
164483
|
164485
|
164528