diff --git a/comments.php b/comments.php index 9570777..c3df1b7 100644 --- a/comments.php +++ b/comments.php @@ -15,6 +15,7 @@ use Symfony\Component\Yaml\Yaml; class CommentsPlugin extends Plugin { protected $route = 'comments'; + protected $enable = false; /** * @return array @@ -51,7 +52,43 @@ class CommentsPlugin extends Plugin public function onTwigSiteVariables() { if (!$this->isAdmin()) { - $this->grav['twig']->comments = $this->fetchComments(); + $this->grav['twig']->enable = $this->enable; + + if ($this->enable) { + $this->grav['twig']->comments = $this->fetchComments(); + } + } + } + + /** + * Determine if $haystack starts with $needle. Credit: http://stackoverflow.com/a/10473026/205039 + */ + private function startsWith($haystack, $needle) { + return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE; + } + + /** + * Determine if the plugin should be enabled based on the enable_on_routes and disable_on_routes config options + */ + private function calculateEnable() { + $uri = $this->grav['uri']; + + $disable_on_routes = (array) $this->config->get('plugins.comments.disable_on_routes'); + $enable_on_routes = (array) $this->config->get('plugins.comments.enable_on_routes'); + + $path = $uri->path(); + + if (!in_array($path, $disable_on_routes)) { + if (in_array($path, $enable_on_routes)) { + $this->enable = true; + } else { + foreach($enable_on_routes as $route) { + if ($this->startsWith($path, $route)) { + $this->enable = true; + break; + } + } + } } } @@ -61,6 +98,8 @@ class CommentsPlugin extends Plugin { if (!$this->isAdmin()) { + $this->calculateEnable(); + $this->enable([ 'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0], ]); @@ -118,6 +157,7 @@ class CommentsPlugin extends Plugin $name = filter_var(urldecode($post['name']), FILTER_SANITIZE_STRING); $email = filter_var(urldecode($post['email']), FILTER_SANITIZE_STRING); $title = filter_var(urldecode($post['title']), FILTER_SANITIZE_STRING); + /** @var Language $language */ $language = $this->grav['language']; $lang = $language->getLanguage(); diff --git a/comments.yaml b/comments.yaml index d443c0f..13a3cf7 100644 --- a/comments.yaml +++ b/comments.yaml @@ -1,4 +1,13 @@ enabled: true + +enable_on_routes: + - '/blog' + +disable_on_routes: + - /blog/blog-post-to-ignore + - /ignore-this-route + #- '/blog/daring-fireball-link' + form: name: comments fields: @@ -45,7 +54,7 @@ form: # - name: g-recaptcha-response # label: Captcha # type: captcha - # recatpcha_site_key: 6Lde4gwTAAAAAAZuv4z2AgVU6Xamn5twDYzQr8hv + # recatpcha_site_key: e32iojeoi32jeoi32jeoij32oiej32oiej3 # recaptcha_not_validated: 'Captcha not valid!' # validate: # required: true @@ -61,7 +70,7 @@ form: # subject: "[Site Guestbook] {{ form.value.name|e }}" # body: "{% include 'forms/data.html.twig' %}" # - captcha: - # recatpcha_secret: 6Lde4gwTAAAAAPpwVKuaYm53n2bWfFfxcDxSlI54 + # recatpcha_secret: ej32oiej23oiej32oijeoi32jeio32je - addComment: - message: Thank you for writing your comment! diff --git a/templates/partials/comments.html.twig b/templates/partials/comments.html.twig index f572482..3462a23 100644 --- a/templates/partials/comments.html.twig +++ b/templates/partials/comments.html.twig @@ -1,41 +1,44 @@ -

{{'PLUGIN_COMMENTS.ADD_COMMENT'|t}}

+{% if grav.twig.enable %} -
-{% for field in grav.config.plugins.comments.form.fields %} +

{{'PLUGIN_COMMENTS.ADD_COMMENT'|t}}

- {% set value = form.value(field.name) %} - {% if field.evaluateDefault %} - {% set value = evaluate(field.evaluateDefault) %} - {% endif %} -
- {% include "forms/fields/#{field.type}/#{field.type}.html.twig" %} -
-{% endfor %} + + {% for field in grav.config.plugins.comments.form.fields %} -
- {% for button in grav.config.plugins.comments.form.buttons %} - + {% set value = form.value(field.name) %} + {% if field.evaluateDefault %} + {% set value = evaluate(field.evaluateDefault) %} + {% endif %} +
+ {% include "forms/fields/#{field.type}/#{field.type}.html.twig" %} +
{% endfor %} -
-
-
{{ form.message }}
- -{% if grav.twig.comments|length %} - -

{{'PLUGIN_COMMENTS.COMMENTS'|t}}

- - - {% for comment in grav.twig.comments|array_reverse %} - - - +
+ {% for button in grav.config.plugins.comments.form.buttons %} + {% endfor %} -
- {{comment.text|e}} -
- {{'PLUGIN_COMMENTS.WRITTEN_ON'|t}} {{comment.date|e}} {{'PLUGIN_COMMENTS.BY'|t}} {{comment.author|e}} -
+ + + +
{{ form.message }}
+ + {% if grav.twig.comments|length %} + +

{{'PLUGIN_COMMENTS.COMMENTS'|t}}

+ + + {% for comment in grav.twig.comments|array_reverse %} + + + + {% endfor %} +
+ {{comment.text|e}} +
+ {{'PLUGIN_COMMENTS.WRITTEN_ON'|t}} {{comment.date|e}} {{'PLUGIN_COMMENTS.BY'|t}} {{comment.author|e}} +
+ {% endif %} {% endif %} \ No newline at end of file