From 6689220cd2038171deac227b2958ea69adc05d11 Mon Sep 17 00:00:00 2001 From: Malishev Dmitry Date: Mon, 19 Dec 2011 11:11:15 +0200 Subject: [PATCH 1/2] Css updated: Inactive items styles added --- web/css/main.css | 255 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 199 insertions(+), 56 deletions(-) diff --git a/web/css/main.css b/web/css/main.css index 694e2c9dc..fe10b550a 100644 --- a/web/css/main.css +++ b/web/css/main.css @@ -3,7 +3,7 @@ Title : Vesta Author : Eugen Lobicov, eugen.lobicov@gmail.com created : November 27, 2009 -last updated : December 06, 2011 +last updated : December 16, 2011 - - - - - - - - - - - - - - - - - - */ html{ @@ -29,8 +29,7 @@ body{ background:#fff url(../images/footer-bg.gif) repeat-x 0 100%; } #header{ - /*overflow:hidden;*/ - padding:0 10px; + padding:0 1px 0 10px; height:26px; border-bottom:2px solid #333527; background-color:#484439; @@ -59,31 +58,31 @@ body{ top:1px; left:0; z-index:1; - background:url(../images/vesta-logo.png) no-repeat; + width:72px; + height:24px; + background:url(../images/vesta-logo-2011-12-14.png) no-repeat; } .settings{ float:right; - padding-left:28px; - background:url(../images/vesta-italic-logo.png) no-repeat 0 50%; -} -.settings .service-item{ - color:#cddce3; } .settings .settings-item, .extra-services .service-item{ float:left; display:block; - margin:0 10px 0; - font-size:11px; - line-height:25px; + padding:0 10px; + font-size:9px; + line-height:26px; text-transform:uppercase; + letter-spacing:1px; } .settings .item-title, .extra-services .item-title{ - color:#b3b051; + font-family:Arial, Helvetica, san-serif; + font-size:9px; + color:#C0BD00; text-decoration:none; - border-bottom:1px dashed #b3b051; + border-bottom:1px dotted #68684B; } .settings a.item-title:hover{ color:#fefda0; @@ -93,20 +92,63 @@ body{ color:#E16734; text-decoration:none; } -/*.settings .logged-as{ - color:#fefda0; +.settings .logged-as{ + margin:0; +} +.settings .logged-as{ + position:relative; + top:1px; + padding-right:5px; + font-size:16px; + line-height:20px; + font-family:Georgia, Cambria, "Times New Roman", Times, serif; + font-weight:bold; + font-style:italic; + color:#fff; text-transform:none; border:none; -}*/ + letter-spacing:normal; +} +.settings .logout{ + float:left; + display:block; + text-transform:uppercase; + letter-spacing:1px; + line-height:26px; + } + .settings .logout .item-title{ + display:block; + padding:0 10px; + font-size:9px; + line-height:26px; + border:none; + } + .settings .logout .item-title-inner{ + border-bottom:1px dotted #68684B; + } + .logout a.item-title:hover{ + background-color:#a3b82d; + color:#ffffc5; + } + .logout a.item-title:hover .item-title-inner{ + border:none; + } + + .logout a.item-title:active{ + background-color:#ffff66; + color:#272700; + } + + .extra-services{ float:right; - margin-right:90px; + margin-right:59px; } .extra-services .service-item{ position:relative; - margin:0; - padding:0 10px; + padding:0 13px; line-height:26px; + letter-spacing:normal; } .extra-services .item-devider{ position:absolute; @@ -114,33 +156,40 @@ body{ left:0; width:100%; height:3px; - } .extra-services .item-title{ - color:#cbdde1; - border-bottom:1px dashed #72736d; -} -.extra-services .service-item_backups .item-title{ - padding-left:22px; - background:url(../images/backup-ico.png) no-repeat 0 50%; + font-family:Arial, Helvetica, san-serif; + font-size:10px; + font-weight:bold; + color:#C0E1F3; + border-bottom:1px dotted #7D939F; } .extra-services .active{ cursor:default; background:#333; + font-weight:bold; } .extra-services .service-item:hover{ cursor:pointer; + } + .extra-services .service-item:hover .item-title{ + color:#fffa96; + border-bottom-color:#fffa96; + } + .extra-services .service-item:active{ background:#333; } - .extra-services .service-item:hover .item-title, + .extra-services .service-item:active .item-title{ + color:#fff; + border:none; + } .extra-services .active .item-title{ color:#fff997; border:none; } - .extra-services .service-item:hover .item-devider, .extra-services .active .item-devider{ background:#ff6766; -} + } /*Remove button padding in FF*/ input::-moz-focus-inner{ @@ -216,6 +265,7 @@ input::-moz-focus-inner{ background:url(../images/plus-sprite1.png) no-repeat; font-size:0; line-height:0; + visibility:hidden; } .section .section-title .add-entry:hover{ background-position:-14px 0; @@ -491,7 +541,7 @@ input::-moz-focus-inner{ .db-manager:active .highlighted{ color:#b85152; } - + /* Row filters */ .row-filters{} @@ -652,10 +702,45 @@ input::-moz-focus-inner{ background-position:5px -79px; } +.b-cust-sel_inactive{ + background:#f3f3d9; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + } + .b-cust-sel_inactive .cust-sel-arrow{ + background:#f3f3d9; + } + .b-cust-sel_inactive .cust-sel-options{ + display:none; + } + .domain-groups-selector{ float:left; width:270px; -} + padding-top:2px; + font-size:11px; + line-height:15px; + } + .domain-groups-selector .selector-wrap{ + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + vertical-align:top; + padding-right:15px; + border-bottom:1px solid #d5d6c4; + background:url(../images/custom-arrow.png) no-repeat 100% 6px; + } + .domain-groups-selector .selector-title{ + padding-right:5px; + font-weight:normal; + text-transform:uppercase; + color:#8b8b8b; + } + .domain-groups-selector .selected-groups{ + color:#5d5d5d; + } #content{ padding:8px 0 50px; @@ -1193,7 +1278,7 @@ input::-moz-focus-inner{ position:relative; display:block; float:left; - margin-right:25px; + /*margin-right:25px;*/ padding-right:15px; font-size:12px; } @@ -1201,7 +1286,7 @@ input::-moz-focus-inner{ visibility:hidden; } .row .ip-suspended-status{ - margin-right:78px; + margin:0; background:url(../images/suspended-ico.png) no-repeat 100% 65%; } .row .ip-suspended-status .ip-status-text{ @@ -1486,7 +1571,6 @@ input::-moz-focus-inner{ } .b-new-entry select.styled{ top:10px; - width:230px; } .b-new-entry option{ font:14px arial,sans-serif; @@ -1534,6 +1618,13 @@ input::-moz-focus-inner{ color:#4B9427; } + .b-new-entry .mail-options-group{ + margin-bottom:27px; + } + .b-new-entry .mail-options-group .form-row{ + padding-bottom:0; + } + .b-new-entry .delete-record{ display: block; position:relative; @@ -1613,8 +1704,12 @@ input::-moz-focus-inner{ } .b-new-entry .add-ns{ - display:inline-block; - margin-left:180px; + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + + margin:0 0 7px 180px; font-family:Georgia, "Times New Roman", Times, serif; font-size:14px; line-height:1; @@ -1648,12 +1743,12 @@ input::-moz-focus-inner{ .b-new-entry .buttons-row{ position:relative; - margin-top:10px; + margin-top:13px; padding:8px 15px 8px 195px; border-top:1px solid #dcdbad; background:url(../images/form-bottom-bg.png) repeat-x; } - .b-new-entry .help-btn{ +/* .b-new-entry .help-btn{ position:absolute; top:13px; right:20px; @@ -1672,24 +1767,56 @@ input::-moz-focus-inner{ .b-new-entry .help-btn:active{ color:#4B9427; } +*/ + .b-new-entry .cancel-btn{ - position:absolute; - top:15px; - left:16px; + + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + + margin-left:30px; font-size:12px; line-height:1; + font-weight:bold; + text-transform:uppercase; - color:#cc7c4b; + color:#2ca9bd; cursor:pointer; - border-bottom:1px solid #cc7c4b; + border-bottom:1px solid #2ca9bd; } .b-new-entry .cancel-btn:hover{ - color:#000; - border-bottom-color:#c5795f; + color:#999; + border-bottom-color:#999; } .b-new-entry .cancel-btn:active{ - color:#CC7C4B; + color:#fc0; + border-bottom-color:#fc0; } + + .b-new-entry .delete-btn{ + position:absolute; + top:15px; + right:16px; + + font-size:12px; + line-height:14px; + text-transform:uppercase; + color:#333; + letter-spacing:2px; + cursor:pointer; + border-bottom:1px solid #ff6766; + } + .b-new-entry .delete-btn:hover{ + color:#ff6766; + } + .b-new-entry .delete-btn:active{ + color:#fc0; + border-bottom-color:#fc0; + } + + .b-new-entry .add-entry-btn{ overflow:visible; height:28px; @@ -1757,7 +1884,6 @@ input::-moz-focus-inner{ border:1px solid #dcdbad; background:url(../images/form-bottom-bg.png) repeat-x; } - .form-error .error-box{ padding-left:18px; background:url(../images/error-bullet.png) no-repeat 0 50%; @@ -1823,16 +1949,18 @@ input::-moz-focus-inner{ height:60px; } + .b-new-detailed-restore{} .b-new-detailed-restore .add-entry-btn{ padding:0 30px; } - +/* .b-new-detailed-restore .cancel-btn{ left:auto; right:16px; } +*/ /* Show/edit dns records form - - - - - - - - - - - - - - - - - - - */ @@ -2062,7 +2190,7 @@ input::-moz-focus-inner{ line-height:12px; background:url(../images/stats-curve.png) no-repeat 100% 50%; color:#acacac; - border-bottom:1px solid #acacac; + /*border-bottom:1px solid #acacac;*/ } .b-usage-box2{ display:block; @@ -2677,7 +2805,7 @@ input::-moz-focus-inner{ } .backup-tree{ - padding-left:70px; + padding-left:130px; } .backup-tree .backup-tree-item{ @@ -2762,7 +2890,7 @@ input::-moz-focus-inner{ .backups-list .backup-details-row_highlighted .backup-actions{ display:none; } - + /* row hover effect - - - - - - - - - - - - - - - - - - - */ .row:hover{ @@ -2815,6 +2943,9 @@ input::-moz-focus-inner{ .row .ip-status-info:hover{ background-image:url(../images/enabled-ico-hover.png); } +.row .ip-suspended-status:hover{ + background-image:url(../images/suspended-ico.png); +} .row .delete-entry:hover, .row .db-user-box .db-user:hover{ background-image:url(../images/delete-ico.png); @@ -2912,22 +3043,29 @@ input::-moz-focus-inner{ .suspended-row .user-details .user-email, .suspended-row .user-details .user-reports, .suspended-row .template-box .prop-value, - .suspended-row .stats-box-title{ + .suspended-row .stats-box-title, + .suspended-row .stats-box .stats-auth, + .suspended-row .nginx-box .nginx-ext-list{ color:#ccc; border:none; } .ip-details-suspended:hover .ip-adr, .suspended-row:hover .ip-adr, + .suspended-row:hover .names .primary, + .domains-list .suspended-row:hover .names .primary, + .dns-list .suspended-row:hover .names .primary, .cron-list .suspended-row:hover .cron-command-line, .users-list .suspended-row:hover .username-box .nickname, - .users-list .suspended-row:hover .user-backups-box .prop-title{ + .users-list .suspended-row:hover .user-backups-box .prop-title, + .suspended-row .stats-box .stats-auth-text{ border:none; } .ip-details-suspended:hover .ip-adr:hover, .suspended-row:hover .ip-adr:hover, .cron-list .suspended-row:hover .cron-command-line:hover, .users-list .suspended-row:hover .username-box .nickname:hover, - .users-list .suspended-row:hover .user-backups-box .prop-title:hover{ + .users-list .suspended-row:hover .user-backups-box .prop-title:hover, + .cron-list .suspended-row:hover .cron-command-line{ border:none; cursor:default; } @@ -2944,7 +3082,8 @@ input::-moz-focus-inner{ .suspended-row .b-usage-box .max-size, .suspended-row .b-usage-box .max-size .units, .suspended-row .b-usage-box2 .value, -.suspended-row .b-usage-box2 .max-size{ +.suspended-row .b-usage-box2 .max-size, +.suspended-row .names .primary{ color:#ccc; } .suspended-row .b-usage-box .bar, @@ -2980,3 +3119,7 @@ input::-moz-focus-inner{ } .success-box {border: 1px dashed #BBBF45;color: #BBBF45;} + +.inactive-row { font-style: italic; opacity: 0.38; background: url('../images/bg_line.png');filter: alpha(opacity = 38); } +.form-suspended input[type="text"], .form-suspended input[type="checkbox"], .form-suspended .checkbox, .form-suspended select, .form-suspended textarea, .form-suspended .select { opacity: 0.38;filter: alpha(opacity = 38); } +.form-suspended .do_action_toggle_suspend {opacity: 1; filter: alpha(opacity = 100);} From d87616899864ee3a461d6c62c080e77201cc99d9 Mon Sep 17 00:00:00 2001 From: Malishev Dmitry Date: Mon, 19 Dec 2011 11:12:17 +0200 Subject: [PATCH 2/2] JS/PHP features update. Closes #4 Closes #3 --- web/js/__init__.js | 6 +- web/js/actions.js | 77 ++- web/js/app.js | 8 +- web/js/helpers.js | 18 +- web/js/html.js | 822 +++++++++++++---------------- web/js/lib/custom-form-elements.js | 54 +- web/js/model.js | 114 ++-- web/js/pages.js | 36 +- web/js/templates.js | 208 +++++--- web/vesta/api/AjaxHandler.php | 4 +- web/vesta/api/CRON.class.php | 54 +- web/vesta/api/DB.class.php | 56 +- web/vesta/api/DNS.class.php | 33 ++ web/vesta/api/IP.class.php | 22 +- web/vesta/api/MAIN.class.php | 40 +- web/vesta/api/USER.class.php | 78 ++- web/vesta/api/WEB_DOMAIN.class.php | 127 ++++- web/vesta/core/Vesta.class.php | 33 +- 18 files changed, 1042 insertions(+), 748 deletions(-) diff --git a/web/js/__init__.js b/web/js/__init__.js index a475c716c..0926352f8 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 ed081bde6..7a3aa056c 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, '
      '+html+'
    '); + App.Helpers.openInnerPopup(elm, '
      '+html+'
    ', '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 63f3f48b8..7af8bc35b 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 8ed6a0fb7..df8fd806f 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 40168c4da..9a2125c48 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++] = '