2 extend ApplicationHelper
3 extend IssueRelationsHelper
4 custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
6 %w(string date int).include?(f.field_format)
9 first_issue = @issues.first
10 first_issue_id = first_issue.id
12 second_issue = @issues[1]
13 second_issue_id = second_issue.id
18 # 可能なら更新後に選択されたチケットに戻り先に設定
19 if @back.match(/\/projects\/.*?\/issues/)
20 back_url = @back + '#issue-' + first_issue.id.to_s
26 <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
28 <%= quick_edit_link_to(l(:field_subject), :subject, :string, first_issue.subject, back_url, !@can[:update]) %>
29 <%= quick_edit_link_to(l(:field_parent_issue), :parent_issue_id, :int, first_issue.parent_id, back_url, !@can[:update]) %>
32 <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('start_date') } %>
33 <%= quick_edit_link_to(l(:field_start_date), :start_date, :date, first_issue.start_date, back_url, !@can[:update]) %>
36 <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('due_date') } %>
37 <%= quick_edit_link_to(l(:field_due_date), :due_date, :date, first_issue.due_date, back_url, !@can[:update]) %>
40 <% custom_fields.each do |f| %>
41 <%= 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}, back_url, !@can[:update]) %>
44 <% if @issues.size <= 2 %>
45 <% if User.current.allowed_to?(:manage_issue_relations, @project) %>
47 <li><%= link_to l(:label_relation_new),
48 'javascript: quick_edit_show_new_relation_dialog(\''+first_issue_id.to_s+'\',\''+second_issue_id.to_s+'\',\''+URI.encode_www_form_component(back_url)+'\');',
50 :title => l(:label_relation_new),
52 :style => 'background-image: url("'+image_path('link.png')+'")' %></li>
56 <% if @issues.size == 1 && first_issue.relations.any? %>
58 <% first_issue.relations.each do |relation| %>
59 <% other_issue = relation.other_issue(first_issue) %>
60 <% if User.current.allowed_to?(:manage_issue_relations, @project) %>
61 <li><%= link_to l(relation.label_for(first_issue)) + " \##{other_issue.id}",
62 quick_edit_relation_path(relation, :back_url => back_url),
65 :data => {:confirm => l(:text_are_you_sure)},
66 :title => l(:label_relation_delete),
68 :style => 'background-image: url("'+image_path('link_break.png')+'");' %></li>
74 <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
75 <p id="quick_edit_input_dialog_message"></p>
77 <fieldset id="text_fields" style="border: none; margin:none; padding: none;">
78 <input id="quick_edit_input_dialog_new_value" type="text" size="40" style="vertical-align:middle;"></input>
80 <fieldset id="date_fields" style="border: none; margin:none; padding: none;">
81 <input id="quick_edit_input_dialog_new_date_value" type="text" size="40" style="vertical-align:middle;"></input>
82 <%= calendar_for('quick_edit_input_dialog_new_date_value') %>
84 <input id="quick_edit_input_dialog_target" type="hidden"></input>
85 <input id="quick_edit_input_dialog_field_type" type="hidden"></input>
86 <input id="quick_edit_input_dialog_pattern" type="hidden"></input>
87 <input id="quick_edit_input_dialog_back_url" type="hidden"></input>
88 <input id="quick_edit_input_dialog_dummy" type="text" style="display:none"></input>
92 <% if @issues.size <= 2 %>
93 <div id="quick_edit_new_relation_dialog" style="display:none;" title="Quick Edit - <%= l(:label_relation_new) %>">
94 <%= form_tag({:controller=>'quick_edit_relations', :action=>:create}) do %>
95 <%= text_field_tag :issue_id, '', { :size => 10 } %>
96 <%= select :relation, :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %>
97 <%= text_field_tag 'relation[issue_to_id]', '', { :size => 10 } %>
98 <%= hidden_field_tag :back_url, '' %>
99 <span id="predecessor_fields" style="display:none;">
100 <br><%= l(:field_delay) %>: <%= text_field_tag :delay, '', {:size => 3} %> <%= l(:label_day_plural) %>
103 <%= submit_tag l(:button_add) %>
104 <%= submit_tag l(:button_cancel), :onclick => 'javascript: quick_edit_new_relation_dialog_cancel();', :type => 'button' %>
106 <%= javascript_tag "observeAutocompleteField('issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => (Setting.cross_project_issue_relations? ? 'all' : nil))}')" %>
107 <%= javascript_tag "observeAutocompleteField('relation_issue_to_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => (Setting.cross_project_issue_relations? ? 'all' : nil))}')" %>
109 <%= javascript_tag "setPredecessorFieldsVisibility();" %>
117 function quick_edit_get_value_element(field_type) {
118 if (field_type == 'date') {
119 return $('#quick_edit_input_dialog_new_date_value');
121 return $('#quick_edit_input_dialog_new_value');
125 function quick_edit_show_input_dialog(field_name,target,field_type,pattern,message,default_value,back_url){
126 if (field_type == 'date') {
127 $("#quick_edit_input_dialog > form > #text_fields").css("display", "none");
128 $("#quick_edit_input_dialog > form > #date_fields").css("display", "block");
130 $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
131 $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
135 quick_edit_get_value_element(field_type).val(default_value);
138 $("#quick_edit_input_dialog").attr('title','Quick Edit - ' + field_name);
139 $("#quick_edit_input_dialog_target").val(target);
140 $("#quick_edit_input_dialog_field_type").val(field_type);
141 $("#quick_edit_input_dialog_pattern").val(pattern);
142 $("#quick_edit_input_dialog_message").html(message);
143 $("#quick_edit_input_dialog_back_url").val(back_url);
144 $("#quick_edit_input_dialog").dialog({
146 closeOnEscape: false,
150 "Ok" : quick_edit_input_dialog_ok,
151 "Cancel" : quick_edit_input_dialog_cancel
153 close: quick_edit_input_dialog_close
157 function quick_edit_input_dialog_close(){
158 $("#quick_edit_input_dialog").remove();
161 function quick_edit_input_dialog_cancel(){
162 $("#quick_edit_input_dialog").dialog("close");
165 function quick_edit_input_dialog_ok(){
166 var field_type = $("#quick_edit_input_dialog_field_type").val();
167 var new_value = quick_edit_get_value_element(field_type).val();
168 if(new_value === null) return;
170 var target = $("#quick_edit_input_dialog_target").val();
171 var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
173 if(new_value == "") {
174 alert('<%=l(:text_is_required)%>');
179 if(pattern && !pattern.test(new_value)){
180 alert('<%=l(:text_invalid_format)%>');
185 <% if @issues.count > 1 %>
186 if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
190 var additional_index;
191 var match = /(.*)\[([0-9]+)\]/.exec(target);
193 target_name = match[1];
194 additional_index = match[2];
196 target_name = target;
197 additional_index = null;
200 var bulk_update_html_id = '';
201 var back_url = $("#quick_edit_input_dialog_back_url").val();
202 console.log(back_url);
203 var bulk_update_url = '<%= bulk_update_issues_path(:ids => @issue_ids)%>&back_url='+encodeURIComponent(back_url);
204 if (additional_index === null) {
205 bulk_update_html_id = '#context_edit_update_link_' + target_name;
206 bulk_update_url += encodeURI('&issue['+target_name+']='+new_value);
208 bulk_update_html_id = '#context_edit_update_link_' + target_name + '_'+additional_index+'_';
209 bulk_update_url += encodeURI('&issue['+target_name+']['+additional_index+']='+new_value);
212 jQuery(bulk_update_html_id)
213 .attr('href',bulk_update_url)
217 function quick_edit_show_new_relation_dialog(first_issue_id, second_issue_id, back_url){
218 $("#quick_edit_new_relation_dialog > form > #issue_id").val(first_issue_id);
219 $("#quick_edit_new_relation_dialog > form > #relation_issue_to_id").val(second_issue_id);
220 $("#quick_edit_new_relation_dialog > form > #back_url").val(back_url);
221 $("#quick_edit_new_relation_dialog").dialog({
223 closeOnEscape: false,
226 close: quick_edit_new_relation_dialog_close
230 function quick_edit_new_relation_dialog_cancel(){
231 $('#quick_edit_new_relation_dialog').dialog("close");
234 function quick_edit_new_relation_dialog_close(){
235 $('#quick_edit_new_relation_dialog').remove();