homepagepanel.tpl 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <div class="container">
  2. <div class="row mt-2 mb-3">
  3. <div class="col-md-4 ml-1 text-center">
  4. <img src="{routePath('clientarea-sitejet-get-preview', $sitejetServices[0]->id)}"
  5. onerror="this.src = whmcsBaseUrl + '/assets/img/sitejet/preview_placeholder.png';"
  6. alt="Sitejet Preview"
  7. onload="this.style.opacity = 1"
  8. id="sitejetPromoImage"
  9. class="img-fluid d-block"
  10. style="min-height:130px; border: 1px solid #ddd; transition: opacity 0.2s ease-in-out; opacity: 0"
  11. />
  12. </div>
  13. <div class="col-md-6 d-flex justify-content-center justify-content-md-start mt-2 mt-md-0">
  14. <div>
  15. <div class="mb-2">{lang key='sitejetBuilder.chooseWebsite'}</div>
  16. <div class="d-flex" style="gap: 6px;min-width: 250px;">
  17. <select id="sitejetServiceSelect" class="form-control">
  18. {foreach $sitejetServices as $key => $service}
  19. <option value="{$service->id}">{$service->domain}</option>
  20. {/foreach}
  21. </select>
  22. <button class="btn btn-primary btn-custom-action d-block div-service-item"
  23. id="sitejetSsoButton"
  24. data-serviceid="{$sitejetServices[0]->id}"
  25. data-identifier="sitejet"
  26. data-active="true"
  27. style="min-width: 140px;"
  28. >
  29. {lang key="sitejetBuilder.editWebsite"}
  30. </button>
  31. </div>
  32. <div class="alert alert-danger mt-2" id="sitejetAlert"
  33. style="display: none;">{lang key="errorButTryAgain"}</div>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. <script>
  39. jQuery(document).ready(function() {
  40. let sitejetPreviewImage = jQuery('#sitejetPromoImage');
  41. jQuery('#sitejetServiceSelect').on('change', function (e) {
  42. let serviceId = jQuery(e.target).val();
  43. if (serviceId) {
  44. jQuery('#sitejetSsoButton').data('serviceid', serviceId);
  45. // if this were to fail to load, the below onerror handler will fall back to a placeholder image
  46. sitejetPreviewImage.attr(
  47. 'src',
  48. WHMCS.utils.getRouteUrl('/clientarea/sitejet/service/' + serviceId + '/preview')
  49. ).css('opacity', 0.3);
  50. sitejetPreviewImage.data('is-placeholder', false);
  51. }
  52. })
  53. sitejetPreviewImage.removeAttr('onerror').error(function() {
  54. if (!sitejetPreviewImage.data('is-placeholder')) {
  55. sitejetPreviewImage.attr(
  56. 'src',
  57. whmcsBaseUrl + '/assets/img/sitejet/preview_placeholder.png'
  58. );
  59. sitejetPreviewImage.data('is-placeholder', true);
  60. }
  61. });
  62. });
  63. </script>