Feature #588 » change_timelog_project.patch
app/views/timelog/_form.html.erb | ||
---|---|---|
2 | 2 |
<%= back_url_hidden_field_tag %> |
3 | 3 | |
4 | 4 |
<div class="box tabular"> |
5 |
<% if @time_entry.new_record? %> |
|
6 |
<% if params[:project_id] %> |
|
7 |
<%= hidden_field_tag 'project_id', params[:project_id] %> |
|
8 |
<% elsif params[:issue_id] %> |
|
9 |
<%= hidden_field_tag 'issue_id', params[:issue_id] %> |
|
10 |
<% else %> |
|
11 |
<p><%= f.select :project_id, project_tree_options_for_select(Project.allowed_to(:log_time).to_a, :selected => @time_entry.project, :include_blank => true), :required => true %></p> |
|
12 |
<% end %> |
|
5 |
<% if @time_entry.new_record? && params[:project_id] %> |
|
6 |
<%= hidden_field_tag 'project_id', params[:project_id] %> |
|
7 |
<% elsif @time_entry.new_record? && params[:issue_id] %> |
|
8 |
<%= hidden_field_tag 'issue_id', params[:issue_id] %> |
|
9 |
<% else %> |
|
10 |
<p><%= f.select :project_id, project_tree_options_for_select(Project.allowed_to(:log_time).to_a, :selected => @time_entry.project, :include_blank => true), :required => true %></p> |
|
13 | 11 |
<% end %> |
12 | ||
14 | 13 |
<p> |
15 | 14 |
<%= f.text_field :issue_id, :size => 6, :required => Setting.timelog_required_fields.include?('issue_id') %> |
16 | 15 |
<span id="time_entry_issue"> |
... | ... | |
29 | 28 | |
30 | 29 |
<%= javascript_tag do %> |
31 | 30 |
$(document).ready(function(){ |
31 |
$('#time_entry_project_id').change(function(){ |
|
32 |
$('#time_entry_issue_id').val(''); |
|
33 |
}); |
|
32 | 34 |
$('#time_entry_project_id, #time_entry_issue_id').change(function(){ |
33 | 35 |
$.ajax({ |
34 | 36 |
url: '<%= escape_javascript(@time_entry.new_record? ? new_time_entry_path(:format => 'js') : edit_time_entry_path(:format => 'js')) %>', |
... | ... | |
45 | 47 |
term: request.term |
46 | 48 |
}; |
47 | 49 |
var project_id; |
48 |
<% if @project %> |
|
49 |
project_id = '<%= @project.id %>';
|
|
50 |
<% if @time_entry.new_record? && @project %>
|
|
51 |
project_id = '<%= @project.id %>'; |
|
50 | 52 |
<% else %> |
51 |
project_id = $('#time_entry_project_id').val();
|
|
53 |
project_id = $('#time_entry_project_id').val(); |
|
52 | 54 |
<% end %> |
53 | 55 |
if(project_id){ |
54 | 56 |
data['project_id'] = project_id; |
app/views/timelog/bulk_edit.html.erb | ||
---|---|---|
12 | 12 |
<div class="box tabular"> |
13 | 13 |
<div> |
14 | 14 |
<p> |
15 |
<label><%= l(:field_project) %></label> |
|
16 |
<%= select_tag('time_entry[project_id]', |
|
17 |
project_tree_options_for_select(Project.allowed_to(:log_time).to_a, |
|
18 |
:include_blank => l(:label_no_change_option), |
|
19 |
:selected => @target_project)) %> |
|
20 |
</p> |
|
21 | ||
22 |
<p> |
|
15 | 23 |
<label><%= l(:field_issue) %></label> |
16 | 24 |
<%= text_field :time_entry, :issue_id, :size => 6 %> |
17 | 25 |
</p> |
app/views/timelog/edit.js.erb | ||
---|---|---|
1 |
$('#time_entry_activity_id').html('<%= escape_javascript options_for_select(activity_collection_for_select_options(@time_entry), @time_entry.activity_id) %>'); |
|
1 | 2 |
$('#time_entry_issue').html('<%= escape_javascript link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>'); |
test/functional/timelog_controller_test.rb | ||
---|---|---|
125 | 125 |
assert_select 'option', :text => '--- Please select ---' |
126 | 126 |
end |
127 | 127 | |
128 |
def test_get_edit_should_show_projects_select |
|
129 |
@request.session[:user_id] = 2 |
|
130 |
get :edit, :params => {:id => 2, :project_id => nil} |
|
131 |
assert_response :success |
|
132 | ||
133 |
assert_select 'select[name=?]', 'time_entry[project_id]' |
|
134 |
end |
|
135 | ||
128 | 136 |
def test_post_create |
129 | 137 |
@request.session[:user_id] = 3 |
130 | 138 |
assert_difference 'TimeEntry.count' do |
... | ... | |
489 | 497 |
assert_select_error /Issue is invalid/ |
490 | 498 |
end |
491 | 499 | |
500 |
def test_update_should_allow_to_change_project |
|
501 |
entry = TimeEntry.generate!(:project_id => 1) |
|
502 | ||
503 |
@request.session[:user_id] = 1 |
|
504 |
put :update, :params => { |
|
505 |
:id => entry.id, |
|
506 |
:time_entry => { |
|
507 |
:project_id => '2' |
|
508 |
} |
|
509 |
} |
|
510 |
assert_response 302 |
|
511 |
entry.reload |
|
512 | ||
513 |
assert_equal 2, entry.project_id |
|
514 |
end |
|
515 | ||
516 |
def test_update_should_fail_with_issue_from_another_project |
|
517 |
entry = TimeEntry.generate!(:project_id => 1, :issue_id => 1) |
|
518 | ||
519 |
@request.session[:user_id] = 1 |
|
520 |
put :update, :params => { |
|
521 |
:id => entry.id, |
|
522 |
:time_entry => { |
|
523 |
:project_id => '2' |
|
524 |
} |
|
525 |
} |
|
526 | ||
527 |
assert_response :success |
|
528 |
assert_select_error /Issue is invalid/ |
|
529 |
end |
|
530 | ||
492 | 531 |
def test_get_bulk_edit |
493 | 532 |
@request.session[:user_id] = 2 |
494 | 533 |
- « Previous
- 1
- …
- 6
- 7
- 8
- Next »