* Introduce Tracks::Config class to wrap environment.rb config settings
* Remove unused admin and index actions from user_controller
* Introduce flash partial and standardize on symbol keys for the flash hash
* Replace usages of render_partial with render :partial
Two new authentication options! These probably need documentation...
* Introduce LDAP authentication option (see configuration in environment.rb.tmpl). Thanks to Jeremy Evans for creating the SimpleLdapAuthenticator plugin. Note: the ldap auth integration test is likely to be fragile. Works for me on OS X with openldap, but your mileage may vary.
* Introduce Open ID authentication option (see configuration in environment.rb.tmpl and http://openid.net for more info). Thanks to East Media for the Open ID Consumer Plugin.
In environment.rb, you can enable any combination of the three auth options. If you have more than one selected, users can opt between them via their preferences pages. To play with the Open ID auth, you can get an identity at pip.verisignlabs.com.
Note that there are some new migrations to support the new authentication options, so don't forget to rake migrate!
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@334 a4c988fc-2ded-0310-b66e-134b36920a42
What doesn't work yet:
* If you delete all characters in the date box, you'll get an error message. This will go away if you type more characters
* You'll get an error as above when the form is cleared and redisplayed after submission. Again, it will go away if you type anything in the box.
* Validation doesn't work, but the preview will display "Invalid date" if Chronic can't parse your phrase
* This isn't added to the edit form for actions yet.
Also partially fixed#394: the mobile interface works again, but you might get an error visiting the subsequent pages of a filtered view (i.e. viewing a single context or project). I'm not sure what's causing this, but it's on my list to fix.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@332 a4c988fc-2ded-0310-b66e-134b36920a42
When you start dragging an action, the other contexts collapse to provide easier targets for dropping. After the drop, the contexts return to their previously states of collapsed/expanded.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@275 a4c988fc-2ded-0310-b66e-134b36920a42
* A count of actions in each situation is shown (i.e. all uncompleted actions on main page, all actions in context on filtered context page etc.)
* Validation errors when adding a new action are now caught and displayed on the form. I can't seem to get validation errors displayed for existing items which are being edited, but the action is (correctly) not saved.
* You can now add deferred actions through the standard form (these are not displayed on the mobile view currently).
* There's a logout link on the main page.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@270 a4c988fc-2ded-0310-b66e-134b36920a42
That will take you to the login page, and then to the mobile view. I've tried to make the interface as functional as possible, while still fitting neatly on a small screen, being very lightweight in terms of page size (those data plans are expensive!), and not requiring too much messing about with a phone keyboard.
The main screen lists all uncompleted next actions, 6 per page. If you select the double right arrow link, you'll be taken to a detail view which doubles as a place to view all the details, or an editing page (hit the back button to get back if you're just viewing, update to commit your edits).
At the bottom of each page there are two select boxes which allow you to filter the view to a particular context or project.
It needs a little more work, but it's quite functional right now.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@263 a4c988fc-2ded-0310-b66e-134b36920a42
The 'week_starts' and 'due_style' preferences can now be selected with an options list rather than entered in a textfield. This makes much more sense without the user having to look at the help notes.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@253 a4c988fc-2ded-0310-b66e-134b36920a42
of the Rails 1.1 responds_to functionality. It also lays a foundation for future API
enhancements.
Basically, if you request the /projects, contexts/ or notes/ URLs with a client that specifies that it wants XML, Tracks will return XML. See DHH on the Accept header (http://www.loudthinking.com/arc/000572.html).
But there's a wrinkle. The controller actions mapped to these URLs are protected by an authentication filter. In normal use, Tracks redirects an unauthenticated user to the login screen for session-based authentication.
I've added a secondary authentication check that looks for a valid username and password coming from HTTP_BASIC authentication.
To test out the new functionality, try this:
curl -H 'Accept: application/xml' --basic --user YOUR_TRACKS_USERNAME:YOUR_TRACKS_PASSWORD http://localhost:3000/projects/
curl -H 'Accept: application/xml' --basic --user YOUR_TRACKS_USERNAME:YOUR_TRACKS_PASSWORD http://localhost:3000/contexts/
curl -H 'Accept: application/xml' --basic --user YOUR_TRACKS_USERNAME:YOUR_TRACKS_PASSWORD http://localhost:3000/notes/
HTTP_BASIC sends passwords in plain text, so the use of https is encouraged.
I haven't tested this on a shared host yet, but Coda Hale, whose simple_http_auth inspired this solution and provided some copy and paste code for it (thanks, Coda!), has some notes about how to make it work in his plugin readme (http://svn.codahale.com/simple_http_auth/README). To wit, putting the following in .htaccess:
RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
My thinking on this architecture is as follows:
1) Follow the spirit of responds_to and DRY to leverage existing controller code for API functionality
2) Get away from using the user token for API interactions. Let's keep it for feeds, so it's basically a "lite" form of security for read-only feeds.
3) Keep Tracks in shape to adopt the simply_restful plugin being developed alongside Rails Edge
There's no real new functionality in this release that the existing API didn't provide (except for seeing your notes as XML, and somehow I don't think people are clamoring for that), but this work is an important step to being able to implement the types of API features people have been asking for.
While I was at it, I did some refactoring to the login_controller for readability and style.
Finally, I replaced the activity indicator graphic to work with the new navigation background color.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@251 a4c988fc-2ded-0310-b66e-134b36920a42
Instead of opening up a form on the main page, clicking the 'Add new action' link (or hitting Alt/Ctrl N) opens up an overlay window, with a semi-transparent window underneath. You can add as many actions as you like by filling in the forms and hitting submit, then when you're done, click the close box or the shaded overlay area to dismiss the window.
It works very well on Safari, but for some reason, on my copy of Firefox, the cursor is invisible.
My plan is to also allow deferred actions to be added using this form, and eventually set up editing of existing actions to use the same format.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@250 a4c988fc-2ded-0310-b66e-134b36920a42
Experimentally, I've made the whole top navigation section fixed so that it stays in place as the page scrolls, and it's black and slightly transparent to give it a different feel. I'm not sure if I like it or not, but it does make the links handily available.
I've also made the layout a bit more fluid to use the available width better. It's not quite right yet, but it works much better with wide displays (fixing #193) and also with narrow displays (fixing #262).
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@245 a4c988fc-2ded-0310-b66e-134b36920a42
It has these features:
* The todos table and model has been altered (run rake migrate to update) to create two sub-classes of the todo model: Immediate and Deferred. Fairly obviously, Immediate actions are those shown immediately, and Deferred are those shown when certain conditions are fulfilled. At the moment, this is when the 'show_from' date arrives.
* Deferred actions are created on a separate page: /todo/tickler. You can view the show_from date here and delete or edit the actions. Deferred actions don't show on the home page (their handling on project and context pages is still to be fixed).
* A periodically called method (every 10 minutes) checks whether any of the deferred actions is due to be show, and if so, a warning message is shown on the home page to tell you how many deferred actions are to be shown. You need to refresh the page to see them (again, this is to be fixed).
* When deferred actions become due, their type is changed from "Deferred" to "Immediate". The handling of their staleness is still to be fixed.
There's a way to go before it's really smooth, but it's a start.
At least partially fixes#270 and #78, but will be improved with time too.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@232 a4c988fc-2ded-0310-b66e-134b36920a42
't' input today's date
'+' or '=' increment the date in the field by one day
'-' decrement the date in the field by one day
When the calendar is visible, the shortcuts play nicely with it. If the calendar is not visible they still work properly, which makes them useful for keyboard-only next action input. Pressing '+' when no date is entered in the field will set the date to tomorrow, and likewise '-' with no date entered will set the date to yesterday.
Closes#264
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@231 a4c988fc-2ded-0310-b66e-134b36920a42
I also modified the context pages slightly so that it only shows the last n completed actions in that project, where n is the number of completed actions user preference (no_completed). I'll do the same for projects. It prevents the context and project individual pages getting unmanageably long when you've been using it for a while.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@214 a4c988fc-2ded-0310-b66e-134b36920a42
So now I've got rid of the svn:externals property on vendor which was supposed to be bringing in the tagged Rails release, and I'm using rake freeze_edge instead to freeze to the 1.1 release.
Seems to be working OK for me now. Note that if you're using this, Ruby 1.8.4 is recommended, and you'll need to delete your old lighttpd.conf in config (if you have one) and let Rails generate a new one for you when you start lighttpd with script/server.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@212 a4c988fc-2ded-0310-b66e-134b36920a42
One issue is that adding successive actions without refreshing on the home page only triggers the spinner the first time, but deleting actions on the same page without refreshing triggers it each time. I don't have a clue why.
Fixes#192.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@208 a4c988fc-2ded-0310-b66e-134b36920a42
Tidied some of the CSS for the user and login pages.
Tidied the flash display so that it dynamically shows either the notice, warning or message flash as appropriate.
Note that the login tests are broken for now.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@190 a4c988fc-2ded-0310-b66e-134b36920a42
I'm intending this to be the last big change before releasing 1.04. Can people with access to the trunk through subversion check out this changeset and report any bugs?
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@182 a4c988fc-2ded-0310-b66e-134b36920a42
* Set up notification of the session timing out. If you haven't checked the 'Keep logged in' checkbox at login, a method is run periodically (every 5 minutes) to check whether there is more than 10 minutes remaining on your session. When there's less than 10 minutes left, a red warning box appears dynamically at the top of the page appears to tell you that your session has timed out, and asking you to login again (with a link to the login page). This basically prevents the situation when you return to the browser window after more than an hour has elapsed, and try to add a new item without knowing that your session has timed out.
* Changed the find methods that previously used 'done = 0' or 'done = 1' to test for truth or falsity instead. This means that it's compatible with both MySQL (which uses tinyint 0 or 1 values) and SQLite/SQLite3 and PostgreSQL (which use boolean 't' or 'f' values). By using true or false, ActiveRecord translates the values to the correct format depending on which database adapter is being used.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@178 a4c988fc-2ded-0310-b66e-134b36920a42
I also added the following:
* Expanded Luke's patch so that toggling also works on Context and Project pages.
* The 'empty' messages for the uncompleted and completed actions divs now appear and disappear automatically on the context and project pages as you toggle, untoggle, add and delete actions
* At some point, hiding of contexts on the front page broke. It seems that recent updates to Rails changed the way that it interprets tinyint fields: these can now only be tested with true or false, not 0 and 1, and that was why it broke. Also the code for selecting only unhidden contexts on the front page used .hidden? for some reason and not .hide. Fixed now.
A remaining issue is that on the home page, if you add an action to (or uncheck an action to) a context that is not currently shown (because it is hidden, or it has been empty), the record will be changed, but nothing will appear to happen until you refresh. I'd like to test for this situation and put a message up assuring the user that things worked and that they need to refresh.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@175 a4c988fc-2ded-0310-b66e-134b36920a42
* Added Luke Melia's patch to warn the user when the session has timed out when the user has added or checked off a next action without refreshing the page first. If they check off an item, they are redirected to the login page, then when they return, they are informed that the action has been checked off. If they add an item, they are informed after returning from the login page that the next action hasn't been added. Fixes#163.
* Made some stylistic changes to login and signup pages to make them tidier, and to fit with the main theme better
* Fixed bug with deleting items: the sheet which appeared was an alert (with only an 'OK' box, rather than a confirmation (with both an 'OK' and 'Cancel' box). Fixes#189.
* Added a new feed icon to comply with the new de-facto standard: from [http://www.feedicons.com/ Feed Icons].
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@172 a4c988fc-2ded-0310-b66e-134b36920a42
* Installed the RJS plugin http://www.codyfauser.com/articles/2005/12/05/rjs-templates-plugin-subversion-repository
* Used the RJS templates to update multiple page elements on addition and deletion of actions: the new action gets added, the count 'badge' is updated correctly, and a status area provides helpful information.
* If your data entry triggers validation errors e.g. no description for the next action), the errors are displayed in the status area (not very prettily as yet...)
* The message about the context/project having no uncompleted actions automagically appears/disappears without refreshing the page.
The editing and toggling of actions hasn't been updated yet.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@171 a4c988fc-2ded-0310-b66e-134b36920a42
As a result, I'm going to redo the empty message changes I made in [164], and will see if I can find a more sensible way to implement them. The empty messages still appear (now also in the notes area if that's empty), but you need a refresh after Ajax changes to view or remove them.
git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@165 a4c988fc-2ded-0310-b66e-134b36920a42