From 48fecce4b93e16df79948aaffcd2ef5e3becac30 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 2 Nov 2014 14:19:40 -0500 Subject: [PATCH] upgrade to OST 1.9.4 --- equipment.php | 2 +- include/model/Equipment.php | 16 +- install/sql/install_equipment.sql | 42 ++- install/sql/upgrade_equipment.sql | 42 ++- nbproject/project.properties | 1 - ost_core/include/class.nav.php | 416 +++++++++++++++++------------- plugin.php | 2 +- 7 files changed, 304 insertions(+), 217 deletions(-) diff --git a/equipment.php b/equipment.php index 6496829..dc6cbc9 100644 --- a/equipment.php +++ b/equipment.php @@ -18,7 +18,7 @@ require_once ('config.php'); -define ( 'EQUIPMENT_PLUGIN_VERSION', '0.3' ); +define ( 'EQUIPMENT_PLUGIN_VERSION', '0.4' ); define ( 'EQUIPMENT_TABLE', TABLE_PREFIX . 'equipment' ); define ( 'EQUIPMENT_CATEGORY_TABLE', TABLE_PREFIX . 'equipment_category' ); diff --git a/include/model/Equipment.php b/include/model/Equipment.php index 128314f..44f56f0 100644 --- a/include/model/Equipment.php +++ b/include/model/Equipment.php @@ -163,11 +163,9 @@ public function setStaff_id($staff_id) { public static function getOpenTickets($id) { $ticket_ids = array(); - $sql = 'SELECT et.ticket_id, et.equipment_id' - . ' FROM ' . EQUIPMENT_TICKET_TABLE . ' et ' - . ' LEFT JOIN ' . TICKET_TABLE . ' ticket ON(et.ticket_id=ticket.ticket_id) ' - . ' WHERE et.equipment_id=' . db_input($id) - . ' AND ticket.status=\'open\''; + $sql = 'SELECT ticket_id, equipment_id FROM ' . EQUIPMENT_TICKET_VIEW . ' ' + . 'WHERE equipment_id=' . db_input($id) . ' ' + . 'AND status="open"'; $res = db_query($sql); if ($res && ($num = db_num_rows($res))) { while ($row = db_fetch_array($res)) { @@ -179,11 +177,9 @@ public static function getOpenTickets($id) { public static function getClosedTickets($id) { $ticket_ids = array(); - $sql = 'SELECT et.ticket_id, et.equipment_id' - . ' FROM ' . EQUIPMENT_TICKET_TABLE . ' et ' - . ' LEFT JOIN ' . TICKET_TABLE . ' ticket ON(et.ticket_id=ticket.ticket_id) ' - . ' WHERE et.equipment_id=' . db_input($id) - . ' AND ticket.status=\'closed\''; + $sql = 'SELECT ticket_id, equipment_id FROM ' . EQUIPMENT_TICKET_VIEW . ' ' + . 'WHERE equipment_id=' . db_input($id) . ' ' + . 'AND status="closed"'; $res = db_query($sql); if ($res && ($num = db_num_rows($res))) { while ($row = db_fetch_array($res)) { diff --git a/install/sql/install_equipment.sql b/install/sql/install_equipment.sql index db4b6f3..94c0c82 100644 --- a/install/sql/install_equipment.sql +++ b/install/sql/install_equipment.sql @@ -246,7 +246,7 @@ on(((`%TABLE_PREFIX%form_field`.`id` = `%TABLE_PREFIX%form_entry_values`.`field_ left join `%TABLE_PREFIX%form` on((`%TABLE_PREFIX%form`.`id` = `%TABLE_PREFIX%form_field`.`form_id`))) left join `%TABLE_PREFIX%equipment_status` -on((`%TABLE_PREFIX%form_entry_values`.`value` = `%TABLE_PREFIX%equipment_status`.`name`)))) +on((`%TABLE_PREFIX%form_entry_values`.`value` like concat('%', `%TABLE_PREFIX%equipment_status`.`name`, '%'))))) where ((`%TABLE_PREFIX%form`.`title` = 'Equipment') and (`%TABLE_PREFIX%form`.`id` = `%TABLE_PREFIX%form_entry`.`form_id`) and (`%TABLE_PREFIX%form_entry`.`object_type` = 'T'))$ @@ -259,12 +259,14 @@ select `%TABLE_PREFIX%equipment_ticket`.`equipment_id` AS `equipment_id`, `%TABLE_PREFIX%equipment_ticket`.`created` AS `created`, `%TABLE_PREFIX%equipment`.`category_id` AS `category_id`, `%TABLE_PREFIX%equipment`.`is_active` AS `is_active`, -`%TABLE_PREFIX%ticket`.`status` AS `status` -from ((`%TABLE_PREFIX%equipment_ticket` -left join `%TABLE_PREFIX%equipment` -on((`%TABLE_PREFIX%equipment_ticket`.`equipment_id` = `%TABLE_PREFIX%equipment`.`equipment_id`))) -left join `%TABLE_PREFIX%ticket` -on((`%TABLE_PREFIX%equipment_ticket`.`ticket_id` = `%TABLE_PREFIX%ticket`.`ticket_id`)))$ +`%TABLE_PREFIX%ticket_status`.`state` AS `status` +from `ost_equipment_ticket` +left join `ost_equipment` +on(`ost_equipment_ticket`.`equipment_id` = `ost_equipment`.`equipment_id`) +left join `ost_ticket` +on(`ost_equipment_ticket`.`ticket_id` = `ost_ticket`.`ticket_id`) +left join `ost_ticket_status` +on(`ost_ticket`.`status_id` = `ost_ticket_status`.`id`)$ DROP VIEW IF EXISTS `%TABLE_PREFIX%EquipmentSearchView`$ @@ -281,15 +283,25 @@ DROP TRIGGER IF EXISTS `%TABLE_PREFIX%ticket_event_AINS`$ CREATE TRIGGER `%TABLE_PREFIX%ticket_event_AINS` AFTER INSERT ON `%TABLE_PREFIX%ticket_event` FOR EACH ROW BEGIN IF NEW.state='closed' THEN + SET @equipment_id = (SELECT equipment_id FROM `%TABLE_PREFIX%equipment_ticket` - WHERE ticket_id=NEW.ticket_id LIMIT 1); + WHERE ticket_id=NEW.ticket_id LIMIT 1); + + IF ((@equipment_id IS NOT NULL) AND (@equipment_id>0)) THEN - SET @status_id = (SELECT status_id FROM `%TABLE_PREFIX%equipment_status` - WHERE baseline=1 LIMIT 1); - IF ((@status_id IS NOT NULL) AND (@status_id>0)) THEN - UPDATE `%TABLE_PREFIX%equipment` SET status_id = @status_id - WHERE equipment_id = @equipment_id; + SET @open_ticks = (SELECT COUNT(ticket_id) FROM `%TABLE_PREFIX%EquipmentTicketView` + WHERE equipment_id = @equipment_id AND + `status` != 'closed'); + + IF @open_ticks = 0 THEN + SET @status_id = (SELECT status_id FROM `%TABLE_PREFIX%equipment_status` + WHERE baseline=1 LIMIT 1); + + IF ((@status_id IS NOT NULL) AND (@status_id>0)) THEN + UPDATE `%TABLE_PREFIX%equipment` SET status_id = @status_id + WHERE equipment_id = @equipment_id; + END IF; END IF; END IF; @@ -304,6 +316,7 @@ BEGIN SET @asset_id_str = (SELECT value FROM `%TABLE_PREFIX%EquipmentFormView` WHERE ticket_id= NEW.ticket_id AND field_label='Equipment' LIMIT 1); SET @asset_id = (SELECT SUBSTRING_INDEX(@asset_id_str, 'Asset_ID:', -1)); + SET @asset_id = SUBSTRING(@asset_id, 1, CHAR_LENGTH(@asset_id) - 2); END IF; @@ -336,6 +349,7 @@ BEGIN SET @asset_id_str = (SELECT value FROM `%TABLE_PREFIX%EquipmentFormView` WHERE ticket_id= NEW.ticket_id AND field_label='Equipment' LIMIT 1); SET @asset_id = (SELECT SUBSTRING_INDEX(@asset_id_str, 'Asset_ID:', -1)); + SET @asset_id = SUBSTRING(@asset_id, 1, CHAR_LENGTH(@asset_id) - 2); END IF; @@ -512,5 +526,5 @@ BEGIN CLOSE cur1; END$ -UPDATE `%TABLE_PREFIX%plugin` SET version = '0.3' WHERE `name`='Equipment Manager'$ +UPDATE `%TABLE_PREFIX%plugin` SET version = '0.4' WHERE `name`='Equipment Manager'$ SET SQL_SAFE_UPDATES=1$ diff --git a/install/sql/upgrade_equipment.sql b/install/sql/upgrade_equipment.sql index e43b9b0..466e323 100644 --- a/install/sql/upgrade_equipment.sql +++ b/install/sql/upgrade_equipment.sql @@ -221,7 +221,7 @@ on(((`%TABLE_PREFIX%form_field`.`id` = `%TABLE_PREFIX%form_entry_values`.`field_ left join `%TABLE_PREFIX%form` on((`%TABLE_PREFIX%form`.`id` = `%TABLE_PREFIX%form_field`.`form_id`))) left join `%TABLE_PREFIX%equipment_status` -on((`%TABLE_PREFIX%form_entry_values`.`value` = `%TABLE_PREFIX%equipment_status`.`name`)))) +on((`%TABLE_PREFIX%form_entry_values`.`value` like concat('%', `%TABLE_PREFIX%equipment_status`.`name`, '%'))))) where ((`%TABLE_PREFIX%form`.`title` = 'Equipment') and (`%TABLE_PREFIX%form`.`id` = `%TABLE_PREFIX%form_entry`.`form_id`) and (`%TABLE_PREFIX%form_entry`.`object_type` = 'T'))$ @@ -234,12 +234,14 @@ select `%TABLE_PREFIX%equipment_ticket`.`equipment_id` AS `equipment_id`, `%TABLE_PREFIX%equipment_ticket`.`created` AS `created`, `%TABLE_PREFIX%equipment`.`category_id` AS `category_id`, `%TABLE_PREFIX%equipment`.`is_active` AS `is_active`, -`%TABLE_PREFIX%ticket`.`status` AS `status` -from ((`%TABLE_PREFIX%equipment_ticket` -left join `%TABLE_PREFIX%equipment` -on((`%TABLE_PREFIX%equipment_ticket`.`equipment_id` = `%TABLE_PREFIX%equipment`.`equipment_id`))) -left join `%TABLE_PREFIX%ticket` -on((`%TABLE_PREFIX%equipment_ticket`.`ticket_id` = `%TABLE_PREFIX%ticket`.`ticket_id`)))$ +`%TABLE_PREFIX%ticket_status`.`state` AS `status` +from `ost_equipment_ticket` +left join `ost_equipment` +on(`ost_equipment_ticket`.`equipment_id` = `ost_equipment`.`equipment_id`) +left join `ost_ticket` +on(`ost_equipment_ticket`.`ticket_id` = `ost_ticket`.`ticket_id`) +left join `ost_ticket_status` +on(`ost_ticket`.`status_id` = `ost_ticket_status`.`id`)$ DROP VIEW IF EXISTS `%TABLE_PREFIX%EquipmentSearchView`$ @@ -256,15 +258,25 @@ DROP TRIGGER IF EXISTS `%TABLE_PREFIX%ticket_event_AINS`$ CREATE TRIGGER `%TABLE_PREFIX%ticket_event_AINS` AFTER INSERT ON `%TABLE_PREFIX%ticket_event` FOR EACH ROW BEGIN IF NEW.state='closed' THEN + SET @equipment_id = (SELECT equipment_id FROM `%TABLE_PREFIX%equipment_ticket` - WHERE ticket_id=NEW.ticket_id LIMIT 1); + WHERE ticket_id=NEW.ticket_id LIMIT 1); + + IF ((@equipment_id IS NOT NULL) AND (@equipment_id>0)) THEN - SET @status_id = (SELECT status_id FROM `%TABLE_PREFIX%equipment_status` - WHERE baseline=1 LIMIT 1); - IF ((@status_id IS NOT NULL) AND (@status_id>0)) THEN - UPDATE `%TABLE_PREFIX%equipment` SET status_id = @status_id - WHERE equipment_id = @equipment_id; + SET @open_ticks = (SELECT COUNT(ticket_id) FROM `%TABLE_PREFIX%EquipmentTicketView` + WHERE equipment_id = @equipment_id AND + `status` != 'closed'); + + IF @open_ticks = 0 THEN + SET @status_id = (SELECT status_id FROM `%TABLE_PREFIX%equipment_status` + WHERE baseline=1 LIMIT 1); + + IF ((@status_id IS NOT NULL) AND (@status_id>0)) THEN + UPDATE `%TABLE_PREFIX%equipment` SET status_id = @status_id + WHERE equipment_id = @equipment_id; + END IF; END IF; END IF; @@ -279,6 +291,7 @@ BEGIN SET @asset_id_str = (SELECT value FROM `%TABLE_PREFIX%EquipmentFormView` WHERE ticket_id= NEW.ticket_id AND field_label='Equipment' LIMIT 1); SET @asset_id = (SELECT SUBSTRING_INDEX(@asset_id_str, 'Asset_ID:', -1)); + SET @asset_id = SUBSTRING(@asset_id, 1, CHAR_LENGTH(@asset_id) - 2); END IF; @@ -310,6 +323,7 @@ BEGIN SET @asset_id_str = (SELECT value FROM `%TABLE_PREFIX%EquipmentFormView` WHERE ticket_id= NEW.ticket_id AND field_label='Equipment' LIMIT 1); SET @asset_id = (SELECT SUBSTRING_INDEX(@asset_id_str, 'Asset_ID:', -1)); + SET @asset_id = SUBSTRING(@asset_id, 1, CHAR_LENGTH(@asset_id) - 2); END IF; @@ -486,5 +500,5 @@ BEGIN CLOSE cur1; END$ -UPDATE `%TABLE_PREFIX%plugin` SET version = '0.3' WHERE `name`='Equipment Manager'$ +UPDATE `%TABLE_PREFIX%plugin` SET version = '0.4' WHERE `name`='Equipment Manager'$ SET SQL_SAFE_UPDATES=1$ \ No newline at end of file diff --git a/nbproject/project.properties b/nbproject/project.properties index 66d35e0..e4f7cfa 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -18,6 +18,5 @@ source.encoding=UTF-8 src.dir=. tags.asp=false tags.short=false -test.src.dir=${file.reference.equipment-test} testing.providers=PhpUnit web.root=. diff --git a/ost_core/include/class.nav.php b/ost_core/include/class.nav.php index 2f2fb61..71aee8d 100644 --- a/ost_core/include/class.nav.php +++ b/ost_core/include/class.nav.php @@ -1,43 +1,55 @@ - Copyright (c) 2006-2013 osTicket - http://www.osticket.com + Navigation helper classes. Pointless BUT helps keep navigation clean and free from errors. - Released under the GNU General Public License WITHOUT ANY WARRANTY. - See LICENSE.TXT for details. + Peter Rotich + Copyright (c) 2006-2013 osTicket + http://www.osticket.com - vim: expandtab sw=4 ts=4 sts=4: -**********************************************************************/ -require_once(INCLUDE_DIR.'class.app.php'); + Released under the GNU General Public License WITHOUT ANY WARRANTY. + See LICENSE.TXT for details. + + vim: expandtab sw=4 ts=4 sts=4: + * ******************************************************************** */ +require_once(INCLUDE_DIR . 'class.app.php'); class StaffNav { - var $tabs=array(); - var $submenus=array(); var $activetab; - var $activemenu; + 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 StaffNav($staff, $panel = 'staff') { + $this->staff = $staff; + $this->panel = strtolower($panel); + } + + function __get($what) { + // Lazily initialize the tabbing system + switch ($what) { + case 'tabs': + $this->tabs = $this->getTabs(); + break; + case 'submenus': + $this->submenus = $this->getSubMenus(); + break; + default: + throw new Exception($what . ': No such attribute'); + } + return $this->{$what}; } - function getPanel(){ + function getPanel() { return $this->panel; } - function isAdminPanel(){ - return (!strcasecmp($this->getPanel(),'admin')); + function isAdminPanel() { + return (!strcasecmp($this->getPanel(), + 'admin')); } function isStaffPanel() { @@ -48,15 +60,17 @@ function getRegisteredApps() { return Application::getStaffApps(); } - function setTabActive($tab, $menu=''){ + function setTabActive($tab, $menu = '') { - 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; + 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; - if($menu) $this->setActiveSubMenu($menu, $tab); + $this->activetab = $tab; + if ($menu) + $this->setActiveSubMenu($menu, + $tab); return true; } @@ -64,22 +78,25 @@ function setTabActive($tab, $menu=''){ return false; } - function setActiveTab($tab, $menu=''){ - return $this->setTabActive($tab, $menu); + function setActiveTab($tab, $menu = '') { + return $this->setTabActive($tab, + $menu); } - function getActiveTab(){ + function getActiveTab() { return $this->activetab; } - function setActiveSubMenu($mid, $tab='') { - if(is_numeric($mid)) + function setActiveSubMenu($mid, $tab = '') { + if (is_numeric($mid)) $this->activeMenu = $mid; - elseif($mid && $tab && ($subNav=$this->getSubNav($tab))) { - foreach($subNav as $k => $menu) { - if(strcasecmp($mid, $menu['href'])) continue; + elseif ($mid && $tab && ($subNav = $this->getSubNav($tab))) { + foreach ($subNav as $k => $menu) { + if (strcasecmp($mid, + $menu['href'])) + continue; - $this->activeMenu = $k+1; + $this->activeMenu = $k + 1; break; } } @@ -89,193 +106,236 @@ function getActiveMenu() { return $this->activeMenu; } - function addSubMenu($item,$active=false){ + function addSubMenu($item, $active = false) { - $this->submenus[$this->getPanel().'.'.$this->activetab][]=$item; - if($active) - $this->activeMenu=sizeof($this->submenus[$this->getPanel().'.'.$this->activetab]); + // Triger lazy loading if submenus haven't been initialized + isset($this->submenus[$this->getPanel() . '.' . $this->activetab]); + $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['users'] = array('desc' => 'Users', 'href' => 'users.php', 'title' => 'User Directory'); - $this->tabs['tickets'] = array('desc'=>'Tickets','href'=>'tickets.php','title'=>'Ticket Queue'); - $this->tabs['kbase'] = array('desc'=>'Knowledgebase','href'=>'kb.php','title'=>'Knowledgebase'); + function getTabs() { + if (!$this->tabs) { + $this->tabs = array(); + $this->tabs['dashboard'] = array('desc' => __('Dashboard'), 'href' => 'dashboard.php', + 'title' => __('Agent Dashboard')); + $this->tabs['users'] = array('desc' => __('Users'), 'href' => 'users.php', + 'title' => __('User Directory')); + $this->tabs['tickets'] = array('desc' => __('Tickets'), 'href' => 'tickets.php', + 'title' => __('Ticket Queue')); + $this->tabs['kbase'] = array('desc' => __('Knowledgebase'), 'href' => 'kb.php', + 'title' => __('Knowledgebase')); if (count($this->getRegisteredApps())) - $this->tabs['apps']=array('desc'=>'Applications','href'=>'apps.php','title'=>'Applications'); + $this->tabs['apps'] = array('desc' => __('Applications'), 'href' => 'apps.php', + 'title' => __('Applications')); } return $this->tabs; } - function getSubMenus(){ //Private. - + function getSubMenus() { //Private. $staff = $this->staff; - $submenus=array(); - foreach($this->getTabs() as $k=>$tab){ - $subnav=array(); - switch(strtolower($k)){ + $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())) - $subnav[]=array('desc'=>"My Tickets ($assigned)", - 'href'=>'tickets.php?status=assigned', - 'iconclass'=>'assignedTickets', - 'droponly'=>true); - - if($staff->canCreateTickets()) - $subnav[]=array('desc'=>'New Ticket', - 'title' => 'Open New Ticket', - 'href'=>'tickets.php?a=open', - 'iconclass'=>'newTicket', - 'id' => 'new-ticket', - 'droponly'=>true); + $subnav[] = array('desc' => __('Tickets'), 'href' => 'tickets.php', + 'iconclass' => 'Ticket', 'droponly' => true); + if ($staff) { + if (($assigned = $staff->getNumAssignedTickets())) + $subnav[] = array('desc' => __('My Tickets') . " ($assigned)", + 'href' => 'tickets.php?status=assigned', + 'iconclass' => 'assignedTickets', + 'droponly' => true); + + if ($staff->canCreateTickets()) + $subnav[] = array('desc' => __('New Ticket'), + 'title' => __('Open a New Ticket'), + 'href' => 'tickets.php?a=open', + 'iconclass' => 'newTicket', + 'id' => 'new-ticket', + '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'); + $subnav[] = array('desc' => __('Dashboard'), 'href' => 'dashboard.php', + 'iconclass' => 'logs'); + $subnav[] = array('desc' => __('Agent Directory'), 'href' => 'directory.php', + 'iconclass' => 'teams'); + $subnav[] = array('desc' => __('My Profile'), 'href' => 'profile.php', + 'iconclass' => 'users'); break; case 'users': - $subnav[] = array('desc' => 'User Directory', 'href' => 'users.php', 'iconclass' => 'teams'); - $subnav[] = array('desc' => 'Organizations', 'href' => 'orgs.php', 'iconclass' => 'departments'); + $subnav[] = array('desc' => __('User Directory'), 'href' => 'users.php', + 'iconclass' => 'teams'); + $subnav[] = array('desc' => __('Organizations'), 'href' => 'orgs.php', + 'iconclass' => 'departments'); break; case 'kbase': - $subnav[]=array('desc'=>'FAQs','href'=>'kb.php', 'urls'=>array('faq.php'), 'iconclass'=>'kb'); - if($staff) { - if($staff->canManageFAQ()) - $subnav[]=array('desc'=>'Categories','href'=>'categories.php','iconclass'=>'faq-categories'); - if($staff->canManageCannedResponses()) - $subnav[]=array('desc'=>'Canned Responses','href'=>'canned.php','iconclass'=>'canned'); + $subnav[] = array('desc' => __('FAQs'), 'href' => 'kb.php', 'urls' => array( + 'faq.php'), 'iconclass' => 'kb'); + if ($staff) { + if ($staff->canManageFAQ()) + $subnav[] = array('desc' => __('Categories'), 'href' => 'categories.php', + 'iconclass' => 'faq-categories'); + if ($staff->canManageCannedResponses()) + $subnav[] = array('desc' => __('Canned Responses'), 'href' => 'canned.php', + 'iconclass' => 'canned'); } - break; + break; case 'apps': foreach ($this->getRegisteredApps() as $app) $subnav[] = $app; break; } - if($subnav) - $submenus[$this->getPanel().'.'.strtolower($k)]=$subnav; + if ($subnav) + $submenus[$this->getPanel() . '.' . strtolower($k)] = $subnav; } return $submenus; } - function getSubMenu($tab=null){ - $tab=$tab?$tab:$this->activetab; - return $this->submenus[$this->getPanel().'.'.$tab]; + function getSubMenu($tab = null) { + $tab = $tab ? $tab : $this->activetab; + return $this->submenus[$this->getPanel() . '.' . $tab]; } - function getSubNav($tab=null){ + function getSubNav($tab = null) { return $this->getSubMenu($tab); } } -class AdminNav extends StaffNav{ +class AdminNav extends StaffNav { - function AdminNav($staff){ - parent::StaffNav($staff, 'admin'); + function AdminNav($staff) { + parent::StaffNav($staff, + 'admin'); } function getRegisteredApps() { return Application::getAdminApps(); } - 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'); + 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' => __('Agents'), 'href' => 'staff.php', + 'title' => __('Manage Agents')); if (count($this->getRegisteredApps())) - $tabs['apps']=array('desc'=>'Applications','href'=>'apps.php','title'=>'Applications'); - $this->tabs=$tabs; + $tabs['apps'] = array('desc' => __('Applications'), 'href' => 'apps.php', + 'title' => __('Applications')); + $this->tabs = $tabs; } return $this->tabs; } - function getSubMenus(){ + function getSubMenus() { - $submenus=array(); - foreach($this->getTabs() as $k=>$tab){ - $subnav=array(); - switch(strtolower($k)){ + $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'=>'Information','href'=>'system.php','iconclass'=>'preferences'); + $subnav[] = array('desc' => __('System Logs'), 'href' => 'logs.php', + 'iconclass' => 'logs'); + $subnav[] = array('desc' => __('Information'), 'href' => 'system.php', + 'iconclass' => 'preferences'); break; case 'settings': - $subnav[]=array('desc'=>'Company','href'=>'settings.php?t=pages','iconclass'=>'pages'); - $subnav[]=array('desc'=>'System','href'=>'settings.php?t=system','iconclass'=>'preferences'); - $subnav[]=array('desc'=>'Tickets','href'=>'settings.php?t=tickets','iconclass'=>'ticket-settings'); - $subnav[]=array('desc'=>'Emails','href'=>'settings.php?t=emails','iconclass'=>'email-settings'); - $subnav[]=array('desc'=>'Access','href'=>'settings.php?t=access','iconclass'=>'users'); - $subnav[]=array('desc'=>'Knowledgebase','href'=>'settings.php?t=kb','iconclass'=>'kb-settings'); - $subnav[]=array('desc'=>'Autoresponder','href'=>'settings.php?t=autoresp','iconclass'=>'email-autoresponders'); - $subnav[]=array('desc'=>'Alerts & Notices','href'=>'settings.php?t=alerts','iconclass'=>'alert-settings'); + $subnav[] = array('desc' => __('Company'), 'href' => 'settings.php?t=pages', + 'iconclass' => 'pages'); + $subnav[] = array('desc' => __('System'), 'href' => 'settings.php?t=system', + 'iconclass' => 'preferences'); + $subnav[] = array('desc' => __('Tickets'), 'href' => 'settings.php?t=tickets', + 'iconclass' => 'ticket-settings'); + $subnav[] = array('desc' => __('Emails'), 'href' => 'settings.php?t=emails', + 'iconclass' => 'email-settings'); + $subnav[] = array('desc' => __('Access'), 'href' => 'settings.php?t=access', + 'iconclass' => 'users'); + $subnav[] = array('desc' => __('Knowledgebase'), 'href' => 'settings.php?t=kb', + 'iconclass' => 'kb-settings'); + $subnav[] = array('desc' => __('Autoresponder'), 'href' => 'settings.php?t=autoresp', + 'iconclass' => 'email-autoresponders'); + $subnav[] = array('desc' => __('Alerts and Notices'), 'href' => 'settings.php?t=alerts', + 'iconclass' => 'alert-settings'); 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'=>'ticketFilters'); - $subnav[]=array('desc'=>'SLA Plans','href'=>'slas.php','iconclass'=>'sla'); - $subnav[]=array('desc'=>'API Keys','href'=>'apikeys.php','iconclass'=>'api'); - $subnav[]=array('desc'=>'Pages', 'href'=>'pages.php','title'=>'Pages','iconclass'=>'pages'); - $subnav[]=array('desc'=>'Forms','href'=>'forms.php','iconclass'=>'forms'); - $subnav[]=array('desc'=>'Lists','href'=>'lists.php','iconclass'=>'lists'); - $subnav[]=array('desc'=>'Plugins','href'=>'plugins.php','iconclass'=>'api'); + $subnav[] = array('desc' => __('Help Topics'), 'href' => 'helptopics.php', + 'iconclass' => 'helpTopics'); + $subnav[] = array('desc' => __('Ticket Filters'), 'href' => 'filters.php', + 'title' => __('Ticket Filters'), 'iconclass' => 'ticketFilters'); + $subnav[] = array('desc' => __('SLA Plans'), 'href' => 'slas.php', + 'iconclass' => 'sla'); + $subnav[] = array('desc' => __('API Keys'), 'href' => 'apikeys.php', + 'iconclass' => 'api'); + $subnav[] = array('desc' => __('Pages'), 'href' => 'pages.php', + 'title' => 'Pages', 'iconclass' => 'pages'); + $subnav[] = array('desc' => __('Forms'), 'href' => 'forms.php', + 'iconclass' => 'forms'); + $subnav[] = array('desc' => __('Lists'), 'href' => 'lists.php', + 'iconclass' => 'lists'); + $subnav[] = array('desc' => __('Plugins'), 'href' => 'plugins.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'); + $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'); + $subnav[] = array('desc' => __('Agents'), '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; case 'apps': foreach ($this->getRegisteredApps() as $app) $subnav[] = $app; break; } - if($subnav) - $submenus[$this->getPanel().'.'.strtolower($k)]=$subnav; + if ($subnav) + $submenus[$this->getPanel() . '.' . strtolower($k)] = $subnav; } return $submenus; } + } class UserNav { - var $navs=array(); + var $navs = array(); var $activenav; - var $user; - function UserNav($user=null, $active=''){ + function UserNav($user = null, $active = '') { - $this->user=$user; - $this->navs=$this->getNavs(); - if($active) + $this->user = $user; + $this->navs = $this->getNavs(); + if ($active) $this->setActiveNav($active); } @@ -283,14 +343,14 @@ function getRegisteredApps() { return Application::getClientApps(); } - function setActiveNav($nav){ + 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; + 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; + $this->activenav = $nav; return true; } @@ -298,48 +358,52 @@ function setActiveNav($nav){ return false; } - function getNavLinks(){ + function getNavLinks() { global $cfg; //Paths are based on the root dir. - if(!$this->navs){ + 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['home'] = array('desc' => __('Support Center Home'), 'href' => 'index.php', + 'title' => ''); + if ($cfg && $cfg->isKnowledgebaseEnabled()) + $navs['kb'] = array('desc' => __('Knowledgebase'), 'href' => 'kb/index.php', + 'title' => ''); // Show the "Open New Ticket" link unless BOTH client // registration is disabled and client login is required for new // tickets. In such a case, creating a ticket would not be // possible for web clients. - if ($cfg->getClientRegistrationMode() != 'disabled' - || !$cfg->isClientLoginRequired()) - $navs['new']=array('desc'=>'Open New Ticket','href'=>'open.php','title'=>''); - if($user && $user->isValid()) { - if(!$user->isGuest()) { - $navs['tickets']=array('desc'=>sprintf('Tickets (%d)',$user->getNumTickets()), - 'href'=>'tickets.php', - 'title'=>'Show all tickets'); + if ($cfg->getClientRegistrationMode() != 'disabled' || !$cfg->isClientLoginRequired()) + $navs['new'] = array('desc' => __('Open a New Ticket'), 'href' => 'open.php', + 'title' => ''); + if ($user && $user->isValid()) { + if (!$user->isGuest()) { + $navs['tickets'] = array('desc' => sprintf(__('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'); + $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'=>''); + $navs['status'] = array('desc' => __('Check Ticket Status'), 'href' => 'view.php', + 'title' => ''); } - foreach ($this->getRegisteredApps() as $app) - $navs[] = $app; - $this->navs=$navs; + $navs[] = $app; + $this->navs = $navs; } return $this->navs; } - function getNavs(){ + function getNavs() { return $this->getNavLinks(); } diff --git a/plugin.php b/plugin.php index 96b3677..c5dec34 100644 --- a/plugin.php +++ b/plugin.php @@ -15,7 +15,7 @@ set_include_path(get_include_path().PATH_SEPARATOR.dirname(__file__).'/include'); return array( 'id' => 'xpresstek:equipment', # notrans - 'version' => '0.3', + 'version' => '0.4', 'name' => 'Equipment Manager', 'author' => 'Alex Pavlunenko', 'description' => 'Provides equipment asset management capability.',