From fc1cffcacfa0e885c481e9d993f7c541673912c8 Mon Sep 17 00:00:00 2001 From: elijah Date: Thu, 28 May 2015 01:44:24 -0700 Subject: initial commit. --- README.md | 27 +++++++++++++++++++++ app/controllers/version_reports_controller.rb | 21 ++++++++++++++++ app/helpers/version_reports_helper.rb | 12 ++++++++++ app/views/hooks/_view_report_link.html.erb | 1 + app/views/version_reports/_issue_row.html.erb | 14 +++++++++++ app/views/version_reports/_main_issue_row.html.erb | 28 ++++++++++++++++++++++ app/views/version_reports/_project_row.html.erb | 5 ++++ app/views/version_reports/show.html.erb | 9 +++++++ config/routes.rb | 4 ++++ init.rb | 11 +++++++++ lib/version_report/hooks.rb | 5 ++++ 11 files changed, 137 insertions(+) create mode 100644 README.md create mode 100644 app/controllers/version_reports_controller.rb create mode 100644 app/helpers/version_reports_helper.rb create mode 100644 app/views/hooks/_view_report_link.html.erb create mode 100644 app/views/version_reports/_issue_row.html.erb create mode 100644 app/views/version_reports/_main_issue_row.html.erb create mode 100644 app/views/version_reports/_project_row.html.erb create mode 100644 app/views/version_reports/show.html.erb create mode 100644 config/routes.rb create mode 100644 init.rb create mode 100644 lib/version_report/hooks.rb diff --git a/README.md b/README.md new file mode 100644 index 0000000..18b4509 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +This is a Redmine plugin that adds a link "Time Tracking Report" to target +version page. This link will bring up a detailed report of how time was spent +for this target version. + +The assumption is that the issues which are directly associated with the +target version represent general categories of work activities that need to be +reported on. + +Unlike the normal list of issues for a target version, time spent from other +projects in included, as well as all sub-tasks. + +Installation: + + cd redmin/plugins + git clone https://leap.se/git/version_report + +Configuration: + +You grant the permission 'view reports' to a user in order to be able to view the report. + +License: + +The same as Redmine (GNU GENERAL PUBLIC LICENSE Version 2) + +Copyright: + +2015 (c) LEAP Encryption Access Project \ No newline at end of file diff --git a/app/controllers/version_reports_controller.rb b/app/controllers/version_reports_controller.rb new file mode 100644 index 0000000..fb7ac6c --- /dev/null +++ b/app/controllers/version_reports_controller.rb @@ -0,0 +1,21 @@ +class VersionReportsController < ApplicationController + unloadable + + menu_item :roadmap + model_object Version + before_filter :find_model_object, :only => [:show] + before_filter :alias_model_object + before_filter :find_project_from_association, :only => [:show] + before_filter :authorize + + def show + @issues = @version.fixed_issues + end + + private + + def alias_model_object + @version = @version_report + end + +end diff --git a/app/helpers/version_reports_helper.rb b/app/helpers/version_reports_helper.rb new file mode 100644 index 0000000..2e0ee8d --- /dev/null +++ b/app/helpers/version_reports_helper.rb @@ -0,0 +1,12 @@ +module VersionReportsHelper + + def display_issue(issue, *options) + text = issue.subject + text = text.sub(/\!\!\w*/,'') + if options.include? :tracker + text = "#{issue.tracker} ##{issue.id} " + text + end + link_to text, issue_path(issue) + end + +end diff --git a/app/views/hooks/_view_report_link.html.erb b/app/views/hooks/_view_report_link.html.erb new file mode 100644 index 0000000..fdd59c9 --- /dev/null +++ b/app/views/hooks/_view_report_link.html.erb @@ -0,0 +1 @@ +

<%= link_to 'Time Tracking Report', version_report_path %> \ No newline at end of file diff --git a/app/views/version_reports/_issue_row.html.erb b/app/views/version_reports/_issue_row.html.erb new file mode 100644 index 0000000..3ff7020 --- /dev/null +++ b/app/views/version_reports/_issue_row.html.erb @@ -0,0 +1,14 @@ + + + <%= (" " * 4 * indent).html_safe %> + <%= display_issue(issue, :tracker) %> + + + <%= l_hours(issue.total_spent_hours) %> + + +<%- if issue.children.any? -%> +<%- issue.children.each do |child| -%> +<%= render :partial => 'issue_row', :locals => {:issue => child, :indent => indent+1} %> +<%- end -%> +<%- end -%> diff --git a/app/views/version_reports/_main_issue_row.html.erb b/app/views/version_reports/_main_issue_row.html.erb new file mode 100644 index 0000000..32518e9 --- /dev/null +++ b/app/views/version_reports/_main_issue_row.html.erb @@ -0,0 +1,28 @@ +  + + +

<%= display_issue(issue) %>

+ + + <%= l_hours(issue.total_spent_hours) %> + + + + + From <%= issue.start_date %> to <%= issue.due_date %>. +
+ <%= textilizable issue, :description %> +
+ + + +<%- project = nil -%> +<%- if issue.children.any? -%> +<%- issue.children.sort{|a,b| a.project.name <=> b.project.name}.each do |child| -%> +<%- if child.project.name != project -%> +<%- project = child.project.name -%> +<%= render :partial => 'project_row', :locals => {:project => child.project} %> +<%- end -%> +<%= render :partial => 'issue_row', :locals => {:issue => child, :indent => 1} %> +<%- end -%> +<%- end -%> diff --git a/app/views/version_reports/_project_row.html.erb b/app/views/version_reports/_project_row.html.erb new file mode 100644 index 0000000..ac0acd2 --- /dev/null +++ b/app/views/version_reports/_project_row.html.erb @@ -0,0 +1,5 @@ + + + <%= project.name %> + + diff --git a/app/views/version_reports/show.html.erb b/app/views/version_reports/show.html.erb new file mode 100644 index 0000000..09c2b20 --- /dev/null +++ b/app/views/version_reports/show.html.erb @@ -0,0 +1,9 @@ +<% html_title @version.name %> + + +<% if @issues.present? %> + <%- @issues.each do |issue| -%> + <%= render :partial => 'main_issue_row', :locals => {:issue => issue} %> + <% end %> +<% end %> +
\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..213e700 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,4 @@ +# Plugin's routes +# See: http://guides.rubyonrails.org/routing.html + +resources :version_reports \ No newline at end of file diff --git a/init.rb b/init.rb new file mode 100644 index 0000000..fe8e8a3 --- /dev/null +++ b/init.rb @@ -0,0 +1,11 @@ +require_dependency 'version_report/hooks' + +Redmine::Plugin.register :version_report do + name 'Version Report plugin' + author 'LEAP' + description 'Show detailed reports for target versions' + version '0.0.1' + url 'https://leap.se/git/version_report' + + permission :view_reports, :version_reports => :show +end diff --git a/lib/version_report/hooks.rb b/lib/version_report/hooks.rb new file mode 100644 index 0000000..d0d2776 --- /dev/null +++ b/lib/version_report/hooks.rb @@ -0,0 +1,5 @@ +module VersionReport + class Hooks < Redmine::Hook::ViewListener + render_on :view_versions_show_contextual, :partial => 'hooks/view_report_link' + end +end \ No newline at end of file -- cgit v1.2.3