diff --git a/themes/three_nids/controllers/comments_3nids.php b/themes/three_nids/controllers/comments_3nids.php
deleted file mode 100644
index 4a59b9bc..00000000
--- a/themes/three_nids/controllers/comments_3nids.php
+++ /dev/null
@@ -1,186 +0,0 @@
-input->get('item_id');
- $item = ORM::factory("item", $item_id);
- access::required("view", $item);
-
- $comments = ORM::factory("comment")
- ->where("item_id", $item->id)
- ->where("state", "published")
- ->orderby("created", "ASC")
- ->find_all();
-
- switch (rest::output_format()) {
- case "json":
- foreach ($comments as $comment) {
- $data[] = array(
- "id" => $comment->id,
- "author_name" => html::clean($comment->author_name()),
- "created" => $comment->created,
- "text" => nl2br(html::purify($comment->text)));
- }
- print json_encode($data);
- break;
-
- case "html":
- $view = new Theme_View("comments.html", "other", "page");
- $view->comments = $comments;
- $view->item_id = $item_id;
- $view->thumb = $item->thumb_url();
- print $view;
- break;
- }
- }
-
- /**
- * Add a new comment to the collection.
- * @see REST_Controller::_create($resource)
- */
- public function _create($comment) {
- $item = ORM::factory("item", $this->input->post("item_id"));
- access::required("view", $item);
-
- $form = comment_three_nids::get_add_form($item);
- $valid = $form->validate();
- if ($valid) {
- if (user::active()->guest && !$form->add_comment->inputs["name"]->value) {
- $form->add_comment->inputs["name"]->add_error("missing", 1);
- $valid = false;
- }
-
- if (!$form->add_comment->text->value) {
- $form->add_comment->text->add_error("missing", 1);
- $valid = false;
- }
- }
-
- if ($valid) {
- $comment = comment::create(
- $item, user::active(),
- $form->add_comment->text->value,
- $form->add_comment->inputs["name"]->value,
- $form->add_comment->email->value,
- $form->add_comment->url->value);
-
- $active = user::active();
- if ($active->guest) {
- $form->add_comment->inputs["name"]->value("");
- $form->add_comment->email->value("");
- $form->add_comment->url->value("");
- } else {
- $form->add_comment->inputs["name"]->value($active->full_name);
- $form->add_comment->email->value($active->email);
- $form->add_comment->url->value($active->url);
- }
- }
- url::redirect(url::site("comments_three_nids?item_id=".$item->id));
-}
- /**
- * Display an existing comment.
- * @todo Set proper Content-Type in a central place (REST_Controller::dispatch?).
- * @see REST_Controller::_show($resource)
- */
- public function _show($comment) {
- $item = ORM::factory("item", $comment->item_id);
- access::required("view", $item);
- if ($comment->state != "published") {
- return;
- }
-
- if (rest::output_format() == "json") {
- print json_encode(
- array("result" => "success",
- "data" => array(
- "id" => $comment->id,
- "author_name" => html::clean($comment->author_name()),
- "created" => $comment->created,
- "text" => nl2br(html::purify($comment->text)))));
- } else {
- $view = new Theme_View("comment.html", "other", "fragment");
- $view->comment = $comment;
- print $view;
- }
- }
-
- /**
- * Change an existing comment.
- * @see REST_Controller::_update($resource)
- */
- public function _update($comment) {
- $item = ORM::factory("item", $comment->item_id);
- access::required("view", $item);
- access::required("edit", $item);
-
- $form = comment_three_nids::get_edit_form($comment);
- if ($form->validate()) {
- $comment->guest_name = $form->edit_comment->inputs["name"]->value;
- $comment->guest_email = $form->edit_comment->email->value;
- $comment->url = $form->edit_comment->url->value;
- $comment->text = $form->edit_comment->text->value;
- $comment->save();
-
- print json_encode(
- array("result" => "success",
- "resource" => url::site("comments/{$comment->id}")));
- } else {
- print json_encode(
- array("result" => "error",
- "html" => $form->__toString()));
- }
- }
-
- /**
- * Delete existing comment.
- * @see REST_Controller::_delete($resource)
- */
- public function _delete($comment) {
- $item = ORM::factory("item", $comment->item_id);
- access::required("view", $item);
- access::required("edit", $item);
-
- $comment->delete();
- print json_encode(array("result" => "success"));
- }
-
- /**
- * Present a form for adding a new comment to this item or editing an existing comment.
- * @see REST_Controller::form_add($resource)
- */
- public function _form_add($item_id) {
- $item = ORM::factory("item", $item_id);
- access::required("view", $item);
-
- print comment_three_nids::get_add_form($item);
- }
-
- /**
- * Present a form for editing an existing comment.
- * @see REST_Controller::form_edit($resource)
- */
- public function _form_edit($comment) {
- if (!user::active()->admin) {
- access::forbidden();
- }
- print comment_three_nids::get_edit_form($comment);
- }
-}
diff --git a/themes/three_nids/controllers/three_nids.php b/themes/three_nids/controllers/three_nids.php
new file mode 100644
index 00000000..465b8345
--- /dev/null
+++ b/themes/three_nids/controllers/three_nids.php
@@ -0,0 +1,36 @@
+where("item_id", $item->id)
+ ->where("state", "published")
+ ->orderby("created", "ASC")
+ ->find_all();
+
+ $v = new Theme_View("comments.html", "other", "comment-fragment");
+ $v->comments = $comments;
+ $v->item = $item;
+ print $v;
+ }
+}
diff --git a/themes/three_nids/helpers/comment_three_nids.php b/themes/three_nids/helpers/comment_three_nids.php
deleted file mode 100644
index c568824b..00000000
--- a/themes/three_nids/helpers/comment_three_nids.php
+++ /dev/null
@@ -1,128 +0,0 @@
-where("item_id", $item->id)
- ->where("state", "published")
- ->orderby("created", "DESC")
- ->find_all();
-
- return $comments->count();
- }
-
- /**
- * Create a new comment.
- * @param Item_MOdel $item the parent item
- * @param User_Model $author the author User_Model
- * @param string $text comment body
- * @param string $guest_name guest's name (if the author is a guest user, default empty)
- * @param string $guest_email guest's email (if the author is a guest user, default empty)
- * @param string $guest_url guest's url (if the author is a guest user, default empty)
- * @return Comment_Model
- */
- static function create($item, $author, $text, $guest_name=null,
- $guest_email=null, $guest_url=null) {
- $comment = ORM::factory("comment");
- $comment->author_id = $author->id;
- $comment->guest_email = $guest_email;
- $comment->guest_name = $guest_name;
- $comment->guest_url = $guest_url;
- $comment->item_id = $item->id;
- $comment->text = $text;
- $comment->state = "published";
-
- // These values are useful for spam fighting, so save them with the comment.
- $input = Input::instance();
- $comment->server_http_accept = substr($input->server("HTTP_ACCEPT"), 0, 128);
- $comment->server_http_accept_charset = substr($input->server("HTTP_ACCEPT_CHARSET"), 0, 64);
- $comment->server_http_accept_encoding = substr($input->server("HTTP_ACCEPT_ENCODING"), 0, 64);
- $comment->server_http_accept_language = substr($input->server("HTTP_ACCEPT_LANGUAGE"), 0, 64);
- $comment->server_http_connection = substr($input->server("HTTP_CONNECTION"), 0, 64);
- $comment->server_http_host = substr($input->server("HTTP_HOST"), 0, 64);
- $comment->server_http_referer = substr($input->server("HTTP_REFERER"), 0, 255);
- $comment->server_http_user_agent = substr($input->server("HTTP_USER_AGENT"), 0, 128);
- $comment->server_query_string = substr($input->server("QUERY_STRING"), 0, 64);
- $comment->server_remote_addr = substr($input->server("REMOTE_ADDR"), 0, 32);
- $comment->server_remote_host = substr($input->server("REMOTE_HOST"), 0, 64);
- $comment->server_remote_port = substr($input->server("REMOTE_PORT"), 0, 16);
- $comment->save();
-
- return $comment;
- }
-
- static function get_add_form($item) {
- $form = new Forge("comments_three_nids?item_id=".$item->id, "", "post", array("id" => "gAddCommentForm"));
- $group = $form->group("add_comment")->label(t("Add comment"));
- $group->input("name") ->label(t("Name")) ->id("gAuthor");
- $group->input("email") ->label(t("Email (hidden)")) ->id("gEmail");
- $group->input("url") ->label(t("Website (hidden)"))->id("gUrl");
- $group->textarea("text")->label(t("Comment")) ->id("gText");
- $group->hidden("item_id")->value($item->id);
- module::event("comment_add_form", $form);
- $group->submit("")->value(t("Add")) ->class("gButtonLink ui-corner-all ui-icon-left ui-state-default");
-
- $active = user::active();
- if (!$active->guest) {
- $group->inputs["name"]->value($active->full_name)->disabled("disabled");
- $group->email->value($active->email)->disabled("disabled");
- $group->url->value($active->url)->disabled("disabled");
- } else {
- $group->inputs["name"]->error_messages("missing", t("You must provide a name"));
- }
- $group->text->error_messages("missing", t("You must provide a comment"));
-
- return $form;
- }
-
- static function get_edit_form($comment) {
- $form = new Forge("comments/{$comment->id}?_method=put", "", "post",
- array("id" => "gEditCommentForm"));
- $group = $form->group("edit_comment")->label(t("Edit comment"));
- $group->input("name") ->label(t("Author")) ->id("gAuthor");
- $group->input("email") ->label(t("Email (hidden)")) ->id("gEmail");
- $group->input("url") ->label(t("Website (hidden)"))->id("gUrl");
- $group->textarea("text")->label(t("Comment")) ->id("gText");
- $group->submit("")->value(t("Edit"));
-
- $group->text = $comment->text;
- $author = $comment->author();
- if ($author->guest) {
- $group->inputs["name"]->value = $comment->guest_name;
- $group->email = $comment->guest_email;
- $group->url = $comment->guest_url;
- } else {
- $group->inputs["name"]->value($author->full_name)->disabled("disabled");
- $group->email->value($author->email)->disabled("disabled");
- $group->url->value($author->url)->disabled("disabled");
- }
- return $form;
- }
-}
-
diff --git a/themes/three_nids/helpers/three_nids.php b/themes/three_nids/helpers/three_nids.php
index bb543408..29042ff2 100644
--- a/themes/three_nids/helpers/three_nids.php
+++ b/themes/three_nids/helpers/three_nids.php
@@ -64,8 +64,8 @@ class three_nids_Core {
$fancymodule .= "exif::" . url::site("exif/show/{$item->id}") . ";;";
}
if (module::is_active("comment")) {
- $fancymodule .= "comment::" . url::site("comments_three_nids?item_id={$item->id}") .
- ";;comment_count::" . comment_three_nids::count($item) . ";;";
+ $fancymodule .= "comment::" . url::site("three_nids/show_comments/{$item->id}") .
+ ";;comment_count::" . three_nids::comment_count($item) . ";;";
}
if ($item->is_photo()){
$link .= "id}") ."/?w=" . $width .
@@ -102,8 +102,8 @@ class three_nids_Core {
if (($item->is_photo() || $item->is_movie()) && $display_comment &&
module::is_active("comment")) {
$link .= "";
}
} else {
@@ -111,5 +111,15 @@ class three_nids_Core {
}
return $link;
}
+
+ public function comment_count($item) {
+ access::required("view", $item);
+
+ return ORM::factory("comment")
+ ->where("item_id", $item->id)
+ ->where("state", "published")
+ ->orderby("created", "DESC")
+ ->count_all();
+ }
}
?>
\ No newline at end of file
diff --git a/themes/three_nids/views/comments.html.php b/themes/three_nids/views/comments.html.php
index b005ff17..01eeadd3 100644
--- a/themes/three_nids/views/comments.html.php
+++ b/themes/three_nids/views/comments.html.php
@@ -30,9 +30,9 @@
- " id="g-admin-comment-button"
+ id}") ?>" id="g-admin-comment-button"
class="g-button ui-corner-all ui-icon-left ui-state-default right">
= t("Add a comment") ?>