diff options
Diffstat (limited to 'modules/comment')
-rw-r--r-- | modules/comment/controllers/comment.php | 85 | ||||
-rw-r--r-- | modules/comment/controllers/comments.php | 87 | ||||
-rw-r--r-- | modules/comment/helpers/comment.php | 7 |
3 files changed, 65 insertions, 114 deletions
diff --git a/modules/comment/controllers/comment.php b/modules/comment/controllers/comment.php deleted file mode 100644 index 546f3d67..00000000 --- a/modules/comment/controllers/comment.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php defined("SYSPATH") or die("No direct script access."); -/** - * Gallery - a web based photo album viewer and editor - * Copyright (C) 2000-2008 Bharat Mediratta - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ -class Comment_Controller extends REST_Controller { - protected $resource_type = "comment"; - - /** - * Present a form for editing a comment - * @see Rest_Controller::form($resource) - */ - public function _form($comment) { - $form = comment::get_edit_form($comment); - print $form; - } - - /** - * Get an existing comment. - * @see Rest_Controller::_get($resource, $output_format) - */ - public function _get($comment, $output_format) { - switch ($output_format) { - case "xml": - print xml::to_xml($comment->as_array(), array("comment")); - break; - - case "json": - print json_encode($comment->as_array()); - break; - - default: - $v = new View("comment.$output_format"); - $v->comment = $comment; - print $v; - } - } - - - /** - * Update existing comment. - * @see Rest_Controller::_put($resource) - */ - public function _put($comment) { - $form = comment::get_edit_form($comment); - if ($form->validate()) { - $comment->author = $this->input->post('author'); - $comment->email = $this->input->post('email'); - $comment->text = $this->input->post('text'); - $comment->save(); - return; - } - print $form; - } - - /** - * Add a new comment - * @see Rest_Controller::_post($resource) - */ - public function _post($comment) { - throw new Exception("@todo Comment_Controller::_post NOT IMPLEMENTED"); - } - - /** - * Delete existing comment. - * @see Rest_Controller::_delete($resource) - */ - public function _delete($resource) { - throw new Exception("@todo Comment_Controller::_delete NOT IMPLEMENTED"); - } -} diff --git a/modules/comment/controllers/comments.php b/modules/comment/controllers/comments.php index ab3be76f..b51e7e4e 100644 --- a/modules/comment/controllers/comments.php +++ b/modules/comment/controllers/comments.php @@ -18,59 +18,94 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class Comments_Controller extends REST_Controller { - protected $resource_type = "item"; + protected $resource_type = "comment"; /** - * Present a form for adding a new comment to this item - * @see Rest_Controller::form($resource) + * Display comments based on criteria. + * @see Rest_Controller::_delete($resource) */ - public function _form($item) { - $form = comment::get_add_form($item); - print $form; + public function _index($query) { + throw new Exception("@todo Comment_Controller::_index NOT IMPLEMENTED"); } /** - * Show the comment collection - * @see Rest_Controller::_get($resource, $format) + * Add a new comment to the collection. + * @see Rest_Controller::_create($resource) */ - public function _get($item, $output_format) { - print comment::get_comments($item, $output_format); + public function _create($comment) { + $form = comment::get_add_form($this->input->post('item_id')); + if ($form->validate()) { + $comment->author = $this->input->post('author'); + $comment->email = $this->input->post('email'); + $comment->text = $this->input->post('text'); + $comment->datetime = time(); + $comment->item_id = $this->input->post('item_id'); + $comment->save(); + + header("HTTP/1.1 201 Created"); + header("Location: " . url::site("comments/{$comment->id}")); + } + // @todo Return appropriate HTTP status code indicating error. + print $form; } /** - * Update existing comment collection. - * @see Rest_Controller::_put($resource) + * Display an existing comment. + * @see Rest_Controller::_show($resource, $format) */ - public function _put($item) { - throw new Exception("@todo Comment_Controller::_put NOT IMPLEMENTED"); + public function _show($comment, $output_format) { + switch ($output_format) { + case "xml": + print xml::to_xml($comment->as_array(), array("comment")); + break; + + case "json": + print json_encode($comment->as_array()); + break; + + default: + $v = new View("comment.$output_format"); + $v->comment = $comment; + print $v; + } } /** - * Add a new comment to the collection - * @see Rest_Controller::_post($resource) + * Change an existing comment. + * @see Rest_Controller::_update($resource) */ - public function _post($item) { - $form = comment::get_add_form($item); + public function _update($comment) { + $form = comment::get_edit_form($comment); if ($form->validate()) { - $comment = ORM::factory('comment'); $comment->author = $this->input->post('author'); $comment->email = $this->input->post('email'); $comment->text = $this->input->post('text'); - $comment->datetime = time(); - $comment->item_id = $item->id; $comment->save(); - - header("HTTP/1.1 201 Created"); - header("Location: " . url::site("comment/{$comment->id}")); + return; } + // @todo Return appropriate HTTP status code indicating error. print $form; } /** - * Delete existing comment collection. + * Delete existing comment. * @see Rest_Controller::_delete($resource) */ - public function _delete($item) { + public function _delete($comment) { throw new Exception("@todo Comment_Controller::_delete NOT IMPLEMENTED"); } + + /** + * Present a form for adding a new comment to this item or editing an existing comment. + * @see Rest_Controller::form($resource) + */ + public function _form($resource, $form_type) { + // This code will be clearer if we split form() into two functions. + if ($form_type == "edit") { + $form = comment::get_edit_form($resource); + } else { + $form = comment::get_add_form($resource); + } + print $form; + } } diff --git a/modules/comment/helpers/comment.php b/modules/comment/helpers/comment.php index fd82d771..aaae7c17 100644 --- a/modules/comment/helpers/comment.php +++ b/modules/comment/helpers/comment.php @@ -54,12 +54,13 @@ class Comment_Core { return $comment->save(); } - static function get_add_form($item) { - $form = new Forge(url::site("comments/{$item->id}"), "", "post", array("id" => "gCommentForm")); + static function get_add_form($item_id) { + $form = new Forge(url::site("comments"), "", "post", array("id" => "gCommentForm")); $group = $form->group(_("Add Comment")); $group->input("author") ->label(_("Author")) ->id("gAuthor"); $group->input("email") ->label(_("Email")) ->id("gEmail"); $group->textarea("text")->label(_("Text")) ->id("gText"); + $group->hidden("item_id")->value($item_id); $group->submit(_("Add")); $form->add_rules_from(ORM::factory("comment")); return $form; @@ -67,7 +68,7 @@ class Comment_Core { static function get_edit_form($comment) { $form = new Forge( - url::site("comment/{$comment->id}?_method=put"), "", "post", array("id" => "gCommentForm")); + url::site("comments/{$comment->id}?_method=put"), "", "post", array("id" => "gCommentForm")); $group = $form->group(_("Edit Comment")); $group->input("author") ->label(_("Author")) ->id("gAuthor") ->value($comment->author); $group->input("email") ->label(_("Email")) ->id("gEmail") ->value($comment->email); |