diff --git a/app/views/deliverables/_form.html.erb b/app/views/deliverables/_form.html.erb
index 32c3bc7..5d1cccc 100644
--- a/app/views/deliverables/_form.html.erb
+++ b/app/views/deliverables/_form.html.erb
@@ -1,3 +1,6 @@
+<%= javascript_tag("var i18nStartDateEmpty = '#{l(:text_start_date_empty)}'") %>
+<%= javascript_tag("var i18nEndDateEmpty = '#{l(:text_end_date_empty)}'") %>
+
<% form.inputs :name => l(:text_deliverable_details_legend) do %>
<%= form.input :title, :required => true %>
@@ -12,8 +15,8 @@
<%= form.input :type, :as => :hidden, :class => 'type' %>
<% end %>
<%= form.input :manager, :required => true, :collection => @project.users.sort %>
- <%= 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 :start_date, :as => :string, :input_html => {:size => 10, :class => 'start-date'}, :hint => calendar_for('deliverable_start_date') %>
+ <%= form.input :end_date, :as => :string, :input_html => {:size => 10, :class => 'end-date'}, :hint => calendar_for('deliverable_end_date') %>
<%= form.input :notes, :input_html => {:class => 'wiki-edit', :rows => '5'} %>
<% unless resource.new_record? %>
@@ -28,7 +31,7 @@
<% end %>
<% end %>
-<% if resource.retainer? %>
+<% if resource.retainer? && resource.respond_to?(:months) %>
<% resource.months.each do |month| %>
<%= render :partial => 'finance_form', :locals => {:form => form, :labor_budgets => resource.labor_budgets_for_date(month), :overhead_budgets => resource.overhead_budgets_for_date(month), :label => l(:text_deliverable_finances_date, :date => month.strftime("%B, %Y")), :fieldset_class => 'date-' + month.strftime('%Y-%m') } %>
<% end %>
diff --git a/assets/javascripts/contracts.js b/assets/javascripts/contracts.js
index 8c2680c..4edfd38 100644
--- a/assets/javascripts/contracts.js
+++ b/assets/javascripts/contracts.js
@@ -60,6 +60,19 @@ jQuery(function($) {
$('select#deliverable_type').change(function() {
toggleSpecificDeliverableFields($('form.deliverable'));
});
+
+ $('form.deliverable').submit(function() {
+ var deliverableType = $('form.deliverable').find('.type').val();
+
+ if (deliverableType == 'RetainerDeliverable') {
+ if ($('form.deliverable .start-date[value!=""]').length == 0) {
+ return confirm(i18nStartDateEmpty);
+ }
+ if ($('form.deliverable .end-date[value!=""]').length == 0) {
+ return confirm(i18nEndDateEmpty);
+ }
+ }
+ });
});
/* Jquery Table Expander Plugin */
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 3adbf14..a781236 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -64,3 +64,5 @@ en:
field_frequency: "Frequency"
text_monthly: "Monthly"
text_quarterly: "Quarterly"
+ text_start_date_empty: "The start date is empty. If this form is submitted, no budget items will be created."
+ text_end_date_empty: "The end date is empty. If this form is submitted, no budget items will be created."