Browse Source

Timelog move between projects (#588).

Patch by Marius BALTEANU.

git-svn-id: http://svn.redmine.org/redmine/trunk@16450 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/3.4.0
Jean-Philippe Lang 7 years ago
parent
commit
2879071f3b

+ 13
- 11
app/views/timelog/_form.html.erb View File

@@ -2,15 +2,14 @@
<%= back_url_hidden_field_tag %>

<div class="box tabular">
<% if @time_entry.new_record? %>
<% if params[:project_id] %>
<%= hidden_field_tag 'project_id', params[:project_id] %>
<% elsif params[:issue_id] %>
<%= hidden_field_tag 'issue_id', params[:issue_id] %>
<% else %>
<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>
<% end %>
<% if @time_entry.new_record? && params[:project_id] %>
<%= hidden_field_tag 'project_id', params[:project_id] %>
<% elsif @time_entry.new_record? && params[:issue_id] %>
<%= hidden_field_tag 'issue_id', params[:issue_id] %>
<% else %>
<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>
<% end %>

<p>
<%= f.text_field :issue_id, :size => 6, :required => Setting.timelog_required_fields.include?('issue_id') %>
<span id="time_entry_issue">
@@ -29,6 +28,9 @@

<%= javascript_tag do %>
$(document).ready(function(){
$('#time_entry_project_id').change(function(){
$('#time_entry_issue_id').val('');
});
$('#time_entry_project_id, #time_entry_issue_id').change(function(){
$.ajax({
url: '<%= escape_javascript(@time_entry.new_record? ? new_time_entry_path(:format => 'js') : edit_time_entry_path(:format => 'js')) %>',
@@ -45,10 +47,10 @@
term: request.term
};
var project_id;
<% if @project %>
project_id = '<%= @project.id %>';
<% if @time_entry.new_record? && @project %>
project_id = '<%= @project.id %>';
<% else %>
project_id = $('#time_entry_project_id').val();
project_id = $('#time_entry_project_id').val();
<% end %>
if(project_id){
data['project_id'] = project_id;

+ 1
- 0
app/views/timelog/edit.js.erb View File

@@ -1 +1,2 @@
$('#time_entry_activity_id').html('<%= escape_javascript options_for_select(activity_collection_for_select_options(@time_entry), @time_entry.activity_id) %>');
$('#time_entry_issue').html('<%= escape_javascript link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>');

+ 39
- 0
test/functional/timelog_controller_test.rb View File

@@ -125,6 +125,14 @@ class TimelogControllerTest < Redmine::ControllerTest
assert_select 'option', :text => '--- Please select ---'
end

def test_get_edit_should_show_projects_select
@request.session[:user_id] = 2
get :edit, :params => {:id => 2, :project_id => nil}
assert_response :success

assert_select 'select[name=?]', 'time_entry[project_id]'
end

def test_post_create
@request.session[:user_id] = 3
assert_difference 'TimeEntry.count' do
@@ -489,6 +497,37 @@ class TimelogControllerTest < Redmine::ControllerTest
assert_select_error /Issue is invalid/
end

def test_update_should_allow_to_change_project
entry = TimeEntry.generate!(:project_id => 1)

@request.session[:user_id] = 1
put :update, :params => {
:id => entry.id,
:time_entry => {
:project_id => '2'
}
}
assert_response 302
entry.reload

assert_equal 2, entry.project_id
end

def test_update_should_fail_with_issue_from_another_project
entry = TimeEntry.generate!(:project_id => 1, :issue_id => 1)

@request.session[:user_id] = 1
put :update, :params => {
:id => entry.id,
:time_entry => {
:project_id => '2'
}
}

assert_response :success
assert_select_error /Issue is invalid/
end

def test_get_bulk_edit
@request.session[:user_id] = 2


Loading…
Cancel
Save