bongzilla

Untitled

May 17th, 2021 (edited)
183
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script>
  2. const COMMENTS_ENDPOINT = "https://api.pc-prosto.com/skr.php";
  3.  
  4. const COMMENT_FORM = $("#wf-form-comment-form");
  5. const COMMENT_NAME_FIELD = $("#name");
  6. const COMMENT_EMAIL_FIELD = $("#email");
  7. // TODO: rename id
  8. const COMMENT_CONTENT_FIELD = $("#field");
  9.  
  10. const COMMENT_SUBMIT_BUTTON = $("#wf-form-comment-form input[type='submit']");
  11. const SENDING_TEXT = COMMENT_SUBMIT_BUTTON.data("wait");
  12. const SUCCESS_SENDING = $(".w-form-done");
  13. const FAILED_SENDING = $(".w-form-fail");
  14.  
  15. const getFormContent = () => {
  16.     const postSlug = location.pathname.replace("/post/", "");
  17.     const commentName = COMMENT_NAME_FIELD.val();
  18.     const commentEmail = COMMENT_EMAIL_FIELD.val();
  19.     const commentContent = COMMENT_CONTENT_FIELD.val();
  20.  
  21.     return {
  22.         "slug": postSlug,
  23.         "name": commentName,
  24.         "email": commentEmail,
  25.         "text": commentContent
  26.     }
  27. }
  28.  
  29. const generateSlug = (name) => {
  30.     return name.split("").map(letter => letter.toLowerCase()).map(letter => letter.replace(" ", "-")).join("")
  31. }
  32.  
  33. const generateRequestData = (formData) => {
  34.     return {
  35.         "slug": formData.slug,
  36.         "fields": {
  37.             "name": formData.name,
  38.             "slug": url_slug(formData.name),
  39.             "slug-post": "",
  40.             "comment-texts": formData.text,
  41.             "mail": formData.email,
  42.             "date-comment": new Date(),
  43.             "_archived": false,
  44.             "_draft": false
  45.         }
  46.     }
  47. }
  48.  
  49. COMMENT_SUBMIT_BUTTON.on("click", function(e) {
  50.  
  51.     e.preventDefault();
  52.     COMMENT_SUBMIT_BUTTON.val(SENDING_TEXT);
  53.  
  54.     const formData = getFormContent();
  55.     const sendData = generateRequestData(formData);
  56.     console.log("sendData", JSON.stringify(sendData));
  57.  
  58.     fetch(COMMENTS_ENDPOINT, {
  59.         "method": "POST",
  60.         "body": JSON.stringify(sendData),
  61.         "headers": {
  62.             "Content-Type": "application/json"
  63.         }
  64.     })
  65.     .then(response => response.json())
  66.     .then(result => {
  67.         console.log("result is", result);
  68.  
  69.         COMMENT_FORM.hide();
  70.         SUCCESS_SENDING.show();
  71.     })
  72.     .catch(err => {
  73.         console.log("error", err);
  74.         FAILED_SENDING.show();
  75.     })
  76. });
  77.  
  78. /**
  79.  * Create a web friendly URL slug from a string.
  80.  *
  81.  * Requires XRegExp (http://xregexp.com) with unicode add-ons for UTF-8 support.
  82.  *
  83.  * Although supported, transliteration is discouraged because
  84.  *     1) most web browsers support UTF-8 characters in URLs
  85.  *     2) transliteration causes a loss of information
  86.  *
  87.  * @author Sean Murphy <sean@iamseanmurphy.com>
  88.  * @copyright Copyright 2012 Sean Murphy. All rights reserved.
  89.  * @license http://creativecommons.org/publicdomain/zero/1.0/
  90.  *
  91.  * @param string s
  92.  * @param object opt
  93.  * @return string
  94.  */
  95. function url_slug(s, opt) {
  96.     s = String(s);
  97.     opt = Object(opt);
  98.  
  99.     var defaults = {
  100.         'delimiter': '-',
  101.         'limit': undefined,
  102.         'lowercase': true,
  103.         'replacements': {},
  104.         'transliterate': (typeof(XRegExp) === 'undefined') ? true : false
  105.     };
  106.  
  107.     // Merge options
  108.     for (var k in defaults) {
  109.         if (!opt.hasOwnProperty(k)) {
  110.             opt[k] = defaults[k];
  111.         }
  112.     }
  113.  
  114.     var char_map = {
  115.         // Latin
  116.         'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': 'C',
  117.         'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I', 'Ï': 'I',
  118.         'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': 'O', 'Ő': 'O',
  119.         'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH',
  120.         'ß': 'ss',
  121.         'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c',
  122.         'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i',
  123.         'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o',
  124.         'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th',
  125.         'ÿ': 'y',
  126.  
  127.         // Latin symbols
  128.         '©': '(c)',
  129.  
  130.         // Greek
  131.         'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', 'Η': 'H', 'Θ': '8',
  132.         'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', 'Ξ': '3', 'Ο': 'O', 'Π': 'P',
  133.         'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W',
  134.         'Ά': 'A', 'Έ': 'E', 'Ί': 'I', 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I',
  135.         'Ϋ': 'Y',
  136.         'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', 'θ': '8',
  137.         'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', 'ο': 'o', 'π': 'p',
  138.         'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', 'χ': 'x', 'ψ': 'ps', 'ω': 'w',
  139.         'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's',
  140.         'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', 'ΐ': 'i',
  141.  
  142.         // Turkish
  143.         'Ş': 'S', 'İ': 'I', 'Ç': 'C', 'Ü': 'U', 'Ö': 'O', 'Ğ': 'G',
  144.         'ş': 's', 'ı': 'i', 'ç': 'c', 'ü': 'u', 'ö': 'o', 'ğ': 'g',
  145.  
  146.         // Russian
  147.         'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', 'Ж': 'Zh',
  148.         'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', 'Н': 'N', 'О': 'O',
  149.         'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', 'Ф': 'F', 'Х': 'H', 'Ц': 'C',
  150.         'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '', 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu',
  151.         'Я': 'Ya',
  152.         'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', 'ж': 'zh',
  153.         'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o',
  154.         'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c',
  155.         'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '', 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu',
  156.         'я': 'ya',
  157.  
  158.         // Ukrainian
  159.         'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G',
  160.         'є': 'ye', 'і': 'i', 'ї': 'yi', 'ґ': 'g',
  161.  
  162.         // Czech
  163.         'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R', 'Š': 'S', 'Ť': 'T', 'Ů': 'U',
  164.         'Ž': 'Z',
  165.         'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't', 'ů': 'u',
  166.         'ž': 'z',
  167.  
  168.         // Polish
  169.         'Ą': 'A', 'Ć': 'C', 'Ę': 'e', 'Ł': 'L', 'Ń': 'N', 'Ó': 'o', 'Ś': 'S', 'Ź': 'Z',
  170.         'Ż': 'Z',
  171.         'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's', 'ź': 'z',
  172.         'ż': 'z',
  173.  
  174.         // Latvian
  175.         'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'i', 'Ķ': 'k', 'Ļ': 'L', 'Ņ': 'N',
  176.         'Š': 'S', 'Ū': 'u', 'Ž': 'Z',
  177.         'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', 'ņ': 'n',
  178.         'š': 's', 'ū': 'u', 'ž': 'z'
  179.     };
  180.  
  181.     // Make custom replacements
  182.     for (var k in opt.replacements) {
  183.         s = s.replace(RegExp(k, 'g'), opt.replacements[k]);
  184.     }
  185.  
  186.     // Transliterate characters to ASCII
  187.     if (opt.transliterate) {
  188.         for (var k in char_map) {
  189.             s = s.replace(RegExp(k, 'g'), char_map[k]);
  190.         }
  191.     }
  192.  
  193.     // Replace non-alphanumeric characters with our delimiter
  194.     var alnum = (typeof(XRegExp) === 'undefined') ? RegExp('[^a-z0-9]+', 'ig') : XRegExp('[^\\p{L}\\p{N}]+', 'ig');
  195.     s = s.replace(alnum, opt.delimiter);
  196.  
  197.     // Remove duplicate delimiters
  198.     s = s.replace(RegExp('[' + opt.delimiter + ']{2,}', 'g'), opt.delimiter);
  199.  
  200.     // Truncate slug to max. characters
  201.     s = s.substring(0, opt.limit);
  202.  
  203.     // Remove delimiter from ends
  204.     s = s.replace(RegExp('(^' + opt.delimiter + '|' + opt.delimiter + '$)', 'g'), '');
  205.  
  206.     return opt.lowercase ? s.toLowerCase() : s;
  207. }
  208. </script>
RAW Paste Data