Files
redmine_overhead/lib/overhead_timesheet_hook.rb
Eric Davis 16d793bea6 [#2279] Hooked up the Billable filter to adjust the Timesheet's Activities.
* Hooked into the TimesheetController to modify the Timesheet activities
* Added TimeEntryActivity#find_with_billable_values to find all the TimeEntryActivities
  which have the value in the billable custom field.
2009-04-22 15:10:29 -07:00

52 lines
2.0 KiB
Ruby

class OverheadTimesheetHook < Redmine::Hook::ViewListener
include OverheadHelper
# Adds a table header "Billable" to the report results
def plugin_timesheet_views_timesheet_group_header(context={})
return content_tag(:th, l(:overhead_field_billable))
end
# Adds a blank table cell to the issue grouping option
def plugin_timesheet_views_timesheet_time_entry_sum(context={})
return content_tag(:td, '')
end
# Adds the gree checkbox image if the TimeEntry is billable
def plugin_timesheet_views_timesheet_time_entry(context={})
time_entry = context[:time_entry]
if time_entry && time_entry.billable?
content_tag(:td, image_tag('true.png'), :style => "text-align:center;")
else
content_tag(:td,'')
end
end
# Added a new field for filtering based on "billable?"
def plugin_timesheet_views_timesheet_form(context={})
billable_values = select_values_for_field(TimeEntryActivity.billable_custom_field)
if context[:params] &&
context[:params][:timesheet] &&
context[:params][:timesheet][:billable]
selected_values = context[:params][:timesheet][:billable]
else
selected_values = []
end
context[:controller].send(:render_to_string,
:partial => 'timesheet/overhead_form',
:layout => false,
:locals => {
:list_size => context[:list_size] || 5,
:billable_values => billable_values,
:selected_values => selected_values
})
end
def plugin_timesheet_controller_report_pre_fetch_time_entries(context = {})
if context[:params] && context[:params][:timesheet] && context[:params][:timesheet][:billable]
activities = TimeEntryActivity.find_with_billable_values(context[:params][:timesheet][:billable])
context[:timesheet].activities = activities.collect(&:id) unless activities.empty?
end
end
end