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) { var val = o[key]; if (empty == true) { tpl.set(':' + key, val || ''); } else { tpl.set(':' + key, val || ''); } }); }); return tpl; } // // BUILD FORMS // 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 domain'); tpl.set(':save_button', 'ADD'); tpl.set(':DELETE_ACTION', ''); } else { tpl.set(':title', 'Edit dns domain'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); } 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) { 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(':DELETE_ACTION', ''); } else { tpl.set(':title', 'Edit ip address'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); } 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'); tpl.set(':DELETE_ACTION', ''); } else { tpl.set(':title', 'Edit user'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); } 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', 'Name Server #' + (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.web_domain_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 in_edit = false; if (!App.Helpers.isEmpty(options)) { in_edit = true; } var tpl = App.Templates.get('FORM', 'web_domain'); tpl.set(':source', options); tpl.set(':id', id || ''); options = App.Helpers.evalJSON(options) || {}; if (App.Helpers.isEmpty(options)) { tpl.set(':title', 'New WEB domain'); tpl.set(':save_button', 'ADD'); tpl.set(':DELETE_ACTION', ''); } else { tpl.set(':title', 'Edit WEB domain'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); if(options.SSL_CRT == '' || options.SSL_KEY == ''){ options.SSL = ''; options.SSL_HOME = ''; options.SSL_CRT = ''; options.SSL_KEY = ''; options.SSL_CA = ''; } if (options.SSL == 'on') { tpl.set(':ssl_checked', 'checked="checked"'); } else { tpl.set(':ssl_checked', ''); } if (options.SSL_HOME == 'on') { tpl.set(':ssl_home_checked', 'checked="checked"'); } else{ tpl.set(':ssl_home_checked', ''); } } options = !App.Helpers.isEmpty(options) ? options : App.Empty.WEB_DOMAIN; if (in_edit == true) { options.STATS_PASSWORD = options.STATS_LOGIN.trim() != '' ? App.Settings.PASSWORD_IMMUTE : ''; } tpl = App.HTML.setTplKeys(tpl, options, true); tpl = App.HTML.Build.web_domain_selects(tpl, options); tpl = App.HTML.toggle_suspended_form(tpl, options); if (options.CGI == 'yes' || !in_edit) { tpl.set(':CHECKED_CGI', 'checked="checked"'); } if (options.ELOG == 'yes') { tpl.set(':CHECKED_ELOG', 'checked="checked"'); } if (options.STATS_LOGIN.trim() != '') { tpl.set(':STAT_AUTH', 'checked="checked"'); tpl.set(':ACTIVE_LOGIN', ''); tpl.set(':ACTIVE_PASSWORD', ''); tpl.set(':stats_auth_checked', 'checked="checked"'); } else { tpl.set(':ACTIVE_LOGIN', 'hidden'); tpl.set(':ACTIVE_PASSWORD', 'hidden'); tpl.set(':stats_auth_checked', ''); } if (options.SSL == 'on') { tpl.set(':ssl_checked', 'checked="checked"'); if (options.SSL_HOME == 'on') { tpl.set(':ssl_home_checked', 'checked="checked"'); } else{ tpl.set(':ssl_home_checked', ''); } } else { tpl.set(':ssl_checked', ''); tpl.set(':ssl_home_checked', ''); tpl.set(':SSL_HOME', ''); tpl.set(':SSL_CRT', ''); tpl.set(':SSL_KEY', ''); tpl.set(':SSL_CA', ''); } return tpl.finalize(); } App.HTML.Build.db_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', 'db'); tpl.set(':source', options); tpl.set(':id', id || ''); options = App.Helpers.evalJSON(options) || {}; if (App.Helpers.isEmpty(options)) { tpl.set(':title', 'New database'); tpl.set(':save_button', 'ADD'); tpl.set(':DELETE_ACTION', ''); } else { tpl.set(':title', 'Edit database "' + options.DB + '"'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); } options = !App.Helpers.isEmpty(options) ? options : App.Empty.DB; if (in_edit == true) { options.PASSWORD = App.Settings.PASSWORD_IMMUTE; } tpl = App.HTML.setTplKeys(tpl, options, true); tpl = App.HTML.Build.db_selects(tpl, options); tpl = App.HTML.toggle_suspended_form(tpl, options); return tpl.finalize(); } App.HTML.Build.cron_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', 'cron'); tpl.set(':source', options); tpl.set(':id', id || ''); options = App.Helpers.evalJSON(options) || {}; if (App.Helpers.isEmpty(options)) { tpl.set(':title', 'New cron job'); tpl.set(':save_button', 'ADD'); tpl.set(':DELETE_ACTION', ''); } else { tpl.set(':title', 'Edit cron job'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); } options = !App.Helpers.isEmpty(options) ? options : { DAY: '', MONTH: '', WDAY: '', HOUR: '', CMD: '', MIN: '' }; tpl = App.HTML.setTplKeys(tpl, options); tpl = App.HTML.toggle_suspended_form(tpl, options); return tpl.finalize(); } // // BUILD ENTRIES // App.HTML.Build.ip_entry = function (o) { var tpl = App.Templates.get('ENTRY', 'ip'); tpl = App.HTML.setTplKeys(tpl, o); tpl = App.HTML.toggle_suspended_entry(tpl, o); return tpl.finalize(); } App.HTML.Build.dns_entry = function (o, is_new) { var tpl = App.Templates.get('ENTRY', 'dns'); tpl = App.HTML.setTplKeys(tpl, o); var ip = o.IP.split('.'); tpl.set(':IP', ip.join('.')); tpl.set(':CHECKED', ''); if (is_new) { var now = new Date(); tpl.set(':DATE', now.format("d.mm.yyyy")); } tpl.set(':TPL_VAL', o.TPL); tpl = App.HTML.toggle_suspended_entry(tpl, o); return tpl.finalize(); } App.HTML.Build.user_entry = function (o, key) { var processed_data = { 'NICKNAME': key, 'U_DISK_PERCENTAGE': o.U_DISK > 0 ? parseFloat(o.U_DISK / o.DISK_QUOTA * 100).toFixed(2) : 1, 'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? parseFloat(o.U_BANDWIDTH / o.BANDWIDTH * 100).toFixed(2) : 1, 'U_DISK': o.U_DISK == 0 ? 1 : App.Helpers.formatNumber(o.U_DISK), 'U_BANDWIDTH': o.U_BANDWIDTH == 0 ? 1 : App.Helpers.formatNumber(o.U_BANDWIDTH), 'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(o.DISK_QUOTA), 'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(o.BANDWIDTH), 'BANDWIDTH': App.Helpers.getMbHuman(o.BANDWIDTH), 'DISK_QUOTA': App.Helpers.getMbHuman(o.DISK_QUOTA) }; var o = $.extend(o, processed_data); o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE; o.U_DISK_PERCENTAGE_3 = o.U_DISK_PERCENTAGE; o.BANDWIDTH_MEASURE_2 = o.BANDWIDTH_MEASURE; o.DISK_QUOTA_MEASURE_2 = o.DISK_QUOTA_MEASURE; o.U_BANDWIDTH_PERCENTAGE_2 = o.U_BANDWIDTH_PERCENTAGE; o.U_BANDWIDTH_PERCENTAGE_3 = o.U_BANDWIDTH_PERCENTAGE; var tpl = App.Templates.get('ENTRY', 'user'); tpl = App.HTML.setTplKeys(tpl, o); tpl = App.HTML.toggle_suspended_entry(tpl, o); var ns = []; var ns_full = []; $([1, 2, 3, 4, 5, 6, 7, 8]).each(function (i, index) { var key = 'NS' + index; if ('undefined' != typeof o[key]) { if (o[key].trim() != '') { var tpl_ns = App.Templates.get('NS_RECORD', 'user'); tpl_ns.set(':NAME', o[key]); var tpl_finalized = tpl_ns.finalize(); ns_full[ns_full.length++] = tpl_finalized; if (i < App.Settings.USER_VISIBLE_NS) { ns[ns.length++] = tpl_finalized; } } } }); if (ns_full.length <= App.Settings.USER_VISIBLE_NS) { tpl.set(':NS', ns.done()); } else { var ns_custom = App.Templates.get('NS_MINIMIZED', 'user'); ns_custom.set(':NS_MINI', ns.done()); ns_custom.set(':NS_FULL', ns_full.done()); ns_custom.set(':MORE_NUMBER', Math.abs(App.Settings.USER_VISIBLE_NS - ns_full.length)); tpl.set(':NS', ns_custom.finalize()); } tpl = App.HTML.Build.user_web_tpl(tpl, o); tpl.set(':REPORTS_ENABLED', o.REPORTS_ENABLED == 'yes' ? 'enabled' : 'DISABLED'); if (o.U_DISK_PERCENTAGE > 100) { var tpl_over = App.Templates.get('over_bar', 'general'); var difference = parseInt(o.U_DISK_PERCENTAGE, 10) - 100; tpl_over.set(':OVER_PERCENTS', difference); tpl_over.set(':OVER_PERCENTS_2', difference); tpl.set(':OVER_BAR', tpl_over.finalize()); tpl.set(':U_DISK_PERCENTAGE_3', 100); tpl.set(':OVER_DRAFT_VALUE', 'overdraft'); } else { tpl.set(':OVER_BAR', ''); tpl.set(':OVER_DRAFT_VALUE', ''); } if (o.U_BANDWIDTH_PERCENTAGE > 100) { var tpl_over = App.Templates.get('over_bar', 'general'); var difference = parseInt(o.U_BANDWIDTH_PERCENTAGE, 10) - 100; tpl_over.set(':OVER_PERCENTS', difference); tpl_over.set(':OVER_PERCENTS_2', difference); tpl.set(':OVER_BAR_2', tpl_over.finalize()); tpl.set(':U_BANDWIDTH_PERCENTAGE_3', 100); tpl.set(':OVER_DRAFT_VALUE_2', 'overdraft'); } else { tpl.set(':OVER_BAR_2', ''); tpl.set(':OVER_DRAFT_VALUE_2', ''); } return tpl.finalize(); } App.HTML.Build.web_domain_entry = function (o, key) { var processed_data = { DOMAIN: key, 'U_DISK_PERCENTAGE': o.U_DISK > 0 ? parseFloat(o.U_DISK / App.Env.initialParams.user_data.DISK_QUOTA * 100).toFixed(2) : 1, 'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? parseFloat(o.U_BANDWIDTH / App.Env.initialParams.user_data.BANDWIDTH * 100).toFixed(2) : 1, 'U_DISK': o.U_DISK == 0 ? 1 : App.Helpers.formatNumber(o.U_DISK), 'U_BANDWIDTH': o.U_BANDWIDTH == 0 ? 1 : App.Helpers.formatNumber(o.U_BANDWIDTH), 'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.DISK_QUOTA), 'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.BANDWIDTH), 'BANDWIDTH': App.Helpers.getMbHuman(App.Env.initialParams.user_data.BANDWIDTH), 'DISK_QUOTA': App.Helpers.getMbHuman(App.Env.initialParams.user_data.DISK_QUOTA), 'SSL': (o.SSL_CRT == '' || o.SSL_KEY == '' || o.SSL != 'on') ? 'off' : 'on' }; var o = $.extend(o, processed_data); o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE; o.U_DISK_PERCENTAGE_3 = o.U_DISK_PERCENTAGE; o.BANDWIDTH_MEASURE_2 = o.BANDWIDTH_MEASURE; o.DISK_QUOTA_MEASURE_2 = o.DISK_QUOTA_MEASURE; o.U_BANDWIDTH_PERCENTAGE_2 = o.U_BANDWIDTH_PERCENTAGE; o.U_BANDWIDTH_PERCENTAGE_3 = o.U_BANDWIDTH_PERCENTAGE; var tpl = App.Templates.get('ENTRY', 'web_domain'); tpl = App.HTML.setTplKeys(tpl, o); tpl = App.HTML.toggle_suspended_entry(tpl, o); if (o.STATS_LOGIN.trim() != '') { tpl.set(':STATS_AUTH', '+auth'); } else { tpl.set(':STATS_AUTH', ''); } tpl.set(':DISK', App.Env.initialParams.PROFILE.BANDWIDTH); tpl.set(':BANDWIDTH', App.Env.initialParams.PROFILE.DISK); tpl = App.HTML.toggle_suspended_entry(tpl, o); return tpl.finalize(); } App.HTML.Build.mail_entry = function (o, key) { var processed_data = { DOMAIN: key }; var o = $.extend(o, processed_data); var tpl = App.Templates.get('ENTRY', 'mail'); tpl = App.HTML.setTplKeys(tpl, o); tpl = App.HTML.toggle_suspended_entry(tpl, o); return tpl.finalize(); } App.HTML.Build.db_entry = function (o, key) { var user_list_html = []; $(o['USERS']).each(function (i, o) { var tpl = App.Templates.get('USER_ITEM', 'db'); tpl.set(':NAME', o); user_list_html.push(tpl.finalize()); }); var wrapper = App.Templates.get('USER_ITEMS_WRAPPER', 'db'); wrapper.set(':CONTENT', user_list_html.done()); var processed_data = { 'USER_LIST': wrapper.finalize(), 'USERS': o['USERS'].length || 0, 'U_DISK_PERCENTAGE': o.U_DISK > 0 ? o.U_DISK / o.DISK * 100 : 0.01, 'DISK_MEASURE': App.Helpers.getMbHumanMeasure(o.DISK), 'DISK': App.Helpers.getMbHuman(o.DISK) }; var o = $.extend(o, processed_data); var tpl = App.Templates.get('ENTRY', 'db'); tpl = App.HTML.setTplKeys(tpl, o); tpl = App.HTML.toggle_suspended_entry(tpl, o); return tpl.finalize(); } App.HTML.Build.cron_entry = function (o, key) { var processed_data = { DOMAIN: key }; var o = $.extend(o, processed_data); var tpl = App.Templates.get('ENTRY', 'cron'); tpl = App.HTML.setTplKeys(tpl, o); tpl = App.HTML.toggle_suspended_entry(tpl, o); return tpl.finalize(); } // // GENERAL METHODS // App.HTML.Build.backup_list = function(backups) { if (!backups || backups.length == 0) { return '

Backups are not available

'; } var acc = []; $.each(backups, function(key) { var bckp = backups[key]; // generated time calc var generated_time = 1; //min bckp.RUNTIME > 60 ? generated_time = bckp.RUNTIME / 60 + ' h.' : generated_time += ' m.'; var created_date = new Date(key); var tpl = App.Templates.get('ENTRY', 'backup'); tpl.set(':CREATED_AT', key); tpl.set(':CREATED_AT_TIME', bckp.TIME); tpl.set(':GENERATION_TIME', generated_time); tpl.set(':OWNER', App.Env.initialParams.auth_user.uid.uid); tpl.set(':CREATED_AT_WDAY', App.Constants.KEY.WDAYS[created_date.getDay()]); tpl.set(':SIZE', App.Helpers.getMbHuman(bckp.SIZE) + ' ' + App.Helpers.getMbHuman(bckp.SIZE, true)); acc[acc.length++] = tpl.finalize() }); var wrap = App.Templates.get('WRAPPER', 'backup'); wrap.set(':CONTENT', acc.done()); return wrap.finalize(); } App.HTML.Build.stats_list = function(stats) { if (!stats || stats.length == 0) { return '

Stats are not available

'; } var acc = []; $.each(stats, function(key) { var stat = stats[key]; var tpl = App.Templates.get('ENTRY', 'stats'); tpl.set(':HEADER', stat.TITLE); tpl.set(':IMG_SRC', stat.SRC); acc[acc.length++] = tpl.finalize() }); var wrap = App.Templates.get('WRAPPER', 'backup'); wrap.set(':CONTENT', acc.done()); return wrap.finalize(); } // // HANDY METHODS // App.HTML.toggle_suspended_form = function(tpl, options) { if (App.Constants.SUSPENDED_YES == options.SUSPEND) { tpl.set(':SUSPENDED_CHECKED', 'checked="checked"'); tpl.set(':FORM_SUSPENDED', 'form-suspended'); tpl.set(':SUSPENDED_VALUE', 'on'); } else { tpl.set(':SUSPENDED_CHECKED', ''); tpl.set(':FORM_SUSPENDED', ''); tpl.set(':SUSPENDED_VALUE', 'off'); } return tpl; } App.HTML.toggle_suspended_entry = function(tpl, options) { if (App.Constants.SUSPENDED_YES == options.SUSPEND) { var sub_tpl = App.Templates.get('SUSPENDED_TPL_SUSPENDED', 'general'); tpl.set(':SUSPENDED_CLASS', 'inactive-row'); } else { var sub_tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general'); tpl.set(':SUSPENDED_CLASS', ''); } tpl.set(':SUSPENDED_TPL', sub_tpl.finalize()); 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(); }); 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.options = function (initial, default_value) { var opts = []; $.each(initial, function (key) { var selected = key == default_value ? 'selected="selected"' : ''; opts[opts.length++] = '