diff --git a/app/views/contracts/edit.html.erb b/app/views/contracts/edit.html.erb
index b4cec00..4e33087 100644
--- a/app/views/contracts/edit.html.erb
+++ b/app/views/contracts/edit.html.erb
@@ -9,7 +9,3 @@
<% semantic_form_for resource, :url => contract_path(@project, resource), :html => {:class => 'tabular'} do |form| %>
<%= render :partial => 'form', :object => form, :locals => {:cancel_path => contract_path(@project, resource)} %>
<% end %>
-
-<% content_for(:header_tags) do %>
- <%= stylesheet_link_tag "redmine_contracts", :plugin => "redmine_contracts", :media => "screen" %>
-<% end %>
diff --git a/app/views/contracts/new.html.erb b/app/views/contracts/new.html.erb
index 5ec1901..242fdd2 100644
--- a/app/views/contracts/new.html.erb
+++ b/app/views/contracts/new.html.erb
@@ -3,7 +3,3 @@
<% semantic_form_for resource, :html => {:class => 'tabular'} do |form| %>
<%= render :partial => 'form', :object => form, :locals => {:cancel_path => contracts_path} %>
<% end %>
-
-<% content_for(:header_tags) do %>
- <%= stylesheet_link_tag "redmine_contracts", :plugin => "redmine_contracts", :media => "screen" %>
-<% end %>
diff --git a/app/views/deliverables/edit.html.erb b/app/views/deliverables/edit.html.erb
index f67b976..c315d2a 100644
--- a/app/views/deliverables/edit.html.erb
+++ b/app/views/deliverables/edit.html.erb
@@ -3,7 +3,3 @@
<% semantic_form_for [@project, @contract, resource], :url => contract_deliverable_path(@project, @contract, resource), :html => {:class => 'tabular'} do |form| %>
<%= render :partial => 'form', :object => form, :locals => {:cancel_path => contract_path(@project, @contract)} %>
<% end %>
-
-<% content_for(:header_tags) do %>
- <%= stylesheet_link_tag "redmine_contracts", :plugin => "redmine_contracts", :media => "screen" %>
-<% end %>
diff --git a/app/views/deliverables/new.html.erb b/app/views/deliverables/new.html.erb
index a3438dd..5d5ec69 100644
--- a/app/views/deliverables/new.html.erb
+++ b/app/views/deliverables/new.html.erb
@@ -3,7 +3,3 @@
<% semantic_form_for [@project, @contract, resource], :url => contract_deliverables_path(@project, @contract), :html => {:class => 'tabular'} do |form| %>
<%= render :partial => 'form', :object => form, :locals => {:cancel_path => contract_path(@project, @contract)} %>
<% end %>
-
-<% content_for(:header_tags) do %>
- <%= stylesheet_link_tag "redmine_contracts", :plugin => "redmine_contracts", :media => "screen" %>
-<% end %>
diff --git a/assets/javascripts/contracts.js b/assets/javascripts/contracts.js
new file mode 100644
index 0000000..82e0791
--- /dev/null
+++ b/assets/javascripts/contracts.js
@@ -0,0 +1,2 @@
+jQuery.noConflict();
+
diff --git a/init.rb b/init.rb
index bb68aa5..375aad6 100644
--- a/init.rb
+++ b/init.rb
@@ -55,3 +55,5 @@ Dispatcher.to_prepare :redmine_contracts do
require_dependency 'project'
Project.send(:include, RedmineContracts::Patches::ProjectPatch)
end
+
+require 'redmine_contracts/hooks/view_layouts_base_html_head_hook'
diff --git a/lib/redmine_contracts/hooks/view_layouts_base_html_head_hook.rb b/lib/redmine_contracts/hooks/view_layouts_base_html_head_hook.rb
new file mode 100644
index 0000000..e315477
--- /dev/null
+++ b/lib/redmine_contracts/hooks/view_layouts_base_html_head_hook.rb
@@ -0,0 +1,20 @@
+module RedmineContracts
+ module Hooks
+ class ViewLayoutsBaseHtmlHeadHook < Redmine::Hook::ViewListener
+ def view_layouts_base_html_head(context={})
+ if context[:controller] && (
+ context[:controller].is_a?(ContractsController) ||
+ context[:controller].is_a?(DeliverablesController)
+ )
+ return stylesheet_link_tag("redmine_contracts", :plugin => "redmine_contracts", :media => "screen") +
+
+ javascript_include_tag('jquery-1.4.2.min.js', :plugin => 'redmine_contracts') +
+ javascript_include_tag('contracts.js', :plugin => 'redmine_contracts')
+
+ else
+ return ''
+ end
+ end
+ end
+ end
+end
diff --git a/test/unit/lib/redmine_contracts/hooks/view_layouts_base_html_head_hook_test.rb b/test/unit/lib/redmine_contracts/hooks/view_layouts_base_html_head_hook_test.rb
new file mode 100644
index 0000000..e4b11c4
--- /dev/null
+++ b/test/unit/lib/redmine_contracts/hooks/view_layouts_base_html_head_hook_test.rb
@@ -0,0 +1,72 @@
+require File.dirname(__FILE__) + '/../../../../test_helper'
+
+class RedmineContracts::Hooks::ViewLayoutsBaseHtmlHeadTest < ActionController::TestCase
+ include Redmine::Hook::Helper
+
+ def controller
+ @controller ||= ApplicationController.new
+ @controller.response ||= ActionController::TestResponse.new
+ @controller
+ end
+
+ def request
+ @request ||= ActionController::TestRequest.new
+ end
+
+ def hook(args={})
+ call_hook :view_layouts_base_html_head, args
+ end
+
+ context "#view_layouts_base_html_head" do
+ context "for any non-contracts plugin controller" do
+ should "return an empty string" do
+ @response.body = hook
+ assert @response.body.blank?
+ end
+ end
+
+ context "for Contracts Controller" do
+ setup do
+ @controller = ContractsController.new
+ @controller.response = ActionController::TestResponse.new
+ end
+
+ should "load the redmine_contracts.css stylesheet" do
+ @response.body = hook
+ assert_select "link[href*=?]", "redmine_contracts.css"
+ end
+
+ should "load jquery" do
+ @response.body = hook
+ assert_select "script[src*=?]", "jquery-1.4.2.min.js"
+ end
+
+ should "load the contracts.js JavaScript" do
+ @response.body = hook
+ assert_select "script[src*=?]", "contracts.js"
+ end
+ end
+
+ context "for Deliverables Controller" do
+ setup do
+ @controller = DeliverablesController.new
+ @controller.response = ActionController::TestResponse.new
+ end
+
+ should "load the redmine_contracts.css stylesheet" do
+ @response.body = hook
+ assert_select "link[href*=?]", "redmine_contracts.css"
+ end
+
+ should "load jquery" do
+ @response.body = hook
+ assert_select "script[src*=?]", "jquery-1.4.2.min.js"
+ end
+
+ should "load the contracts.js JavaScript" do
+ @response.body = hook
+ assert_select "script[src*=?]", "contracts.js"
+ end
+ end
+ end
+end