Commit Graph

50 Commits

Author SHA1 Message Date
Bharat Mediratta
a30c28b5fc Make the comment -> recaptcha binding happen via an event dispatch as
opposed to a direct call.
2009-01-27 08:21:54 +00:00
Tim Almdal
bfb5c42124 Adding Recaptcha to the comment module. Recaptcha integration consists of a Form_Recaptcha class derived from Form_Input that can be added to any class that requires Recaptcha verfication. 2009-01-26 16:12:57 +00:00
Tim Almdal
a8233ed979 Undo the adding underscores to the id on forge generated forms 2009-01-25 06:28:04 +00:00
Tim Almdal
cbff78daa8 Supply a form id on all forms. This id can be used by modules other
than the originating module to provide additional functionality to the form.
2009-01-24 17:26:47 +00:00
Bharat Mediratta
1cc7b3f4be Don't force validation anymore; we're clearing the form properly in
the controller on successful add.
2009-01-18 23:27:26 +00:00
Bharat Mediratta
2920640c2b Fix validation when adding new comments.
Fire off the appropriate item_related_update events as appropriate.
2009-01-16 04:06:03 +00:00
Bharat Mediratta
ae73ef3d57 Updated for new Form_Submit API.
OLD:
  $form->submit("Foo")  -->  <input type="submit" value="Foo">

New:
  $form->submit("foo_button")->("Foo") --> <input type="submit" name="foo_button" value="Foo">

Mostly we don't care what the button is so we leave the name blank.
2009-01-12 07:50:04 +00:00
Andy Staudacher
3df7889128 Increase length for user-agent and accept fields in comments table.
And truncate strings before passing them to MySQL.
2009-01-11 05:36:31 +00:00
Bharat Mediratta
431a831f48 Update tests to match the way that we store server variables in the
comment.  Get rid of comment::update tests since, comment::update is
gone.

Found a bug in comment::create() in the process.. yay unit tests!
2009-01-11 02:58:32 +00:00
Bharat Mediratta
44bfc1c6a4 Auto-delete 7-day old spam/deleted comments. 2009-01-10 11:25:33 +00:00
Bharat Mediratta
a7feeb576f Big set of changes to comments, with related changes to akismet and
user modules.

* Don't delete vars when we delete a module.  This makes
  reinstalling a module a lot easier.

* Add user::lookup() as the preferred way to load a user, so that
  other modules don't delve into the user module (that'd be a
  problem when we swap out user modules)

* Notify site admins if Akismet is not fully configured

* Bundle all server variables into the comment so that if/when we
  re-check the comment, we are not using the server info from the
  site admin's request.

* Update Akismet to grab request context data from the comment

* Pre-seed comment fields if we have a logged in user.  Update
  comment::create() API to clarify it for this.

* Delete comment::update(), that's a controller function.

* Add url to User_Model

* Add author_name() author_email() and author_url() to
  Comment_Model.  It'll return the appropriate values depending
  on whether the comment was left by a logged in user or a guest.

* Use resetForm() instead of clearForm() when we reload the
  comment form after ajax submit, this way we preserve the
  pre-seeded values.

* In the user profile page, ignore blank passwords.
2009-01-10 00:34:23 +00:00
Andy Staudacher
a631fe29f3 i18n refactoring: Rename all _() (reserved by gettext) calls to t().
- And refactor printf to our string interpolation / pluralization syntax
- Also, a slight change to the translations_incomings table, using binary(16) instead of char(32) as message key.
2009-01-08 17:13:06 +00:00
Tim Almdal
4645c459e1 Add a catch around the call to the spam filter and if the spam filter check fails set the comment
state to unpublished.
2009-01-06 14:36:20 +00:00
Tim Almdal
9644dcc480 1) Removed the published boolean database field
2) Replaced it with a string field (state) which contains the state of the comment. i.e. published, unpublished, spam.  Unsure if we want to create constants in comments.php to standardize the valid values... thoughts?
3) synchronized the spamfilter and comment unit tests with the current functionality
2009-01-02 18:54:37 +00:00
Tim Almdal
206edb59b9 Update the api to allow each driver to specify validation rules and generate the appropriate form content. Add a callback so if the driver changes in the driver selection dropdown, then the api form fields are updated with the new form fields for that driver 2009-01-02 18:31:23 +00:00
Tim Almdal
517ddf5388 First look at the spam filter module. At this point, it does not connect to any spam services. But you can go into the admin screen and choose the driver and set the api key. 2008-12-31 06:19:35 +00:00
Andy Staudacher
1cacf769d1 Make the url parameter optional in comment::create() (according to the comment model) 2008-12-30 21:00:47 +00:00
Bharat Mediratta
1b53073b55 Mark the "website" field as hidden. 2008-12-29 23:36:58 +00:00
Tim Almdal
69603ede7a Implemented bharat's suggestions to the comment module in preparation for the spam_filter module 2008-12-29 21:09:44 +00:00
Tim Almdal
95f1440ef2 Changes to the comment module to support spam filtering. Basically added two columns to the comment table. The url of the author's web site(default null) and a flag to indicate that the comment is visible (default true).
The comment block has changed to only display comments that are visible.

And there is code added to call the spam_filter helper if the spam_filter module is installed.
2008-12-29 19:37:19 +00:00
Bharat Mediratta
3c0be5156b url::site is implicit in Forge actions, don't specify it a 2nd time 2008-12-29 18:38:40 +00:00
Bharat Mediratta
fdc0f83024 Big round of normalization of the way that our controllers
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-25 05:12:46 +00:00
Bharat Mediratta
0bb82b7621 Gut the comment module and simplify it. Stop trying to support Atom
and XML for now, we have no driver for those technologies so anything
we implement is not going to be sufficiently tested and therefore
it'll be broken.

Change all comment functions to return JSON and update the JS to deal
purely with JSON.  This is our new protocol for talking to the browser
and it should be flexible and portable.

Create comments.html.php.  This duplicates comment.html.php, but will
be more efficient for rendering comments since we won't be creating a
new View for every comment we render.
2008-12-25 00:47:40 +00:00
Bharat Mediratta
81e87dfecd Change "datetime" to "created" to give some semantics to this field. 2008-12-21 01:29:25 +00:00
Bharat Mediratta
f5bc55e72d Add labels to the form groups. 2008-12-18 22:35:16 +00:00
Bharat Mediratta
8b6ed6c477 Create module::event() which runs Gallery events. It works by
convention.  To respond to the "photo_created" event in the gmaps
module, you create modules/gmaps/helpers/gmaps_event.php containing
class gmaps_event which has function photo_created.

Renamed all events from gallery.foo.bar to foo_bar
Updated tag module to use new convention.
2008-11-28 19:37:01 +00:00
Tim Almdal
828f23896f Rename item events and create events for comment create, login, logout, user creation. I probably forgot some, but its a start. 2008-11-28 00:51:38 +00:00
Chad Kieffer
c812d2a931 Changed comment sort order asc. Changed ajax comment add to append comment li to comment thread ul. Added fadeIn for user login. 2008-11-24 07:12:45 +00:00
Bharat Mediratta
45128b2322 Prefer variable interpolation to sprintf where possible (less code, more readable)
Prefer url::abs_site() to atom::get_base_url()
2008-11-23 21:47:04 +00:00
Jozef Selesi
7485740d97 Changed and extended the Atom library a little so that the code for creating entries and feeds has been considerably simplified and reduced. 2008-11-23 12:41:41 +00:00
Jozef Selesi
d14d312d06 * Individual comment views now output valid Atom 1.0 entries:
http://example.gallery.com/index.php/comments/{comment_id}?_format=atom
* Changed Content-Type of Atom feeds and entries to XML for easier debugging.
* Added an Atom helper class with some common functions and cleaned up entry and feed generation code a bit in the comment helper.
* Style fixes.
2008-11-23 00:24:56 +00:00
Jozef Selesi
d93d37a10c * Fixed a bug in the Atom library where child elements were not added to their proper parents.
* Added valid Atom 1.0 feeds for comments. They can be seen at:
  http://gallery.example.com/index.php/comments?item_id={photo_id}&_format=atom
2008-11-22 22:46:17 +00:00
Tim Almdal
55341f14f2 Correct case on helper class names. By convention, helper class names are lower case:
http://docs.kohanaphp.com/general/helpers
2008-11-22 06:06:02 +00:00
Chad Kieffer
ba0f6f9e94 Fixed style issues on comment container, should be plural id (gComments). Removed gCommentForm id, it's not necessary, at least not now. 2008-11-21 07:35:34 +00:00
Tim Almdal
8c06908f7f Use rest::http_content_type() instead of the header() method to set response content 2008-11-20 17:51:12 +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
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
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
394de8ec0a Gracefully handle the no-comments case 2008-11-18 09:03:26 +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
c031fcef23 Remove stray <ul> from comment list 2008-11-17 04:54:13 +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
1a2cb5ff04 Put _method into the edit form's url; Implement Comment::_put() properly 2008-11-16 19:23:41 +00:00
Bharat Mediratta
4610fc8e7f Create Forge::add_rules_from() which pulls validation rules from the model and
associates them with the form.  This replaces the various _add_validation_rules()
functions in the user and comment modules.

Move user edit form into user helper for consistency with the comment module.

Implement missing _form method in the user controller.
2008-11-16 07:51:42 +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
Jozef Selesi
56dcb953b0 Code cleanup, add test for time formatting function. 2008-11-12 15:43:05 +00:00
Jozef Selesi
a1ca946a89 Make comment post time display more user-friendly by displaying 'today', 'yesterday', 'x days ago' etc. 2008-11-12 12:00:13 +00:00
Bharat Mediratta
b0a3308740 Minor cleanup; localization, indentation, etc. 2008-11-11 22:46:25 +00:00
Jozef Selesi
752459c64c Display comments from the database. 2008-11-11 20:54:12 +00:00
Jozef Selesi
ddf0a51900 Comment creation controller, helper and test. Add comments from the scaffold. 2008-11-10 17:32:04 +00:00