prepare ajax
This commit is contained in:
parent
0c00764ef5
commit
de3a683cbe
|
@ -11,7 +11,7 @@ $(document).ready(function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
PhpComment.prototype.setupVariables = function () {
|
PhpComment.prototype.setupVariables = function () {
|
||||||
this.commentForm = this.element.find(".comment-form");
|
this.commentForm = this.element.find(".comments-form");
|
||||||
this.titleField = this.element.find("#comment_title");
|
this.titleField = this.element.find("#comment_title");
|
||||||
this.bodyField = this.element.find("#comment_body");
|
this.bodyField = this.element.find("#comment_body");
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ $(document).ready(function () {
|
||||||
title = phpComment.titleField.val(),
|
title = phpComment.titleField.val(),
|
||||||
body = phpComment.bodyField.val();
|
body = phpComment.bodyField.val();
|
||||||
|
|
||||||
if(phpComment.commentForm.parents(".media").length > 0){
|
if(phpComment.commentForm.parents(".comment").length > 0){
|
||||||
parentId = phpComment.commentForm.closest(".media").attr("data-Id");
|
parentId = phpComment.commentForm.closest(".comment").attr("data-Id");
|
||||||
}
|
}
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -63,8 +63,7 @@ $(document).ready(function () {
|
||||||
|
|
||||||
$(document).on("click", ".comment-add-new", function (e) {
|
$(document).on("click", ".comment-add-new", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var media = $(this).closest(".comments");
|
$(this).find(".comments").before(phpComment.commentForm);
|
||||||
media.find(">.comment-body>.comment-text").after(phpComment.commentForm);
|
|
||||||
});
|
});
|
||||||
$(document).on("click", ".comment-add-reply", function (e) {
|
$(document).on("click", ".comment-add-reply", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
50
comments.php
50
comments.php
|
@ -56,6 +56,13 @@ class CommentsPlugin extends Plugin
|
||||||
public function onTwigSiteVariables() {
|
public function onTwigSiteVariables() {
|
||||||
$this->grav['twig']->enable_comments_plugin = $this->enable;
|
$this->grav['twig']->enable_comments_plugin = $this->enable;
|
||||||
$this->grav['twig']->comments = $this->fetchComments();
|
$this->grav['twig']->comments = $this->fetchComments();
|
||||||
|
if ($this->config->get('plugins.comments.built_in_css')) {
|
||||||
|
$this->grav['assets']
|
||||||
|
->addCss('plugin://comments/assets/comments.css');
|
||||||
|
}
|
||||||
|
$this->grav['assets']
|
||||||
|
->add('jquery', 101)
|
||||||
|
->addJs('plugin://comments/assets/comments.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -166,15 +173,52 @@ class CommentsPlugin extends Plugin
|
||||||
// $this->total_stars = $this->config->get('plugins.star-ratings.total_stars');
|
// $this->total_stars = $this->config->get('plugins.star-ratings.total_stars');
|
||||||
// $this->only_full_stars = $this->config->get('plugins.star-ratings.only_full_stars');
|
// $this->only_full_stars = $this->config->get('plugins.star-ratings.only_full_stars');
|
||||||
|
|
||||||
// Process vote if required
|
// Process comment if required
|
||||||
if ($this->callback === $this->grav['uri']->path()) {
|
if ($this->callback === $this->grav['uri']->path()) {
|
||||||
// try to add the vote
|
// try to add the comment
|
||||||
$result = $this->addVote();
|
$result = $this->addComment();
|
||||||
echo json_encode(['status' => $result[0], 'message' => $result[1], 'data' => ['score' => $result[2][0], 'count' => $result[2][1]]]);
|
echo json_encode(['status' => $result[0], 'message' => $result[1], 'data' => ['score' => $result[2][0], 'count' => $result[2][1]]]);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addComment()
|
||||||
|
{
|
||||||
|
$nonce = $this->grav['uri']->param('nonce');
|
||||||
|
if (!Utils::verifyNonce($nonce, 'comments')) {
|
||||||
|
return [false, 'Invalid security nonce', [0, 0]];
|
||||||
|
}
|
||||||
|
$language = $this->grav['language'];
|
||||||
|
// get and filter the data
|
||||||
|
$parent_id = filter_input(INPUT_POST, 'parent_id', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
|
||||||
|
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING);
|
||||||
|
$text = filter_input(INPUT_POST, 'text', FILTER_SANITIZE_STRING);
|
||||||
|
$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);
|
||||||
|
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
|
||||||
|
//$data = $this->getStars($id);
|
||||||
|
$data = array(
|
||||||
|
['parent_id'] => $parent_id,
|
||||||
|
['email'] => $email,
|
||||||
|
['text'] => $text,
|
||||||
|
['title'] => $title,
|
||||||
|
['name'] => $name,
|
||||||
|
);
|
||||||
|
// ensure both values are sent
|
||||||
|
if (is_null($title) || is_null($text)) {
|
||||||
|
return [false, 'missing either text or title', [0, 0]];
|
||||||
|
//return [false, $language->translate('PLUGIN_COMMENTS.FAIL'), $data];
|
||||||
|
}
|
||||||
|
// sanity checks for parents
|
||||||
|
if ($parent_id < 0) {
|
||||||
|
$parent_id = 0;
|
||||||
|
} elseif ($parent_id > 999 ) { //TODO: Change to 'exists in list of comment ids
|
||||||
|
$parent_id = 0;
|
||||||
|
}
|
||||||
|
//$this->saveVoteData($id, $rating);
|
||||||
|
//$data = $this->getStars($id);
|
||||||
|
return [true, $language->translate('PLUGIN_COMMENTS.SUCCESS'), $data];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle form processing instructions.
|
* Handle form processing instructions.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<h3>{{'PLUGIN_COMMENTS.ADD_COMMENT'|t}}</h3>
|
<h3>{{'PLUGIN_COMMENTS.ADD_COMMENT'|t}}</h3>
|
||||||
<form name="{{ grav.config.plugins.comments.form.name }}"
|
<form name="{{ grav.config.plugins.comments.form.name }}" class="comments-form"
|
||||||
action="{{ grav.config.plugins.comments.form.action ? base_url ~ grav.config.plugins.comments.form.action : page.url }}"
|
action="{{ grav.config.plugins.comments.form.action ? base_url ~ grav.config.plugins.comments.form.action : page.url }}"
|
||||||
method="{{ grav.config.plugins.comments.form.method|upper|default('POST') }}">
|
method="{{ grav.config.plugins.comments.form.method|upper|default('POST') }}">
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
{% if grav.twig.comments|length %}
|
{% if grav.twig.comments|length %}
|
||||||
|
|
||||||
<h3>{{'PLUGIN_COMMENTS.COMMENTS'|t}}</h3>
|
<h3>{{'PLUGIN_COMMENTS.COMMENTS'|t}}</h3>
|
||||||
|
<a class="comment-add-new" href="#">{{'PLUGIN_COMMENTS.ADD_NEW'|t}}</a>
|
||||||
<div class="row comments">
|
<div class="row comments">
|
||||||
{% for comment in grav.twig.comments|array_reverse %}
|
{% for comment in grav.twig.comments|array_reverse %}
|
||||||
<div class="comment comment-level-{{comment.level|e}}" data-Id="{{comment.id}}" >
|
<div class="comment comment-level-{{comment.level|e}}" data-Id="{{comment.id}}" >
|
||||||
|
@ -17,7 +18,7 @@
|
||||||
<div class="comment-body">
|
<div class="comment-body">
|
||||||
<div class="comment-heading">
|
<div class="comment-heading">
|
||||||
<div class="comment-title"><h4>{{comment.title}}</h4></div>
|
<div class="comment-title"><h4>{{comment.title}}</h4></div>
|
||||||
<div class="comment-reply"><a class="reply-link" href="#">Reply</a></div>
|
<div class="comment-reply"><a class="comment-add-reply" href="#">{{'PLUGIN_COMMENTS.ADD_REPLY'|t}}</a></div>
|
||||||
<div class="comment-meta">{{'PLUGIN_COMMENTS.WRITTEN_ON'|t}} {{comment.date|e}} {{'PLUGIN_COMMENTS.BY'|t}} {{comment.author}}</div>
|
<div class="comment-meta">{{'PLUGIN_COMMENTS.WRITTEN_ON'|t}} {{comment.date|e}} {{'PLUGIN_COMMENTS.BY'|t}} {{comment.author}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="comment-text" >
|
<div class="comment-text" >
|
||||||
|
|
Loading…
Reference in New Issue