+
+<%= call_hook(:view_issues_form_details_bottom, { :project => @project, :issue => @issue, :form => f }) %>
+<% end %>
+
+<% heads_for_wiki_formatter %>
+<%= heads_for_auto_complete(@issue.project) %>
+
+<% if User.current.allowed_to?(:add_issue_watchers, @issue.project)%>
+ <%= update_data_sources_for_auto_complete({users: watchers_autocomplete_for_mention_path(project_id: @issue.project, q: '', object_type: 'issue',
+ object_id: @issue.id)}) %>
+<% end %>
+
+<%= javascript_tag do %>
+$(document).ready(function(){
+ $("#issue_tracker_id, #issue_status_id").each(function(){
+ $(this).val($(this).find("option[selected=selected]").val());
+ });
+ $(".assign-to-me-link").click(function(event){
+ event.preventDefault();
+ var element = $(event.target);
+ $('#issue_assigned_to_id').val(element.data('id'));
+ element.hide();
+ });
+ $('#issue_assigned_to_id').change(function(event){
+ var assign_to_me_link = $(".assign-to-me-link");
+
+ if (assign_to_me_link.length > 0) {
+ var user_id = $(event.target).val();
+ var current_user_id = assign_to_me_link.data('id');
+
+ if (user_id == current_user_id) {
+ assign_to_me_link.hide();
+ } else {
+ assign_to_me_link.show();
+ }
+ }
+ });
+});
+<% end %>
\ No newline at end of file
diff --git a/lib/redmine_qbo/hooks/issues_hook_listener.rb b/lib/redmine_qbo/hooks/issues_hook_listener.rb
index bac5c77..65308e9 100644
--- a/lib/redmine_qbo/hooks/issues_hook_listener.rb
+++ b/lib/redmine_qbo/hooks/issues_hook_listener.rb
@@ -18,9 +18,11 @@ module RedmineQbo
# Here we build the required form components before passing them to a partial view formatting.
def view_issues_form_details_bottom(context={})
Rails.logger.debug "RedmineQbo::Hooks::IssuesHookListener.view_issues_form_details_bottom: Building form components for quickbooks customer, estimate, and invoice data"
- Rails.logger.debug context[:issue].inspect
f = context[:form]
issue = context[:issue]
+ project = context[:project]
+ Rails.logger.debug issue.inspect
+ Rails.logger.debug project.inspect
# Customer Name Text Box with database backed autocomplete
# onchange event will update the hidden customer_id field
@@ -32,8 +34,18 @@ module RedmineQbo
value: '#issue_customer'
}
- js_path = "updateIssueFrom('/issues/new.js', this)"
- js_path = "updateIssueFrom('#{escape_javascript update_issue_form_path(issue.project, issue)}', this)" unless issue.new_record?
+ # We need to handle 3 cases for the onchange event of the customer name field:
+ # 1. New issue Withough project: /issues/new.js
+ # 2. New issue With project: /projects/rmt/issues/new.js
+ # 3. Existing issue: /issues//edit.js
+ # The built in helper update_issue_form_path requires a project object to determine the correct path for new vs existing issues,
+ # but it doesn't work for issue.project when creating new issues not in a project i.e. http://redmine.domain.com/issues/new .
+ # So we need to figure out how to get a the @project from the controller calling the hook.
+ #
+ # If this is not handled correctly, it leads to a 422 error when creating a new issue and selecting a customer.
+ js_path = "updateIssueFrom('#{escape_javascript update_issue_form_path(project, issue)}', this)"
+ Rails.logger.debug js_path
+
# This hidden field is used for the customer ID for the issue
# the onchange event will reload the issue form via ajax to update the available estimates
customer_id = f.hidden_field :customer_id,