15900_attachment_icon_on_the_issue_list.patch

Jean-Philippe Lang, 2015-10-15 23:37

Download (2.95 KB)

View differences:

app/models/issue.rb (working copy)
208 208
    @spent_hours = nil
209 209
    @total_spent_hours = nil
210 210
    @total_estimated_hours = nil
211
    @attachment_count = nil
211 212
    base_reload(*args)
212 213
  end
213 214

  
......
1007 1008
    end
1008 1009
  end
1009 1010

  
1011
  def self.load_attachment_counts(issues)
1012
    if issues.any?
1013
      issue_ids = issues.map(&:id)
1014
      attachment_counts = Attachment.where(:container_type => 'Issue', :container_id => issue_ids).group(:container_id).count
1015
      issues.each do |issue|
1016
        issue.instance_variable_set("@attachment_count", attachment_counts[issue.id] || 0)
1017
      end
1018
    end
1019
  end
1020

  
1010 1021
  # Finds an issue relation given its id.
1011 1022
  def find_relation(relation_id)
1012 1023
    IssueRelation.where("issue_to_id = ? OR issue_from_id = ?", id, id).find(relation_id)
......
1389 1400
    Project.where(condition).having_trackers
1390 1401
  end
1391 1402

  
1403
  def attachment_count
1404
    @attachment_count ||= attachments.count
1405
  end
1406

  
1392 1407
  private
1393 1408

  
1394 1409
  def after_project_change
app/models/issue_query.rb (working copy)
359 359
    end
360 360

  
361 361
    issues = scope.to_a
362
    Issue.load_attachment_counts(issues)
362 363

  
363 364
    if has_column?(:spent_hours)
364 365
      Issue.load_visible_spent_hours(issues)
app/views/issues/_list.html.erb (working copy)
27 27
      </td>
28 28
    </tr>
29 29
  <% end %>
30
  <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
30
  <tr id="issue-<%= issue.id %>" class="hascontextmenu <%= cycle('odd', 'even') %> <%= issue.css_classes %> <%= "has_attachments" if issue.attachment_count > 0 %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
31 31
    <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", issue.id, false, :id => nil) %></td>
32 32
    <%= raw query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, issue)}</td>"}.join %>
33 33
  </tr>
public/stylesheets/application.css (working copy)
171 171
tr.issue.idnt-8 td.subject {padding-left: 11em;}
172 172
tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
173 173

  
174
tr.issue td.id {padding-left: 16px;}
175
tr.issue.has_attachments td.id {background: url(../images/attachment.png) no-repeat 0 3px;}
176

  
174 177
table.issue-report {table-layout:fixed;}
175 178

  
176 179
tr.entry { border: 1px solid #f8f8f8; }