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 @@
- + thumb_img() ?>
- " id="g-admin-comment-button" + id}") ?>" id="g-admin-comment-button" class="g-button ui-corner-all ui-icon-left ui-state-default right">