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';