lagom.tpl 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. {if $existingdomains}
  2. <div class="inline-form hidden" id="domainexisting_domain">
  3. <div class="col-md-12">
  4. <div class="col-sm-9">
  5. <div class="row domains-row">
  6. <div class="col-xs-3 text-right">
  7. <p class="form-control-static" style="color:#FFF">www.</p>
  8. </div>
  9. <div class="col-xs-9">
  10. <select id="existing_domainsld" name="existing_domaindomain" class="form-control">
  11. {foreach key=num item=existingdomain from=$existingdomains}
  12. <option value="{$existingdomain}">{$existingdomain}</option>
  13. {/foreach}
  14. </select>
  15. </div>
  16. </div>
  17. </div>
  18. <div class="col-sm-2">
  19. <button type="submit" id="b_existing_domain" class="btn btn-primary btn-block btn-lg">
  20. {$LANG.orderForm.use}
  21. </button>
  22. </div>
  23. </div>
  24. </div>
  25. {if $WSEXISTING.subdomain}
  26. <div class="inline-form hidden" id="domainsubexisting_domain" >
  27. <div class="col-md-12">
  28. <div class="col-sm-9">
  29. <div class="row domains-row">
  30. <div class="col-xs-2 text-right">
  31. <input name="subdomainexisting_domaindomain" autocapitalize="none" data-toggle="tooltip" data-placement="top" data-trigger="manual" title="{$EDLANG.UseaSubDomainTooltip}" id="subdomainexisting_domaindomains" class="form-control">
  32. </div>
  33. <div class="col-xs-1 text-right" style="padding-right: 0px;padding-left: 0px;width: 2%;">
  34. <p class="form-control-static" style="color:#FFF">.</p>
  35. </div>
  36. <div class="col-xs-9">
  37. <input name="subexisting_domaindomain" type="hidden" value="" id="subexisting_domaindomainid">
  38. <select id="subexisting_domainsld" name="subexisting_domaindomain" class="form-control">
  39. {foreach key=num item=existingdomain from=$existingdomains}
  40. <option data-oldv="{$existingdomain}" value="{$existingdomain}">{$existingdomain}</option>
  41. {/foreach}
  42. </select>
  43. </div>
  44. </div>
  45. </div>
  46. <div class="col-sm-2">
  47. <button type="submit" id="b_subexisting_domain" class="btn btn-submf btn-primary btn-block">
  48. {$LANG.orderForm.use}
  49. </button>
  50. </div>
  51. </div>
  52. </div>
  53. {/if}
  54. {/if}
  55. {literal}
  56. <script>
  57. $(document).ready(function () {
  58. $("#subdomainexisting_domaindomains").on("keyup", function () {
  59. if ($("#subdomainexisting_domaindomains").val() !== '') {
  60. $('#subdomainexisting_domaindomains').tooltip('hide');
  61. var oldvv = $("#subexisting_domainsld").find("option:selected").data("oldv");
  62. $("#subexisting_domaindomainid").val($("#subdomainexisting_domaindomains").val() + '.' + oldvv);
  63. } else {
  64. $("#subexisting_domaindomainid").val('');
  65. }
  66. });
  67. $(".btn-submf").on("click", function () {
  68. jQuery('#frmProductDomain').submit();
  69. });
  70. $("#subexisting_domainsld").on("change", function () {
  71. if ($("#subdomainexisting_domaindomains").val() !== '') {
  72. var oldvv = $("#subexisting_domainsld").find("option:selected").data("oldv");
  73. $("#subexisting_domaindomainid").val($("#subdomainexisting_domaindomains").val() + '.' + oldvv);
  74. } else {
  75. $("#subexisting_domaindomainid").val('');
  76. }
  77. });
  78. });
  79. </script>
  80. <script>
  81. jQuery(document).ready(function () {
  82. jQuery('#frmProductDomain').submit(function (e) {
  83. e.preventDefault();
  84. var btnSearchObj = jQuery(this).find('button[type="submit"]'),
  85. domainSearchResults = jQuery("#DomainSearchResults"),
  86. spotlightTlds = jQuery('#spotlightTlds'),
  87. suggestions = jQuery('#domainSuggestions'),
  88. btnDomainContinue = jQuery('#btnDomainContinue'),
  89. domainoption = jQuery(".panel-domain-option input:checked").val(),
  90. sldInput = jQuery("#" + domainoption + "sld"),
  91. sld = sldInput.val(),
  92. tld = '',
  93. pid = jQuery('#frmProductDomainPid').val(),
  94. tldInput = '';
  95. if (domainoption == 'incart') {
  96. sldInput = jQuery("#" + domainoption + "sld option:selected");
  97. sld = sldInput.text();
  98. } else if (domainoption == 'subexisting' || domainoption == 'subexisting_domain' || domainoption == 'existing_domain') {
  99. if (domainoption == 'subexisting_domain') {
  100. sld = jQuery("#subexisting_domaindomainid").val();
  101. } else {
  102. sldInput = jQuery("#" + domainoption + "sld option:selected");
  103. sld = sldInput.text();
  104. }
  105. } else if (domainoption == 'subdomain') {
  106. tldInput = jQuery("#" + domainoption + "tld option:selected");
  107. tld = tldInput.text();
  108. } else {
  109. tldInput = jQuery("#" + domainoption + "tld");
  110. tld = tldInput.val();
  111. if (sld && !tld) {
  112. tldInput.tooltip('show');
  113. tldInput.focus();
  114. return false;
  115. }
  116. if (tld.substr(0, 1) != '.') {
  117. tld = '.' + tld;
  118. }
  119. }
  120. if (!sld) {
  121. sldInput.tooltip('show');
  122. sldInput.focus();
  123. return false;
  124. }
  125. sldInput.tooltip('hide');
  126. if (tldInput.length) {
  127. tldInput.tooltip('hide');
  128. }
  129. jQuery('input[name="domainoption"]').iCheck('disable');
  130. domainLookupCallCount = 0;
  131. btnSearchObj.attr('disabled', 'disabled').addClass('disabled');
  132. jQuery('.domain-lookup-loader').removeClass('hidden');
  133. jQuery("html, body").animate({scrollTop: $('.domain-lookup-loader').offset().top - 150}, 500);
  134. jQuery('#DomainSearchResults').addClass('hidden');
  135. jQuery('#primaryLookupResult > div').hide();
  136. suggestions.find('li').addClass('hidden').end()
  137. .find('.clone').remove().end();
  138. jQuery('div.panel-footer.more-suggestions').addClass('hidden')
  139. .find('a').removeClass('hidden').end()
  140. .find('span.no-more').addClass('hidden');
  141. jQuery('.btn-add-to-cart').removeAttr('disabled')
  142. .find('span').hide().end()
  143. .find('span.to-add').show();
  144. btnDomainContinue.addClass('hidden').attr('disabled', 'disabled');
  145. if (domainoption != 'register') {
  146. spotlightTlds.hide();
  147. jQuery('.suggested-domains').hide();
  148. }
  149. // if (!domainSearchResults.is(":visible")) {
  150. // domainSearchResults.removeClass('hidden');
  151. // }
  152. if (domainoption == 'register') {
  153. // jQuery('#DomainSearchResults').addClass('hidden');
  154. jQuery('#resultDomainOption').val(domainoption);
  155. var lookup = jQuery.post(
  156. WHMCS.utils.getRouteUrl('/domain/check'),
  157. {
  158. token: csrfToken,
  159. type: 'domain',
  160. domain: sld + tld
  161. },
  162. 'json'
  163. ),
  164. spotlight = jQuery.post(
  165. WHMCS.utils.getRouteUrl('/domain/check'),
  166. {
  167. token: csrfToken,
  168. type: 'spotlight',
  169. domain: sld + tld
  170. },
  171. 'json'
  172. ),
  173. suggestion = jQuery.post(
  174. WHMCS.utils.getRouteUrl('/domain/check'),
  175. {
  176. token: csrfToken,
  177. type: 'suggestions',
  178. domain: sld + tld
  179. },
  180. 'json'
  181. );
  182. // primary lookup handler
  183. lookup.done(function (data) {
  184. jQuery.each(data.result, function (index, domain) {
  185. var pricing = null,
  186. result = jQuery('#primaryLookupResult'),
  187. available = result.find('.domain-available'),
  188. availablePrice = result.find('.domain-price'),
  189. unavailable = result.find('.domain-unavailable'),
  190. invalid = result.find('.domain-invalid'),
  191. contactSupport = result.find('.domain-contact-support'),
  192. resultDomain = jQuery('#resultDomain'),
  193. resultDomainPricing = jQuery('#resultDomainPricingTerm');
  194. result.removeClass('hidden').show();
  195. if (!data.result.error && domain.isValidDomain) {
  196. pricing = domain.pricing;
  197. if (domain.isAvailable && typeof pricing !== 'string') {
  198. if (domain.preferredTLDNotAvailable) {
  199. unavailable.show().find('strong').html(domain.originalUnavailableDomain);
  200. }
  201. contactSupport.hide();
  202. available.show().find('strong').html(domain.domainName);
  203. availablePrice.show().find('.price').html(pricing[Object.keys(pricing)[0]].register).end()
  204. .find('button').attr('data-domain', domain.idnDomainName);
  205. resultDomain.val(domain.domainName);
  206. resultDomainPricing.val(Object.keys(pricing)[0]).attr('name', 'domainsregperiod[' + domain.domainName + ']');
  207. btnDomainContinue.removeAttr('disabled');
  208. $('body').addClass('is-actions');
  209. //var counterDomain = parseInt(jQuery('#cartItemCount').text()),
  210. //domainNumber = counterDomain + 1;
  211. //jQuery('#cartItemCount').html(domainNumber).addClass('badge--primary');
  212. } else {
  213. unavailable.show().find('strong').html(domain.domainName);
  214. contactSupport.hide();
  215. if (typeof pricing === 'string' && pricing == 'ContactUs') {
  216. contactSupport.show();
  217. }
  218. }
  219. } else {
  220. var invalidLength = invalid.find('span.domain-length-restrictions');
  221. invalidLength.hide();
  222. if (domain.minLength > 0 && domain.maxLength > 0) {
  223. invalidLength.find('.min-length').html(domain.minLength).end()
  224. .find('.max-length').html(domain.maxLength).end();
  225. invalidLength.show();
  226. }
  227. invalid.show();
  228. }
  229. });
  230. }).always(function () {
  231. hasProductDomainLookupEnded(3, btnSearchObj);
  232. });
  233. // spotlight lookup handler
  234. spotlight.done(function (data) {
  235. if (typeof data != 'object' || data.result.length == 0 || data.result.error) {
  236. jQuery('.domain-lookup-spotlight-loader').hide();
  237. return;
  238. }
  239. jQuery.each(data.result, function (index, domain) {
  240. var tld = domain.tldNoDots,
  241. pricing = domain.pricing,
  242. result = jQuery('#spotlight' + tld + ' .domain-lookup-result');
  243. jQuery('.domain-lookup-spotlight-loader').hide();
  244. result.find('button').addClass('hidden').end();
  245. if (domain.isValidDomain) {
  246. if (domain.isAvailable && typeof pricing !== 'string') {
  247. result
  248. .find('span.available').html(pricing[Object.keys(pricing)[0]].register).removeClass('hidden').end()
  249. .find('button.btn-add-to-cart')
  250. .attr('data-domain', domain.idnDomainName)
  251. .removeClass('hidden');
  252. } else {
  253. if (typeof pricing === 'string') {
  254. if (pricing == '') {
  255. result.find('button.unavailable').removeClass('hidden').end();
  256. } else {
  257. result.find('button.domain-contact-support').removeClass('hidden').end();
  258. }
  259. result.find('span.available').addClass('hidden').end();
  260. } else {
  261. result.find('button.unavailable').removeClass('hidden').end();
  262. result.find('span.available').addClass('hidden').end();
  263. }
  264. }
  265. } else {
  266. result.find('button.invalid.hidden').removeClass('hidden').end()
  267. .find('span.available').addClass('hidden').end()
  268. .find('button').not('button.invalid').addClass('hidden');
  269. }
  270. result.removeClass('hidden');
  271. });
  272. }).always(function () {
  273. hasProductDomainLookupEnded(3, btnSearchObj);
  274. });
  275. // suggestions lookup handler
  276. suggestion.done(function (data) {
  277. if (typeof data != 'object' || data.result.length == 0 || data.result.error) {
  278. jQuery('.suggested-domains').fadeOut('fast', function () {
  279. jQuery(this).addClass('hidden');
  280. });
  281. return;
  282. } else {
  283. jQuery('.suggested-domains').removeClass('hidden');
  284. }
  285. var suggestionCount = 1;
  286. jQuery.each(data.result, function (index, domain) {
  287. var tld = domain.tld,
  288. pricing = domain.pricing;
  289. suggestions.find('li:first').clone(true, true).appendTo(suggestions);
  290. var newSuggestion = suggestions.find('li.domain-suggestion').last();
  291. newSuggestion.addClass('clone')
  292. .find('span.domain').html(domain.sld).end()
  293. .find('span.extension').html('.' + tld).end();
  294. if (typeof pricing === 'string') {
  295. newSuggestion.find('button.btn-add-to-cart').remove();
  296. if (pricing != '') {
  297. newSuggestion.find('button.domain-contact-support').removeClass('hidden').end()
  298. .find('span.price').hide();
  299. } else {
  300. newSuggestion.remove();
  301. }
  302. } else {
  303. newSuggestion.find('button.btn-add-to-cart').attr('data-domain', domain.idnDomainName).end()
  304. .find('span.price').html(pricing[Object.keys(pricing)[0]].register).end();
  305. }
  306. if (suggestionCount <= 10) {
  307. newSuggestion.removeClass('hidden');
  308. }
  309. suggestionCount++;
  310. if (domain.group) {
  311. newSuggestion.find('span.promo')
  312. .addClass(domain.group)
  313. .removeClass('hidden')
  314. .end();
  315. newSuggestion.find('span.sales-group-' + domain.group)
  316. .removeClass('hidden')
  317. .end();
  318. }
  319. furtherSuggestions = suggestions.find('li.domain-suggestion.clone.hidden').length;
  320. if (furtherSuggestions > 0) {
  321. jQuery('div.more-suggestions').removeClass('hidden');
  322. }
  323. });
  324. jQuery('.domain-lookup-suggestions-loader').hide();
  325. jQuery('#domainSuggestions').removeClass('hidden');
  326. }).always(function () {
  327. hasProductDomainLookupEnded(3, btnSearchObj);
  328. jQuery('.domain-lookup-loader').addClass('hidden');
  329. jQuery('#DomainSearchResults').removeClass('hidden');
  330. });
  331. } else if (domainoption == 'transfer') {
  332. jQuery('#resultDomainOption').val(domainoption);
  333. var transfer = jQuery.post(
  334. WHMCS.utils.getRouteUrl('/domain/check'),
  335. {
  336. token: csrfToken,
  337. type: 'transfer',
  338. domain: sld + tld
  339. },
  340. 'json'
  341. );
  342. transfer.done(function (data) {
  343. if (typeof data != 'object' || data.result.length == 0) {
  344. jQuery('.domain-lookup-loader').addClass('hidden');
  345. return;
  346. }
  347. var result = jQuery('#primaryLookupResult'),
  348. transfereligible = result.find('.transfer-eligible'),
  349. transferPrice = result.find('.domain-price'),
  350. transfernoteligible = result.find('.transfer-not-eligible'),
  351. resultDomain = jQuery('#resultDomain'),
  352. resultDomainPricing = jQuery('#resultDomainPricingTerm');
  353. if (Object.keys(data.result).length === 0) {
  354. jQuery('.domain-lookup-loader').addClass('hidden');
  355. result.removeClass('hidden').show();
  356. transfernoteligible.show();
  357. }
  358. jQuery.each(data.result, function (index, domain) {
  359. var pricing = domain.pricing;
  360. jQuery('.domain-lookup-loader').addClass('hidden');
  361. result.removeClass('hidden').show();
  362. if (domain.isRegistered) {
  363. transfereligible.show();
  364. transferPrice.show().find('.register-price-label').hide().end()
  365. .find('.transfer-price-label').removeClass('hidden').show().end()
  366. .find('.price').html(pricing[Object.keys(pricing)[0]].transfer).end()
  367. .find('button').attr('data-domain', domain.idnDomainName);
  368. resultDomain.val(domain.domainName);
  369. resultDomainPricing.val(Object.keys(pricing)[0]).attr('name', 'domainsregperiod[' + domain.domainName + ']');
  370. btnDomainContinue.removeAttr('disabled');
  371. } else {
  372. transfernoteligible.show();
  373. }
  374. });
  375. }).always(function () {
  376. hasProductDomainLookupEnded(1, btnSearchObj);
  377. jQuery('.domain-lookup-loader').addClass('hidden');
  378. jQuery('#DomainSearchResults').removeClass('hidden');
  379. });
  380. } else if (domainoption == 'owndomain' || domainoption == 'subdomain' || domainoption == 'incart') {
  381. var otherDomain = jQuery.post(
  382. WHMCS.utils.getRouteUrl('/domain/check'),
  383. {
  384. token: csrfToken,
  385. type: domainoption,
  386. pid: pid,
  387. wscheck: 1,
  388. domain: sld + tld
  389. },
  390. 'json'
  391. );
  392. otherDomain.done(function (data) {
  393. if (typeof data != 'object' || data.result.length == 0) {
  394. jQuery('.domain-lookup-subdomain-loader').hide();
  395. return;
  396. }
  397. if (typeof data.result.wsres !== 'undefined' && data.result.wsres.length > 0) {
  398. $(".errordomainnamepws").remove();
  399. {/literal}
  400. $('#DomainSearchResults').prepend('<div class="errordomainnamepws alert alert-danger"><strong>' + data.result.wsdomain + '</strong> {$EDLANG.errordomain}</div>');
  401. {literal}
  402. }
  403. jQuery.each(data.result, function (index, result) {
  404. if (result.status === true) {
  405. window.location = 'cart.php?a=confproduct&i=' + result.num;
  406. } else {
  407. jQuery('.domain-lookup-loader').addClass('hidden');
  408. jQuery('#primaryLookupResult').removeClass('hidden').show().find('.domain-invalid').show();
  409. }
  410. });
  411. }).always(function () {
  412. hasProductDomainLookupEnded(1, btnSearchObj);
  413. jQuery('.domain-lookup-loader').addClass('hidden');
  414. jQuery('#DomainSearchResults').removeClass('hidden');
  415. });
  416. } else {
  417. var otherDomain = jQuery.post(
  418. WHMCS.utils.getRouteUrl('/domain/check'),
  419. {
  420. token: csrfToken,
  421. type: 'incart',
  422. pid: pid,
  423. wscheck: 1,
  424. domain: sld + tld
  425. },
  426. 'json'
  427. );
  428. otherDomain.done(function (data) {
  429. if (typeof data != 'object' || data.result.length == 0) {
  430. jQuery('.domain-lookup-subdomain-loader').hide();
  431. return;
  432. }
  433. if (typeof data.result.wsres !== 'undefined' && data.result.wsres.length > 0) {
  434. $(".errordomainnamepws").remove();
  435. {/literal}
  436. $('#DomainSearchResults').prepend('<div class="errordomainnamepws alert alert-danger"><strong>' + data.result.wsdomain + '</strong> {$EDLANG.errordomain}</div>');
  437. {literal}
  438. }
  439. jQuery.each(data.result, function (index, result) {
  440. if (result.status === true) {
  441. window.location = 'cart.php?a=confproduct&i=' + result.num;
  442. } else {
  443. jQuery('.domain-lookup-loader').addClass('hidden');
  444. jQuery('#primaryLookupResult').removeClass('hidden').show().find('.domain-invalid').show();
  445. }
  446. });
  447. }).always(function () {
  448. hasProductDomainLookupEnded(1, btnSearchObj);
  449. jQuery('.domain-lookup-loader').addClass('hidden');
  450. jQuery('#DomainSearchResults').removeClass('hidden');
  451. });
  452. }
  453. btnDomainContinue.removeClass('hidden');
  454. });
  455. });
  456. </script>
  457. {/literal}