@@ -, +, @@ --- Koha/Hold.pm | 14 ++++++ .../intranet-tmpl/prog/en/includes/holds_table.inc | 17 ++++--- koha-tmpl/intranet-tmpl/prog/js/holds.js | 57 ++++++++++++++++------ .../bootstrap/en/includes/holds-table.inc | 13 ++++- .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 9 +++- opac/opac-user.pl | 20 +++++++- reserve/request.pl | 53 ++++++++++++++------ svc/holds | 29 +++++++++-- 8 files changed, 164 insertions(+), 48 deletions(-) --- a/Koha/Hold.pm +++ a/Koha/Hold.pm @@ -386,6 +386,20 @@ sub cancel { return $self; } +=head3 hold_group + +Returns the Koha::Hold objects with this hold_group_id + +=cut + +sub hold_group { + my ($self) = @_; + + $self->{_hold_group} ||= Koha::Holds->search({ hold_group_id => $self->hold_group_id }); + + return $self->{_hold_group}; +} + =head3 _move_to_old my $is_moved = $hold->_move_to_old; --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -38,9 +38,7 @@ [% ELSE %] [% END %] - [% END %] - - [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] + [% ELSIF ( CAN_user_reserveforothers_modify_holds_priority ) %] [% IF Koha.Preference('HoldsSplitQueueNumbering') == 'actual' %] [% FOREACH optionloo IN hold.optionloop %] [% IF ( optionloo.selected ) %] @@ -136,7 +134,15 @@ [% END %] [% ELSE %] - [% IF ( hold.item_level_hold ) %] + [% IF ( hold.hold_group ) %] + Group hold +
+ Containing the following items: + [% FOREACH h in hold.hold_group %] +
[% h.item.barcode %] + [% END %] +
+ [% ELSIF ( hold.item_level_hold ) %] Only item @@ -158,9 +164,6 @@ [% END %] [% END %] - [% IF hold.hold_group_id %] -
(part of a hold group)
- [% END %] [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] --- a/koha-tmpl/intranet-tmpl/prog/js/holds.js +++ a/koha-tmpl/intranet-tmpl/prog/js/holds.js @@ -42,12 +42,6 @@ $(document).ready(function() { title += " - " + oObj.itemnotes.escapeHtml() + "" } - if (oObj.hold_group_id) { - title += '
'; - var link = '' + PART_OF_A_HOLD_GROUP +'' - title += '(' + link + ')'; - } - return title; } }, @@ -59,16 +53,40 @@ $(document).ready(function() { { "mDataProp": function( oObj ) { var data = ""; - if ( oObj.barcode ) { - data += " " - + oObj.barcode.escapeHtml() - + ""; + if ( oObj.hold_group_id ) { + data+= "Group hold" + + "
" + + "Containing the following items:"; + oObj.hold_group.forEach( function( hold ) { + if ( oObj.barcode ) { + data+= "
" + + oObj.barcode.escapeHtml() + + ""; + } + }); + data += "
"; + } else { + if ( oObj.barcode ) { + data += " " + + oObj.barcode.escapeHtml() + + ""; + } } return data; } @@ -229,6 +247,13 @@ $(document).ready(function() { }); }); + $(".group_hold").hide(); + + $(".group_hold_link").click(function(e){ + var group_hold_id = $(this).attr("title"); + $("#group_hold_"+group_hold_id).toggle(); + }); + }); if ( $("#holds-table").length ) { --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc +++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc @@ -2,10 +2,10 @@ [% USE ItemTypes %] [% USE KohaDates %] -[% IF ( HOLDS.count ) %] +[% IF ( HOLDS.size ) %]
- + @@ -65,6 +65,15 @@ [% END %] [% HOLD.biblio.author | html %] + [% IF HOLD.hold_group_id %] +
Group hold +
+ Containing the following items: + [% FOREACH h in HOLD.hold_group %] +
[% h.item.barcode %] + [% END %] +
+ [% END %]
Holds ([% HOLDS.count | html %] total)Holds ([% HOLDS.size | html %] total)
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt @@ -162,7 +162,7 @@ [% END %] - [% IF ( RESERVES.count ) %]
  • Holds ([% RESERVES.count | html %])
  • [% END %] + [% IF ( RESERVES.size ) %]
  • Holds ([% RESERVES.size | html %])
  • [% END %] [% IF Koha.Preference('ArticleRequests') && logged_in_user.article_requests_current %]
  • Article requests ([% logged_in_user.article_requests_current.count | html %])
  • [% END %] [% IF ( OverDriveCirculation ) %]
  • OverDrive Account
  • @@ -922,6 +922,13 @@