LP1753536 - Add a new Owning Library column to the OPAC Items Out
authorDan Pearl <dpearl@cwmars.org>
Mon, 19 Mar 2018 19:09:43 +0000 (15:09 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Fri, 6 Sep 2019 16:28:19 +0000 (12:28 -0400)
This new column indicates which library owns the materials, and is
intended to help the patron contact the owning library should they be
out of renewals and would like an exception made.

Also adds some utility code for generating an org unit URL.

Make the presence of the column controlled by an organizational unit
setting.

Signed-off-by: Dan Pearl <dpearl@cwmars.org>
Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>

Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous_show_owning_lib_column.sql [new file with mode: 0644]
Open-ILS/src/templates/opac/myopac/circs.tt2
Open-ILS/src/templates/opac/parts/library_name_link.tt2
Open-ILS/src/templates/opac/parts/library_name_link_from_ou.tt2 [new file with mode: 0644]
docs/RELEASE_NOTES_NEXT/OPAC/LP1753536_items_out_lib.adoc [new file with mode: 0644]

index 3ec7900..5bc2f8b 100644 (file)
@@ -1578,7 +1578,7 @@ sub fetch_user_circs {
         flesh_fields => {
             circ => ['target_copy'],
             acp => ['call_number'],
-            acn => ['record']
+            acn => ['record','owning_lib']
         }
     };
 
@@ -1793,7 +1793,7 @@ sub handle_circ_update {
     my $action   = shift;
     my $circ_ids = shift;
 
-    my $circ_ids //= [$self->cgi->param('circ_id')];
+    $circ_ids //= [$self->cgi->param('circ_id')];
 
     if ($action =~ /delete/) {
         my $options = {
index 4e8984b..9637a21 100644 (file)
@@ -4345,6 +4345,15 @@ INSERT into config.org_unit_setting_type
         'coust', 'description'),
     'bool', null)
 
+,( 'opac.show_owning_lib_column', 'opac',
+    oils_i18n_gettext('opac.show_owning_lib_column',
+        'Show "Owning Lib" column in Items Out',
+        'coust', 'label'),
+    oils_i18n_gettext('opac.show_owning_lib_column',
+        'If enabled, an addition column, Owning Lib, will be shown in the Items Out display. This may assist in requesting additional renewals',
+        'coust', 'description'),
+    'bool', null)
+
 ,( 'opac.barcode_regex', 'glob',
     oils_i18n_gettext('opac.barcode_regex',
         'Patron barcode format',
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous_show_owning_lib_column.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.yaous_show_owning_lib_column.sql
new file mode 100644 (file)
index 0000000..7ee775b
--- /dev/null
@@ -0,0 +1,25 @@
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+INSERT INTO config.org_unit_setting_type 
+    (grp, name, datatype, label, description)
+VALUES (
+    'opac',
+    'opac.show_owning_lib_column', 'bool',
+    oils_i18n_gettext(
+        'opac.show_owning_lib_column',
+        'Show Owning Lib in Items Out',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.show_owning_lib_column',
+'If enabled, the Owning Lib will be shown in the Items Out display.' ||
+' This may assist in requesting additional renewals',
+        'coust',
+        'description'
+    )
+);
+
+COMMIT;
index 1b0683c..1c068be 100644 (file)
                 <th>[% sort_head("renews", l("Renewals Left")) %]</th>
                 <th>[% sort_head("due", l("Due Date")) %]</th>
                 <th>[% sort_head("barcode", l("Barcode")) %]</th>
-                <th>[% sort_head("callnum", l("Call number")) %]</th>
+                <th>[% sort_head("callnum", l("Call Number")) %]</th>
+                [% IF ctx.get_org_setting(ctx.user.home_ou, 'opac.show_owning_lib_column'); %]
+                   <th>[% sort_head("lib", l("Owning Library")) %]</th>
+                   [% column_count = 8;
+                ELSE ;
+                   column_count = 7;
+                END; %]
             </tr>
             </thead>
             <tbody>
 
                        CASE "callnum";
                           circ.SORTING = circ.circ.target_copy.call_number.label;
+                       CASE "lib";
+                          circ.SORTING = circ.circ.target_copy.call_number.owning_lib.name;
                        
                        CASE;
                           sort_field = "";
                         <td name="call_number">
                             [% circ.circ.target_copy.call_number.label | html %]
                         </td>
+                        [% IF ctx.get_org_setting(ctx.user.home_ou, 'opac.show_owning_lib_column'); %]
+                          <td name="lib">
+                         [%- fleshed_ou = circ.circ.target_copy.call_number.owning_lib;
+                            INCLUDE "opac/parts/library_name_link_from_ou.tt2";
+                         %]
+                          </td>
+                        [% END; %]
                     </tr>
+
                     [%  IF circ.renewal_response AND
                             circ.renewal_response.textcode != 'SUCCESS' %]
                     <tr>
-                        <td colspan="6">[%# XXX colspan="0" does not work in IE %]
+                        <td colspan="[% column_count %]">[%# XXX colspan="0" does not work in IE %]
                             <span class="failure-text" title="[% circ.renewal_response.textcode | html %] / [% circ.renewal_response.fail_part | html %]">
                                 [%
                                     renew_fail_msg = '';
                             </span>
                         </td>
                     </tr>
-                    [%  END; # FOR
+                    [% END; %]
 
-                    END %]
+                [% END; %]
                 </tbody>
             </table>
         </form>
index 1ad030c..8b8275e 100644 (file)
@@ -4,12 +4,21 @@
         opac_root = ctx.kpac_root;
     END;
 
-    org_name = ctx.get_aou(copy_info.circ_lib).name;
-    org_sname = ctx.get_aou(copy_info.circ_lib).shortname;
-    lib_url = ctx.get_org_setting(copy_info.circ_lib, 'lib.info_url');
-    prefer_external_url = ctx.get_org_setting(copy_info.circ_lib, 'lib.prefer_external_url');
+    # Allow fleshed circ_libs
+    IF copy_info.circ_lib.name; 
+       org_id = copy_info.circ_lib.id;
+       org_name = copy_info.circ_lib.name; 
+       org_sname = copy_info.circ_lib.shortname; 
+    ELSE;
+       org_id = copy_info.circ_lib;
+       org_name = ctx.get_aou(org_id).name;
+       org_sname = ctx.get_aou(org_id).shortname;
+    END;
+
+    lib_url = ctx.get_org_setting(org_id, 'lib.info_url');
+    prefer_external_url = ctx.get_org_setting(org_id, 'lib.prefer_external_url');
     UNLESS lib_url && prefer_external_url;
-        lib_url = mkurl(opac_root _ '/library/' _ ctx.get_aou(copy_info.circ_lib).shortname, {}, 1);
+        lib_url = mkurl(opac_root _ '/library/' _ org_sname, {}, 1);
     END; 
     IF lib_url; '<a property="offeredBy" typeof="Library" href="'; lib_url | html; '">'; END;
     '<span property="name">'; org_name | html; '</span>';
diff --git a/Open-ILS/src/templates/opac/parts/library_name_link_from_ou.tt2 b/Open-ILS/src/templates/opac/parts/library_name_link_from_ou.tt2
new file mode 100644 (file)
index 0000000..54e085b
--- /dev/null
@@ -0,0 +1,22 @@
+[%-
+    opac_root = ctx.opac_root;
+    IF ctx.kpac_root;
+        opac_root = ctx.kpac_root;
+    END;
+
+    # Requires a "fleshed_ou" (aou) object defined.
+    # Allow fleshed circ_libs
+    org_id = fleshed_ou.id;
+    org_name = fleshed_ou.name; 
+    org_sname = fleshed_ou.shortname;
+
+    lib_url = ctx.get_org_setting(org_id, 'lib.info_url');
+    prefer_external_url = ctx.get_org_setting(org_id, 'lib.prefer_external_url');
+    UNLESS lib_url && prefer_external_url;
+        lib_url = mkurl(opac_root _ '/library/' _ org_sname, {}, 1);
+    END; 
+    IF lib_url; '<a property="offeredBy" typeof="Library" href="'; lib_url | html; '">'; END;
+    '<span property="name">'; org_name | html; '</span>';
+    IF lib_url; '</a>'; END;
+-%]
+
diff --git a/docs/RELEASE_NOTES_NEXT/OPAC/LP1753536_items_out_lib.adoc b/docs/RELEASE_NOTES_NEXT/OPAC/LP1753536_items_out_lib.adoc
new file mode 100644 (file)
index 0000000..fcb9a99
--- /dev/null
@@ -0,0 +1,11 @@
+New Column in Items Out Display
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+A new column, Owning Library, is now optionally available for the Items 
+Out display which shows the owning library of the item (not necessarily 
+the library at which the item was picked up).  When a patron has run
+ out of renewals, the owning library is the one with whom the patron 
+will negotiate additional renewals, and clicking on the library 
+name will provide contact information for that library.
+
+The column is controlled by the organization setting 
+"opac.show_owning_library_column".