diff --git a/web/js/pages/add.web.js b/web/js/pages/add.web.js index 8b06b14a..d350a437 100644 --- a/web/js/pages/add.web.js +++ b/web/js/pages/add.web.js @@ -1,37 +1,158 @@ -// -// -// Updates ftp username dynamically, showing its prefix App.Actions.WEB.update_ftp_username_hint = function(elm, hint) { if (hint.trim() == '') { $(elm).parent().find('.hint').html(''); - } - // remove prefix from value in order to eliminate duplicates + } + + hint = hint.replace(/[^\w\d]/gi, ''); + if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) { hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length); } - + $(elm).parent().find('.v-ftp-user').val(hint); $(elm).parent().find('.hint').text(GLOBAL.FTP_USER_PREFIX + hint); } -// -// listener that triggers ftp user hint updating App.Listeners.WEB.keypress_ftp_username = function() { - var ref = $('input[name="v_ftp_user"]'); - var current_val = ref.val(); - if (current_val.trim() != '') { - App.Actions.DB.update_ftp_username_hint(ref, current_val); - } - - ref.bind('keypress input', function(evt) { + var ftp_user_inputs = $('.v-ftp-user'); + $.each(ftp_user_inputs, function(i, ref) { + var ref = $(ref); + var current_val = ref.val(); + if (current_val.trim() != '') { + App.Actions.WEB.update_ftp_username_hint(ref, current_val); + } + + ref.bind('keypress', function(evt) { + clearTimeout(window.frp_usr_tmt); + window.frp_usr_tmt = setTimeout(function() { + var elm = $(evt.target); + App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val()); + }, 100); + }); + }); +} + +App.Listeners.WEB.keypress_domain_name = function() { + $('#v_domain').bind('keypress', function(evt) { clearTimeout(window.frp_usr_tmt); window.frp_usr_tmt = setTimeout(function() { - var elm = $(evt.target); - App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val()); + //var elm = $(evt.target); + //App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val()); + var domain = $('.ftp-path-prefix').text(GLOBAL.FTP_USER_PREPATH + '/' + $('#v_domain').val()); }, 100); }); } +// +// + +App.Actions.WEB.update_ftp_path_hint = function(elm, hint) { + if (hint.trim() == '') { + $(elm).parent().find('.v-ftp-path-hint').html(''); + } + + if (hint[0] != '/') { + hint = '/' + hint; + } + hint = hint.replace(/\/(\/+)/g, '/'); + + $(elm).parent().find('.v-ftp-path-hint').text(hint); +} + +App.Listeners.WEB.keypress_ftp_path = function() { + var ftp_path_inputs = $('.v-ftp-path'); + $.each(ftp_path_inputs, function(i, ref) { + var ref = $(ref); + var current_val = ref.val(); + if (current_val.trim() != '') { + App.Actions.WEB.update_ftp_path_hint(ref, current_val); + } + + ref.bind('keypress', function(evt) { + clearTimeout(window.frp_usr_tmt); + window.frp_usr_tmt = setTimeout(function() { + var elm = $(evt.target); + App.Actions.WEB.update_ftp_path_hint(elm, $(elm).val()); + }, 100); + }); + }); +} + +// +// +App.Actions.WEB.add_ftp_user_form = function() { + var ref = $('#templates').find('.ftptable').clone(true); + var index = $('.data-col2 .ftptable').length + 1; + + ref.find('input').each(function(i, elm) { + var attr_value = $(elm).attr('name').replace('%INDEX%', index); + $(elm).attr('name', attr_value); + }); + + ref.find('.ftp-user-number').text(index); + + $('.data-col2 .ftptable:last').after(ref); + + var index = 1; + $('.data-col2 .ftp-user-number:visible').each(function(i, o) { + $(o).text(index); + index += 1; + }); +} + +App.Actions.WEB.remove_ftp_user = function(elm) { + var ref = $(elm).parents('.ftptable'); + ref.remove(); + + var index = 1; + $('.data-col2 .ftp-user-number:visible').each(function(i, o) { + $(o).text(index); + index += 1; + }); + + if ($('.ftptable-nrm:visible').length == 0) { + $('.v-add-new-user').hide(); + $('input[name="v_ftp"]').attr('checked', false); + } +} + + +App.Actions.WEB.toggle_additional_ftp_accounts = function(elm) { + if ($(elm).attr('checked')) { + $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').show(); + $('.ftptable-nrm').each(function(i, elm) { + var login = $(elm).find('.v-ftp-user'); + if (login.val().trim() != '') { + $(elm).find('.v-ftp-user-deleted').val(0); + } + }); + } + else { + $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').hide(); + $('.ftptable-nrm').each(function(i, elm) { + var login = $(elm).find('.v-ftp-user'); + if (login.val().trim() != '') { + $(elm).find('.v-ftp-user-deleted').val(1); + } + }); + } + + if ($('.ftptable-nrm:visible').length == 0) { + var ref = $('#templates').find('.ftptable').clone(true); + var index = $('.data-col2 .ftptable').length + 1; + + ref.find('input').each(function(i, elm) { + var attr_value = $(elm).attr('name').replace('%INDEX%', index); + $(elm).attr('name', attr_value); + }); + + ref.find('.ftp-user-number').text(index); + + $('.v-add-new-user').parent('tr').prev().find('td').html(ref); + } +} + // // Page entry point -// Trigger listeners App.Listeners.WEB.keypress_ftp_username(); +App.Listeners.WEB.keypress_ftp_path(); +App.Listeners.WEB.keypress_domain_name(); diff --git a/web/js/pages/edit.web.js b/web/js/pages/edit.web.js index fc9be3fc..5d8ede2f 100644 --- a/web/js/pages/edit.web.js +++ b/web/js/pages/edit.web.js @@ -1,29 +1,138 @@ App.Actions.WEB.update_ftp_username_hint = function(elm, hint) { if (hint.trim() == '') { $(elm).parent().find('.hint').html(''); - } + } + + hint = hint.replace(/[^\w\d]/gi, ''); + if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) { hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length); } + $(elm).parent().find('.v-ftp-user').val(hint); $(elm).parent().find('.hint').text(GLOBAL.FTP_USER_PREFIX + hint); } App.Listeners.WEB.keypress_ftp_username = function() { - var ref = $('input[name="v_ftp_user"]'); - var current_val = ref.val(); - if (current_val.trim() != '') { - App.Actions.DB.update_ftp_username_hint(ref, current_val); + var ftp_user_inputs = $('.v-ftp-user'); + $.each(ftp_user_inputs, function(i, ref) { + var ref = $(ref); + var current_val = ref.val(); + if (current_val.trim() != '') { + App.Actions.WEB.update_ftp_username_hint(ref, current_val); + } + + ref.bind('keypress', function(evt) { + clearTimeout(window.frp_usr_tmt); + window.frp_usr_tmt = setTimeout(function() { + var elm = $(evt.target); + App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val()); + }, 100); + }); + }); +} + +// +// + +App.Actions.WEB.update_ftp_path_hint = function(elm, hint) { + if (hint.trim() == '') { + $(elm).parent().find('.v-ftp-path-hint').html(''); + } + + if (hint[0] != '/') { + hint = '/' + hint; } - ref.bind('keypress', function(evt) { - clearTimeout(window.frp_usr_tmt); - window.frp_usr_tmt = setTimeout(function() { - var elm = $(evt.target); - App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val()); - }, 100); + hint = hint.replace(/\/(\/+)/g, '/'); + + $(elm).parent().find('.v-ftp-path-hint').text(hint); +} + +App.Listeners.WEB.keypress_ftp_path = function() { + var ftp_path_inputs = $('.v-ftp-path'); + $.each(ftp_path_inputs, function(i, ref) { + var ref = $(ref); + var current_val = ref.val(); + if (current_val.trim() != '') { + App.Actions.WEB.update_ftp_path_hint(ref, current_val); + } + + ref.bind('keypress', function(evt) { + clearTimeout(window.frp_usr_tmt); + window.frp_usr_tmt = setTimeout(function() { + var elm = $(evt.target); + App.Actions.WEB.update_ftp_path_hint(elm, $(elm).val()); + }, 100); + }); }); } +// +// +App.Actions.WEB.add_ftp_user_form = function() { + var ref = $('#templates').find('.ftptable').clone(true); + var index = $('.data-col2 .ftptable').length + 1; + + ref.find('input').each(function(i, elm) { + var attr_value = $(elm).attr('name').replace('%INDEX%', index); + $(elm).attr('name', attr_value); + }); + + ref.find('.ftp-user-number').text(index); + + $('.data-col2 .ftptable:last').after(ref); + + var index = 1; + $('.data-col2 .ftp-user-number:visible').each(function(i, o) { + $(o).text(index); + index += 1; + }); +} + +App.Actions.WEB.remove_ftp_user = function(elm) { + var ref = $(elm).parents('.ftptable'); + ref.find('.v-ftp-user-deleted').val('1'); + if (ref.find('.v-ftp-user-is-new').val() == 1) { + ref.remove(); + return true; + } + ref.removeClass('ftptable-nrm'); + ref.hide(); + + var index = 1; + $('.data-col2 .ftp-user-number:visible').each(function(i, o) { + $(o).text(index); + index += 1; + }); + + if ($('.ftptable-nrm:visible').length == 0) { + $('.add-new-ftp-user-button').hide(); + $('input[name="v_ftp"]').attr('checked', false); + } +} + +App.Actions.WEB.toggle_additional_ftp_accounts = function(elm) { + if ($(elm).attr('checked')) { + $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').show(); + $('.ftptable-nrm').each(function(i, elm) { + var login = $(elm).find('.v-ftp-user'); + if (login.val().trim() != '') { + $(elm).find('.v-ftp-user-deleted').val(0); + } + }); + } + else { + $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').hide(); + $('.ftptable-nrm').each(function(i, elm) { + var login = $(elm).find('.v-ftp-user'); + if (login.val().trim() != '') { + $(elm).find('.v-ftp-user-deleted').val(1); + } + }); + } +} + // // Page entry point App.Listeners.WEB.keypress_ftp_username(); +App.Listeners.WEB.keypress_ftp_path(); diff --git a/web/js/templates.js b/web/js/templates.js index ee5aeda6..e91f2f79 100644 --- a/web/js/templates.js +++ b/web/js/templates.js @@ -66,7 +66,7 @@ var Templator = function() { 'undefined' == typeof App.Templates._indexes[key] ? App.Templates._indexes[key] = {} : false; 'undefined' == typeof App.Templates._indexes[key][ref_key] ? - App.Templates._indexes[key][ref_key] = {} : false; + App.Templates._indexes[key][ref_key] = {} : false; jQuery(tpl).each(function(index, o) { if (':' == o.charAt(0)) { @@ -84,8 +84,8 @@ var Templator = function() Templator.getTemplate = function(ns, key){ return [ - App.Templates._indexes[ns][key], - App.Templates.html[ns][key].slice(0) + App.Templates._indexes[ns][key], + App.Templates.html[ns][key].slice(0) ]; } // init templator