mirror of
https://github.com/meineerde/redmine.git
synced 2026-01-03 06:09:41 +00:00
Timelog move between projects (#588).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@16450 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
1ab58b6aa5
commit
2879071f3b
@ -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 +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?) %>');
|
||||
|
||||
@ -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…
x
Reference in New Issue
Block a user