Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/VincentTam/huginn.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Tam <sere@live.hk>2019-07-26 21:13:31 +0300
committerVincent Tam <sere@live.hk>2019-07-26 21:15:31 +0300
commit7f91aaf7add8a8c2528b513a9ef9315cd2ae9db3 (patch)
tree0986e16ed16be5815788d4a46b0321f7c340465e
parent500a780b0dfc733a307bf7cd0da8d9c026ddd86f (diff)
Dynamically set form action URL
https://www.willmaster.com/library/manage-forms/bot-block-for-forms.php
-rw-r--r--assets/js/staticman.js7
-rw-r--r--exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.content102
-rw-r--r--exampleSite/resources/_gen/assets/js/js/staticman.js_8cd1ffcbd6280a9d3369580fb528eb22.json1
-rw-r--r--layouts/_default/single.html2
-rw-r--r--layouts/partials/staticman-comments.html3
5 files changed, 111 insertions, 4 deletions
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 = $("<a class='close-btn'>×</a>");
+ $('.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 }}
<script src="{{ "js/jquery.min.js" | relURL }}"></script>
- {{ $smjs := resources.Get "js/staticman.js" }}
+ {{ $smjs := resources.Get "js/staticman.js" | resources.ExecuteAsTemplate "js/staticman.js" .Site.Params.staticman }}
<script src="{{ $smjs.RelPermalink }}"></script>
{{ 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 }}
-<form id="comment-form" class="js-form form" method="post"
- action="{{ .Site.Params.staticman.endpoint | default "https://staticman-frama.herokuapp.com" }}/v3/entry/{{ .Site.Params.staticman.gitProvider }}/{{ .Site.Params.staticman.repo }}/{{ .Site.Params.staticman.branch }}/comments">
+<form id="comment-form" class="js-form form" method="post" action="https://example.com/">
<!-- Start comment form display reply target -->
<p class="reply-notice hidden">