2 extend ApplicationHelper
3 custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
5 %w(string date int).include?(f.field_format)
8 first_issue = @issues.first
11 <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
13 <%= quick_edit_link_to(l(:field_subject), :subject, :string, first_issue.subject, !@can[:update]) %>
14 <%= quick_edit_link_to(l(:field_parent_issue), :parent_issue_id, :int, first_issue.parent_id, !@can[:update]) %>
17 <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('start_date') } %>
18 <%= quick_edit_link_to(l(:field_start_date), :start_date, :date, first_issue.start_date, !@can[:update]) %>
21 <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('due_date') } %>
22 <%= quick_edit_link_to(l(:field_due_date), :due_date, :date, first_issue.due_date, !@can[:update]) %>
25 <% first_issue.editable_custom_field_values.each do |f| %>
26 <% logger.info(""+f.class.name + "[" + f.custom_field_id.to_s + "]= " + f.value.to_s);
28 <% custom_fields.each do |f| %>
29 <%= quick_edit_link_to(f.name, 'custom_field_values[%d]' % f.id, f.field_format, first_issue.editable_custom_field_values.detect {|v| v.custom_field_id == f.id}, !@can[:update]) %>
33 <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
34 <p id="quick_edit_input_dialog_message"></p>
36 <fieldset id="text_fields" style="border: none; margin:none; padding: none;">
37 <input id="quick_edit_input_dialog_new_value" type="text" size="40" style="vertical-align:middle;"></input>
39 <fieldset id="date_fields" style="border: none; margin:none; padding: none;">
40 <input id="quick_edit_input_dialog_new_date_value" type="text" size="40" style="vertical-align:middle;"></input>
41 <%= calendar_for('quick_edit_input_dialog_new_date_value') %>
43 <input id="quick_edit_input_dialog_target" type="hidden"></input>
44 <input id="quick_edit_input_dialog_field_type" type="hidden"></input>
45 <input id="quick_edit_input_dialog_pattern" type="hidden"></input>
46 <input id="quick_edit_input_dialog_dummy" type="text" style="display:none"></input>
52 function quick_edit_get_value_element(field_type) {
53 if (field_type == 'date') {
54 return $('#quick_edit_input_dialog_new_date_value');
56 return $('#quick_edit_input_dialog_new_value');
60 function quick_edit_show_input_dialog(field_name,target,field_type,pattern,message,default_value){
61 if (field_type == 'date') {
62 $("#quick_edit_input_dialog > form > #text_fields").css("display", "none");
63 $("#quick_edit_input_dialog > form > #date_fields").css("display", "block");
65 $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
66 $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
70 quick_edit_get_value_element(field_type).val(default_value);
72 $("#quick_edit_input_dialog").attr('title','Quick Edit - ' + field_name);
73 $("#quick_edit_input_dialog_target").val(target);
74 $("#quick_edit_input_dialog_field_type").val(field_type);
75 $("#quick_edit_input_dialog_pattern").val(pattern);
76 $("#quick_edit_input_dialog_message").html(message);
77 $("#quick_edit_input_dialog").dialog({
83 "Ok" : quick_edit_input_dialog_ok,
84 "Cancel" : quick_edit_input_dialog_cancel
86 close: quick_edit_input_dialog_close
90 function quick_edit_input_dialog_close(){
91 $("#quick_edit_input_dialog").remove();
94 function quick_edit_input_dialog_cancel(){
95 $("#quick_edit_input_dialog").dialog("close");
98 function quick_edit_input_dialog_ok(){
99 var field_type = $("#quick_edit_input_dialog_field_type").val();
100 var new_value = quick_edit_get_value_element(field_type).val();
101 if(new_value === null) return;
103 var target = $("#quick_edit_input_dialog_target").val();
104 var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
106 if(new_value == "") {
107 alert('<%=l(:text_is_required)%>');
112 if(pattern && !pattern.test(new_value)){
113 alert('<%=l(:text_invalid_format)%>');
118 <% if @issues.count > 1 %>
119 if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
123 var additional_index;
124 var match = /(.*)\[([0-9]+)\]/.exec(target);
126 target_name = match[1];
127 additional_index = match[2];
129 target_name = target;
130 additional_index = null;
133 var bulk_update_html_id = '';
134 var bulk_update_url = '<%= bulk_update_issues_path(:ids => @issue_ids, :back_url => @back)%>';
135 if (additional_index === null) {
136 bulk_update_html_id = '#context_edit_update_link_' + target_name;
137 bulk_update_url += encodeURI('&issue['+target_name+']='+new_value);
139 bulk_update_html_id = '#context_edit_update_link_' + target_name + '_'+additional_index+'_';
140 bulk_update_url += encodeURI('&issue['+target_name+']['+additional_index+']='+new_value);
143 jQuery(bulk_update_html_id)
144 .attr('href',bulk_update_url)