[#4181] Added the New/Create actions for a Deliverable.
This commit is contained in:
@@ -2,4 +2,26 @@ class DeliverablesController < InheritedResources::Base
|
|||||||
unloadable
|
unloadable
|
||||||
|
|
||||||
respond_to :html
|
respond_to :html
|
||||||
|
|
||||||
|
before_filter :find_contract
|
||||||
|
before_filter :authorize
|
||||||
|
|
||||||
|
def create
|
||||||
|
@deliverable = FixedDeliverable.new(params[:deliverable])
|
||||||
|
create! { contract_url(@project, @contract) }
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def begin_of_association_chain
|
||||||
|
@contract
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def find_contract
|
||||||
|
@contract = Contract.find(params[:contract_id])
|
||||||
|
@project = @contract.project
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
class FixedDeliverable < Deliverable
|
||||||
|
unloadable
|
||||||
|
|
||||||
|
# Associations
|
||||||
|
|
||||||
|
# Validations
|
||||||
|
|
||||||
|
# Accessors
|
||||||
|
end
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<% form.inputs do %>
|
||||||
|
<%= form.input :title, :required => true %>
|
||||||
|
<%= form.input :type, :required => true, :as => :select, :collection => [["Fixed", "fixed"]] %>
|
||||||
|
<%= form.input :manager %>
|
||||||
|
<%= form.input :start_date, :as => :string, :input_html => {:size => 10}, :hint => calendar_for('deliverable_start_date') %>
|
||||||
|
<%= form.input :end_date, :as => :string, :input_html => {:size => 10}, :hint => calendar_for('deliverable_end_date') %>
|
||||||
|
<%= form.input :notes, :input_html => {:class => 'wiki-edit', :rows => '5'} %>
|
||||||
|
<% end %>
|
||||||
|
<% form.buttons do %>
|
||||||
|
<%= form.commit_button %>
|
||||||
|
<%= link_to(l(:button_cancel), cancel_path) %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%= wikitoolbar_for 'deliverable_notes' %>
|
||||||
@@ -1 +1,9 @@
|
|||||||
|
<%= content_tag(:h2, l(:text_new_deliverable)) %>
|
||||||
|
|
||||||
|
<% 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 %>
|
||||||
|
|||||||
@@ -21,4 +21,6 @@ en:
|
|||||||
text_payment_terms_net_30: "Net 30"
|
text_payment_terms_net_30: "Net 30"
|
||||||
text_payment_terms_net_45: "Net 45"
|
text_payment_terms_net_45: "Net 45"
|
||||||
button_add_new: Add New
|
button_add_new: Add New
|
||||||
|
text_new_deliverable: New Deliverable
|
||||||
|
field_manager: Manager
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,10 @@ Redmine::Plugin.register :redmine_contracts do
|
|||||||
requires_redmine_plugin :redmine_rate, :version_or_higher => '0.1.0'
|
requires_redmine_plugin :redmine_rate, :version_or_higher => '0.1.0'
|
||||||
|
|
||||||
project_module :contracts do
|
project_module :contracts do
|
||||||
permission :manage_budget, {:contracts => [:index, :new, :create, :show, :edit, :update, :destroy] }, :public => true
|
permission(:manage_budget, {
|
||||||
|
:contracts => [:index, :new, :create, :show, :edit, :update, :destroy],
|
||||||
|
:deliverables => [:new, :create]
|
||||||
|
}, :public => true)
|
||||||
end
|
end
|
||||||
|
|
||||||
menu(:project_menu,
|
menu(:project_menu,
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class DeliverablesNewTest < ActionController::IntegrationTest
|
||||||
|
include Redmine::I18n
|
||||||
|
|
||||||
|
def setup
|
||||||
|
@project = Project.generate!(:identifier => 'main')
|
||||||
|
@contract = Contract.generate!(:project => @project)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "allow any user to open the new deliverable form" do
|
||||||
|
visit_contract_page(@contract)
|
||||||
|
click_link 'Add New'
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'deliverables/new'
|
||||||
|
|
||||||
|
assert_select "form#new_deliverable"
|
||||||
|
end
|
||||||
|
|
||||||
|
should "create a new Fixed deliverable" do
|
||||||
|
@manager = User.generate!
|
||||||
|
|
||||||
|
visit_contract_page(@contract)
|
||||||
|
click_link 'Add New'
|
||||||
|
assert_response :success
|
||||||
|
|
||||||
|
fill_in "Title", :with => 'A New Deliverable'
|
||||||
|
select "Fixed", :from => "Type"
|
||||||
|
select @manager.name, :from => "Manager"
|
||||||
|
fill_in "Start", :with => '2010-01-01'
|
||||||
|
fill_in "End Date", :with => '2010-12-31'
|
||||||
|
fill_in "Notes", :with => 'Some notes on the deliverable'
|
||||||
|
|
||||||
|
click_button "Create Deliverable"
|
||||||
|
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'contracts/show'
|
||||||
|
|
||||||
|
@deliverable = Deliverable.last
|
||||||
|
assert_equal "A New Deliverable", @deliverable.title
|
||||||
|
assert_equal "FixedDeliverable", @deliverable.type
|
||||||
|
assert_equal '2010-01-01', @deliverable.start_date.to_s
|
||||||
|
assert_equal '2010-12-31', @deliverable.end_date.to_s
|
||||||
|
assert_equal @manager, @deliverable.manager
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -39,6 +39,14 @@ module IntegrationTestHelper
|
|||||||
assert_template 'contracts/index'
|
assert_template 'contracts/index'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def visit_contract_page(contract)
|
||||||
|
visit_contracts_for_project(contract.project)
|
||||||
|
click_link @contract.id
|
||||||
|
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'contracts/show'
|
||||||
|
end
|
||||||
|
|
||||||
def assert_forbidden
|
def assert_forbidden
|
||||||
assert_response :forbidden
|
assert_response :forbidden
|
||||||
assert_template 'common/403'
|
assert_template 'common/403'
|
||||||
|
|||||||
Reference in New Issue
Block a user