Feature #37973 » enable_to_display_watches_count_on_issues_list.patch
| app/models/issue.rb | ||
|---|---|---|
| 1176 | 1176 |
end |
| 1177 | 1177 |
end |
| 1178 | 1178 | |
| 1179 |
def watches |
|
| 1180 |
@watches ||= self.watchers.count(:id) |
|
| 1181 |
end |
|
| 1182 | ||
| 1179 | 1183 |
# Preloads relations for a collection of issues |
| 1180 | 1184 |
def self.load_relations(issues) |
| 1181 | 1185 |
if issues.any? |
| app/models/issue_query.rb | ||
|---|---|---|
| 45 | 45 |
QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true),
|
| 46 | 46 |
QueryColumn.new(:fixed_version, :sortable => lambda {Version.fields_for_order_statement},
|
| 47 | 47 |
:groupable => true), |
| 48 |
QueryColumn.new( |
|
| 49 |
:watches, |
|
| 50 |
:sortable => |
|
| 51 |
lambda do |
|
| 52 |
"COALESCE((SELECT COUNT(user_id) FROM #{Watcher.table_name}" \
|
|
| 53 |
" WHERE #{Watcher.table_name}.watchable_id = #{Issue.table_name}.id), 0)"
|
|
| 54 |
end, |
|
| 55 |
:default_order => 'desc'), |
|
| 48 | 56 |
QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date", :groupable => true),
|
| 49 | 57 |
QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date", :groupable => true),
|
| 50 | 58 |
QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours",
|
| app/views/watchers/_set_watcher.js.erb | ||
|---|---|---|
| 1 |
<% selector = ".#{watcher_css(watched)}" %>
|
|
| 2 |
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")});
|
|
| 3 |
$('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => watched.first})) %>');
|
|
| 1 |
var back_url = $('input[name="back_url"]').val() || '';
|
|
| 2 |
if (back_url.length > 0) {
|
|
| 3 |
window.location.href = back_url; |
|
| 4 |
} else {
|
|
| 5 |
<% selector = ".#{watcher_css(watched)}" %>
|
|
| 6 |
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")});
|
|
| 7 |
$('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => watched.first})) %>');
|
|
| 8 |
} |
|
| app/views/watchers/create.js.erb | ||
|---|---|---|
| 3 | 3 |
render(:partial => 'watchers/new', |
| 4 | 4 |
:locals => {:watchables => @watchables, :users => @users})) %>');
|
| 5 | 5 | |
| 6 |
<% if @watchables.size == 1 %> |
|
| 7 |
<%= render(:partial => 'watchers/set_watcher', |
|
| 8 |
:locals => {:watched => @watchables, :user => User.current}) %>
|
|
| 9 |
<% end %> |
|
| 6 |
<%= render(:partial => 'watchers/set_watcher', |
|
| 7 |
:locals => {:watched => @watchables, :user => User.current}) %>
|
|
| config/locales/en.yml | ||
|---|---|---|
| 370 | 370 |
field_parent_title: Parent page |
| 371 | 371 |
field_editable: Editable |
| 372 | 372 |
field_watcher: Watcher |
| 373 |
field_watches: Watches |
|
| 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_parent_title: 親ページ |
| 330 | 330 |
field_editable: 編集可能 |
| 331 | 331 |
field_watcher: ウォッチャー |
| 332 |
field_watches: ウォッチ数 |
|
| 332 | 333 |
field_content: 内容 |
| 333 | 334 |
field_group_by: グループ条件 |
| 334 | 335 |
field_sharing: 共有 |