Add enable_on_routes and disable_on_routes config options
Example usage: enable_on_routes: - '/blog' disable_on_routes: - /blog/blog-post-to-ignore - /ignore-this-route #- '/blog/daring-fireball-link'
This commit is contained in:
parent
fe66c4bfd6
commit
13252376e4
42
comments.php
42
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();
|
||||
|
|
|
@ -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!
|
||||
|
||||
|
|
|
@ -1,41 +1,44 @@
|
|||
<h3>{{'PLUGIN_COMMENTS.ADD_COMMENT'|t}}</h3>
|
||||
{% if grav.twig.enable %}
|
||||
|
||||
<form name="{{ grav.config.plugins.comments.form.name }}"
|
||||
action="{{ uri.rootUrl ~ (grav.config.plugins.comments.form.action|default(page.route)) }}"
|
||||
method="{{ grav.config.plugins.comments.form.method|upper|default('POST') }}">
|
||||
{% for field in grav.config.plugins.comments.form.fields %}
|
||||
<h3>{{'PLUGIN_COMMENTS.ADD_COMMENT'|t}}</h3>
|
||||
|
||||
{% set value = form.value(field.name) %}
|
||||
{% if field.evaluateDefault %}
|
||||
{% set value = evaluate(field.evaluateDefault) %}
|
||||
{% endif %}
|
||||
<div>
|
||||
{% include "forms/fields/#{field.type}/#{field.type}.html.twig" %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<form name="{{ grav.config.plugins.comments.form.name }}"
|
||||
action="{{ uri.rootUrl ~ (grav.config.plugins.comments.form.action|default(page.route)) }}"
|
||||
method="{{ grav.config.plugins.comments.form.method|upper|default('POST') }}">
|
||||
{% for field in grav.config.plugins.comments.form.fields %}
|
||||
|
||||
<div class="buttons">
|
||||
{% for button in grav.config.plugins.comments.form.buttons %}
|
||||
<button class="button" type="{{ button.type|default('submit') }}">{{ button.value|default('Submit') }}</button>
|
||||
{% set value = form.value(field.name) %}
|
||||
{% if field.evaluateDefault %}
|
||||
{% set value = evaluate(field.evaluateDefault) %}
|
||||
{% endif %}
|
||||
<div>
|
||||
{% include "forms/fields/#{field.type}/#{field.type}.html.twig" %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="alert">{{ form.message }}</div>
|
||||
|
||||
{% if grav.twig.comments|length %}
|
||||
|
||||
<h3>{{'PLUGIN_COMMENTS.COMMENTS'|t}}</h3>
|
||||
|
||||
<table>
|
||||
{% for comment in grav.twig.comments|array_reverse %}
|
||||
<tr>
|
||||
<td>
|
||||
{{comment.text|e}}
|
||||
<br />
|
||||
{{'PLUGIN_COMMENTS.WRITTEN_ON'|t}} {{comment.date|e}} {{'PLUGIN_COMMENTS.BY'|t}} {{comment.author|e}}
|
||||
</td>
|
||||
</tr>
|
||||
<div class="buttons">
|
||||
{% for button in grav.config.plugins.comments.form.buttons %}
|
||||
<button class="button" type="{{ button.type|default('submit') }}">{{ button.value|default('Submit') }}</button>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="alert">{{ form.message }}</div>
|
||||
|
||||
{% if grav.twig.comments|length %}
|
||||
|
||||
<h3>{{'PLUGIN_COMMENTS.COMMENTS'|t}}</h3>
|
||||
|
||||
<table>
|
||||
{% for comment in grav.twig.comments|array_reverse %}
|
||||
<tr>
|
||||
<td>
|
||||
{{comment.text|e}}
|
||||
<br />
|
||||
{{'PLUGIN_COMMENTS.WRITTEN_ON'|t}} {{comment.date|e}} {{'PLUGIN_COMMENTS.BY'|t}} {{comment.author|e}}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endif %}
|
Loading…
Reference in New Issue