diff --git a/web/js/__init__.js b/web/js/__init__.js
index a475c716..0926352f 100644
--- a/web/js/__init__.js
+++ b/web/js/__init__.js
@@ -11,9 +11,9 @@ $('document').ready(function() {
App.Utils.detectBrowser();
App.Ref.init();
- App.Env.world = 'USER';
+ //App.Env.world = 'USER';
// Disabled cookie tab restoring. Enable if needed
- /*if ('undefined' != typeof App.Tmp.loadTAB) {
+ if ('undefined' != typeof App.Tmp.loadTAB) {
App.Env.world = App.Tmp.loadTAB;
}
@@ -25,7 +25,7 @@ $('document').ready(function() {
else {
App.Env.world = App.Constants.TABS[0];
}
- }*/
+ }
App.Pages.init();
App.Core.listen();
diff --git a/web/js/actions.js b/web/js/actions.js
index ed081bde..7a3aa056 100644
--- a/web/js/actions.js
+++ b/web/js/actions.js
@@ -1,3 +1,21 @@
+App.Actions.toggle_suspend = function(evt)
+{
+ var elm = $(evt.target);
+ var ref = elm.parents('.form');
+ ref.removeClass('form-suspended');
+ fb.warn(ref);
+ var ref_checkbox = ref.find('input[name="SUSPEND"]');
+ ref_checkbox.val() == 'on' ? ref_checkbox.val('off') : ref_checkbox.val('on'); // switch state
+ if (ref_checkbox.val() == 'on') { // set class on new state
+ ref.addClass('form-suspended');
+ fb.warn('SUSP');
+ }
+ else {
+ ref.removeClass('form-suspended');
+ fb.warn('UNSUSP');
+ }
+}
+
App.Actions.toggle_custom_select = function(evt)
{
var elm = $(evt.target);
@@ -54,10 +72,11 @@ App.Actions.back_to_login = function()
{
$('body').addClass('page-auth');
var tpl = App.Templates.get('login', 'popup');
- tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo.png'));
+ tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo-2011-12-14.png'));
tpl.set(':YEAR', new Date().getFullYear());
tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
- tpl.set(':EMAIL', App.Settings.VestaAbout.company_name);
+ tpl.set(':EMAIL', App.Settings.VestaAbout.company_email);
+ tpl.set(':PRODUCT_NAME', App.Settings.VestaAbout.company_name);
tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
$('body').prepend(tpl.finalize());
$('#change-psw-block').remove();
@@ -73,12 +92,13 @@ App.Actions.change_password = function(evt)
}
var tpl = App.Templates.get('change_psw', 'popup');
- tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo.png'));
+ tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo-2011-12-14.png'));
tpl.set(':YEAR', new Date().getFullYear());
tpl.set(':CAPTCHA_URL', App.Helpers.generateUrl('captcha.php?')+Math.floor(Math.random() * 9999));
tpl.set(':CAPTCHA_URL_2', App.Helpers.generateUrl('captcha.php'));
tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
- tpl.set(':EMAIL', App.Settings.VestaAbout.company_name);
+ tpl.set(':EMAIL', App.Settings.VestaAbout.company_email);
+ tpl.set(':PRODUCT_NAME', App.Settings.VestaAbout.company_name);
tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
$('#auth-block').remove();
$('body').prepend(tpl.finalize());
@@ -104,10 +124,11 @@ App.Actions.authorize = function()
$('#page').addClass('hidden');
$('body').addClass('page-auth');
var tpl = App.Templates.get('login', 'popup');
- tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo.png'));
+ tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo-2011-12-14.png'));
tpl.set(':YEAR', new Date().getFullYear());
tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
- tpl.set(':EMAIL', App.Settings.VestaAbout.company_name);
+ tpl.set(':EMAIL', App.Settings.VestaAbout.company_email);
+ tpl.set(':PRODUCT_NAME', App.Settings.VestaAbout.company_name);
tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
$('body').prepend(tpl.finalize());
$(document).ready(function(){
@@ -123,12 +144,15 @@ App.Actions.authorize = function()
App.Actions.new_entry = function() {
if ('undefined' != typeof App.Pages[App.Env.world].new_entry) {fb.log(1);
App.Pages[App.Env.world].new_entry();
- } else {fb.log(2);
+ } else {
var form_id = App.Constants[App.Env.world + '_FORM_ID'];
$('#'+form_id).remove();
var build_method = App.Env.getWorldName() + '_form';
var tpl = App.HTML.Build[build_method]({}, form_id);
- App.Ref.CONTENT.prepend(tpl);
+ var box = $('
').html(tpl);
+ $(box).find('.suspended').addClass('hidden');
+ App.Ref.CONTENT.prepend($(box).html());
+
App.Helpers.updateScreen();
}
}
@@ -158,7 +182,7 @@ App.Actions.delete_entry = function(evt)
return;
}
var elm = $(evt.target);
- var elm = elm.hasClass('row') ? elm : elm.parents('.row');
+ var elm = elm.hasClass('form') ? elm : elm.parents('.form');
App.Model.remove(App.Env.world, elm);
}
@@ -182,18 +206,25 @@ App.Actions.view_template_settings = function(evt)
var elm = $(evt.target);
var ref = elm.hasClass('tpl-item') ? elm : elm.prev('.tpl-item');
var tpl_name = $(ref).val() || $(ref).text();
- fb.log(tpl_name);
- App.Helpers.openInnerPopup(elm, App.Env.initialParams.WEB_DOMAIN.TPL[tpl_name].DESCR || tpl_name);
+ App.Helpers.openInnerPopup(elm, App.Env.initialParams.WEB_DOMAIN.TPL[tpl_name].DESCR || tpl_name, 'Template Settings');
}
App.Actions.view_dns_template_settings = function(evt)
+{
+ var elm = $(evt.target);
+ var ref = elm.hasClass('tpl-item') ? elm : elm.prev('.tpl-item');
+ var tpl_name = $(ref).val() || $(ref).text();
+ App.Helpers.openInnerPopup(elm, App.Env.initialParams.DNS.TPL[tpl_name].DESCR || tpl_name, 'Template Settings');
+}
+
+/*App.Actions.view_dns_template_settings = function(evt)
{
var elm = $(evt.target);
var ref = elm.prev('.tpl-item');
var tpl_name = $(ref).val() || $(ref).text();
- fb.log(tpl_name);
- App.Helpers.openInnerPopup(elm, App.Env.initialParams.DNS.TPL[tpl_name].DESCR || tpl_name);
-}
+
+ App.Helpers.openInnerPopup(elm, App.Env.initialParams.DNS.TPL[tpl_name].DESCR || tpl_name, '');
+}*/
App.Actions.add_subrecord_dns = function(evt)
{
@@ -392,14 +423,16 @@ App.Actions.delete_subentry = function(evt)
$(ref).remove();
}
-App.Actions.generate_pass = function()
+App.Actions.generate_pass = function(evt)
{
- $('.password').val(App.Helpers.generatePassword());
+ var elm = $(evt.target);
+ var ref = elm.parents('.form-row');
+ $('.password', ref).val(App.Helpers.generatePassword());
}
App.Actions.toggle_section = function(evt)
{
- var elm = $(evt.target);
+ var elm = $(evt.target);
var ref = $(elm).parents('.form-options-group:first');
fb.log(ref);
if ($('.sub_section:first', ref).hasClass('hidden')) {
@@ -420,7 +453,7 @@ App.Actions.close_inner_popup = function(evt)
App.Actions.open_inner_popup = function(evt)
{
var elm = $(evt.target);
- App.Helpers.openInnerPopup(elm, $(elm).next('.inner-popup-html').val());
+ App.Helpers.openInnerPopup(elm, $(elm).next('.inner-popup-html').val(), 'Details');
}
App.Actions.add_db_user = function(evt)
@@ -488,7 +521,7 @@ App.Actions.delete_ns = function(evt)
App.Actions.view_full_ns_list = function(evt)
{
var elm = $(evt.target);
- App.Helpers.openInnerPopup(elm, $(elm).parents('.prop-box').find('.ns-full-list:first').html());
+ App.Helpers.openInnerPopup(elm, $(elm).parents('.prop-box').find('.ns-full-list:first').html(), 'NS list');
}
App.Actions.view_template_info = function(evt)
@@ -503,7 +536,7 @@ App.Actions.view_template_info = function(evt)
$.each(reply.data, function(key) {
html += '
'+key+': '+reply.data[key]+'';
});
- App.Helpers.openInnerPopup(elm, '
');
+ App.Helpers.openInnerPopup(elm, '
', 'Template Info');
}
});
}
@@ -522,13 +555,13 @@ App.Actions.toggle_stats_block = function(evt)
App.Actions.exec_v_console = function(evt)
{
evt.preventDefault();
- App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases');
+ App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases', 'Details');
}
App.Actions.view_profile_settings = function(evt)
{
evt.preventDefault();
- App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases');
+ App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases', 'Details');
}
App.Actions.select_all = function(evt)
diff --git a/web/js/app.js b/web/js/app.js
index 63f3f48b..7af8bc35 100644
--- a/web/js/app.js
+++ b/web/js/app.js
@@ -93,7 +93,9 @@ var App = {
DB: {},
DNS: {},
IP: {},
- CRON: {}
+ CRON: {},
+ BACKUPS: {},
+ STATS: {}
}
},
Messages: {},
@@ -116,7 +118,9 @@ var App = {
DB: {},
DNS: {},
IP: {},
- CRON: {}
+ CRON: {},
+ BACKUPS: {},
+ STATS: {}
},
Ref: {},
Tmp: { AJAX_SYNCRONOUS:{} },
diff --git a/web/js/helpers.js b/web/js/helpers.js
index 8ed6a0fb..df8fd806 100644
--- a/web/js/helpers.js
+++ b/web/js/helpers.js
@@ -38,6 +38,12 @@ App.Helpers.getHumanTabName = function()
if (App.Env.world == 'DB') {
return 'DATABASE';
}
+ if (App.Env.world == 'BACKUPS') {
+ return 'BACKUP';
+ }
+ if (App.Env.world == 'STATS') {
+ return 'STATS';
+ }
return App.Env.world;
}
@@ -241,11 +247,11 @@ App.Helpers.getFormValuesFromElement = function(ref)
App.Helpers.updateScreen = function()
{
- App.Ajax.request('MAIN.getInitial', {}, function(reply){
+ /*App.Ajax.request('MAIN.getInitial', {}, function(reply){
App.Env.initialParams = reply.data;
App.Helpers.updateInitial();
- });
- $('.row:first').addClass('first-row');
+ });*/
+ $('.row:first').addClass('first-row');
Custom.init();
}
@@ -256,7 +262,7 @@ App.Helpers.alert = function(msg)
App.Helpers.isEmpty = function(o)
{
- return jQuery.isEmptyObject(o);
+ return 'undefined' == typeof o ? true : jQuery.isEmptyObject(o);
}
App.Helpers.liveValidate = function()
@@ -283,8 +289,9 @@ App.Helpers.Warn = function(msg)
alert(msg);
}
-App.Helpers.openInnerPopup = function(elm, html)
+App.Helpers.openInnerPopup = function(elm, html, title)
{
+ var title = title || '';
App.Helpers.closeInnerPopup();
var offset = $(elm).offset();
@@ -292,6 +299,7 @@ App.Helpers.openInnerPopup = function(elm, html)
tpl.set(':CONTENT', html);
tpl.set(':LEFT', offset.left);
tpl.set(':TOP', offset.top);
+ tpl.set(':POPUP_TITLE', title);
$(document.body).append(tpl.finalize());
}
diff --git a/web/js/html.js b/web/js/html.js
index 40168c4d..9a2125c4 100644
--- a/web/js/html.js
+++ b/web/js/html.js
@@ -1,192 +1,267 @@
-App.HTML.setTplKeys = function(tpl, o, empty)
-{
+App.HTML.setTplKeys = function (tpl, o, empty) {
var empty = empty || '';
fb.log(empty);
tpl.set(':source', $.toJSON(o).replace(/'/gi, "\\'"))
- $(o).each(function(i, object)
- {
- $.each(o, function(key)
- {
+ $(o).each(function (i, object) {
+ $.each(o, function (key) {
var val = o[key];
if (empty == true) {
tpl.set(':' + key, val || '');
- }
- else {
+ } else {
tpl.set(':' + key, val || '');
}
});
});
-
return tpl;
}
-App.HTML.makeDatabases = function(databases)
-{
- var acc = [];
- $(databases).each(function(i, o)
- {
- var tpl = App.Templates.get('database', 'database');
- tpl.set(':name', o.Database);
- tpl.set(':db_name', o.Database);
- acc[acc.length++] = tpl.finalize();
- });
+//
+// BUILD FORMS
+//
- return acc.done();
-}
-
-App.HTML.makeDbTableList = function(data)
-{
- var acc = [];
- $(data).each(function(i, o)
- {
- var name = App.Helpers.getFirstValue(o);
- var tpl = App.Templates.get('database_table', 'database');
- tpl.set(':name', name);
- tpl.set(':table_name', name);
- acc[acc.length++] = tpl.finalize();
- });
-
- return acc.done();
-}
-
-App.HTML.makeDbFieldsList = function(data)
-{
- var acc = [];
- $(data).each(function(i, o)
- {
- var details = [o['Type'], o['Null'], o['Key'], o['Default'], o['Extra']].join(' ');
- var tpl = App.Templates.get('database_field', 'database');
- tpl.set(':name', o.Field);
- tpl.set(':details', details);
- acc[acc.length++] = tpl.finalize();
- });
-
- return acc.done();
-}
-
-App.HTML.Build.dns_form = function(options, id)
-{
- if('undefined' == typeof App.Env.initialParams) {
+App.HTML.Build.dns_form = function (options, id) {
+ if ('undefined' == typeof App.Env.initialParams) {
return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.');
}
var tpl = App.Templates.get('FORM', 'dns');
tpl.set(':source', options);
-
options = App.Helpers.evalJSON(options) || {};
if (App.Helpers.isEmpty(options)) {
- tpl.set(':title', 'New dns record');
- tpl.set(':save_button', 'ADD');
+ tpl.set(':title', 'New dns record');
+ tpl.set(':save_button', 'ADD');
+ } else {
+ tpl.set(':title', 'Edit dns record');
+ tpl.set(':save_button', 'SAVE');
}
- else {
- tpl.set(':title', 'Edit dns record');
- tpl.set(':save_button', 'SAVE');
- }
-
- tpl.set(':id', id || '');
- tpl.set(':DNS_DOMAIN', options.DNS_DOMAIN || '');
+ tpl.set(':id', id || '');
+ tpl.set(':DNS_DOMAIN', options.DNS_DOMAIN || '');
tpl.set(':IP', options.IP || '');
tpl.set(':TTL', options.TTL || '');
tpl.set(':SOA', options.SOA || '');
tpl.set(':DATE', options.DATE || '');
-
tpl = App.HTML.Build.dns_selects(tpl, options);
-
+ tpl = App.HTML.toggle_suspended_form(tpl, options);
+
return tpl.finalize();
}
-App.HTML.Build.ip_form = function(options, id)
-{
- if('undefined' == typeof App.Env.initialParams) {
+App.HTML.Build.ip_form = function (options, id) {
+ if ('undefined' == typeof App.Env.initialParams) {
return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.');
}
var tpl = App.Templates.get('FORM', 'ip');
tpl.set(':source', options);
-
options = App.Helpers.evalJSON(options) || {};
if (App.Helpers.isEmpty(options)) {
- tpl.set(':title', 'New ip address');
- tpl.set(':save_button', 'ADD');
+ tpl.set(':title', 'New ip address');
+ tpl.set(':save_button', 'ADD');
+ } else {
+ tpl.set(':title', 'Edit ip address');
+ tpl.set(':save_button', 'SAVE');
}
- else {
- tpl.set(':title', 'Edit ip address');
- tpl.set(':save_button', 'SAVE');
- }
-
- tpl.set(':id', id || '');
+ tpl.set(':id', id || '');
tpl.set(':IP_ADDRESS', options.IP_ADDRESS || '');
tpl.set(':NETMASK', options.NETMASK || '');
tpl.set(':NAME', options.NAME || '');
-
tpl = App.HTML.Build.ip_selects(tpl, options);
+ tpl = App.HTML.toggle_suspended_form(tpl, options);
+
+ return tpl.finalize();
+}
+
+App.HTML.Build.user_form = function (options, id) {
+ var in_edit = false;
+ if (!App.Helpers.isEmpty(options)) {
+ in_edit = true;
+ }
+ if ('undefined' == typeof App.Env.initialParams) {
+ return alert('Please wait a bit. Some background processes are not yet executed. Thank you for patience.');
+ }
+ var tpl = App.Templates.get('FORM', 'user');
+ tpl.set(':source', options);
+ tpl.set(':id', id || '');
+ options = App.Helpers.evalJSON(options) || {};
+ if (App.Helpers.isEmpty(options)) {
+ tpl.set(':title', 'New user');
+ tpl.set(':save_button', 'ADD');
+ } else {
+ tpl.set(':title', 'Edit user');
+ tpl.set(':save_button', 'SAVE');
+ }
+ options = !App.Helpers.isEmpty(options) ? options : App.Empty.USER;
+ if (in_edit == true) {
+ options.PASSWORD = App.Settings.PASSWORD_IMMUTE;
+ var ns = [];
+ $([3, 4, 5, 6, 7, 8]).each(function (i, index) {
+ if (options['NS' + index].trim() != '') {
+ var tpl_ns = App.Templates.get('NS_INPUT', 'user');
+ tpl_ns.set(':NS_LABEL', 'NS #' + (index));
+ tpl_ns.set(':NAME', options['NS' + index]);
+ ns[ns.length++] = tpl_ns.finalize();
+ }
+ });
+ ns[ns.length++] = App.Templates.get('PLUS_ONE_NS', 'user').finalize();
+ tpl.set(':NS', ns.done());
+ } else {
+ tpl.set(':NS', '');
+ }
+ tpl = App.HTML.setTplKeys(tpl, options, true);
+ tpl = App.HTML.Build.user_selects(tpl, options);
+ tpl = App.HTML.toggle_suspended_form(tpl, options);
+ if (options.REPORTS_ENABLED == 'yes') {
+ tpl.set(':CHECKED', 'checked="checked"');
+ } else {
+ tpl.set(':CHECKED', '');
+ }
+ if (!in_edit) {
+ tpl.set(':REPORTS_ENABLED_EDITABLE', 'hidden');
+ }
return tpl.finalize();
}
-
-App.HTML.Build.options = function(initial, default_value)
-{
- var opts = [];
- $.each(initial, function(key){
- var selected = key == default_value ? 'selected="selected"' : '';
- opts[opts.length++] = '