From aff586a5fe3680fff725374e22c158a12c8e2f94 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Thu, 14 May 2015 09:07:21 -0500
Subject: [PATCH] Skip ticket refresh if checkboxes checked

---
 scp/js/scp.js    |  2 +-
 scp/js/ticket.js | 16 +++++++++++++---
 scp/tickets.php  |  6 ++----
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/scp/js/scp.js b/scp/js/scp.js
index 8621a7d79..1a3e35bec 100644
--- a/scp/js/scp.js
+++ b/scp/js/scp.js
@@ -844,7 +844,7 @@ getConfig = (function() {
 })();
 
 $(document).on('pjax:click', function(options) {
-    clearTimeout(window.ticket_refresh);
+    clearInterval(window.ticket_refresh);
     // Release ticket lock (maybe)
     if ($.autoLock !== undefined)
         $.autoLock.releaseLock();
diff --git a/scp/js/ticket.js b/scp/js/ticket.js
index a2a131e02..7f7b879e7 100644
--- a/scp/js/ticket.js
+++ b/scp/js/ticket.js
@@ -337,9 +337,19 @@ $.showImagesInline = function(urls, thread_id) {
     });
 };
 
-$.refreshTicketView = function() {
-    if (0 === $('.dialog:visible').length)
-        $.pjax({url: document.location.href, container:'#pjax-container'});
+$.refreshTicketView = function(interval) {
+    var refresh =
+    window.ticket_refresh = setInterval(function() {
+      if ($('table.list input.ckb[name=tids\\[\\]]:checked').length)
+        // Skip the refresh b/c items are checked
+        return;
+      else if (0 < $('.dialog:visible').length)
+        // Dialog open — skip refresh
+        return;
+
+      clearInterval(refresh);
+      $.pjax({url: document.location.href, container:'#pjax-container'});
+    }, interval);
 }
 
 var ticket_onload = function($) {
diff --git a/scp/tickets.php b/scp/tickets.php
index d7320c295..3dc2d0f9c 100644
--- a/scp/tickets.php
+++ b/scp/tickets.php
@@ -538,10 +538,8 @@ if($ticket) {
         $nav->setActiveSubMenu(-1);
 
     //set refresh rate if the user has it configured
-    if(!$_POST && !$_REQUEST['a'] && ($min=$thisstaff->getRefreshRate())) {
-        $js = "clearTimeout(window.ticket_refresh);
-               window.ticket_refresh = setTimeout($.refreshTicketView,"
-            .($min*60000).");";
+    if(!$_POST && !$_REQUEST['a'] && ($min=(int)$thisstaff->getRefreshRate())) {
+        $js = "$.refreshTicketView({$min}*60000);";
         $ost->addExtraHeader('<script type="text/javascript">'.$js.'</script>',
             $js);
     }
-- 
GitLab