No description or website provided.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app/models/project_burndown/api/v1
config
db/migrate
lang
lib
test
.gitignore
README.rdoc
init.rb

README.rdoc

Project Burndown Callbacks for Redmine

Installation

From the rails root of your redmine app installation

script/plugin install git@github.com:expectedbehavior/redmine_project_burndown_callbacks.git
rake db:migrate_plugins

Configuration and Usage

Save a copy of RAILS_ROOT/vendor/plugins/redmine_project_burndown_callbacks/config/initializers/project_burndown.rb.example to RAILS_ROOT/config/initializers directory and name it projectburndown.rb. Edit the copied file to have the correct API_TOKEN string. That information can be found on your profile page in PB. Also edit it to have the correct SUBDOMAIN string.

Restart your Redmine app server.

There should now be a “Project Burndown Project” custom field in the settings for your projects. Into this you should enter the project id of the PB Project you want to push information to from this Redmine Project. The project id should be visible in the url for the project page on project burndown. It will look something like yoursubdomain.projectburndown.com/projects/20043. The 20043 part is the number we're after. Leave it blank if you don't want to push time entries and issues to PB for this Redmine project.

There should also be a “Project Burndown User” custom field in the settings for your users. Into this you should enter the user id of users whose time entries you want to push to PB. This information can also be gathered from the profile pages by looking at the urls of the users for your account.

After entering the project id and saving your settings, you're good to go.

Any new issues or time entries you create or update will get pushed to PB.

Synching existing information

Synching will not work if you haven't gone through the configuration steps.

If you want to control which projects are pushed:

script/console production
p = Project.find_by_name("foo")
p.issues.each{|i| i.push_to_project_burndown}
p.time_entries.each{|t| t.push_to_project_burndown}

If you want to push everything:

script/console production
Issue.sync_with_project_burndown
TimeEntry.sync_with_project_burndown

Caveats

If you use custom issue statuses, poke around for these lines. You will have to change them to use the statuses you utilize. It will be in RAILS_ROOT/vendor/plugins/redmine_project_burndown_callbacks/lib/redmine_project_burndown_callbacks/issue_patch.rb

return self.class::PB_FINISHED if ["Closed"].include?(status)
return self.class::PB_STARTED if ["In Progress", "Resolved", "Feedback", "Rejected"].include?(status)

TODO

There are only gonna happen if we get lots of requests, because it's kind of time-consuming:

  • Make configuration more dynamic and web-enabled

  • Make synching a button on projects

  • Better handling of trying to destroy things that don't exist at PB - currently I just rescue nil, which is pretty bad.

  • Better handling of general errors in syncing with PB. Right now if something goes wrong, you'll get 500s in redmine.