Commit b363b94e authored by jplang's avatar jplang

Timelog move between projects (#588).

Patch by Marius BALTEANU.

git-svn-id: https://svn.redmine.org/redmine/trunk@16450 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent dc9f65cf
......@@ -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;
......
$('#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?) %>');
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment