OSDN Git Service

bugfix refs #35069
authorAkira Saito <akrstjp@users.sourceforge.jp>
Thu, 16 Apr 2015 14:23:44 +0000 (23:23 +0900)
committerAkira Saito <akrstjp@users.sourceforge.jp>
Thu, 16 Apr 2015 14:23:44 +0000 (23:23 +0900)
app/helpers/application_helper.rb
app/views/hooks/_quick_edit_context.html.erb

index 4b3e464..a0a4b51 100644 (file)
@@ -5,7 +5,23 @@ module ApplicationHelper
     Redmine::VERSION::MAJOR * 10 + Redmine::VERSION::MINOR
   end
 
-  def editable(attribute_name, can)
+  def editable(attribute_name, can, readonly_fields)
+    if readonly_fields.include?(attribute_name.to_s)
+      return false
+    end
+
+    if redmine_version() >= 30
+      return can[:edit]
+    else
+      return can[:update]
+    end
+  end
+
+  def editable_custom_field(custom_field, can, readonly_fields)
+    if readonly_fields.include?(custom_field.id.to_s)
+      return false
+    end
+
     if redmine_version() >= 30
       return can[:edit]
     else
index 485291b..081c0d4 100644 (file)
@@ -8,6 +8,10 @@
      %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
   <li class="folder">
     <a href="#" class="submenu"><%= l(:button_quick_edit) %></a>
     <ul>
-      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:subject), :subject, nil, back_url, !editable(:subject,@can)) %>
-      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:description), :description, nil, back_url, !editable(:description,@can)) %>
-      <%= quick_edit_link_to(@issue_ids, get_attribute_caption(:parent_issue_id), :parent_issue_id, nil, back_url, !editable(:parent_issue_id,@can)) %>
+      <%= 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(@issue_ids, get_attribute_caption(:start_date), :start_date, nil, back_url, !editable(:start_date,@can)) %>
+      <%= 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(@issue_ids, get_attribute_caption(:due_date), :due_date, nil, back_url, !editable(:due_date,@can)) %>
+      <%= 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(@issue_ids, f.name, 'custom_field_values', f.id, back_url, !editable(f,@can)) %>
+      <%= 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  %>