<%
extend ApplicationHelper
extend IssueRelationsHelper
+
+ excludes = Setting.plugin_quick_edit['custom_field_exclude_names'].split(/,/).map {|v| Regexp.new(v)}
+
custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
- #concat f.field_format
- %w(string date int).include?(f.field_format)
+ %w{string date int text link float}.include?(f.field_format) && ( excludes.empty? || excludes.none? {|ex| ex.match(f.name)} )
end
+ readonly_fields = @issues.map {|issue| issue.read_only_attribute_names(User.current)}
+ readonly_fields.flatten!
+ readonly_fields.uniq!
+
first_issue = @issues.first
+ first_issue_id = first_issue.id
if @issues.size > 1
second_issue = @issues[1]
+ second_issue_id = second_issue.id
+ else
+ second_issue_id = ''
end
# 可能なら更新後に選択されたチケットに戻り先に設定
else
back_url = @back
end
+
%>
<li class="folder">
- <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
+ <a id="quick_edit_context" href="#" class="submenu"><%= l(:button_quick_edit) %></a>
<ul>
- <%= quick_edit_link_to(l(:field_subject), :subject, :string, first_issue.subject, !@can[:update]) %>
- <%= quick_edit_link_to(l(:field_parent_issue), :parent_issue_id, :int, first_issue.parent_id, !@can[:update]) %>
-
-
+ <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:subject), :subject, nil, back_url, !editable(:subject,@can,readonly_fields)) %>
+ <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:description), :description, nil, back_url, !editable(:description,@can,readonly_fields)) %>
+ <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:parent_issue_id), :parent_issue_id, nil, back_url, !editable(:parent_issue_id,@can,readonly_fields)) %>
<% unless @issues.any? {|issue| issue.disabled_core_fields.include?('start_date') } %>
- <%= quick_edit_link_to(l(:field_start_date), :start_date, :date, first_issue.start_date, !@can[:update]) %>
+ <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:start_date), :start_date, nil, back_url, !editable(:start_date,@can,readonly_fields)) %>
<% end %>
<% unless @issues.any? {|issue| issue.disabled_core_fields.include?('due_date') } %>
- <%= quick_edit_link_to(l(:field_due_date), :due_date, :date, first_issue.due_date, !@can[:update]) %>
+ <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:due_date), :due_date, nil, back_url, !editable(:due_date,@can,readonly_fields)) %>
<% end %>
<% custom_fields.each do |f| %>
- <%= 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]) %>
+ <%= quick_edit_link_to(@issue_ids, f.name, 'custom_field_values', f.id, back_url, !editable_custom_field(f,@can,readonly_fields)) %>
<% end %>
<% if @issues.size <= 2 %>
<% if User.current.allowed_to?(:manage_issue_relations, @project) %>
<hr>
<li><%= link_to l(:label_relation_new),
- 'javascript: quick_edit_show_new_relation_dialog();',
+ 'javascript: quick_edit_show_new_relation_dialog(\''+first_issue_id.to_s+'\',\''+second_issue_id.to_s+'\',\''+URI.encode_www_form_component(back_url)+'\');',
:remote => false,
:title => l(:label_relation_new),
:class => 'icon',
<% end %>
</ul>
</li>
- <div id="quick_edit_input_dialog" style="display:none;" title="Quick Edit">
- <p id="quick_edit_input_dialog_message"></p>
- <form>
- <fieldset id="text_fields" style="border: none; margin:none; padding: none;">
- <input id="quick_edit_input_dialog_new_value" type="text" size="40" style="vertical-align:middle;"></input>
- </fieldset>
- <fieldset id="date_fields" style="border: none; margin:none; padding: none;">
- <input id="quick_edit_input_dialog_new_date_value" type="text" size="40" style="vertical-align:middle;"></input>
- <%= calendar_for('quick_edit_input_dialog_new_date_value') %>
- </fieldset>
- <input id="quick_edit_input_dialog_target" type="hidden"></input>
- <input id="quick_edit_input_dialog_field_type" type="hidden"></input>
- <input id="quick_edit_input_dialog_pattern" type="hidden"></input>
- <input id="quick_edit_input_dialog_dummy" type="text" style="display:none"></input>
- </form>
- </div>
- <% if @issues.size <= 2 %>
<div id="quick_edit_new_relation_dialog" style="display:none;" title="Quick Edit - <%= l(:label_relation_new) %>">
- <%
- issue_to_id = second_issue.nil? ? '' : second_issue.id
- %>
<%= form_tag({:controller=>'quick_edit_relations', :action=>:create}) do %>
- <%= text_field_tag :issue_id, first_issue.id, { :size => 10 } %>
+ <%= text_field_tag :issue_id, '', { :size => 10 } %>
<%= select :relation, :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %>
- <%= text_field_tag 'relation[issue_to_id]', issue_to_id, { :size => 10 } %>
- <%= hidden_field_tag :back_url, back_url %>
+ <%= text_field_tag 'relation[issue_to_id]', '', { :size => 10 } %>
+ <%= hidden_field_tag :back_url, '' %>
<span id="predecessor_fields" style="display:none;">
<br><%= l(:field_delay) %>: <%= text_field_tag :delay, '', {:size => 3} %> <%= l(:label_day_plural) %>
</span><br>
<% end %>
</div>
- <% end %>
-
-<script>
-//<![CDATA[
-function quick_edit_get_value_element(field_type) {
- if (field_type == 'date') {
- return $('#quick_edit_input_dialog_new_date_value');
- } else {
- return $('#quick_edit_input_dialog_new_value');
- }
-}
-
-function quick_edit_show_input_dialog(field_name,target,field_type,pattern,message,default_value){
- if (field_type == 'date') {
- $("#quick_edit_input_dialog > form > #text_fields").css("display", "none");
- $("#quick_edit_input_dialog > form > #date_fields").css("display", "block");
- } else {
- $("#quick_edit_input_dialog > form > #text_fields").css("display", "block");
- $("#quick_edit_input_dialog > form > #date_fields").css("display", "none");
- }
-
- if (default_value) {
- quick_edit_get_value_element(field_type).val(default_value);
- }
- $("#quick_edit_input_dialog").attr('title','Quick Edit - ' + field_name);
- $("#quick_edit_input_dialog_target").val(target);
- $("#quick_edit_input_dialog_field_type").val(field_type);
- $("#quick_edit_input_dialog_pattern").val(pattern);
- $("#quick_edit_input_dialog_message").html(message);
- $("#quick_edit_input_dialog").dialog({
- modal: true,
- closeOnEscape: false,
- width: 500,
- height: 210,
- buttons: {
- "Ok" : quick_edit_input_dialog_ok,
- "Cancel" : quick_edit_input_dialog_cancel
- },
- close: quick_edit_input_dialog_close
- });
-}
-
-function quick_edit_input_dialog_close(){
- $("#quick_edit_input_dialog").remove();
-}
-
-function quick_edit_input_dialog_cancel(){
- $("#quick_edit_input_dialog").dialog("close");
-}
-
-function quick_edit_input_dialog_ok(){
- var field_type = $("#quick_edit_input_dialog_field_type").val();
- var new_value = quick_edit_get_value_element(field_type).val();
- if(new_value === null) return;
-
- var target = $("#quick_edit_input_dialog_target").val();
- var pattern = new RegExp($("#quick_edit_input_dialog_pattern").val());
-
- if(new_value == "") {
- alert('<%=l(:text_is_required)%>');
- return;
-
- } else {
-
- if(pattern && !pattern.test(new_value)){
- alert('<%=l(:text_invalid_format)%>');
- return;
- }
- }
-
- <% if @issues.count > 1 %>
- if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
- <% end %>
-
-
- var additional_index;
- var match = /(.*)\[([0-9]+)\]/.exec(target);
- if(match){
- target_name = match[1];
- additional_index = match[2];
- }else{
- target_name = target;
- additional_index = null;
- }
-
- var bulk_update_html_id = '';
- var bulk_update_url = '<%= bulk_update_issues_path(:ids => @issue_ids, :back_url => back_url)%>';
- if (additional_index === null) {
- bulk_update_html_id = '#context_edit_update_link_' + target_name;
- bulk_update_url += encodeURI('&issue['+target_name+']='+new_value);
- } else {
- bulk_update_html_id = '#context_edit_update_link_' + target_name + '_'+additional_index+'_';
- bulk_update_url += encodeURI('&issue['+target_name+']['+additional_index+']='+new_value);
- }
-
- jQuery(bulk_update_html_id)
- .attr('href',bulk_update_url)
- .click();
-}
-
-function quick_edit_show_new_relation_dialog(){
- $("#quick_edit_new_relation_dialog").dialog({
- modal: true,
- closeOnEscape: false,
- width: 450,
- height: 150,
- close: quick_edit_new_relation_dialog_close
- });
-}
-
-function quick_edit_new_relation_dialog_cancel(){
- $('#quick_edit_new_relation_dialog').dialog("close");
-}
-
-function quick_edit_new_relation_dialog_close(){
- $('#quick_edit_new_relation_dialog').remove();
-}
-
-//]]>
-</script>
-