edit_web.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  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').html(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. });
  29. });
  30. }
  31. // Page entry point
  32. // Trigger listeners
  33. App.Listeners.DB.keypress_custom_folder();
  34. App.Listeners.DB.change_custom_doc();
  35. App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
  36. if (hint.trim() == '') {
  37. $(elm).parent().find('.hint').html('');
  38. }
  39. if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
  40. hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
  41. }
  42. hint = hint.replace(/[^\w\d]/gi, '');
  43. $(elm).parent().find('.v-ftp-user').val(hint);
  44. $(elm).parent().find('.hint').text(GLOBAL.FTP_USER_PREFIX + hint);
  45. }
  46. App.Listeners.WEB.keypress_ftp_username = function() {
  47. var ftp_user_inputs = $('.v-ftp-user');
  48. $.each(ftp_user_inputs, function(i, ref) {
  49. var ref = $(ref);
  50. var current_val = ref.val();
  51. if (current_val.trim() != '') {
  52. App.Actions.WEB.update_ftp_username_hint(ref, current_val);
  53. }
  54. ref.bind('keypress input', function(evt) {
  55. clearTimeout(window.frp_usr_tmt);
  56. window.frp_usr_tmt = setTimeout(function() {
  57. var elm = $(evt.target);
  58. App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
  59. }, 100);
  60. });
  61. });
  62. }
  63. //
  64. //
  65. App.Actions.WEB.update_ftp_path_hint = function(elm, hint) {
  66. if (hint.trim() == '') {
  67. $(elm).parent().find('.v-ftp-path-hint').html('');
  68. }
  69. if (hint[0] != '/') {
  70. hint = '/' + hint;
  71. }
  72. hint = hint.replace(/\/(\/+)/g, '/');
  73. $(elm).parent().find('.v-ftp-path-hint').text(hint);
  74. }
  75. App.Listeners.WEB.keypress_ftp_path = function() {
  76. var ftp_path_inputs = $('.v-ftp-path');
  77. $.each(ftp_path_inputs, function(i, ref) {
  78. var ref = $(ref);
  79. var current_val = ref.val();
  80. if (current_val.trim() != '') {
  81. App.Actions.WEB.update_ftp_path_hint(ref, current_val);
  82. }
  83. ref.bind('keypress input', function(evt) {
  84. clearTimeout(window.frp_usr_tmt);
  85. window.frp_usr_tmt = setTimeout(function() {
  86. var elm = $(evt.target);
  87. App.Actions.WEB.update_ftp_path_hint(elm, $(elm).val());
  88. }, 100);
  89. });
  90. });
  91. }
  92. //
  93. //
  94. App.Actions.WEB.add_ftp_user_form = function() {
  95. var ref = $('#templates').find('.ftptable').clone(true);
  96. var index = $('.data-col2 .ftptable').length + 1;
  97. ref.find('input').each(function(i, elm) {
  98. var attr_value = $(elm).prop('name').replace('%INDEX%', index);
  99. $(elm).prop('name', attr_value);
  100. });
  101. ref.find('.ftp-user-number').text(index);
  102. $('.data-col2 .ftptable:last').after(ref);
  103. var index = 1;
  104. $('.data-col2 .ftp-user-number:visible').each(function(i, o) {
  105. $(o).text(index);
  106. index += 1;
  107. });
  108. }
  109. App.Actions.WEB.remove_ftp_user = function(elm) {
  110. var ref = $(elm).parents('.ftptable');
  111. ref.find('.v-ftp-user-deleted').val('1');
  112. if (ref.find('.v-ftp-user-is-new').val() == 1) {
  113. ref.remove();
  114. return true;
  115. }
  116. ref.removeClass('ftptable-nrm');
  117. ref.hide();
  118. var index = 1;
  119. $('.data-col2 .ftp-user-number:visible').each(function(i, o) {
  120. $(o).text(index);
  121. index += 1;
  122. });
  123. if ($('.ftptable-nrm:visible').length == 0) {
  124. $('.add-new-ftp-user-button').hide();
  125. $('input[name="v_ftp"]').attr('checked', false);
  126. }
  127. }
  128. App.Actions.WEB.toggle_additional_ftp_accounts = function(elm) {
  129. if ($(elm).attr('checked')) {
  130. $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').show();
  131. $('.ftptable-nrm').each(function(i, elm) {
  132. var login = $(elm).find('.v-ftp-user');
  133. if (login.val().trim() != '') {
  134. $(elm).find('.v-ftp-user-deleted').val(0);
  135. }
  136. });
  137. }
  138. else {
  139. $('.ftptable-nrm, .v-add-new-user, .add-new-ftp-user-button').hide();
  140. $('.ftptable-nrm').each(function(i, elm) {
  141. var login = $(elm).find('.v-ftp-user');
  142. if (login.val().trim() != '') {
  143. $(elm).find('.v-ftp-user-deleted').val(1);
  144. }
  145. });
  146. }
  147. }
  148. App.Actions.WEB.toggle_letsencrypt = function(elm) {
  149. if ($(elm).attr('checked')) {
  150. $('#ssltable textarea[name=v_ssl_crt],#ssltable textarea[name=v_ssl_key], #ssltable textarea[name=v_ssl_ca]').attr('disabled', 'disabled');
  151. $('#generate-csr').hide();
  152. if(!$('.lets-encrypt-note').hasClass('enabled')){
  153. $('.lets-encrypt-note').show();
  154. }
  155. }
  156. else {
  157. $('#ssltable textarea[name=v_ssl_crt],#ssltable textarea[name=v_ssl_key], #ssltable textarea[name=v_ssl_ca]').removeAttr('disabled');
  158. $('#generate-csr').show();
  159. $('.lets-encrypt-note').hide();
  160. }
  161. }
  162. App.Actions.WEB.randomPasswordGenerated = function(elm) {
  163. return App.Actions.WEB.passwordChanged(elm);
  164. }
  165. App.Actions.WEB.passwordChanged = function(elm) {
  166. var ref = $(elm).parents('.ftptable');
  167. if (ref.find('.vst-email-alert-on-psw').length == 0) {
  168. var inp_name = ref.find('.v-ftp-user-is-new').prop('name');
  169. inp_name = inp_name.replace('is_new', 'v_ftp_email');
  170. ref.find('tr:last').after('<tr>\
  171. <td class="vst-text step-left input-label">\
  172. Send FTP credentials to email\
  173. </td>\
  174. </tr>\
  175. <tr>\
  176. <td class="step-left">\
  177. <input type="text" value="" name="' + inp_name + '" class="vst-input vst-email-alert-on-psw">\
  178. </td>\
  179. </tr>');
  180. }
  181. }
  182. //
  183. // Page entry point
  184. App.Listeners.WEB.keypress_ftp_username();
  185. App.Listeners.WEB.keypress_ftp_path();
  186. $(function() {
  187. $('.v-ftp-user-psw').on('keypress', function (evt) {
  188. var elm = $(evt.target);
  189. App.Actions.WEB.passwordChanged(elm);
  190. });
  191. App.Actions.WEB.toggle_letsencrypt($('input[name=v_letsencrypt]'));
  192. $('select[name="v_stats"]').change(function(evt){
  193. var select = $(evt.target);
  194. if(select.val() == 'none'){
  195. $('.stats-auth').hide();
  196. } else {
  197. $('.stats-auth').show();
  198. }
  199. });
  200. $('#vstobjects').on('submit', function(evt) {
  201. $('input[disabled]').each(function(i, elm) {
  202. var copy_elm = $(elm).clone(true);
  203. $(copy_elm).attr('type', 'hidden');
  204. $(copy_elm).removeAttr('disabled');
  205. $(elm).after(copy_elm);
  206. });
  207. });
  208. });
  209. function WEBrandom() {
  210. var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
  211. var string_length = 16;
  212. var webrandom = '';
  213. for (var i = 0; i < string_length; i++) {
  214. var rnum = Math.floor(Math.random() * chars.length);
  215. webrandom += chars.substr(rnum, 1);
  216. }
  217. document.v_edit_web.v_stats_password.value = webrandom;
  218. }
  219. function FTPrandom(elm) {
  220. var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
  221. var string_length = 16;
  222. var ftprandomstring = '';
  223. for (var i = 0; i < string_length; i++) {
  224. var rnum = Math.floor(Math.random() * chars.length);
  225. ftprandomstring += chars.substr(rnum, 1);
  226. }
  227. $(elm).parents('.ftptable').find('.v-ftp-user-psw').val(ftprandomstring);
  228. App.Actions.WEB.randomPasswordGenerated && App.Actions.WEB.randomPasswordGenerated(elm);
  229. }
  230. function elementHideShow(elementToHideOrShow){
  231. var el = document.getElementById(elementToHideOrShow);
  232. el.style.display = el.style.display === 'none' ? 'block' : 'none';
  233. }