Commit Graph

376 Commits

Author SHA1 Message Date
Jozef Selesi
88f799be6f Fixed a bug in the REST controller dispatcher and added a test case that excercises it. 2008-11-21 21:07:36 +00:00
Tim Almdal
992cf22c79 Revert module block approach 2008-11-21 07:06:11 +00:00
Jozef Selesi
c3fc1cb7ec * Added HTTP status constants and helper functions to REST helper.
* 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-20 01:25:29 +00:00
Bharat Mediratta
161998dde6 Fix some broken-ness:
1) Item_Controller::_create() and _update() were swapped
2) _create() was redirecting to the wrong urls on success
3) Change in-place return parameter from __return to _return
4) Change in-place code to tunnel _put via POST
2008-11-19 06:35:54 +00:00
Bharat Mediratta
5638fc5fb6 Change the way that we do RESTful routing.
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-19 04:20:35 +00:00
Bharat Mediratta
c0aa61787c Change output_format() to autodetect for html / xml / json 2008-11-19 03:42:43 +00:00
Jozef Selesi
b2772f5a05 * Renamed the album, item and photo controllers to albums, items and photos in order to follow the convention that controllers that refer to a collection of resources have plural names.
* Added a bug workaround to routes.php
2008-11-19 00:12:25 +00:00
Jozef Selesi
1992343c2e * Changed REST API. Now there are two separate methods for forms:
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 23:40:47 +00:00
Jozef Selesi
b63ea2cdbf - All comments of an item can now be seen /comments?item_id=
- 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-18 15:48:08 +00:00
Bharat Mediratta
d8225e44c4 Fix a typo user_id -> owner_id 2008-11-18 09:03:49 +00:00
Jozef Selesi
3ebb751cda First iteration of REST controller refactoring. RESTful controllers that 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-18 08:28:32 +00:00
Bharat Mediratta
c91e90406b Add output formats to our REST controllers. Add support for JSON and
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-17 00:30:18 +00:00
Bharat Mediratta
b6de985922 Handle _method in either GET or POST 2008-11-16 19:22:27 +00:00
Bharat Mediratta
5d14531af9 Drop the call to render() and just use the View's __toString method to
print it out.
2008-11-16 19:12:01 +00:00
Bharat Mediratta
bcb2230a6b Remove a @todo 2008-11-16 10:19:01 +00:00
Bharat Mediratta
140736a1e4 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
2008-11-16 07:14:12 +00:00
Felix Rabinovich
f27929e126 create a regular user and make scaffolding assign owner to logged in user 2008-11-16 05:46:42 +00:00
Bharat Mediratta
db6061096e Item / Owner changes.
* Hardcode the item has_one owner relationship again
* Overload User_Model::__get to handle missing owners gracefully
* Fix Item_Controller to take the owner_id from the session or
  from the parent album when adding new albums and photos.
2008-11-15 08:44:01 +00:00
Felix Rabinovich
6dbf5ae172 Clean user / item relationship. Upload files gets the ownership of current user; and the views don't break if user module is not installed 2008-11-15 08:19:14 +00:00
Bharat Mediratta
ae7839ffaa Revise the user login code.
* 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-15 06:23:09 +00:00
Tim Almdal
e0ec9dd76a Allow the HTTP get method to be called without an id to create any empty template. 2008-11-14 16:51:11 +00:00
Tim Almdal
b5f48e4ab3 Use the shortform to load the resource. 2008-11-14 07:30:47 +00:00
Jozef Selesi
56dcb953b0 Code cleanup, add test for time formatting function. 2008-11-12 15:43:05 +00:00
Bharat Mediratta
453e15f502 Throw an exception when we can't upload a file. This is not the best solution, but it works for now. 2008-11-12 10:11:05 +00:00
Felix Rabinovich
7423c755c0 aliasing owner to user 2008-11-12 08:30:55 +00:00
Bharat Mediratta
51c64f1d28 Create a simple benchmark that loads 500 localized messages and performs
500 localizations on them.
2008-11-12 00:05:47 +00:00
Bharat Mediratta
a15c7cb11f Change the PUT/DELETE tunneling param from __action to _method
to be like Rails.
2008-11-11 13:11:20 +00:00
Jozef Selesi
1651b3fe85 Move scaffolding code out of the comments controller to welcome.php. 2008-11-11 12:20:20 +00:00
Tim Almdal
bba5289035 Change Album and Photo controllers to set the user object as a global variable; change the header so it links to the user controllers; and add the user controllers which don't do anything. 2008-11-11 07:39:20 +00:00
Bharat Mediratta
87f1115113 Change REST API to use non-routable functions: _get(), _post(),
_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-11 07:29:48 +00:00
Bharat Mediratta
d35f337b7b Add phpdocs to explain how to use REST_Controller 2008-11-11 06:24:30 +00:00
Bharat Mediratta
dae36c2aa4 Create REST_Controller abstract base class for all REST based resource
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.
2008-11-11 06:18:45 +00:00
Bharat Mediratta
ffa39aabb9 Manually delete the auth table and module entry to ease transitions for devs. 2008-11-10 21:55:27 +00:00
Tim Almdal
d4415d0d3e Reset the links in the header and update the readme 2008-11-10 16:36:56 +00:00
Bharat Mediratta
ceb0782233 Add support for multi-file-upload using jquery.MultiFile and modify
Item_Controller to accept it.
2008-11-10 12:28:58 +00:00
Tim Almdal
8858b957b0 The start of the login functionality. It shows the login popup but doesn't do anything else. Just got tire of my changes being clobbered :-) 2008-11-10 03:17:56 +00:00
Bharat Mediratta
b5f2443bb5 Add the ability to create albums to the scaffolding
Revert $_POST back to $this->input->post() because that supports default values.
2008-11-10 00:25:59 +00:00
Bharat Mediratta
c054b4de04 Convert quote styles
Convert $this->input->post to $_POST
2008-11-10 00:16:03 +00:00
Bharat Mediratta
e7155c09c5 Implement Item_Controller::put() and delete()
Adjust/simplify photo::create
Add image uploading to the scaffolding
2008-11-09 23:40:28 +00:00
Bharat Mediratta
1b490c5fe6 Make Gallery3 more RESTful.
Create Item_Controller as a common superclass for Album_Controller and
Photo_Controller.  Change routes to route requests to Item_Controller
for dispatching, which in turn will generate get/post/put/delete
requests to the controlller so that each controller has a RESTful
surface.

Change in_place editing to take advantage of this.
2008-11-09 19:20:23 +00:00
Bharat Mediratta
950c58e6d3 Add support for in-place editing of data fields. 2008-11-08 09:28:11 +00:00
Bharat Mediratta
ea7cc4f46e Simplify the way that we find the user id (just look it up, and if there's a database exception use the null value) 2008-11-08 07:27:46 +00:00
Felix Rabinovich
28b739a210 Adding user (owner) to items; info module 2008-11-08 07:18:56 +00:00
Bharat Mediratta
dc90ad9739 Change add() to add photos:albums at a ratio of 10:1 2008-11-07 10:46:06 +00:00
Bharat Mediratta
76436c0029 Add automatic pagination. All you have to do is add <?= $theme->pager
?> to your theme file and you get a well formed pager.  Themes can
customize this any way they want.  A version that matches the mockup
is provided in the default theme.
2008-11-07 07:33:43 +00:00
Bharat Mediratta
6b5b5ec3a6 Use jquery.cookie to keep the same tab open when you refresh
Add a switch to turn profiling on/off
2008-11-07 05:49:45 +00:00
Bharat Mediratta
6f1c46da6e Oops, these files got left out of r18525. 2008-11-06 10:22:34 +00:00
Bharat Mediratta
6cafc61f96 album::set_thumbnail is now part of Item_Model so it can go.
Fix a bug in the scaffolding where we weren't saving the album after
adding its thumbnail (so its dimensions weren't getting set).
2008-11-06 05:51:20 +00:00
Bharat Mediratta
d6e942f2e3 Add quick-link to the deepest photo to test hierarchical navigation 2008-11-06 04:56:50 +00:00
Chad Kieffer
c4407f7bda spruce up the display of commands 2008-11-06 04:37:28 +00:00