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