Project

General

Profile

ToDo lists plugin

Added by david lyons about 15 years ago

Hello people,

Ive developed a very usable little ToDo lists plugin for Redmine, sort of inspired by Basecamp. It allows you to create nestable per-project todo lists, as well as a general, personal ToDo list for stuff not related to a particular project.
It supports:
  • drag & drop reordering of lists
  • Ability to tie a todo item to an Issue
  • Ability to assign todos to other users
  • Ability to assign a due date to Todo items

Intended use is for developers - We found that Issues(bug/feature request) are often too coarse and can represent too large a unit of work to use it to track your day-to-day work. For example - there might be a feature request to say 'add a new screen with the ability to search users by various fields, and calculate their blah blah blah'. We use the todo lists to keep track of all the things we have to do(design, implement each sub feature, etc) to implement that Feature.

I did intend to add some basic Scrumm-ish workflow management to the todo lists; however it seems now that there are other Scrumm plugins around now built by larger teams than me that are more sophisticated than I could probably achieve in my spare time.

Anyway, check it out at http://github.com/dalyons/redmine-todos-scrum-plugin/tree/master and see if it warrants inclusion on the Wiki plugins list :). Any feedback, suggestions etc, very welcome.


Replies (146)

RE: ToDo lists plugin - Added by Jérémy Lal about 15 years ago

i know i'm lazy but some screenshots would be nice :)

RE: ToDo lists plugin - Added by Mischa The Evil about 15 years ago

david lyons wrote:

... and see if it warrants inclusion on the Wiki plugins list :)...

My opinion is that it would be good to include this neat-plugin on Plugins... I can setup such a page (e.g. PluginCollapse) for you if you'd like...?

You can also request Jean-Philippe himself to grant you with the contributor-role here on redmine.org to be able to setup and maintain that page yourself overtime...

Greetings,

Mischa.

RE: ToDo lists plugin - Added by Kaspars Sprogis about 15 years ago

Thanks! Very nice plugin and exactly as we were looking for! However it wasn't easy finding it :)
Just one question: Is there really no Editing possibility for todo item or i just cant see it? If i accidentaly create mistake, i cannot fix this item and deleting and adding again is quite annoying :| Are you planning this feature in the future?

RE: ToDo lists plugin - Added by Chaoqun Zou about 15 years ago

It looks very good! But now it's not compitable with redmine devel after it has upgraded to rails 2.2.2.
It would be great to see a upgraded version.

RE: ToDo lists plugin - Added by david lyons about 15 years ago

Kaspars Sprogis wrote:

Thanks! Very nice plugin and exactly as we were looking for! However it wasn't easy finding it :)
Just one question: Is there really no Editing possibility for todo item or i just cant see it? If i accidentaly create mistake, i cannot fix this item and deleting and adding again is quite annoying :| Are you planning this feature in the future?

Yes I am planning to allow editing, just trying to think of the nicest way to fit it into the UI!

RE: ToDo lists plugin - Added by david lyons about 15 years ago

Chaoqun Zou wrote:

It looks very good! But now it's not compitable with redmine devel after it has upgraded to rails 2.2.2.
It would be great to see a upgraded version.

Could you please give me some more info of what you mean by not compatible? As in, post the error message and logs, etc.

I just installed a clean copy of redmine devel on rails 2.2.2, then installed the plugin, and all seems to be working for me?

RE: ToDo lists plugin - Added by Kaspars Sprogis about 15 years ago

david lyons wrote:

Kaspars Sprogis wrote:

Thanks! Very nice plugin and exactly as we were looking for! However it wasn't easy finding it :)
Just one question: Is there really no Editing possibility for todo item or i just cant see it? If i accidentaly create mistake, i cannot fix this item and deleting and adding again is quite annoying :| Are you planning this feature in the future?

Yes I am planning to allow editing, just trying to think of the nicest way to fit it into the UI!

I have three solutions to suggest:
  1. By double clicking item, replace text with input
  2. Integrate right click menu - the same as for redmine issues list - menu could also have some more items in it, if there is any planned.
  3. And of course there is always icon solution, but too much icons are not so good

RE: ToDo lists plugin - Added by Chaoqun Zou about 15 years ago

Hi, I have tried with the lasted code from github. And the page will show exception as:

NoMethodError in TodosController#index

undefined method `todos' for #<Project:0x54aac04>

RAILS_ROOT: D:/ruby/workspace/redmine
Application Trace | Framework Trace | Full Trace

C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/attribute_methods.rb:260:in `method_missing'
vendor/plugins/redmine_todos_plugin/app/controllers/todos_controller.rb:13:in `index'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `send'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `perform_action_without_filters'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:617:in `call_filters'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
C:/Ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/rescue.rb:136:in `perform_action_without_caching'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/query_cache.rb:8:in `cache'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `send'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `process_without_filters'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/session_management.rb:134:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:392:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:183:in `handle_request'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:110:in `dispatch_unlocked'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:123:in `dispatch'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `synchronize'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `dispatch'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:132:in `dispatch_cgi'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:39:in `dispatch'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/rails.rb:76:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/rails.rb:74:in `synchronize'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/rails.rb:74:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:159:in `process_client'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:158:in `each'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:158:in `process_client'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `initialize'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `new'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `initialize'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `new'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/configurator.rb:282:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/configurator.rb:281:in `each'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/configurator.rb:281:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mongrel_rails:128:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/command.rb:212:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mongrel_rails:281
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load_without_new_constant_marking'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load'
C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/servers/mongrel.rb:64
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3

C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/attribute_methods.rb:260:in `method_missing'
vendor/plugins/redmine_todos_plugin/app/controllers/todos_controller.rb:13:in `index'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `send'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `perform_action_without_filters'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:617:in `call_filters'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
C:/Ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/rescue.rb:136:in `perform_action_without_caching'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/query_cache.rb:8:in `cache'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `send'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `process_without_filters'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/session_management.rb:134:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:392:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:183:in `handle_request'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:110:in `dispatch_unlocked'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:123:in `dispatch'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `synchronize'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `dispatch'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:132:in `dispatch_cgi'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:39:in `dispatch'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/rails.rb:76:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/rails.rb:74:in `synchronize'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/rails.rb:74:in `process'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:159:in `process_client'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:158:in `each'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:158:in `process_client'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `initialize'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `new'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `initialize'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `new'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/configurator.rb:282:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/configurator.rb:281:in `each'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/configurator.rb:281:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mongrel_rails:128:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel/command.rb:212:in `run'
C:/Ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mongrel_rails:281
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load_without_new_constant_marking'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load'
C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/servers/mongrel.rb:64
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3

Request

Parameters:

{"project_id"=>"tomcat"}

Show session dump

---
:user_id: 1
flash: !map:ActionController::Flash::FlashHash {}

Response

Headers:

{"cookie"=>[],
"Content-Type"=>"",
"Cache-Control"=>"no-cache"}

RE: ToDo lists plugin - Added by david lyons about 15 years ago

Chaoqun Zou wrote:

Hi, I have tried with the lasted code from github. And the page will show exception as:

NoMethodError in TodosController#index

undefined method `todos' for #<Project:0x54aac04>

RAILS_ROOT: D:/ruby/workspace/redmine
Application Trace | Framework Trace | Full Trace

C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/attribute_methods.rb:260:in `method_missing'
vendor/plugins/redmine_todos_plugin/app/controllers/todos_controller.rb:13:in `index'

}

Thanks heaps for that. Confirmed something I have been seeing with others.

Todos makes some patches to User and Project, so that I can use methods like User.current.todos and Project.todos.

Unfortunately it seems if your rails webserver is running in development mode, these patches dont work because it keeps reloading the classes with every request, and 'forgetting' the patches.
As a temporary fix you can either use production mode, or make sure it has this line in config/environments/development.rb:
config.cache_classes = true (instead of false, just like in production mode)

Does anyone know how you can apply permanent patches to Redmine classes that will stick in development mode? All im doing is class_eval'ing in a few association helpers.

RE: ToDo lists plugin - Added by Axel B. about 15 years ago

Hi,

after the installation of the latest version from github (migration + server restart + defining roles) I get an internal server error page, when I try to enter My todos or the project todos (if enabled).

Any ideas? Do I have to make some changes in permissions within the plugin? I am not that familiar with RoR. Thanks.

Greets Axel

RE: ToDo lists plugin - Added by david lyons about 15 years ago

Axel dV,
I made quite a few changes today, and im afraid a few of the commits left it in an unusable state. My latest commit(maybe 4 hours ago?) should have fixed all that up, so make sure you have the very latest version!

If thats not the case please post the error details from your log (REDMINE_DIR/log/production.log) or (REDMINE_DIR/log/development.log).

@Zou(and others),
I have removed the patches to redmine core, so you should be able to run it in development mode now without changing anything in your conf

RE: ToDo lists plugin - Added by Axel B. about 15 years ago

Hi David,

this is written in the production.log when I enter the "My todos" page ... development.log is not touched.

Processing MytodosController#index (for 88.73.198.25 at 2009-03-16 13:54:48) [GET]
  Session ID: 4f731a65c8c2500844c30244670dbf5f
  Parameters: {"action"=>"index", "controller"=>"mytodos"}
Rendering template within layouts/base
Rendering mytodos/index

ActionView::TemplateError (No plugin called 'redmine_todos_plugin' - please use the full name of a loaded plugin.) on line #2 of vendor/plugins/redmine-todos-scrum-plugin/app/views/mytodos/index.html.erb:
1: <% content_for :header_tags do %>
2:     <%= stylesheet_link_tag 'todos', :plugin => 'redmine_todos_plugin' %>
3:     <%= stylesheet_link_tag 'todos_print', :plugin => 'redmine_todos_plugin', :media => 'print' %>
4: <% end %>
5:

    vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb:111:in `plugin_asset_path'
    vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb:104:in `pluginify_sources'
    vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb:104:in `map!'
    vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb:104:in `pluginify_sources'
    vendor/plugins/engines/lib/engines/rails_extensions/asset_helpers.rb:67:in `stylesheet_link_tag'
    vendor/plugins/redmine-todos-scrum-plugin/app/views/mytodos/index.html.erb:2:in `_run_erb_47vendor47plugins47redmine45todos45scrum45plugin47app47views47mytodos47index46html46erb'
    vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb:141:in `call'
    vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb:141:in `capture_erb_with_buffer'
    vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb:44:in `capture'
    vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb:125:in `content_for'
    app/helpers/application_helper.rb:599:in `content_for'
    vendor/plugins/redmine-todos-scrum-plugin/app/views/mytodos/index.html.erb:1:in `_run_erb_47vendor47plugins47redmine45todos45scrum45plugin47app47views47mytodos47index46html46erb'
    vendor/rails/actionpack/lib/action_view/base.rb:342:in `send'
    vendor/rails/actionpack/lib/action_view/base.rb:342:in `execute'
    vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb:29:in `send'
    vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb:29:in `render'
    vendor/rails/actionpack/lib/action_view/template.rb:35:in `render'
    vendor/rails/actionpack/lib/action_view/template.rb:22:in `render_template'
    vendor/rails/actionpack/lib/action_view/base.rb:248:in `render_file'
    vendor/rails/actionpack/lib/action_controller/base.rb:1112:in `render_for_file'
    vendor/rails/actionpack/lib/action_controller/base.rb:845:in `render_with_no_layout'
    vendor/rails/actionpack/lib/action_controller/layout.rb:251:in `render_without_benchmark'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in `render'
    vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:8:in `realtime'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in `render'
    vendor/rails/actionpack/lib/action_controller/base.rb:1161:in `default_render'
    vendor/rails/actionpack/lib/action_controller/base.rb:1167:in `perform_action_without_filters'
    vendor/rails/actionpack/lib/action_controller/filters.rb:579:in `call_filters'
    vendor/rails/actionpack/lib/action_controller/filters.rb:572:in `perform_action_without_benchmark'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    vendor/rails/actionpack/lib/action_controller/rescue.rb:201:in `perform_action_without_caching'
    vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:13:in `passenger_orig_perform_action'
    vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:33:in `cache'
    vendor/rails/activerecord/lib/active_record/query_cache.rb:8:in `cache'
    vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:12:in `passenger_orig_perform_action'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/request_handler.rb:53:in `perform_action'
    vendor/rails/actionpack/lib/action_controller/base.rb:529:in `send'
    vendor/rails/actionpack/lib/action_controller/base.rb:529:in `process_without_filters'
    vendor/rails/actionpack/lib/action_controller/filters.rb:568:in `process_without_session_management_support'
    vendor/rails/actionpack/lib/action_controller/session_management.rb:130:in `process'
    vendor/rails/actionpack/lib/action_controller/base.rb:389:in `process'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:149:in `handle_request'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:107:in `dispatch'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in `synchronize'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in `dispatch'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:35:in `dispatch'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/request_handler.rb:38:in `process_request'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_request_handler.rb:165:in `main_loop'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/application_spawner.rb:321:in `start_request_handler'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/application_spawner.rb:282:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/utils.rb:163:in `safe_fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/utils.rb:161:in `fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/utils.rb:161:in `safe_fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/application_spawner.rb:280:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/utils.rb:163:in `safe_fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/utils.rb:161:in `fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/utils.rb:161:in `safe_fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/application_spawner.rb:279:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:317:in `__send__'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:317:in `main_loop'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:168:in `start_synchronously'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:135:in `start'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:112:in `fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:112:in `start'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/railz/application_spawner.rb:179:in `start'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/spawn_manager.rb:222:in `spawn_rails_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/spawn_manager.rb:217:in `synchronize'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/spawn_manager.rb:217:in `spawn_rails_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/spawn_manager.rb:126:in `spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/spawn_manager.rb:251:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:317:in `__send__'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:317:in `main_loop'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/lib/passenger/abstract_server.rb:168:in `start_synchronously'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/bin/passenger-spawn-server:46

Rendering /opt/redmine-0.8.2/public/500.html (500 Internal Server Error)

RE: ToDo lists plugin - Added by Mischa The Evil about 15 years ago

Axel B. wrote:

Hi David,

this is written in the production.log when I enter the "My todos" page ... development.log is not touched.

[...]

Axel, you've installed the plugin in ../vendor/plugins/redmine-todos-scrum-plugin. This directory should be ../vendor/plugins/redmine_todos_plugin.

HTH...

RE: ToDo lists plugin - Added by Axel B. about 15 years ago

Well, yeah does the trick. But you should mention this somewhere in the readme, that the github project name (which is also the directory, that git clone creates in vendor/plugins) is not the real plugin name.

Nevertheless, I have some issues with the ajax features. When I mark a todo as done, it's only done after reloading the page. And after the reload I see a %> after the form box. After deleting the todo (which also only takes real effect after a page reload) the closing tag is gone again.

RE: ToDo lists plugin - Added by david lyons about 15 years ago

Axel dV,

Yeah that does suck a little bit RE the install path. Nothing I can do though - Rails Engines requires the plugin's directory name when you load plugin css files, images etc, rather than the plugin name. Its inconsistent and it means you have to have the plugin in a fixed directory, which is annoying. In the install instructions i did gave a line to copy pasta with the correct path - it works if you do that. At your suggestion though I have added a note explicitly stating that.

As to your AJAX issues, I had a look and there were some CSS issues that ive fixed up now, if you want to update. I never saw that extra "%>" though?

Let me know how it goes.

RE: ToDo lists plugin - Added by Chaoqun Zou about 15 years ago

Hi, david.

Thanks for your great work. And would you like to tell us how did you remove the redmine core's patches? I have an interest in doing that.

RE: ToDo lists plugin - Added by david lyons about 15 years ago

thanks Zou!
Perhaps by 'redmine core patches' i chose a poor name! :) Ill explain what I mean.

Todos can belong to a project, so I wanted to add an association helper ":has_many :todos" into the Project class, so that in my Project todos view I could do something like@ todos = @project.todos instead of Todo.find_all_by_project_id(@project.id) .
So i made some patch modules that patched patched project and User to do this and other things.
The problem was, they work fine in production mode, but not in development mode, because in dev mode it reloads the Redmine classes every request and loses the patches, then you get errors like NoSuchMethod Project.todos. I tried a bunch of things to force it to reload the patches as well as the redmine classes, but nothing worked reliably, so in the end i tore it all out and used named scopes instead.
So now you have Todo.for_project(@project) which is still not ideal, but it works every time :)

RE: ToDo lists plugin - Added by Thomas Löber about 15 years ago

david lyons wrote:

The problem was, they work fine in production mode, but not in development mode, because in dev mode it reloads the Redmine classes every request and loses the patches, then you get errors like NoSuchMethod Project.todos. I tried a bunch of things to force it to reload the patches as well as the redmine classes, but nothing worked reliably, so in the end i tore it all out and used named scopes instead.

Did you try Dispatcher.to_prepare to have your model patches reloaded in development mode? This works fine in a plugin I wrote.

require "dispatcher" 

Dispatcher.to_prepare :redmine_todos_scrum_plugin_model_patches do
  Project.send(:include, TodosProjectPatch)
  User.send(:include, TodosUserPatch)
end

RE: ToDo lists plugin - Added by Defferrari Suporte Suporte about 15 years ago

Hello,

This plugin is compatible with the Redmine version 0.8.2?

I'm trying install but when I restart the application I have an 500 error.

RE: ToDo lists plugin - Added by david lyons about 15 years ago

Defferrari Suporte Suporte wrote:

Hello,

This plugin is compatible with the Redmine version 0.8.2?

I'm trying install but when I restart the application I have an 500 error.

I just tested it, and it works for me! Here's exactly what I did:

mkdir redmine-test-8.2
svn co http://redmine.rubyforge.org/svn/tags/0.8.2/ redmine-test-8.2
cp redmine/config/database.yml redmine-test-8.2/config/ #copy the database settings from our live redmine instance.
cd redmine-test-8.2/vendor/plugins
git clone git://github.com/dalyons/redmine-todos-scrum-plugin.git redmine_todos_plugin
cd ../../
ruby script/server

done!

Could you perhaps send me the contents of your log? (REDMINE_DIR/log/production.log) or (REDMINE_DIR/log/development.log).

RE: ToDo lists plugin - Added by Defferrari Suporte Suporte almost 15 years ago

I'm trying install the plugin using this http://www.redmine.org/wiki/redmine/Plugins

Is not correct?

david lyons wrote:

Defferrari Suporte Suporte wrote:

Hello,

This plugin is compatible with the Redmine version 0.8.2?

I'm trying install but when I restart the application I have an 500 error.

I just tested it, and it works for me! Here's exactly what I did:

mkdir redmine-test-8.2
svn co http://redmine.rubyforge.org/svn/tags/0.8.2/ redmine-test-8.2
cp redmine/config/database.yml redmine-test-8.2/config/ #copy the database settings from our live redmine instance.
cd redmine-test-8.2/vendor/plugins
git clone git://github.com/dalyons/redmine-todos-scrum-plugin.git redmine_todos_plugin
cd ../../
ruby script/server

done!

Could you perhaps send me the contents of your log? (REDMINE_DIR/log/production.log) or (REDMINE_DIR/log/development.log).

RE: ToDo lists plugin - Added by david lyons almost 15 years ago

Please follow the instructions in the README.rdoc (its displayed at the bottom of the page at http://github.com/dalyons/redmine-todos-scrum-plugin/tree/master).
For reasons already mentioned in this thread, the plugin is sensitive to the name of the folder you install it to.

RE: ToDo lists plugin - Added by Axel F almost 15 years ago

First time I run rake db:migrate_plugins it failed, because we only had a production database. So I created a development database.

I installed as described, but when running rake db:migrate_plugins, it creates the tables only in the development database.
When I try to acceess mytodos, I get a Server Error, log says: "ActiveRecord::StatementInvalid (PGError: ERROR: Relation »todos« doesn't exists.".
But the plugin mytodos is visible in our production enviroment. So why does it only create the tables in development?

RE: ToDo lists plugin - Added by Chaoqun Zou almost 15 years ago

Axel F wrote:

First time I run rake db:migrate_plugins it failed, because we only had a production database. So I created a development database.

I installed as described, but when running rake db:migrate_plugins, it creates the tables only in the development database.
When I try to acceess mytodos, I get a Server Error, log says: "ActiveRecord::StatementInvalid (PGError: ERROR: Relation »todos« doesn't exists.".
But the plugin mytodos is visible in our production enviroment. So why does it only create the tables in development?

rake db:migrate_plugins rails_env=production

(1-25/146)