[#4181] Added the New/Create actions for a Deliverable.
This commit is contained in:
@@ -2,4 +2,26 @@ class DeliverablesController < InheritedResources::Base
|
||||
unloadable
|
||||
|
||||
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
|
||||
|
||||
9
app/models/fixed_deliverable.rb
Normal file
9
app/models/fixed_deliverable.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
class FixedDeliverable < Deliverable
|
||||
unloadable
|
||||
|
||||
# Associations
|
||||
|
||||
# Validations
|
||||
|
||||
# Accessors
|
||||
end
|
||||
14
app/views/deliverables/_form.html.erb
Normal file
14
app/views/deliverables/_form.html.erb
Normal file
@@ -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_45: "Net 45"
|
||||
button_add_new: Add New
|
||||
text_new_deliverable: New Deliverable
|
||||
field_manager: Manager
|
||||
|
||||
|
||||
5
init.rb
5
init.rb
@@ -14,7 +14,10 @@ Redmine::Plugin.register :redmine_contracts do
|
||||
requires_redmine_plugin :redmine_rate, :version_or_higher => '0.1.0'
|
||||
|
||||
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
|
||||
|
||||
menu(:project_menu,
|
||||
|
||||
46
test/integration/deliverables_new_test.rb
Normal file
46
test/integration/deliverables_new_test.rb
Normal file
@@ -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'
|
||||
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
|
||||
assert_response :forbidden
|
||||
assert_template 'common/403'
|
||||
|
||||
Reference in New Issue
Block a user