OSDN Git Service

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