Defect #15044 ยป git.patch
| app/controllers/issues_controller.rb | ||
|---|---|---|
| 176 | 176 |
@issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads])) |
| 177 | 177 |
saved = false |
| 178 | 178 |
begin |
| 179 |
saved = @issue.save_issue_with_child_records(params, @time_entry)
|
|
| 179 |
saved = save_issue_with_child_records
|
|
| 180 | 180 |
rescue ActiveRecord::StaleObjectError |
| 181 | 181 |
@conflict = true |
| 182 | 182 |
if params[:last_journal_id] |
| ... | ... | |
| 436 | 436 |
end |
| 437 | 437 |
attributes |
| 438 | 438 |
end |
| 439 | ||
| 440 |
# Saves @issue and a time_entry from the parameters |
|
| 441 |
def save_issue_with_child_records |
|
| 442 |
Issue.transaction do |
|
| 443 |
if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, project) |
|
| 444 |
time_entry = @time_entry || TimeEntry.new |
|
| 445 |
time_entry.project = project |
|
| 446 |
time_entry.issue = @issue |
|
| 447 |
time_entry.user = User.current |
|
| 448 |
time_entry.spent_on = User.current.today |
|
| 449 |
time_entry.attributes = params[:time_entry] |
|
| 450 |
@issue.time_entries << time_entry |
|
| 451 |
end |
|
| 452 | ||
| 453 |
# TODO: Rename hook |
|
| 454 |
call_hook(:controller_issues_edit_before_save, { :params => params, :issue => @issue, :time_entry => time_entry, :journal => @issue.current_journal})
|
|
| 455 |
if @issue.save |
|
| 456 |
# TODO: Rename hook |
|
| 457 |
call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => time_entry, :journal => @issue.current_journal})
|
|
| 458 |
else |
|
| 459 |
raise ActiveRecord::Rollback |
|
| 460 |
end |
|
| 461 |
end |
|
| 462 |
end |
|
| 439 | 463 |
end |
| app/models/issue.rb | ||
|---|---|---|
| 1057 | 1057 |
s |
| 1058 | 1058 |
end |
| 1059 | 1059 | |
| 1060 |
# Saves an issue and a time_entry from the parameters |
|
| 1061 |
def save_issue_with_child_records(params, existing_time_entry=nil) |
|
| 1062 |
Issue.transaction do |
|
| 1063 |
if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, project) |
|
| 1064 |
@time_entry = existing_time_entry || TimeEntry.new |
|
| 1065 |
@time_entry.project = project |
|
| 1066 |
@time_entry.issue = self |
|
| 1067 |
@time_entry.user = User.current |
|
| 1068 |
@time_entry.spent_on = User.current.today |
|
| 1069 |
@time_entry.attributes = params[:time_entry] |
|
| 1070 |
self.time_entries << @time_entry |
|
| 1071 |
end |
|
| 1072 | ||
| 1073 |
# TODO: Rename hook |
|
| 1074 |
Redmine::Hook.call_hook(:controller_issues_edit_before_save, { :params => params, :issue => self, :time_entry => @time_entry, :journal => @current_journal})
|
|
| 1075 |
if save |
|
| 1076 |
# TODO: Rename hook |
|
| 1077 |
Redmine::Hook.call_hook(:controller_issues_edit_after_save, { :params => params, :issue => self, :time_entry => @time_entry, :journal => @current_journal})
|
|
| 1078 |
else |
|
| 1079 |
raise ActiveRecord::Rollback |
|
| 1080 |
end |
|
| 1081 |
end |
|
| 1082 |
end |
|
| 1083 | ||
| 1084 | 1060 |
# Unassigns issues from +version+ if it's no longer shared with issue's project |
| 1085 | 1061 |
def self.update_versions_from_sharing_change(version) |
| 1086 | 1062 |
# Update issues assigned to the version |