diff --git a/include/class.nav.php b/include/class.nav.php index 96e2aa19232372c4a1ab95251b85deaa205b0cb7..47534817eb4c26200de9c3afd1cde01400322308 100644 --- a/include/class.nav.php +++ b/include/class.nav.php @@ -43,7 +43,7 @@ class StaffNav { return (!$this->isAdminPanel()); } - function setTabActive($tab){ + function setTabActive($tab, $menu=''){ if($this->tabs[$tab]){ $this->tabs[$tab]['active']=true; @@ -51,6 +51,7 @@ class StaffNav { $this->tabs[$this->activetab]['active']=false; $this->activetab=$tab; + if($menu) $this->setActiveSubMenu($menu, $tab); return true; } @@ -58,16 +59,25 @@ class StaffNav { return false; } - function setActiveTab($tab){ - return $this->setTabActive($tab); + function setActiveTab($tab, $menu=''){ + return $this->setTabActive($tab, $menu); } function getActiveTab(){ return $this->activetab; } - function setActiveSubMenu($mid) { - $this->activeMenu = $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; + + $this->activeMenu = $k+1; + break; + } + } } function getActiveMenu() { @@ -183,12 +193,12 @@ class AdminNav extends StaffNav{ $subnav[]=array('desc'=>'System Logs','href'=>'logs.php','iconclass'=>'logs'); break; case 'settings': - $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'); + $subnav[]=array('desc'=>'System Preferences','href'=>'settings.php?t=system','iconclass'=>'preferences'); + $subnav[]=array('desc'=>'Tickets','href'=>'settings.php?t=tickets','iconclass'=>'preferences'); + $subnav[]=array('desc'=>'Emails','href'=>'settings.php?t=emails','iconclass'=>'preferences'); + $subnav[]=array('desc'=>'Knowledgebase','href'=>'settings.php?t=kb','iconclass'=>'preferences'); + $subnav[]=array('desc'=>'Autoresponder','href'=>'settings.php?t=autoresp','iconclass'=>'preferences'); + $subnav[]=array('desc'=>'Alerts & Notices','href'=>'settings.php?t=alerts','iconclass'=>'preferences'); break; case 'manage': $subnav[]=array('desc'=>'Help Topics','href'=>'helptopics.php','iconclass'=>'helpTopics'); diff --git a/scp/settings.php b/scp/settings.php index 9058fe42ca52c4f9b428bbc52f2ed2cb61f80a8a..0a3f97a912d8fdf6d92dc42ddf035f36bc61b12f 100644 --- a/scp/settings.php +++ b/scp/settings.php @@ -15,49 +15,28 @@ **********************************************************************/ require('admin.inc.php'); $errors=array(); -$SettingOptions=array('general'=>'General Settings', - 'dates'=>'Date and Time Options', - 'tickets'=>'Ticket Settings and Options', - 'emails'=>'Email Settings', - 'attachments'=>'Attachments Settings', - 'kb'=>'Knowledgebase Settings', - 'autoresponders'=>'Autoresponder Settings', - 'alerts'=>'Alerts and Notices Settings'); - +$settingOptions=array( + 'system' => 'System Settings', + 'tickets' => 'Ticket Settings and Options', + 'emails' => 'Email Settings', + 'kb' => 'Knowledgebase Settings', + 'autoresp' => 'Autoresponder Settings', + 'alerts' => 'Alerts and Notices Settings'); //Handle a POST. -if($_POST && !$errors){ - $errors=array(); - if($cfg && $cfg->updateSettings($_POST,$errors)){ - $msg=Format::htmlchars($SettingOptions[$_POST['t']]).' Updated Successfully'; +if($_POST && !$errors) { + if($cfg && $cfg->updateSettings($_POST,$errors)) { + $msg=Format::htmlchars($settingOptions[$_POST['t']]).' Updated Successfully'; $cfg->reload(); - }elseif(!$errors['err']){ - $errors['err']='Unable to update system settings - correct any errors below and try again'; + } elseif(!$errors['err']) { + $errors['err']='Unable to update settings - correct errors below and try again'; } } -$target=($_REQUEST['t'] && $SettingOptions[$_REQUEST['t']])?$_REQUEST['t']:'general'; - -$nav->setTabActive('settings'); -require(STAFFINC_DIR.'header.inc.php'); -?> -<h2>System Preferences and Settings - <span>osTicket (v<?php echo $cfg->getVersion(); ?>)</span></h2> -<div style="padding-top:10px;padding-bottom:5px;"> - <form method="get" action="settings.php"> - Setting Option: - <select id="setting_options" name="t" style="width:300px;"> - <option value="">— Select Setting Group —</option> - <?php - foreach($SettingOptions as $k=>$v) { - $sel=($target==$k)?'selected="selected"':''; - echo sprintf('<option value="%s" %s>%s</option>',$k,$sel,$v); - } - ?> - </select> - <input type="submit" value="Go"> - </form> -</div> -<?php +$target=($_REQUEST['t'] && $settingOptions[$_REQUEST['t']])?$_REQUEST['t']:'system'; $config=($errors && $_POST)?Format::input($_POST):Format::htmlchars($cfg->getConfigInfo()); + +$nav->setTabActive('settings', ('settings.php?t='.$target)); +require_once(STAFFINC_DIR.'header.inc.php'); include_once(STAFFINC_DIR."settings-$target.inc.php"); include_once(STAFFINC_DIR.'footer.inc.php'); ?>