Bug 19028: Add 'shelving location' to holdings table in detail page
authorTomas Cohen Arazi <tomascohen@theke.io>
Thu, 3 Aug 2017 15:55:07 +0000 (12:55 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 25 Oct 2017 15:14:41 +0000 (12:14 -0300)
This patch adds the option to show shelving locations on a separate
column. This is controlled by a new syspref, 'OpacLocationOnDetail',
which replaces 'OpacLocationBranchToDisplayShelving', adding a
conveniente 'column' option.

The new 'Shelving location' column is conveniently added to the columns
configuration entry added by bug 16759 for this purpose.

The current behaviour is preserved.

To test:
- Apply this patches
- Run the upgrade:
  $ sudo koha-shell kohadev
 k$ cd kohaclone
 k$ perl installer/data/mysql/updatedatabase.pl
=> SUCCESS: Upgrade doesn't fail
- Have an item with shelving location set to something not void
- Have the item set home and holding libraries for testing purposes.
- Set 'OpacLocationBranchToDisplay' to 'home and holding libraries' [*]
- Visit the OPAC detail page for the record containing the item
=> SUCCESS: Both home and holding libraries are displayed.
- Loop through all OpacLocationOnDetail options (except from 'column', we leave it for later).
=> SUCCESS: Works as expected.
- Go to Administration > Columns settings
- Make item_shelving_location available in the OPAC section
- Reload the OPAC detail page
=> SUCCESS: No change
- Set OpacLocationOnDetail to 'on a separate column'
- Reload the OPAC detail page
=> SUCCESS: Shelving location is displayed on a separate column
- Sign off :-D

Sponsored-by: Dover
[*] For testing purposes

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
admin/columns_settings.yml
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
opac/opac-detail.pl

index ab23de9..e0708fc 100644 (file)
@@ -264,6 +264,9 @@ modules:
           columnname: item_current_location
         -
           columnname: item_home_location
+        -
+          columnname: item_shelving_location
+          is_hidden: 1
         -
           columnname: item_ccode
         -
index b6954ef..7c82244 100644 (file)
@@ -143,12 +143,13 @@ OPAC:
                   both: "home and holding libraries"
             - for items on the OPAC record details page.
         -
-            - Display the shelving location under the
-            - pref: OpacLocationBranchToDisplayShelving
+            - 'Display the shelving location '
+            - pref: OpacLocationOnDetail
               choices:
-                  home: "home library"
-                  holding: "holding library"
-                  both: "home and holding libraries"
+                  home: "below the home library"
+                  holding: "below the holding library"
+                  both: "below both home and holding libraries"
+                  column: "on a separate column"
             - for items on the OPAC record details page.
         -
             - pref: OpacKohaUrl
index af77f55..1a2e4b5 100644 (file)
                 <th id="item_home_location" data-colname="item_home_location" class="item_location">Home library</th>[% END %]
         [% IF ( itemdata_ccode ) %]
                 <th id="item_ccode" data-colname="item_ccode" class="collection">Collection</th>[% END %]
+        [% IF ( Koha.Preference('OpacLocationOnDetail') == 'column' && itemdata_location ) %]
+                <th id="item_shelving_location" data-colname="item_shelving_location" class="shelving_location">Shelving location</th>[% END %]
                 <th id="item_callnumber" data-colname="item_callnumber" class="call_no">Call number</th>
         [% IF ( itemdata_enumchron ) %]
                 <th id="item_enumchron" data-colname="item_enumchron" class="vol_info">Vol info</th>[% END %]
                             </span>
                             <div class="branch-info-tooltip">[% ITEM_RESULT.holding_branch_opac_info %]</div>
 
-                            [% IF ( OpacLocationBranchToDisplayShelving == 'holding' || OpacLocationBranchToDisplayShelving == 'both' ) %]
+                            [% IF ( Koha.Preference('OpacLocationOnDetail') == 'holding' || Koha.Preference('OpacLocationOnDetail') == 'both' ) %]
                                 <span class="shelvingloc">[% ITEM_RESULT.location_description %]</span>
                             [% END %]
 
                             </span>
                             <div class="branch-info-tooltip">[% ITEM_RESULT.home_branch_opac_info %]</div>
 
-                            [% IF ( OpacLocationBranchToDisplayShelving == 'home' || OpacLocationBranchToDisplayShelving == 'both' ) %]
+                            [% IF ( Koha.Preference('OpacLocationOnDetail') == 'home' || Koha.Preference('OpacLocationOnDetail') == 'both' ) %]
                                 <span class="shelvingloc">[% ITEM_RESULT.location_description %]</span>
                             [% END %]
 
                     [% IF ( itemdata_ccode ) %]
                         <td class="collection">[% ITEM_RESULT.ccode %]</td>
                     [% END %]
+
+                    [% IF ( Koha.Preference('OpacLocationOnDetail') == 'column' && itemdata_location ) %]
+                        <td class="shelving_location">[% ITEM_RESULT.location_description %]</td>
+                    [% END %]
+
                     <td class="call_no" property="sku">
                         [% IF ( ITEM_RESULT.itemcallnumber ) %]
                             [% ITEM_RESULT.itemcallnumber %]
index b31a00f..4a7e79a 100755 (executable)
@@ -687,7 +687,7 @@ if ( not $viewallitems and @items > $max_items_to_display ) {
         $itm->{'imageurl'}    = getitemtypeimagelocation( 'opac', $itemtypes->{ $itm->{itype} }->{'imageurl'} );
         $itm->{'description'} = $itemtypes->{ $itm->{itype} }->{translated_description};
     }
-    foreach (qw(ccode enumchron copynumber itemnotes uri)) {
+    foreach (qw(ccode enumchron copynumber itemnotes location_description uri)) {
         $itemfields{$_} = 1 if ($itm->{$_});
     }
 
@@ -759,7 +759,8 @@ my $subtitle         = GetRecordValue('subtitle', $record, GetFrameworkCode($bib
                      itemdata_enumchron      => $itemfields{enumchron},
                      itemdata_uri            => $itemfields{uri},
                      itemdata_copynumber     => $itemfields{copynumber},
-                     itemdata_itemnotes          => $itemfields{itemnotes},
+                     itemdata_itemnotes      => $itemfields{itemnotes},
+                     itemdata_location       => $itemfields{location_description},
                      subtitle                => $subtitle,
                      OpacStarRatings         => C4::Context->preference("OpacStarRatings"),
     );
@@ -1190,8 +1191,7 @@ if ( C4::Context->preference('UseCourseReserves') ) {
 }
 
 $template->param(
-    'OpacLocationBranchToDisplay'         => C4::Context->preference('OpacLocationBranchToDisplay') ,
-    'OpacLocationBranchToDisplayShelving' => C4::Context->preference('OpacLocationBranchToDisplayShelving'),
+    'OpacLocationBranchToDisplay' => C4::Context->preference('OpacLocationBranchToDisplay'),
 );
 
 output_html_with_http_headers $query, $cookie, $template->output;