add_web.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. App.Actions.WEB.update_custom_doc_root = function(elm, hint) {
  2. var prepath = $('input[name="v-custom-doc-root_prepath"]').val();
  3. var domain = $('select[name="v-custom-doc-domain"]').val();
  4. var folder = $('input[name="v-custom-doc-folder"]').val();
  5. console.log(domain, folder);
  6. $('.custom_docroot_hint').text(prepath+domain+'/public_html/'+folder);
  7. }
  8. App.Listeners.DB.keypress_custom_folder = function() {
  9. var ref = $('input[name="v-custom-doc-folder"]');
  10. var current_rec = ref.val();
  11. App.Actions.WEB.update_custom_doc_root(ref, current_rec);
  12. ref.bind('keypress input', function(evt) {
  13. clearTimeout(window.frp_usr_tmt);
  14. window.frp_usr_tmt = setTimeout(function() {
  15. var elm = $(evt.target);
  16. App.Actions.WEB.update_custom_doc_root(elm, $(elm).val());
  17. });
  18. });
  19. }
  20. App.Listeners.DB.change_custom_doc = function() {
  21. var ref = $('select[name="v-custom-doc-domain"]');
  22. var current_rec = ref.val();
  23. ref.bind('change select', function(evt) {
  24. clearTimeout(window.frp_usr_tmt);
  25. window.frp_usr_tmt = setTimeout(function() {
  26. var elm = $(evt.target);
  27. App.Actions.WEB.update_custom_doc_root(elm, $(elm).val());
  28. var domain = $('.ftp-path-prefix').text(GLOBAL.FTP_USER_PREPATH + '/' + $(evt.target));
  29. });
  30. });
  31. }
  32. // Page entry point
  33. // Trigger listeners
  34. App.Listeners.DB.keypress_custom_folder();
  35. App.Listeners.DB.change_custom_doc();
  36. App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
  37. if (hint.trim() == '') {
  38. $(elm).parent().find('.hint').text('');
  39. }
  40. hint = hint.replace(/[^\w\d]/gi, '');
  41. $(elm).parent().find('.v-ftp-user').val(hint);
  42. $(elm).parent().find('.hint').text(GLOBAL.FTP_USER_PREFIX + hint);
  43. }
  44. App.Listeners.WEB.keypress_ftp_username = function() {
  45. var ftp_user_inputs = $('.v-ftp-user');
  46. $.each(ftp_user_inputs, function(i, ref) {
  47. var ref = $(ref);
  48. var current_val = ref.val();
  49. if (current_val.trim() != '') {
  50. App.Actions.WEB.update_ftp_username_hint(ref, current_val);
  51. }
  52. ref.bind('keypress input', function(evt) {
  53. clearTimeout(window.frp_usr_tmt);
  54. window.frp_usr_tmt = setTimeout(function() {
  55. var elm = $(evt.target);
  56. App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
  57. }, 100);
  58. });
  59. });
  60. }
  61. App.Listeners.WEB.keypress_domain_name = function() {
  62. $('#v_domain').bind('keypress input', function(evt) {
  63. clearTimeout(window.frp_usr_tmt);
  64. window.frp_usr_tmt = setTimeout(function() {
  65. //var elm = $(evt.target);
  66. //App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
  67. var domain = $('.ftp-path-prefix').text(GLOBAL.FTP_USER_PREPATH + '/' + $('#v_domain').val());
  68. $('#v-custom-doc-domain-main').text($('#v_domain').val());
  69. $('#v-custom-doc-domain-main').val($('#v_domain').val());
  70. App.Actions.WEB.update_custom_doc_root(13, 12);
  71. }, 100);
  72. });
  73. }
  74. //
  75. //
  76. App.Actions.WEB.update_ftp_path_hint = function(elm, hint) {
  77. if (hint.trim() == '') {
  78. $(elm).parent().find('.v-ftp-path-hint').text('');
  79. }
  80. if (hint[0] != '/') {
  81. hint = '/' + hint;
  82. }
  83. hint = hint.replace(/\/(\/+)/g, '/');
  84. $(elm).parent().find('.v-ftp-path-hint').text(hint);
  85. }
  86. App.Listeners.WEB.keypress_ftp_path = function() {
  87. var ftp_path_inputs = $('.v-ftp-path');
  88. $.each(ftp_path_inputs, function(i, ref) {
  89. var ref = $(ref);
  90. var current_val = ref.val();
  91. if (current_val.trim() != '') {
  92. App.Actions.WEB.update_ftp_path_hint(ref, current_val);
  93. }
  94. ref.bind('keypress input', function(evt) {
  95. clearTimeout(window.frp_usr_tmt);
  96. window.frp_usr_tmt = setTimeout(function() {
  97. var elm = $(evt.target);
  98. App.Actions.WEB.update_ftp_path_hint(elm, $(elm).val());
  99. }, 100);
  100. });
  101. });
  102. }
  103. //
  104. //
  105. App.Actions.WEB.add_ftp_user_form = function() {
  106. var ref = $('#templates').find('.ftptable-nrm').clone(true);
  107. var index = $('.data-col2 .ftptable').length + 1;
  108. ref.find('input').each(function(i, elm) {
  109. var attr_value = $(elm).prop('name').replace('%INDEX%', index);
  110. $(elm).prop('name', attr_value);
  111. });
  112. ref.find('.ftp-user-number').text(index);
  113. $('#ftp_users').append(ref);
  114. var index = 1;
  115. $('.data-col2 .ftp-user-number:visible').each(function(i, o) {
  116. $(o).text(index);
  117. index += 1;
  118. });
  119. }
  120. App.Actions.WEB.remove_ftp_user = function(elm) {
  121. var ref = $(elm).parents('.ftptable');
  122. ref.remove();
  123. var index = 1;
  124. $('.data-col2 .ftp-user-number:visible').each(function(i, o) {
  125. $(o).text(index);
  126. index += 1;
  127. });
  128. if ($('.ftptable-nrm:visible').length == 0) {
  129. $('.v-add-new-user').hide();
  130. $('input[name="v_ftp"]').attr('checked', false);
  131. }
  132. }
  133. App.Actions.WEB.toggle_additional_ftp_accounts = function(elm) {
  134. if ($(elm).prop('checked')) {
  135. $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').show();
  136. $('.ftptable-nrm').each(function(i, elm) {
  137. var login = $(elm).find('.v-ftp-user');
  138. if (login.val().trim() != '') {
  139. $(elm).find('.v-ftp-user-deleted').val(0);
  140. }
  141. });
  142. }
  143. else {
  144. $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').hide();
  145. $('.ftptable-nrm').each(function(i, elm) {
  146. var login = $(elm).find('.v-ftp-user');
  147. if (login.val().trim() != '') {
  148. $(elm).find('.v-ftp-user-deleted').val(1);
  149. }
  150. });
  151. }
  152. if ($('.ftptable-nrm:visible').length == 0) {
  153. var ref = $('#templates').find('.ftptable').clone(true);
  154. var index = $('.data-col2 .ftptable').length + 1;
  155. ref.find('input').each(function(i, elm) {
  156. var attr_value = $(elm).prop('name').replace('%INDEX%', index);
  157. $(elm).prop('name', attr_value);
  158. });
  159. ref.find('.ftp-user-number').text(index);
  160. $('.v-add-new-user').parent('tr').prev().find('td').html(ref);
  161. }
  162. }
  163. App.Actions.WEB.toggle_letsencrypt = function(elm) {
  164. if ($(elm).prop('checked')) {
  165. $('#ssltable textarea[name=v_ssl_crt],#ssltable textarea[name=v_ssl_key], #ssltable textarea[name=v_ssl_ca]').attr('disabled', 'disabled');
  166. $('#generate-csr').hide();
  167. $('.lets-encrypt-note').show();
  168. }
  169. else {
  170. $('#ssltable textarea[name=v_ssl_crt],#ssltable textarea[name=v_ssl_key], #ssltable textarea[name=v_ssl_ca]').removeAttr('disabled');
  171. $('#generate-csr').show();
  172. $('.lets-encrypt-note').hide();
  173. }
  174. }
  175. //
  176. // Page entry point
  177. App.Listeners.WEB.keypress_ftp_username();
  178. App.Listeners.WEB.keypress_ftp_path();
  179. App.Listeners.WEB.keypress_domain_name();
  180. $(function() {
  181. $('#v_domain').change(function() {
  182. var prefix = 'www.';
  183. if (((document.getElementById('v_domain').value).split(".")).length > 2) {
  184. document.getElementById('v_aliases').value = "";
  185. } else {
  186. document.getElementById('v_aliases').value = prefix + document.getElementById('v_domain').value;
  187. }
  188. });
  189. App.Actions.WEB.toggle_letsencrypt($('input[name=v_letsencrypt]'))
  190. $('select[name="v_stats"]').change(function(evt){
  191. var select = $(evt.target);
  192. if(select.val() == 'none'){
  193. $('.stats-auth').hide();
  194. } else {
  195. $('.stats-auth').show();
  196. }
  197. });
  198. });
  199. function WEBrandom() {
  200. document.v_add_web.v_stats_password.value = randomString2(16);
  201. }
  202. function FTPrandom(elm) {
  203. var ftprandomstring = randomString2(16);
  204. $(elm).parents('.ftptable').find('.v-ftp-user-psw').val(ftprandomstring);
  205. }
  206. $('#vstobjects').on('submit', function(evt) {
  207. $('input[disabled]').each(function(i, elm) {
  208. $(elm).removeAttr('disabled');
  209. });
  210. });