Browse Source

Save active tab in cookie in order to restore after page refresh

Malishev Dmitry 14 năm trước cách đây
mục cha
commit
f651c68a6a

+ 1 - 1
web/dispatch.php

@@ -1,6 +1,6 @@
 <?php
 <?php
 
 
-require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'vesta/core/utils/error_logger.php'
+require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'vesta/core/utils/error_logger.php';
 require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'vesta/app.init.php';
 require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'vesta/app.init.php';
 
 
 ?>
 ?>

+ 1 - 0
web/index.html

@@ -204,6 +204,7 @@
        
        
 
 
         <!-- script type="text/javascript" src="js/lib/jquery-1.4.4.min.js"></script -->
         <!-- script type="text/javascript" src="js/lib/jquery-1.4.4.min.js"></script -->
+        <script type="text/javascript" src="js/lib/cookie.js"></script>
         <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.js"></script>
         <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.js"></script>
         <script type="text/javascript" src="js/date_format.js"></script>
         <script type="text/javascript" src="js/date_format.js"></script>
         <script type="text/javascript" src="js/lib/custom-form-elements.js"></script>
         <script type="text/javascript" src="js/lib/custom-form-elements.js"></script>

+ 15 - 1
web/js/__init__.js

@@ -1,7 +1,21 @@
 $(document).ready(function(){
 $(document).ready(function(){
     try{
     try{
         App.Utils.detectBrowser();
         App.Utils.detectBrowser();
-        App.Env.world = 'CRON';
+        
+        if ('undefined' != typeof App.Tmp.loadTAB) {
+            App.Env.world = App.Tmp.loadTAB;
+        }
+        
+        if ('undefined' == typeof App.Tmp.loadTAB && cookieEnabled()) {
+            var tab = getCookie('tab');
+            if (null != tab && $.inArray(tab, App.Constants.TABS)) {
+                App.Env.world = tab;
+            }
+            else {
+                App.Env.world = App.Constants.TABS[0];
+            }
+        }
+        
         App.Pages.init();
         App.Pages.init();
         App.Ref.init();
         App.Ref.init();
 
 

+ 4 - 11
web/js/app.js

@@ -78,7 +78,9 @@ var App = {
     Core: {},
     Core: {},
     Bash: {},
     Bash: {},
     Console: {},
     Console: {},
-    Constants: {},
+    Constants: {
+        TABS: ['USER','WEB_DOMAIN','MAIL','DB','DNS','IP','CRON']
+    },
     Actions: {},
     Actions: {},
     Helpers: {},
     Helpers: {},
     Filters: {},
     Filters: {},
@@ -175,16 +177,7 @@ App.Ajax.request = function(jedi_method, data, callback)
 {   
 {   
     App.Helpers.beforeAjax(jedi_method);
     App.Helpers.beforeAjax(jedi_method);
     $.ajax({
     $.ajax({
-        url: function() {
-            var url_parts = location.href.replace('#', '').split('/');
-            if (url_parts[url_parts.length -1] == 'index.html') {
-                url_parts[url_parts.length -1] = 'dispatch.php';
-            }
-            else {
-                url_parts.push('dispatch.php');
-            }
-            return url_parts.join('/');
-        }(),
+        url: App.Helpers.getBackendUrl(),
         global: false,
         global: false,
         type: data.request_method || "POST",
         type: data.request_method || "POST",
         data: $.extend(data, {'jedi_method': jedi_method}),
         data: $.extend(data, {'jedi_method': jedi_method}),

+ 23 - 0
web/js/helpers.js

@@ -264,3 +264,26 @@ App.Helpers.closeInnerPopup = function(evt)
 {
 {
     $('#inner-popup').remove();
     $('#inner-popup').remove();
 }
 }
+
+App.Helpers.getBackendUrl = function()
+{
+    var url_parts = location.href.split('#');
+    if (url_parts.length > 1) {
+        var tab = url_parts[url_parts.length - 1];
+        if ($.inArray(tab, App.Constants.TABS) != -1) {
+            App.Tmp.loadTAB = tab;
+        }
+    }
+
+    var url_parts = location.href.split('?', 1);
+    var url = url_parts[0];
+    url_parts = url.split('/');
+    if (url_parts[url_parts.length -1] == 'index.html') {
+        url_parts[url_parts.length -1] = 'dispatch.php';
+    }
+    else {
+        url_parts.push('dispatch.php');
+    }
+
+    return url_parts.join('/');
+}

+ 4 - 0
web/js/pages.js

@@ -8,6 +8,10 @@ App.Pages.init = function(){
     
     
     $('.section.active').removeClass('active');
     $('.section.active').removeClass('active');
     $('#'+App.Env.world).addClass('active');
     $('#'+App.Env.world).addClass('active');
+    
+    if (cookieEnabled()) {
+        setCookie('tab', App.Env.world);
+    }
 }
 }
 
 
 App.Pages.prepareHTML = function()
 App.Pages.prepareHTML = function()

+ 5 - 0
web/vesta/api/AjaxHandler.php

@@ -24,6 +24,11 @@ class AjaxHandler {
     {
     {
         return null == self::$instance ? self::$instance = new self() : self::$instance;
         return null == self::$instance ? self::$instance = new self() : self::$instance;
     }
     }
+    
+    public function getLoggedUser()
+    {
+        return VestaSession::getInstance()->getUser();
+    }
 
 
     /**
     /**
      * Called functions should reply in the following way
      * Called functions should reply in the following way

+ 45 - 52
web/vesta/api/USER.class.php

@@ -17,7 +17,7 @@ class USER extends AjaxHandler
      * @param Request $request
      * @param Request $request
      * @return string - Ajax Reply
      * @return string - Ajax Reply
      */
      */
-    public function getListExecute($request) 
+    public function getListExecute(Request $request) 
     {
     {
         $reply  = array();
         $reply  = array();
         $result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type')));
         $result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type')));
@@ -34,40 +34,40 @@ class USER extends AjaxHandler
             $reply[$user] = array(
             $reply[$user] = array(
                                 "LOGIN_NAME"            => $user,
                                 "LOGIN_NAME"            => $user,
                                 "FULLNAME"              => $fullname,                                     // TODO skid
                                 "FULLNAME"              => $fullname,                                     // TODO skid
-                                    "PACKAGE"               => $details['PACKAGE'],
-                                    "WEB_DOMAINS"           => $details['WEB_DOMAINS'],
-                                    "WEB_SSL"               => $details['WEB_SSL'],
-                                    "WEB_ALIASES"           => $details['WEB_ALIASES'],
-                                    "DATABASES"             => $details['DATABASES'],
-                                    "MAIL_DOMAINS"          => $details['MAIL_DOMAINS'],
-                                    "MAIL_BOXES"            => $details['MAIL_BOXES'],
-                                    "MAIL_FORWARDERS"       => $details['MAIL_FORWARDERS'],
-                                    "DNS_DOMAINS"           => $details['DNS_DOMAINS'],
-                                    "DISK_QUOTA"            => $details['DISK_QUOTA'],//$disk_quota,
-                                    "BANDWIDTH"             => $details['BANDWIDTH'],//$bandwidth,                                   
-                                    "NS_LIST"               => array($details['NS1'], $details['NS2']),      // TODO skid
-                                    "SHELL"                 => $details['"SHELL'],
-                                    "BACKUPS"               => $details['BACKUPS'],
-                                    "WEB_TPL"               => $details['WEB_TPL'],
-                                    "MAX_CHILDS"            => $details['MAX_CHILDS'],
-                                    "SUSPENDED"             => $details['SUSPENDED'],
-                                    "OWNER"                 => $details['OWNER'],
-                                    "ROLE"                  => $details['ROLE'],
-                                    "IP_OWNED"              => $details['IP_OWNED'],
-                                    "U_CHILDS"              => $details['U_CHILDS'],
-                                    "U_DISK"                => $details['U_DISK'],//$u_disk,
-                                    "U_BANDWIDTH"           => $details['U_BANDWIDTH'],//$u_bandwidth, 
-                                    "U_WEB_DOMAINS"         => $details['U_WEB_DOMAINS'],
-                                    "U_WEB_SSL"             => $details['U_WEB_SSL'],
-                                    "U_DNS_DOMAINS"         => $details['U_DNS_DOMAINS'],
-                                    "U_DATABASES"           => $details['U_DATABASES'],
-                                    "U_MAIL_DOMAINS"        => $details['U_MAIL_DOMAINS'],
-                                    "CONTACT"               => $details['CONTACT'],
-                                    "DATE"                  => $details['DATE'],
+                                "PACKAGE"               => $details['PACKAGE'],
+                                "WEB_DOMAINS"           => $details['WEB_DOMAINS'],
+                                "WEB_SSL"               => $details['WEB_SSL'],
+                                "WEB_ALIASES"           => $details['WEB_ALIASES'],
+                                "DATABASES"             => $details['DATABASES'],
+                                "MAIL_DOMAINS"          => $details['MAIL_DOMAINS'],
+                                "MAIL_BOXES"            => $details['MAIL_BOXES'],
+                                "MAIL_FORWARDERS"       => $details['MAIL_FORWARDERS'],
+                                "DNS_DOMAINS"           => $details['DNS_DOMAINS'],
+                                "DISK_QUOTA"            => $details['DISK_QUOTA'],//$disk_quota,
+                                "BANDWIDTH"             => $details['BANDWIDTH'],//$bandwidth,                                   
+                                "NS_LIST"               => array($details['NS1'], $details['NS2']),      // TODO skid
+                                "SHELL"                 => $details['"SHELL'],
+                                "BACKUPS"               => $details['BACKUPS'],
+                                "WEB_TPL"               => $details['WEB_TPL'],
+                                "MAX_CHILDS"            => $details['MAX_CHILDS'],
+                                "SUSPENDED"             => $details['SUSPENDED'],
+                                "OWNER"                 => $details['OWNER'],
+                                "ROLE"                  => $details['ROLE'],
+                                "IP_OWNED"              => $details['IP_OWNED'],
+                                "U_CHILDS"              => $details['U_CHILDS'],
+                                "U_DISK"                => $details['U_DISK'],//$u_disk,
+                                "U_BANDWIDTH"           => $details['U_BANDWIDTH'],//$u_bandwidth, 
+                                "U_WEB_DOMAINS"         => $details['U_WEB_DOMAINS'],
+                                "U_WEB_SSL"             => $details['U_WEB_SSL'],
+                                "U_DNS_DOMAINS"         => $details['U_DNS_DOMAINS'],
+                                "U_DATABASES"           => $details['U_DATABASES'],
+                                "U_MAIL_DOMAINS"        => $details['U_MAIL_DOMAINS'],
+                                "CONTACT"               => $details['CONTACT'],
+                                "DATE"                  => $details['DATE'],
 
 
-                                    "U_MAIL_BOXES"          => rand(1, 10),  // TODO: skid
-                                    "U_MAIL_FORWARDERS"     => rand(1, 10),  // TODO: skid
-                                    "REPORTS_ENABLED"       => 'enabled'     // TODO: skid
+                                "U_MAIL_BOXES"          => rand(1, 10),  // TODO: skid
+                                "U_MAIL_FORWARDERS"     => rand(1, 10),  // TODO: skid
+                                "REPORTS_ENABLED"       => 'enabled'     // TODO: skid
                             );
                             );
             }
             }
 
 
@@ -80,26 +80,19 @@ class USER extends AjaxHandler
      * @param Request $request
      * @param Request $request
      * @return string - Ajax Reply
      * @return string - Ajax Reply
      */
      */
-    public function addExecute($_spell = FALSE) 
+    public function addExecute(Request $request) 
     {
     {
-        $r = new Request();
-        if ($_spell) {
-            $_s = $_spell;
-        }
-        else {
-            $_s = $r->getSpell();
-        }
-
-        $_user = 'vesta';        
+        $spell  = $request->getParameter('spell');
+        $user   = $this->getLoggedUser(); 
         $params = array(
         $params = array(
-                    'USER'     => $_s['USER'],
-                    'PASSWORD' => $_s['PASSWORD'],
-                    'EMAIL'    => $_s['EMAIL'],
-                    'ROLE'     => $_s['ROLE'],
-                    'OWNER'    => $_user,
-                    'PACKAGE'  => $_s['PACKAGE'],
-                    'NS1'      => $_s['NS1'],
-                    'NS2'      => $_s['NS2']
+                    'USER'     => $spell['USER'],
+                    'PASSWORD' => $spell['PASSWORD'],
+                    'EMAIL'    => $spell['EMAIL'],
+                    'ROLE'     => $spell['ROLE'],
+                    'OWNER'    => $user['uid'],
+                    'PACKAGE'  => $spell['PACKAGE'],
+                    'NS1'      => $spell['NS1'],
+                    'NS2'      => $spell['NS2']
                   );
                   );
     
     
         $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params);
         $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params);

+ 1 - 0
web/vesta/app.init.php

@@ -3,6 +3,7 @@
 define('V_ROOT_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 define('V_ROOT_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 
 
 require_once V_ROOT_DIR . 'config/Config.class.php';
 require_once V_ROOT_DIR . 'config/Config.class.php';
+require_once V_ROOT_DIR . 'core/VestaSession.class.php';
 require_once V_ROOT_DIR . 'core/Vesta.class.php';
 require_once V_ROOT_DIR . 'core/Vesta.class.php';
 require_once V_ROOT_DIR . 'core/exceptions/SystemException.class.php';
 require_once V_ROOT_DIR . 'core/exceptions/SystemException.class.php';
 require_once V_ROOT_DIR . 'core/exceptions/ProtectionException.class.php';
 require_once V_ROOT_DIR . 'core/exceptions/ProtectionException.class.php';