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++] = '