[#4327] Show the deliverable's title in the Journal notes.
This commit is contained in:
1 parent
848616853d
commit
84c679dc67
4 files changed
+92
-4
No files matched your search
@@ -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/controller_issues_edit_before_save_hook'
|
||||||
require 'redmine_contracts/hooks/view_issues_bulk_edit_details_bottom_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/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
|
module Hooks
|
||||||
class ControllerIssuesEditBeforeSaveHook < Redmine::Hook::ViewListener
|
class ControllerIssuesEditBeforeSaveHook < Redmine::Hook::ViewListener
|
||||||
def controller_issues_edit_before_save(context={})
|
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
|
if context[:params] && context[:params][:issue]
|
||||||
context[:issue].deliverable = deliverable
|
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
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return ''
|
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