mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2026-02-13 09:13:58 -05:00
override issues form to add passing @project to issues hook
This commit is contained in:
89
app/views/invoices/_form.html.erb
Normal file
89
app/views/invoices/_form.html.erb
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<%= labelled_fields_for :issue, @issue do |f| %>
|
||||||
|
<%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %>
|
||||||
|
<%= hidden_field_tag 'form_update_triggered_by', '' %>
|
||||||
|
<%= hidden_field_tag 'back_url', params[:back_url], :id => nil if params[:back_url].present? %>
|
||||||
|
|
||||||
|
<% if @issue.safe_attribute? 'is_private' %>
|
||||||
|
<p id="issue_is_private_wrap">
|
||||||
|
<%= f.check_box :is_private, :no_label => true %><label class="inline" for="issue_is_private" id="issue_is_private_label"><%= l(:field_is_private) %></label>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% projects = projects_for_select(@issue) %>
|
||||||
|
<% if (@issue.safe_attribute?('project_id') || @issue.project_id_changed?) && (@project.nil? || projects.length > 1 || @issue.copy?) %>
|
||||||
|
<p><%= f.select :project_id, project_tree_options_for_select(projects, :selected => @issue.project), {:required => true},
|
||||||
|
:onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %></p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if @issue.safe_attribute?('tracker_id') || (@issue.persisted? && @issue.tracker_id_changed?) %>
|
||||||
|
<p>
|
||||||
|
<%= f.select :tracker_id, trackers_options_for_select(@issue), {:required => true},
|
||||||
|
:onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)",
|
||||||
|
:title => @issue.tracker.description %>
|
||||||
|
<%= content_tag 'a', sprite_icon('help', l(:label_open_trackers_description)), :class => 'icon-only icon-help', :title => l(:label_open_trackers_description), :onclick => "showModal('trackers_description', '500px'); return false;", :href => '#' if trackers_for_select(@issue).any? {|t| t.description.present? } %>
|
||||||
|
</p>
|
||||||
|
<%= render partial: 'issues/trackers_description', locals: {trackers: trackers_for_select(@issue)} %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if @issue.safe_attribute? 'subject' %>
|
||||||
|
<p><%= f.text_field :subject, :size => 80, :maxlength => 255, :required => true %></p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if @issue.safe_attribute? 'description' %>
|
||||||
|
<p>
|
||||||
|
<%= f.label_for_field :description, :required => @issue.required_attribute?('description') %>
|
||||||
|
<%= content_tag 'span', :id => "issue_description_and_toolbar", :style => (@issue.new_record? ? nil : 'display:none') do %>
|
||||||
|
<%= f.textarea :description, :cols => 60, :accesskey => accesskey(:edit), :class => 'wiki-edit',
|
||||||
|
:rows => [[10, @issue.description.to_s.length / 50].max, 20].min,
|
||||||
|
:data => {
|
||||||
|
:auto_complete => true
|
||||||
|
}.merge(list_autofill_data_attributes),
|
||||||
|
:no_label => true %>
|
||||||
|
<% end %>
|
||||||
|
<%= link_to_function content_tag(:span, sprite_icon('edit', l(:button_edit))), '$(this).hide(); $("#issue_description_and_toolbar").show()', :class => 'icon icon-edit' unless @issue.new_record? %>
|
||||||
|
</p>
|
||||||
|
<%= wikitoolbar_for 'issue_description', preview_issue_path(:project_id => @issue.project, :issue_id => @issue.id) %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div id="attributes" class="attributes">
|
||||||
|
<%= render :partial => 'issues/attributes' %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= 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 %>
|
||||||
@@ -18,9 +18,11 @@ module RedmineQbo
|
|||||||
# Here we build the required form components before passing them to a partial view formatting.
|
# Here we build the required form components before passing them to a partial view formatting.
|
||||||
def view_issues_form_details_bottom(context={})
|
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 "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]
|
f = context[:form]
|
||||||
issue = context[:issue]
|
issue = context[:issue]
|
||||||
|
project = context[:project]
|
||||||
|
Rails.logger.debug issue.inspect
|
||||||
|
Rails.logger.debug project.inspect
|
||||||
|
|
||||||
# Customer Name Text Box with database backed autocomplete
|
# Customer Name Text Box with database backed autocomplete
|
||||||
# onchange event will update the hidden customer_id field
|
# onchange event will update the hidden customer_id field
|
||||||
@@ -32,8 +34,18 @@ module RedmineQbo
|
|||||||
value: '#issue_customer'
|
value: '#issue_customer'
|
||||||
}
|
}
|
||||||
|
|
||||||
js_path = "updateIssueFrom('/issues/new.js', this)"
|
# We need to handle 3 cases for the onchange event of the customer name field:
|
||||||
js_path = "updateIssueFrom('#{escape_javascript update_issue_form_path(issue.project, issue)}', this)" unless issue.new_record?
|
# 1. New issue Withough project: /issues/new.js
|
||||||
|
# 2. New issue With project: /projects/rmt/issues/new.js
|
||||||
|
# 3. Existing issue: /issues/<ID>/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
|
# 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
|
# the onchange event will reload the issue form via ajax to update the available estimates
|
||||||
customer_id = f.hidden_field :customer_id,
|
customer_id = f.hidden_field :customer_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user