summaryrefslogtreecommitdiff
path: root/core/controllers/rest.php
AgeCommit message (Collapse)Author
2009-05-27Restructure things so that the application is now just another module.Bharat Mediratta
Kohana makes this type of transition fairly straightforward in that all controllers/helpers/etc are still located in the cascading filesystem without any extra effort, except that I've temporarily added a hack to force modules/gallery into the module path. Rename what's left of "core" to be "application" so that it conforms more closely to the Kohana standard (basically, just application/config/config.php which is the minimal thing that you need in the application directory) There's still considerable work left to be done here.
2009-05-13Gee it's May already. Update copyright to 2009.Bharat Mediratta
2009-05-08Don't do ORM::factory() lookups on non-ints (thanks Romain LE DISEZ)Bharat Mediratta
2009-03-08Undo... pass any additional parameters to the _edit_form methodTim Almdal
2009-03-08Pass any additional parameters to the _edit_form methodTim Almdal
2009-01-04Require CSRF for any non-"get" action.Bharat Mediratta
2008-12-25Big round of normalization of the way that our controllersBharat Mediratta
communicate. Almost all controllers now use JSON to speak to the theme when we're dealing with form processing. This means tht we only send the form back and forth, but we use a JSON protocol to tell the browser success/error status as well as the location of any newly created resources, or where the browser should redirect the user. Lots of small changes: 1) Admin -> Edit Profile is gone. Instead I fixed the "Modify Profile" link in the top right corner to be a modal dialog 2) We use json_encode everywhere. No more Atom/XML for now. We can bring those back later, though. For now there's a lot of code duplication but that'll be easy to clean up. 3) REST_Controller is no longer abstract. All methods its subclasses should create throw exceptions, which means that subclasses don't have to implement stubs for those methods. 4) New pattern: helper method get_add_form calls take an Item_Model, not an id since we have to load the Item_Model in the controller anyway to check permissions. 5) User/Groups REST resources are separate from User/Group in the site admin. They do different things, we should avoid confusing overlap.
2008-12-24Lots of deltas rolled up into a bigger change. Sorry for the mess.Bharat Mediratta
1) Deleted in-place-editing. We'll be replacing this with a real edit system that groups settings together and is more coherent. 2) Tweaked the way that dialog boxes work to get the ajax stuff working again. It's imperfect and does not work properly for uploading images. This is going to get redone also, but this is a good resting point. 3) Created edit forms for albums and photos. Moved _update and _create out of Items_Controller and into the individual subclasses. 4) Created access::required which is a shorthand for: if (!access::can(...)) { access::forbidden(); } 5) Added validation rules to Items_Model 6) Converted login to use the regular modal dialog approach in the theme.
2008-12-09Check view permissions before allowing view access to albums/photos.Bharat Mediratta
2008-11-21Fixed a bug in the REST controller dispatcher and added a test case that ↵Jozef Selesi
excercises it.
2008-11-20* Added HTTP status constants and helper functions to REST helper.Jozef Selesi
* HTTP header setting in comment module now going through REST helper API. * Fixed items controller test. * Fixed user installer test. * Fixed _create() handling in the REST controller. * Fixed routing for edit and add forms. * Added some tests for the REST controller. * Set svn:eol-style to LF on a bunch of files. * Added preamble to MY_Forge.php.
2008-11-19Change the way that we do RESTful routing.Bharat Mediratta
1) We now use __call() in REST_Controller to handle any requests to a controller that were not already handled. In the case of RESTful controllers, this should be the only entry point (although they're free to break the model and add other ones.. nothing stops them). This means that we can remove all the catch-all routes in routes.php which greatly simplifies it. 2) Move request_method() and output_format() out of REST_Controller and into the REST helper in core/helpers/rest.php 3) Experiment with letting the various subclasses check the output_format and deal with it themselves. This simplifies the API, but it might be a bad idea in that it might push too much work to the individual controllers. It's a balancing act, time will tell, I'm willing to change it back later.
2008-11-19Change output_format() to autodetect for html / xml / jsonBharat Mediratta
2008-11-18* Changed REST API. Now there are two separate methods for forms:Jozef Selesi
GET /form/edit/{controller}/{resource_id} -> controller::_form_edit($resource) GET /form/add/{controller}/{parameters} -> controller::_form_add($parameters) * Updated comment, user and core modules to reflect the API changes * Cleaned up routing and handling of requests to /{controller}
2008-11-18- All comments of an item can now be seen /comments?item_id=Jozef Selesi
- Return proper Content-Type header for GET /comments requests - Got rid of the query processing for index() in REST_Controller() - Small misc fixes
2008-11-18First iteration of REST controller refactoring. RESTful controllers that ↵Jozef Selesi
refer to collections should now have plural names and there should be only one controller per resource. Updated existing classes that implement REST_Controller. The routing now works like this: GET /controller -> controller::_index() POST /controller -> controller::_create() GET /controller/id -> controller::_show() PUT /controller/id -> controller::_update() DELETE /controller/id -> controller::_delete() GET /form/edit/controller/resource_id -> controller::_form() GET /form/add/controller/data -> controller::_form()
2008-11-17Add output formats to our REST controllers. Add support for JSON andBharat Mediratta
XML to the comment controllers as a proof of concept. It's not fully baked; we should examine ways to create helpers to make this process easier.
2008-11-16Handle _method in either GET or POSTBharat Mediratta
2008-11-16Drop the call to render() and just use the View's __toString method toBharat Mediratta
print it out.
2008-11-16Several large changes:Bharat Mediratta
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
2008-11-15Revise the user login code.Bharat Mediratta
* Remove user registration link and popup from the theme; this shouldn't be done in a popup. Use ajaxform to simplify the way that we load the login popup. * Create form.html.php, this is a template for Forge based forms. * Move user validation rules into User_Model and let forms populate the rules into their forms as useful. * Undo r18688's changes regarding the REST code. We should never accept a null resource, this breaks the REST abstraction. * Change login and user controllers to use Forge which lets us delete login.html.php and user.html.php since those now are generated by the theme-owned form template
2008-11-14Allow the HTTP get method to be called without an id to create any empty ↵Tim Almdal
template.
2008-11-14Use the shortform to load the resource.Tim Almdal
2008-11-11Change the PUT/DELETE tunneling param from __action to _methodBharat Mediratta
to be like Rails.
2008-11-11Change REST API to use non-routable functions: _get(), _post(),Bharat Mediratta
_put(), _delete(). This should make it more obvious that these are not your typical routes, simplifies overall routing by removing a rule and removes the possibility of accidentally leaking information if we route to one of them by accident.
2008-11-11Add phpdocs to explain how to use REST_ControllerBharat Mediratta
2008-11-11Create REST_Controller abstract base class for all REST based resourceBharat Mediratta
controllers. Any controller that wants to act RESTful can extend this class and implement get/post/put/delete. Tweak default routes to disallow direct access to the REST controller and direct access to any REST methods.