From 7f91aaf7add8a8c2528b513a9ef9315cd2ae9db3 Mon Sep 17 00:00:00 2001 From: Vincent Tam Date: Fri, 26 Jul 2019 20:13:31 +0200 Subject: Dynamically set form action URL https://www.willmaster.com/library/manage-forms/bot-block-for-forms.php --- assets/js/staticman.js | 7 +- ...man.js_8cd1ffcbd6280a9d3369580fb528eb22.content | 102 +++++++++++++++++++++ ...ticman.js_8cd1ffcbd6280a9d3369580fb528eb22.json | 1 + layouts/_default/single.html | 2 +- layouts/partials/staticman-comments.html | 3 +- 5 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.content create mode 100644 exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.json diff --git a/assets/js/staticman.js b/assets/js/staticman.js index dd21c81..052f076 100644 --- a/assets/js/staticman.js +++ b/assets/js/staticman.js @@ -10,9 +10,14 @@ $(document).ready(function() { $('input[type="submit"]:enabled').addClass('hidden'); // hide "submit" $('input[type="submit"]:disabled').removeClass('hidden'); // show "submitted" + var endpoint = '{{ .endpoint | default "https://staticman-frama.herokuapp.com" }}'; + var gitProvider = '{{ .gitprovider }}'; + var repo = '{{ .repo }}'; + var branch = '{{ .branch }}'; + $.ajax({ type: $(this).attr('method'), - url: $(this).attr('action'), + url: endpoint + '/v3/entry/' + gitProvider + '/' + repo + '/' + branch + '/comments', data: $(this).serialize(), contentType: 'application/x-www-form-urlencoded', success: function (data) { diff --git a/exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.content b/exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.content new file mode 100644 index 0000000..8143c90 --- /dev/null +++ b/exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.content @@ -0,0 +1,102 @@ +// Static comments +// from: https://github.com/eduardoboucas/popcorn/blob/gh-pages/js/main.js +$(document).ready(function() { + var $comments = $('.js-comments'); + + $('.js-form').submit(function () { + var form = this; + + $(form).disabled = true; + $('input[type="submit"]:enabled').addClass('hidden'); // hide "submit" + $('input[type="submit"]:disabled').removeClass('hidden'); // show "submitted" + + var endpoint = 'https://staticman-frama.herokuapp.com'; + var gitProvider = 'gitlab'; + var repo = 'staticman-gitlab-pages/huginn'; + var branch = 'master'; + + $.ajax({ + type: $(this).attr('method'), + url: endpoint + '/v3/entry/' + gitProvider + '/' + repo + '/' + branch + '/comments', + data: $(this).serialize(), + contentType: 'application/x-www-form-urlencoded', + success: function (data) { + showAlert('success'); + setTimeout(function(){ clearForm() }, 3000); // display success message for 3s + $(form).disabled = false; + }, + error: function (err) { + console.log(err); + showAlert('failed'); + $(form).disabled = false; + } + }); + + return false; + }); + + function showAlert(msg) { + if (msg == 'success') { + $('.js-form .submit-success').removeClass('hidden'); // show submit success message + $('.js-form .submit-failed').addClass('hidden'); // hide submit failed message + } else { + $('.js-form .submit-success').addClass('hidden'); // hide submit success message + $('.js-form .submit-failed').removeClass('hidden'); // show submit failed message + } + $('input[type="submit"]:enabled').removeClass('hidden'); // show "submit" + $('input[type="submit"]:disabled').addClass('hidden'); // hide "submitted" + } + + function clearForm() { + resetReplyTarget(); + $('.js-form input') + .filter(function() { + return this.name.match(/^fields\[.*\]$/); + }) + .val(''); // empty all text & hidden fields + $('.js-form textarea').val(''); // empty text area + $('.js-form .submit-success').addClass('hidden'); // hide submission status + $('.js-form .submit-failed').addClass('hidden'); // hide submission status + } + + function resetReplyTarget() { + $('.js-form .reply-notice .reply-name').text(''); // reset reply target + $('.js-form .reply-notice img').remove(); // remove reply avatar + $('.js-form .reply-notice a').remove(); // remove '×' button + $('.js-form .reply-notice').addClass('hidden'); // hide reply target display + $('.js-form input[name="fields[replyThread]"]').val(''); + $('.js-form input[name="fields[replyID]"]').val(''); + $('.js-form input[name="fields[replyName]"]').val(''); + } + + // record reply target when "reply to this comment" is pressed + $('article.static-comment').on('click', 'a.reply-btn', function (evt){ + resetReplyTarget(); + var cmt = $(evt.delegateTarget); + $('.js-form input[name="fields[replyThread]"]').val(this.title); + $('.js-form input[name="fields[replyID]"]').val(cmt.attr("id")); + authorTag = cmt.find('.comment-author'); + replyName = authorTag.text(); + $('.js-form input[name="fields[replyName]"]').val(replyName); + + // display reply target avatar and name + $('.js-form .reply-notice').removeClass('hidden'); + $('.js-form .reply-name').text(replyName); + avatarTag = cmt.find('.comment-avatar'); + // use clone to avoid removal of avatar in comments by resetReplyTarget() + $('.js-form .reply-arrow').after(avatarTag.clone()); + // add button for removing reply target (static method would give error msg) + closeBtn = $("×"); + $('.js-form .reply-notice').append(closeBtn); + }); + + // handle removal of reply target when '×' is pressed + $('.js-form .reply-notice').on('click', 'a.close-btn', function(){ + resetReplyTarget(); + }); + + // clear form when reset button is clicked + $('.js-form input[type="reset"]').click(function (){ + clearForm(); + }); +}); diff --git a/exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.json b/exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.json new file mode 100644 index 0000000..2f9ee3f --- /dev/null +++ b/exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.json @@ -0,0 +1 @@ +{"Target":"js/staticman.js","MediaType":"application/javascript","Data":{}} \ No newline at end of file diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 7235d83..5bdd6f6 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -68,7 +68,7 @@ {{ end }} {{ if .Site.Params.staticman }} - {{ $smjs := resources.Get "js/staticman.js" }} + {{ $smjs := resources.Get "js/staticman.js" | resources.ExecuteAsTemplate "js/staticman.js" .Site.Params.staticman }} {{ partial "staticman-comments.html" . }} {{ end }} diff --git a/layouts/partials/staticman-comments.html b/layouts/partials/staticman-comments.html index 1a7d584..ac49778 100644 --- a/layouts/partials/staticman-comments.html +++ b/layouts/partials/staticman-comments.html @@ -55,8 +55,7 @@ {{ end }} {{ end }} -
+