render.php 4.6 KB

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