Feature #38567 » enable_to_display_notes_count_on_issues_list.patch
| app/models/issue.rb | ||
|---|---|---|
| 1188 | 1188 |
@watchers_count ||= self.watchers.count(:id) |
| 1189 | 1189 |
end |
| 1190 | 1190 | |
| 1191 |
def notes_count |
|
| 1192 |
@notes_count ||= self.journals.where.not(notes: '').count(:id) |
|
| 1193 |
end |
|
| 1194 | ||
| 1191 | 1195 |
# Preloads relations for a collection of issues |
| 1192 | 1196 |
def self.load_relations(issues) |
| 1193 | 1197 |
if issues.any? |
| app/models/issue_query.rb | ||
|---|---|---|
| 54 | 54 |
" AND #{Watcher.table_name}.watchable_id = #{Issue.table_name}.id), 0)"
|
| 55 | 55 |
end, |
| 56 | 56 |
:default_order => 'desc'), |
| 57 |
QueryColumn.new( |
|
| 58 |
:notes_count, |
|
| 59 |
:sortable => |
|
| 60 |
lambda do |
|
| 61 |
"COALESCE((SELECT COUNT(user_id) FROM #{Journal.table_name}" \
|
|
| 62 |
" WHERE #{Journal.table_name}.notes <> ''" \
|
|
| 63 |
" AND #{Journal.table_name}.journalized_id = #{Issue.table_name}.id), 0)"
|
|
| 64 |
end, |
|
| 65 |
:default_order => 'desc'), |
|
| 57 | 66 |
QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date", :groupable => true),
|
| 58 | 67 |
QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date", :groupable => true),
|
| 59 | 68 |
QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours",
|
| config/locales/en.yml | ||
|---|---|---|
| 370 | 370 |
field_editable: Editable |
| 371 | 371 |
field_watcher: Watcher |
| 372 | 372 |
field_watchers_count: Watchers count |
| 373 |
field_notes_count: Notes count |
|
| 373 | 374 |
field_content: Content |
| 374 | 375 |
field_group_by: Group results by |
| 375 | 376 |
field_sharing: Sharing |
| config/locales/ja.yml | ||
|---|---|---|
| 329 | 329 |
field_editable: 編集可能 |
| 330 | 330 |
field_watcher: ウォッチャー |
| 331 | 331 |
field_watchers_count: ウォッチ数 |
| 332 |
field_notes_count: コメント数 |
|
| 332 | 333 |
field_content: 内容 |
| 333 | 334 |
field_group_by: グループ条件 |
| 334 | 335 |
field_sharing: 共有 |
| test/functional/issues_controller_test.rb | ||
|---|---|---|
| 1388 | 1388 |
assert_equal [2, 1, 0], issues_in_list.map {|issue| issue.watchers_count}.first(3)
|
| 1389 | 1389 |
end |
| 1390 | 1390 | |
| 1391 |
def test_index_sort_by_notes_count |
|
| 1392 |
user = User.find(2) |
|
| 1393 |
Journal.delete_all |
|
| 1394 |
2.times.each do |
|
| 1395 |
Journal.generate!(journalized: Issue.find(1), user: user, notes: 'Some notes') |
|
| 1396 |
end |
|
| 1397 |
Journal.generate!(journalized: Issue.find(2), user: user, notes: 'Some notes') |
|
| 1398 |
get(:index, :params => {:sort => 'notes_count:desc'})
|
|
| 1399 |
assert_response :success |
|
| 1400 |
assert_equal [2, 1, 0], issues_in_list.map {|issue| issue.notes_count}.first(3)
|
|
| 1401 |
end |
|
| 1402 | ||
| 1391 | 1403 |
def test_index_sort_by_user_custom_field |
| 1392 | 1404 |
cf = IssueCustomField. |
| 1393 | 1405 |
create!( |
| test/unit/issue_test.rb | ||
|---|---|---|
| 3532 | 3532 |
end |
| 3533 | 3533 |
assert_equal 2, issue.watchers_count |
| 3534 | 3534 |
end |
| 3535 | ||
| 3536 |
def test_notes_count |
|
| 3537 |
issue = Issue.generate! |
|
| 3538 |
User.find([2, 3]).each do |user| |
|
| 3539 |
Journal.generate!(journalized: issue, user: user, notes: 'Some notes') |
|
| 3540 |
end |
|
| 3541 |
assert_equal 2, issue.notes_count |
|
| 3542 |
end |
|
| 3535 | 3543 |
end |