diff --git a/README b/README index 647baf5d..fcc1d7a8 100644 --- a/README +++ b/README @@ -1,21 +1,24 @@ # Tracks: a GTD(TM) web application, built with Ruby on Rails * Project homepage: http://getontracks.org/ -* GitHub: http://github.com/bsag/tracks/ +* Manual: http://bsag.github.com/tracks/ +* Source at GitHub: http://github.com/bsag/tracks/ * Assembla space (for bug reports and feature requests): http://www.assembla.com/spaces/tracks-tickets/tickets * Wiki (community contributed information): http://getontracks.org/wiki/ * Forum: http://getontracks.org/forums/ * Mailing list: http://lists.rousette.org.uk/mailman/listinfo/tracks-discuss * Original developer: bsag (http://www.rousette.org.uk/) -* Contributors: http://getontracks.org/wiki/Tracks/Contributing/Contributors -* Version: 1.7 -* Copyright: (cc) 2004-2009 rousette.org.uk. +* Contributors: http://getontracks.org/wiki/Contributors +* Version: 2.0RC1 +* Copyright: (cc) 2004-2010 rousette.org.uk. * License: GNU GPL All the documentation for Tracks can be found within the /doc directory. It contains a manual in HTML (manual.html) or PDF format (manual.pdf), and this includes full instructions for both new installations and upgrades from older installations of Tracks. The instructions might appear long and intimidatingly complex, but that is mostly because of the number of different platforms supported, and the different configurations which can be used (e.g. running Tracks on your local computer or on a remote server). If you choose the appropriate section for your situation (installation vs. upgrade), and use the easiest (recommended) method, you should find the instructions easy to follow. If you encounter problems, try searching the wiki, forum or mailing list (URLs above), and ask a question if you cannot find a solution to your problem. If you checked out Tracks from the GitHub repository, the manual is not provided by default and is in its own git submodule. To checkout the manual's source files, type "git submodule init doc/manual & git submodule update doc/manual". From then on, you should be able to issue the command "git pull" in the doc/manual directory to update the manual with the latest changes. +The latest version of the manual can be found at http://bsag.github.com/tracks/ + For those upgrading, change notes are available in /doc/CHANGELOG. If you are thinking about contributing towards the development of Tracks, please read /doc/README_DEVELOPERS for general information, or /doc/tracks_api_wrapper.rb for information on Tracks' API. While fully usable for everyday use, Tracks is still a work in progress. Make sure that you take sensible precautions and back up all your data frequently, taking particular care when you are upgrading. diff --git a/app/controllers/contexts_controller.rb b/app/controllers/contexts_controller.rb index d6492211..8365c320 100644 --- a/app/controllers/contexts_controller.rb +++ b/app/controllers/contexts_controller.rb @@ -121,6 +121,9 @@ class ContextsController < ApplicationController # actions, you'll get a warning dialogue. If you choose to go ahead, any # actions in the context will also be deleted. def destroy + # make sure the deleted recurring patterns are removed from associated todos + @context.recurring_todos.each { |rt| rt.clear_todos_association } unless @context.recurring_todos.nil? + @context.destroy respond_to do |format| format.js { @down_count = current_user.contexts.size } diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb index fd155d03..adb0704a 100644 --- a/app/helpers/todos_helper.rb +++ b/app/helpers/todos_helper.rb @@ -280,8 +280,11 @@ module TodosHelper end def format_ical_notes(notes) - split_notes = notes.split(/\n/) - joined_notes = split_notes.join("\\n") + unless notes.blank? + split_notes = notes.split(/\n/) + joined_notes = split_notes.join("\\n") + end + joined_notes || "" end def formatted_pagination(total) diff --git a/app/models/recurring_todo.rb b/app/models/recurring_todo.rb index 64a95889..dfd64985 100644 --- a/app/models/recurring_todo.rb +++ b/app/models/recurring_todo.rb @@ -717,6 +717,15 @@ class RecurringTodo < ActiveRecord::Base self.save end + def clear_todos_association + unless todos.nil? + self.todos.each do |t| + t.recurring_todo = nil + t.save + end + end + end + def inc_occurences self.occurences_count += 1 self.save diff --git a/app/views/contexts/_context_listing.rhtml b/app/views/contexts/_context_listing.rhtml index f4c8ce5c..725cd633 100644 --- a/app/views/contexts/_context_listing.rhtml +++ b/app/views/contexts/_context_listing.rhtml @@ -26,7 +26,7 @@ :with => "'_source_view=#{@source_view}'", :before => "$('#{dom_id(context)}').block({message:null});", :complete => "$('#{dom_id(context)}').unblock();", - :confirm => "Are you sure that you want to delete the context '#{context.name}'? Be aware that this will also delete all actions in this context!", + :confirm => "Are you sure that you want to delete the context '#{context.name}'? Be aware that this will also delete all (repeating) actions in this context!", :html => { :id => dom_id(context, 'delete') } ) %> <%= link_to_remote( diff --git a/app/views/stats/_totals.rhtml b/app/views/stats/_totals.rhtml index 500fde10..9cece4b2 100755 --- a/app/views/stats/_totals.rhtml +++ b/app/views/stats/_totals.rhtml @@ -15,7 +15,7 @@ you have a total of <%= @actions.count %> actions.

You have <%= @actions.not_completed.count %> incomplete actions of which <%= @actions.deferred.count %> are deferred actions in the tickler and <%= @actions.blocked.count %> are dependent on the completion of other actions. -.

+

You have <%= @tags_count-%> tags placed on actions. Of those tags, <%= @unique_tags_count -%> are unique. diff --git a/doc/CHANGELOG b/doc/CHANGELOG index cc1a0194..0d8351f9 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -1,31 +1,42 @@ = Tracks: a GTD web application, built with Ruby on Rails * Project homepage: http://getontracks.org/ -* GitHub: http://github.com/bsag/tracks/ +* Manual: http://bsag.github.com/tracks/ +* Source at GitHub: http://github.com/bsag/tracks/ * Assembla space (for bug reports and feature requests): http://www.assembla.com/spaces/tracks-tickets/tickets * Wiki (community contributed information): http://getontracks.org/wiki/ * Forum: http://getontracks.org/forums/ * Mailing list: http://lists.rousette.org.uk/mailman/listinfo/tracks-discuss * Original developer: bsag (http://www.rousette.org.uk/) -* Contributors: http://getontracks.org/wiki/Tracks/Contributing/Contributors -* Version: 1.8devel -* Copyright: (cc) 2004-2009 rousette.org.uk. +* Contributors: http://getontracks.org/wiki/Contributors +* Version: 2.0RC1 +* Copyright: (cc) 2004-2010 rousette.org.uk. * License: GNU GPL -== Version 1.7devel +== Version 2.0 (RC) New features: 1. Redesign of menus and introduction of a context menu per todo 2. You can now set the default tags for a project which are added automatically to a new todo in that project if no tags are supplied -3. The email receiver is now able to receive email from several email adresses. +3. Tracks now includes support of dependencies. Making an action dependent on another action will hide it until the dependency is completed +4. you can now drag an action from one context to another +5. Support for entering multiple actions in one form +6. You can now promote an action to a project +7. It is easier to view notes on the mobile interface and other interface fixes +8. The project description supports markup +9. support for Mail.app (message://) and OneNote (onenote://) links in notes +10.The email receiver is now able to receive email from several email adresses. In site.yml this could be set to the previous behavior (receive from one address per user) -4. You can enable open signup (like in tracks.tra.in) -5. Cleanup of context page +11.You can enable open signup (like in tracks.tra.in) +12.Cleanup of context page +13.Support for CAS for login +14.Support for adding Tracks as a GMail Widget with instructions on the Integrations page Under the hood -1. With the menus came jQuery. Some js is migrated to jQuery -2. Cucumber is added for integration testing. And migration of stories to cucumber -3. Bugfixes +1. All js is migrated to jQuery and most ui-widgets are migrated to jQuery-UI +2. Cucumber is added for integration testing. The RSpec stories are migrated to cucumber +3. Upgraded to rails 2.3.5 (newer versions unfortunately conflict with cucumber) +3. Bugfixes (lots of them) == Version 1.7 diff --git a/doc/README_DEVELOPERS b/doc/README_DEVELOPERS index 1c5bd72b..ecdf371f 100644 --- a/doc/README_DEVELOPERS +++ b/doc/README_DEVELOPERS @@ -1,8 +1,28 @@ -1. Wiki +1. Resources + +Tracks is using +* github to host the git repository. +* Assembla to manage bugs and enhancement request. +* the mailing list to discuss features and development +* the forum to discuss with users + +See README for links to the respective sites + +2. Dependencies + +The dependencies are maintained by Tracks. For development we try not to vendor them + +Install them using + + rake gems:install RAILS_ENV=development + rake gems:install RAILS_ENV=test + rake gems:install RAILS_ENV=selenium + +3. Wiki There are some pointers for setting up your Tracks copy for testing at http://www.getontracks.org/wiki/Testing/ -2. SQLITE3 FOR TESTING +4. SQLITE3 FOR TESTING By default, tests are configured to run using sqlite3 in memory mode to increase speed. You will need the sqlite3-ruby gem for this. @@ -12,39 +32,24 @@ To avoid showing the migrations as tests are run, add the following to your data If you want to run tests using another database, that's fine, too. Just change your database.yml accordingly. -3. SELENIUM TESTS (Selenium on Rails) +5. SELENIUM TESTS (Selenium on Rails) -This testing style is deprecated and are being moved over to Selenium via RSpec stories by lukemelia (See #4 below for the new style). - -To run selenium tests, start Tracks in test mode using +This testing style is deprecated and are being moved over to Selenium via Cucumber. - script/server -e test - -Then open a browser to +See the wiki for more information to run the tests that are not yet migrated - http://localhost:3000/selenium/ - -and interact with the test runner. +6. RSPEC tests -For more information about Selenium on Rails, see vendor/plugins/selenium-on-rails/README +To run the RSpec tests run -4. RSPEC STORY RUNNER TESTS + rake spec -To run the stories, which are browser tests using selenium, start Tracks in test mode using +7. Cucumber tests - rake db:test:prepare - script/server -e test - -Then start Selenium by running +To run the cucumber test run - selenium - -which is a script installed with the Selenium gem (sudo gem install Selenium) + rake cucumber -Once the site and selenium server are running, then run all stories with +and for those using javascript/ajax use - script/story - -or a specific set with - - script/story stories/login/*.story + rake cucumber:selenium \ No newline at end of file diff --git a/test/selenium/mobile/create_new_action.rsel b/test/selenium/mobile/create_new_action.rsel index 93ec8505..7e6c2313 100644 --- a/test/selenium/mobile/create_new_action.rsel +++ b/test/selenium/mobile/create_new_action.rsel @@ -12,7 +12,7 @@ select "todo_context_id", "label=call" select "todo_project_id", "label=Make more money than Billy Gates" select "todo_due_3i", "label=1" select "todo_due_2i", "label=January" -select "todo_due_1i", "label=2009" +select "todo_due_1i", "label=2011" click_and_wait "//input[@value='Create']" wait_for_text 'css=h1 span.count', '12' diff --git a/test/selenium/project_detail/add_note.rsel b/test/selenium/project_detail/add_note.rsel index a4a39905..ff0040ba 100644 --- a/test/selenium/project_detail/add_note.rsel +++ b/test/selenium/project_detail/add_note.rsel @@ -8,7 +8,7 @@ click "css=.add_note_link a" assert_visible "new-note" -type "new_note_body", "this is a note" +type "note_body", "this is a note" click 'css=#new-note input[type=submit]' wait_for_text_present "this is a note"