From c17a2a4645b1f83c3b4806b98713527995a58c98 Mon Sep 17 00:00:00 2001
From: Owen Leonard <oleonard@myacpl.org>
Date: Fri, 24 Apr 2020 11:49:21 +0000
Subject: [PATCH] Bug 25274: Don't initialize DataTable if table isn't present

This patch modifies the OPAC basket JavaScript so that a check is added
for the existence of the "itemst" table. This avoids an error if the
"More details" view is selected and hte "itemst" table isn't present.

To reproduce the error, add some items to the OPAC cart and open the
cart window. Open the JavaScript console in your browser and click the
"More details" link. You'll see an error.

To test, apply the patch and perform the same test as above. The error
should not be present. Test that table sorting in the "brief" view words
correctly.

Signed-off-by: David Roberts <david@koha-ptfs.co.uk>
---
 .../opac-tmpl/bootstrap/en/modules/opac-basket.tt  | 41 +++++++++++-----------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-basket.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-basket.tt
index 94e3ec3a5c..415ed112fe 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-basket.tt
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-basket.tt
@@ -428,26 +428,27 @@
                     return false;
                 });
 
-                var itemst = $("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
-                    "order": [[ 1, "asc" ]],
-                    "columnDefs": [
-                      { "targets": [ 0,-1 ], "sortable": false, "searchable": false }
-                    ],
-                    "columns": [
-                        null,
-                        { "type": "anti-the" },
-                        null,
-                        null,
-                        null
-                    ],
-
-                }));
-
-                var buttons = new $.fn.dataTable.Buttons(itemst, {
-                     buttons: [
-                        'print'
-                    ]
-                }).container().appendTo($('#toolbar'));
+                if( $("#itemst").length > 0 ){
+                    var itemst = $("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
+                        "order": [[ 1, "asc" ]],
+                        "columnDefs": [
+                          { "targets": [ 0,-1 ], "sortable": false, "searchable": false }
+                        ],
+                        "columns": [
+                            null,
+                            { "type": "anti-the" },
+                            null,
+                            null,
+                            null
+                        ],
+                    }));
+
+                    var buttons = new $.fn.dataTable.Buttons(itemst, {
+                         buttons: [
+                            'print'
+                        ]
+                    }).container().appendTo($('#toolbar'));
+                }
 
                 $(".cb").change(function(){
                     selRecord( $(this).val(), $(this).prop("checked") );
-- 
2.11.0