LP#1284864 MR holds display and edit repairs
authorBill Erickson <berick@esilibrary.com>
Thu, 27 Feb 2014 22:22:52 +0000 (17:22 -0500)
committerMike Rylander <mrylander@gmail.com>
Mon, 10 Mar 2014 16:29:52 +0000 (12:29 -0400)
* Repair format icons for MR and non-MR holds
* Allow all filters to be cleared from a MR hold (w/o resulting in a
  server error).
* during editing, if a hold has a selection_depth, use that to further
  limit the available formats and languages in the edit selectors.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/src/templates/opac/myopac/holds.tt2
Open-ILS/src/templates/opac/parts/metarecord_hold_filters.tt2

index d992fda..c2e6450 100644 (file)
@@ -583,10 +583,14 @@ sub fetch_user_holds {
                     (undef, @data) = $self->get_records_and_facets(
                         [$hold->target], undef, {flesh => '{mra}', metarecord => 1});
 
+                    my $filter_org = $U->org_unit_ancestor_at_depth(
+                        $hold->selection_ou,
+                        $hold->selection_depth);
+
                     my $filter_data = $U->simplereq(
                         'open-ils.circ',
                         'open-ils.circ.mmr.holds.filters.authoritative.atomic', 
-                        $hold->target, $hold->selection_ou, [$hold->id]
+                        $hold->target, $filter_org, [$hold->id]
                     );
 
                     $blob->{metarecord_filters} = 
@@ -1134,7 +1138,7 @@ sub compile_holdable_formats {
     my $cgi = $self->cgi;
 
     # exit early if not needed
-    return "" unless 
+    return undef unless 
         grep /metarecord_formats_|metarecord_langs_/, 
         $cgi->param;
 
index 0f5555a..8d049ea 100644 (file)
                     <td>
                         <div class="format_icon">
                           [% 
-                            formats = attrs.all_formats.size;
+                            formats = attrs.all_formats;
                             IF ahr.hold_type == 'M';
                               # only show selected formats for metarecords
                               formats = [];
index 29e8fdf..be444e8 100644 (file)
@@ -26,7 +26,7 @@ limiting the set of desired records for a given metarecord.
 
 [% BLOCK metarecord_hold_filters_selector;
     # in edit mode, pull the target from the existing hold
-    target_id = hold_data.target.id || hold_data.hold.hold.target;
+    target_id = hold_data.hold.hold.target || hold_data.target.id;
 
     selected_formats = {};
     selected_langs = {};
@@ -75,8 +75,9 @@ limiting the set of desired records for a given metarecord.
             IF selected_langs.size;
                 # user has already selected their preferred language(s)
                 SET selected = 1 IF selected_langs.$code;
-            ELSE;
-                # no prefered language selected, default to current locale
+
+            ELSIF !hold_data.hold.hold.target; # new hold
+                # no prefered language selected; use current locale
                 SET selected = 1 IF code == my_lang;
             END;
         %]