From 790007a6ee20815338e7ce5d5e2dd4f414a132fc Mon Sep 17 00:00:00 2001
From: Owen Leonard <oleonard@myacpl.org>
Date: Mon, 18 Oct 2021 12:29:19 +0000
Subject: [PATCH] Bug 22671: Show warning if browser doesn't support
 applicationCache

This patch adds a check for browser support for the "applicationCache"
feature required by the offline circulation tool. If the feature is not
available, a message is shown to the user that offline circulation is
disabled.

To test, apply the patch and enable the AllowOfflineCirculation system
preference.

In a browser which supports applicationCache (Firefox < 81, Chrome < 94,
Safari <= 15), go to Circulation -> Built-in offline circulation
interface.

- You should see the standard Offline Circulation menu options: Check
  out, check in, syncrhonize, etc.
- Click "Synchronize," then "Download records."
- The process should complete correctly, updating the "last synced"
  information on the page.

Follow the same steps in a browser which has dropped support for
applicationCache. As soon as you reach the built-in offline circulation
page you should see a message, "Your browser is not compatible..."
---
 .../prog/en/modules/circ/offline.tt           | 36 +++++++++++--------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/offline.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/offline.tt
index 2a7c3fe174..a7e174d0f0 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/offline.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/offline.tt
@@ -73,9 +73,9 @@
             <div id="offline-sync" style="display: none;" class="offline-sync">
                 <div id="toolbar" class="btn-toolbar">
                     [% IF (AllowOfflineCirculation) %]
-                        <a href="#" id="download-records" class="btn btn-default"><i class="fa fa-arrow-down"></i>Download records</a>
+                        <a href="#" id="download-records" class="btn btn-default"><i class="fa fa-arrow-down"></i> Download records</a>
                     [% END %]
-                    <a href="#" id="upload-transactions" class="btn btn-default"><i class="fa fa-arrow-up"></i>Upload transactions</a>
+                    <a href="#" id="upload-transactions" class="btn btn-default"><i class="fa fa-arrow-up"></i> Upload transactions</a>
                 </div>
                 <h1>Offline circulation</h1>
                 <div class="row">
@@ -639,24 +639,30 @@
         }
 
         // This next bit of code is to deal with the updated session issue
-        window.addEventListener('load', function(e) {
-            window.applicationCache.addEventListener('updateready', function(e) {
-                if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
-                    // Browser downloaded a new app cache.
-                    // Swap it in and reload the page to get the new hotness.
-                    window.applicationCache.swapCache();
-                    if (confirm(_("A new version of this site is available. Load it?"))) {
-                        window.location.reload();
+        if( typeof window.applicationCache !== "undefined" ){
+            window.addEventListener('load', function(e) {
+                window.applicationCache.addEventListener('updateready', function(e) {
+                    if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
+                        // Browser downloaded a new app cache.
+                        // Swap it in and reload the page to get the new hotness.
+                        window.applicationCache.swapCache();
+                        if (confirm(_("A new version of this site is available. Load it?"))) {
+                            window.location.reload();
+                        }
+                    } else {
+                    // Manifest didn't changed. Nothing new to server.
                     }
-                } else {
-                // Manifest didn't changed. Nothing new to server.
-                }
+                }, false);
             }, false);
-        }, false);
+        }
 
 
         $(document).ready(function () {
-            kohadb.initialize();
+            if( typeof window.applicationCache === "undefined" ){
+                $("#offline-home div").html('<div class="dialog alert"><h3>' + _("Offline circulation disabled") + '</h3><p>' + _("Your browser is not compatible with the built-in offline circulation tool.") + '</div>');
+            } else {
+                kohadb.initialize();
+            }
             $('#header_search #circ_search .tip').text(_("Enter patron card number:"));
 
             $('ul[aria-labelledby="logged-in-menu"]').html('<li><a class="toplinks">' + _("You cannot change your branch or logout while using offline circulation") + '</a></li>');
-- 
2.20.1