implement ctx.max_cart_size
authorGalen Charlton <gmc@equinoxinitiative.org>
Thu, 24 May 2018 02:17:26 +0000 (22:17 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 24 May 2018 02:17:26 +0000 (22:17 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/templates/opac/parts/config.tt2
Open-ILS/src/templates/opac/parts/js.tt2
Open-ILS/src/templates/opac/parts/result/table.tt2
Open-ILS/web/js/ui/default/opac/record_selectors.js

index b0ad747..a592ff5 100644 (file)
@@ -265,4 +265,9 @@ ctx.exclude_electronic_checkbox = 0;
 ##############################################################################
 ctx.hide_badge_scores = 'false';
 
+##############################################################################
+# Maximum number of items allowed to be stored in a cart
+##############################################################################
+ctx.max_cart_size = 500;
+
 %]
index 2c52ce6..a1dae3d 100644 (file)
@@ -147,3 +147,7 @@ var aou_hash = {
 
 <script type="text/javascript">if ($('client_tz_id')) { $('client_tz_id').value = OpenSRF.tz }</script>
 [%- END; # want_dojo -%]
+
+[%- IF ctx.max_cart_size; %]
+<script type="text/javascript">var max_cart_size = [% ctx.max_cart_size %];</script>
+[%- END; %]
index f550157..9cd7509 100644 (file)
@@ -43,6 +43,7 @@
                               [% l('selected titles') %]
                           [% END; %]
                         </a>
+                        <span id="hit_selected_record_limit" class="hidden">Reached limit!</span>
                     <span>
                     <a id="clear_selected_records" href="#">[% l('Clear selections') %]</a>
                 </div>
index bad67ea..0a6439e 100644 (file)
@@ -9,6 +9,7 @@
             mylist = result.mylist;
             document.getElementById('selected_records_count').innerHTML = mylist.length;
             document.getElementById('record_cart_count').innerHTML = mylist.length;
+            checkMaxCartSize();
         }
     }
 
         }
     }
 
+    function checkMaxCartSize() {
+        if ((typeof max_cart_size === 'undefined') || !max_cart_size) return;
+        var current_size = parseInt(document.getElementById('selected_records_count').innerHTML);
+        [].forEach.call(rec_selectors, function(el) {
+            if (!el.checked) el.disabled = (current_size >= max_cart_size);
+        });
+        var alertel = document.getElementById('hit_selected_record_limit');
+        if (current_size >= max_cart_size) {
+            alertel.classList.remove('hidden');
+            if (!document.getElementById('select_all_records').checked) {
+                document.getElementById('select_all_records').disabled = true;
+            }
+        } else {
+            alertel.classList.add('hidden');
+            document.getElementById('select_all_records').disabled = false;
+        }
+    }
+
     if (rec_selector_block) rec_selector_block.classList.remove("hidden");
     var all_checked = true;
     [].forEach.call(rec_selectors, function(el) {
     if (all_checked) {
         document.getElementById('select_all_records').checked = true;
     }
+    checkMaxCartSize();
 
     function deselectSelectedOnPage() {
         var to_del = [];