Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
/*********************************************************************
class.nav.php
Navigation helper classes. Pointless BUT helps keep navigation clean and free from errors.
Peter Rotich <peter@osticket.com>
Copyright (c) 2006-2012 osTicket
http://www.osticket.com
Released under the GNU General Public License WITHOUT ANY WARRANTY.
See LICENSE.TXT for details.
vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/
class StaffNav {
var $tabs=array();
var $submenus=array();
var $activetab;
var $activemenu;
var $panel;
var $staff;
function StaffNav($staff, $panel='staff'){
$this->staff=$staff;
$this->panel=strtolower($panel);
$this->tabs=$this->getTabs();
$this->submenus=$this->getSubMenus();
}
function getPanel(){
return $this->panel;
}
function isAdminPanel(){
return (!strcasecmp($this->getPanel(),'admin'));
}
function isStaffPanel() {
return (!$this->isAdminPanel());
}
Kelli Shaver
committed
Kelli Shaver
committed
if($this->tabs[$tab]){
$this->tabs[$tab]['active']=true;
if($this->activetab && $this->activetab!=$tab && $this->tabs[$this->activetab])
$this->tabs[$this->activetab]['active']=false;
$this->activetab=$tab;
Kelli Shaver
committed
return true;
}
return false;
}
function setActiveTab($tab){
return $this->setTabActive($tab);
}
function getActiveTab(){
return $this->activetab;
}
function setActiveSubMenu($mid) {
$this->activeMenu = $mid;
}
function getActiveMenu() {
return $this->activeMenu;
}
Kelli Shaver
committed
Kelli Shaver
committed
$this->submenus[$this->getPanel().'.'.$this->activetab][]=$item;
if($active)
$this->activeMenu=sizeof($this->submenus[$this->getPanel().'.'.$this->activetab]);
}
function getTabs(){
if(!$this->tabs) {
$this->tabs=array();
$this->tabs['dashboard']=array('desc'=>'Dashboard','href'=>'dashboard.php','title'=>'Staff Dashboard');
$this->tabs['tickets']=array('desc'=>'Tickets','href'=>'tickets.php','title'=>'Ticket Queue');
$this->tabs['kbase']=array('desc'=>'Knowledgebase','href'=>'kb.php','title'=>'Knowledgebase');
}
return $this->tabs;
}
function getSubMenus(){ //Private.
$staff = $this->staff;
$submenus=array();
foreach($this->getTabs() as $k=>$tab){
$subnav=array();
switch(strtolower($k)){
case 'tickets':
$subnav[]=array('desc'=>'Tickets','href'=>'tickets.php','iconclass'=>'Ticket', 'droponly'=>true);
if($staff) {
if(($assigned=$staff->getNumAssignedTickets()))
Kelli Shaver
committed
$subnav[]=array('desc'=>"My Tickets ($assigned)",
'href'=>'tickets.php?status=assigned',
'iconclass'=>'assignedTickets',
'droponly'=>true);
if($staff->canCreateTickets())
$subnav[]=array('desc'=>'New Ticket',
'href'=>'tickets.php?a=open',
'iconclass'=>'newTicket',
'droponly'=>true);
}
break;
case 'dashboard':
$subnav[]=array('desc'=>'Dashboard','href'=>'dashboard.php','iconclass'=>'logs');
$subnav[]=array('desc'=>'Staff Directory','href'=>'directory.php','iconclass'=>'teams');
$subnav[]=array('desc'=>'My Profile','href'=>'profile.php','iconclass'=>'users');
break;
case 'kbase':
$subnav[]=array('desc'=>'FAQs','href'=>'kb.php', 'urls'=>array('faq.php'), 'iconclass'=>'kb');
$subnav[]=array('desc'=>'Categories','href'=>'categories.php','iconclass'=>'faq-categories');
$subnav[]=array('desc'=>'Canned Responses','href'=>'canned.php','iconclass'=>'canned');
}
break;
}
if($subnav)
$submenus[$this->getPanel().'.'.strtolower($k)]=$subnav;
}
Kelli Shaver
committed
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
return $submenus;
}
function getSubMenu($tab=null){
$tab=$tab?$tab:$this->activetab;
return $this->submenus[$this->getPanel().'.'.$tab];
}
function getSubNav($tab=null){
return $this->getSubMenu($tab);
}
}
class AdminNav extends StaffNav{
function AdminNav($staff){
parent::StaffNav($staff, 'admin');
}
function getTabs(){
if(!$this->tabs){
$tabs=array();
$tabs['dashboard']=array('desc'=>'Dashboard','href'=>'logs.php','title'=>'Admin Dashboard');
$tabs['settings']=array('desc'=>'Settings','href'=>'settings.php','title'=>'System Settings');
$tabs['manage']=array('desc'=>'Manage','href'=>'helptopics.php','title'=>'Manage Options');
$tabs['emails']=array('desc'=>'Emails','href'=>'emails.php','title'=>'Email Settings');
$tabs['staff']=array('desc'=>'Staff','href'=>'staff.php','title'=>'Manage Staff');
Kelli Shaver
committed
return $this->tabs;
}
function getSubMenus(){
$submenus=array();
foreach($this->getTabs() as $k=>$tab){
$subnav=array();
switch(strtolower($k)){
case 'dashboard':
$subnav[]=array('desc'=>'System Logs','href'=>'logs.php','iconclass'=>'logs');
$subnav[]=array('desc'=>'System Preferences','href'=>'settings.php','iconclass'=>'preferences');
$subnav[]=array('desc'=>'Tickets','href'=>'settings.php','iconclass'=>'preferences');
$subnav[]=array('desc'=>'Emails','href'=>'settings.php','iconclass'=>'preferences');
$subnav[]=array('desc'=>'Knowledgebase','href'=>'settings.php','iconclass'=>'preferences');
$subnav[]=array('desc'=>'Autoresponder','href'=>'autoresponder.php','iconclass'=>'preferences');
$subnav[]=array('desc'=>'Alerts Notices','href'=>'alerts.php','iconclass'=>'preferences');
break;
case 'manage':
$subnav[]=array('desc'=>'Help Topics','href'=>'helptopics.php','iconclass'=>'helpTopics');
$subnav[]=array('desc'=>'Ticket Filters','href'=>'filters.php',
'title'=>'Ticket Filters','iconclass'=>'emailFilters');
$subnav[]=array('desc'=>'SLA Plans','href'=>'slas.php','iconclass'=>'sla');
$subnav[]=array('desc'=>'API Keys','href'=>'apikeys.php','iconclass'=>'api');
break;
case 'emails':
$subnav[]=array('desc'=>'Emails','href'=>'emails.php', 'title'=>'Email Addresses', 'iconclass'=>'emailSettings');
$subnav[]=array('desc'=>'Banlist','href'=>'banlist.php',
'title'=>'Banned Emails','iconclass'=>'emailDiagnostic');
$subnav[]=array('desc'=>'Templates','href'=>'templates.php','title'=>'Email Templates','iconclass'=>'emailTemplates');
$subnav[]=array('desc'=>'Diagnostic','href'=>'emailtest.php', 'title'=>'Email Diagnostic', 'iconclass'=>'emailDiagnostic');
break;
case 'staff':
$subnav[]=array('desc'=>'Staff Members','href'=>'staff.php','iconclass'=>'users');
$subnav[]=array('desc'=>'Teams','href'=>'teams.php','iconclass'=>'teams');
$subnav[]=array('desc'=>'Groups','href'=>'groups.php','iconclass'=>'groups');
$subnav[]=array('desc'=>'Departments','href'=>'departments.php','iconclass'=>'departments');
break;
}
if($subnav)
$submenus[$this->getPanel().'.'.strtolower($k)]=$subnav;
}
return $submenus;
}
}
class UserNav {
Kelli Shaver
committed
var $navs=array();
var $activenav;
var $user;
Kelli Shaver
committed
function UserNav($user=null, $active=''){
$this->user=$user;
$this->navs=$this->getNavs();
if($active)
$this->setActiveNav($active);
}
function setActiveNav($nav){
if($nav && $this->navs[$nav]){
$this->navs[$nav]['active']=true;
if($this->activenav && $this->activenav!=$nav && $this->navs[$this->activenav])
$this->navs[$this->activenav]['active']=false;
$this->activenav=$nav;
return true;
}
return false;
}
function getNavLinks(){
global $cfg;
Kelli Shaver
committed
//Paths are based on the root dir.
if(!$this->navs){
$navs = array();
$user = $this->user;
$navs['home']=array('desc'=>'Support Center Home','href'=>'index.php','title'=>'');
if($cfg && $cfg->isKnowledgebaseEnabled())
$navs['kb']=array('desc'=>'Knowledgebase','href'=>'kb/index.php','title'=>'');
$navs['new']=array('desc'=>'Open New Ticket','href'=>'open.php','title'=>'');
if($user && $user->isValid()) {
if($cfg && $cfg->showRelatedTickets()) {
$navs['tickets']=array('desc'=>sprintf('My Tickets (%d)',$user->getNumTickets()),
'href'=>'tickets.php',
'title'=>'Show all tickets');
} else {
$navs['tickets']=array('desc'=>'View Ticket Thread',
'href'=>sprintf('tickets.php?id=%d',$user->getTicketID()),
'title'=>'View ticket status');
}
} else {
$navs['status']=array('desc'=>'Check Ticket Status','href'=>'view.php','title'=>'');