OSDN Git Service

fix initial value is invalid at custom field
[quickedit/quick_edit.git] / app / views / hooks / _context.erb
1 <%
2    extend ApplicationHelper
3    custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
4      #concat f.field_format
5      %w(string date int).include?(f.field_format)
6    end
7
8    first_issue = @issues.first
9 %>
10   <li class="folder">
11     <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
12     <ul>
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]) %>
15
16
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]) %>
19       <% end %>
20
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]) %>
23       <% end %>
24
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);
27        end %>
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]) %>
30       <% end %>
31    </ul>
32   </li>
33   <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
34      <p id="quick_edit_input_dialog_message"></p>
35      <form>
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>
38         </fieldset>
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') %>
42         </fieldset>
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>
47      </form> 
48   </div>
49
50 <script>
51 //<![CDATA[
52 function quick_edit_get_value_element(field_type) {
53   if (field_type == 'date') {
54      return $('#quick_edit_input_dialog_new_date_value');
55   } else {
56      return $('#quick_edit_input_dialog_new_value');
57   }
58 }
59
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");
64   } else {
65      $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
66      $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
67   }
68
69   if (default_value) {
70      quick_edit_get_value_element(field_type).val(default_value);
71   }
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({
78      modal: true,
79      closeOnEscape: false,
80      width: 500,
81      height: 200,
82      buttons: {
83         "Ok" : quick_edit_input_dialog_ok,
84         "Cancel" : quick_edit_input_dialog_cancel
85      },
86      close: quick_edit_input_dialog_close
87   });
88 }
89
90 function quick_edit_input_dialog_close(){
91   $("#quick_edit_input_dialog").remove();
92 }
93
94 function quick_edit_input_dialog_cancel(){
95   $("#quick_edit_input_dialog").dialog("close");
96 }
97
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;
102
103   var target = $("#quick_edit_input_dialog_target").val();
104   var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
105
106   if(new_value == "") {
107     alert('<%=l(:text_is_required)%>');
108     return;
109
110   } else {
111
112     if(pattern && !pattern.test(new_value)){
113        alert('<%=l(:text_invalid_format)%>');
114        return;
115     }
116   }
117
118   <% if @issues.count > 1 %>
119      if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
120   <% end %>
121
122
123   var additional_index;
124   var match = /(.*)\[([0-9]+)\]/.exec(target);
125   if(match){
126      target_name = match[1];
127      additional_index = match[2];
128   }else{
129      target_name = target;
130      additional_index = null;
131   }
132
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);
138   } else {
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);
141   }
142
143   jQuery(bulk_update_html_id)
144      .attr('href',bulk_update_url)
145      .click();
146 }
147 //]]>
148 </script>
149