From 94a200ee138a6ae421abf7aff8bc8ef0e224a3ed Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Tue, 15 Apr 2014 09:10:24 -0500
Subject: [PATCH] pjax: Refresh the ticket queue navigation

---
 include/staff/header.inc.php                  | 48 +------------------
 include/staff/templates/navigation.tmpl.php   | 22 +++++++++
 .../staff/templates/sub-navigation.tmpl.php   | 25 ++++++++++
 scp/css/scp.css                               |  2 +-
 scp/tickets.php                               | 11 +++++
 5 files changed, 61 insertions(+), 47 deletions(-)
 create mode 100644 include/staff/templates/navigation.tmpl.php
 create mode 100644 include/staff/templates/sub-navigation.tmpl.php

diff --git a/include/staff/header.inc.php b/include/staff/header.inc.php
index 888ec9fd1..2b0870d27 100644
--- a/include/staff/header.inc.php
+++ b/include/staff/header.inc.php
@@ -64,54 +64,10 @@
         </p>
     </div>
     <ul id="nav">
-        <?php
-        if(($tabs=$nav->getTabs()) && is_array($tabs)){
-            foreach($tabs as $name =>$tab) {
-                echo sprintf('<li class="%s"><a href="%s" class="no-pjax">%s</a>',$tab['active']?'active':'inactive',$tab['href'],$tab['desc']);
-                if(!$tab['active'] && ($subnav=$nav->getSubMenu($name))){
-                    echo "<ul>\n";
-                    foreach($subnav as $k => $item) {
-                        if (!($id=$item['id']))
-                            $id="nav$k";
-
-                        echo sprintf(
-                            '<li><a class="%s %s" href="%s" title="%s" id="%s">%s</a></li>',
-                            $item['iconclass'],
-                            $tab['active'] ? '' : 'no-pjax',
-                            $item['href'], $item['title'],
-                            $id, $item['desc']);
-                    }
-                    echo "\n</ul>\n";
-                }
-                echo "\n</li>\n";
-            }
-        } ?>
+<?php include STAFFINC_DIR . "templates/navigation.tmpl.php"; ?>
     </ul>
     <ul id="sub_nav">
-        <?php
-        if(($subnav=$nav->getSubMenu()) && is_array($subnav)){
-            $activeMenu=$nav->getActiveMenu();
-            if($activeMenu>0 && !isset($subnav[$activeMenu-1]))
-                $activeMenu=0;
-            foreach($subnav as $k=> $item) {
-                if($item['droponly']) continue;
-                $class=$item['iconclass'];
-                if ($activeMenu && $k+1==$activeMenu
-                        or (!$activeMenu
-                            && (strpos(strtoupper($item['href']),strtoupper(basename($_SERVER['SCRIPT_NAME']))) !== false
-                                or ($item['urls']
-                                    && in_array(basename($_SERVER['SCRIPT_NAME']),$item['urls'])
-                                    )
-                                )))
-                    $class="$class active";
-                if (!($id=$item['id']))
-                    $id="subnav$k";
-
-                echo sprintf('<li><a class="%s" href="%s" title="%s" id="%s">%s</a></li>',
-                        $class, $item['href'], $item['title'], $id, $item['desc']);
-            }
-        }
-        ?>
+<?php include STAFFINC_DIR . "templates/sub-navigation.tmpl.php"; ?>
     </ul>
     <div id="content">
 <?php } elseif ($pjax = $ost->getExtraPjax()) { # endif X_PJAX ?>
diff --git a/include/staff/templates/navigation.tmpl.php b/include/staff/templates/navigation.tmpl.php
new file mode 100644
index 000000000..66f5564c1
--- /dev/null
+++ b/include/staff/templates/navigation.tmpl.php
@@ -0,0 +1,22 @@
+<?php
+if(($tabs=$nav->getTabs()) && is_array($tabs)){
+    foreach($tabs as $name =>$tab) {
+        echo sprintf('<li class="%s"><a href="%s" class="no-pjax">%s</a>',$tab['active']?'active':'inactive',$tab['href'],$tab['desc']);
+        if(!$tab['active'] && ($subnav=$nav->getSubMenu($name))){
+            echo "<ul>\n";
+            foreach($subnav as $k => $item) {
+                if (!($id=$item['id']))
+                    $id="nav$k";
+
+                echo sprintf(
+                    '<li><a class="%s %s" href="%s" title="%s" id="%s">%s</a></li>',
+                    $item['iconclass'],
+                    $tab['active'] ? '' : 'no-pjax',
+                    $item['href'], $item['title'],
+                    $id, $item['desc']);
+            }
+            echo "\n</ul>\n";
+        }
+        echo "\n</li>\n";
+    }
+} ?>
diff --git a/include/staff/templates/sub-navigation.tmpl.php b/include/staff/templates/sub-navigation.tmpl.php
new file mode 100644
index 000000000..ebc6fa204
--- /dev/null
+++ b/include/staff/templates/sub-navigation.tmpl.php
@@ -0,0 +1,25 @@
+<?php
+if(($subnav=$nav->getSubMenu()) && is_array($subnav)){
+    $activeMenu=$nav->getActiveMenu();
+    if($activeMenu>0 && !isset($subnav[$activeMenu-1]))
+        $activeMenu=0;
+    foreach($subnav as $k=> $item) {
+        if($item['droponly']) continue;
+        $class=$item['iconclass'];
+        if ($activeMenu && $k+1==$activeMenu
+                or (!$activeMenu
+                    && (strpos(strtoupper($item['href']),strtoupper(basename($_SERVER['SCRIPT_NAME']))) !== false
+                        or ($item['urls']
+                            && in_array(basename($_SERVER['SCRIPT_NAME']),$item['urls'])
+                            )
+                        )))
+            $class="$class active";
+        if (!($id=$item['id']))
+            $id="subnav$k";
+
+        echo sprintf('<li><a class="%s" href="%s" title="%s" id="%s">%s</a></li>',
+                $class, $item['href'], $item['title'], $id, $item['desc']);
+    }
+}
+?>
+
diff --git a/scp/css/scp.css b/scp/css/scp.css
index dc2d76119..c93dda388 100644
--- a/scp/css/scp.css
+++ b/scp/css/scp.css
@@ -1509,7 +1509,7 @@ ul.progress li.no small {color:red;}
     border-radius: 10px;
     padding: 10px;
     width: 300px;
-    background: black url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAWUlEQVQYGY2PAQoAIAgDrQf6pf7kC2vCRlRUgrjqXFrMrI3McHdKiwhpiMrTDRL4ghL8geQIsc6EOwbMcsYXhIYyUlvTgXUeS1vzkXWG8OMRXCE0b+AJAtgB7jEc+2fs6e8AAAAASUVORK5CYII=) repeat;
+    background: #555 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAWUlEQVQYGY2PAQoAIAgDrQf6pf7kC2vCRlRUgrjqXFrMrI3McHdKiwhpiMrTDRL4ghL8geQIsc6EOwbMcsYXhIYyUlvTgXUeS1vzkXWG8OMRXCE0b+AJAtgB7jEc+2fs6e8AAAAASUVORK5CYII=) repeat;
     position: fixed;
     display: none;
     z-index: 3000;
diff --git a/scp/tickets.php b/scp/tickets.php
index c94ad4429..07ee1ed84 100644
--- a/scp/tickets.php
+++ b/scp/tickets.php
@@ -626,4 +626,15 @@ $ost->addExtraHeader('<script type="text/javascript" src="js/ticket.js"></script
 require_once(STAFFINC_DIR.'header.inc.php');
 require_once(STAFFINC_DIR.$inc);
 require_once(STAFFINC_DIR.'footer.inc.php');
+
+if (isset($_SERVER['HTTP_X_PJAX'])) {
+    // Update the ticket queue counts in the navigation
+    ob_start();
+    include STAFFINC_DIR . "templates/sub-navigation.tmpl.php";
+    $nav_content = ob_get_clean();
+?>
+<script type="text/javascript">
+    $('#sub_nav').html(<?php echo JsonDataEncoder::encode($nav_content); ?>);
+</script><?
+}
 ?>
-- 
GitLab