OSDN Git Service

change new_relation_dialog's template variable to the argument of quick_edit_show_new...
[quickedit/quick_edit.git] / app / views / hooks / _quick_edit_context.html.erb
1 <%
2    extend ApplicationHelper
3    extend IssueRelationsHelper
4    custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
5      #concat f.field_format
6      %w(string date int).include?(f.field_format)
7    end
8
9    first_issue = @issues.first
10    first_issue_id = first_issue.id
11    if @issues.size > 1
12       second_issue = @issues[1]
13       second_issue_id = second_issue.id
14    else
15       second_issue_id = ''
16    end
17
18    # 可能なら更新後に選択されたチケットに戻り先に設定
19    if @back.match(/\/projects\/.*?\/issues/)
20      back_url = @back + '#issue-' + first_issue.id.to_s
21    else
22      back_url = @back
23    end
24 %>
25   <li class="folder">
26     <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
27     <ul>
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]) %>
30
31
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]) %>
34       <% end %>
35
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]) %>
38       <% end %>
39
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]) %>
42       <% end %>
43
44       <% if @issues.size <= 2  %>
45         <% if User.current.allowed_to?(:manage_issue_relations, @project) %>
46         <hr>
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)+'\');',
49                         :remote => false,
50                         :title => l(:label_relation_new),
51                         :class => 'icon',
52                         :style => 'background-image: url("'+image_path('link.png')+'")' %></li>
53         <% end %>
54       <% end %>
55
56       <% if @issues.size == 1 && first_issue.relations.any? %>
57         <hr>
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),
63                             :remote => false,
64                             :method => :delete,
65                             :data => {:confirm => l(:text_are_you_sure)},
66                             :title => l(:label_relation_delete),
67                             :class => 'icon',
68                             :style => 'background-image: url("'+image_path('link_break.png')+'");' %></li>
69           <% end %> 
70         <% end %>
71       <% end %>
72    </ul>
73   </li>
74   <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
75      <p id="quick_edit_input_dialog_message"></p>
76      <form>
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>
79         </fieldset>
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') %>
83         </fieldset>
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>
89      </form> 
90   </div>
91
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) %>
101       </span><br>
102       <hr> 
103       <%= submit_tag l(:button_add) %>
104       <%= submit_tag l(:button_cancel), :onclick => 'javascript: quick_edit_new_relation_dialog_cancel();', :type => 'button' %>
105
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))}')" %>
108
109       <%= javascript_tag "setPredecessorFieldsVisibility();" %>
110
111     <% end %>
112   </div>
113   <% end %>
114
115 <script>
116 //<![CDATA[
117 function quick_edit_get_value_element(field_type) {
118   if (field_type == 'date') {
119      return $('#quick_edit_input_dialog_new_date_value');
120   } else {
121      return $('#quick_edit_input_dialog_new_value');
122   }
123 }
124
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");
129   } else {
130      $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
131      $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
132   }
133
134   if (default_value) {
135      quick_edit_get_value_element(field_type).val(default_value);
136   }
137
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({
145      modal: true,
146      closeOnEscape: false,
147      width: 500,
148      height: 210,
149      buttons: {
150         "Ok" : quick_edit_input_dialog_ok,
151         "Cancel" : quick_edit_input_dialog_cancel
152      },
153      close: quick_edit_input_dialog_close
154   });
155 }
156
157 function quick_edit_input_dialog_close(){
158   $("#quick_edit_input_dialog").remove();
159 }
160
161 function quick_edit_input_dialog_cancel(){
162   $("#quick_edit_input_dialog").dialog("close");
163 }
164
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;
169
170   var target = $("#quick_edit_input_dialog_target").val();
171   var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
172
173   if(new_value == "") {
174     alert('<%=l(:text_is_required)%>');
175     return;
176
177   } else {
178
179     if(pattern && !pattern.test(new_value)){
180        alert('<%=l(:text_invalid_format)%>');
181        return;
182     }
183   }
184
185   <% if @issues.count > 1 %>
186      if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
187   <% end %>
188
189
190   var additional_index;
191   var match = /(.*)\[([0-9]+)\]/.exec(target);
192   if(match){
193      target_name = match[1];
194      additional_index = match[2];
195   }else{
196      target_name = target;
197      additional_index = null;
198   }
199
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);
207   } else {
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);
210   }
211
212   jQuery(bulk_update_html_id)
213      .attr('href',bulk_update_url)
214      .click();
215 }
216
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({
222      modal: true,
223      closeOnEscape: false,
224      width: 450,
225      height: 150,
226      close: quick_edit_new_relation_dialog_close
227   });
228 }
229
230 function quick_edit_new_relation_dialog_cancel(){
231    $('#quick_edit_new_relation_dialog').dialog("close");
232 }
233
234 function quick_edit_new_relation_dialog_close(){
235    $('#quick_edit_new_relation_dialog').remove();
236 }
237
238 //]]>
239 </script>
240