mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-06-08 04:29:23 -04:00
Several large changes:
1) Changed the way that we get forms. Now, if you want to get a form
for a REST resource you prefix /form to the resource id. So:
/form/photo/1 : returns a form for editing photo id 1
/form/comments/1 : returns a form for adding a comment to photo id 1
/form/comment/1 : returns a form for editing comment id 1
2) Changed the comment module to have two controllers:
comment: deals with a single comment resource
comments: deal with collections of comments attached to an item
Related stuff:
- Moved the comments js into the theme
- Reworked Comment_Helper for clarity
- Moved form generation code down into Comment_Helper
- Cleaned up routes (eliminating new comment ones added in recent rev)
- Added form() function to all REST controllers
- Changed comment module to use a block instead of an arbitrary helper call from the theme
- Comment controller only returns HTML currently, but returns a 201 Created status
code when a new comment is added, which the Ajax code can catch and act upon.
- Got rid of a lot of extra views in comment module
This commit is contained in:
@@ -21,50 +21,29 @@ class Comment_Controller extends REST_Controller {
|
||||
protected $resource_type = "comment";
|
||||
|
||||
/**
|
||||
* Return the form for adding comments.
|
||||
* Present a form for editing a comment
|
||||
* @see Rest_Controller::form($resource)
|
||||
*/
|
||||
public function _get_form($comment) {
|
||||
$form = new Forge(url::current(true), "", "post", array("id" => "gComment"));
|
||||
$group = $form->group(_("Add Comment"));
|
||||
$group->input("author")
|
||||
->label(_("Author"))
|
||||
->id("gAuthor")
|
||||
->class(null)
|
||||
->value($comment->author);
|
||||
$group->input("email")
|
||||
->label(_("Email"))
|
||||
->id("gEmail")
|
||||
->class(null)
|
||||
->value($comment->email);
|
||||
$group->textarea("text")
|
||||
->label(_("Text"))
|
||||
->id("gText")
|
||||
->class(null)
|
||||
->value($comment->text);
|
||||
$group->hidden("item_id")
|
||||
->value($comment->item_id);
|
||||
$group->submit(_("Add"));
|
||||
|
||||
$this->_add_validation_rules(ORM::factory("comment")->validation_rules, $form);
|
||||
|
||||
return $form;
|
||||
public function _form($comment) {
|
||||
$form = comment::get_edit_form($comment);
|
||||
print $form->render("form.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo Refactor this into a more generic location
|
||||
* Get an existing comment.
|
||||
* @see Rest_Controller::_get($resource)
|
||||
*/
|
||||
private function _add_validation_rules($rules, $form) {
|
||||
foreach ($form->inputs as $name => $input) {
|
||||
if (isset($input->inputs)) {
|
||||
$this->_add_validation_rules($rules, $input);
|
||||
}
|
||||
if (isset($rules[$name])) {
|
||||
$input->rules($rules[$name]);
|
||||
}
|
||||
}
|
||||
public function _get($comment) {
|
||||
$v = new View("comment.html");
|
||||
$v->comment = $comment;
|
||||
print $v;
|
||||
}
|
||||
|
||||
public function add($item_id) {
|
||||
/**
|
||||
* Update existing comment.
|
||||
* @see Rest_Controller::_put($resource)
|
||||
*/
|
||||
public function _put($comment) {
|
||||
$comment = ORM::factory('comment');
|
||||
$comment->item_id = $item_id;
|
||||
|
||||
@@ -77,43 +56,16 @@ class Comment_Controller extends REST_Controller {
|
||||
$comment->datetime = time();
|
||||
$comment->item_id = $this->input->post('item_id');
|
||||
$comment->save();
|
||||
|
||||
$data = array('valid' => true, 'html' => sprintf(comment::show_comment_list($item_id)));
|
||||
} else {
|
||||
$data = array('valid' => false, 'html' => sprintf($form->render()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (request::method() == "get") {
|
||||
print $data['html'];
|
||||
} else if (request::method() == "post") {
|
||||
print json_encode($data);
|
||||
}
|
||||
}
|
||||
|
||||
public function get_item_comments($item_id) {
|
||||
print comment::show_comment_list($item_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an existing comment.
|
||||
* @see Rest_Controller::_get($resource)
|
||||
*/
|
||||
public function _get($user) {
|
||||
throw new Exception("@todo Comment_Controller::_get NOT IMPLEMENTED");
|
||||
}
|
||||
|
||||
/**
|
||||
* Update existing comment.
|
||||
* @see Rest_Controller::_put($resource)
|
||||
*/
|
||||
public function _put($resource) {
|
||||
throw new Exception("@todo Comment_Controller::_put NOT IMPLEMENTED");
|
||||
print $form->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new comment
|
||||
* @see Rest_Controller::_post($resource)
|
||||
*/
|
||||
public function _post($user) {
|
||||
public function _post($comment) {
|
||||
throw new Exception("@todo Comment_Controller::_post NOT IMPLEMENTED");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user