[#4327] Show the deliverable's title in the Journal notes.
This commit is contained in:
@@ -71,3 +71,4 @@ require 'redmine_contracts/hooks/view_issues_form_details_bottom_hook'
|
||||
require 'redmine_contracts/hooks/controller_issues_edit_before_save_hook'
|
||||
require 'redmine_contracts/hooks/view_issues_bulk_edit_details_bottom_hook'
|
||||
require 'redmine_contracts/hooks/controller_issues_bulk_edit_before_save_hook'
|
||||
require 'redmine_contracts/hooks/helper_issues_show_detail_after_setting_hook'
|
||||
|
||||
@@ -2,12 +2,18 @@ module RedmineContracts
|
||||
module Hooks
|
||||
class ControllerIssuesEditBeforeSaveHook < Redmine::Hook::ViewListener
|
||||
def controller_issues_edit_before_save(context={})
|
||||
if context[:params] && context[:params][:issue] && context[:params][:issue][:deliverable_id].present?
|
||||
deliverable = Deliverable.find_by_id(context[:params][:issue][:deliverable_id])
|
||||
|
||||
if deliverable.contract.project == context[:issue].project
|
||||
context[:issue].deliverable = deliverable
|
||||
if context[:params] && context[:params][:issue]
|
||||
if context[:params][:issue][:deliverable_id].present?
|
||||
deliverable = Deliverable.find_by_id(context[:params][:issue][:deliverable_id])
|
||||
if deliverable.contract.project == context[:issue].project
|
||||
context[:issue].deliverable = deliverable
|
||||
end
|
||||
|
||||
else
|
||||
context[:issue].deliverable = nil
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
return ''
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
module RedmineContracts
|
||||
module Hooks
|
||||
class HelperIssuesShowDetailAfterSettingHook < Redmine::Hook::ViewListener
|
||||
# Deliverable changes for the journal use the Deliverable subject
|
||||
# instead of the id
|
||||
#
|
||||
# Context:
|
||||
# * :detail => Detail about the journal change
|
||||
#
|
||||
def helper_issues_show_detail_after_setting(context = { })
|
||||
# TODO Later: Overwritting the caller is bad juju
|
||||
if context[:detail].prop_key == 'deliverable_id'
|
||||
d = Deliverable.find_by_id(context[:detail].value)
|
||||
context[:detail].value = d.title if d.present? && d.title.present?
|
||||
|
||||
d = Deliverable.find_by_id(context[:detail].old_value)
|
||||
context[:detail].old_value = d.title if d.present? && d.title.present?
|
||||
end
|
||||
''
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
require File.dirname(__FILE__) + '/../../../test_helper'
|
||||
|
||||
class RedmineContracts::Hooks::HelperIssuesShowDetailAfterSettingHookTest < ActionController::IntegrationTest
|
||||
include Redmine::Hook::Helper
|
||||
|
||||
context "#helper_issues_show_detail_after_setting" do
|
||||
setup do
|
||||
@project = Project.generate!
|
||||
@issue = Issue.generate_for_project!(@project)
|
||||
|
||||
@contract1 = Contract.generate!(:project => @project)
|
||||
@contract2 = Contract.generate!(:project => @project)
|
||||
|
||||
@manager = User.generate!(:login => 'manager', :password => 'existing', :password_confirmation => 'existing')
|
||||
@role = Role.generate!(:permissions => [:view_issues, :edit_issues])
|
||||
User.add_to_project(@manager, @project, @role)
|
||||
@deliverable1 = FixedDeliverable.generate!(:contract => @contract1, :manager => @manager, :title => 'The Title 1')
|
||||
@deliverable2 = FixedDeliverable.generate!(:contract => @contract2, :manager => @manager, :title => 'The Title 2')
|
||||
# Set first
|
||||
@issue.init_journal(@manager)
|
||||
@issue.deliverable = @deliverable1
|
||||
@issue.save!
|
||||
# Change
|
||||
@issue.init_journal(@manager)
|
||||
@issue.deliverable = @deliverable2
|
||||
@issue.save!
|
||||
# Unset
|
||||
@issue.init_journal(@manager)
|
||||
@issue.deliverable = nil
|
||||
@issue.save!
|
||||
|
||||
login_as('manager', 'existing')
|
||||
|
||||
visit_issue_page(@issue)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
should "show when a deliverable is set" do
|
||||
assert_select ".details" do
|
||||
assert_select "li", :text => /Deliverable set to #{@deliverable1.title}/
|
||||
end
|
||||
end
|
||||
|
||||
should "show when a deliverable is changed" do
|
||||
assert_select ".details" do
|
||||
assert_select "li", :text => /Deliverable changed from #{@deliverable1.title} to #{@deliverable2.title}/
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
should "show when a deliverable is removed" do
|
||||
assert_select ".details" do
|
||||
assert_select "li", :text => /Deliverable deleted .*#{@deliverable2.title}/
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user