From 17e2dcca83e32a889e4c564f1c70c5692357a11e Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 23 Jul 2014 14:28:29 -0500
Subject: [PATCH] i18n: Language change takes effect immediately

---
 include/class.nav.php   | 21 ++++++++++++++++-----
 include/class.staff.php |  1 +
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/include/class.nav.php b/include/class.nav.php
index 644a00f6c..6f72add47 100644
--- a/include/class.nav.php
+++ b/include/class.nav.php
@@ -16,11 +16,9 @@
 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;
@@ -28,8 +26,21 @@ class StaffNav {
     function StaffNav($staff, $panel='staff'){
         $this->staff=$staff;
         $this->panel=strtolower($panel);
-        $this->tabs=$this->getTabs();
-        $this->submenus=$this->getSubMenus();
+    }
+
+    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(){
diff --git a/include/class.staff.php b/include/class.staff.php
index 836fa09de..fa776422d 100644
--- a/include/class.staff.php
+++ b/include/class.staff.php
@@ -500,6 +500,7 @@ class Staff extends AuthenticatedUser {
 
         $this->config->set('lang', $vars['lang']);
         $_SESSION['staff:lang'] = null;
+        TextDomain::configureForUser($this);
 
         $sql='UPDATE '.STAFF_TABLE.' SET updated=NOW() '
             .' ,firstname='.db_input($vars['firstname'])
-- 
GitLab