[#2279] Select the Billable values based on the submitted form.

This commit is contained in:
Eric Davis
2009-04-22 14:00:15 -07:00
parent 9ee8c41d7b
commit f15dafc4fe
3 changed files with 29 additions and 3 deletions

View File

@@ -4,7 +4,7 @@
</label> </label>
<br /> <br />
<%= select_tag('timesheet[billable][]', <%= select_tag('timesheet[billable][]',
options_for_select(billable_values), options_for_select(billable_values, selected_values),
{:multiple => true, :size => list_size}) %> {:multiple => true, :size => list_size}) %>
</p> </p>

View File

@@ -24,12 +24,21 @@ class OverheadTimesheetHook < Redmine::Hook::ViewListener
# Added a new field for filtering based on "billable?" # Added a new field for filtering based on "billable?"
def plugin_timesheet_views_timesheet_form(context={}) def plugin_timesheet_views_timesheet_form(context={})
billable_values = select_values_for_field(TimeEntryActivity.billable_custom_field) 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, context[:controller].send(:render_to_string,
:partial => 'timesheet/overhead_form', :partial => 'timesheet/overhead_form',
:layout => false, :layout => false,
:locals => { :locals => {
:list_size => context[:list_size] || 5, :list_size => context[:list_size] || 5,
:billable_values => billable_values :billable_values => billable_values,
:selected_values => selected_values
}) })
end end
end end

View File

@@ -77,5 +77,22 @@ describe OverheadTimesheetHook, "#plugin_timesheet_views_timesheet_form", :type
end end
end end
it 'should pre-select the values from the submission' it 'should pre-select the values from the submission' do
@custom_field = mock_model(TimeEntryActivityCustomField,
:possible_values => ['A','B','Nil'],
:field_format => 'list')
TimeEntryActivity.stub!(:billable_custom_field).and_return(@custom_field)
context = {
:params => {:timesheet => {:billable => ['A','Nil']}}
}
response = call_hook(:plugin_timesheet_views_timesheet_form, context)
response.should have_tag('select') do
with_tag('option[value=?][selected=selected]','A','A')
with_tag('option[value=?]','B','B')
with_tag('option[value=?][selected=selected]','Nil','none')
end
end
end end