diff --git a/web/dispatch.php b/web/dispatch.php index e6a31ceb..6733f2d7 100644 --- a/web/dispatch.php +++ b/web/dispatch.php @@ -1,6 +1,6 @@ diff --git a/web/index.html b/web/index.html index f32a88a6..760a2305 100644 --- a/web/index.html +++ b/web/index.html @@ -204,6 +204,7 @@ + diff --git a/web/js/__init__.js b/web/js/__init__.js index 655eee05..c8bbeb61 100644 --- a/web/js/__init__.js +++ b/web/js/__init__.js @@ -1,7 +1,21 @@ $(document).ready(function(){ try{ 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.Ref.init(); diff --git a/web/js/app.js b/web/js/app.js index aa7ac706..373e403f 100644 --- a/web/js/app.js +++ b/web/js/app.js @@ -78,7 +78,9 @@ var App = { Core: {}, Bash: {}, Console: {}, - Constants: {}, + Constants: { + TABS: ['USER','WEB_DOMAIN','MAIL','DB','DNS','IP','CRON'] + }, Actions: {}, Helpers: {}, Filters: {}, @@ -175,16 +177,7 @@ App.Ajax.request = function(jedi_method, data, callback) { App.Helpers.beforeAjax(jedi_method); $.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, type: data.request_method || "POST", data: $.extend(data, {'jedi_method': jedi_method}), diff --git a/web/js/helpers.js b/web/js/helpers.js index 00d33379..547c583d 100644 --- a/web/js/helpers.js +++ b/web/js/helpers.js @@ -264,3 +264,26 @@ App.Helpers.closeInnerPopup = function(evt) { $('#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('/'); +} diff --git a/web/js/pages.js b/web/js/pages.js index 63089ff5..631f3606 100644 --- a/web/js/pages.js +++ b/web/js/pages.js @@ -8,6 +8,10 @@ App.Pages.init = function(){ $('.section.active').removeClass('active'); $('#'+App.Env.world).addClass('active'); + + if (cookieEnabled()) { + setCookie('tab', App.Env.world); + } } App.Pages.prepareHTML = function() diff --git a/web/vesta/api/AjaxHandler.php b/web/vesta/api/AjaxHandler.php index 5bbc8899..827b1328 100644 --- a/web/vesta/api/AjaxHandler.php +++ b/web/vesta/api/AjaxHandler.php @@ -24,6 +24,11 @@ class AjaxHandler { { 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 diff --git a/web/vesta/api/USER.class.php b/web/vesta/api/USER.class.php index 77dac79e..57089160 100644 --- a/web/vesta/api/USER.class.php +++ b/web/vesta/api/USER.class.php @@ -17,7 +17,7 @@ class USER extends AjaxHandler * @param Request $request * @return string - Ajax Reply */ - public function getListExecute($request) + public function getListExecute(Request $request) { $reply = array(); $result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type'))); @@ -34,40 +34,40 @@ class USER extends AjaxHandler $reply[$user] = array( "LOGIN_NAME" => $user, "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 * @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( - '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); diff --git a/web/vesta/app.init.php b/web/vesta/app.init.php index 835d44ca..a4aa2976 100644 --- a/web/vesta/app.init.php +++ b/web/vesta/app.init.php @@ -3,6 +3,7 @@ define('V_ROOT_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); 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/exceptions/SystemException.class.php'; require_once V_ROOT_DIR . 'core/exceptions/ProtectionException.class.php';