render.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. ?>
  3. <style>
  4. .tsu-newsletter-block-input-custom-class {
  5. border-color: rgba(177, 48, 65, 1);
  6. border-radius: 12px;
  7. padding: 12px;
  8. border-style: solid;
  9. }
  10. .tsu-newsletter-block-input-custom-class:focus {
  11. background-color: rgba(177, 48, 65, 0.1);
  12. }
  13. .tsu-newsletter-block-layout-right-wrapper {
  14. display: flex;
  15. justify-content: space-between;
  16. margin-block-start: unset;
  17. }
  18. .tsu-newsletter-privacy {
  19. font-size: small;
  20. color: grey;
  21. }
  22. .newsletter-success {
  23. font-size: 75%;
  24. color: green;
  25. }
  26. .newsletter-error {
  27. font-size: 75%;
  28. color: red;
  29. }
  30. </style>
  31. <script>
  32. document.addEventListener('DOMContentLoaded', function () {
  33. var submitNewsletterForm = document.getElementById('submit-newsletter-form');
  34. if (submitNewsletterForm) {
  35. submitNewsletterForm.addEventListener('click', function (e) {
  36. e.preventDefault();
  37. submitForm();
  38. });
  39. function validateEmail(email) {
  40. var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  41. return emailRegex.test(email);
  42. }
  43. function submitForm() {
  44. var email = document.getElementById('email').value;
  45. if (validateEmail(email)) {
  46. // ok
  47. var data = {
  48. "email": email
  49. };
  50. var dataToSend = JSON.stringify(data);
  51. var xhr = new XMLHttpRequest();
  52. xhr.addEventListener('load', function () {
  53. //tutaj możemy też sprawdzać inne statusy - np. 404, 500
  54. var parent = document.getElementById('messages');
  55. parent.innerHTML = '';
  56. var newElement = document.createElement('span');
  57. if (xhr.status === 201) {
  58. newElement.id = 'newsletter-success';
  59. newElement.className = 'newsletter-success';
  60. var responseJson = JSON.parse(xhr.response);
  61. newElement.textContent = responseJson.message;
  62. }
  63. if (xhr.status === 200) {
  64. newElement.id = 'newsletter-error';
  65. newElement.className = 'newsletter-error';
  66. var responseJson = JSON.parse(xhr.response);
  67. newElement.textContent = responseJson.message;
  68. }
  69. parent.appendChild(newElement);
  70. });
  71. xhr.addEventListener("error", () => {
  72. console.log('<?php _e('Nie udało się nawiązać połączenia.', 'aiac'); ?>');
  73. });
  74. xhr.open('POST', 'https://tosieuda.org/wp-json/tsu/v1/newsletter/add_email?lang=<?php echo ICL_LANGUAGE_CODE ?>', true);
  75. xhr.setRequestHeader("Content-Type", "application/json");
  76. xhr.send(dataToSend);
  77. } else {
  78. // stop - walidacja
  79. var parent = document.getElementById('messages');
  80. parent.innerHTML = '';
  81. var newElement = document.createElement('span');
  82. newElement.id = 'newsletter-error';
  83. newElement.className = 'newsletter-error';
  84. newElement.textContent = '<?php _e('Wprowadź poprawny adres e-mail.', 'aiac'); ?>';
  85. parent.appendChild(newElement);
  86. }
  87. }
  88. }
  89. });
  90. </script>
  91. <div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="margin-block-start: unset;">
  92. <div id="messages">
  93. </div>
  94. <form id="newsletter-form" class="is-layout-flex tsu-newsletter-block-layout-right-wrapper">
  95. <label for="email" style="display: none;">Adres e-mail</label>
  96. <input id="email" name="email" type="email" style="flex-grow: 3;" class="tsu-newsletter-block-input-custom-class"
  97. placeholder="<?php _e('Adres e-mail...', 'aiac'); ?>" required>
  98. <div class="wp-block-buttons wp-block-buttons-is-layout-flex">
  99. <div class="wp-block-button has-custom-font-size has-small-font-size">
  100. <a href="#" id="submit-newsletter-form" class="wp-block-button__link wp-element-button"
  101. style="border-radius:12px">
  102. → <?php _e('ZAPISUJĘ SIĘ', 'aiac'); ?>
  103. </a>
  104. </div>
  105. </div>
  106. </form>
  107. </div>