OSDN Git Service

change template variable to the argument of functions.
[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    bulk_update_url = bulk_update_issues_path(:ids => @issue_ids, :back_url => back_url);
26 %>
27   <li class="folder">
28     <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
29     <ul>
30       <%= quick_edit_link_to(bulk_update_url, @issue_ids, l(:field_subject), :subject, :string, first_issue.subject, !@can[:update]) %>
31       <%= quick_edit_link_to(bulk_update_url, @issue_ids, l(:field_parent_issue), :parent_issue_id, :int, first_issue.parent_id, !@can[:update]) %>
32
33
34       <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('start_date') } %>
35       <%= quick_edit_link_to(bulk_update_url, @issue_ids, l(:field_start_date), :start_date, :date, first_issue.start_date, !@can[:update]) %>
36       <% end %>
37
38       <% unless @issues.any? {|issue| issue.disabled_core_fields.include?('due_date') } %>
39       <%= quick_edit_link_to(bulk_update_url, @issue_ids, l(:field_due_date), :due_date, :date, first_issue.due_date, !@can[:update]) %>
40       <% end %>
41
42       <% custom_fields.each do |f| %>
43       <%= quick_edit_link_to(bulk_update_url, @issue_ids, 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]) %>
44       <% end %>
45
46       <% if @issues.size <= 2  %>
47         <% if User.current.allowed_to?(:manage_issue_relations, @project) %>
48         <hr>
49         <li><%= link_to l(:label_relation_new),
50                         'javascript: quick_edit_show_new_relation_dialog(\''+first_issue_id.to_s+'\',\''+second_issue_id.to_s+'\',\''+URI.encode_www_form_component(back_url)+'\');',
51                         :remote => false,
52                         :title => l(:label_relation_new),
53                         :class => 'icon',
54                         :style => 'background-image: url("'+image_path('link.png')+'")' %></li>
55         <% end %>
56       <% end %>
57
58       <% if @issues.size == 1 && first_issue.relations.any? %>
59         <hr>
60         <% first_issue.relations.each do |relation| %>
61           <% other_issue = relation.other_issue(first_issue) %>
62           <% if User.current.allowed_to?(:manage_issue_relations, @project) %>
63             <li><%= link_to l(relation.label_for(first_issue)) + " \##{other_issue.id}",
64                             quick_edit_relation_path(relation, :back_url => back_url),
65                             :remote => false,
66                             :method => :delete,
67                             :data => {:confirm => l(:text_are_you_sure)},
68                             :title => l(:label_relation_delete),
69                             :class => 'icon',
70                             :style => 'background-image: url("'+image_path('link_break.png')+'");' %></li>
71           <% end %> 
72         <% end %>
73       <% end %>
74    </ul>
75   </li>
76   <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
77      <p id="quick_edit_input_dialog_message"></p>
78      <form>
79         <fieldset id="text_fields" style="border: none; margin:none; padding: none;">
80         <input id="quick_edit_input_dialog_new_value" type="text" size="40" style="vertical-align:middle;"></input>
81         </fieldset>
82         <fieldset id="date_fields" style="border: none; margin:none; padding: none;">
83         <input id="quick_edit_input_dialog_new_date_value" type="text" size="40" style="vertical-align:middle;"></input>
84         <%= calendar_for('quick_edit_input_dialog_new_date_value') %>
85         </fieldset>
86         <input id="quick_edit_input_dialog_bulk_update_url" type="hidden"></input>
87         <input id="quick_edit_input_dialog_issue_ids" type="hidden"></input>
88         <input id="quick_edit_input_dialog_target" type="hidden"></input>
89         <input id="quick_edit_input_dialog_field_type" type="hidden"></input>
90         <input id="quick_edit_input_dialog_pattern" type="hidden"></input>
91         <input id="quick_edit_input_dialog_dummy" type="text" style="display:none"></input>
92      </form> 
93   </div>
94
95   <div id="quick_edit_new_relation_dialog" style="display:none;" title="Quick Edit - <%= l(:label_relation_new) %>">
96     <%= form_tag({:controller=>'quick_edit_relations', :action=>:create}) do %>
97       <%= text_field_tag :issue_id, '', { :size => 10 } %>
98       <%= select :relation, :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();"  %>
99       <%= text_field_tag 'relation[issue_to_id]', '', { :size => 10 } %>
100       <%= hidden_field_tag :back_url, '' %>
101       <span id="predecessor_fields" style="display:none;">
102       <br><%= l(:field_delay) %>: <%= text_field_tag :delay, '', {:size => 3} %> <%= l(:label_day_plural) %>
103       </span><br>
104       <hr> 
105       <%= submit_tag l(:button_add) %>
106       <%= submit_tag l(:button_cancel), :onclick => 'javascript: quick_edit_new_relation_dialog_cancel();', :type => 'button' %>
107
108       <%= javascript_tag "observeAutocompleteField('issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => (Setting.cross_project_issue_relations? ? 'all' : nil))}')" %>
109       <%= javascript_tag "observeAutocompleteField('relation_issue_to_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => (Setting.cross_project_issue_relations? ? 'all' : nil))}')" %>
110
111       <%= javascript_tag "setPredecessorFieldsVisibility();" %>
112
113     <% end %>
114   </div>
115
116 <script>
117 //<![CDATA[
118 function quick_edit_get_value_element(field_type) {
119   if (field_type == 'date') {
120      return $('#quick_edit_input_dialog_new_date_value');
121   } else {
122      return $('#quick_edit_input_dialog_new_value');
123   }
124 }
125
126 function quick_edit_show_input_dialog(bulk_update_url,ids,field_name,target,field_type,pattern,message,default_value){
127   if (field_type == 'date') {
128      $("#quick_edit_input_dialog > form > #text_fields").css("display", "none");
129      $("#quick_edit_input_dialog > form > #date_fields").css("display", "block");
130   } else {
131      $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
132      $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
133   }
134
135   if (default_value) {
136      quick_edit_get_value_element(field_type).val(default_value);
137   }
138
139   $("#quick_edit_input_dialog").attr('title','Quick Edit - ' + field_name);
140   $("#quick_edit_input_dialog_bulk_update_url").val(bulk_update_url);
141   $("#quick_edit_input_dialog_issue_ids").val(ids);
142   $("#quick_edit_input_dialog_target").val(target);
143   $("#quick_edit_input_dialog_field_type").val(field_type);
144   $("#quick_edit_input_dialog_pattern").val(pattern);
145   $("#quick_edit_input_dialog_message").html(message);
146   $("#quick_edit_input_dialog").dialog({
147      modal: true,
148      closeOnEscape: false,
149      width: 500,
150      height: 210,
151      buttons: {
152         "Ok" : quick_edit_input_dialog_ok,
153         "Cancel" : quick_edit_input_dialog_cancel
154      },
155      close: quick_edit_input_dialog_close
156   });
157 }
158
159 function quick_edit_input_dialog_close(){
160   $("#quick_edit_input_dialog").remove();
161 }
162
163 function quick_edit_input_dialog_cancel(){
164   $("#quick_edit_input_dialog").dialog("close");
165 }
166
167 function quick_edit_input_dialog_ok(){
168   var field_type = $("#quick_edit_input_dialog_field_type").val();
169   var new_value = quick_edit_get_value_element(field_type).val();
170   if(new_value === null) return;
171
172   var target = $("#quick_edit_input_dialog_target").val();
173   var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
174
175   if(new_value == "") {
176     alert('<%=l(:text_is_required)%>');
177     return;
178
179   } else {
180
181     if(pattern && !pattern.test(new_value)){
182        alert('<%=l(:text_invalid_format)%>');
183        return;
184     }
185   }
186
187   var issue_ids = $("#quick_edit_input_dialog_issue_ids").val();
188   if(issue_ids.length>1){
189      if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
190   }
191
192   var additional_index;
193   var match = /(.*)\[([0-9]+)\]/.exec(target);
194   if(match){
195      target_name = match[1];
196      additional_index = match[2];
197   }else{
198      target_name = target;
199      additional_index = null;
200   }
201
202   var bulk_update_html_id = '';
203   var bulk_update_url = $("#quick_edit_input_dialog_bulk_update_url").val();
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